DIR : /home/kozerus/public_html/ko/ko_lists.htm

/home/kozerus/public_html/ko

<html>
<head>
	<title>/ko/ko_lists.html 20230223_1800 div_js </title>

<!--
	<title>/ko/index.html 20230223_1040 </title>
	<title>/ko/index.html 20230222_1230  div_koslots</title>
	<title>/ko/index.html 20230219_1030  rm div_??</title>
	<title>/ko/index.html 20230217_1330 link file plupload.html </title>
	<title>/ko/index.html 20230217_0330 ?lists=items contacts letter leds postturtles monkeytraps floods coffee </title>
	<title>/ko/index.html 20230217_0030 div_dd </title>
	<title>/ko/index.html 20230216_2230 div_dd </title>
	<title>/ko/index.html 20230213_1011 topnav </title>
	<title>/ko/index.html 20230212_1500 topnav </title>
	<title>/ko/index.html 20230212_1430 ko_mobile.html </title>
	<title>/ko/index.html 20230212_0945 </title>
	<title>/ko/index.html 20230210_1830 </title>
	<title>/ko/index.html 20230208_1600 jax files</title>
	<title>/ko/index.html 20230208_0900 contacts() items() pre</title>
	<title>/ko/index.html 20230207_1630 contacts() items() pre</title>
	<title>/ko/index.html 20230206_1730 contacts() items() pre</title>
	<title>/ko/index.html 20230206_1715 ../ko/ko_toggles.html ../js/wz/wz_scripts.js</title>
	<title>/ko/help.html 20230127_0127</title>
	-->

<!-- js fileupload
	let file = document.getElementById('input').files[0];
	let formData = new FormData();

	formData.append('file', file);
	fetch('/upload/image', {method: "POST", body: formData});

	-->

	<script id=script_ko>
	alert( "BUGS_31 script_ko<br>\n" );
var kolists=new Array();
kolists['cfg']=`
leds_flag="on";
leds_size="10";
`;
	alert( "BUGS_50 script_ko kolists_cfg=".kolists['cfg']."<br>\n" );

kolists['kludge']=`
kludge1|a1|a2|a3|a4|
kludge2|b1|b2|b3|b4|
kludge3|c1|c2|c3|c4|
kludge4|d1|d2|d3|d4|
`;

kolists['leds']=`
led_id|led_status|led_code|led_name|led_dttm|led_color|led_speed|led_type|led_date|led_cmd|led_cmdout|led_desc|led_misc|led_city|led_bldg|led_loc_code|led_floor|led_group|led_orgs|led_title|led_published|led_width|led_height|led_comment|led_filename|led_user|led_user_ip|led_referer|led_remote_port|led_viewrole|led_user_agent|led_unique_id|led_err|led_fix|led_os|id|grp|status|dttm|pathfile|path|file|base|ext|size|ctime|mtime|exif_dttm|exif_dt|exif_tm|title|thumbnail|alt|link|linktarget|src|tn|startdate|enddate|headline|text|assets|media|credit|caption|i|j|k|w|h|t|x|y|z|t1|x1|y1|z1|t2|x2|y2|z2|temp|desc
7|||||red||||||||||||||||||||||||||||||led_7||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_22_terror_what_are_you_doing_here.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_22_terror_what_are_you_doing_here.mp3
8|||||red||||||||||||||||||||||||||||||led_8||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830.mp3
9|||||red||||||||||||||||||||||||||||||led_9||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0820_policecall.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0820_policecall.mp3
10|||||red||||||||||||||||||||||||||||||led_10||||/byrdbellvjk/mp4/jtfdc_byrd_20180606_1648_threats_bucket_theft.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_byrd_20180606_1648_threats_bucket_theft.mp4
11|||||red||||||||||||||||||||||||||||||led_11||||/imgs/btn/koeye_handhither.gif|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/imgs/btn/koeye_handhither.gif
12|||||red||||||||||||||||||||||||||||||led_12||||/byrdbellvjk/imgs/01.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/01.jpg
13|||||red||||||||||||||||||||||||||||||led_13||||/byrdbellvjk/imgs/100.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/100.jpg
14|||||red||||||||||||||||||||||||||||||led_14||||/byrdbellvjk/imgs/100_jtfdcr_2013_byrd_threat.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/100_jtfdcr_2013_byrd_threat.jpg
15|||||red||||||||||||||||||||||||||||||led_15||||/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespas.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespas.jpg
16|||||red||||||||||||||||||||||||||||||led_16||||/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespass2.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespass2.jpg
17|||||red||||||||||||||||||||||||||||||led_17||||/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_3dogs_after_heartrequest.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_3dogs_after_heartrequest.jpg
18|||||red||||||||||||||||||||||||||||||led_18||||/byrdbellvjk/imgs/100_jtfdcr_byrds_theft_sawhorse.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/100_jtfdcr_byrds_theft_sawhorse.jpg
19|||||red||||||||||||||||||||||||||||||led_19||||/byrdbellvjk/imgs/100_zn_16.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/100_zn_16.jpg
20|||||red||||||||||||||||||||||||||||||led_20||||/byrdbellvjk/imgs/100_zn_21.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/100_zn_21.jpg
21|||||red||||||||||||||||||||||||||||||led_21||||/byrdbellvjk/imgs/113.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/113.jpg
22|||||red||||||||||||||||||||||||||||||led_22||||/byrdbellvjk/imgs/115.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/115.jpg
23|||||red||||||||||||||||||||||||||||||led_23||||/byrdbellvjk/imgs/116.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/116.jpg
24|||||red||||||||||||||||||||||||||||||led_24||||/byrdbellvjk/imgs/124.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/124.jpg
25|||||red||||||||||||||||||||||||||||||led_25||||/byrdbellvjk/imgs/170.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/170.jpg
26|||||red||||||||||||||||||||||||||||||led_26||||/byrdbellvjk/imgs/171.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/171.jpg
27|||||red||||||||||||||||||||||||||||||led_27||||/byrdbellvjk/imgs/202.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/202.jpg
28|||||red||||||||||||||||||||||||||||||led_28||||/byrdbellvjk/imgs/203.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/203.jpg
29|||||red||||||||||||||||||||||||||||||led_29||||/byrdbellvjk/imgs/204.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/204.jpg
30|||||red||||||||||||||||||||||||||||||led_30||||/byrdbellvjk/imgs/205.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/205.jpg
31|||||red||||||||||||||||||||||||||||||led_31||||/byrdbellvjk/imgs/206.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/206.jpg
32|||||red||||||||||||||||||||||||||||||led_32||||/byrdbellvjk/imgs/207.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/207.jpg
33|||||red||||||||||||||||||||||||||||||led_33||||/byrdbellvjk/imgs/208.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/208.jpg
34|||||red||||||||||||||||||||||||||||||led_34||||/byrdbellvjk/imgs/209.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/209.jpg
35|||||red||||||||||||||||||||||||||||||led_35||||/byrdbellvjk/imgs/210.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/210.jpg
36|||||red||||||||||||||||||||||||||||||led_36||||/byrdbellvjk/imgs/211.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/211.jpg
37|||||red||||||||||||||||||||||||||||||led_37||||/byrdbellvjk/imgs/212.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/212.jpg
38|||||red||||||||||||||||||||||||||||||led_38||||/byrdbellvjk/imgs/22.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/22.jpg
39|||||red||||||||||||||||||||||||||||||led_39||||/byrdbellvjk/imgs/222.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/222.jpg
40|||||red||||||||||||||||||||||||||||||led_40||||/byrdbellvjk/imgs/229.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/229.jpg
41|||||red||||||||||||||||||||||||||||||led_41||||/byrdbellvjk/imgs/232.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/232.jpg
42|||||red||||||||||||||||||||||||||||||led_42||||/byrdbellvjk/imgs/233.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/233.jpg
43|||||red||||||||||||||||||||||||||||||led_43||||/byrdbellvjk/imgs/26.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/26.jpg
44|||||red||||||||||||||||||||||||||||||led_44||||/byrdbellvjk/imgs/27.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/27.jpg
45|||||red||||||||||||||||||||||||||||||led_45||||/byrdbellvjk/imgs/28.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/28.jpg
46|||||red||||||||||||||||||||||||||||||led_46||||/byrdbellvjk/imgs/29.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/29.jpg
47|||||red||||||||||||||||||||||||||||||led_47||||/byrdbellvjk/imgs/30.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/30.jpg
48|||||red||||||||||||||||||||||||||||||led_48||||/byrdbellvjk/imgs/31.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/31.jpg
49|||||red||||||||||||||||||||||||||||||led_49||||/byrdbellvjk/imgs/32.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/32.jpg
50|||||red||||||||||||||||||||||||||||||led_50||||/byrdbellvjk/imgs/33.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/33.jpg
51|||||red||||||||||||||||||||||||||||||led_51||||/byrdbellvjk/imgs/34.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/34.jpg
52|||||red||||||||||||||||||||||||||||||led_52||||/byrdbellvjk/imgs/36.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/36.jpg
53|||||red||||||||||||||||||||||||||||||led_53||||/byrdbellvjk/imgs/42.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/42.jpg
54|||||red||||||||||||||||||||||||||||||led_54||||/byrdbellvjk/imgs/43.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/43.jpg
55|||||red||||||||||||||||||||||||||||||led_55||||/byrdbellvjk/imgs/44.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/44.jpg
56|||||red||||||||||||||||||||||||||||||led_56||||/byrdbellvjk/imgs/46.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/46.jpg
57|||||red||||||||||||||||||||||||||||||led_57||||/byrdbellvjk/imgs/550_head_jtfdcr_police_neiborhood.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/550_head_jtfdcr_police_neiborhood.jpg
58|||||red||||||||||||||||||||||||||||||led_58||||/byrdbellvjk/imgs/63.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/63.jpg
59|||||red||||||||||||||||||||||||||||||led_59||||/byrdbellvjk/imgs/66.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/66.jpg
60|||||red||||||||||||||||||||||||||||||led_60||||/byrdbellvjk/imgs/71.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/71.jpg
61|||||red||||||||||||||||||||||||||||||led_61||||/byrdbellvjk/imgs/900_136.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_136.jpg
62|||||red||||||||||||||||||||||||||||||led_62||||/byrdbellvjk/imgs/900_68.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_68.jpg
63|||||red||||||||||||||||||||||||||||||led_63||||/byrdbellvjk/imgs/900_byrdbell_20200916.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_byrdbell_20200916.jpg
64|||||red||||||||||||||||||||||||||||||led_64||||/byrdbellvjk/imgs/900_byrdbell_20200916_1.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_byrdbell_20200916_1.jpg
65|||||red||||||||||||||||||||||||||||||led_65||||/byrdbellvjk/imgs/900_emh_20160911_056.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_emh_20160911_056.jpg
66|||||red||||||||||||||||||||||||||||||led_66||||/byrdbellvjk/imgs/900_emh_20160911_058.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_emh_20160911_058.jpg
67|||||red||||||||||||||||||||||||||||||led_67||||/byrdbellvjk/imgs/900_emh_20160911_059.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_emh_20160911_059.jpg
68|||||red||||||||||||||||||||||||||||||led_68||||/byrdbellvjk/imgs/900_IMG_0574.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_IMG_0574.jpg
69|||||red||||||||||||||||||||||||||||||led_69||||/byrdbellvjk/imgs/900_IMG_0577.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_IMG_0577.jpg
70|||||red||||||||||||||||||||||||||||||led_70||||/byrdbellvjk/imgs/900_jtfdc_private_court_since_1979_viewin.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_jtfdc_private_court_since_1979_viewin.jpg
71|||||red||||||||||||||||||||||||||||||led_71||||/byrdbellvjk/imgs/900_jtfinc.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_jtfinc.jpg
72|||||red||||||||||||||||||||||||||||||led_72||||/byrdbellvjk/imgs/900_snap_20170123_187559_jtfdc_kids_cycle_laps.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_snap_20170123_187559_jtfdc_kids_cycle_laps.jpg
73|||||red||||||||||||||||||||||||||||||led_73||||/byrdbellvjk/imgs/900_snap_20170123_187576_jtf32_preservation_police_yellowsticker_frenzy.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_snap_20170123_187576_jtf32_preservation_police_yellowsticker_frenzy.jpg
74|||||red||||||||||||||||||||||||||||||led_74||||/byrdbellvjk/imgs/900_snap_20170123_197616_law_donovan_joann1.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_snap_20170123_197616_law_donovan_joann1.jpg
75|||||red||||||||||||||||||||||||||||||led_75||||/byrdbellvjk/imgs/900_stlcounty_kassil_bench_probaton_20170918-1818_001.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_stlcounty_kassil_bench_probaton_20170918-1818_001.jpg
76|||||red||||||||||||||||||||||||||||||led_76||||/byrdbellvjk/imgs/900_topos.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_topos.jpg
77|||||red||||||||||||||||||||||||||||||led_77||||/byrdbellvjk/imgs/900_topos_20160505_031.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_topos_20160505_031.jpg
78|||||red||||||||||||||||||||||||||||||led_78||||/byrdbellvjk/imgs/900_zn_4.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/900_zn_4.jpg
79|||||red||||||||||||||||||||||||||||||led_79||||/byrdbellvjk/imgs/jtfdc_sawhorse_2020.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdc_sawhorse_2020.jpg
80|||||red||||||||||||||||||||||||||||||led_80||||/byrdbellvjk/imgs/snap_202209156950.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156950.png
81|||||red||||||||||||||||||||||||||||||led_81||||/byrdbellvjk/imgs/snap_202209156951.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156951.png
82|||||red||||||||||||||||||||||||||||||led_82||||/byrdbellvjk/imgs/snap_202209156952.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156952.png
83|||||red||||||||||||||||||||||||||||||led_83||||/byrdbellvjk/imgs/snap_202209156953.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156953.png
84|||||red||||||||||||||||||||||||||||||led_84||||/byrdbellvjk/imgs/snap_202209156954.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156954.png
85|||||red||||||||||||||||||||||||||||||led_85||||/byrdbellvjk/imgs/snap_202209156955.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156955.png
86|||||red||||||||||||||||||||||||||||||led_86||||/byrdbellvjk/imgs/snap_202209156956.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156956.png
87|||||red||||||||||||||||||||||||||||||led_87||||/byrdbellvjk/imgs/snap_202209156957.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156957.png
88|||||red||||||||||||||||||||||||||||||led_88||||/byrdbellvjk/imgs/snap_202209156958.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156958.png
89|||||red||||||||||||||||||||||||||||||led_89||||/byrdbellvjk/imgs/snap_202209156959.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156959.png
90|||||red||||||||||||||||||||||||||||||led_90||||/byrdbellvjk/imgs/snap_202209156960.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156960.png
91|||||red||||||||||||||||||||||||||||||led_91||||/byrdbellvjk/imgs/snap_202209156961.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156961.png
92|||||red||||||||||||||||||||||||||||||led_92||||/byrdbellvjk/imgs/snap_202209156962.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156962.png
93|||||red||||||||||||||||||||||||||||||led_93||||/byrdbellvjk/imgs/snap_202209156963.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156963.png
94|||||red||||||||||||||||||||||||||||||led_94||||/byrdbellvjk/imgs/snap_202209156964.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156964.png
95|||||red||||||||||||||||||||||||||||||led_95||||/byrdbellvjk/imgs/snap_202209156965.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156965.png
96|||||red||||||||||||||||||||||||||||||led_96||||/byrdbellvjk/imgs/snap_202209156966.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156966.png
97|||||red||||||||||||||||||||||||||||||led_97||||/byrdbellvjk/imgs/snap_202209156967.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156967.png
98|||||red||||||||||||||||||||||||||||||led_98||||/byrdbellvjk/imgs/snap_202209156968.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156968.png
99|||||red||||||||||||||||||||||||||||||led_99||||/byrdbellvjk/imgs/snap_202209156969.png|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/snap_202209156969.png
100|||||red||||||||||||||||||||||||||||||led_100||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20170805_1400_police_byrddog_call.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20170805_1400_police_byrddog_call.mp3
101|||||red||||||||||||||||||||||||||||||led_101||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0820_policecall.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0820_policecall.mp3
102|||||red||||||||||||||||||||||||||||||led_102||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830.mp3
103|||||red||||||||||||||||||||||||||||||led_103||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_016_when_they_move_the_sawhorsetweets.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_016_when_they_move_the_sawhorsetweets.mp3
104|||||red||||||||||||||||||||||||||||||led_104||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_026_tweets.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_026_tweets.mp3
105|||||red||||||||||||||||||||||||||||||led_105||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_1m23-1m33.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_1m23-1m33.mp3
106|||||red||||||||||||||||||||||||||||||led_106||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_22_terror_what_are_you_doing_here.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_22_terror_what_are_you_doing_here.mp3
107|||||red||||||||||||||||||||||||||||||led_107||||/byrdbellvjk/mp3/jtfdc_20160530_1317_byrd_trustee_threat.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20160530_1317_byrd_trustee_threat.mp3
108|||||red||||||||||||||||||||||||||||||led_108||||/byrdbellvjk/mp3/jtfdc_20160530_1327_byrd_trustee_threat.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20160530_1327_byrd_trustee_threat.mp3
109|||||red||||||||||||||||||||||||||||||led_109||||/byrdbellvjk/mp3/jtfdc_20160530_1916_byrd_threat.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20160530_1916_byrd_threat.mp3
110|||||red||||||||||||||||||||||||||||||led_110||||/byrdbellvjk/mp3/jtfdc_20160610_2030_01234567890_waiting_police_byrd_baily.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20160610_2030_01234567890_waiting_police_byrd_baily.mp3
111|||||red||||||||||||||||||||||||||||||led_111||||/byrdbellvjk/mp3/jtfdc_20170805_1400_police_byrddog_call.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20170805_1400_police_byrddog_call.mp3
112|||||red||||||||||||||||||||||||||||||led_112||||/byrdbellvjk/mp3/jtfdc_20190509_1224_jkwii_police_officerbell.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20190509_1224_jkwii_police_officerbell.mp3
113|||||red||||||||||||||||||||||||||||||led_113||||/byrdbellvjk/mp3/jtfdc_20190516_0820_byrd_waiting4police.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20190516_0820_byrd_waiting4police.mp3
114|||||red||||||||||||||||||||||||||||||led_114||||/byrdbellvjk/mp3/jtfdc_20190516_0820_policecall.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20190516_0820_policecall.mp3
115|||||red||||||||||||||||||||||||||||||led_115||||/byrdbellvjk/mp3/jtfdc_20190516_0830.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20190516_0830.mp3
116|||||red||||||||||||||||||||||||||||||led_116||||/byrdbellvjk/mp3/jtfdc_20190516_0830_026_tweets.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20190516_0830_026_tweets.mp3
117|||||red||||||||||||||||||||||||||||||led_117||||/byrdbellvjk/mp3/jtfdc_20190516_0830_1m23-1m33.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20190516_0830_1m23-1m33.mp3
118|||||red||||||||||||||||||||||||||||||led_118||||/byrdbellvjk/mp3/jtfdc_20190516_0830_terror_what_are_you_doing_here.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20190516_0830_terror_what_are_you_doing_here.mp3
119|||||red||||||||||||||||||||||||||||||led_119||||/byrdbellvjk/mp3/jtfdc_20190516_0830_when_they_move_the_sawhorsetweets.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20190516_0830_when_they_move_the_sawhorsetweets.mp3
120|||||red||||||||||||||||||||||||||||||led_120||||/byrdbellvjk/mp3/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.mp3
121|||||red||||||||||||||||||||||||||||||led_121||||/byrdbellvjk/mp3/jtfdc_20190908_0030_still_toadog.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20190908_0030_still_toadog.mp3
122|||||red||||||||||||||||||||||||||||||led_122||||/byrdbellvjk/mp3/jtfdc_20191109_1604_skpout_jkwiigo_jtf31_fiona_nice.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20191109_1604_skpout_jkwiigo_jtf31_fiona_nice.mp3
123|||||red||||||||||||||||||||||||||||||led_123||||/byrdbellvjk/mp3/jtfdc_20191209_1529_stalkaround_bus.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20191209_1529_stalkaround_bus.mp3
124|||||red||||||||||||||||||||||||||||||led_124||||/byrdbellvjk/mp3/jtfdc_20200109_0648_jhappy_bday_jk2.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20200109_0648_jhappy_bday_jk2.mp3
125|||||red||||||||||||||||||||||||||||||led_125||||/byrdbellvjk/mp3/jtfdc_20200119_1752_stalkaround_twins_suv_n_pickup.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20200119_1752_stalkaround_twins_suv_n_pickup.mp3
126|||||red||||||||||||||||||||||||||||||led_126||||/byrdbellvjk/mp3/jtfdc_20200316_1756_jtf30_vickky_only1doggy.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20200316_1756_jtf30_vickky_only1doggy.mp3
127|||||red||||||||||||||||||||||||||||||led_127||||/byrdbellvjk/mp3/jtfdc_20200322_1222_jhout2.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20200322_1222_jhout2.mp3
128|||||red||||||||||||||||||||||||||||||led_128||||/byrdbellvjk/mp3/jtfdc_20200330_1200_jkwiigo_jtf3839_byrd_dr_hilldown.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_20200330_1200_jkwiigo_jtf3839_byrd_dr_hilldown.mp3
129|||||red||||||||||||||||||||||||||||||led_129||||/byrdbellvjk/mp3/jtfdc_byrd_20180423_1320_trespass_bullies.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_byrd_20180423_1320_trespass_bullies.mp3
130|||||red||||||||||||||||||||||||||||||led_130||||/byrdbellvjk/mp3/jtfdc_byrd_20180606_1648_threats_bucket_theft.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_byrd_20180606_1648_threats_bucket_theft.mp3
131|||||red||||||||||||||||||||||||||||||led_131||||/byrdbellvjk/mp3/jtfdc_byrd_20190516_0820.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_byrd_20190516_0820.mp3
132|||||red||||||||||||||||||||||||||||||led_132||||/byrdbellvjk/mp3/jtfdc_byrd_20190516_0830.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/jtfdc_byrd_20190516_0830.mp3
133|||||red||||||||||||||||||||||||||||||led_133||||/byrdbellvjk/mp3/library_of_congress.mp3|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp3/library_of_congress.mp3
134|||||red||||||||||||||||||||||||||||||led_134||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20170805_1400_police_byrddog_call.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20170805_1400_police_byrddog_call.mp4
135|||||red||||||||||||||||||||||||||||||led_135||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830.mp4
136|||||red||||||||||||||||||||||||||||||led_136||||/byrdbellvjk/imgs/jtfdcr_police/tn_jtfdc_20190509_1224_jkwii_police_officerbell.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/tn_jtfdc_20190509_1224_jkwii_police_officerbell.mp4
137|||||red||||||||||||||||||||||||||||||led_137||||/byrdbellvjk/imgs/jtfdcr_police/tn_jtfdc_20190516_0820_byrd_waiting4police.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/tn_jtfdc_20190516_0820_byrd_waiting4police.mp4
138|||||red||||||||||||||||||||||||||||||led_138||||/byrdbellvjk/mp4/jtfdc_20160530_1317_byrd_trustee_threat.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20160530_1317_byrd_trustee_threat.mp4
139|||||red||||||||||||||||||||||||||||||led_139||||/byrdbellvjk/mp4/jtfdc_20160530_1327_byrd_trustee_threat.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20160530_1327_byrd_trustee_threat.mp4
140|||||red||||||||||||||||||||||||||||||led_140||||/byrdbellvjk/mp4/jtfdc_20160530_1916_byrd_threat.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20160530_1916_byrd_threat.mp4
141|||||red||||||||||||||||||||||||||||||led_141||||/byrdbellvjk/mp4/jtfdc_20160610_2030_01234567890_waiting_police_byrd_baily.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20160610_2030_01234567890_waiting_police_byrd_baily.mp4
142|||||red||||||||||||||||||||||||||||||led_142||||/byrdbellvjk/mp4/jtfdc_20170805_1400_police_byrddog_call.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20170805_1400_police_byrddog_call.mp4
143|||||red||||||||||||||||||||||||||||||led_143||||/byrdbellvjk/mp4/jtfdc_20190509_1224_jkwii_police_officerbell.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20190509_1224_jkwii_police_officerbell.mp4
144|||||red||||||||||||||||||||||||||||||led_144||||/byrdbellvjk/mp4/jtfdc_20190516_0820_byrd_waiting4police.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20190516_0820_byrd_waiting4police.mp4
145|||||red||||||||||||||||||||||||||||||led_145||||/byrdbellvjk/mp4/jtfdc_20190516_0830.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20190516_0830.mp4
146|||||red||||||||||||||||||||||||||||||led_146||||/byrdbellvjk/mp4/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.mp4
147|||||red||||||||||||||||||||||||||||||led_147||||/byrdbellvjk/mp4/jtfdc_20190908_0030_still_toadog.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20190908_0030_still_toadog.mp4
148|||||red||||||||||||||||||||||||||||||led_148||||/byrdbellvjk/mp4/jtfdc_20191109_1604_skpout_jkwiigo_jtf31_fiona_nice.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20191109_1604_skpout_jkwiigo_jtf31_fiona_nice.mp4
149|||||red||||||||||||||||||||||||||||||led_149||||/byrdbellvjk/mp4/jtfdc_20191209_1529_stalkaround_bus.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20191209_1529_stalkaround_bus.mp4
150|||||red||||||||||||||||||||||||||||||led_150||||/byrdbellvjk/mp4/jtfdc_20200109_0648_jhappy_bday_jk2.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20200109_0648_jhappy_bday_jk2.mp4
151|||||red||||||||||||||||||||||||||||||led_151||||/byrdbellvjk/mp4/jtfdc_20200119_1752_stalkaround_twins_suv_n_pickup.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20200119_1752_stalkaround_twins_suv_n_pickup.mp4
152|||||red||||||||||||||||||||||||||||||led_152||||/byrdbellvjk/mp4/jtfdc_20200316_1756_jtf30_vickky_only1doggy.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20200316_1756_jtf30_vickky_only1doggy.mp4
153|||||red||||||||||||||||||||||||||||||led_153||||/byrdbellvjk/mp4/jtfdc_20200322_1222_jhout2.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20200322_1222_jhout2.mp4
154|||||red||||||||||||||||||||||||||||||led_154||||/byrdbellvjk/mp4/jtfdc_20200330_1200_jkwiigo_jtf3839_byrd_dr_hilldown.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_20200330_1200_jkwiigo_jtf3839_byrd_dr_hilldown.mp4
155|||||red||||||||||||||||||||||||||||||led_155||||/byrdbellvjk/mp4/jtfdc_byrd_20180423_1320_trespass_bullies.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_byrd_20180423_1320_trespass_bullies.mp4
156|||||red||||||||||||||||||||||||||||||led_156||||/byrdbellvjk/mp4/jtfdc_byrd_20180606_1648_threats_bucket_theft.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_byrd_20180606_1648_threats_bucket_theft.mp4
157|||||red||||||||||||||||||||||||||||||led_157||||/byrdbellvjk/mp4/jtfdc_byrd_20190516_0820.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_byrd_20190516_0820.mp4
158|||||red||||||||||||||||||||||||||||||led_158||||/byrdbellvjk/mp4/jtfdc_byrd_20190516_0830.mp4|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/mp4/jtfdc_byrd_20190516_0830.mp4
159|||||red||||||||||||||||||||||||||||||led_159||||/byrdbellvjk/byrdbellvjk.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/byrdbellvjk.pdf
160|||||red||||||||||||||||||||||||||||||led_160||||/byrdbellvjk/fb.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb.pdf
161|||||red||||||||||||||||||||||||||||||led_161||||/byrdbellvjk/imgs/jk/dr_richard_gestring_internal_medicine.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jk/dr_richard_gestring_internal_medicine.pdf
162|||||red||||||||||||||||||||||||||||||led_162||||/byrdbellvjk/imgs/jk/dr_richard_gestring_psychiatry.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jk/dr_richard_gestring_psychiatry.pdf
163|||||red||||||||||||||||||||||||||||||led_163||||/byrdbellvjk/imgs/jtfdcr/ko.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr/ko.pdf
164|||||red||||||||||||||||||||||||||||||led_164||||/byrdbellvjk/imgs/jtfdcr_20190516_protect/102_jk_restrain_donovan_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_20190516_protect/102_jk_restrain_donovan_pg1.pdf
165|||||red||||||||||||||||||||||||||||||led_165||||/byrdbellvjk/imgs/jtfdcr_20190516_protect/103_jk_restrain_donovan_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_20190516_protect/103_jk_restrain_donovan_pg2.pdf
166|||||red||||||||||||||||||||||||||||||led_166||||/byrdbellvjk/imgs/jtfdcr_20190516_protect/104_jk_restrain_donovan_pg3.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_20190516_protect/104_jk_restrain_donovan_pg3.pdf
167|||||red||||||||||||||||||||||||||||||led_167||||/byrdbellvjk/imgs/jtfdcr_20190516_protect/105_jk_restrain_donovan_pg6.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_20190516_protect/105_jk_restrain_donovan_pg6.pdf
168|||||red||||||||||||||||||||||||||||||led_168||||/byrdbellvjk/imgs/jtfdcr_20190516_protect/106_jk_restrain_donovan_pg7.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_20190516_protect/106_jk_restrain_donovan_pg7.pdf
169|||||red||||||||||||||||||||||||||||||led_169||||/byrdbellvjk/imgs/jtfdcr_20190516_protect/jkassil_case(s)_details.doc.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_20190516_protect/jkassil_case(s)_details.doc.pdf
170|||||red||||||||||||||||||||||||||||||led_170||||/byrdbellvjk/ko.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/ko.pdf
171|||||red||||||||||||||||||||||||||||||led_171||||/byrdbellvjk/pdf/102_jk_restrain_donovan_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/102_jk_restrain_donovan_pg1.pdf
172|||||red||||||||||||||||||||||||||||||led_172||||/byrdbellvjk/pdf/103_jk_restrain_donovan_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/103_jk_restrain_donovan_pg2.pdf
173|||||red||||||||||||||||||||||||||||||led_173||||/byrdbellvjk/pdf/104_jk_restrain_donovan_pg3.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/104_jk_restrain_donovan_pg3.pdf
174|||||red||||||||||||||||||||||||||||||led_174||||/byrdbellvjk/pdf/105_jk_restrain_donovan_pg6.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/105_jk_restrain_donovan_pg6.pdf
175|||||red||||||||||||||||||||||||||||||led_175||||/byrdbellvjk/pdf/106_jk_restrain_donovan_pg7.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/106_jk_restrain_donovan_pg7.pdf
176|||||red||||||||||||||||||||||||||||||led_176||||/byrdbellvjk/pdf/500_jtfdcr_cohena_2013_cases.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/500_jtfdcr_cohena_2013_cases.pdf
177|||||red||||||||||||||||||||||||||||||led_177||||/byrdbellvjk/pdf/byrdbellvjk.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk.pdf
178|||||red||||||||||||||||||||||||||||||led_178||||/byrdbellvjk/pdf/byrdbellvjk_bell.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_bell.pdf
179|||||red||||||||||||||||||||||||||||||led_179||||/byrdbellvjk/pdf/byrdbellvjk_byrd.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_byrd.pdf
180|||||red||||||||||||||||||||||||||||||led_180||||/byrdbellvjk/pdf/byrdbellvjk_donovan.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_donovan.pdf
181|||||red||||||||||||||||||||||||||||||led_181||||/byrdbellvjk/pdf/byrdbellvjk_gardner.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_gardner.pdf
182|||||red||||||||||||||||||||||||||||||led_182||||/byrdbellvjk/pdf/byrdbellvjk_jk.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_jk.pdf
183|||||red||||||||||||||||||||||||||||||led_183||||/byrdbellvjk/pdf/byrdbellvjk_jkmed.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_jkmed.pdf
184|||||red||||||||||||||||||||||||||||||led_184||||/byrdbellvjk/pdf/byrdbellvjk_jtf28.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_jtf28.pdf
185|||||red||||||||||||||||||||||||||||||led_185||||/byrdbellvjk/pdf/byrdbellvjk_jtf29.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_jtf29.pdf
186|||||red||||||||||||||||||||||||||||||led_186||||/byrdbellvjk/pdf/byrdbellvjk_jtf30.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_jtf30.pdf
187|||||red||||||||||||||||||||||||||||||led_187||||/byrdbellvjk/pdf/byrdbellvjk_jtf31.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_jtf31.pdf
188|||||red||||||||||||||||||||||||||||||led_188||||/byrdbellvjk/pdf/byrdbellvjk_jtf32.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_jtf32.pdf
189|||||red||||||||||||||||||||||||||||||led_189||||/byrdbellvjk/pdf/byrdbellvjk_jtf39.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_jtf39.pdf
190|||||red||||||||||||||||||||||||||||||led_190||||/byrdbellvjk/pdf/byrdbellvjk_jtf40.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_jtf40.pdf
191|||||red||||||||||||||||||||||||||||||led_191||||/byrdbellvjk/pdf/byrdbellvjk_jtfdc.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_jtfdc.pdf
192|||||red||||||||||||||||||||||||||||||led_192||||/byrdbellvjk/pdf/byrdbellvjk_trial1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_trial1.pdf
193|||||red||||||||||||||||||||||||||||||led_193||||/byrdbellvjk/pdf/byrdbellvjk_trial2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_trial2.pdf
194|||||red||||||||||||||||||||||||||||||led_194||||/byrdbellvjk/pdf/byrdbellvjk_trial3.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_trial3.pdf
195|||||red||||||||||||||||||||||||||||||led_195||||/byrdbellvjk/pdf/byrdbellvjk_trial4.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_trial4.pdf
196|||||red||||||||||||||||||||||||||||||led_196||||/byrdbellvjk/pdf/byrdbellvjk_trial5.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_trial5.pdf
197|||||red||||||||||||||||||||||||||||||led_197||||/byrdbellvjk/pdf/byrdbellvjk_trial6.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/byrdbellvjk_trial6.pdf
198|||||red||||||||||||||||||||||||||||||led_198||||/byrdbellvjk/pdf/coffee.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/coffee.pdf
199|||||red||||||||||||||||||||||||||||||led_199||||/byrdbellvjk/pdf/cohen_15403521_15445941_comb_151203.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/cohen_15403521_15445941_comb_151203.pdf
200|||||red||||||||||||||||||||||||||||||led_200||||/byrdbellvjk/pdf/cohen_15403521_15445941_cont_160121.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/cohen_15403521_15445941_cont_160121.pdf
201|||||red||||||||||||||||||||||||||||||led_201||||/byrdbellvjk/pdf/cohen_15403521_continued_151203.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/cohen_15403521_continued_151203.pdf
202|||||red||||||||||||||||||||||||||||||led_202||||/byrdbellvjk/pdf/cohen_affidavit_records_151030.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/cohen_affidavit_records_151030.pdf
203|||||red||||||||||||||||||||||||||||||led_203||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg1.pdf
204|||||red||||||||||||||||||||||||||||||led_204||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg2.pdf
205|||||red||||||||||||||||||||||||||||||led_205||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg3.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg3.pdf
206|||||red||||||||||||||||||||||||||||||led_206||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg4.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg4.pdf
207|||||red||||||||||||||||||||||||||||||led_207||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg5.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg5.pdf
208|||||red||||||||||||||||||||||||||||||led_208||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg6.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg6.pdf
209|||||red||||||||||||||||||||||||||||||led_209||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg7.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg7.pdf
210|||||red||||||||||||||||||||||||||||||led_210||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg8.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg8.pdf
211|||||red||||||||||||||||||||||||||||||led_211||||/byrdbellvjk/pdf/incrpt_1540352_martin_150716_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1540352_martin_150716_pg1.pdf
212|||||red||||||||||||||||||||||||||||||led_212||||/byrdbellvjk/pdf/incrpt_1540352_martin_150716_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1540352_martin_150716_pg2.pdf
213|||||red||||||||||||||||||||||||||||||led_213||||/byrdbellvjk/pdf/incrpt_1540352_martin_150716_pg3.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1540352_martin_150716_pg3.pdf
214|||||red||||||||||||||||||||||||||||||led_214||||/byrdbellvjk/pdf/incrpt_1544594_gardner_150807_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1544594_gardner_150807_pg1.pdf
215|||||red||||||||||||||||||||||||||||||led_215||||/byrdbellvjk/pdf/incrpt_1544594_gardner_150807_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1544594_gardner_150807_pg2.pdf
216|||||red||||||||||||||||||||||||||||||led_216||||/byrdbellvjk/pdf/incrpt_1552246_gardner_150919_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1552246_gardner_150919_pg1.pdf
217|||||red||||||||||||||||||||||||||||||led_217||||/byrdbellvjk/pdf/incrpt_1552246_gardner_150919_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1552246_gardner_150919_pg2.pdf
218|||||red||||||||||||||||||||||||||||||led_218||||/byrdbellvjk/pdf/incrpt_1552246_supplement1_gardner_150919_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1552246_supplement1_gardner_150919_pg1.pdf
219|||||red||||||||||||||||||||||||||||||led_219||||/byrdbellvjk/pdf/incrpt_1552326_gardner_150919_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1552326_gardner_150919_pg1.pdf
220|||||red||||||||||||||||||||||||||||||led_220||||/byrdbellvjk/pdf/incrpt_1552326_gardner_150919_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1552326_gardner_150919_pg2.pdf
221|||||red||||||||||||||||||||||||||||||led_221||||/byrdbellvjk/pdf/incrpt_1553710_martin_150928_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1553710_martin_150928_pg1.pdf
222|||||red||||||||||||||||||||||||||||||led_222||||/byrdbellvjk/pdf/incrpt_1553710_martin_150928_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1553710_martin_150928_pg2.pdf
223|||||red||||||||||||||||||||||||||||||led_223||||/byrdbellvjk/pdf/incrpt_1558386_gardner_151023_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1558386_gardner_151023_pg1.pdf
224|||||red||||||||||||||||||||||||||||||led_224||||/byrdbellvjk/pdf/incrpt_1558386_gardner_151023_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/incrpt_1558386_gardner_151023_pg2.pdf
225|||||red||||||||||||||||||||||||||||||led_225||||/byrdbellvjk/pdf/jk.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jk.pdf
226|||||red||||||||||||||||||||||||||||||led_226||||/byrdbellvjk/pdf/jtfdc.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc.pdf
227|||||red||||||||||||||||||||||||||||||led_227||||/byrdbellvjk/pdf/jtfdc_20160530_1317_byrd_trustee_threat.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_20160530_1317_byrd_trustee_threat.pdf
228|||||red||||||||||||||||||||||||||||||led_228||||/byrdbellvjk/pdf/jtfdc_20160530_1327_byrd_trustee_threat.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_20160530_1327_byrd_trustee_threat.pdf
229|||||red||||||||||||||||||||||||||||||led_229||||/byrdbellvjk/pdf/jtfdc_20160530_1916_byrd_threat.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_20160530_1916_byrd_threat.pdf
230|||||red||||||||||||||||||||||||||||||led_230||||/byrdbellvjk/pdf/jtfdc_20160610_2030_01234567890_waiting_police_byrd_baily.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_20160610_2030_01234567890_waiting_police_byrd_baily.pdf
231|||||red||||||||||||||||||||||||||||||led_231||||/byrdbellvjk/pdf/jtfdc_20170805_1400_police_byrddog_call.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_20170805_1400_police_byrddog_call.pdf
232|||||red||||||||||||||||||||||||||||||led_232||||/byrdbellvjk/pdf/jtfdc_20190509_1224_jkwii_police_officerbell.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_20190509_1224_jkwii_police_officerbell.pdf
233|||||red||||||||||||||||||||||||||||||led_233||||/byrdbellvjk/pdf/jtfdc_20190516_0820_byrd_waiting4police.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_20190516_0820_byrd_waiting4police.pdf
234|||||red||||||||||||||||||||||||||||||led_234||||/byrdbellvjk/pdf/jtfdc_20190516_0830.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_20190516_0830.pdf
235|||||red||||||||||||||||||||||||||||||led_235||||/byrdbellvjk/pdf/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.pdf
236|||||red||||||||||||||||||||||||||||||led_236||||/byrdbellvjk/pdf/jtfdc_20190908_0030_still_toadog.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_20190908_0030_still_toadog.pdf
237|||||red||||||||||||||||||||||||||||||led_237||||/byrdbellvjk/pdf/jtfdc_20191109_1604_skpout_jkwiigo_jtf31_fiona_nice.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_20191109_1604_skpout_jkwiigo_jtf31_fiona_nice.pdf
238|||||red||||||||||||||||||||||||||||||led_238||||/byrdbellvjk/pdf/jtfdc_20191209_1529_stalkaround_bus.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_20191209_1529_stalkaround_bus.pdf
239|||||red||||||||||||||||||||||||||||||led_239||||/byrdbellvjk/pdf/jtfdc_byrd_20180423_1320_trespass_bullies.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_byrd_20180423_1320_trespass_bullies.pdf
240|||||red||||||||||||||||||||||||||||||led_240||||/byrdbellvjk/pdf/jtfdc_byrd_20180606_1648_threats_bucket_theft.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_byrd_20180606_1648_threats_bucket_theft.pdf
241|||||red||||||||||||||||||||||||||||||led_241||||/byrdbellvjk/pdf/jtfdc_byrd_20190516_0820.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_byrd_20190516_0820.pdf
242|||||red||||||||||||||||||||||||||||||led_242||||/byrdbellvjk/pdf/jtfdc_byrd_20190516_0830.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdc_byrd_20190516_0830.pdf
243|||||red||||||||||||||||||||||||||||||led_243||||/byrdbellvjk/pdf/jtfdcr.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr.pdf
244|||||red||||||||||||||||||||||||||||||led_244||||/byrdbellvjk/pdf/jtfdcr_20150000_jk_protect_martin.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20150000_jk_protect_martin.pdf
245|||||red||||||||||||||||||||||||||||||led_245||||/byrdbellvjk/pdf/jtfdcr_20150000_jtfinc_contacts.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20150000_jtfinc_contacts.pdf
246|||||red||||||||||||||||||||||||||||||led_246||||/byrdbellvjk/pdf/jtfdcr_20150000_lawers.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20150000_lawers.pdf
247|||||red||||||||||||||||||||||||||||||led_247||||/byrdbellvjk/pdf/jtfdcr_20150000_request_legal_assistance.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20150000_request_legal_assistance.pdf
248|||||red||||||||||||||||||||||||||||||led_248||||/byrdbellvjk/pdf/jtfdcr_201500_cohena_cases.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_201500_cohena_cases.pdf
249|||||red||||||||||||||||||||||||||||||led_249||||/byrdbellvjk/pdf/jtfdcr_20150611_martin_protect_jk.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20150611_martin_protect_jk.pdf
250|||||red||||||||||||||||||||||||||||||led_250||||/byrdbellvjk/pdf/jtfdcr_20150611_martin_protect_jk1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20150611_martin_protect_jk1.pdf
251|||||red||||||||||||||||||||||||||||||led_251||||/byrdbellvjk/pdf/jtfdcr_20150821_cohena_policeletter.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20150821_cohena_policeletter.pdf
252|||||red||||||||||||||||||||||||||||||led_252||||/byrdbellvjk/pdf/jtfdcr_20150910_jk_protect_donovan.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20150910_jk_protect_donovan.pdf
253|||||red||||||||||||||||||||||||||||||led_253||||/byrdbellvjk/pdf/jtfdcr_20151012_stlc_yard_violations.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20151012_stlc_yard_violations.pdf
254|||||red||||||||||||||||||||||||||||||led_254||||/byrdbellvjk/pdf/jtfdcr_20160519_1700_sk_protect.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20160519_1700_sk_protect.pdf
255|||||red||||||||||||||||||||||||||||||led_255||||/byrdbellvjk/pdf/jtfdcr_20160826_keuhlig_common_drive.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20160826_keuhlig_common_drive.pdf
256|||||red||||||||||||||||||||||||||||||led_256||||/byrdbellvjk/pdf/jtfdcr_20170908_cohenn_trial3.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20170908_cohenn_trial3.pdf
257|||||red||||||||||||||||||||||||||||||led_257||||/byrdbellvjk/pdf/jtfdcr_20190516.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20190516.pdf
258|||||red||||||||||||||||||||||||||||||led_258||||/byrdbellvjk/pdf/jtfdcr_20190516_1700_sk_protect.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20190516_1700_sk_protect.pdf
259|||||red||||||||||||||||||||||||||||||led_259||||/byrdbellvjk/pdf/jtfdcr_20190516_big.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20190516_big.pdf
260|||||red||||||||||||||||||||||||||||||led_260||||/byrdbellvjk/pdf/jtfdcr_20190516_jkmed.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20190516_jkmed.pdf
261|||||red||||||||||||||||||||||||||||||led_261||||/byrdbellvjk/pdf/jtfdcr_20190516_luber_policereport.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20190516_luber_policereport.pdf
262|||||red||||||||||||||||||||||||||||||led_262||||/byrdbellvjk/pdf/jtfdcr_20190516_protect.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20190516_protect.pdf
263|||||red||||||||||||||||||||||||||||||led_263||||/byrdbellvjk/pdf/jtfdcr_20191204_dolley_trial5.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20191204_dolley_trial5.pdf
264|||||red||||||||||||||||||||||||||||||led_264||||/byrdbellvjk/pdf/jtfdcr_20191204_dolley_trial5_jtfinc.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20191204_dolley_trial5_jtfinc.pdf
265|||||red||||||||||||||||||||||||||||||led_265||||/byrdbellvjk/pdf/jtfdcr_20200916_jkmed_status.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20200916_jkmed_status.pdf
266|||||red||||||||||||||||||||||||||||||led_266||||/byrdbellvjk/pdf/jtfdcr_20230126_byrd_threats_n_thefts.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_20230126_byrd_threats_n_thefts.pdf
267|||||red||||||||||||||||||||||||||||||led_267||||/byrdbellvjk/pdf/jtfdcr_cohena.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_cohena.pdf
268|||||red||||||||||||||||||||||||||||||led_268||||/byrdbellvjk/pdf/jtfdcr_cohenn.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_cohenn.pdf
269|||||red||||||||||||||||||||||||||||||led_269||||/byrdbellvjk/pdf/jtfdcr_dogs.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_dogs.pdf
270|||||red||||||||||||||||||||||||||||||led_270||||/byrdbellvjk/pdf/jtfdcr_dolly.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_dolly.pdf
271|||||red||||||||||||||||||||||||||||||led_271||||/byrdbellvjk/pdf/jtfdcr_keuhlig.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_keuhlig.pdf
272|||||red||||||||||||||||||||||||||||||led_272||||/byrdbellvjk/pdf/jtfdcr_police.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/jtfdcr_police.pdf
273|||||red||||||||||||||||||||||||||||||led_273||||/byrdbellvjk/pdf/mp4.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/mp4.pdf
274|||||red||||||||||||||||||||||||||||||led_274||||/byrdbellvjk/pdf/police_call_summary_29jamestown.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/police_call_summary_29jamestown.pdf
275|||||red||||||||||||||||||||||||||||||led_275||||/byrdbellvjk/pdf/police_call_summary_jamestown_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/police_call_summary_jamestown_pg1.pdf
276|||||red||||||||||||||||||||||||||||||led_276||||/byrdbellvjk/pdf/police_call_summary_jamestown_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/police_call_summary_jamestown_pg2.pdf
277|||||red||||||||||||||||||||||||||||||led_277||||/byrdbellvjk/pdf/police_call_summary_jamestown_pg3.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/police_call_summary_jamestown_pg3.pdf
278|||||red||||||||||||||||||||||||||||||led_278||||/byrdbellvjk/pdf/summons_15445941_gardner_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/summons_15445941_gardner_pg1.pdf
279|||||red||||||||||||||||||||||||||||||led_279||||/byrdbellvjk/pdf/summons_15445941_gardner_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/summons_15445941_gardner_pg2.pdf
280|||||red||||||||||||||||||||||||||||||led_280||||/byrdbellvjk/pdf/summons_15445941_gardner_pg3.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/summons_15445941_gardner_pg3.pdf
281|||||red||||||||||||||||||||||||||||||led_281||||/byrdbellvjk/pdf/summons_15445941_gardner_pg4.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/summons_15445941_gardner_pg4.pdf
282|||||red||||||||||||||||||||||||||||||led_282||||/byrdbellvjk/pdf/who2jail.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/who2jail.pdf
283|||||red||||||||||||||||||||||||||||||led_283||||/byrdbellvjk/pdf/zn_byrdbellvjk.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pdf/zn_byrdbellvjk.pdf
284|||||red||||||||||||||||||||||||||||||led_284||||/byrdbellvjk/pj/byrdbellvjk.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/byrdbellvjk.pdf
285|||||red||||||||||||||||||||||||||||||led_285||||/byrdbellvjk/pj/gs.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/gs.pdf
286|||||red||||||||||||||||||||||||||||||led_286||||/byrdbellvjk/pj/gs_byrdbellvjk.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/gs_byrdbellvjk.pdf
287|||||red||||||||||||||||||||||||||||||led_287||||/byrdbellvjk/pj/gs_police.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/gs_police.pdf
288|||||red||||||||||||||||||||||||||||||led_288||||/byrdbellvjk/pj/zn_byrdbellvjk.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/zn_byrdbellvjk.pdf
289|||||red||||||||||||||||||||||||||||||led_289||||/byrdbellvjk/tn_byrdbellvjk.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/tn_byrdbellvjk.pdf
290|||||red||||||||||||||||||||||||||||||led_290||||/byrdbellvjk/txt/2014_taxdetails.xls.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/2014_taxdetails.xls.pdf
291|||||red||||||||||||||||||||||||||||||led_291||||/byrdbellvjk/txt/jk_restrain_donovan_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_donovan_pg1.pdf
292|||||red||||||||||||||||||||||||||||||led_292||||/byrdbellvjk/txt/jk_restrain_donovan_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_donovan_pg2.pdf
293|||||red||||||||||||||||||||||||||||||led_293||||/byrdbellvjk/txt/jk_restrain_donovan_pg3.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_donovan_pg3.pdf
294|||||red||||||||||||||||||||||||||||||led_294||||/byrdbellvjk/txt/jk_restrain_donovan_pg4.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_donovan_pg4.pdf
295|||||red||||||||||||||||||||||||||||||led_295||||/byrdbellvjk/txt/jk_restrain_donovan_pg5.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_donovan_pg5.pdf
296|||||red||||||||||||||||||||||||||||||led_296||||/byrdbellvjk/txt/jk_restrain_donovan_pg6.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_donovan_pg6.pdf
297|||||red||||||||||||||||||||||||||||||led_297||||/byrdbellvjk/txt/jk_restrain_donovan_pg7.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_donovan_pg7.pdf
298|||||red||||||||||||||||||||||||||||||led_298||||/byrdbellvjk/txt/jk_restrain_donovan_pg8.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_donovan_pg8.pdf
299|||||red||||||||||||||||||||||||||||||led_299||||/byrdbellvjk/txt/jk_restrain_gardner_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_gardner_pg1.pdf
300|||||red||||||||||||||||||||||||||||||led_300||||/byrdbellvjk/txt/jk_restrain_gardner_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_gardner_pg2.pdf
301|||||red||||||||||||||||||||||||||||||led_301||||/byrdbellvjk/txt/jk_restrain_gardner_pg3.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_gardner_pg3.pdf
302|||||red||||||||||||||||||||||||||||||led_302||||/byrdbellvjk/txt/jk_restrain_gardner_pg4.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_gardner_pg4.pdf
303|||||red||||||||||||||||||||||||||||||led_303||||/byrdbellvjk/txt/jk_restrain_gardner_pg5.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_gardner_pg5.pdf
304|||||red||||||||||||||||||||||||||||||led_304||||/byrdbellvjk/txt/jk_restrain_gardner_pg6.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_gardner_pg6.pdf
305|||||red||||||||||||||||||||||||||||||led_305||||/byrdbellvjk/txt/jk_restrain_gardner_pg7.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_gardner_pg7.pdf
306|||||red||||||||||||||||||||||||||||||led_306||||/byrdbellvjk/txt/jk_restrain_gardner_pg8.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_gardner_pg8.pdf
307|||||red||||||||||||||||||||||||||||||led_307||||/byrdbellvjk/txt/jk_restrain_martin_pg1.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_martin_pg1.pdf
308|||||red||||||||||||||||||||||||||||||led_308||||/byrdbellvjk/txt/jk_restrain_martin_pg2.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_martin_pg2.pdf
309|||||red||||||||||||||||||||||||||||||led_309||||/byrdbellvjk/txt/jk_restrain_martin_pg3.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_martin_pg3.pdf
310|||||red||||||||||||||||||||||||||||||led_310||||/byrdbellvjk/txt/jk_restrain_martin_pg4.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_martin_pg4.pdf
311|||||red||||||||||||||||||||||||||||||led_311||||/byrdbellvjk/txt/jk_restrain_martin_pg5.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_martin_pg5.pdf
312|||||red||||||||||||||||||||||||||||||led_312||||/byrdbellvjk/txt/jk_restrain_martin_pg6.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_martin_pg6.pdf
313|||||red||||||||||||||||||||||||||||||led_313||||/byrdbellvjk/txt/jk_restrain_martin_pg7.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_martin_pg7.pdf
314|||||red||||||||||||||||||||||||||||||led_314||||/byrdbellvjk/txt/jk_restrain_martin_pg8.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jk_restrain_martin_pg8.pdf
315|||||red||||||||||||||||||||||||||||||led_315||||/byrdbellvjk/zn_byrdbellvjk.pdf|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/zn_byrdbellvjk.pdf
316|||||red||||||||||||||||||||||||||||||led_316||||/byrdbellvjk/fb/byrdbellvjk/imgs_orig/byrdbellvjk.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb/byrdbellvjk/imgs_orig/byrdbellvjk.txt
317|||||red||||||||||||||||||||||||||||||led_317||||/byrdbellvjk/fb/byrdbellvjk/imgs_orig/exiftool_byrdbellvjk.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb/byrdbellvjk/imgs_orig/exiftool_byrdbellvjk.txt
318|||||red||||||||||||||||||||||||||||||led_318||||/byrdbellvjk/fb/byrdbellvjk/imgs_orig/outline.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb/byrdbellvjk/imgs_orig/outline.txt
319|||||red||||||||||||||||||||||||||||||led_319||||/byrdbellvjk/fb/byrdbellvjk/pages.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb/byrdbellvjk/pages.txt
320|||||red||||||||||||||||||||||||||||||led_320||||/byrdbellvjk/fb/notes/notes.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb/notes/notes.txt
321|||||red||||||||||||||||||||||||||||||led_321||||/byrdbellvjk/fb/who2jail/jkwii_20190516_policemen_byrdbell_takeaneighbor2jail_day.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb/who2jail/jkwii_20190516_policemen_byrdbell_takeaneighbor2jail_day.txt
322|||||red||||||||||||||||||||||||||||||led_322||||/byrdbellvjk/fb/who2jail/pages/js/b64_arrows_png.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb/who2jail/pages/js/b64_arrows_png.txt
323|||||red||||||||||||||||||||||||||||||led_323||||/byrdbellvjk/fb/who2jail/pages/js/b64_loader_gif.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb/who2jail/pages/js/b64_loader_gif.txt
324|||||red||||||||||||||||||||||||||||||led_324||||/byrdbellvjk/fb/who2jail/pages/js/b64_magazine_js.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb/who2jail/pages/js/b64_magazine_js.txt
325|||||red||||||||||||||||||||||||||||||led_325||||/byrdbellvjk/fb/who2jail/pages/js/b64_pics.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb/who2jail/pages/js/b64_pics.txt
326|||||red||||||||||||||||||||||||||||||led_326||||/byrdbellvjk/fb/who2jail/pages/js/b64_zoom-icons-editable_png.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb/who2jail/pages/js/b64_zoom-icons-editable_png.txt
327|||||red||||||||||||||||||||||||||||||led_327||||/byrdbellvjk/fb/who2jail/pages/js/b64_zoom-icons_png.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb/who2jail/pages/js/b64_zoom-icons_png.txt
328|||||red||||||||||||||||||||||||||||||led_328||||/byrdbellvjk/fb/who2jail/who2jail.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/fb/who2jail/who2jail.txt
329|||||red||||||||||||||||||||||||||||||led_329||||/byrdbellvjk/find_byrd.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/find_byrd.txt
330|||||red||||||||||||||||||||||||||||||led_330||||/byrdbellvjk/find_dogs.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/find_dogs.txt
331|||||red||||||||||||||||||||||||||||||led_331||||/byrdbellvjk/find_gif_jtf.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/find_gif_jtf.txt
332|||||red||||||||||||||||||||||||||||||led_332||||/byrdbellvjk/find_jtf.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/find_jtf.txt
333|||||red||||||||||||||||||||||||||||||led_333||||/byrdbellvjk/find_kb_byrd_mp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/find_kb_byrd_mp4.txt
334|||||red||||||||||||||||||||||||||||||led_334||||/byrdbellvjk/find_kbvid_byrd.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/find_kbvid_byrd.txt
335|||||red||||||||||||||||||||||||||||||led_335||||/byrdbellvjk/find_kbvid_tnmp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/find_kbvid_tnmp4.txt
336|||||red||||||||||||||||||||||||||||||led_336||||/byrdbellvjk/find_mp3_jtf.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/find_mp3_jtf.txt
337|||||red||||||||||||||||||||||||||||||led_337||||/byrdbellvjk/find_mp4_byrd.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/find_mp4_byrd.txt
338|||||red||||||||||||||||||||||||||||||led_338||||/byrdbellvjk/find_mp4_jtf.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/find_mp4_jtf.txt
339|||||red||||||||||||||||||||||||||||||led_339||||/byrdbellvjk/find_mp4_police.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/find_mp4_police.txt
340|||||red||||||||||||||||||||||||||||||led_340||||/byrdbellvjk/find_police.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/find_police.txt
341|||||red||||||||||||||||||||||||||||||led_341||||/byrdbellvjk/help.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/help.txt
342|||||red||||||||||||||||||||||||||||||led_342||||/byrdbellvjk/imgs/imgs.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/imgs.txt
343|||||red||||||||||||||||||||||||||||||led_343||||/byrdbellvjk/imgs/jtfdcr/tn_mp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr/tn_mp4.txt
344|||||red||||||||||||||||||||||||||||||led_344||||/byrdbellvjk/imgs/jtfdcr_police/find_ht_mp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/find_ht_mp4.txt
345|||||red||||||||||||||||||||||||||||||led_345||||/byrdbellvjk/imgs/jtfdcr_police/find_ht_pdf.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/find_ht_pdf.txt
346|||||red||||||||||||||||||||||||||||||led_346||||/byrdbellvjk/imgs/jtfdcr_police/find_ht_snap.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/find_ht_snap.txt
347|||||red||||||||||||||||||||||||||||||led_347||||/byrdbellvjk/imgs/jtfdcr_police/find_jtf.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/find_jtf.txt
348|||||red||||||||||||||||||||||||||||||led_348||||/byrdbellvjk/imgs/jtfdcr_police/find_jtf_ht.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/find_jtf_ht.txt
349|||||red||||||||||||||||||||||||||||||led_349||||/byrdbellvjk/imgs/jtfdcr_police/find_jtf_mp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/find_jtf_mp4.txt
350|||||red||||||||||||||||||||||||||||||led_350||||/byrdbellvjk/imgs/jtfdcr_police/find_jtfdc.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/find_jtfdc.txt
351|||||red||||||||||||||||||||||||||||||led_351||||/byrdbellvjk/imgs/jtfdcr_police/find_jtfmp3.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/find_jtfmp3.txt
352|||||red||||||||||||||||||||||||||||||led_352||||/byrdbellvjk/imgs/jtfdcr_police/find_jtfmp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/find_jtfmp4.txt
353|||||red||||||||||||||||||||||||||||||led_353||||/byrdbellvjk/imgs/jtfdcr_police/find_kb.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/find_kb.txt
354|||||red||||||||||||||||||||||||||||||led_354||||/byrdbellvjk/imgs/jtfdcr_police/find_snap.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/find_snap.txt
355|||||red||||||||||||||||||||||||||||||led_355||||/byrdbellvjk/imgs/jtfdcr_police/find_youb.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/find_youb.txt
356|||||red||||||||||||||||||||||||||||||led_356||||/byrdbellvjk/imgs/jtfdcr_police/jkwii_20150513_police_flee2cleveland.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jkwii_20150513_police_flee2cleveland.txt
357|||||red||||||||||||||||||||||||||||||led_357||||/byrdbellvjk/imgs/jtfdcr_police/jkwiisme.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jkwiisme.txt
358|||||red||||||||||||||||||||||||||||||led_358||||/byrdbellvjk/imgs/jtfdcr_police/jkwiiv_byrdbell.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jkwiiv_byrdbell.txt
359|||||red||||||||||||||||||||||||||||||led_359||||/byrdbellvjk/imgs/jtfdcr_police/jkwiiv_byrdbell_raw.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jkwiiv_byrdbell_raw.txt
360|||||red||||||||||||||||||||||||||||||led_360||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20170805_1400_police_byrddog_call.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20170805_1400_police_byrddog_call.txt
361|||||red||||||||||||||||||||||||||||||led_361||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0820_policecall.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0820_policecall.txt
362|||||red||||||||||||||||||||||||||||||led_362||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830.txt
363|||||red||||||||||||||||||||||||||||||led_363||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd.txt
364|||||red||||||||||||||||||||||||||||||led_364||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_02.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_02.txt
365|||||red||||||||||||||||||||||||||||||led_365||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_03.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_03.txt
366|||||red||||||||||||||||||||||||||||||led_366||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_04.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_04.txt
367|||||red||||||||||||||||||||||||||||||led_367||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_05.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_05.txt
368|||||red||||||||||||||||||||||||||||||led_368||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_06.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_06.txt
369|||||red||||||||||||||||||||||||||||||led_369||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_07.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_07.txt
370|||||red||||||||||||||||||||||||||||||led_370||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_07_jkwii.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_07_jkwii.txt
371|||||red||||||||||||||||||||||||||||||led_371||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_08.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_08.txt
372|||||red||||||||||||||||||||||||||||||led_372||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_10.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_10.txt
373|||||red||||||||||||||||||||||||||||||led_373||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_11.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_11.txt
374|||||red||||||||||||||||||||||||||||||led_374||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_dolley_1.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_dolley_1.txt
375|||||red||||||||||||||||||||||||||||||led_375||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_dolley_2.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_dolley_2.txt
376|||||red||||||||||||||||||||||||||||||led_376||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_dolley_3.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_dolley_3.txt
377|||||red||||||||||||||||||||||||||||||led_377||||/byrdbellvjk/imgs/jtfdcr_police/pagelist.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/pagelist.txt
378|||||red||||||||||||||||||||||||||||||led_378||||/byrdbellvjk/imgs/jtfdcr_police/pagelist_byrdbell.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/pagelist_byrdbell.txt
379|||||red||||||||||||||||||||||||||||||led_379||||/byrdbellvjk/imgs/jtfdcr_police/pagelist_kb_jtfdcr_vid.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/pagelist_kb_jtfdcr_vid.txt
380|||||red||||||||||||||||||||||||||||||led_380||||/byrdbellvjk/imgs/jtfdcr_police/pagelist_mp3.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/pagelist_mp3.txt
381|||||red||||||||||||||||||||||||||||||led_381||||/byrdbellvjk/imgs/jtfdcr_police/pcalls.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/pcalls.txt
382|||||red||||||||||||||||||||||||||||||led_382||||/byrdbellvjk/imgs/jtfdcr_police/pcalls_notes.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/pcalls_notes.txt
383|||||red||||||||||||||||||||||||||||||led_383||||/byrdbellvjk/imgs/jtfdcr_police/policereport.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/policereport.txt
384|||||red||||||||||||||||||||||||||||||led_384||||/byrdbellvjk/imgs/jtfdcr_police/sel_files.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/sel_files.txt
385|||||red||||||||||||||||||||||||||||||led_385||||/byrdbellvjk/imgs/jtfdcr_police/snap_1.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/snap_1.txt
386|||||red||||||||||||||||||||||||||||||led_386||||/byrdbellvjk/imgs/jtfdcr_police/tn_mp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/tn_mp4.txt
387|||||red||||||||||||||||||||||||||||||led_387||||/byrdbellvjk/imgs/jtfdcr_police/who2jail.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/who2jail.txt
388|||||red||||||||||||||||||||||||||||||led_388||||/byrdbellvjk/imgs/jtfdcr_police/who2jail_raw.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/imgs/jtfdcr_police/who2jail_raw.txt
389|||||red||||||||||||||||||||||||||||||led_389||||/byrdbellvjk/jk.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/jk.txt
390|||||red||||||||||||||||||||||||||||||led_390||||/byrdbellvjk/jk1.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/jk1.txt
391|||||red||||||||||||||||||||||||||||||led_391||||/byrdbellvjk/ko.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/ko.txt
392|||||red||||||||||||||||||||||||||||||led_392||||/byrdbellvjk/notes.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/notes.txt
393|||||red||||||||||||||||||||||||||||||led_393||||/byrdbellvjk/pj/byrdbellvjk.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/byrdbellvjk.txt
394|||||red||||||||||||||||||||||||||||||led_394||||/byrdbellvjk/pj/dates.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/dates.txt
395|||||red||||||||||||||||||||||||||||||led_395||||/byrdbellvjk/pj/exiftool_byrdbellvjk.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/exiftool_byrdbellvjk.txt
396|||||red||||||||||||||||||||||||||||||led_396||||/byrdbellvjk/pj/find_fb.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_fb.txt
397|||||red||||||||||||||||||||||||||||||led_397||||/byrdbellvjk/pj/find_gif.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_gif.txt
398|||||red||||||||||||||||||||||||||||||led_398||||/byrdbellvjk/pj/find_jpg.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_jpg.txt
399|||||red||||||||||||||||||||||||||||||led_399||||/byrdbellvjk/pj/find_kbjtf.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_kbjtf.txt
400|||||red||||||||||||||||||||||||||||||led_400||||/byrdbellvjk/pj/find_mp3.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_mp3.txt
401|||||red||||||||||||||||||||||||||||||led_401||||/byrdbellvjk/pj/find_mp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_mp4.txt
402|||||red||||||||||||||||||||||||||||||led_402||||/byrdbellvjk/pj/find_mp4_jtf.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_mp4_jtf.txt
403|||||red||||||||||||||||||||||||||||||led_403||||/byrdbellvjk/pj/find_mp4tn.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_mp4tn.txt
404|||||red||||||||||||||||||||||||||||||led_404||||/byrdbellvjk/pj/find_mp4tn_jtf.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_mp4tn_jtf.txt
405|||||red||||||||||||||||||||||||||||||led_405||||/byrdbellvjk/pj/find_pdf.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_pdf.txt
406|||||red||||||||||||||||||||||||||||||led_406||||/byrdbellvjk/pj/find_png.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_png.txt
407|||||red||||||||||||||||||||||||||||||led_407||||/byrdbellvjk/pj/find_tl.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_tl.txt
408|||||red||||||||||||||||||||||||||||||led_408||||/byrdbellvjk/pj/find_txt.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_txt.txt
409|||||red||||||||||||||||||||||||||||||led_409||||/byrdbellvjk/pj/find_zm.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/find_zm.txt
410|||||red||||||||||||||||||||||||||||||led_410||||/byrdbellvjk/pj/finds.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/finds.txt
411|||||red||||||||||||||||||||||||||||||led_411||||/byrdbellvjk/pj/mp4tns.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/mp4tns.txt
412|||||red||||||||||||||||||||||||||||||led_412||||/byrdbellvjk/pj/notes.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/notes.txt
413|||||red||||||||||||||||||||||||||||||led_413||||/byrdbellvjk/pj/outline.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/outline.txt
414|||||red||||||||||||||||||||||||||||||led_414||||/byrdbellvjk/pj/pages.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/pj/pages.txt
415|||||red||||||||||||||||||||||||||||||led_415||||/byrdbellvjk/todo.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/todo.txt
416|||||red||||||||||||||||||||||||||||||led_416||||/byrdbellvjk/txt/ajaks_ka12_mp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajaks_ka12_mp4.txt
417|||||red||||||||||||||||||||||||||||||led_417||||/byrdbellvjk/txt/ajaks_ka1_htkb_jpg.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajaks_ka1_htkb_jpg.txt
418|||||red||||||||||||||||||||||||||||||led_418||||/byrdbellvjk/txt/ajaks_ka1_jtfdc_mp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajaks_ka1_jtfdc_mp4.txt
419|||||red||||||||||||||||||||||||||||||led_419||||/byrdbellvjk/txt/ajaks_ka1_kb_jpg.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajaks_ka1_kb_jpg.txt
420|||||red||||||||||||||||||||||||||||||led_420||||/byrdbellvjk/txt/ajaks_ko2_fb_jpg.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajaks_ko2_fb_jpg.txt
421|||||red||||||||||||||||||||||||||||||led_421||||/byrdbellvjk/txt/ajaks_ko2_jpg.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajaks_ko2_jpg.txt
422|||||red||||||||||||||||||||||||||||||led_422||||/byrdbellvjk/txt/ajaks_ko2_kb_jpg.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajaks_ko2_kb_jpg.txt
423|||||red||||||||||||||||||||||||||||||led_423||||/byrdbellvjk/txt/ajaks_ko2_mp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajaks_ko2_mp4.txt
424|||||red||||||||||||||||||||||||||||||led_424||||/byrdbellvjk/txt/ajaks_ko2_sl_jpg.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajaks_ko2_sl_jpg.txt
425|||||red||||||||||||||||||||||||||||||led_425||||/byrdbellvjk/txt/ajaks_ko2_tl_jpg.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajaks_ko2_tl_jpg.txt
426|||||red||||||||||||||||||||||||||||||led_426||||/byrdbellvjk/txt/ajaks_ko2_us_jpg.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajaks_ko2_us_jpg.txt
427|||||red||||||||||||||||||||||||||||||led_427||||/byrdbellvjk/txt/ajax.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajax.txt
428|||||red||||||||||||||||||||||||||||||led_428||||/byrdbellvjk/txt/ajax1.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajax1.txt
429|||||red||||||||||||||||||||||||||||||led_429||||/byrdbellvjk/txt/ajax2.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajax2.txt
430|||||red||||||||||||||||||||||||||||||led_430||||/byrdbellvjk/txt/ajax_info.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/ajax_info.txt
431|||||red||||||||||||||||||||||||||||||led_431||||/byrdbellvjk/txt/anim.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/anim.txt
432|||||red||||||||||||||||||||||||||||||led_432||||/byrdbellvjk/txt/anim_cute.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/anim_cute.txt
433|||||red||||||||||||||||||||||||||||||led_433||||/byrdbellvjk/txt/anim_orbs.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/anim_orbs.txt
434|||||red||||||||||||||||||||||||||||||led_434||||/byrdbellvjk/txt/anim_tek.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/anim_tek.txt
435|||||red||||||||||||||||||||||||||||||led_435||||/byrdbellvjk/txt/b64_h5gallery_jquery_js.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/b64_h5gallery_jquery_js.txt
436|||||red||||||||||||||||||||||||||||||led_436||||/byrdbellvjk/txt/b64_h5gallery_js.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/b64_h5gallery_js.txt
437|||||red||||||||||||||||||||||||||||||led_437||||/byrdbellvjk/txt/b64_ko_js.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/b64_ko_js.txt
438|||||red||||||||||||||||||||||||||||||led_438||||/byrdbellvjk/txt/b64_turnjs.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/b64_turnjs.txt
439|||||red||||||||||||||||||||||||||||||led_439||||/byrdbellvjk/txt/b64_turnminjs.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/b64_turnminjs.txt
440|||||red||||||||||||||||||||||||||||||led_440||||/byrdbellvjk/txt/b64btn.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/b64btn.txt
441|||||red||||||||||||||||||||||||||||||led_441||||/byrdbellvjk/txt/brew_link_dryrun_py.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/brew_link_dryrun_py.txt
442|||||red||||||||||||||||||||||||||||||led_442||||/byrdbellvjk/txt/bugs.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/bugs.txt
443|||||red||||||||||||||||||||||||||||||led_443||||/byrdbellvjk/txt/callodes4.rxr.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/callodes4.rxr.txt
444|||||red||||||||||||||||||||||||||||||led_444||||/byrdbellvjk/txt/codes1.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/codes1.txt
445|||||red||||||||||||||||||||||||||||||led_445||||/byrdbellvjk/txt/find_ht_mp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/find_ht_mp4.txt
446|||||red||||||||||||||||||||||||||||||led_446||||/byrdbellvjk/txt/find_ht_pdf.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/find_ht_pdf.txt
447|||||red||||||||||||||||||||||||||||||led_447||||/byrdbellvjk/txt/find_ht_snap.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/find_ht_snap.txt
448|||||red||||||||||||||||||||||||||||||led_448||||/byrdbellvjk/txt/find_jtf.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/find_jtf.txt
449|||||red||||||||||||||||||||||||||||||led_449||||/byrdbellvjk/txt/find_jtf_ht.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/find_jtf_ht.txt
450|||||red||||||||||||||||||||||||||||||led_450||||/byrdbellvjk/txt/find_jtf_mp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/find_jtf_mp4.txt
451|||||red||||||||||||||||||||||||||||||led_451||||/byrdbellvjk/txt/find_jtfdc.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/find_jtfdc.txt
452|||||red||||||||||||||||||||||||||||||led_452||||/byrdbellvjk/txt/find_jtfmp3.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/find_jtfmp3.txt
453|||||red||||||||||||||||||||||||||||||led_453||||/byrdbellvjk/txt/find_jtfmp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/find_jtfmp4.txt
454|||||red||||||||||||||||||||||||||||||led_454||||/byrdbellvjk/txt/find_kb.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/find_kb.txt
455|||||red||||||||||||||||||||||||||||||led_455||||/byrdbellvjk/txt/find_snap.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/find_snap.txt
456|||||red||||||||||||||||||||||||||||||led_456||||/byrdbellvjk/txt/find_youb.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/find_youb.txt
457|||||red||||||||||||||||||||||||||||||led_457||||/byrdbellvjk/txt/jkresume_1990_01.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkresume_1990_01.txt
458|||||red||||||||||||||||||||||||||||||led_458||||/byrdbellvjk/txt/jkresume_1990_02.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkresume_1990_02.txt
459|||||red||||||||||||||||||||||||||||||led_459||||/byrdbellvjk/txt/jkresume_1990_skillset.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkresume_1990_skillset.txt
460|||||red||||||||||||||||||||||||||||||led_460||||/byrdbellvjk/txt/jkresume_2000_01.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkresume_2000_01.txt
461|||||red||||||||||||||||||||||||||||||led_461||||/byrdbellvjk/txt/jkresume_2000_02.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkresume_2000_02.txt
462|||||red||||||||||||||||||||||||||||||led_462||||/byrdbellvjk/txt/jkresume_2000_03.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkresume_2000_03.txt
463|||||red||||||||||||||||||||||||||||||led_463||||/byrdbellvjk/txt/jkresume_2000_detail_buie.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkresume_2000_detail_buie.txt
464|||||red||||||||||||||||||||||||||||||led_464||||/byrdbellvjk/txt/jkresume_2000_detail_bw.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkresume_2000_detail_bw.txt
465|||||red||||||||||||||||||||||||||||||led_465||||/byrdbellvjk/txt/jkresume_2000_detail_konet.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkresume_2000_detail_konet.txt
466|||||red||||||||||||||||||||||||||||||led_466||||/byrdbellvjk/txt/jkresume_2000_detail_preview.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkresume_2000_detail_preview.txt
467|||||red||||||||||||||||||||||||||||||led_467||||/byrdbellvjk/txt/jkresume_2000_detail_sasc.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkresume_2000_detail_sasc.txt
468|||||red||||||||||||||||||||||||||||||led_468||||/byrdbellvjk/txt/jkwii_20150513_police_flee2cleveland.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkwii_20150513_police_flee2cleveland.txt
469|||||red||||||||||||||||||||||||||||||led_469||||/byrdbellvjk/txt/jkwiisme.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkwiisme.txt
470|||||red||||||||||||||||||||||||||||||led_470||||/byrdbellvjk/txt/jkwiiv_byrdbell.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkwiiv_byrdbell.txt
471|||||red||||||||||||||||||||||||||||||led_471||||/byrdbellvjk/txt/jkwiiv_byrdbell_raw.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jkwiiv_byrdbell_raw.txt
472|||||red||||||||||||||||||||||||||||||led_472||||/byrdbellvjk/txt/jtf_ie_200909.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtf_ie_200909.txt
473|||||red||||||||||||||||||||||||||||||led_473||||/byrdbellvjk/txt/jtf_ie_200909_ocr.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtf_ie_200909_ocr.txt
474|||||red||||||||||||||||||||||||||||||led_474||||/byrdbellvjk/txt/jtf_min.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtf_min.txt
475|||||red||||||||||||||||||||||||||||||led_475||||/byrdbellvjk/txt/jtf_min_200909.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtf_min_200909.txt
476|||||red||||||||||||||||||||||||||||||led_476||||/byrdbellvjk/txt/jtf_min_200909_ocr.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtf_min_200909_ocr.txt
477|||||red||||||||||||||||||||||||||||||led_477||||/byrdbellvjk/txt/jtf_us_20070530_ocr.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtf_us_20070530_ocr.txt
478|||||red||||||||||||||||||||||||||||||led_478||||/byrdbellvjk/txt/jtf_us_200909.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtf_us_200909.txt
479|||||red||||||||||||||||||||||||||||||led_479||||/byrdbellvjk/txt/jtf_us_200909_01_ocr.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtf_us_200909_01_ocr.txt
480|||||red||||||||||||||||||||||||||||||led_480||||/byrdbellvjk/txt/jtf_us_200909_02_ocr.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtf_us_200909_02_ocr.txt
481|||||red||||||||||||||||||||||||||||||led_481||||/byrdbellvjk/txt/jtf_videos.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtf_videos.txt
482|||||red||||||||||||||||||||||||||||||led_482||||/byrdbellvjk/txt/jtfdc_20160530_1317_byrd_trustee_threat.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20160530_1317_byrd_trustee_threat.txt
483|||||red||||||||||||||||||||||||||||||led_483||||/byrdbellvjk/txt/jtfdc_20160530_1327_byrd_trustee_threat.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20160530_1327_byrd_trustee_threat.txt
484|||||red||||||||||||||||||||||||||||||led_484||||/byrdbellvjk/txt/jtfdc_20160530_1916_byrd_threat.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20160530_1916_byrd_threat.txt
485|||||red||||||||||||||||||||||||||||||led_485||||/byrdbellvjk/txt/jtfdc_20160610_2030_01234567890_waiting_police_byrd_baily.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20160610_2030_01234567890_waiting_police_byrd_baily.txt
486|||||red||||||||||||||||||||||||||||||led_486||||/byrdbellvjk/txt/jtfdc_20170805_1400_police_byrddog_call.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20170805_1400_police_byrddog_call.txt
487|||||red||||||||||||||||||||||||||||||led_487||||/byrdbellvjk/txt/jtfdc_20190509_1224_jkwii_police_officerbell.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20190509_1224_jkwii_police_officerbell.txt
488|||||red||||||||||||||||||||||||||||||led_488||||/byrdbellvjk/txt/jtfdc_20190516_0820_byrd_waiting4police.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20190516_0820_byrd_waiting4police.txt
489|||||red||||||||||||||||||||||||||||||led_489||||/byrdbellvjk/txt/jtfdc_20190516_0820_policecall.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20190516_0820_policecall.txt
490|||||red||||||||||||||||||||||||||||||led_490||||/byrdbellvjk/txt/jtfdc_20190516_0830.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20190516_0830.txt
491|||||red||||||||||||||||||||||||||||||led_491||||/byrdbellvjk/txt/jtfdc_20190516_0830_026_tweets.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20190516_0830_026_tweets.txt
492|||||red||||||||||||||||||||||||||||||led_492||||/byrdbellvjk/txt/jtfdc_20190516_0830_1m23-1m33.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20190516_0830_1m23-1m33.txt
493|||||red||||||||||||||||||||||||||||||led_493||||/byrdbellvjk/txt/jtfdc_20190516_0830_terror_what_are_you_doing_here.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20190516_0830_terror_what_are_you_doing_here.txt
494|||||red||||||||||||||||||||||||||||||led_494||||/byrdbellvjk/txt/jtfdc_20190516_0830_when_they_move_the_sawhorsetweets.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20190516_0830_when_they_move_the_sawhorsetweets.txt
495|||||red||||||||||||||||||||||||||||||led_495||||/byrdbellvjk/txt/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshal_yourself.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshal_yourself.txt
496|||||red||||||||||||||||||||||||||||||led_496||||/byrdbellvjk/txt/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.txt
497|||||red||||||||||||||||||||||||||||||led_497||||/byrdbellvjk/txt/jtfdc_20190908_0030_still_toadog.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20190908_0030_still_toadog.txt
498|||||red||||||||||||||||||||||||||||||led_498||||/byrdbellvjk/txt/jtfdc_20191109_1604_skpout_jkwiigo_jtf31_fiona_nice.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20191109_1604_skpout_jkwiigo_jtf31_fiona_nice.txt
499|||||red||||||||||||||||||||||||||||||led_499||||/byrdbellvjk/txt/jtfdc_20191209_1529_stalkaround_bus.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20191209_1529_stalkaround_bus.txt
500|||||red||||||||||||||||||||||||||||||led_500||||/byrdbellvjk/txt/jtfdc_20200109_0648_jhappy_bday_jk2.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20200109_0648_jhappy_bday_jk2.txt
501|||||red||||||||||||||||||||||||||||||led_501||||/byrdbellvjk/txt/jtfdc_20200119_1752_stalkaround_twins_suv_n_pickup.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20200119_1752_stalkaround_twins_suv_n_pickup.txt
502|||||red||||||||||||||||||||||||||||||led_502||||/byrdbellvjk/txt/jtfdc_20200316_1756_jtf30_vickky_only1doggy.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20200316_1756_jtf30_vickky_only1doggy.txt
503|||||red||||||||||||||||||||||||||||||led_503||||/byrdbellvjk/txt/jtfdc_20200322_1222_jhout2.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20200322_1222_jhout2.txt
504|||||red||||||||||||||||||||||||||||||led_504||||/byrdbellvjk/txt/jtfdc_20200330_1200_jkwiigo_jtf3839_byrd_dr_hilldown.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_20200330_1200_jkwiigo_jtf3839_byrd_dr_hilldown.txt
505|||||red||||||||||||||||||||||||||||||led_505||||/byrdbellvjk/txt/jtfdc_byrd_20180423_1320_trespass_bullies.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_byrd_20180423_1320_trespass_bullies.txt
506|||||red||||||||||||||||||||||||||||||led_506||||/byrdbellvjk/txt/jtfdc_byrd_20180606_1648_threats_bucket_theft.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_byrd_20180606_1648_threats_bucket_theft.txt
507|||||red||||||||||||||||||||||||||||||led_507||||/byrdbellvjk/txt/jtfdc_byrd_20190516_0820.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_byrd_20190516_0820.txt
508|||||red||||||||||||||||||||||||||||||led_508||||/byrdbellvjk/txt/jtfdc_byrd_20190516_0830.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfdc_byrd_20190516_0830.txt
509|||||red||||||||||||||||||||||||||||||led_509||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd.txt
510|||||red||||||||||||||||||||||||||||||led_510||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_02.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_02.txt
511|||||red||||||||||||||||||||||||||||||led_511||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_03.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_03.txt
512|||||red||||||||||||||||||||||||||||||led_512||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_04.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_04.txt
513|||||red||||||||||||||||||||||||||||||led_513||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_05.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_05.txt
514|||||red||||||||||||||||||||||||||||||led_514||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_06.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_06.txt
515|||||red||||||||||||||||||||||||||||||led_515||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_07.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_07.txt
516|||||red||||||||||||||||||||||||||||||led_516||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_07_jkwii.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_07_jkwii.txt
517|||||red||||||||||||||||||||||||||||||led_517||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_08.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_08.txt
518|||||red||||||||||||||||||||||||||||||led_518||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_10.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_10.txt
519|||||red||||||||||||||||||||||||||||||led_519||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_11.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_11.txt
520|||||red||||||||||||||||||||||||||||||led_520||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_dolley_1.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_dolley_1.txt
521|||||red||||||||||||||||||||||||||||||led_521||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_dolley_2.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_dolley_2.txt
522|||||red||||||||||||||||||||||||||||||led_522||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_dolley_3.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/jtfinc_20200102_jtfinc_dolley_3.txt
523|||||red||||||||||||||||||||||||||||||led_523||||/byrdbellvjk/txt/library_of_congress.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/library_of_congress.txt
524|||||red||||||||||||||||||||||||||||||led_524||||/byrdbellvjk/txt/mp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/mp4.txt
525|||||red||||||||||||||||||||||||||||||led_525||||/byrdbellvjk/txt/pagelist.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/pagelist.txt
526|||||red||||||||||||||||||||||||||||||led_526||||/byrdbellvjk/txt/pagelist_byrdbell.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/pagelist_byrdbell.txt
527|||||red||||||||||||||||||||||||||||||led_527||||/byrdbellvjk/txt/pagelist_kb_jtfdcr_vid.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/pagelist_kb_jtfdcr_vid.txt
528|||||red||||||||||||||||||||||||||||||led_528||||/byrdbellvjk/txt/pagelist_mp3.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/pagelist_mp3.txt
529|||||red||||||||||||||||||||||||||||||led_529||||/byrdbellvjk/txt/pcalls.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/pcalls.txt
530|||||red||||||||||||||||||||||||||||||led_530||||/byrdbellvjk/txt/policereport.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/policereport.txt
531|||||red||||||||||||||||||||||||||||||led_531||||/byrdbellvjk/txt/report2.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/report2.txt
532|||||red||||||||||||||||||||||||||||||led_532||||/byrdbellvjk/txt/sel_files.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/sel_files.txt
533|||||red||||||||||||||||||||||||||||||led_533||||/byrdbellvjk/txt/skbyrd_protect_20190516.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/skbyrd_protect_20190516.txt
534|||||red||||||||||||||||||||||||||||||led_534||||/byrdbellvjk/txt/snap_1.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/snap_1.txt
535|||||red||||||||||||||||||||||||||||||led_535||||/byrdbellvjk/txt/text_testimon.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/text_testimon.txt
536|||||red||||||||||||||||||||||||||||||led_536||||/byrdbellvjk/txt/textsrkc_calp2,txt.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/textsrkc_calp2,txt.txt
537|||||red||||||||||||||||||||||||||||||led_537||||/byrdbellvjk/txt/textsrkc_calp3,txt.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/textsrkc_calp3,txt.txt
538|||||red||||||||||||||||||||||||||||||led_538||||/byrdbellvjk/txt/textxodes2.rxr.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/textxodes2.rxr.txt
539|||||red||||||||||||||||||||||||||||||led_539||||/byrdbellvjk/txt/tn_mp4.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/tn_mp4.txt
540|||||red||||||||||||||||||||||||||||||led_540||||/byrdbellvjk/txt/who2jail.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/who2jail.txt
541|||||red||||||||||||||||||||||||||||||led_541||||/byrdbellvjk/txt/who2jail_raw.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/txt/who2jail_raw.txt
542|||||red||||||||||||||||||||||||||||||led_542||||/byrdbellvjk/vi.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/vi.txt
543|||||red||||||||||||||||||||||||||||||led_543||||/byrdbellvjk/vi1.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/vi1.txt
544|||||red||||||||||||||||||||||||||||||led_544||||/byrdbellvjk/vi2.txt|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/byrdbellvjk/vi2.txt
545|||||red||||||||||||||||||||||||||||||led_545||||/fb/jtfdc/pages/1.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/fb/jtfdc/pages/1.jpg
546|||||red||||||||||||||||||||||||||||||led_546||||/fb/jtfdcr/pages/1.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/fb/jtfdcr/pages/1.jpg
547|||||red||||||||||||||||||||||||||||||led_547||||/fb/jtfinc/pages/1.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/fb/jtfinc/pages/1.jpg
548|||||red||||||||||||||||||||||||||||||led_548||||/fb/konet/pages/1.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/fb/konet/pages/1.jpg
549|||||red||||||||||||||||||||||||||||||led_549||||/fb/iperms/pages/1.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/fb/iperms/pages/1.jpg
550|||||red||||||||||||||||||||||||||||||led_550||||/fb/kitiworks/pages/1.jpg|||||||||||||||||/leds/imgs/hal/hals_red.gif|||||||||||||||||||||||||||/fb/kitiworks/pages/1.jpg
`;

		alert( "<h1>BUGS_600 kolists_leds="+kolists['leds']+"<h1>\n");
		</script id=script_ko_end>



	<script id=script_ddtexttip>
// <!--

/*
Textual Tooltip Script- 
(c) Dynamic Drive (www.dynamicdrive.com)
For full source code, installation instructions,
100's more DHTML scripts, and Terms Of
Use, visit dynamicdrive.com
*/
//change the array below to the text associated with your links Expand or contract the array, depending on how many links you have

var content_kogrid=new Array();
var kogrid_url=new Array();
var kogrid_src=new Array();
var kogrid_tn=new Array();
kogrid_url[0]=''; kogrid_src[0]=''; kogrid_tn[0]='';
kogrid_url[1]=''; kogrid_src[1]=''; kogrid_tn[1]='';
kogrid_url[2]=''; kogrid_src[2]=''; kogrid_tn[2]='';
kogrid_url[3]=''; kogrid_src[3]=''; kogrid_tn[3]='';
kogrid_url[4]=''; kogrid_src[4]=''; kogrid_tn[4]='';

content_kogrid[0]='<img src='+kogrid_url[0]+;' height=200>';
content_kogrid[1]='<img src='+kogrid_url[1]+;' height=200>';
content_kogrid[2]='<img src='+kogrid_url[2]+;' height=200>';
content_kogrid[3]='<img src='+kogrid_url[3]+;' height=200>';
content_kogrid[4]='<img src='+kogrid_url[3]+;' height=200>';

var content=new Array();
content[0]='<br><big><b>Menus and navigation systems</b></big><br>Click here for DHTML scripts that help enhance your site\'s navigability, such as collapsible menus, sliding menu bars etc.'


alert( "BUGS_063 content0=".content[0]."<br>\n" );

content[1]='<br><big><b>Special document effects</b></big><br>With the advent of DHTML, webpages are one step closer to its cousin, TV, in terms of special effects...'
content[2]='<br><big><b>Scrollers</b></big><br>Up until now, adding a scroller or tickertape to your website usually meant using a slow Java applet. Not anymore. Click here for DHTML scrollers that accomplish the same task with minimal download time.'
content[3]='<br><big><b>Image effects</b></big><br>Add lightweight effects to your existing images using these scripts. Make them fly, light up, turn static, all without paying the cost of slow downloading time.'
content[4]='<br><big><b>Links and buttons</b></big><br>Add tooltips to your text links, rollover effects to your form buttons, keyboard features to your document, and more.'
content[5]='<br><big><b>Dynamic clocks and dates</b></big><br>Time is never static, so why should your time script be? Enter for DHTML scripts that actually understand this simple truth.'
content[6]='<br><big><b>Text animations</b></big><br>Text have been silent for too long- DHTML promises to free them, with flying text, typing text, dragable text, and more.'
content[7]='<br><big><b>Browser window</b></big><br>Click here scripts related to the browser window and frames.'
content[8]='<br><big><b>Other</b></big><br>All scripts that don\'t comfortably fit in any of the above categories go here...'
content[9]='<br><big><b>Other</b></big><br>test_01...<hr color=white><img id=img_item_9 title="          item_9" src=/fb/pages/1.jpg height=400>'

content[10]='<br><big><b>Other</b></big><br>test_10...<hr color=white><img id=img_item_10 title="          item_10" src=/fb/jtfdcr/pages/10.jpg height=400>'
content[11]='<br><big><b>Other</b></big><br>test_11... <hr color=white><img id=img_item_11 title="          item_11" src=/fb/jtfdcr/pages/11.jpg height=400>'


		function changetext(whichcontent) {
			document.getElementById("div_descriptions").innerHTML=whichcontent
			}

		</script id=script_ko_end>



	<script id=script_ddtexttip>
// <!--

/*
Textual Tooltip Script- 
(c) Dynamic Drive (www.dynamicdrive.com)
For full source code, installation instructions,
100's more DHTML scripts, and Terms Of
Use, visit dynamicdrive.com
*/


var content=new Array()
//change the array below to the text associated with your links Expand or contract the array, depending on how many links you have
content[0]='<br><big><b>Menus and navigation systems</b></big><br>Click here for DHTML scripts that help enhance your site\'s navigability, such as collapsible menus, sliding menu bars etc.'
content[1]='<br><big><b>Special document effects</b></big><br>With the advent of DHTML, webpages are one step closer to its cousin, TV, in terms of special effects...'
content[2]='<br><big><b>Scrollers</b></big><br>Up until now, adding a scroller or tickertape to your website usually meant using a slow Java applet. Not anymore. Click here for DHTML scrollers that accomplish the same task with minimal download time.'
content[3]='<br><big><b>Image effects</b></big><br>Add lightweight effects to your existing images using these scripts. Make them fly, light up, turn static, all without paying the cost of slow downloading time.'
content[4]='<br><big><b>Links and buttons</b></big><br>Add tooltips to your text links, rollover effects to your form buttons, keyboard features to your document, and more.'
content[5]='<br><big><b>Dynamic clocks and dates</b></big><br>Time is never static, so why should your time script be? Enter for DHTML scripts that actually understand this simple truth.'
content[6]='<br><big><b>Text animations</b></big><br>Text have been silent for too long- DHTML promises to free them, with flying text, typing text, dragable text, and more.'
content[7]='<br><big><b>Browser window</b></big><br>Click here scripts related to the browser window and frames.'
content[8]='<br><big><b>Other</b></big><br>All scripts that don\'t comfortably fit in any of the above categories go here...'
content[9]='<br><big><b>Other</b></big><br>test_01...<hr color=white><img id=img_item_9 title="          item_9" src=/fb/pages/1.jpg height=400>'

content[0]='<br><big><b>Other</b></big><br>test_0...<hr color=white><img id=img_item_0 title="          item_0" src=/fb/jtfdcr/pages/1.jpg height=400>'
content[1]='<br><big><b>Other</b></big><br>test_01...<hr color=white><img id=img_item_1 title="          item_1" src=/fb/jtfdcr/pages/1.jpg height=400>'
content[2]='<br><big><b>Other</b></big><br>test_2...<hr color=white><img id=img_item_2 title="          item_2" src=/fb/jtfdcr/pages/2.jpg height=400>'
content[3]='<br><big><b>Other</b></big><br>test_03...<hr color=white><img id=img_item_3 title="          item_3" src=/fb/jtfdcr/pages/3.jpg height=400>'
content[4]='<br><big><b>Other</b></big><br>test_04...<hr color=white><img id=img_item_4 title="          item_4" src=/fb/jtfdcr/pages/4.jpg height=400>'
content[5]='<br><big><b>Other</b></big><br>test_5...<hr color=white><img id=img_item_5 title="          item_5" src=/fb/jtfdcr/pages/5.jpg height=400>'
content[6]='<br><big><b>Other</b></big><br>test_6...<hr color=white><img id=img_item_6 title="          item_6" src=/fb/jtfdcr/pages/6.jpg height=400>'
content[7]='<br><big><b>Other</b></big><br>test_7...<hr color=white><img id=img_item_7 title="          item_7" src=/fb/jtfdcr/pages/7.jpg height=400>'
content[8]='<br><big><b>Other</b></big><br>test_8...<hr color=white><img id=img_item_8 title="          item_8" src=/fb/jtfdcr/pages/8.jpg height=400>'
content[9]='<br><big><b>Other</b></big><br>test_9...<hr color=white><img id=img_item_9 title="          item_9" src=/fb/jtfdcr/pages/9.jpg height=400>'
content[10]='<br><big><b>Other</b></big><br>test_10...<hr color=white><img id=img_item_10 title="          item_10" src=/fb/jtfdcr/pages/10.jpg height=400>'
content[11]='<br><big><b>Other</b></big><br>test_03... <hr color=white><img id=img_item_11 title="          item_11" src=/fb/jtfdcr/pages/11.jpg height=400>'
content[12]='<hr color=black><h3>item_led_12</h3>\n<img src=/fb/jtfdcr/pages/12.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[13]='<hr color=black><h3>item_led_13</h3>\n<img src=/fb/jtfdcr/pages/13.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[14]='<hr color=black><h3>item_led_14</h3>\n<img src=/fb/jtfdcr/pages/14.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[15]='<hr color=black><h3>item_led_15</h3>\n<img src=/fb/jtfdcr/pages/15.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[16]='<hr color=black><h3>item_led_16</h3>\n<img src=/fb/jtfdcr/pages/16.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[17]='<hr color=black><h3>item_led_17</h3>\n<img src=/fb/jtfdcr/pages/17.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[18]='<hr color=black><h3>item_led_18</h3>\n<img src=/fb/jtfdcr/pages/18.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[19]='<hr color=black><h3>item_led_19</h3>\n<img src=/fb/jtfdcr/pages/19.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[20]='<hr color=black><h3>item_led_20</h3>\n<img src=/fb/jtfdcr/pages/20.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[21]='<hr color=black><h3>item_led_21</h3>\n<img src=/fb/jtfdcr/pages/21.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[22]='<hr color=black><h3>item_led_22</h3>\n<img src=/fb/jtfdcr/pages/22.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[23]='<hr color=black><h3>item_led_23</h3>\n<img src=/fb/jtfdcr/pages/23.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[12]='<hr color=black><h3>item_led_12</h3>\n<img src=/fb/jtfdcr/pages/12.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[12]='<hr color=black><h3>item_led_12</h3>\n<img src=/fb/jtfdcr/pages/12.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[12]='<hr color=black><h3>item_led_12</h3>\n<img src=/fb/jtfdcr/pages/12.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[12]='<hr color=black><h3>item_led_12</h3>\n<img src=/fb/jtfdcr/pages/12.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[12]='<hr color=black><h3>item_led_12</h3>\n<img src=/fb/jtfdcr/pages/12.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[12]='<hr color=black><h3>item_led_12</h3>\n<img src=/fb/jtfdcr/pages/12.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[12]='<hr color=black><h3>item_led_12</h3>\n<img src=/fb/jtfdcr/pages/12.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[12]='<hr color=black><h3>item_led_12</h3>\n<img src=/fb/jtfdcr/pages/12.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[12]='<hr color=black><h3>item_led_12</h3>\n<img src=/fb/jtfdcr/pages/12.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[12]='<hr color=black><h3>item_led_12</h3>\n<img src=/fb/jtfdcr/pages/12.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'
content[12]='<hr color=black><h3>item_led_12</h3>\n<img src=/fb/jtfdcr/pages/12.jpg height=400>\nid | name | loc | grp | dttm \n<hr color=black>\n'

		function changetext(whichcontent) {
			document.getElementById("div_descriptions").innerHTML=whichcontent
			}

//-->
		</script id=script_ddtexttip_end>
	<style id=style_ko>

	<style id=style_montserrat >
/* latin */
		@font-face {
			.montserrat { font-family: 'Montserrat', sans-serif; }
			font-family: 'Montserrat';
			font-style: normal;
			font-weight: 400;
			font-display: swap;
			src: url(data:font/ttf/base64,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) format('truetype');

		}
		</style>

<style id=style_fonts>
	@font-face {
		font-family: "PAPYRUS";
		src: url('/fonts/PAPYRUS.TTF') format('ttf');
		}
	@font-face {
		font-family: "BODINI_R";
		src: url('/fonts/BOD_R.TTF') format('ttf');
		}

	</style>



	<style id="style_yokkmokk" >
		@font-face {
			font-family: yokkmokkOT;
			src: url("data:font/ttf;base64,AAEAAAAPADAAAwDAT1MvMlFdfQAAANO0AAAAVlBDTFRK3sYZAADUDAAAADZjbWFwIOwyJQAAwOwAAAhAY3Z0IFvZXQMAAAP8AAAAFGZwZ22DM8JPAAAD6AAAABRnbHlm/L/+SwAABDgAALYiaGRteC+LmY4AAMksAAAKiGhlYWTSA25fAADURAAAADZoaGVhBkUDJgAA1HwAAAAkaG10eAE0DCEAALzwAAACkGxvY2EAN7WQAAC6XAAAApRtYXhwASIBmQAA1KAAAAAgbmFtZT4kOPEAAAD8AAAC63Bvc3Qg7x7eAAC/gAAAAWpwcmVwCo0UlQAABBAAAAAoAAAAGAEmAAAAAAAAAAAAXAAuAAAAAAAAAAEAEACSAAAAAAAAAAIADgCpAAAAAAAAAAMASADzAAAAAAAAAAQAEAC/AAAAAAAAAAUATAFhAAAAAAAAAAYAEAG1AAAAAAAAAAcAAAHFAAEAAAAAAAAALgAAAAEAAAAAAAEACACKAAEAAAAAAAIABwCiAAEAAAAAAAMAJADPAAEAAAAAAAQACAC3AAEAAAAAAAUAJgE7AAEAAAAAAAYACAGtAAEAAAAAAAcAAAHFAAMAAQQJAAAAXAAuAAMAAQQJAAEAEACSAAMAAQQJAAIADgCpAAMAAQQJAAMASADzAAMAAQQJAAQAEAC/AAMAAQQJAAUATAFhAAMAAQQJAAYAEAG1AAMAAQQJAAcAAAHFQ29wci4xOTkzIEVsa2UgU3dpbGx1cywgRm9udFNob3AgSW50ZXJuYXRpb25hbABDAG8AcAByAC4AMQA5ADkAMwAgAEUAbABrAGUAIABTAHcAaQBsAGwAdQBzACwAIABGAG8AbgB0AFMAaABvAHAAIABJAG4AdABlAHIAbgBhAHQAaQBvAG4AYQBsWW9ra21va2sAWQBvAGsAawBtAG8AawBrUmVndWxhcgBSAGUAZwB1AGwAYQByWW9ra21va2sAWQBvAGsAawBtAG8AawBrTWFjcm9tZWRpYSBGb250b2dyYXBoZXIgNC4xIFlva2ttb2trAE0AYQBjAHIAbwBtAGUAZABpAGEAIABGAG8AbgB0AG8AZwByAGEAcABoAGUAcgAgADQALgAxACAAWQBvAGsAawBtAG8AawBrTWFjcm9tZWRpYSBGb250b2dyYXBoZXIgNC4xIDIwMDEtMTAtMDgATQBhAGMAcgBvAG0AZQBkAGkAYQAgAEYAbwBuAHQAbwBnAHIAYQBwAGgAZQByACAANAAuADEAIAAyADAAMAAxAC0AMQAwAC0AMAA4WW9ra21va2sAWQBvAGsAawBtAG8AawBrAEABACx2RSCwAyVFI2FoGCNoYEQt//wA7gFRAYcAKAAoWmJaYgACAARACQMDAgIBAQAAAY24Af+FRWhERWhERWhERWhEsQQERWhEsQUFRWhEAAIAPwAAAbYDIQADAAcAVkAgAQgIQAkCBwQEAQAGBQQDAgUEBQAHBgUBAgEDAAABAEZ2LzcYAD88LzwQ/TwQ/TwBLzz9PC88/TwAMTABSWi5AAAACEloYbBAUlg4ETe5AAj/wDhZMxEhESUzESM/AXf+x/r6AyH83z8CpAAHABj/9AEsAh0ACQATAB0AKQA1AEEASgB8QDUBS0tATB4WDAJGPAkFBAAPDgQTCkIENioEHh0UBBkYMAQkJwUtSAU5PwVEMwUhGxEHIQEkRnYvNxgALy88PBD9L/0v/S/9AS/9Lzz9PC/9L/0vPP08Li4uLi4uAC4uLjEwAUlouQAkAEtJaGGwQFJYOBE3uQBL/8A4WRMUIyI9ATQzMhUHFCMiPQE0MzIVBxQjIj0BNDMyFRMUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUBiMiJjU0NjMyFgc0IyIVFDMyNvsUFBQURRMUFBNHFBQUFL1QOjpQUDo6UCg5KSk5OSkpORwpHR0oKB0dKSgeHR0MEgF/ExOKFBTaExPaFBSKExOKFBT+dTpQUDo6UFA6KTo6KSk5OSkdKCgdHSgoHR0dHhIAAwAXATwAyQGzAAkAEwAdAFRAHgEeHkAfAAUEBAkAEwoEDw4dFAQZGBsRBxYMAgEYRnYvNxgALzw8Lzw8AS88/TwvPP08Lzz9PAAxMAFJaLkAGAAeSWhhsEBSWDgRN7kAHv/AOFkTFCMiPQE0MzIVBxQjIj0BNDMyFQcUIyI9ATQzMhXJExQUE0UUFBQURRQUFBQBTxMTUBQUUBMTUBQUUBMTTxQUAAgADP/iAW8BqAALABUAHwAxAEMATQBXAGMAkkBAAWRkQGUAVUsyLyMYDgNeU1JNSUhEQjotJRUMACAEBhEQBCkGGxoEHxY1BD5XTgRYPmEFW1BGOAMdEwMJAwFeRnYvNxgAPz88Py88L/0BLzz9PBD9Lzz9PC88/TwQ/S4uLi4uLi4uLi4uLi4uAC4uLi4uLi4uMTABSWi5AF4AZEloYbBAUlg4ETe5AGT/wDhZARQGIyImNTQ2MzIWBxQjIj0BNDMyFQcUIyI9ATQzMhUTFAYjIjU0MjY1NCYiNTQzMhYnIiY1NDYzMhUUIgYVFBYyFRQXFCMiPQE0MzIVBxQjIj0BNDMyFQcUBiMiJjU0NjMyFgFvFxARFxgQEBdPFBQUFEUUFBQUbTQlEycdHScTJTS8JTQ0JRQoHR0oKBQUFBRFFBQUFCgYDxEXFxEQFwFZERcXEREXGEsTE3YUFHYTE3YUFP7iJTQUEx4UFB0UFDQgNCUlNBQUHRQUHRQUxRQUdhQUdhQUdhQUOxAXFhEQFxcAAAoACv/fAdcBrAANABkAJwAzAEEATwBbAGcAbwB3AJJAQwF4eEB5KEw3HQNOQDkmHwVWBEcUXAQMKHQEcA4EUGgEbC4EYmUFK1MFF2oFbjEFX3YFchEFWQoXRStuAz4BJAIBFEZ2LzcYAD8/Py88Lzwv/S/9L/0Q/RD9EP0BL/0v/S/9L/0vPP0vPP0uLi4uLi4ALi4uLjEwAUlouQAUAHhJaGGwQFJYOBE3uQB4/8A4WQEHBiMiNTQ/ATYzMhUUBRQGIyImNTQ2MzIWFwcGIyI1ND8BNjMyFRQXFAYjIiY1NDYzMhYnBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUJzQmIyIGFRQWMzI2ATQmIyIGFRQWMzI2ARQjIjU0MzIBFCMiNTQzMgHQfgYIFAZ+BggU/uY0JSU0NCUlNFqDBggUBoIHCBS7NCYlNDQlJTVyfgYIFQZ/BggVwn0GCBQGfQYIFBwdFBQeHhQUHQEbHhQUHR0UFB7+yBQUFBQBGhQUFBQBiX4GFAgGfgYUCD0lNDQlJjQ1VYMGFQgGggcVCPAlNDQlJTQ0bX4GFAgGfwYUCG59BhQIBn0GFAjpFB4eFBQdHf76FB0dFBQeHgEvFBQU/tEUFBQAAAEAFAAAAhYBRgBJAKFAUQFKSkBLODs6NjUvLiopD0Y/OCwlHg0wLykoIiEbBxoESUM8OzU0AAdCFgQGGhkFAhMFCURDIQMgBUlIHAMbQkEjAyIFPTwoAycyAgMCAAEGRnYvNxgAPzw/Lxc8/Rc8Lxc8/Rc8L/0Q/TwBL/0vFzz9FzwuLi4uLi4uAC4uLi4uLi4uLjEwAUlouQAGAEpJaGGwQFJYOBE3uQBK/8A4WSUUIyEiJjU0NjMyFxYVFCMiJyYjIgYVFBY7ATUhIjU0MyE1ISI1NDMhNSMiNTQ7ATU0MzIdATMyFRQrARUzMhUUKwEVMzIVFCsBAccU/vc+WFg+OCoIFAcGIictQUEt9f7VExMBK/7VExMBKzwTEzwUFDsUFDs7FBQ8PBQUOxQUVj4+WSUHCRMFG0EuLUI0FBQdFBQdFBQnFBQnFBQdFBQdFBQAAwAJACUBIQFmABQAJgA7AF9AJAE8PEA9LDUqEAUCATozMCwlIB0aDgsHCQQTAgADASIYAwEARnYvNxgAPy8BLxc8/S4uLi4uLi4uLi4uAC4uLi4uLjEwAUlouQAAADxJaGGwQFJYOBE3uQA8/8A4WTc1Mzc2MzIVFAcGBxcWFRQjIi8BJj8BNjMyFRQPARcWFRQjIi8BJj8BNjMyFRQHBgcXFhUUIyIvASY1NBIBPAcJFAQZGzQFFgkGPQlhawYJFARjYwQUCQZtCmM8BgkVBBkbNAQVCQY6Bs8CTgkUBgYhIkIGBhQITgsQiggUBgaBgQYGEwiNDglOCBQGBSEiQgUHFAhLBwgGAAADABEAJQEpAWYAEgAkADcAVkAeATg4QDklMyggFjYxLSolIx4bGBMNCgcCBQ8DARhGdi83GAA/LwEuLi4uLi4uLi4uLi4uLgAuLi4uMTABSWi5ABgAOEloYbBAUlg4ETe5ADj/wDhZNxYPAQYjIjU0PwEnJjU0MzIXFg8BBiMiNTQ/AScmNTQzMh8BFhcHBiMiNTQ/ASYnJjU0MzIfARbJCwptBgoUBGRkBBUJBm1aOwYJFQQzMwQUCgY7C6Q8BgkVBDMNJgQVCQY8CtELDI0IEwcFgYEFBhUIjBlOCBUGBUJDBQcTCE0LD00IFAYGQhIwBQcUCE4NAAUAFAABAdoBjAAJABcAIQAvADkAgkA8ATo6QDsWNycWOTAvAyIENTQrAyoREAUDBAQMCwkDAB0cBCEYAgUTJSQUAxMFCwoyGg4qKQEtHwcDASdGdi83GAA/PDw/PC88PC88/Rc8EP0BLzz9PC8XPP0XPC8XPP0XPC4uAC4xMAFJaLkAJwA6SWhhsEBSWDgRN7kAOv/AOFkBFCMiPQE0MzIVFyMVFCMiPQE0OwEyFRQHFCMiNRE0MzIVBxQrASI1NDsBNTQzMhURFCMiPQE0MzIVAVAUFBQUdnYUFBSKFM8UFBQURhOLExN3FBMTFBQTAQETE3cUFNqJFBSdFBQUihMTAWQUFJ4UFBSKFBT+nBMTdxQUAAIACv85ALwAKAAJABMAR0AXARQUQBUIEQgDDw4EEwoGBQwBAAABA0Z2LzcYAD88Ly88AS88/TwuLgAuMTABSWi5AAMAFEloYbBAUlg4ETe5ABT/wDhZMyMiNTQ7ATIVFAcUIyI9ATQzMhWoixMTixRFFBQUFBQUFBSzFBSKFBQAAwARAGgBdQEZAAkAEwAdAFhAIAEeHkAfCBwXEg0IAxoZBRQBAAUFEA8FCwoGBRUUAQ1Gdi83GAAvPC88Lzz9PBD9PBD9PAEuLi4uLi4AMTABSWi5AA0AHkloYbBAUlg4ETe5AB7/wDhZJSMiNTQ7ATIVFAchIjU0MyEyFRQHIyI1NDsBMhUUAWHFExPFFBT+xBQUATwUi8UUFMUU8RQUFBREFBQUFEUUExMUAAMAFv/zAMkApgALABcAHwBPQB0BICBAIQAYBBwMBAASBAYeBRoPBQkVBQMJAwEGRnYvNxgALy8Q/RD9L/0BL/0v/S/9ADEwAUlouQAGACBJaGGwQFJYOBE3uQAg/8A4WTcUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUIyI1NDMyyTUlJTQ0JSY0KB0VFB0dFBUdHhQTExRMJTQ0JSU1NCYVHR0VFB0dFBMTFAAEABX/4AHhAasADQAbACkANwBPQBsBODhAOQw0HxEDNi8oIRoTDAUKLSYBGAIBL0Z2LzcYAD8/Ly8BLi4uLi4uLi4ALi4uLjEwAUlouQAvADhJaGGwQFJYOBE3uQA4/8A4WQEHBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQXBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUAdt+BggVBn4GCBXBggYIFQaDBwcUSn8GCBUHfgYIFcF9BggVBn0GCBUBiX4GFAgGfgYUCG2DBhUIBoIHFQhefgYTCAd/BhUIbX0GFAgGfQYUCAAABQAd//MBvwGXAAsAFwAjAC8ANwBqQC4BODhAOQAMBAASBAYkBBgqBB4wBDQPBQknBSEVBQMtBRsyBTYDNgEhAgkDAQZGdi83GAA/Pz8vEP0v/RD9EP0Q/QEv/S/9L/0v/S/9ADEwAUlouQAGADhJaGGwQFJYOBE3uQA4/8A4WSUUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUIyI1NDMyAb96V1d6eldXeidkRkZkZEZGZC5INDRJSTQ0SCgxIyMyMiMjMTYeHh4exVd7e1dXe3tXRmRjR0ZkZEY0SUk0NElJNCMyMiMjMjIjHR0dAAMAGwABAM0BjAAJABMAHQBXQCABHh5AHwAMAhMKBA8OGAUEBAkAHRQEGRgWGxEHAwEORnYvNxgAPzw8LwEvPP083Tz9PBDdPP08AC4uMTABSWi5AA4AHkloYbBAUlg4ETe5AB7/wDhZNxQjIj0BNDMyFQcUIyI9ATQzMhUTFCMiNRE0MzIVzRQUFBSKFBQUFEUUFBQU7RMTixQUixMTixQU/pwTEwFkFBQAAwARAAABcwG0ABcAKQA3AGhAKQE4OEA5KDQgDgI2LyglIhsFBAQXAAwLBBEQCAUUJiUFGBQtGRgAAS9Gdi83GAA/PDwvEP08EP0BLzz9PC88/TwuLi4uLi4ALi4uLjEwAUlouQAvADhJaGGwQFJYOBE3uQA4/8A4WQEUIyI9ATQmIyIGHQEUIyI9ATQ2MzIWFRMjIjU0PwE2MzIVFA8BMzIVFAsBBiMiNTQ3EzYzMhUUAUcUFDkpKDoUFFE5OVEY2RcGWQYKFgREsxR+vgYKFgS/BgoVAR8UFAopOjopChQUCjlSUjn+1xAHCIEJFAYFYhQUAR7+6wkUBgUBFQkUBgAAAwAZ//QBMAGLABEAHwA5AGJAJgE6OkA7EDYoHBUJAzQXEAsIBQ0JBCYwBCAeLQUjIw4NAwgCASZGdi83GAA/PzwvEP0BLzz9L/08Li4uLi4uAC4uLi4uLjEwAUlouQAmADpJaGGwQFJYOBE3uQA6/8A4WQEHBiMiNTQ/ASMiNTQ7ATIVFA8BBiMiNTQ/ATYzMhUUFRQGIyImNTQzMhUUFjMyNjU0JyY1NDMyFxYBJI4GBRQJWZkTE9kXDK0GBRQJrQUGFFA6OlAUEzopKTkPBBUKBhYBZmEEFgoGPBQUEgthdQQVCwZ1BBYKlTpQUDoUFCk5OigfFgYGFAojAAAFACUAAQFEAdsADQAXACEAKwA1AHtAMwE2NkA3DDMpHyEYDAkIBAMdHAQKADUsBDEwJyYEKyIXDgQTEgoJBRABABUuJBoGAgESRnYvNxgAPy88PC8vPDz9PAEvPP08Lzz9PC88/TwvPP08Li4uLi4uLgAuLi4xMAFJaLkAEgA2SWhhsEBSWDgRN7kANv/AOFklIyI9ATQzMh0BMzIVFCcUIyI1ETQzMhUTFCMiPQE0MzIVBxQjIj0BNDMyFQcUIyI9ATQzMhUBMLEUFBOeFPcUFBQU4xQUFBRFFBQUFEUUFBQUnhSKFBR2FBQUExMBFRQU/k0TE2MUFGMTE2MUFGMTE2MUFAAAAwAn//QBPQGLAA0AFwAyAGdAKQEzM0A0DC4gFRAELCgEGAwXDgQTEgIBBB4HBgEABQklBRsbCgkDAQZGdi83GAA/PC8Q/RD9PAEvPDz9PC88/TwvPP0uAC4uLi4uMTABSWi5AAYAM0loYbBAUlg4ETe5ADP/wDhZASMVFCMiPQE0OwEyFRQHFCMiPQE0MzIVFxQGIyImJyYzMhceATMyNjU0JyY1NDMyFx4BASnVFBQU6RSoFBQUFKhROjBKCwYZDwQJNCIpOkIOFAQEKTMBY3gTE4wUFBTRFBSUFBSoOlA7LRkPICo6KEYXBQ0WAhBHAAAFABf/9AG4AdsADQAbACkANQBBAFtAIgFCQkBDDB8RAyghGhMMBTYEKjwEMDkFMz8FLSYYCi0BMEZ2LzcYAC8vPDwQ/S/9AS/9L/0uLi4uLi4ALi4uMTABSWi5ADAAQkloYbBAUlg4ETe5AEL/wDhZAQcGIyI1ND8BNjMyFRQPAQYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUExQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2AbN9BgkWBX0GCRZpfQYJFQR9BgkVaXwGChUFfAYJFT5ROTpRUTo5USg5KSk6OikpOQG5nggVBwaeCBUHBJ8IFAYGnwgUBgafCBQGBp8IFAb+vTpQUDo6UFA6KTo6KSk5OgADABAAAQEuAYwACQATACEAYEAmASIiQCMAFgIcDw4EEwoFBAQJACEUBBkYGhkFBwwfHhEDBwMBHEZ2LzcYAD8XPC8Q/TwBLzz9PC88/TwvPP08LgAuLjEwAUlouQAcACJJaGGwQFJYOBE3uQAi/8A4WSUUIyI9ATQzMhUDFCMiNRE0MzIVBxQjIj0BIyI1NDsBMhUBLhQUFBRGExQUE0UUFFgTE2wU7RMTixQU/pwTEwFkFBSLExN3FBQUAAQAIv/zAMkBlgALABYAIQA9AGxALAE+PkA/JDQwJiIZFQAEPCgkHw8GBDYyLhwFOQ0MBSEXEgUDCQUrKzkDAS5Gdi83GAA/LxD9L/0vPP08EP0BLzw8/Tw8Lzw8/Tw8Li4uLgAxMAFJaLkALgA+SWhhsEBSWDgRN7kAPv/AOFk3NCYjIgYVFBYzMjYnIwYVFBYzMjY1NCc2NTQmIyIGFRQfARYVFAcWFRQGIyImNTQ3JjU0NyY1NDYzMhYVFKEaERIaGhIRGiUNJRoSERolJRoREholPB4dHTEiIjIdHR4eMSMiMUcSGRkSEhoauwckEhkZEiQvBSYRGhoRJgUUGyQlGholIjIyIicYGCcmGRgnIjExIiYABQALAAABqwHnAAsAGQAnADUAQQBkQCgBQkJAQwAyJBY0LSYfGBE8BAY2BAAfBQ85BQkDBT8JPwErHQ8AAS1Gdi83GAA/PDw/LxD9EP0Q/QEv/S/9Li4uLi4uAC4uLjEwAUlouQAtAEJJaGGwQFJYOBE3uQBC/8A4WQEUBiMiJjU0NjMyFg8BBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQPAQYjIjU0PwE2MzIVFDc0JiMiBhUUFjMyNgGrUTo5UVE5OlE2fQYKFAV8BgkWa3wGCRYFfQYKFGh8BwkVBXwHCRXSOikpOjsoKToBXTpRUTo5UVHwnggTBwaeCBQGBp4IFAYGnggTBwadCBMHBp0IEwexKDo6KCg7OwAGACH/9ADUAWsACwAXACMALwA3AD8AbkAvAUBAQEEAJBgEDAA4MAQ0PB4qBAYSMgU2AwUhPgU6GwUJFQUnLQUPDyEBCQMBEkZ2LzcYAD8/LxD9L/0Q/S/9EP0v/QEvPP08Lzz9PC88/TwAMTABSWi5ABIAQEloYbBAUlg4ETe5AED/wDhZExQGIyImNTQ2MzIWFRQGIyImNTQ2MzIWJzQmIyIGFRQWMzI2FTQmIyIGFRQWMzI2JxQjIjU0MzIVFCMiNTQzMtQ0JSU0NCUlNDQlJTU1JSU0KB0UFB0dFBQdHRQUHh4UFB0dFBMTFBQUFBQBEiUzMyUlNDTrJDQ0JCY0NaEUHR0UFB0dshUdHRUTHRzaExMU2hMTFAAFABf/OQDJAO4ACwAVAB8AKwAzAGpALAE0NEA1AB0gBBQALB8WBDAbGiYEDwYjBQkuBTIDBSkSEQUMGA0MAAkBAQZGdi83GAA/PzwvEP08L/0v/RD9AS88/S88PP08PC88/QAuMTABSWi5AAYANEloYbBAUlg4ETe5ADT/wDhZNxQGIyImNTQ2MzIWByMiNTQ7ATIVFAcUIyI9ATQzMhU3NCYjIgYVFBYzMjYnFCMiNTQzMsk0JSU0NCUlNBSLExOLFEUUFBQUHh4UFB0dFBQeHhQUFBSVJTQ0JSU0NLoUFBQUsxQUjBMTvBQdHRQUHR0UFBQUAAADAAkAJQEhAWYAFAAmADsAX0AkATw8QD0sNSoQBQIBOjMwLCUgHRoOCwcJBBMCAAMBIhgDAQBGdi83GAA/LwEvFzz9Li4uLi4uLi4uLi4ALi4uLi4uMTABSWi5AAAAPEloYbBAUlg4ETe5ADz/wDhZNzUzNzYzMhUUBwYHFxYVFCMiLwEmPwE2MzIVFA8BFxYVFCMiLwEmPwE2MzIVFAcGBxcWFRQjIi8BJjU0EgE8BwkUBBkbNAUWCQY9CWFrBgkUBGNjBBQJBm0KYzwGCRUEGRs0BBUJBjoGzwJOCRQGBiEiQgYGFAhOCxCKCBQGBoGBBgYTCI0OCU4IFAYFISJCBQcUCEsHCAYAAAMAEQBoAXUBGQAJABMAHQBYQCABHh5AHwgcFxINCAMaGQUUAQAFBRAPBQsKBgUVFAENRnYvNxgALzwvPC88/TwQ/TwQ/TwBLi4uLi4uADEwAUlouQANAB5JaGGwQFJYOBE3uQAe/8A4WSUjIjU0OwEyFRQHISI1NDMhMhUUByMiNTQ7ATIVFAFhxRMTxRQU/sQUFAE8FIvFFBTFFPEUFBQURBQUFBRFFBMTFAADABEAJQEpAWYAEgAkADcAVkAeATg4QDklMyggFjYxLSolIx4bGBMNCgcCBQ8DARhGdi83GAA/LwEuLi4uLi4uLi4uLi4uLgAuLi4uMTABSWi5ABgAOEloYbBAUlg4ETe5ADj/wDhZNxYPAQYjIjU0PwEnJjU0MzIXFg8BBiMiNTQ/AScmNTQzMh8BFhcHBiMiNTQ/ASYnJjU0MzIfARbJCwptBgoUBGRkBBUJBm1aOwYJFQQzMwQUCgY7C6Q8BgkVBDMNJgQVCQY8CtELDI0IEwcFgYEFBhUIjBlOCBUGBUJDBQcTCE0LD00IFAYGQhIwBQcUCE4NAAMAKv85ANwCRAALABcAYACEQDkBYWFAYgxOKltaUERDLEc6AARXGwxeIwYEQDMSSgVUW1oFREM9BRg3NgUgJgUwFQUDCQUPVA8BEkZ2LzcYAC8vEP0v/S/9L/08L/0vPP08EP0BLzw8/Tw8Lzw8/Tw8Li4uLi4uAC4uMTABSWi5ABIAYUloYbBAUlg4ETe5AGH/wDhZFzQmIyIGFRQWMzI2NxQGIyImNTQ2MzIWAzIWFRQGBwYjIgYVFBYzMjc2MzIVFAcGIyImNTQ2NzMyNjU0JiMiJjU0NjMxMjY1NCYjIgcGIyI1NDc2MzIWFRQGIzEiBhUUFrQdFBQdHRQUHSg0JSU0NCUlNFklNC8jAwQUHR0UHg4GDBUCGTglNC8iCBQdHRQlNDQlFB0dFBkOBwoVBBkwJTQ0JRQdHW4UHR0UFB0dFCU0NCUlNDQBeTQlIzIDAR0UFB0cDBQFBTI0JSI0Ax0UFB00JiU0HRQUHRQKFAYGJTMlJTQdFBUdAAACABEAAAKyAZsAKwA1AFlAIQE2NkA3AhMQDQoHNC8YAjIxBS0sJiABKSMdAxYEAAEYRnYvNxgAPzw/PDw/PC88/TwBLi4uLgAuLi4uLjEwAUlouQAYADZJaGGwQFJYOBE3uQA2/8A4WSUWFRQjIicDBwYjIi8BBwYjIi8BAwYjIjU0NxM2MzIfATc2MzIfATc2MzIXAyEiNTQzITIVFAKxARUNBWdNBwsLB1FRBwwLB0xnBQ4VAXgGDAwHUFEHDAsHUFAHDA0FE/52ExMBihQaAwQTDgE/ow8PqqoPD6P+wQ4TBAMBcBEPqqoPD6qqDxH+2hQTExQAAAIAJP/FAQMBjAAWADkAbkArATo6QDsDOSonJh0cExIANzUzLSwoJyMfGRcVCQ8EAwwLBQYHBjAvAwEJRnYvNxgAPzwvPBD9PAEv/S4uLi4uLi4uLi4uLi4ALi4uLi4uLi4uMTABSWi5AAkAOkloYbBAUlg4ETe5ADr/wDhZNxcWFRQGKwEiNTQ7ATI2NTQmKwEiNTQzMjU0JisBIjU0MzI1NCYrAREUIyI1ETQ7ATIWFRQHFhUUB3NWOjsqZhQUZhkkIxorExNRHRUfFBQ5Fg87FBQUTyAtGDAjjwkbQik7FBQjGRokFBQxFB0UFCUQFv6wExMBZBQuIBoVGTYgGgADAB//9ANoAZgADQA9AE4AdkAxAU9PQFAUMCwkFkI+JhQKAAUENQxABB1KBAxEGgIFEE0gCAUqMi4qPDgQAzoOAwE1RnYvNxgAPzw/PDwvPDwQ/Tw8EP08PAEv/d39EN39Li4uLi4uAC4uLi4xMAFJaLkANQBPSWhhsEBSWDgRN7kAT//AOFkBJiMiBhUUFjMyNyY1NCU2MzIXFhUUIyInJiMiBhUUFjMyNzYzMhUUBwYjIicGIyInBiMiJjU0NjMyFzYzMhMmNTQ3JiMiBwYjBhUUFjMyAUcoL0ZjY0YvKDsBSDRCXDwGFAgGM0lGY2NGSzEGCBQGQFhBNTg+QDc1QlZ7e1ZCNDdBPxc7OyguOy8BAT5kRi4BWBhkR0ZjGD1UVVgmQgYIFAY2ZEdGYzQHFAgGQSUlJSV7Vlh7Jib+nDtWWDsYJQE0UUZjAAYAHP//AjQBjAATACcAOwBFAE8AWQCEQDwBWlpAWwBXUkM+IhoOBgoEAB4EFDIEKEU8BEE3LQNAT0YES0pZUARVVEpGBQRNOSQDEANIKxgDBAABVEZ2LzcYAD8XPD8XPBD9PAEvPP08Lzz9PC8XPP08L/0v/S/9Li4uLgAuLi4uMTABSWi5AFQAWkloYbBAUlg4ETe5AFr/wDhZJRQHBiMiNTQ3NjU0JyY1NDMyFxYHFAcGIyI1NDc2NTQnJjU0MzIXFgcUBiMiNTQzMjY1NCYjIjU0MzIWBxQjIj0BNDMyFQMUIyI1ETQzMhUDFCMiPQE0MzIVAjQ2BgoUAy8wAxQLBjZQSwYIFAY/QwcVCAZPT3RSExNCXFxCExNTc7MUFBQUTxQUFBRPFBQUFMVkVwoTBgVOWVlPBQYUClNrbVEHFAgGRV5iQwcIFAZRcFJzFBRcQUJcFBRzoRMTnRQU/wATEwFkFBT+/xMTnRQUAAcAIwAAAa4BjAAJABMAHQAnADEAOwBFAJFAQAFGRkBHCEQ/OjUwKyYhHBcSDQgDCwoFDx8eBSMBAAUGBS4tBSkoGhkFFRQ4NwUzMkJBBTw9PAAkIwIQDwMBIUZ2LzcYAD88Pzw/PBD9PC88/TwvPP08Lzz9PC88/TwQ/TwQ/TwBLi4uLi4uLi4uLi4uLi4AMTABSWi5ACEARkloYbBAUlg4ETe5AEb/wDhZJSMiNTQ7ATIVFCcjIjU0OwEyFRQXIyI1NDsBMhUUJyMiNTQ7ATIVFAcjIjU0OwEyFRQHIyI1NDsBMhUUByMiNTQ7ATIVFAGadxMTdxSL7BMT7BRjdxMTdxSL7RMT7RQU7BMT7BQU7RMT7RQU7BMT7BTrFBQUFHkUFBQU6xQUFBSrFBQUFHIUFBQUchQUFBRAFBQUFAAABQAjAAEBrgGMAAkAEwAdACcAMQBzQDEBMjJAMwgvJhwSCAMxKAQtLCENBBcLCgUPFRQFGQEABQYFJCMFHx4qGhkCEA8DARdGdi83GAA/PD88Ly88/TwvPP08EP08EP08AS8XPP08Li4uLi4ALjEwAUlouQAXADJJaGGwQFJYOBE3uQAy/8A4WSUjIjU0OwEyFRQnIyI1NDsBMhUUByMiNTQ7ATIVFAcjIjU0OwEyFRQHFCMiPQE0MzIVAZp3ExN3FIvsExPsFBTtExPtFBTsExPsFOwUFBQU6xQUFBR5FBQUFEAUFBQUchQUFBSeExN5FBQAAAEAF//0AaIBlwA0AHhANAE1NUA2DyIxLiAKAzQHBgMABBAPKQQZCAcFDCYFHAYFBQEANDMFLy4sBRYWHAMNDAEBGUZ2LzcYAD88Py8Q/S88/TwvPP08EP0Q/TwBL/0vPP0XPC4uLi4uAC4xMAFJaLkAGQA1SWhhsEBSWDgRN7kANf/AOFklIyI1NDsBNSMiNTQ7ATIdARQGFQ4BIyImNTQ2MzIXFhUUIyInJiMiBhUUFjMyNyMiNTQ7AQF6sRQUsbEUFMUUAhtjOld6eldIPAcUBwYtPUZjY0ZBMJAUFLGOFBQfFBMUfwIFAjE7eldXey8GCBUFJWRGRmMrFBQABAAg/7MBhAG0ABEAGwAlADcAiEA7ATg4QDkmLSwrKiQaBDcmDQwEEQALCgQGBR8VBDIxAwIFCxMSBRgXIiEFHRw1NAUsKw8ILygMCwIBMUZ2LzcYAD88LzwvPC88/TwvPP08Lzz9PBD9PAEvPP08Lzz9PC88/TwvPP08Li4uLgAxMAFJaLkAMQA4SWhhsEBSWDgRN7kAOP/AOFkBFCsBIj0BNDMyHQEzNTQzMhUXIyI1NDsBMhUUByMiNTQ7ATIVFBcUIyI9ASEVFCMiPQE0MyEyFQE0FJ0UFBR1FBQU7BQU7BQU7BQU7BQoFBT+7BQUFAE8FAE2FBRqFBRWVhQUxRQUFBRIFBQUFMwUFIWFFBSZFBQABQATAAEAsgIWAAsAFwAhAC0AOQBrQC0BOjpAOwAfLiIEDAAhGAQdHDQoBBIGJQUJAwUrMQUVDwU3CRo3ASsDFQIBBkZ2LzcYAD8/Py8vEP0Q/RD9EP0BLzz9PC88/TwvPP08AC4xMAFJaLkABgA6SWhhsEBSWDgRN7kAOv/AOFkTFAYjIiY1NDYzMhYVFAYjIiY1NDYzMhYDFCMiPQE0MzIVEzQmIyIGFRQWMzI2FTQmIyIGFRQWMzI2si4hIS8vISEuLiEhLy8hIS47FBQUFBMXEBEXFxEQFxcQEBgYEBAXAcchLi4hIS4u2iEvLyEhLi7+5RMTexQUATgQFxcQEBcXqRAXFxAQGBgAAAYACf/1AYUCFgALABcALQBBAE0AWQB6QDUBWlpAWwBANioiNCwgTkIELgwAEgYEVEhFBQkDBUtRBRUPBVcmBRs7BTEJMVcBSwMVAgE0RnYvNxgAPz8/Ly8Q/S/9EP0Q/RD9EP0BLzz9PC88PP08Li4uAC4uLi4xMAFJaLkANABaSWhhsEBSWDgRN7kAWv/AOFkBFAYjIiY1NDYzMhYVFAYjIiY1NDYzMhYHDgEjIiYnJjU0MzIXFjMyNzYzMhUUNw4BIyImJyYzMhceATMyNjc2MzIDNCYjIgYVFBYzMjYVNCYjIgYVFBYzMjYBgS4hIS4uISEuLiEhLi4hIS5MDTwmJTwNAhUNBRQ1NRUFDRVJDWlERGcNBRgQAwtSNTZTCwMQGCsYEBAXFxAQGBgQEBcXEBAYAcchLi4hIC8v2iEuLiEhLy+nISoqIQQEEwwyMgwTBAFBVlVBFxAzQkM0EAEjEBcXEBAXF6oQGBcREBcXAAAEACMAAAGtAYwADQAfAC0AOwBgQCUBPDxAPQI5GRELNzApIh4JAhkYBBQTAgUyJAQyACsBHBYDARNGdi83GAA/PD8/PDwQ/QEvPP08Li4uLi4uLgAuLi4uMTABSWi5ABMAPEloYbBAUlg4ETe5ADz/wDhZJRYVFCMiLwEmNTQzMhc3BwYjIj0BNDMyHQE3NjMyFRQTFhUUIyIvASY1NDMyHwEWFRQjIi8BJjU0MzIXAakEFQkGsAQVCAYHuwkIEBQUmgYHFUYEFQkGjwQVCAYzBBQJBm8EFQkGHwUGEwj7BQYUCEyUBxeUFBRrewUWCf6yBQYTCMwFBhQIzgUGEwieBQYUCAAAAwAhAAABIgHHAAkAFwAhAGBAJQEiIkAjFh8aEAIWBQQECQAhGAQdHBMSBA4NFBMFCgcLCgABDUZ2LzcYAD88LxD9PAEvPP08Lzz9PC88/TwuAC4uLi4xMAFJaLkADQAiSWhhsEBSWDgRN7kAIv/AOFk3FCMiNRE0MzIVEyMiPQE0MzIdATMyFRQnFCMiPQE0MzIV0xQUFBQ72RQUFMUUkxQUFBRZExMBWhQU/k0U2RQUxRQUWRMTTxQUAAABACUAAQJ3Ac0AJwBXQB8BKChAKQAiHBEOCwgFBQQEJwASEQQXFiUfGRQCARZGdi83GAAvPC88PAEvPP08Lzz9PAAuLi4uLi4uMTABSWi5ABYAKEloYbBAUlg4ETe5ACj/wDhZJRQjIjURBwYjIi8BBwYjIi8BERQjIjURNDMyHwE3NjMyHwE3NjMyFQJ3FBRlBwoLB3l5BwsKB2UUFBMMB3l5BwsKB3h5BwwTFBMTAU7MDg7z8w4OzP6yExMBohcO9fUODvT0DhcAAQAkAAECJgHOACMATEAZASQkQCUiIB0XDAkGAyINDAQSERQaDwERRnYvNxgALy88AS88/TwuAC4uLi4uLi4xMAFJaLkAEQAkSWhhsEBSWDgRN7kAJP/AOFkBAwYjIi8BBwYjIi8BERQjIjURNDMyHwE3NjMyHwE3NjMyFRQCJHcGDAwGZGQGDQwGUBQUEw0GZGUHCwsHZGQFDRUBrv7oDw/t7Q8Pvv7AExMBohYO7e0QEO3tDBMFAAUAHf/zAb8BlwALABcAIwAvADcAakAuATg4QDkADAQAEgQGJAQYKgQeMAQ0DwUJJwUhFQUDLQUbMgU2AzYBIQIJAwEGRnYvNxgAPz8/LxD9L/0Q/RD9EP0BL/0v/S/9L/0v/QAxMAFJaLkABgA4SWhhsEBSWDgRN7kAOP/AOFklFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFCMiNTQzMgG/eldXenpXV3onZEZGZGRGRmQuSDQ0SUk0NEgoMSMjMjIjIzE2Hh4eHsVXe3tXV3t7V0ZkY0dGZGRGNElJNDRJSTQjMjIjIzIyIx0dHQADACIAAQF9AYwAEwAvADkAbkAuATo6QDsAJw4GIAQUCgQAJSQEKhopOTAENTQkIwUQHRwFGAQXMjctLAMQAwE0RnYvNxgAPxc8Ly88PP08EP08AS88/TwvPDz9PC/9L/0uLgAuMTABSWi5ADQAOkloYbBAUlg4ETe5ADr/wDhZARQHBiMiNTQ3NjU0JyY1NDMyFxYHFAYrASI1NDsBMjY1NCYrARUUIyI9ATQ7ATIWAxQjIjURNDMyFQF9IgYKFAMbGwMUCgYiVkgyKBMTKCIxMSIUFBQUKDJI3RQUFBQBET00CRQFBiswMSsGBRQJND4zSBQUMSIiMVMTE2cUSP7QExMBZBQUAAACAB3/dQI+AZcAIABBAHxANwFCQkBDJDEuHxwVEg8sKSQaFwYDADQzFQMUBDk4EAMPDAQ8JyYBAwAFIiEGAwUJBT82PwMBPEZ2LzcYAD8vEP0vFzz9FzwBL/0vFzz9FzwuLi4uLi4uLgAuLi4uLi4uMTABSWi5ADwAQkloYbBAUlg4ETe5AEL/wDhZJSMiNTQ7AS4BIyIGFRQWFzU0MzIdATY3JyY1NDMyHwE2NzMyFRQrAQYHFxYVFCMiLwEGBxUUIyI9AS4BNTQ2MzIWAZhBExNBCGBBRmRXPxQULyYtBxUIBi0eLWsUFGsGKUwGFQgGSzFAFBRQbntXUXeyFBNAVmNHQWAIQBQUQAYeLQcIFAYuJlcTFD8zTAYIFQZMKQZrFBRrCHdSV3tuAAACACYAAAGUAYwACQA/AHpANQFAQEBBDTUSKCEeGBUNCi4EPjMyBDg3CQAEBQQyMQUHKyoFHh0VAxQjGgIDDwA7OgcDAQRGdi83GAA/PDw/FzwvFzz9PBD9PAEvPP08Lzz9PC/9Li4uLi4uLgAuLjEwAUlouQAEAEBJaGGwQFJYOBE3uQBA/8A4WTcUIyI1ETQzMhUfARYVFCMiLwEGKwEXFhUUIyIvASMXFhUUIyIvASY1NDsBMjY1NCYrARUUIyI9ATQ7ATIWFRROFBQUFONfBBUKBmUKDApYBBULBmYfWAQVCgdtBhd/IC4uIGsUFBR/MUUUExMBZBQUyZAGBRQJmAN/BgUUCZV/BQYUCZ4IBxAuISAvbxMTgxRGMUMAAQAd/zkA0AKiAFsAdkAyAVxcQF0fQBI+EDElGQRZTQlTRwMENysfFgUMIgUABgUcRAU6NAVKUAUuVgUoDDoBCUZ2LzcYAC8vL/0v/S/9EP0v/S/9EP0BLzw8/Tw8Lzw8/Tw8Li4ALi4xMAFJaLkACQBcSWhhsEBSWDgRN7kAXP/AOFkTMjY1NCYjIiY1NDYzMhcWFRQjIicmIyIGFRQWMzIWFRQGIyIGFRQWMzIWFRQGIyIGFRQWMzIWFRQGIyInJjU0MzIXFjMyNjU0JiMiJjU0NjMyNjU0JiMiJjU0NnYUHh0UJjQ0Ji8aBBULBg4ZFB8fFCU0NSQUHx4VJTQ2JRQdHxQlNDQlOhgCFAwGDiAUHR0UJjQ0JhQdHRQmNDQBjB4VFBw0JSY0JgYFFAkVHhUUHTMlJjQeFBQcNSUlNh0UFB01JSU0MwUFEwwcHRQUHjQlJjQeFBQdMyYmMwADAA0AAQFwAaAACQAhACsAeEA0ASwsQC0ZHw4HKiUZFAwLBBEQBCEKBB0cCQAEBQQcGxIRCwUKBRYjIgUnAignAxcWAgEURnYvNxgAPzw/PC8Q/TwQ/Rc8AS88/TzdPP08EN08/TwuLi4uAC4uLjEwAUlouQAUACxJaGGwQFJYOBE3uQAs/8A4WTcUIyI9ATQzMhU3IxUUIyI9ASMiNTQzITIVFCsBFRQjIjU3ISI1NDMhMhUU0hQUFBQdYhQURRMTATwUFEUUFG3+xBMTATwUFBMT7RQUMncTE3cUExMUdxMTvBQUFBQAAwAm//IBWQGEABcAKwA/AGVAKAFAQEBBKjw0KCA+Kh4TEgQXAAwLBDIHBg8FAyQFGjgFLi4VCQMBBkZ2LzcYAD88LxD9L/0v/QEvPDz9PC88/TwuLi4ALi4uLjEwAUlouQAGAEBJaGGwQFJYOBE3uQBA/8A4WQEUBiMiJj0BNDMyHQEUFjMyNj0BNDMyFQcGIyInJjU0MzIXFjMyNzYzMhUUBwYjIicmNTQzMhcWMzI3NjMyFRQBVlk/P1kUFEEvL0IUEwQ7VlQ9BxMHBjRERDMGBxQLQ0pLQwsUBQU7QD4+BQQTAStAWVlARRQURS9CQi9FFBT7MzQGCRQFKikFFAlmIyMGCxYDHx4CFAsAAgAI/+8BjAGMABMAJwBHQBgBKChAKSYhAyYcEggXDQEkHhADCgMBHEZ2LzcYAD8XPD8vAS4uLi4ALi4xMAFJaLkAHAAoSWhhsEBSWDgRN7kAKP/AOFkBBwYjIi8BJjU0MzIfATc2MzIVFBcDBiMiJwMmNTQzMhcbATYzMhUUATVYBwsMB1gCFQsGRkYGDBVTrgcMCwetAhULBpucBgwVAW66Dw+6BQUUDJSUDBQFBf6QDw8BcAUFFAz+twFJDBQFAAABAA7/8AKvAYoAKwBLQBkBLCxALSolHxkMBioUDwkDIhwBKBYDARRGdi83GAA/PD88Lzw8AS4uAC4uLi4uMTABSWi5ABQALEloYbBAUlg4ETe5ACz/wDhZAQMGIyIvAQcGIyIvAQcGIyInAyY1NDMyFxM3NjMyHwE3NjMyHwETNjMyFRQCrncGDQwHT1EHCwsHUVAHCw0GeAEVDgRoTAcLDAdRUQcLCwdNZwQOFQFw/pERDqqqDg6qqg4RAW8DBBMN/sGjDw+rqw4OowE/DRMEAAACABL/8wIJAZcAKwBXAGhAKAFYWEBZKlVST0xJPzkzJR8ZDwwJBgNELioUPDZCMAAiHAMoFgMBFEZ2LzcYAD88Pzw/PC88AS4uLi4ALi4uLi4uLi4uLi4uLi4uLjEwAUlouQAUAFhJaGGwQFJYOBE3uQBY/8A4WQEHBiMiLwEHBiMiLwEHBiMiLwEmNTQzMh8BNzYzMh8BNzYzMh8BNzYzMhUUAxYVFCMiLwEHBiMiLwEHBiMiLwEHBiMiNTQ/ATYzMh8BNzYzMh8BNzYzMhcCB0oHCgsHPj0HCwoHPT4HCwoHSgIUDAU4PwcLCgc9PAcKCwc/OAUMFAICFQsFOD8HCwoHPD0HCgsHPzgFCxUCSgcKCwc+PQcKCwc9PgcLCgcBbpQODnt7Dg57ew4OlAUEFAtxeg4OenoODnpxCxQE/qkFBBQLcnsODnt7Dg57cgsUBAWVDg58fA4OfHwODgAAAQAFAAEBngGzACsAX0AlASwsQC0NJh4bCwgAIR4ZDQgFKxEQAwAEJyYWAxUpEyMDAwEZRnYvNxgAPzwvLwEvFzz9FzwuLi4uLi4ALi4uLi4uMTABSWi5ABkALEloYbBAUlg4ETe5ACz/wDhZEzc2MzIVFA8BNzYzMhUUDwEVFCMiPQEnJjU0MzIfAScmNTQzMh8BNTQzMhXlTgYJFARNfgQEEw2sFBSrDRMEBH1NBBUJBk0UFAEYbggTBQZuMAIVDQVAuRMTuUAFDRUCL20FBhMIbocUFAAAAQAP/9gBBAHaAC0Ab0AsAS4uQC8gAiwpJiMgGxgVEg8MCQQBGRgFHRMSBSQjKikFDQweHQcGAQABCUZ2LzcYAD8vPC88Lzz9PC88/TwQ/TwBLi4uLi4uLi4uLi4uLi4ALjEwAUlouQAJAC5JaGGwQFJYOBE3uQAu/8A4WTcHMzIVFCsBIjU0PwEjIjU0PwEjIjU0PwEjIjU0OwEyFRQPATMyFRQPATMyFRT5mY0UFMcXCpmMFwqajRcKmYwTE8YYC5mMGAuZjBh6ehQUEgoIehIKCHoSCgh6FBQSCgh6EgoIehIKAAACAAcBvgDdAp8AFAAmAEdAFgEnJ0AoGCAdGgoAIhgQBSUVDgcBEEZ2LzcYAC88LzwBLi4uLgAuLi4uLjEwAUlouQAQACdJaGGwQFJYOBE3uQAn/8A4WRMyHwEWFRQjIi8BBgcGIyI1ND8BNjcXFhUUIyIvAQcGIyI1ND8BNnEJBlYGFAgGSBQ1BggUBlYGFlcHFQgGSUgGCBQGVg4CPQZWBggVBkgTNQYVCAZWBlRXBwgUBklIBhUIBlYOAAEAAf+xAO//2QAJADlADwEKCkALCAgDBgUBAAEDRnYvNxgALzwvPAEuLgAxMAFJaLkAAwAKSWhhsEBSWDgRN7kACv/AOFkXIyI1NDsBMhUU28YUFMYUTxQUFBQAAwABAb4A+gK3AA0AGwApAEVAFQEqKkArAicSCwQlHhcQCQIZIAEXRnYvNxgALy8BLi4uLi4uAC4uLi4xMAFJaLkAFwAqSWhhsEBSWDgRN7kAKv/AOFkTFhUUIyIvASY1NDMyFwcWFRQjIi8BJjU0MzIfARYVFCMiLwEmNTQzMhf0BhUIBkcGFQgGMwYVCAZWBhQIB5cGFQgGRwYUCAYCGwYIFQZHBggVBgYGCBUGVgYIFAbQBggVBkgGCBUGAAQAFP/zAb8BIAAJABMAHwArAGBAJgEsLEAtABEHBQQECQAPDgQTCiAEFCYEGiMFHSkFFx0XDAIAARpGdi83GAA/PC8vEP0Q/QEv/S/9Lzz9PC88/TwALi4xMAFJaLkAGgAsSWhhsEBSWDgRN7kALP/AOFklFCMiPQE0MzIVBxQjIj0BNDMyFQcUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNgG/ExQUE0UUFBQUOVk+PlhYPj5ZKEEuLUFBLS5BExQU7RQU7RQU7RQUdj5ZWT4+WFg+LUFBLS5BQQAAAQAiAAABBgIVADcAc0AwATg4QDkCISA2NCwjHhgAEgQCJwQyDg0ECQgaBRYVKikFLg8OBQULLy4DBgUAAQhGdi83GAA/PD88LxD9PBD9PC88/QEvPP08L/0v/S4uLi4uLi4ALi4xMAFJaLkACAA4SWhhsEBSWDgRN7kAOP/AOFk3FhUUBisBIjURNDMyFREzMjY1NCYrAQY1NDMyNzY1NCsBIjU0MzI1NCsBIjU0OwEyFhUUBxYVFNE1OipsFBQUWBgkJBgnExMaFhwxGhMTMyUOExMOISwTK6gaNSU0FAHtFBT+JxwVFR0EFhUJCxMoFBQdHRQUKRwWExctHgADABX/8wK3AUgADQA9AEwAc0AvAU1NQE4UOjAsJBYOREAmFAoASQQMQgQdBQQ1RhoCBRA+CCAFKjIuKjw4EAIBNUZ2LzcYAD88PC88PBD9PDwQ/Tw8AS/9L/0v/S4uLi4uLgAuLi4uLi4xMAFJaLkANQBNSWhhsEBSWDgRN7kATf/AOFkTJiMiBhUUFjMyNyY1NCU2MzIXFhUUIyInJiMiBhUUFjMyNzYzMhUUBwYjIicGIyInBiMiJjU0NjMyFzYzMgMyNyY1NDcmIyIGFRQXFvwbIjZMTDYiGysBBik2RzQGFAgGJzg2TEw2OCcGCBQGNUYyLSg1NSgqNEZkZEY0KCs0NTUjGywsGiQ1TTYnARAQTTU2TA8wQ0JLHTUGCBMGKE01Nk0pBhQHBjYdHBwcZEZHYx0d/tQPL0RDLxBNNUIlGwAEABj/9AHDAdsACQATAB8AKwBdQCQBLCxALQAMAgUEBAkADw4EEwogBBQmBBojBR0pBRcRBxcBGkZ2LzcYAC8vPBD9L/0BL/0v/S88/TwvPP08AC4uMTABSWi5ABoALEloYbBAUlg4ETe5ACz/wDhZJRQjIjURNDMyFQMUIyI1ETQzMhUDFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYBwxMUFBNFFBQUFDlZPj5YWT0+WShBLi1BQS0uQRQTEwGzFBT+TRMTAbMUFP7EPllZPj5YWD4tQUEtLkFBAAMAFf/zAa0BIAAJABMAMwBiQCYBNDRANQgwIjIgEg0IAykEGQEABQYFJgUcEA8FCwosBRYcFgEZRnYvNxgALy8Q/S88/TwQ/S88/TwBL/0uLi4uLi4ALi4xMAFJaLkAGQA0SWhhsEBSWDgRN7kANP/AOFklISI1NDMhMhUUByEiNTQzITIVFAcGIyImNTQ2MzIXFhUUIyInJiMiBhUUFjMyNzYzMhUUAZn+2BMTASgUFP7YExMBKBSTLEI+WVk+OigHFAcGIScuQUEuLyIGCBSeFBMTFEYUFBQUNDFZPj5YJAYJFQUbQS0uQSQGFAcAAAEADf9+AOoB4wA+AJJASgE/P0BADhA7NCghGg4DLCslJB4dFwcWBD44NzEwBwYHABMFCh0cAQMABRgXBgMFPj0fAx4FOTgkAyM3NiYDJQUyMSsDKgouAQNGdi83GAAvLy8XPP0XPC8XPP0XPC8XPP0XPBD9AS8XPP0XPC4uLi4uLi4ALjEwAUlouQADAD9JaGGwQFJYOBE3uQA//8A4WTcjIjU0OwE1NDYzMhcWFRQjIiYjIgYdATMyFRQrARUzMhUUKwEVMzIVFCsBFRQjIj0BIyI1NDsBNSMiNTQ7AVw7FBQ7LiEgGAcUBhcOEBc7FBQ7OxQUOzsUFDsUFDsUFDs7FBQ74hQUiiAvFwYJExEXEIoUFB0UFB0UFMYUFMYUFB0UFAAEAAn/OQGtASAACwAkAEIATgBfQCUBT09AUEE/MSEULyMSQwRBAEkEBkYFCUwFAxsFDjgFKAkoAS9Gdi83GAAvLxD9L/0v/RD9AS/9Lzz9Li4uAC4uLi4xMAFJaLkALwBPSWhhsEBSWDgRN7kAT//AOFklFAYjIiY1NDYzMhYDBiMiJyY1NDMyFx4BFxYzMjc2NzYzMhUUFw4BIyImJyYnJjU0MzIXFhceATMyNjc2NzYzMhUUJzQmIyIGFRQWMzI2AaxYPj5YWD4+WFYvS0wwDBILBwIFASM5OiIGAQgKE0MbbkJCbhwBBAIUDQYBBBZaNzZaFwIDBg0SKEEuLkBALi5Bij5ZWT4+WFj+7js9DwoSCQIHAS0uBgMLFQkMO0dIOwQIBQQUDgMJMDo7MAUFDhQLxS1BQS0uQUEAAgAi/zkCJQHbAAkAOABeQCMBOTlAOhg4NTArJiEVExEPDQIeHRkYOAoJAwAEBQQHGwEERnYvNxgALy8BLzz9FzwuLi4uAC4uLi4uLi4uLi4uLjEwAUlouQAEADlJaGGwQFJYOBE3uQA5/8A4WTcUIyI1ETQzMh0BNDYzMhc2MzIXNjMyFhURFCMiNRE0JiMiBhUUIyI1NCYjIgYVFCMiNTQmIyIGFUoUFBQUIxgwIBwyMh0gLyk7FBQjGRgjFBQiGRgjExQjGRgjFBMTAbMUFMEMFygoKCg6Kf6HFBQBeRgjIxgTExgjIxgTExgjIxgABQAV/8gAswHyAAsAFwAhAC0AOQBnQCoBOjpAOwAfNCgEEgYcLiIEDAAhGAQdHCUFCQMFKzEFFTcFDwkaKwMBBkZ2LzcYAD8vLy/9L/0Q/RD9AS88/TzdPP08EN08/TwALjEwAUlouQAGADpJaGGwQFJYOBE3uQA6/8A4WRMUBiMiJjU0NjMyFhUUBiMiJjU0NjMyFgMUIyI9ATQzMhUTNCYjIgYVFBYzMjYVNCYjIgYVFBYzMjazLiEgLy8gIS4uISEuLiEhLjsUFBQUExcQEBcXEBAXFhEQFxcQEBcBoyEvLyEhLi7fIC8vICEuLv7WFBSMFBQBOxAXFxAQGBetERYWERAXFwAABgAK/8MBfQHkAAsAFwArAEEATQBZAHRAMQFaWkBbAD81KCAyLCoeTkIEDAAGEgRIVAMFS0UFCVEFFVcFDyQFGjoFLwkvSwMBMkZ2LzcYAD8vLxD9L/0v/S/9EP0Q/QEvPP08Lzz9PC4uLi4ALi4uLjEwAUlouQAyAFpJaGGwQFJYOBE3uQBa/8A4WQEUBiMiJjU0NjMyFhUUBiMiJjU0NjMyFgcGIyInJjU0MzIXFjMyNzYzMhUUFw4BIyImJyY2MzIXHgEzMjY3NjMyFgM0JiMiBhUUFjMyNhU0JiMiBhUUFjMyNgF9LiAhLi4hIC4uICEvLyEgLk4gTU4fAhUNBRUzMxYFDRRID2ZCQmYOAg0JDgQMUTM0Tw0EDgoNJRcQEBcXEBAXFxAQGBcREBcBlCAuLiAhLy/eIS4uISEvL6lHRwQFEwwvLwwTBAI+UVE+Cw0OMUBAMQ4NATcQGBcREBcXrRAYGBAQFxcAAAQAJ///AYQBoAANAB8ALQA7AFpAIQE8PEA9AjkrHBkRCzcwKSIeCQIZGAQUExYDMiQEAAETRnYvNxgAPzw8PwEvPP08Li4uLi4uLgAuLi4uLi4xMAFJaLkAEwA8SWhhsEBSWDgRN7kAPP/AOFklFhUUIyIvASY1NDMyFycHBiMiPQE0MzIdATc2MzIVFBcWFRQjIi8BJjU0FzIXBxYVFCMiLwEmNTQzMhcBgAQVCQZ8BBUJBjOKCQgPFBRrBgYURAQVCQZbBBUJBgcEFQkGOQQUCgYgBgYUCK0GBhQIJGIGFe4UFMdMBBUJ1wYGFQl/BgYVAQh/BgYVCVAGBhUJAAACACQAAQCaAaAACQATAEhAGAEUFEAVChEPDgQTCgkABAUEDAIHAwEERnYvNxgAPy88AS88/TwvPP08AC4xMAFJaLkABAAUSWhhsEBSWDgRN7kAFP/AOFk3FCMiNRE0MzIVExQjIj0BNDMyFUwUFBQUThQUFBQUExMBeBQU/ogTE9kUFAAFACUAAQJjAVAACQATAB0AJwBdAJlARAFeXkBfLVJHPDAlFhEHRUQPDgQTCh0UBBkYMzIELi0FBAQJACceBCMiUE8EVVQ+BDo5TEE2BVxYKiAMAlooARsCARhGdi83GAA/PzwvPDwvPDz9PDwBLzz9Lzz9PC88/TwvPP08Lzz9PC88/TwvPP08Li4ALi4uLi4uLi4xMAFJaLkAGABeSWhhsEBSWDgRN7kAXv/AOFklFCMiPQE0MzIVBxQjIj0BNDMyFQUUIyI9ATQzMhUTFCMiPQE0MzIVNzYzMhYdARQjIj0BNCYjIgYdARQjIjU0JiMiBh0BFCMiNTQmIyIGHQEUIyI9ATQ2MzIXNjMyAhQUFBQUnxMUFBP+1xMUFBOLFBQUFNcdNCk7FBQjGRgjFBQjFxkiFBQkGBgjFBQ7KC4fHzMtFBMTnhQUnhMTnhQUFBMTnhQU/tgTE54UFEwrOikKExMKGCMjGAsTExktIxgLExMZLSMYChMTCik6KysABAAdAAEBwQFTAAkAEwAdAEMAekAzAUREQEU6PDUtIRYRBzoFBAQJACQjBB8eEwoEDw4rKgQwLx0UBBkYQScFNzMMAhsCARhGdi83GAA/LzwvPP08AS88/TwvPP08Lzz9PC88/TwvPP08LgAuLi4uLi4uMTABSWi5ABgAREloYbBAUlg4ETe5AET/wDhZJRQjIj0BNDMyFQcUIyI9ATQzMhUHFCMiPQE0MzIVFxUUIyI9ATQmIyIGHQEUIyI9ATQ2MzIXNjMyFhUUIyI1NCYjIgYBchQUFBSgFBQUFI0UFBQU2xMVJBYZIxQUOykuIBs3KDsUFCQXGSUUExOfFBSfExOfFBQTExOfFBR2DBMTChcmJBgLExMLKToqKkQqExMaLSMAAAQAGf/zAUUBIAALABcAIwAvAFxAJQEwMEAxACoEHhIEBgwEACQEGA8FCScFIS0FGxUFAwkDIQEBBkZ2LzcYAD8vLxD9L/0Q/RD9AS/9L/0v/S/9ADEwAUlouQAGADBJaGGwQFJYOBE3uQAw/8A4WSUUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNgFFWD89WFc+P1goQS4tQUEtLkEbMSMiMDAiIzEoGhISGRkSEhqKPllZPj5YWD4tQUEtLkFBLiMwMCMjMDAjEhkZEhIZGQAABAAm/zoB0QEgAAsAFQAfACsAXUAkASwsQC0AHRMVDAQRECYEBiAEAB8WBBsaIwUJKQUDCRgOARpGdi83GAAvPC8v/RD9AS88/Twv/S/9Lzz9PAAuLjEwAUlouQAaACxJaGGwQFJYOBE3uQAs/8A4WSUUBiMiJjU0NjMyFgEUIyI1ETQzMhUDFCMiNRE0MzIVBTQmIyIGFRQWMzI2AdFYPz5YWD4/WP7BExQUE0QUFBQUAVtBLi1BQS0uQYo+WFg+PlhY/oYUFAGyFBT+ThQUAbIUFHYuQEAuLkBAAAQAGf86AcQBIAAJABMAHwArAF1AJAEsLEAtABEHBQQECQAPDgQTCiAEFCYEGiMFHSkFFx0MAgEaRnYvNxgALzwvL/0Q/QEv/S/9Lzz9PC88/TwALi4xMAFJaLkAGgAsSWhhsEBSWDgRN7kALP/AOFkFFCMiNRE0MzIVAxQjIjURNDMyFQcUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNgHEFBQUFEUUFBQUOVg/PlhYPj9YKEEuLUFBLS5BshQUAbIUFP5OFBQBshQUdj5YWD4+WFg+LkBALi5AQAAAAgAhAAEBwAFQAAkALwBcQCIBMDBAMSQsJyEdFxEMLyUkGhkVFAoJAAQFBAIfAQcCAQRGdi83GAA/Py8BLzz9PC4uLi4uLi4uAC4uLi4uLi4xMAFJaLkABAAwSWhhsEBSWDgRN7kAMP/AOFk3FCMiNRE0MzIVFxQjIjU0JiMiBh0BFCMiPQE0NjMyFzYzMhYdARQjIjU0JiMiBhdIExQUE9sUFCQYGCMUFDsoLh8fMyg6FBQjFxkjARQTEwEoFBSBExMZLSMYChMTCik6KytDKgETExktIxgAAQAa/3UAzQHGAEcAZEAoAUhIQEkDMAwuCiETBD0DRTcEJxkQBQYkBTo0BSoABRYeBUIqBgEZRnYvNxgALy8v/S/9EP0v/RD9AS88/TwvPP08Li4ALi4xMAFJaLkAGQBISWhhsEBSWDgRN7kASP/AOFk3MhYVFAYjIicmNTQzMhcWMzI2NTQmIyImNTQ2NzYzMjY1NCYjIiY1NDYzMhcWFRQjIicmIyIGFRQWMzIWFRQGBwYjIgYVFBZzJTU0JjgZAhUNBQ0fFR0dFSU0LyMDBBUdHRUlNDQlLRwEFAkHEBkUHR0UJTUvIwMFFB0dJzQlJTQzBQQUDB0eFBQdNCUjMwMBHBQUHTUlJTQmBgYUCRUdFBQeNCUjMgMBHRQUHQAAAQARAAEA1wFPADMAikBGATQ0QDUPMCkdFg8DISAaGRMSDAcLBDMtLCYlBwYHABIRAQMABQ0MBgMFLi0ZAxgFMzIUAxMsKxsDGgUnJiADHyMJAgEDRnYvNxgAPy8vFzz9FzwvFzz9FzwvFzz9FzwBLxc8/Rc8Li4uLi4uADEwAUlouQADADRJaGGwQFJYOBE3uQA0/8A4WTcjIjU0OwE1NDMyHQEzMhUUKwEVMzIVFCsBFTMyFRQrARUUIyI9ASMiNTQ7ATUjIjU0OwFgOxQUOxQUOxQUOzsUFDs7FBQ7FBQ7FBQ7OxQUO+wUFCcUFCcUFB0UFBwUFE8TE08UFBwUFAAAAgAg//QBDgESABcAKwBXQCABLCxALSooIBMSBCoXAAwLBB4HBg8FAyQFGhUJGgEGRnYvNxgALy88EP0v/QEvPDz9PC88PP08AC4uMTABSWi5AAYALEloYbBAUlg4ETe5ACz/wDhZJRQGIyImPQE0MzIdARQWMzI2PQE0MzIVBwYjIicmNTQzMhcWMzI3NjMyFRQBDUUyMUUUFC4gIS4UFAgzPDwxCRMGBiYxMicFBhS6MkVFMkQUFEQhLi4hRBQU6SEhBgoVBBobBBYKAAACAAn/8QEyARUAEwAnAEVAFgEoKEApJiENAyYcEggkHhADChcBHEZ2LzcYAC8vFzwBLi4uLgAuLi4xMAFJaLkAHAAoSWhhsEBSWDgRN7kAKP/AOFk3BwYjIi8BJjU0MzIfATc2MzIVFBcHBiMiLwEmNTQzMh8BNzYzMhUU4jIHCwoHMwMVCwYhIQYLFEyABwsKB4EDFQsGb28GCxT4Yg4NYgUFFAtBQAsTBAX5Dg35BQUUC9fWCxMEAAABAAj/8QJZARwAKwBJQBcBLCxALSolIh8cGQwGKhQoFg8JAwEURnYvNxgALzw8LzwBLi4ALi4uLi4uLjEwAUlouQAUACxJaGGwQFJYOBE3uQAs/8A4WQEDBiMiLwEHBiMiLwEHBiMiJwMmNTQzMh8BNzYzMh8BNzYzMh8BNzYzMhUUAlhjBgwLB0dIBwsKB0ZIBwsMBmMCFA0FVUQICQoIR0gICgkIQ1QFDRQBAf8AEA1/fw0Nf38NEAEABAQTDdl5DQ1+fg4OedkNEwQAAAIACv/xAf4BPwArAFcAaEAoAVhYQFkqVVJPTEk/OTMoFg8MCQYDRC4qFDw2QjAAIhwCJR8ZAQEURnYvNxgAPzw8Pzw/PC88AS4uLi4ALi4uLi4uLi4uLi4uLi4uMTABSWi5ABQAWEloYbBAUlg4ETe5AFj/wDhZAQcGIyIvAQcGIyIvAQcGIyIvASY1NDMyHwE3NjMyHwE3NjMyHwE3NjMyFRQHFhUUIyIvAQcGIyIvAQcGIyIvAQcGIyI1ND8BNjMyHwE3NjMyHwE3NjMyFwH6SAgICAhAPwcJCAc/QAgICAhHBBQJBjhACAgICD8+CAgICEA4BgkVBQQUCgY4PwgICAg+QAgICAg/OAYKEwRHCAgICD9ACAgHCD8/CAgICAETZAoKV1cKCldXCwtkBgYUCE5XCwtXVwsLV04IFAb8BgYUCUxWCwtXVwoKVkwJFAYGYwsLV1cKCldXCwsAAQAJ/4kBowE8ACwAXkAkAS0tQC4OJyQfHAwJAwAiHxoOCQUsEhEDAAQoJxcDFioUARpGdi83GAAvLwEvFzz9FzwuLi4uLi4ALi4uLi4uLi4xMAFJaLkAGgAtSWhhsEBSWDgRN7kALf/AOFk/ATYzMhUUBwYHNzYzMhUUDwEVFCMiPQEnJjU0MzIfAScmNTQzMh8BNTQzMhXqTQYJFQQmKH8EBBMNrBQUrA0UBAR9TQQVCQZNFBSibggTBgU3ODABFA0FQLkUFLlABQ0VAjBvBQYTCG6GFBQAAQAR//8BBAGLACEAYEAlASIiQCMaEyAdGhUSDwwJBAECAQUGHh0FDQwYFwMSAgcGAAEJRnYvNxgAPzw/PzwvPP08EP08AS4uLi4uLi4uLi4ALjEwAUlouQAJACJJaGGwQFJYOBE3uQAi/8A4WTcHMzIVFCsBIjU0PwEjIjU0PwEjIjU0OwEyFRQPATMyFRT7n5EUFMUXCZ+RFwmfkRMTxRcJn5EXto8UFBEKCJARCgiOFBQRCgiPEQoABwAY//8BLAIpAAsAFQAfACkANQBBAEkAjkBCAUpKQEsAJxNGPBUREAwbGgQfFkIENioEACkgBCUkMAQGJCAaFhAFDAUOOQVIRAU/LQUJAwUzCUgDHQEiGA4AAQZGdi83GAA/PDw/Py8v/RD9L/0Q/RD9FzwBL/0vPP08L/0v/S88/TwuLi4uLi4ALi4xMAFJaLkABgBKSWhhsEBSWDgRN7kASv/AOFkBFAYjIiY1NDYzMhYDFCMiPQE0MzIVBxQjIj0BNDMyFQcUIyI9ATQzMhUTNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCMiFRQzMgEsUDo6UFA6OlAxFBQUFEUTFBQTRxQUFBSVOSkpOTkpKTkcKR0dKCgdHSkoHh0dHgGfOlFROjlRUf47FBSLFBSLFBTZFBTZFBSLFBQBASk5OSkpOjopHSgoHR0oKB0dHR4AAAUABP//AUYBlwATAB0AJwAxADsAd0AyATw8QD06LyoMAjo1JiEcFw4AMSgELSwHBREVFAUZJCMFHx44NwUyMzIAGhkBEQMBDkZ2LzcYAD8/PD88EP08Lzz9PBD9PBD9AS88/TwuLi4uLi4uLgAuLi4uMTABSWi5AA4APEloYbBAUlg4ETe5ADz/wDhZARYjIicuASMiBgcGIyI3PgEzMhYHIyI1NDsBMhUUByMiNTQ7ATIVFAcUIyI9ATQzMhUTISI1NDMhMhUUARYGGQ8ECDYiIjQJBA8aBgtLMDBKOygTEygUFCgTEygUYxQUFBSy/usTEwEVFAEvGQ8gKiogDxktOzuXFBQUFEMUFBQUMxMTxRQU/usUFBQUAAkAAQGoAjwCWgALABcAIwAvADsARwBPAFcAXwCFQDsBYGBAYQAkBABYBFwYBDxMBEhQBFQ2BBIGBCowBAxCBB5FOS0FA15WTgVaUko/MycFCSEVCRsPAwEeRnYvNxgALzw8Lzw8EP08PC88PP08PBD9PDwBL/0v/S/9L/0v/S/9L/0v/S/9ADEwAUlouQAeAGBJaGGwQFJYOBE3uQBg/8A4WQEUBiMiJjU0NjMyFgcUBiMiJjU0NjMyFgcUBiMiJjU0NjMyFgU0JiMiBhUUFjMyNic0JiMiBhUUFjMyNic0JiMiBhUUFjMyNiUUIyI1NDMyBxQjIjU0MzIHFCMiNTQzMgI8MyYlNDQlJTTENCUmNDUlJTTGMyYlMzMlJTQBYx4UFB0dFBQexR0UFB4eFBQdxR4UFBwcFBQeAWwUFBQUxBQUFBTGFBMTFAIBJTQ0JSU0NCUlNDQlJTQ0JSU0NCUlNDQlFB0dFBQdHRQUHR0UFB0dFBQdHRQUHR0UExMUFBMTFBQTExQAA///Ab4A+AK3AA0AGwApAEVAFQEqKkArDCYYEQMoIRoTDAUKHwETRnYvNxgALy8BLi4uLi4uAC4uLi4xMAFJaLkAEwAqSWhhsEBSWDgRN7kAKv/AOFkTBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUFwcGIyI1ND8BNjMyFRTyVwYIFQdWBggVkEYHCBQHRgYIFDRHBgcWBkcGCBUClFYGFAgHVgYVCFZGBxQIB0YGFAhARgYWBwZGBhUIAAIAEP9qAMIAHAAXAB8AS0AaASAgQCEABg8EABgEExwMBQMIHgUaFQMBBkZ2LzcYAC8vL/08EP0BLzz9L/0uADEwAUlouQAGACBJaGGwQFJYOBE3uQAg/8A4WRcUBiMiJjU0MzIUFjMyNjU0JiI1NDMyFgcUIyI1NDMywjQlJTQUFB0UFB0dJxMlNEUUFBQUPSU0NCUTJx4eFBQdFBQ0JRQUFAAAAwAt/zkA3gJEAAsAFwBcAHtANQFdXUBeAEckRSJaThIEPjIGOCsMBFQbAA8FCQMFFUsFQTsFUTUFVxgFLy4oBR4JHkEDAQZGdi83GAA/Ly8Q/S88/S/9L/0Q/S/9EP0BLzw8/Tw8Lzw8/Tw8Li4ALi4xMAFJaLkABgBdSWhhsEBSWDgRN7kAXf/AOFkTFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYDMhYVFAYjIicmNTQzMhcWMzI2NTQmKwEiJjU0NjMyNjU0JiMiJjU0NjMyFxYVFCMiJyYjIgYVFBYzMhYVFAYjIgYVFBbeMyUlNDQlJTMoHBQUHh4UFBwxJTQ0JC8aBBQLBg4aFBwcFAElMzMkFB4dFCUzMyU5GAIUDAYNIBQdHRQlNDQkFB4dAewlNDQlJTMzJRQdHRQUHR3+EzQlJTQmBgYUChQdFBQdNCUlNB0UFB40JSU0MwUFEwwcHRQUHTUlJTQdFBQdAAUAEQAAArICuAANABsAKQBVAF8AcUAtAWBgQGEsPTo3NDEnIBILBF5ZQiwlHhcQCQJcWwVXVhlQSgFTTUcDQC4AAUJGdi83GAA/PD88PD88Ly88/TwBLi4uLi4uLi4uLgAuLi4uLi4uLi4uMTABSWi5AEIAYEloYbBAUlg4ETe5AGD/wDhZARYVFCMiLwEmNTQzMhcHFhUUIyIvASY1NDMyHwEWFRQjIi8BJjU0MzIXARYVFCMiJwMHBiMiLwEHBiMiLwEDBiMiNTQ3EzYzMh8BNzYzMh8BNzYzMhcDISI1NDMhMhUUAacGFQgGRwYVCAYzBhUIBlYGFQgGlwYUCAZIBhQIBwGKARUOBWdMBwsMB1BSBwsLB01nBQ0VAXcFDQwHUFEHDAsHUFAHDAwGE/52ExMBihQCHAYIFQZHBggVBgcGCBQGVgYIFAbQBggVBkgGCBUH/fEDBBMOAT+jDw+qqg8Po/7BDhMEAwFwEQ+qqg8PqqoPEf7aFBMTFAAFABAAAAKxArcADQAbACkAVQBfAHFALQFgYEBhLD06NzQxJh8YEQNeWUIsKCEaEwwFXFsFV1YKUEoBU01HA0AuAAFCRnYvNxgAPzw/PDw/PC8vPP08AS4uLi4uLi4uLi4ALi4uLi4uLi4uLjEwAUlouQBCAGBJaGGwQFJYOBE3uQBg/8A4WQEHBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQXBwYjIjU0PwE2MzIVFBMWFRQjIicDBwYjIi8BBwYjIi8BAwYjIjU0NxM2MzIfATc2MzIfATc2MzIXAyEiNTQzITIVFAIGVgYIFgdXBwgTj0YGCBUGRgYIFTNHBggVBkcGBxb0ARUNBWhMBwsMB1BSBwsLB01nBQ0VAXcGDQwHT1EHDAsHUFAHDAwGE/52ExMBihQClVYGFQgGVQYUCFdGBhUIBkYGFQg/RgYVCAZGBhYH/gkEAxMOAT+jDw+qqg8Po/7BDhMEAwFwEQ+qqg8PqqoPEf7aFBMTFAAABAARAAACsgKhAAkANQBJAFwAdUAvAV1dQF4MWFVSQ0A9Nh0aFxQRWlBNRTsiDAgDBgUFAQBNSjAqATMtJwMgDgABIkZ2LzcYAD88Pzw8PzwvPC88/TwBLi4uLi4uLi4uAC4uLi4uLi4uLi4uLjEwAUlouQAiAF1JaGGwQFJYOBE3uQBd/8A4WSUhIjU0MyEyFRQXFhUUIyInAwcGIyIvAQcGIyIvAQMGIyI1NDcTNjMyHwE3NjMyHwE3NjMyFycyHwEWFRQjIi8BBwYjIjU0PwE2JzYXMRcWFRQjIi8BBwYjIjU0NwIm/nYTEwGKFHcBFQ4FZ0wHCwwHUFIHCwsHTWcFDRUBdwUNDAdQUQcMCwdQUAcMDAbYCAdWBhUIBkdJBggVBlYICA8OVwYVCAZISAYIFQZkFBMTFEoDBBMOAT+jDw+qqg8Po/7BDhMEAwFwEQ+qqg8PqqoPEbQGVgYIFQZISAYVCAZWBlQPD1cGCBUGSUgGFQgGAAQAEQAAArICLQARACMATwBZAHVAMAFaWkBbJjc0MS4rWFM8Jh4SBgAcFAMFDFZVBVFQGAUhEAghSkQBTUdBAzooAAE8RnYvNxgAPzw/PDw/PC88PBD9Lzz9PC/9PDwBLi4uLi4uLi4ALi4uLi4xMAFJaLkAPABaSWhhsEBSWDgRN7kAWv/AOFkBFAYjIiY1NDMyFBYzMjY0MzIHFCMiNCYjIgYUIyI1NDYzMhYBFhUUIyInAwcGIyIvAQcGIyIvAQMGIyI1NDcTNjMyHwE3NjMyHwE3NjMyFwMhIjU0MyEyFRQCJDQlJTQUFB0UFB0UFM8UFB0UFB4UFDUlJTQBXAEVDQVnTQcLCwdRUQcMCwdMZwUOFQF4BgwMB1BRBwwLB1BQBwwNBRP+dhMTAYoUAhglNDQlFCgeHihZEyceHicTJjQ1/iIDBBMOAT+jDw+qqg8Po/7BDhMEAwFwEQ+qqg8PqqoPEf7aFBMTFAALABEAAAKyAlsACwAXACMATwBZAGUAcQB9AIUAjQCVAK9AUgGWlkCXJjc0MS4rPCaKBIZmBAyOBJJTBgRgWgQAggR+WBgEcmwEEngEHpCIgAWUjIRWVQVRUHVpXQUJGw8DBXtvYyEVCUpEAU1HQQM6KAABPEZ2LzcYAD88Pzw8PzwvPDwvPDz9PDwQ/Tw8Lzz9PC88PP08PAEv/S/9L/0vPP0v/S/9Lzz9L/0v/S4uAC4uLi4uMTABSWi5ADwAlkloYbBAUlg4ETe5AJb/wDhZARQGIyImNTQ2MzIWBxQGIyImNTQ2MzIWBxQGIyImNTQ2MzIWARYVFCMiJwMHBiMiLwEHBiMiLwEDBiMiNTQ3EzYzMh8BNzYzMh8BNzYzMhcDISI1NDMhMhUUEzQmIyIGFRQWMzI2JzQmIyIGFRQWMzI2JzQmIyIGFRQWMzI2JRQjIjU0MzIHFCMiNTQzMgcUIyI1NDMyAoA0JSU0NCUlNMUzJiU0NCUlNMU0JSU0NCUlNAG7ARUNBWdNBwsLB1FRBwwLB0xnBQ4VAXgGDAwHUFEHDAsHUFAHDA0FE/52ExMBihQdHRQUHR0UFB3EHhQUHR0UFR3GHRQUHR0UFB0BbRQUFBTFFBMTFMUUExMUAgIlNDQlJTQ0JSU0NCUlNDQlJTQ0JSU0NP3zAwQTDgE/ow8PqqoPD6P+wQ4TBAMBcBEPqqoPD6qqDxH+2hQTExQBnhQdHRQVHBwVFB0dFBUcHBUUHR0UFRwcFRQUExMUFBMTFBQTAAAFABAAAAKxAloACwA3AEEATQBVAHlANAFWVkBXDh8cGRYTQDskDkgEBkIEAE4EUj49BTk4RQUJAwVLUAVUCTIsATUvKQMiEAABJEZ2LzcYAD88Pzw8PzwvL/0v/RD9Lzz9PAEv/S/9L/0uLi4uAC4uLi4uMTABSWi5ACQAVkloYbBAUlg4ETe5AFb/wDhZARQGIyImNTQ2MzIWExYVFCMiJwMHBiMiLwEHBiMiLwEDBiMiNTQ3EzYzMh8BNzYzMh8BNzYzMhcDISI1NDMhMhUUAzQmIyIGFRQWMzI2JxQjIjU0MzIBujQlJTQ0JSU09gEVDQVoTAcLDAdQUgcLCwdNZwUNFQF3Bg0MB09RBwwLB1BQBwwMBhP+dhMTAYoUpx0UFB4eFBQdHRQUFBQCASU0NCUlNDT99AQDEw4BP6MPD6qqDw+j/sEOEwQDAXARD6qqDw+qqg8R/toUExMUAZ0UHR0UFB0dFRUVEwAACgAJAAADVQGcAAkAEwAdACcAMQA7AEUATwBpAHMAvEBZAXR0QHUIcG9ralZTcm1oW0Q/OjUwKyYhHBcSDQgDT0YES0oLCgUPAQAFBgUuLQUpKBoZBRUUHx4FIzg3BTMyQkEFPGMBYANZSD0DPAAkIwJmTRADDwMBW0Z2LzcYAD8XPD88Pxc8Pz8Q/TwvPP08EP08Lzz9PC88/TwvPP08EP08AS88/TwuLi4uLi4uLi4uLi4uLi4uLi4ALi4uLi4uMTABSWi5AFsAdEloYbBAUlg4ETe5AHT/wDhZJSMiNTQ7ATIVFCcjIjU0OwEyFRQXIyI1NDsBMhUUJyMiNTQ7ATIVFAcjIjU0OwEyFRQHIyI1NDsBMhUUByMiNTQ7ATIVFCUUIyI1ETQzMhUPAQYjIi8BAwYjIjU0NxM2MzIfATc2MzIVFAMjIjU0OwEyFRQDQXcTE3cUi+wUFOwUY3YTE3YUi+0TE+0UFOwUFOwUFO0TE+0UFOwUFOwU/s4TFBQTR10HCwsHTmYFDRUBdgYNDAdQSwYLFRTAExPAFOsUFBQUeRQUFBTrFBQUFKsUFBQUchQUFBRyFBQUFEAUFBQUFBMTAWQUFAnFDw+j/sEOEwQDAXASEKqfDBQF/vAUExMUAAAEACH/agNrAZcABwAVACMAaACLQD0BaWlAajpUTDwmXlZOQzoiGBYMCAQEAGcEWB0EChEEK2QFW0AaDgUuYAYFAkggFAVSKFs0MAM2Mi4DAStGdi83GAA/PDw/PC8vPP08PC/9PBD9PDwQ/QEv/S/9L/0v/S4uLi4uLi4uLi4ALi4uLjEwAUlouQArAGlJaGGwQFJYOBE3uQBp/8A4WQUUIyI1NDMyJyY1NDcmIyIGFRQWMzI3NDcmIyIGFRQWMzI3JgciJwYjIiY1NDYzMhc2MzIXNjMyFxYVFCMiJyYjIgYVFB8BFjMyNzYzMhUUBwYjIicGBxYVFAYjIiY1NDMyFBYzMjY1NAH2FBMTFKw7OygvRmRkRi/ZPCssRmNjRiwrPBs/ODVBV3t7Vz83N0BBNjVBXDwGFQgGMklGZD4CLT1KMQYIFQY/WUE1FR4YNCYlMxQUHBQVHT0UFBRdO1ZXOxhkRkZjqVU+F2NHRmMXOnklJXtWV3slJSUlQQYHFQY1Y0dPNAIkNAcVBwZBJQ4MGiIlNDQlEyceHhQxAAAKAAD//wGvAqwADQAbACkAMwA9AEcAUQBbAGUAbwCpQEwBcHBAcTInIBILBG5pZF9aVVBLRkE8NzItJR4XEAkCWFcFU1JJSAVNMC8FKyo1NAU5REMFPz5iYQVdXGxrBWYZZ2YATk0COjkDARdGdi83GAA/PD88PzwvEP08Lzz9PC88/TwQ/TwvPP08EP08Lzz9PAEuLi4uLi4uLi4uLi4uLi4uLi4uLgAuLi4uLjEwAUlouQAXAHBJaGGwQFJYOBE3uQBw/8A4WRMWFRQjIi8BJjU0MzIXBxYVFCMiLwEmNTQzMh8BFhUUIyIvASY1NDMyFwEjIjU0OwEyFRQnIyI1NDsBMhUUFyMiNTQ7ATIVFCcjIjU0OwEyFRQHIyI1NDsBMhUUByMiNTQ7ATIVFAcjIjU0OwEyFRTzBhUIBkYGFQgGMwYVCAZXBhUIBpgGFQgGRwYUCAYBKHcTE3cUi+wUFOwUY3cTE3cUi+0TE+0UFOwUFOwUFO0TE+0UFOwUFOwUAg4GBxUGRgYIFQYGBggVBlcGCBUG0QYIFQZHBggVBv7OFBQUFHkUFBQU6xQUFBSrFBQUFHEUExMUcxQUFBRAFBQUFAAACgAjAAABrgKrAA0AGwApADMAPQBHAFEAWwBlAG8AqUBMAXBwQHEyJh8YEQNuaWRfWlVQS0ZBPDcyLSghGhMMBTU0BTlJSAVNMC8FKypYVwVTUkRDBT8+YmEFXVxsawVmCmdmAE5NAjo5AwFLRnYvNxgAPzw/PD88LxD9PC88/TwvPP08Lzz9PC88/TwQ/TwQ/TwBLi4uLi4uLi4uLi4uLi4uLi4uLi4ALi4uLi4xMAFJaLkASwBwSWhhsEBSWDgRN7kAcP/AOFkBBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUFwcGIyI1ND8BNjMyFRQTIyI1NDsBMhUUJyMiNTQ7ATIVFBcjIjU0OwEyFRQnIyI1NDsBMhUUByMiNTQ7ATIVFAcjIjU0OwEyFRQHIyI1NDsBMhUUAVFXBggVBlcGCBWQRgYIFQZGBggVM0YGCBUGRwYIFJR3ExN3FIvsExPsFGN3ExN3FIvtExPtFBTsExPsFBTtExPtFBTsExPsFAKIVgYVCAZWBhUIVkYGFQcGRwYVCEBGBhUIBkYGFQj+5xQUFBR5FBQUFOsUFBQUqxQUFBRyFBQUFHIUFBQUQBQUFBQAAAkAIwAAAa4CiwAJABMAHQAnADEAOwBFAFgAbQCpQEwBbm5AbwhnY2BXUk5LaV5USUQ/OjUwKyYhHBcSDQgDCwoFDx8eBSMGBQUBAC4tBSkoGhkFFRQ4NwUzMkJBBTxZPTwAJCMCEA8DASFGdi83GAA/PD88PzwvEP08Lzz9PC88/TwvPP08Lzz9PBD9PBD9PAEuLi4uLi4uLi4uLi4uLi4uLi4ALi4uLi4uLjEwAUlouQAhAG5JaGGwQFJYOBE3uQBu/8A4WSUjIjU0OwEyFRQnIyI1NDsBMhUUFyMiNTQ7ATIVFCcjIjU0OwEyFRQHIyI1NDsBMhUUByMiNTQ7ATIVFAcjIjU0OwEyFRQDFxYVFCMiLwEGBwYjIjU0PwE2JzIfARYVFCMiLwEGBwYjIjU0PwE2AZp3ExN3FIvsExPsFGN3ExN3FIvtExPtFBTsExPsFBTtExPtFBTsExPsFHpTBhQIBkgTNQYIFQZXEAMKBVYGFAgGSBM1BggVBlYG6xQUFBR5FBQUFOsUFBQUqxQUFBRyFBQUFHIUFBQUQBQUFBQCKVQGCBUGSBM1BhUIBlcQTwZWBggVBkgTNQYVCAZWBgAABv+4//8AswKMAA0AGwApADUAPwBLAHZAMgFMTEBNKj0nIBILBCUXEAlGBDA6QAQCKj8eNgQ7Ojo2BThDBTMtBUkZSQE4ADMDARdGdi83GAA/Pz8vEP0Q/RD9PAEvPP08PN08/RDd/S4uLi4ALi4uLi4uMTABSWi5ABcATEloYbBAUlg4ETe5AEz/wDhZExYVFCMiLwEmNTQzMhcHFhUUIyIvASY1NDMyHwEWFRQjIi8BJjU0MzIfARQGIyImNTQ2MzIWAxQjIj0BNDMyFTc0JiMiBhUUFjMyNqsGFAgGRwYUCAYzBhQIBlcGFQgGmAYVCAZIBhUIBoguISEuLiEhLjsUFBQUExYREBcXEBAXAe4GCBQGRwYIFAYGBggVBlcGCBUG0QYIFQZHBggVBuAhLi4hIS4u/tYUFIsUFH4RFhYREBcXAAAGABP//wEOAosADQAbACkANQA/AEsAdEAxAUxMQE0MPSYfGBEDKBoMBUAEKj82BDshOkYEEzA6NgU4QwUzLQVJCkkBOAAzAwEwRnYvNxgAPz8/LxD9EP0Q/TwBLzz9Lzw8/Twv/S4uLi4ALi4uLi4uMTABSWi5ADAATEloYbBAUlg4ETe5AEz/wDhZAQcGIyI1ND8BNjMyFRQPAQYjIjU0PwE2MzIVFBcHBiMiNTQ/ATYzMhUUBxQGIyImNTQ2MzIWAxQjIj0BNDMyFTc0JiMiBhUUFjMyNgEIVgYIFQZWBggVkEYGCBUGRgYIFTNGBggVBkYHCBQLLiIhLi4hIi47FBQUFBMXERAXFxAQGAJoVwYVCAZXBhUIVkcGFQgGRgYUCEBGBhUIBkUGFAjIIS4uISEuLv7WFBSLFBR+EBcWERAXFwAF//j//wDOAmsACwAXACEANgBIAHlANAFJSUBKJ0RBPjk3MCkfRjwyJwAEDB0cBCEYBgQSHBgFGgMFFQ8FCS0FIiIaABUDCQEBMkZ2LzcYAD8/Py8Q/RD9EP0Q/TwBL/0vPP08L/0uLi4uAC4uLi4uLi4uMTABSWi5ADIASUloYbBAUlg4ETe5AEn/wDhZEzQmIyIGFRQWMzI2NxQGIyImNTQ2MzIWAxQjIj0BNDMyFQMyHwEWFRQjIicmJwcGIyI1ND8BNgc2HwEWFRQjIi8BBwYjIjU0N4sXEBEXFxEQFycuICIuLiIgLjsTFBQTFAkGVgYVCAYjJUgGCBUGVgYFDw5WBhUIBkdJBggVBgEcEBcWERAXFxAhLi4hIS4u/tYUFIsUFAHNBlcGCBQGJCRIBhUIBlYGYA4OVwYIFAZISAYVCAYAAAMAIwABAiUCXwARACMARwBoQCgBSEhASUZEQT47ODAtKidGHhIGADEwBDY1GAUIHBQDBQwhEAgzATVGdi83GAAvLzw8L/08PBD9AS88/TwuLi4uLgAuLi4uLi4uLi4xMAFJaLkANQBISWhhsEBSWDgRN7kASP/AOFkBFAYjIiY1NDMyFBYzMjY0MzIHFCMiNCYjIgYUIyI1NDYzMhYFAwYjIi8BBwYjIi8BERQjIjURNDMyHwE3NjMyHwE3NjMyFRQB4zQlJTQUFB0UFB0UFM8UFB0UFB0UFDQlJTQBD3cGDAwGZGQGDQwGUBQUEw0GZWQHDAsHY2QFDRUCSyU0NCUUKB4eKFkTJx4eJxMlNDR9/ugPD+3tDw++/sATEwGiFg7t7RAQ7e0NFAUAAAgAHf/zAb8CuAANABsAKQA1AEEATQBZAGEAgkA6AWJiQGMqJyASCwQlHhcQCQI2BCo8BDBOBEJUBEhaBF45BTNRBUs/BS1XBUVcBWAZLWABSwIzAwEwRnYvNxgAPz8/Ly8Q/S/9EP0Q/RD9AS/9L/0v/S/9L/0uLi4uLi4ALi4uLi4xMAFJaLkAMABiSWhhsEBSWDgRN7kAYv/AOFkBFhUUIyIvASY1NDMyFwcWFRQjIi8BJjU0MzIfARYVFCMiLwEmNTQzMhcBFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFCMiNTQzMgE1BhQIB0cGFQgGMwYVCAZWBhMIB5gGFAgGSAYVCAYBCnpXV3p6V1d6J2RGRmRkRkZkLkg0NElJNDRIKDEjIzIyIyMxNh4eHh4CGgYIFAZGBggVBgYGCBUGVwYIFQfRBggVBkgGCBUG/p1Xe3tXV3t7V0ZkY0dGZGRGNElJNDRJSTQjMjIjIzIyIx0dHQAACAAd//MBvwK3AA0AGwApADUAQQBNAFkAYQCCQDoBYmJAYyomHxgRAyghGhMMBTYEKjwEME4EQlQESFoEXjkFM1EFSz8FLVcFRVwFYAotYAFLAjMDATBGdi83GAA/Pz8vLxD9L/0Q/RD9EP0BL/0v/S/9L/0v/S4uLi4uLgAuLi4uLjEwAUlouQAwAGJJaGGwQFJYOBE3uQBi/8A4WQEHBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQXBwYjIjU0PwE2MzIVFBMUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUIyI1NDMyAZRXBggVBlcGCBWQRgcIFAZGBggVM0cGBxUGRwYIFHZ6V1d6eldXeidkRkZkZEZGZC5INDRJSTQ0SCgxIyMyMiMjMTYeHh4eApRWBhUIBlYGFQhWRgcVCAZGBhQIQEYGFQgGRgYVCP61V3t7V1d7e1dGZGNHRmRkRjRJSTQ0SUk0IzIyIyMyMiMdHR0ABwAc//MBvwKWAAsAFwAjAC8ANwBMAGAAhUA8AWFhQGIAWlRLREA9XFJGOyQEGAwEABIEBioEHjAENA8FCScFIS0FGxUFA1cFTTIFNk0DNgEhAgkDAQZGdi83GAA/Pz8vLxD9EP0Q/S/9EP0Q/QEv/S/9L/0v/S/9Li4uLgAuLi4uLi4xMAFJaLkABgBhSWhhsEBSWDgRN7kAYf/AOFklFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFCMiNTQzMgMXFhUUIyIvAQYHBiMiNTQ/ATYXFicyHwEWFRQjIi8BBwYjIjU0PwE2Ab97V1d6eldXeyhkRkZjY0ZGZC5INDRJSTQ0SCcyIyMyMiMjMjceHh4eDVQGFQgGSBM1BggVBlcHCgkNCgZWBhQIB0lHBggVBlYGxVd7e1dXe3tXRmRjR0ZkZEY0SUk0NElJNCMyMiMjMjIjHR0dAVJUBggVBkgTNQYVCAZXBwECWwZXBggVB0hIBhUIBlYGAAcAHP/zAb8CUwARACMALwA7AEcAUwBbAIRAOwFcXEBdJFhUMCQeEgYASAQ8TgRCNgQqGAUhHBQDBQwzBS1LBUVRBT85BSdWBVoQCCEnWgFFAi0DASpGdi83GAA/Pz8vLzw8EP0Q/S/9EP0Q/S/9PDwQ/QEv/S/9L/0uLi4uLi4uLgAxMAFJaLkAKgBcSWhhsEBSWDgRN7kAXP/AOFkBFAYjIiY1NDMyFBYzMjY0MzIHFCMiNCYjIgYUIyI1NDYzMhYTFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFCMiNTQzMgGtNCUlNBQUHRQUHRQU0BMUHRQUHRQUNCUlM+J7V1d6eldXeyhkRkZjY0ZGZC5INDRJSTQ0SCcyIyMyMiMjMjceHh4eAj4lNDQlFCgdHShYFCgdHSgUJTQ0/qZXe3tXV3t7V0ZkY0dGZGRGNElJNDRJSTQjMjIjIzIyIx0dHQALAB3/8wHAAyEACwAXACMALwA7AEcATwBXAGMAbwB3AKJATQF4eEB5GHRwNjAqJBIMBgA8BBhqBF5kBFhCBB5QSARUTFIFVkoFTicFCTMFFQMFLQ8FOT8FIWcFYUUFG20FW3IFdgkbdgFhAiEDAR5Gdi83GAA/Pz8vLxD9L/0Q/RD9EP0v/S/9L/0Q/S/9L/0BLzz9PC/9L/0v/S/9Li4uLi4uLi4uLgAxMAFJaLkAHgB4SWhhsEBSWDgRN7kAeP/AOFkBFAYjIiY1NDYzMhYHFAYjIiY1NDYzMhYTFAYjIiY1NDYzMhYDNCYjIgYVFBYzMjYHNCYjIgYVFBYzMjYTNCYjIgYVFBYzMjYDFCMiNTQzMgcUIyI1NDMyExQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2JxQjIjU0MzIBSDQlJTQ0JSU0ATQkJTQ0JSQ0eXtWV3t7V1Z7oB0UFB4eFBQdAR0TFB4eFBQceWNGRmRkRkZjlRQUFBQBExQUE2lJMzRJSTQzSSgxIyMyMiMjMTcdHh4dAsklNTQmJTMz6yU0NCUlNDT+nVd7e1dXe3sBrRQcHBQUHh6yFB0dFBQdHf7WRmRjR0ZkZAJKFBQT2RQUE/6vNElJNDRJSTQjMjIjIzIyIx0dHQAGAA3/4AHZAasADQAnADUATwBdAGsAdkAxAWxsQG0MaFNMPysfEgNqY1xVSj00LR0QDAVGBDYZBCMWBSZDBTkKYVoBMgImAwFjRnYvNxgAPz8/Ly8v/RD9AS/9L/0uLi4uLi4uLi4uLi4ALi4uLi4uLi4xMAFJaLkAYwBsSWhhsEBSWDgRN7kAbP/AOFkBBwYjIjU0PwE2MzIVFAcWFRQjIicmIyIGFRQXFhUUIyInJjU0NjMyDwEGIyI1ND8BNjMyFRQXFAYjIicmNTQzMhcWMzI2NTQnJjU0MzIXFg8BBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQB034GCBUGfgYIFYgLFAQFJiZGZBICFAsGF3tXMQyCBggVBoMHBxSme1YxLgsTBQUlKEZjEgMVCwYXXH8GCBQGfgYIFcF9BggVBn0GCBUBiX4GFAgGfgYUCA8GCxQCEmNHJyYFBBMLKzNXe3WDBhUIBoIHFQhjV3sXBgsUAhJkRishBQUUCysvfgYUCAZ/BhUIbX0GFAgGfQYUCAAABgAP//MBVgKlAA0AGwApAEEAVQBpAH1ANAFqakBrVGZeUkonIBILBGhUSCUeFxAJAj08BEEqNjUEXDEwOQUtTgVEYgVYGVg/MwMBF0Z2LzcYAD88Ly8Q/S/9L/0BLzw8/TwvPP08Li4uLi4uLi4uAC4uLi4uLi4uLjEwAUlouQAXAGpJaGGwQFJYOBE3uQBq/8A4WQEWFRQjIi8BJjU0MzIXBxYVFCMiLwEmNTQzMh8BFhUUIyIvASY1NDMyHwEUBiMiJj0BNDMyHQEUFjMyNj0BNDMyFQcGIyInJjU0MzIXFjMyNzYzMhUUBwYjIicmNTQzMhcWMzI3NjMyFRQBAQYUCAZHBhUHBjMGFAcHVgYUCAaYBxYIBkgGFAgH0lk/P1kUFEIuLkIUFAU8VFI/BxMHBjVDRDMGBxQLQ0pLQwsUBQU5Qj4+BQQTAgkGCBUGRgYIFQYGBggVB1YGCBQG0AYIFQZHBggUBuo/Wlo/RhQURi9CQy5GFBT7MzQGCRQFKikFFAlnIiMGCxUDHh4CFQsABgAl//MBaAKkAA0AGwApAEEAVQBpAH1ANQFqakBrDGZeUkomHxgRA2goIRoTDAU2NQRcSDEDMD08BFRBKjkFLU4FRGIFWApYPzMDATBGdi83GAA/PC8vEP0v/S/9AS88PP08Lxc8/TwuLi4uLi4uAC4uLi4uLi4uLjEwAUlouQAwAGpJaGGwQFJYOBE3uQBq/8A4WQEHBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQXBwYjIjU0PwE2MzIVFBcUBiMiJj0BNDMyHQEUFjMyNj0BNDMyFQcGIyInJjU0MzIXFjMyNzYzMhUUBwYjIicmNTQzMhcWMzI3NjMyFRQBYlcGCBUGVwYIFZBGBggVBkYGBxYzRwYIFAZGBggVPlo+P1kUE0MuLkIUFAU8VFM/BxQHBjRERDMGBxMKQ0pMQwsUBQU4RD49BQQUAoJXBhUIBlYGFAhXRwYVCAZHBhYHP0YGFQgGRgYVCNM/Wlo/RhQURi5DQy5GFBT7MzQGCBUFKikFFAlnIiMGCxUDHh4CFQsABQAk//MBVwKFABMAJwA/AFMAZwB9QDUBaGhAaRJlXltYS0hFJBwQCGBWTUMSOzoEPyYoNDMELxoGAy43BSsgBRYMBQJSAj0xAwEuRnYvNxgAPzwvLxD9L/0v/QEvFzz9PC88PP08Li4uLi4ALi4uLi4uLi4uLi4xMAFJaLkALgBoSWhhsEBSWDgRN7kAaP/AOFklBiMiJyY1NDMyFxYzMjc2MzIVFCcGIyInJjU0MzIXFjMyNzYzMhUUJxQGIyImPQE0MzIdARQWMzI2PQE0MzIVAxcWFRQjIi8BBwYjIjU0PwE2MzIXFhUUIyIvAQcGIyI1ND8BNjMyFwFMQ0pLQwsUBQU4Qz49BQQUCDxUUz8HFAcGNUNEMwYHEwJaPj9ZFBRCLi5CFBSIUwcVCAZISAYIFQZXBggKWwcVCAZJSAYIFQZXCAcIBxUiIwYLFQMeHgIVC1szNAYIFQUqKQUUCa8/Wlo/RhQURi9CQy5GFBQBC1MHCBQGSEgGFQgGVga2BwgUBkhIBhUIBlYHCQAJACX/9AFZAtUACwAXAC8AQwBXAGMAbwB3AH8AokBLAYCAQIFCVExAOFZCNnhwBHx0ZFgEDAArKgQvGGpeBBIGJCMESh8eWwUJcgV2AwVhZwUVegV+DwUhJwUbPAUyUAVGCUZtLSEDAR5Gdi83GAA/PDwvLxD9L/0v/RD9L/0v/S/9L/0Q/QEvPDz9PC88/TwvPP08Lzz9PC88/TwuLi4ALi4uLjEwAUlouQAeAIBJaGGwQFJYOBE3uQCA/8A4WQEUBiMiJjU0NjMyFhUUBiMiJjU0NjMyFhcUBiMiJj0BNDMyHQEUFjMyNj0BNDMyFQcGIyInJjU0MzIXFjMyNzYzMhUUBwYjIicmNTQzMhcWMzI3NjMyFRQDNCYjIgYVFBYzMjYVNCYjIgYVFBYzMjYnFCMiNTQzMhUUIyI1NDMyARc1JSU0NCUmNDUlJTQ0JSU1P1o/P1kUFEIuL0IUFAVAUFM/BxMHBjRFQTUGBxULQUxOQQsUBQU3RUQ2BQUUah0VFB0dFBUdHRUUHR0UFR0eFBMTFBQTExQCeyU0NCUlNTTrJTQ0JSU0NLA/WVk/RhQURi5CQi5GFBT8MjQGCRQFKioFFgllIiIGCxUDHR0DFQsCXxQeHhQUHR2xFB0dFBQdHdkUFBTZFBQUAAABACX/dQEIAYsANwBzQDABODhAOSQ0MzYqIiAeCAIREAQWFTAEJAwEHBAPBRgGBQUKLSwFJxMoJwAZGAMBFUZ2LzcYAD88PzwvEP08L/08EP08AS/9L/0vPP08Li4uLi4uLgAuLjEwAUlouQAVADhJaGGwQFJYOBE3uQA4/8A4WTcyNTQmKwEiNTQzMjU0JisBERQjIjURNDsBMhYVFAcWFRQHFhUUBisBIjU0OwEyNjU0JisBIjU0fUwdFRkTEzMXDz8TFBRSIS0UKx42OislExMlGSQkGSYTsicSFhQUHQwR/iYUFAHuFCkcFRQWLhsWGTYlNBQUHBUVHRQTAAcAEP/0AbsCQQANABsAKQAzAD0ASQBVAHVAMAFWVkBXKjs2MSwnIBILBCUeFxAJAi8uBDMqOTgEPTRKBD5QBERHBU1TBUEZQQFERnYvNxgALy8Q/S/9AS/9L/0vPP08Lzz9PC4uLi4uLgAuLi4uLi4uLi4xMAFJaLkARABWSWhhsEBSWDgRN7kAVv/AOFkBFhUUIyIvASY1NDMyFwcWFRQjIi8BJjU0MzIfARYVFCMiLwEmNTQzMhcBFCMiPQE0MzIVBxQjIj0BNDMyFQcUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNgEnBhQIBkYGFAgGMwYVCAZWBhUIBpcGFAgHRwYVCAYBExMUFBNFFBQUFDlZPj5YWT0+WShBLi1BQS0uQQGkBggVBkcGCBQGBgYIFQZXBggVBtEGCBQGRgYIFQb+YxMT7RQU7RMT7RQUdj5ZWT4+WFg+LUFBLS5BQQAABwAU//QBvwJBAA0AGwApADMAPQBJAFUAdUAwAVZWQFcqOzYxLCYfGBEDKCEaEwwFLy4EMyo5OAQ9NEoEPlAEREcFTVMFQQpBAURGdi83GAAvLxD9L/0BL/0v/S88/TwvPP08Li4uLi4uAC4uLi4uLi4uLjEwAUlouQBEAFZJaGGwQFJYOBE3uQBW/8A4WQEHBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQnBwYjIjU0PwE2MzIVFBMUIyI9ATQzMhUHFCMiPQE0MzIVBxQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2AU9WBggUBlYGCBRVRwYHFgZHBggVQUYGCBQGRgYIFPQTFBQTRRQUFBQ5WT4+WFk9PlkoQS4tQUEtLkECHlcGFAgHVwYVCJBGBhYHBkYGFQg0RwYVCAZGBhQI/kATE+0UFO0TE+0UFHY+WVk+PlhYPi1BQS0uQUEABgAS//QBvgIpAAsAFwAhACsAQABUAH9ANQFVVUBWIlBNSkNBPDk2KSQfGlJIREM+NDAnJgQrIh0cBCEYAAQMBgQSAwUVCQUPMCwPARJGdi83GAAvLzwQ/S/9AS/9L/0vPP08Lzz9PC4uLi4uLi4ALi4uLi4uLi4uLi4uMTABSWi5ABIAVUloYbBAUlg4ETe5AFX/wDhZJTQmIyIGFRQWMzI2NxQGIyImNTQ2MzIWFxQjIj0BNDMyFRcUIyI9ATQzMhUBNhcmFRYXFhUUIyIvAQcGIyI1NDcXNhcVFhcWFRQjIi8BBwYjIjU0NwEXQS0uQUEuLUEoWD4+WVk+Plg6FBQUFEUUFBQU/twPDgEDVAYUCAdHSQcIEwZWDw4DVAYUCAdISQcIEwaLLUFBLS5BQS4+WVk+PlhYtRMT7RQU7RMT7RQUARkPDwEBAVYGCBUHSEcGFAgGBA8PAQFUBggUBkdHBhQIBgAABgAR//QBuwG1ABEAGwAtADcAQwBPAHxANQFQUEBRADUwGRQoHAYXFgQbEgBEBDgzMgQ3Lj4ESiIFCCYeAwUMRwVBTQU7KxAIOwwDAT5Gdi83GAA/Ly88PBD9L/0Q/Tw8EP0BL/0vPP08L/0vPDz9PC4uLgAuLi4uMTABSWi5AD4AUEloYbBAUlg4ETe5AFD/wDhZARQGIyImNTQzMhQWMzI2NDMyERQjIj0BNDMyFScUIyI0JiMiBhQjIjU0NjMyFhMUIyI9ATQzMhUHFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYBuzQlJTQUFB0UFB4UExMUFBPPExQeFBQdFBQ0JSU0ihQUFBQ5WD4+WFg+PlgoQC4uQEAuLkABoSU0NCUUKB0dKP5fExPtFBRbEycdHScTJTQ0/pMTE+0UFHY+WVk+PlhYPi1BQS0uQUEAAAgAEf/0AbwClAALABUAIQArADcAQwBPAFsAhUA7AVxcQF0MKSQTDhEQBBUMJyYEKyJQBCwWAAREOEo+BBwGVgQyAwVBOwUJRwUfGQVNNQVTWQUvCS8BMkZ2LzcYAC8vEP0v/S/9L/0Q/S/9AS/9Lzz9PC88/Twv/S88/TwvPP08AC4uLi4xMAFJaLkAMgBcSWhhsEBSWDgRN7kAXP/AOFkTFAYjIiY1NDYzMhYTFCMiPQE0MzIVJxQGIyImNTQ2MzIWExQjIj0BNDMyFQcUBiMiJjU0NjMyFgM0JiMiBhUUFjMyNhU0JiMiBhUUFjMyNhc0JiMiBhUUFjMyNvcvISEuLiEhL8UUFBQUxS4iIS4uISIugBQUFBQ5WT4+WFg+PllvFxEQFxcQEBgYEBAXFxARF0dBLi1BQS0uQQJEIC4uICEvL/2vExPtFBSLIi4uIiAvLv5nExPtFBR2PllZPj5YWAF7ERcYEBAXF6gQFxcQERcX8C1BQS0uQUEABgAS//QBvQHbAAkAFQAfACsANwBDAHNAMQFEREBFAB0YBwI4BCA+BCYFBAQJABsaBB8WCgQsMgQQLwUTDQU1OwUpQQUjEyMBJkZ2LzcYAC8vEP0v/S/9EP0BL/0v/S88/TwvPP08L/0v/QAuLi4uMTABSWi5ACYAREloYbBAUlg4ETe5AET/wDhZJRQjIj0BNDMyFScUBiMiJjU0NjMyFhMUIyI9ATQzMhUHFAYjIiY1NDYzMhYnNCYjIgYVFBYzMjYXNCYjIgYVFBYzMjYBvRQUFBTFLiIhLi4hIi6AFBQUFDpYPj5YWD4+WG4YEBAXFhERF0dBLi5BQS4uQRQTE+0UFIsiLi4iIC8u/mcTE+0UFHY+WVk+PlhYwxAXFxARFxfwLUFBLS5BQQAABQAV//MDDQEgAAkAEwAzAD0AXQCEQDgBXl5AXwhaTDs2MCJcSjIgEg0IAykEGT00BDk4UwRDAQAFBgVQJgUcEA8FCwosVgVARhwWQAFDRnYvNxgALzwvPBD9PC88/TwQ/TwvPP08AS/9Lzz9PC/9Li4uLi4uLi4ALi4uLi4uMTABSWi5AEMAXkloYbBAUlg4ETe5AF7/wDhZJSEiNTQzITIVFAchIjU0MyEyFRQHBiMiJjU0NjMyFxYVFCMiJyYjIgYVFBYzMjc2MzIVFAUUIyI9ATQzMhUHBiMiJjU0NjMyFxYVFCMiJyYjIgYVFBYzMjc2MzIVFAL5/tcTEwEpFBT+1xMTASkUkytDP1hYPzgpBxQGBh8pLkFBLjAhBggU/tkUFBQUSyo4PlhYPjooBxUHBh0qLkBALiodBggUnhQTExRFFBQUFDUwWD4+WCQGCRQFGkAuLkAjBhQHFhMT7BQU6CVZPj5YJAcIFgYbQS0uQRsGFQkAAAQAFf9qArgBSAAHAE0AWwBpAIpAPAFqakBrHDQsHhYSCGZcWlBOPjYuJRxHBDgEBABVBGhhBA1ABgUCRAU7XlIiBRBkWCgFCjI7GBQQAgENRnYvNxgAPzw8Ly88/Tw8EP08PBD9L/08AS/9L/0v/S/9Li4uLi4uLi4uLgAuLi4uLi4xMAFJaLkADQBqSWhhsEBSWDgRN7kAav/AOFkFFCMiNTQzMicGIyImNTQ2MzIXNjMyFzYzMhcWFRQjIicmIyIGFRQWMzI3NjMyFRQHBiMiJwYHFhUUBiMiJjU0MzIUFjMyNjU0JiMiJyY3NDcmIyIGFRQWMzI3JicmIyIGFRQWMzI3JjU0AZAUFBQUcio0R2RkRzQoKTY1KCk2RjUGFAgGJzg2TU02OCcGCBQGNkUzLA8OGjQlJTQUEx4UFB0dFAUCMEctGiQ2TEw2IxstjxsiNk1NNiIbLD0UFBM6HGRGRmQdHR0dNQYIEwYoTTU2TSkGFAcGNh0KBRokJTQzJhMnHh4UFBwBAqhCMBBNNTZMDzC1EE01NkwPMUJBAAYAFv/zAa4CQQANABsAKQAzAD0AXQB4QDEBXl5AXzJaTCcgEgsEXEo8NzItJR4XEAkCUwRDMC8FKypGBVA6OQU1NFYFQBlAAUNGdi83GAAvLxD9Lzz9PC/9Lzz9PAEv/S4uLi4uLi4uLi4uLgAuLi4uLi4uMTABSWi5AEMAXkloYbBAUlg4ETe5AF7/wDhZARYVFCMiLwEmNTQzMhcHFhUUIyIvASY1NDMyHwEWFRQjIi8BJjU0MzIXEyEiNTQzITIVFAchIjU0MyEyFRQHBiMiJjU0NjMyFxYVFCMiJyYjIgYVFBYzMjc2MzIVFAEsBhQIB0YGFAgHMwYVCAZWBhQIBpgHFAgHSAcWCAbt/tgTEwEoFBT+2BMTASgUkyxCPllZPjkpBxQHBiImLkFBLjAhBggUAaQGCBUHRgYIFQcFBggVBlYGCBUG0QcIEwZGBggVBv7tFBMTFEYUFBQUNDFZPj5YJAYJFQUbQS0uQSQGFAcAAAYAFf/zAa0CPwANABsAKQAzAD0AXQB4QDEBXl5AXzJaTCYfGBEDXEo8NzItKCEaEwwFUwRDMC8FKypGBVA6OQU1NFYFQApAAUNGdi83GAAvLxD9Lzz9PC/9Lzz9PAEv/S4uLi4uLi4uLi4uLgAuLi4uLi4uMTABSWi5AEMAXkloYbBAUlg4ETe5AF7/wDhZAQcGIyI1ND8BNjMyFRQPAQYjIjU0PwE2MzIVFBcHBiMiNTQ/ATYzMhUUFyEiNTQzITIVFAchIjU0MyEyFRQHBiMiJjU0NjMyFxYVFCMiJyYjIgYVFBYzMjc2MzIVFAFSVwYIFQZXBggVkEYGCBUGRgYHFjNHBggUBkcGBxWS/tgTEwEoFBT+2BMTASgUkyxCPllZPjooBxQHBiEnLkFBLi8iBggUAh1XBhQIBlcGFAhXRwYVCAZHBhYHP0YGFAgGRwYVCPsUExMURhQUFBQ0MVk+PlgkBgkVBRtBLS5BJAYUBwAFABX/8wGtAh8AHwApADMARwBZAHpAMgFaWkBbKFlXUk9MPzw5HA5USkE3Mi0oIx4MFQQFMC8FKyoSBQgmJQUhIBgFAkYCAQVGdi83GAAvLxD9Lzz9PC/9Lzz9PAEv/S4uLi4uLi4uLi4ALi4uLi4uLi4uLjEwAUlouQAFAFpJaGGwQFJYOBE3uQBa/8A4WSUGIyImNTQ2MzIXFhUUIyInJiMiBhUUFjMyNzYzMhUUNyEiNTQzITIVFCchIjU0MyEyFRQDFxYVFCMiLwEHBiMiNTQ/ATYzMhcWFRQjIi8BBwYjIjU0PwE2FwEaLEI+WVk+OigHFAcGIScuQUEuLyIGCBR6/tgTEwEoFBT+2BMTASgU8FMGFAgGSEgGCBUGVwYIClsGFQgGSEgGCBUGVxEMJDFZPj5YJAYJFQUbQS0uQSQGFAcuFBQUFEYUExMUAXhTBggVBkhIBhUIBlYGtgYIFQZISAYVCAZWEBAABv+2/7oAsgJGAA0AGwApADUAPwBLAGZAKAFMTEBNKj0nIBILBCUXEAlABAIqOzoEPzYeRgQwQwUzSQUtGTgBF0Z2LzcYAC8vL/0v/QEv/S88PP08Lzz9Li4uLgAuLi4uLi4xMAFJaLkAFwBMSWhhsEBSWDgRN7kATP/AOFkTFhUUIyIvASY1NDMyFwcWFRQjIi8BJjU0MzIfARYVFCMiLwEmNTQzMh8BFAYjIiY1NDYzMhYDFCMiPQE0MzIVNzQmIyIGFRQWMzI2qgYVCAZHBhUIBjMGFQgGVwYUCAeYBhUIBkcGFAgGiS4hIi4uIiEuOxQUFBQTFxARFxcREBcBqQYIFQZHBggVBgYGCBUGVwYIFAbQBggVBkcGCBUG4CEuLiEhLi7+1hQUixQUfhAXFxARFhcAAAYAFP+6AQ4CRQANABsAKQA1AD8ASwBmQCgBTExATQw9Jh8YEQMoGgwFQAQqPzYEOyE6RgQTMEMFM0kFLQo4ATBGdi83GAAvLy/9L/0BLzz9Lzw8/Twv/S4uLi4ALi4uLi4uMTABSWi5ADAATEloYbBAUlg4ETe5AEz/wDhZAQcGIyI1ND8BNjMyFRQPAQYjIjU0PwE2MzIVFBcHBiMiNTQ/ATYzMhUUBxQGIyImNTQ2MzIWAxQjIj0BNDMyFTc0JiMiBhUUFjMyNgEIVgYIFAZWBggUj0YGCBUGRgYIFTNGBggVBkYGCBUMLiAiLi4iIC47ExQUExQXEBEXFxEQFwIiVgYVCAZWBhUIVUcGFAgGRwYVB0FFBhUIBkUGFQjHIS4uISEuLv7WFBSLFBR+EBcXEBEWFwAF//j/ugDNAiYACwAXACEANgBJAGtAKwFKSkBLJ0hGQT47MCkfQzkyJwAEDCEYBB0cBgQSAwUVCQUPLQUiIhoBMkZ2LzcYAC8vEP0v/S/9AS/9Lzz9PC/9Li4uLgAuLi4uLi4uLjEwAUlouQAyAEpJaGGwQFJYOBE3uQBK/8A4WTc0JiMiBhUUFjMyNjcUBiMiJjU0NjMyFgMUIyI9ATQzMhUDMh8BFhUUIyInJicHBiMiNTQ/ATYXFhUUIyIvAQcGIyI1ND8BNhcWihcQERcXERAXKC4hIi4uIiEuOxQUFBQVCQZWBhUIBiMlSAYIFAZWBW4GFQgGR0kGCBQGVg0OEtcQFxcQERYXECEuLiEhLi7+1hQUixQUAc0GVwYIFQYlJEgGFQgGVga3BggVBklIBhUIBlYNDREAAAYAHQABAcEBwgARABsAJQAvAEEAZwCcQEYBaGhAaV5gWVFFKCMZNjAMAGIEXhcWBBsSSEcEQ0IlHAQhIE9OBFRTLyYEKyplSwVbVwYFDwoCMwU8QDgPHhQ8Ay0CASpGdi83GAA/Py88Lzw8EP08PBD9Lzz9PAEvPP08Lzz9PC88/TwvPP08Lzz9PC/9Li4uLgAuLi4uLi4uMTABSWi5ACoAaEloYbBAUlg4ETe5AGj/wDhZExQjIjQmIyIGFCMiNTQ2MzIWExQjIj0BNDMyFQcUIyI9ATQzMhUHFCMiPQE0MzIVJRQGIyImNTQzMhQWMzI2NDMyBxUUIyI9ATQmIyIGHQEUIyI9ATQ2MzIXNjMyFhUUIyI1NCYjIgbmFBQeFBUdFBQ1JSU1jBQUFBSgFBQUFI0UFBQUAXI0JSU1FBQdFRQeFBOXExUkFhkjFBQ7KS4gGzcoOxQUJBcZJQFoEygdHSgTJjQ1/ocTE58UFJ8TE58UFBMTE58UFG8mNDUlFCkdHSn5DBMTChcmJBgLExMLKToqKkQqExMaLSMAAAcAAv/zAUQCVQANABsAKQA1AEEATQBZAHJAMAFaWkBbKicgEgsEJR4XCQI2BCpOBEIQVARIPAQwMwU5UQVLVwVFPwUtGS1LAQEXRnYvNxgAPy8vEP0v/RD9L/0BL/0v/Twv/S/9Li4uLi4ALi4uLi4xMAFJaLkAFwBaSWhhsEBSWDgRN7kAWv/AOFkTFhUUIyIvASY1NDMyFwcWFRQjIi8BJjU0MzIfARYVFCMiLwEmNTQzMhcTFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjb1BhQIBkcGFAgGMwYUCAZXBhUIBpgGFAgHSAYVCAbPWD4+WFg+PlgoQC4uQEAuLkAbMCMjMDAjIzAoGhESGRkSERoBtwYIFAZHBggUBgYHCBQGVwYIFQbRBggUBkYGCBUG/sU+WVk+PlhYPi1BQS0uQUEuIjEwIyMwMCMSGRkSEhkZAAcAGf/zAVsCVAANABsAKQA1AEEATQBZAHJAMAFaWkBbDCYfGBEDKCEaEwxUBEg8BDA2BCoFTgRCMwU5UQVLVwVFPwUtCi1LAQEwRnYvNxgAPy8vEP0v/RD9L/0BL/08L/0v/S/9Li4uLi4ALi4uLi4xMAFJaLkAMABaSWhhsEBSWDgRN7kAWv/AOFkBBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUFwcGIyI1ND8BNjMyFRQTFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYBVVcHCBQGVwYIFZBGBgcWBkYGCBUzRwYIFAZHBggUO1g/PVhXPj9YKEEuLUFBLS5BGzEjIjAwIiMxKBoSEhkZEhIaAjFWBhQIBlcGFQhWRwYWBwZHBhUIP0YGFAgGRgYUCP7cPllZPj5YWD4tQUEtLkFBLiMwMCMjMDAjEhkZEhIZGQAABgAX//MBQwI0AAsAFwAjAC8ARABZAHJAMAFaWkBbAFFNSkM8ODVTSD4zJAQYDAQAKgQeEgQGCQUPJwUhLQUbFQUDWAMhAQEGRnYvNxgAPy8vEP0v/RD9L/0BL/0v/S/9L/0uLi4uAC4uLi4uLi4xMAFJaLkABgBaSWhhsEBSWDgRN7kAWv/AOFklFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYDFxYVFCMiLwEGBwYjIjU0PwE2MzI3FxYVFCMiLwEGBwYjIjU0PwE2MzIBQ1g+PlhYPj5YKEAuLkBALi5AGzAjIjExIiMwJxoSEhkZEhIaG1QGFQgGRxQ1BggVBlcHCAoGVAYVCAZHFDUGCBUGVwYIC4o+WVk+PlhYPi1BQS0uQUEuIjExIiMwMCMSGRkSEhkZAVlUBggUBkcTNAYUCAZXB1BUBggUBkcTNAYUCAZXBgAG/+7/8wFwAbQAEQAjAC8AOwBHAFMAeEA0AVRUQFUASDweEgYAMAQkTgRCNgQqGAUIHBQDBQwzBS1LBUVRBT85BSchEAgnRQEMAwEeRnYvNxgAPz8vLzw8EP0v/RD9L/0Q/Tw8EP0BL/0v/S/9Li4uLi4uADEwAUlouQAeAFRJaGGwQFJYOBE3uQBU/8A4WQEUBiMiJjU0MzIUFjMyNjQzMgcUIyI0JiMiBhQjIjU0NjMyFhcUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNgFwNCUlNRQUHhQUHRQUzxQUHRQUHhQUNSUlNKNYPj9YWD8+WChBLS5BQS4tQRwwIiMxMSMiMCcaERIaGhIRGgGgJTQ0JRQoHR0oWRMnHR0nEyU0NPY+WVk+PlhYPi1BQS0uQUEuIzAwIyMwMCMSGRkSEhkZAAgAGf/zAUYCjwALABcAIwAvADsARwBTAF8Ag0A7AWBgQGEYVEg2KhIGPAQYMCQEDABaBE5CBB4nBQkDBS0zBRUPBTkhBT9XBVFdBUtFBRsJG1EBOQIBHkZ2LzcYAD8/Ly8Q/S/9EP0v/RD9L/0v/RD9AS/9L/0vPP08L/0uLi4uLi4AMTABSWi5AB4AYEloYbBAUlg4ETe5AGD/wDhZExQGIyImNTQ2MzIWFRQGIyImNTQ2MzIWExQGIyImNTQ2MzIWAzQmIyIGFRQWMzI2FTQmIyIGFRQWMzI2FzQmIyIGFRQWMzI2JxQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2/y4hIi4uIiEuLiEhLy8hIS5HWD8+WFg+P1hvFxARFxcREBcXEBAYGBAQF0dBLi1BQS0uQRsxIyIxMSIjMSgaEhIZGRISGgJAIS4uISEuLtohLy8hIS4u/uI+WVk+PlhYAXgQFxcQEBcXqRAXFxAQGBjtLUFBLS5BQS4iMTEiIzAxIhIZGRISGRkABgAN/+YBVgEvAA0AGwAzAEEAWQBnAHJALgFoaEBpDGRWSz43KyARA2ZfVElAOSkeGhMMBVEEQiYELyMFMk4FRQpdGAEBX0Z2LzcYAD8vLy/9L/0BL/0v/S4uLi4uLi4uLi4uLgAuLi4uLi4uLi4xMAFJaLkAXwBoSWhhsEBSWDgRN7kAaP/AOFkBBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUNxYVFCMiJiMiBhUUFhUUIyInJjU0NjMyFwcGIyI1ND8BNjMyFRQ3FAYjIicmNTQzMhYzMjY1NCY1NDMyFxYPAQYjIjU0PwE2MzIVFAFQVwcIFAdWBggVkEYGCBQGRgYIFBQNEwYaCC5BBhQOBQdZPh4wRgcIFAZGBwgUQlg+GhQPEwccBy1BBhQOBQfBVwYIFQZXBggVAQxWBxQIB1cGFQhWRgYTCAdHBhUIWAUOFAVALQccBxMPFBo9WJ5FBxUIBkUGFAgDP1gHBQ4UBkEuBxsHEw8UYlYGFQgGVgYVCAAABf/p//QBDgIzAA0AGwApAEEAVQBvQCwBVlZAV1RSSj8zJyASCwQlHhcQCQI9PARUQSo2NQRIMTA5BS1OBUQZRAEXRnYvNxgALy8Q/S/9AS88PP08Lzw8/TwuLi4uLi4ALi4uLi4uLi4uMTABSWi5ABcAVkloYbBAUlg4ETe5AFb/wDhZExYVFCMiLwEmNTQzMhcHFhUUIyIvASY1NDMyHwEWFRQjIi8BJjU0MzIfARQGIyImPQE0MzIdARQWMzI2PQE0MzIVBwYjIicmNTQzMhcWMzI3NjMyFRTcBhYHBkYGFQgGNAYVCAZWBhUIBpcGFAgGSAYVCAawRDIyRRQULyAgLxQTCDM7PTEJFAYFJTMyJgUGFQGWBgcWBkcGCBUGBgYIFQZWBggVBtEGCBUGRwYIFQbpMkVFMkQUFEQhLi4hRBQU6SEhBgoVBBobBBYKAAAFACD/9AFAAjMADQAbACkAQQBVAG9ALAFWVkBXDFJKPzMmHxgRAzY1KBoTDAU9PARUQSohBEgxMDkFLU4FRApEATBGdi83GAAvLxD9L/0BLzw8/S88PP08Li4uLi4uLgAuLi4uLi4uLi4xMAFJaLkAMABWSWhhsEBSWDgRN7kAVv/AOFkBBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUJwcGIyI1ND8BNjMyFRQTFAYjIiY9ATQzMh0BFBYzMjY9ATQzMhUHBiMiJyY1NDMyFxYzMjc2MzIVFAE6VQYIFQZWBggUVkYGCBUGRgYIFT9GBggVBkYGCBVWRTIxRRQULiAhLhQUCDM8PDEJEwYGJjEyJwUGFAIQVwcWCAZXBhQIkUYGFQgGRgYVCDNGBhQIBkcGFQj+9TJFRTJEFBREIS4uIUQUFOkhIQYKFQQaGwQWCgAABAAe//QBDQIaABcAKwA9AFEAd0AwAVJSQFMqTUpHPTs2MzAoIBUJT0VBQDguExIEKhcADAsEHgcGDwUDJAUaQD4aAQZGdi83GAAvLzwQ/S/9AS88PP08Lzw8/TwuLi4uLi4ALi4uLi4uLi4uLi4uMTABSWi5AAYAUkloYbBAUlg4ETe5AFL/wDhZJRQGIyImPQE0MzIdARQWMzI2PQE0MzIVBwYjIicmNTQzMhcWMzI3NjMyFRQDFhUUIyIvAQcGIyI1ND8BNhcnNhcVFhcWFRQjIi8BBwYjIjU0NwEMRTIxRhQULyAhLhQUCDM8PTEJFAYFJTMxJwYGFBQGFAgGSUgGCBQGVg4OHA4OBlEGFAgGSUgGCBUGujJFRTJEFBREIS4uIUQUFOkhIQYKFQQaGwQWCgFABggVBklIBhUIBlYODloODgEFUQYIFQZJSAYVCAYAAAYAH//0AQ4CXgALABcALwBDAE8AWwCGQDsBXFxAXUJAOC0hKyokI0IvGAQAUEQEDABWSgQGEgYENh8eUwUVRwUJAwVNWQUPJwUbPAUyCTIVAwEeRnYvNxgAPy8vEP0v/S/9L/0Q/RD9AS88PP08EP08Lzz9PBD9PDwuLi4uAC4uLi4xMAFJaLkAHgBcSWhhsEBSWDgRN7kAXP/AOFkTFAYjIiY1NDYzMhYVFAYjIiY1NDYzMhYXFAYjIiY9ATQzMh0BFBYzMjY9ATQzMhUHBiMiJyY1NDMyFxYzMjc2MzIVFAM0JiMiBhUUFjMyNhU0JiMiBhUUFjMyNuUvICEuLiEhLi8gIS4uISAvJ0QyMkUUFC8gIC8UEwgzOz0xCRQGBSUzMiYFBhVRFxARFhcQEBcXEBAXFxAQFwIOIS4uISIuLtohLy8hIC4uvDJFRTJEFBREIS4uIUQUFOkhIQYKFQQaGwQWCgHzERcXERAXF6gQFxcQERcYAAAMABn/2gNLAX0ACQATAB0AJwAxADsARQBRAF0AaQB1AH0AvkBZAX5+QH8IfHhVQkE9PDg3MzIkIx8eRD86NTArJiEcFxINCANGBFJYBExeBGpwBGR2BHoBAAUFbQVnCwoFDxoZBRUUcwVhWwVJLi0FKShJTwMQDwMGBQEBTEZ2LzcYAD88Pzw/Ly88/TwQ/S/9Lzz9PBD9PC/9EP08AS/9L/0v/S/9L/0uLi4uLi4uLi4uLi4uLgAuLi4uLi4uLi4uLi4uLi4xMAFJaLkATAB+SWhhsEBSWDgRN7kAfv/AOFklIyI1NDsBMhUUJyEiNTQzITIVFBcjIjU0OwEyFRQnIyI1NDsBMhUUByMiNTQ7ATIVFAcjIjU0OwEyFRQHISI1NDMhMhUUJRQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2JxQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2JxQjIjU0MzIDN3YUFHYUiv7yFBQBDhRidhMTdhSK5BMT5BQUyxMTyxQU5BMT5BQU/vMTEwENFP7meldXenpXV3onZEZGZGRGRmQuSDQ0SUk0NEgoMSMjMjIjIzE2Hh4eHtEUExMUeBQUFBTrFBQUFKwUFBQUcxQUFBRyFBQUFD8UFBQUxVZ7e1ZXe3tXRmRjR0ZjY0YzSUkzNElJNCMyMiMjMTIjHR0dAAYAEv/zAq4BIAALABcAIwAtADcAXwB+QDQBYGBAYSxYVE5KQjg0My8uGwkDWlFIPTYxLCcGAAwEGB4EEiUkBSopIQUPREBeOhUBAT1Gdi83GAA/LzwvPC/9Lzz9PAEv/S/9Li4uLi4uLi4uLgAuLi4uLi4uLi4uLi4uMTABSWi5AD0AYEloYbBAUlg4ETe5AGD/wDhZJTQmIyIGFRQWMzI2JxQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2JSEiNTQzITIVFAchIjU0MyEyFRQFBiMiJjU0NjMyFzYzMhcWFRQjIicmIyIGFRQWMzI3NjMyFRQHBiMiARdBLi5BQS4uQRwwIyMxMSMjMCgZEhIaGhISGQHH/tcTEwEpFBT+1xMTASkU/n0uVT9XVz9WLSpYOicHFAYGIScuQUEuMCAGCRUGLEJYii1BQS0uQUEuIjExIiIxMCMSGRkSEhkZJRQUFBRFFBQUFBlMWD8+WExLIwcIFQUbQS0uQSMHFQcGMAADAAr/2AD+AtoALQA/AFEAhUA3AVJSQFMgUUc9ODEuAkxCOzMsKSYjIBsYFRIPDAkEARkYBR4dJCMFExIqKQUNDERKBwYBAAEJRnYvNxgAPy88LzwvPP08Lzz9PC88/TwBLi4uLi4uLi4uLi4uLi4uLi4uAC4uLi4uLi4xMAFJaLkACQBSSWhhsEBSWDgRN7kAUv/AOFk3BzMyFRQrASI1ND8BIyI1ND8BIyI1ND8BIyI1NDsBMhUUDwEzMhUUDwEzMhUUAzc2MzIVFA8BBi8BJjU0MzIXJyY1NDMyHwE3NjMyFRQPAQYn9JmNFBTHFwqZjBcKmo0XCpmMFBTGFwqZjBcKmo0XekkGCBQGVg8OVgYVCAYdBhUIBkhIBggUBlUPDnp6FBQSCgh6EgoIehIKCHoUFBIKCHoSCgh6EgoBsEgGFQgGVg8OVwYIFQY8BggVBkhJBhUIBlYPDgADAAr//wD+AosAIQA1AEoAeUAyAUtLQEwaMywlIhNGPDEnIB0aFRIPDAkEAR4dBQ0MAgEFBkEFNjpIGBcDEgIHBgABCUZ2LzcYAD88Pz88Lzwv/RD9PC88/TwBLi4uLi4uLi4uLi4uLi4ALi4uLi4xMAFJaLkACQBLSWhhsEBSWDgRN7kAS//AOFk3BzMyFRQrASI1ND8BIyI1ND8BIyI1NDsBMhUUDwEzMhUUAzc2MzIVFA8BBiMiLwEmNTQzMhc3Njc2MzIVFA8BBiMiLwEmNTQzMhf0npEUFMYXCp6RFwqekRMTxhcKnpEXekkGCBUHVgYIBwhWBhUIBkcUNQYIFQdVBwcJBlcGFQgGto8UFBEJCZARCQmOFBQRCQmPEQkBI0gGFAgHVgYGVgYIFgcSFDQGFAgHVQgHVgYIFgcAAAIABwG/ANwCoAATACYASUAXAScnQCgFIh8cCgAkGhcPBRcUDQcBD0Z2LzcYAC88LzwBLi4uLi4ALi4uLi4xMAFJaLkADwAnSWhhsEBSWDgRN7kAJ//AOFkTMh8BFhUUIyIvAQcGIyI1ND8BNic2FzEXFhUUIyIvAQcGIyI1NDdxCAdWBhQIBkhJBggUBlYICA4OVwYUCAZJSAYIFAYCPgZWBggVBkhIBhUIBlYGVA4OVwYIFQZJSAYVCAYAAgADAfkA2QLbABEAIwBFQBUBJCRAJQUcFA8DACEXDQUZHwoBF0Z2LzcYAC8vPAEuLi4uAC4uLi4uMTABSWi5ABcAJEloYbBAUlg4ETe5ACT/wDhZEzc2MzIVFA8BBi8BJjU0MzIfAQYvASY1NDMyHwE3NjMyFRQHbkgGCBUGVg8OVgYUCAZXDw5WBxUIBklHBggVBgIzSAYVCAZWDw5XBwgUBhkPDlYHCBQGSEkGFQgGAAEABQG/APIB5gAJADlADwEKCkALCAgDBgUBAAEDRnYvNxgALzwvPAEuLgAxMAFJaLkAAwAKSWhhsEBSWDgRN7kACv/AOFkTIyI1NDsBMhUU3sYTE8YUAb8UExMUAAABAAUBqAC3AhUAEQA8QBEBEhJAEwAGAAwFAxAIAwEGRnYvNxgALy88EP0BLi4AMTABSWi5AAYAEkloYbBAUlg4ETe5ABL/wDhZExQGIyImNTQzMhQWMzI2NDMytzQlJTQUFB0UFB0UFAIBJTQ0JRQoHR0oAAEADQHaAFwCKQALADZADgEMDEANAAAEBgkDAQZGdi83GAAvLwEv/QAxMAFJaLkABgAMSWhhsEBSWDgRN7kADP/AOFkTFAYjIiY1NDYzMhZcFxARFxcREBcCARAXFxARFxcAAwAPAagAwQJaAAsAFwAfAE9AHQEgIEAhAAwEABgEHBIEBhUFAx4FGg8FCQkDAQZGdi83GAAvLxD9L/0Q/QEv/S/9L/0AMTABSWi5AAYAIEloYbBAUlg4ETe5ACD/wDhZExQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2JxQjIjU0MzLBNCUlNDQlJTQnHhQUHR0UFB4eFBQUFAIBJTQ0JSU0NCUUHR0UFB0dFRUVEwAAAgAV/2oAxwAcAAcAHwBLQBoBICBAIQgIFwQOEwAEBBoFCx4GBQIRCwEORnYvNxgALy8v/TwQ/QEv/Twv/S4AMTABSWi5AA4AIEloYbBAUlg4ETe5ACD/wDhZFxQjIjU0MzIXFAYjIiY1NDYzMhUUIgYVFBYzMjY0MzKCFBQUFEU0JSU0NCUUKB0dFBQdFBQ9FBQUFCU0NCUlNBQUHRQUHh4nAAACAAYBvwGIAi0AEQAjAEtAGQEkJEAlAB4SBgAMBQMYBSEQCCEcFAMBHkZ2LzcYAC88PC88PBD9EP0BLi4uLgAxMAFJaLkAHgAkSWhhsEBSWDgRN7kAJP/AOFkBFAYjIiY1NDMyFBYzMjY0MzIHFCMiNCYjIgYUIyI1NDYzMhYBiDQlJTQUFB0UFB0UFM8UFB0UFR0UFDUlJTQCGCU0NCUUKB4eKFkTJx4eJxMmNDUAAAMAFwAFAMkAfAAJABMAHQBUQB4BHh5AHwAFBAQJABMKBA8OHRQEGRgbEQcWDAIBGEZ2LzcYAC88PC88PAEvPP08Lzz9PC88/TwAMTABSWi5ABgAHkloYbBAUlg4ETe5AB7/wDhZNxQjIj0BNDMyFQcUIyI9ATQzMhUHFCMiPQE0MzIVyRMUFBNFFBQUFEUUFBQUGRQUTxQUTxQUTxQUUBMTUBQUAAADABYBPADJAbMACQATAB0AVEAeAR4eQB8AEwoEDw4FBAQJAB0UBBkYGxEHFgwCARhGdi83GAAvPDwvPDwBLzz9PC88/TwvPP08ADEwAUlouQAYAB5JaGGwQFJYOBE3uQAe/8A4WRMUIyI9ATQzMhUHFCMiPQE0MzIVBxQjIj0BNDMyFckUFBQURhMUFBNFFBQUFAFPExNQFBRQExNQFBRQExNPFBQAAwAWAHYAyAEoAAsAFwAfAFRAIAEgIEAhABIEBhwMBAAYBBwVBQMaBR4PBQkJAx4BAQZGdi83GAA/Ly8Q/RD9EP0BL/3d/RDd/QAxMAFJaLkABgAgSWhhsEBSWDgRN7kAIP/AOFk3FAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFCMiNTQzMsg0JSU0NCUlNCgcFRQdHRQVHB0UExMUzyU0NCUlNDQlFB0dFBQdHRQUFBQAAA0ABv/fAqMBrAANABkAJwAzAEEATwBbAGcAbwB3AIMAjwCXAK1AUgGYmECZeEw3HQNOQDkmHwVWBEcUlASQfgSKXAQMKIQEeGIELg4EUGgEbHQEcI1lBStTBRdqBW6BMQWHX5Z2BZJyEQVZChd7RStuAz4BJAIBFEZ2LzcYAD8/Py88PC88L/0vPP08Lzz9PBD9EP0Q/TwBL/0v/S/9L/0v/S88/S/9L/0vPP0uLi4uLi4ALi4uLjEwAUlouQAUAJhJaGGwQFJYOBE3uQCY/8A4WQEHBiMiNTQ/ATYzMhUUBRQGIyImNTQ2MzIWFwcGIyI1ND8BNjMyFRQXFAYjIiY1NDYzMhYnBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUJzQmIyIGFRQWMzI2ATQmIyIGFRQWMzI2ARQjIjU0MzIBFCMiNTQzMgUUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUIyI1NDMyAcx+BggUBn4GCBT+5jQlJTQ0JSU0WoMGCBQGggcIFLs0JiU0NCUlNXF/BggVBn8GCBXCfQYIFAZ9BggVHR0UFB4eFBQdARseFBQdHRQUHv7IFBQUFAEaFBQUFAEWNCUlNDQlJTQoHRQUHR0UFB0dFBQUFAGJfgYUCAZ+BhQIPSU0NCUmNDVVgwYVCAaCBxUI8CU0NCUlNDRtfgYUCAZ/BhUIbX0GFAgGfQYUB+gUHh4UFB0d/voUHR0UFB4eAS8UFBT+0RQUFBQlNDQlJTQ0JRQdHRQUHh4UFBQUAAQAFf/gAeEBqwANABsAKQA3AE9AGwE4OEA5DDQfEQM2LyghGhMMBQotJgEYAgEvRnYvNxgAPz8vLwEuLi4uLi4uLgAuLi4uMTABSWi5AC8AOEloYbBAUlg4ETe5ADj/wDhZAQcGIyI1ND8BNjMyFRQPAQYjIjU0PwE2MzIVFBcHBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQB234GCBUGfgYIFcGCBggVBoMHBxRKfwYIFQd+BggVwX0GCBUGfQYIFQGJfgYUCAZ+BhQIbYMGFQgGggcVCF5+BhMIB38GFQhtfQYUCAZ9BhQIAAACAAwAoABvAQIACwATAEJAFQEUFEAVAAYADAQQDgUSAwkSAQEGRnYvNxgAPy8vEP0BL/0uLgAxMAFJaLkABgAUSWhhsEBSWDgRN7kAFP/AOFk3NCYjIgYVFBYzMjYnFCMiNTQzMm8eFBQdHRQUHh4UFBQU0RQdHRQUHR0UFBQUAAAAAAAAAAAAfAAAAHwAAAB8AAAAfAAAAb4AAAJkAAAD9gAABdAAAAciAAAILAAACSQAAAo4AAAKuAAAC2QAAAwQAAAM/gAADgQAAA6uAAAPsAAAEK4AABG0AAASpgAAE7oAABR2AAAVjAAAFqgAABfCAAAYuAAAGcIAABpuAAAbZgAAHOQAAB3cAAAe3AAAICgAACGWAAAi1gAAI8oAACTIAAAl3AAAJugAAChaAAApYAAAKhwAACrmAAArngAALKQAAC2sAAAu2AAAL/YAADFUAAAyPAAAM0oAADQMAAA03gAANj4AADcWAAA3/AAAOLgAADkUAAA50gAAOqwAADuqAAA87gAAPcgAAD64AAA/3AAAQRgAAEIIAABDEAAARHwAAEV8AABGAAAAR34AAEiiAABJiAAASmQAAEs+AABMFgAATTYAAE44AABPBgAAT8AAAFCOAABR7AAAUsQAAFN+AABU0gAAVewAAFd0AABYMgAAWNYAAFpCAABbwAAAXT4AAF62AABgIgAAYmgAAGPUAABltgAAZ1QAAGkaAABq4AAAbKQAAG3qAABvLgAAcHQAAHGgAABzLgAAdLoAAHZKAAB3wgAAeagAAHs+AAB80AAAfmIAAH/wAACB3AAAgtoAAIQ4AACFlAAAhvwAAIhKAACJxgAAivIAAIxqAACOCAAAj3wAAJDuAACSWgAAk5AAAJTGAACWAAAAl54AAJkGAACacAAAm9oAAJ0yAACeugAAoEAAAKGSAACi5gAApDoAAKWyAACnsgAAqTAAAKqMAACrzAAArIgAAK06AACtmAAArgwAAK5uAACvHAAAr8AAALBwAACxFgAAsbwAALJuAAC0tAAAtaIAALYiAAC2IgAAtiIB9AA/AAAAAACLAAAAiwAAAUUAGADdABcBdQAMAeUACgIqABQBMgAJATIAEQHuABQAxQAKAYcAEQDfABYB9AAVAdwAHQDnABsBgAARAUYAGQFcACUBYgAnAcoAFwFSABAA6gAiAbUACwD0ACEA3wAXATIACQGHABEBMgARAQ0AKgLAABEBIwAkA3kAHwJFABwBtAAjAbQAIwHDABcBowAgAMYAEwGWAAkBuwAjAS0AIQKaACUCNQAkAdwAHQGQACICSAAdAaAAJgDrAB0BfAANAXkAJgGUAAgCuwAOAhkAEgGkAAUBFwAPAOIABwD2AAEA+wABAd8AFAEcACICxgAVAeoAGAG0ABUA7AANAcYACQJHACIAxgAVAZcACgGNACcAugAkAnUAJQHRAB0BXQAZAekAJgHpABkB0QAhAOoAGgDoABEBLQAgAT4ACQJoAAgCBgAKAawACQEXABEBRQAYAU0ABAI8AAEA+v//ANIAEAENAC0CwAARAsAAEALAABECwAARAsAAEQLAABADWgAJA5AAIQG0AAABvQAjAbQAIwDG/7gAxgATAMb/+AI1ACMB3AAdAdwAHQHcABwB3AAcAdwAHQHlAA0BeQAPAXkAJQF5ACQBeQAlARwAJQHfABAB3wAUAd8AEgHfABEB3wARAd8AEgMTABUCxgAVAbQAFgG0ABUBtAAVAMb/tgDGABQAxv/4AdEAHQFdAAIBXQAZAV0AFwFd/+4BXQAZAWIADQEt/+kBLQAgAS0AHgEtAB8DUAAZArIAEgEJAAoBCQAKAOIABwDiAAMA9gAFALsABQBoAA0A0QAPANIAFQGOAAYA4QAXAOEAFgDfABYCowAGAfQAFQB6AAwB9AAAAfQAAAACAAAAAAAA/5YAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAABAAIAAwAEAAUABwAIAAkACwAMAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQBBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AowCFAI4AjQDeAKIArQDJAMcArgBiAGMAkABkAMsAZQDIAM8AzADNAGYA0wDQANEArwBnAJEA1gDUANUAaACJAGoAaQBrAG0AbABuAKAAbwBxAHAAcgB1AHQAdgB4AHoAeQB7AH0AfAChAH8AfgCAAIEAsACxAOYA5wDYAOEA2gDbANwA3QDgANkAtAC1AIcAxgC8AMMAAACsAAAAAAADAAAAAAAABegAAQAAAAAAHAADAAEAAAXoAAYFzAAAAAAC4QABAAAAAAAAAAAAAAAAAAAAAQADAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAwAEAAUAAAAGAAcACAAAAAkACgAAAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfAAAAIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5AAAAAAAAADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVwAAAFgAAAAAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABaAAAAAAAAAFsAAAAAAAAAAAAAAAAAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAAABoAGkAagAAAAAAawBsAG0AbgBvAHAAAABxAHIAcwB0AHUAAAAAAHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAAAAggCDAIQAAAAAAIUAhgCHAIgAiQCKAAAAiwCMAI0AjgCPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAJMAAAAAAAAAAAAAAAAAAAAAAAAAlACVAJYAlwCYAJkAmgCbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnACdAAAAAAAAAAAAngAAAJ8AAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjAKIABAJYAAAAQABAAAUAAAAiACYAKQA/AFoAegChAKMAqACvALQAuADKAM4A1gDcAOoA7gD2APwBUwF+AscCyQLcIBAgHSAiIDAgRCIZ//8AAAAgACQAKAArAEEAXgCgAKMAqACvALQAtwC/AMwA0QDYAN8A7ADxAPgBUgF9AsYCyQLYIBAgHCAiIDAgRCIZ//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAEAARABIAEoAcgCkANwA3gDeAN4A3gDeAOAA9gD6AQQBDAEiASYBMAE4AToBPAE+AT4BRgFGAUgBSAFIAUj//wADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgCjAFcAWABZAJYAWgChAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWAJcAmACZAJoAmwANAJwAnQCeAJ8AoAChAAAAAAAQAAAAqAkIBQABAQMCAwQFAwMEAgQCBQQCAwMDAwQDAgQCAgMEAwIGAwgFBAQEBAIEBAMGBQQEBQQCAwMEBgUEAwICAgQDBgQEAgQFAgQEAgYEAwQEBAICAwMGBQQDAwMFAgICBgYGBgYGCAgEBAQCAgIFBAQEBAQEAwMDAwMEBAQEBAQHBgQEBAICAgQDAwMDAwMDAwMDCAYCAgICAgIBAgIEAgICBgUBBQUAAAoJBQABAQMCBAUGAwMFAgQCBQUCBAMDBAUDAgQCAgMEAwMHAwkGBAQFBAIEBAMHBgUEBgQCBAQEBwUEAwICAwUDBwUEAgUGAgQEAgYFAwUFBQICAwMGBQQDAwMGAwIDBwcHBwcHCQkEBAQCAgIGBQUFBQUFBAQEBAMFBQUFBQUIBwQEBAICAgUDAwMDAwQDAwMDCAcDAwICAgIBAgIEAgICBwUBBQUAAAsKBgACAgQCBAUGAwMFAgQCBgUDBAQEBAUEAwUDAgMEAwMIAwoGBQUFBQIEBQMHBgUEBgUDBAQECAYFAwIDAwUDCAUFAwUGAgQEAgcFBAUFBQMDAwMHBgUDBAQGAwIDCAgICAgICQoFBQUCAgIGBQUFBQUFBAQEBAMFBQUFBQUJCAUFBQICAgUEBAQEBAQDAwMDCQgDAwICAwIBAgIEAgICBwYBBgYAAAwLBgACAgQDBAYHBAQGAgUDBgYDBQQEBAUEAwUDAwQFBAMIAwsHBQUFBQIFBQQIBwYFBwUDBQUFCAYFAwMDAwYDCQYFAwUHAgUFAggGBAYGBgMDBAQHBgUDBAQHAwMDCAgICAgICgsFBQUCAgIHBgYGBgYGBQUFBQMGBgYGBgYJCQUFBQICAgYEBAQEBAQEBAQECggDAwMDAwIBAwMFAwMDCAYBBgYAAA0MBwACAgQDBQYHBAQGAwUDBwYDBQQFBQYEAwYDAwQFBAMJBAwIBgYGBQMFBgQJBwYFCAUDBQUFCQcFBAMDAwYECQYGAwYIAwUFAggGBQYGBgMDBAQIBwYEBAQHAwMDCQkJCQkJCwwGBgYDAwMHBgYGBgYGBQUFBQQGBgYGBgYKCQYGBgMDAwYFBQUFBQUEBAQECwkDAwMDAwIBAwMFAwMDCQcCBwcAAA4NBwACAgUDBQcIBAQHAwUDBwcDBQUFBQYFAwYDAwQFBAQKBAwIBgYGBgMGBgQJCAcGCAYDBQUGCggGBAMDBAcECgcGAwYIAwYGAwkHBQcHBwMDBAQJBwYEBQUIBAMECgoKCgoKDA0GBgYDAwMIBwcHBwcHBQUFBQQHBwcHBwcLCgYGBgMDAwcFBQUFBQUEBAQEDAoEBAMDAwMBAwMGAwMDCQcCBwcAAA8OCAACAgUDBgcIBQUHAwYDCAcDBgUFBQcFBAcEAwUGBQQLBA0JBwcHBgMGBwUKCAcGCQYEBgYGCggGBAMEBAcECwcHBAcJAwYGAwkHBQcHBwQDBQUJCAYEBQUJBAMECwsLCwsLDQ4HBwcDAwMIBwcHBwcHBgYGBgQHBwcHBwcMCwcHBwMDAwcFBQUFBQUFBQUFDQoEBAMDBAMCAwMGAwMDCggCCAgAABAPCAACAgUEBggJBQUIAwYECAgEBgUGBgcFBAcEBAUGBQQLBQ4JBwcHBwMGBwULCQgGCQcEBgYGCwkHBAQEBAgFCwgHBAcJAwcGAwoHBggIBwQEBQUKCAcEBQUJBAMECwsLCwsLDg8HBwcDAwMJCAgICAgIBgYGBgUICAgICAgNCwcHBwMDAwcGBgYGBgYFBQUFDgsEBAQEBAMCAwMGBAQECwgCCAgAABEQCQACAgYEBggJBQUIAwcECQgEBwYGBggGBAcEBAUHBQUMBQ8KBwcIBwMHCAULCggHCgcEBgYHDAkHBQQEBAgFDAgHBAgKAwcHAwsIBggICAQEBQUKCQcFBgYKBAQFDAwMDAwMDxAHCAcDAwMKCAgICAgIBgYGBgUICAgICAgNDAcHBwMDAwgGBgYGBgYFBQUFDgwFBQQEBAMCBAQHBAQECwkCCQkAABIQCQADAwYEBwkKBgYJBAcECQkEBwYGBggGBAgEBAYHBgUNBRAKCAgICAQHCAUMCgkHCwcEBwcHDQoIBQQEBQkFDQkIBAgKBAcHAwsIBgkJCAQEBQYLCQgFBgYKBQQFDQ0NDQ0NDxAICAgEBAQKCQkJCQkJBwcHBwUJCQkJCQkODQgICAQEBAgGBgYGBgYFBQUFDwwFBQQEBAMCBAQHBAQEDAkCCQkAABMRCgADAwYEBwkLBgYJBAcECgkEBwYHBwkGBAgFBAYHBgUNBhELCAgJCAQICAYNCwkICwgEBwcIDQoIBQQFBQkFDQkIBAkLBAgIBAwJBwkJCQQEBgYMCggFBgYLBQQFDQ0NDQ0NEBEICAgEBAQLCQkJCQkJBwcHBwUJCQkJCQkPDQgICAQEBAkHBwcHBwcGBgYGEA0FBQQEBQQCBAQIBAQEDQoCCgoAABQSCgADAwcEBwoLBgYKBAgECgoFCAcHBwkHBQkFBAYIBgUOBhIMCQkJCAQICQYNCwoIDAgFCAgIDgsIBgUFBQoGDgoJBQkMBAgIBA0JBwoKCQUFBgYMCgkGBwcLBQQFDg4ODg4OERIJCQkEBAQLCgoKCgoKCAgICAYKCgoKCgoQDgkJCQQEBAkHBwcHBwcGBgYGEQ4FBQUFBQQCBAQIBQUEDgoCCgoAABUTCwADAwcFCAoMBgYKBAgFCwoFCAcHBwoHBQkFBQYIBgYPBhMMCQkJCQQJCQYODAoIDAkFCAgIDwsJBgUFBQoGDwoJBQoMBAkIBA0KBwoKCgUFBgcNCwkGBwcMBQQGDw8PDw8PEhMJCQkEBAQMCgoKCgoKCAgICAYKCgoKCgoRDwkJCQQEBAoHBwcHBwcGBgYGEg4GBgUFBQQCBAQIBQUFDgsDCwsAABYUCwADAwcFCAsMBwcLBAkFCwoFCAcICAoHBQoFBQcJBwYPBhQNCgoKCQQJCgcPDAoJDQkFCAgJDwwJBgUFBgsGEAsKBQoNBAkJBA4KCAsLCgUFBwcOCwkGBwcNBgUGDw8PDw8PExQKCgoEBAQMCgoKCgoLCAgICAYLCwsLCwsREAoKCgQEBAoICAgICAgHBwcHEw8GBgUFBQQCBQUJBQUFDwsDCwsAABcVDAADAwcFCQsNBwcLBQkFDAsFCQcICAsIBQoGBQcJBwYQBxQNCgoKCgUJCgcPDQsJDQoFCQkJEAwKBgUGBgsHEAsKBQoNBQkJBA4LCAsLCwUFBwcODAoGBwgNBgUGEBAQEBAQFBUKCgoFBQUNCwsLCwsLCQkJCQcLCwsLCwsSEAoKCgUFBQsICAgICAgHBwcHFBAGBgUFBgQCBQUJBQUFEAwDDAwAABgWDAADAwgFCQwNBwcMBQkFDAsGCQgICAsIBgoGBQcJBwYRBxUOCgoLCgUKCwcQDgsKDgoGCQkKEQ0KBwUGBgsHEQwKBgsOBQoKBA8LCAwMCwYGBwgPDAoHCAgOBgUGERERERERFRYKCwoFBQUOCwsLCwsMCQkJCQcLCwsLCwsTEQoKCgUFBQsICAgICAgHBwcHFBEGBgUFBgQCBQUKBQUFEAwDDAwAAAABAV0BkAAFAAICvAKKAAAAjwK8AooAAAHFADIBAwAAAAAEAAAAAAAAAAAAAAMAAAAAAAAAAAAAAABNQUNSAEAAICIZAyH/OQAAAyEAxwAAAAEAAAAAAAAAAQAAgAAAAACLAT8AAGAAAbQCdVlva2ttb2trICAgICAgICD/////N////llPS1IwMAAAAAAAAAABAAAAAQAAmJpL9V8PPPUAAAPoAAAAALfnFZIAAAAAt+cVkv+2/zkDawMhAAAAAwACAAEAAAAAAAEAAAMh/zkAAAOQ/7b/uANrAAEAAAAAAAAAAAAAAAAAAACkAAEAAACkAJgADQAAAAAAAgAIAEAACgAAAF0AvgABAAE=");
			}

		@font-face {
			font-family: 'yokkmokkOT_file';
			src: url('/fonts/yokkmokkOT.otf'); /* IE 5-8 */ 
			src: local('?'),             /* sneakily trick IE */
		        url('/fonts/yokkmokk.ttf') format('truetype'), /* Opera, Safari */
		        url('/fonts/yokkmokkOT.woff') format('woff'),    /* FF 3.6, Chrome 5, IE9 */
		        url('/fonts/yokkmokkOT.svg#font') format('svg'); /* iOS */
			}
	
		body { 
//			background: url("data:font/ttf;base64,AAEAAAAPADAAAwDAT1MvMlFdfQAAANO0AAAAVlBDTFRK3sYZAADUDAAAADZjbWFwIOwyJQAAwOwAAAhAY3Z0IFvZXQMAAAP8AAAAFGZwZ22DM8JPAAAD6AAAABRnbHlm/L/+SwAABDgAALYiaGRteC+LmY4AAMksAAAKiGhlYWTSA25fAADURAAAADZoaGVhBkUDJgAA1HwAAAAkaG10eAE0DCEAALzwAAACkGxvY2EAN7WQAAC6XAAAApRtYXhwASIBmQAA1KAAAAAgbmFtZT4kOPEAAAD8AAAC63Bvc3Qg7x7eAAC/gAAAAWpwcmVwCo0UlQAABBAAAAAoAAAAGAEmAAAAAAAAAAAAXAAuAAAAAAAAAAEAEACSAAAAAAAAAAIADgCpAAAAAAAAAAMASADzAAAAAAAAAAQAEAC/AAAAAAAAAAUATAFhAAAAAAAAAAYAEAG1AAAAAAAAAAcAAAHFAAEAAAAAAAAALgAAAAEAAAAAAAEACACKAAEAAAAAAAIABwCiAAEAAAAAAAMAJADPAAEAAAAAAAQACAC3AAEAAAAAAAUAJgE7AAEAAAAAAAYACAGtAAEAAAAAAAcAAAHFAAMAAQQJAAAAXAAuAAMAAQQJAAEAEACSAAMAAQQJAAIADgCpAAMAAQQJAAMASADzAAMAAQQJAAQAEAC/AAMAAQQJAAUATAFhAAMAAQQJAAYAEAG1AAMAAQQJAAcAAAHFQ29wci4xOTkzIEVsa2UgU3dpbGx1cywgRm9udFNob3AgSW50ZXJuYXRpb25hbABDAG8AcAByAC4AMQA5ADkAMwAgAEUAbABrAGUAIABTAHcAaQBsAGwAdQBzACwAIABGAG8AbgB0AFMAaABvAHAAIABJAG4AdABlAHIAbgBhAHQAaQBvAG4AYQBsWW9ra21va2sAWQBvAGsAawBtAG8AawBrUmVndWxhcgBSAGUAZwB1AGwAYQByWW9ra21va2sAWQBvAGsAawBtAG8AawBrTWFjcm9tZWRpYSBGb250b2dyYXBoZXIgNC4xIFlva2ttb2trAE0AYQBjAHIAbwBtAGUAZABpAGEAIABGAG8AbgB0AG8AZwByAGEAcABoAGUAcgAgADQALgAxACAAWQBvAGsAawBtAG8AawBrTWFjcm9tZWRpYSBGb250b2dyYXBoZXIgNC4xIDIwMDEtMTAtMDgATQBhAGMAcgBvAG0AZQBkAGkAYQAgAEYAbwBuAHQAbwBnAHIAYQBwAGgAZQByACAANAAuADEAIAAyADAAMAAxAC0AMQAwAC0AMAA4WW9ra21va2sAWQBvAGsAawBtAG8AawBrAEABACx2RSCwAyVFI2FoGCNoYEQt//wA7gFRAYcAKAAoWmJaYgACAARACQMDAgIBAQAAAY24Af+FRWhERWhERWhERWhEsQQERWhEsQUFRWhEAAIAPwAAAbYDIQADAAcAVkAgAQgIQAkCBwQEAQAGBQQDAgUEBQAHBgUBAgEDAAABAEZ2LzcYAD88LzwQ/TwQ/TwBLzz9PC88/TwAMTABSWi5AAAACEloYbBAUlg4ETe5AAj/wDhZMxEhESUzESM/AXf+x/r6AyH83z8CpAAHABj/9AEsAh0ACQATAB0AKQA1AEEASgB8QDUBS0tATB4WDAJGPAkFBAAPDgQTCkIENioEHh0UBBkYMAQkJwUtSAU5PwVEMwUhGxEHIQEkRnYvNxgALy88PBD9L/0v/S/9AS/9Lzz9PC/9L/0vPP08Li4uLi4uAC4uLjEwAUlouQAkAEtJaGGwQFJYOBE3uQBL/8A4WRMUIyI9ATQzMhUHFCMiPQE0MzIVBxQjIj0BNDMyFRMUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUBiMiJjU0NjMyFgc0IyIVFDMyNvsUFBQURRMUFBNHFBQUFL1QOjpQUDo6UCg5KSk5OSkpORwpHR0oKB0dKSgeHR0MEgF/ExOKFBTaExPaFBSKExOKFBT+dTpQUDo6UFA6KTo6KSk5OSkdKCgdHSgoHR0dHhIAAwAXATwAyQGzAAkAEwAdAFRAHgEeHkAfAAUEBAkAEwoEDw4dFAQZGBsRBxYMAgEYRnYvNxgALzw8Lzw8AS88/TwvPP08Lzz9PAAxMAFJaLkAGAAeSWhhsEBSWDgRN7kAHv/AOFkTFCMiPQE0MzIVBxQjIj0BNDMyFQcUIyI9ATQzMhXJExQUE0UUFBQURRQUFBQBTxMTUBQUUBMTUBQUUBMTTxQUAAgADP/iAW8BqAALABUAHwAxAEMATQBXAGMAkkBAAWRkQGUAVUsyLyMYDgNeU1JNSUhEQjotJRUMACAEBhEQBCkGGxoEHxY1BD5XTgRYPmEFW1BGOAMdEwMJAwFeRnYvNxgAPz88Py88L/0BLzz9PBD9Lzz9PC88/TwQ/S4uLi4uLi4uLi4uLi4uAC4uLi4uLi4uMTABSWi5AF4AZEloYbBAUlg4ETe5AGT/wDhZARQGIyImNTQ2MzIWBxQjIj0BNDMyFQcUIyI9ATQzMhUTFAYjIjU0MjY1NCYiNTQzMhYnIiY1NDYzMhUUIgYVFBYyFRQXFCMiPQE0MzIVBxQjIj0BNDMyFQcUBiMiJjU0NjMyFgFvFxARFxgQEBdPFBQUFEUUFBQUbTQlEycdHScTJTS8JTQ0JRQoHR0oKBQUFBRFFBQUFCgYDxEXFxEQFwFZERcXEREXGEsTE3YUFHYTE3YUFP7iJTQUEx4UFB0UFDQgNCUlNBQUHRQUHRQUxRQUdhQUdhQUdhQUOxAXFhEQFxcAAAoACv/fAdcBrAANABkAJwAzAEEATwBbAGcAbwB3AJJAQwF4eEB5KEw3HQNOQDkmHwVWBEcUXAQMKHQEcA4EUGgEbC4EYmUFK1MFF2oFbjEFX3YFchEFWQoXRStuAz4BJAIBFEZ2LzcYAD8/Py88Lzwv/S/9L/0Q/RD9EP0BL/0v/S/9L/0vPP0vPP0uLi4uLi4ALi4uLjEwAUlouQAUAHhJaGGwQFJYOBE3uQB4/8A4WQEHBiMiNTQ/ATYzMhUUBRQGIyImNTQ2MzIWFwcGIyI1ND8BNjMyFRQXFAYjIiY1NDYzMhYnBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUJzQmIyIGFRQWMzI2ATQmIyIGFRQWMzI2ARQjIjU0MzIBFCMiNTQzMgHQfgYIFAZ+BggU/uY0JSU0NCUlNFqDBggUBoIHCBS7NCYlNDQlJTVyfgYIFQZ/BggVwn0GCBQGfQYIFBwdFBQeHhQUHQEbHhQUHR0UFB7+yBQUFBQBGhQUFBQBiX4GFAgGfgYUCD0lNDQlJjQ1VYMGFQgGggcVCPAlNDQlJTQ0bX4GFAgGfwYUCG59BhQIBn0GFAjpFB4eFBQdHf76FB0dFBQeHgEvFBQU/tEUFBQAAAEAFAAAAhYBRgBJAKFAUQFKSkBLODs6NjUvLiopD0Y/OCwlHg0wLykoIiEbBxoESUM8OzU0AAdCFgQGGhkFAhMFCURDIQMgBUlIHAMbQkEjAyIFPTwoAycyAgMCAAEGRnYvNxgAPzw/Lxc8/Rc8Lxc8/Rc8L/0Q/TwBL/0vFzz9FzwuLi4uLi4uAC4uLi4uLi4uLjEwAUlouQAGAEpJaGGwQFJYOBE3uQBK/8A4WSUUIyEiJjU0NjMyFxYVFCMiJyYjIgYVFBY7ATUhIjU0MyE1ISI1NDMhNSMiNTQ7ATU0MzIdATMyFRQrARUzMhUUKwEVMzIVFCsBAccU/vc+WFg+OCoIFAcGIictQUEt9f7VExMBK/7VExMBKzwTEzwUFDsUFDs7FBQ8PBQUOxQUVj4+WSUHCRMFG0EuLUI0FBQdFBQdFBQnFBQnFBQdFBQdFBQAAwAJACUBIQFmABQAJgA7AF9AJAE8PEA9LDUqEAUCATozMCwlIB0aDgsHCQQTAgADASIYAwEARnYvNxgAPy8BLxc8/S4uLi4uLi4uLi4uAC4uLi4uLjEwAUlouQAAADxJaGGwQFJYOBE3uQA8/8A4WTc1Mzc2MzIVFAcGBxcWFRQjIi8BJj8BNjMyFRQPARcWFRQjIi8BJj8BNjMyFRQHBgcXFhUUIyIvASY1NBIBPAcJFAQZGzQFFgkGPQlhawYJFARjYwQUCQZtCmM8BgkVBBkbNAQVCQY6Bs8CTgkUBgYhIkIGBhQITgsQiggUBgaBgQYGEwiNDglOCBQGBSEiQgUHFAhLBwgGAAADABEAJQEpAWYAEgAkADcAVkAeATg4QDklMyggFjYxLSolIx4bGBMNCgcCBQ8DARhGdi83GAA/LwEuLi4uLi4uLi4uLi4uLgAuLi4uMTABSWi5ABgAOEloYbBAUlg4ETe5ADj/wDhZNxYPAQYjIjU0PwEnJjU0MzIXFg8BBiMiNTQ/AScmNTQzMh8BFhcHBiMiNTQ/ASYnJjU0MzIfARbJCwptBgoUBGRkBBUJBm1aOwYJFQQzMwQUCgY7C6Q8BgkVBDMNJgQVCQY8CtELDI0IEwcFgYEFBhUIjBlOCBUGBUJDBQcTCE0LD00IFAYGQhIwBQcUCE4NAAUAFAABAdoBjAAJABcAIQAvADkAgkA8ATo6QDsWNycWOTAvAyIENTQrAyoREAUDBAQMCwkDAB0cBCEYAgUTJSQUAxMFCwoyGg4qKQEtHwcDASdGdi83GAA/PDw/PC88PC88/Rc8EP0BLzz9PC8XPP0XPC8XPP0XPC4uAC4xMAFJaLkAJwA6SWhhsEBSWDgRN7kAOv/AOFkBFCMiPQE0MzIVFyMVFCMiPQE0OwEyFRQHFCMiNRE0MzIVBxQrASI1NDsBNTQzMhURFCMiPQE0MzIVAVAUFBQUdnYUFBSKFM8UFBQURhOLExN3FBMTFBQTAQETE3cUFNqJFBSdFBQUihMTAWQUFJ4UFBSKFBT+nBMTdxQUAAIACv85ALwAKAAJABMAR0AXARQUQBUIEQgDDw4EEwoGBQwBAAABA0Z2LzcYAD88Ly88AS88/TwuLgAuMTABSWi5AAMAFEloYbBAUlg4ETe5ABT/wDhZMyMiNTQ7ATIVFAcUIyI9ATQzMhWoixMTixRFFBQUFBQUFBSzFBSKFBQAAwARAGgBdQEZAAkAEwAdAFhAIAEeHkAfCBwXEg0IAxoZBRQBAAUFEA8FCwoGBRUUAQ1Gdi83GAAvPC88Lzz9PBD9PBD9PAEuLi4uLi4AMTABSWi5AA0AHkloYbBAUlg4ETe5AB7/wDhZJSMiNTQ7ATIVFAchIjU0MyEyFRQHIyI1NDsBMhUUAWHFExPFFBT+xBQUATwUi8UUFMUU8RQUFBREFBQUFEUUExMUAAMAFv/zAMkApgALABcAHwBPQB0BICBAIQAYBBwMBAASBAYeBRoPBQkVBQMJAwEGRnYvNxgALy8Q/RD9L/0BL/0v/S/9ADEwAUlouQAGACBJaGGwQFJYOBE3uQAg/8A4WTcUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUIyI1NDMyyTUlJTQ0JSY0KB0VFB0dFBUdHhQTExRMJTQ0JSU1NCYVHR0VFB0dFBMTFAAEABX/4AHhAasADQAbACkANwBPQBsBODhAOQw0HxEDNi8oIRoTDAUKLSYBGAIBL0Z2LzcYAD8/Ly8BLi4uLi4uLi4ALi4uLjEwAUlouQAvADhJaGGwQFJYOBE3uQA4/8A4WQEHBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQXBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUAdt+BggVBn4GCBXBggYIFQaDBwcUSn8GCBUHfgYIFcF9BggVBn0GCBUBiX4GFAgGfgYUCG2DBhUIBoIHFQhefgYTCAd/BhUIbX0GFAgGfQYUCAAABQAd//MBvwGXAAsAFwAjAC8ANwBqQC4BODhAOQAMBAASBAYkBBgqBB4wBDQPBQknBSEVBQMtBRsyBTYDNgEhAgkDAQZGdi83GAA/Pz8vEP0v/RD9EP0Q/QEv/S/9L/0v/S/9ADEwAUlouQAGADhJaGGwQFJYOBE3uQA4/8A4WSUUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUIyI1NDMyAb96V1d6eldXeidkRkZkZEZGZC5INDRJSTQ0SCgxIyMyMiMjMTYeHh4exVd7e1dXe3tXRmRjR0ZkZEY0SUk0NElJNCMyMiMjMjIjHR0dAAMAGwABAM0BjAAJABMAHQBXQCABHh5AHwAMAhMKBA8OGAUEBAkAHRQEGRgWGxEHAwEORnYvNxgAPzw8LwEvPP083Tz9PBDdPP08AC4uMTABSWi5AA4AHkloYbBAUlg4ETe5AB7/wDhZNxQjIj0BNDMyFQcUIyI9ATQzMhUTFCMiNRE0MzIVzRQUFBSKFBQUFEUUFBQU7RMTixQUixMTixQU/pwTEwFkFBQAAwARAAABcwG0ABcAKQA3AGhAKQE4OEA5KDQgDgI2LyglIhsFBAQXAAwLBBEQCAUUJiUFGBQtGRgAAS9Gdi83GAA/PDwvEP08EP0BLzz9PC88/TwuLi4uLi4ALi4uLjEwAUlouQAvADhJaGGwQFJYOBE3uQA4/8A4WQEUIyI9ATQmIyIGHQEUIyI9ATQ2MzIWFRMjIjU0PwE2MzIVFA8BMzIVFAsBBiMiNTQ3EzYzMhUUAUcUFDkpKDoUFFE5OVEY2RcGWQYKFgREsxR+vgYKFgS/BgoVAR8UFAopOjopChQUCjlSUjn+1xAHCIEJFAYFYhQUAR7+6wkUBgUBFQkUBgAAAwAZ//QBMAGLABEAHwA5AGJAJgE6OkA7EDYoHBUJAzQXEAsIBQ0JBCYwBCAeLQUjIw4NAwgCASZGdi83GAA/PzwvEP0BLzz9L/08Li4uLi4uAC4uLi4uLjEwAUlouQAmADpJaGGwQFJYOBE3uQA6/8A4WQEHBiMiNTQ/ASMiNTQ7ATIVFA8BBiMiNTQ/ATYzMhUUFRQGIyImNTQzMhUUFjMyNjU0JyY1NDMyFxYBJI4GBRQJWZkTE9kXDK0GBRQJrQUGFFA6OlAUEzopKTkPBBUKBhYBZmEEFgoGPBQUEgthdQQVCwZ1BBYKlTpQUDoUFCk5OigfFgYGFAojAAAFACUAAQFEAdsADQAXACEAKwA1AHtAMwE2NkA3DDMpHyEYDAkIBAMdHAQKADUsBDEwJyYEKyIXDgQTEgoJBRABABUuJBoGAgESRnYvNxgAPy88PC8vPDz9PAEvPP08Lzz9PC88/TwvPP08Li4uLi4uLgAuLi4xMAFJaLkAEgA2SWhhsEBSWDgRN7kANv/AOFklIyI9ATQzMh0BMzIVFCcUIyI1ETQzMhUTFCMiPQE0MzIVBxQjIj0BNDMyFQcUIyI9ATQzMhUBMLEUFBOeFPcUFBQU4xQUFBRFFBQUFEUUFBQUnhSKFBR2FBQUExMBFRQU/k0TE2MUFGMTE2MUFGMTE2MUFAAAAwAn//QBPQGLAA0AFwAyAGdAKQEzM0A0DC4gFRAELCgEGAwXDgQTEgIBBB4HBgEABQklBRsbCgkDAQZGdi83GAA/PC8Q/RD9PAEvPDz9PC88/TwvPP0uAC4uLi4uMTABSWi5AAYAM0loYbBAUlg4ETe5ADP/wDhZASMVFCMiPQE0OwEyFRQHFCMiPQE0MzIVFxQGIyImJyYzMhceATMyNjU0JyY1NDMyFx4BASnVFBQU6RSoFBQUFKhROjBKCwYZDwQJNCIpOkIOFAQEKTMBY3gTE4wUFBTRFBSUFBSoOlA7LRkPICo6KEYXBQ0WAhBHAAAFABf/9AG4AdsADQAbACkANQBBAFtAIgFCQkBDDB8RAyghGhMMBTYEKjwEMDkFMz8FLSYYCi0BMEZ2LzcYAC8vPDwQ/S/9AS/9L/0uLi4uLi4ALi4uMTABSWi5ADAAQkloYbBAUlg4ETe5AEL/wDhZAQcGIyI1ND8BNjMyFRQPAQYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUExQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2AbN9BgkWBX0GCRZpfQYJFQR9BgkVaXwGChUFfAYJFT5ROTpRUTo5USg5KSk6OikpOQG5nggVBwaeCBUHBJ8IFAYGnwgUBgafCBQGBp8IFAb+vTpQUDo6UFA6KTo6KSk5OgADABAAAQEuAYwACQATACEAYEAmASIiQCMAFgIcDw4EEwoFBAQJACEUBBkYGhkFBwwfHhEDBwMBHEZ2LzcYAD8XPC8Q/TwBLzz9PC88/TwvPP08LgAuLjEwAUlouQAcACJJaGGwQFJYOBE3uQAi/8A4WSUUIyI9ATQzMhUDFCMiNRE0MzIVBxQjIj0BIyI1NDsBMhUBLhQUFBRGExQUE0UUFFgTE2wU7RMTixQU/pwTEwFkFBSLExN3FBQUAAQAIv/zAMkBlgALABYAIQA9AGxALAE+PkA/JDQwJiIZFQAEPCgkHw8GBDYyLhwFOQ0MBSEXEgUDCQUrKzkDAS5Gdi83GAA/LxD9L/0vPP08EP0BLzw8/Tw8Lzw8/Tw8Li4uLgAxMAFJaLkALgA+SWhhsEBSWDgRN7kAPv/AOFk3NCYjIgYVFBYzMjYnIwYVFBYzMjY1NCc2NTQmIyIGFRQfARYVFAcWFRQGIyImNTQ3JjU0NyY1NDYzMhYVFKEaERIaGhIRGiUNJRoSERolJRoREholPB4dHTEiIjIdHR4eMSMiMUcSGRkSEhoauwckEhkZEiQvBSYRGhoRJgUUGyQlGholIjIyIicYGCcmGRgnIjExIiYABQALAAABqwHnAAsAGQAnADUAQQBkQCgBQkJAQwAyJBY0LSYfGBE8BAY2BAAfBQ85BQkDBT8JPwErHQ8AAS1Gdi83GAA/PDw/LxD9EP0Q/QEv/S/9Li4uLi4uAC4uLjEwAUlouQAtAEJJaGGwQFJYOBE3uQBC/8A4WQEUBiMiJjU0NjMyFg8BBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQPAQYjIjU0PwE2MzIVFDc0JiMiBhUUFjMyNgGrUTo5UVE5OlE2fQYKFAV8BgkWa3wGCRYFfQYKFGh8BwkVBXwHCRXSOikpOjsoKToBXTpRUTo5UVHwnggTBwaeCBQGBp4IFAYGnggTBwadCBMHBp0IEwexKDo6KCg7OwAGACH/9ADUAWsACwAXACMALwA3AD8AbkAvAUBAQEEAJBgEDAA4MAQ0PB4qBAYSMgU2AwUhPgU6GwUJFQUnLQUPDyEBCQMBEkZ2LzcYAD8/LxD9L/0Q/S/9EP0v/QEvPP08Lzz9PC88/TwAMTABSWi5ABIAQEloYbBAUlg4ETe5AED/wDhZExQGIyImNTQ2MzIWFRQGIyImNTQ2MzIWJzQmIyIGFRQWMzI2FTQmIyIGFRQWMzI2JxQjIjU0MzIVFCMiNTQzMtQ0JSU0NCUlNDQlJTU1JSU0KB0UFB0dFBQdHRQUHh4UFB0dFBMTFBQUFBQBEiUzMyUlNDTrJDQ0JCY0NaEUHR0UFB0dshUdHRUTHRzaExMU2hMTFAAFABf/OQDJAO4ACwAVAB8AKwAzAGpALAE0NEA1AB0gBBQALB8WBDAbGiYEDwYjBQkuBTIDBSkSEQUMGA0MAAkBAQZGdi83GAA/PzwvEP08L/0v/RD9AS88/S88PP08PC88/QAuMTABSWi5AAYANEloYbBAUlg4ETe5ADT/wDhZNxQGIyImNTQ2MzIWByMiNTQ7ATIVFAcUIyI9ATQzMhU3NCYjIgYVFBYzMjYnFCMiNTQzMsk0JSU0NCUlNBSLExOLFEUUFBQUHh4UFB0dFBQeHhQUFBSVJTQ0JSU0NLoUFBQUsxQUjBMTvBQdHRQUHR0UFBQUAAADAAkAJQEhAWYAFAAmADsAX0AkATw8QD0sNSoQBQIBOjMwLCUgHRoOCwcJBBMCAAMBIhgDAQBGdi83GAA/LwEvFzz9Li4uLi4uLi4uLi4ALi4uLi4uMTABSWi5AAAAPEloYbBAUlg4ETe5ADz/wDhZNzUzNzYzMhUUBwYHFxYVFCMiLwEmPwE2MzIVFA8BFxYVFCMiLwEmPwE2MzIVFAcGBxcWFRQjIi8BJjU0EgE8BwkUBBkbNAUWCQY9CWFrBgkUBGNjBBQJBm0KYzwGCRUEGRs0BBUJBjoGzwJOCRQGBiEiQgYGFAhOCxCKCBQGBoGBBgYTCI0OCU4IFAYFISJCBQcUCEsHCAYAAAMAEQBoAXUBGQAJABMAHQBYQCABHh5AHwgcFxINCAMaGQUUAQAFBRAPBQsKBgUVFAENRnYvNxgALzwvPC88/TwQ/TwQ/TwBLi4uLi4uADEwAUlouQANAB5JaGGwQFJYOBE3uQAe/8A4WSUjIjU0OwEyFRQHISI1NDMhMhUUByMiNTQ7ATIVFAFhxRMTxRQU/sQUFAE8FIvFFBTFFPEUFBQURBQUFBRFFBMTFAADABEAJQEpAWYAEgAkADcAVkAeATg4QDklMyggFjYxLSolIx4bGBMNCgcCBQ8DARhGdi83GAA/LwEuLi4uLi4uLi4uLi4uLgAuLi4uMTABSWi5ABgAOEloYbBAUlg4ETe5ADj/wDhZNxYPAQYjIjU0PwEnJjU0MzIXFg8BBiMiNTQ/AScmNTQzMh8BFhcHBiMiNTQ/ASYnJjU0MzIfARbJCwptBgoUBGRkBBUJBm1aOwYJFQQzMwQUCgY7C6Q8BgkVBDMNJgQVCQY8CtELDI0IEwcFgYEFBhUIjBlOCBUGBUJDBQcTCE0LD00IFAYGQhIwBQcUCE4NAAMAKv85ANwCRAALABcAYACEQDkBYWFAYgxOKltaUERDLEc6AARXGwxeIwYEQDMSSgVUW1oFREM9BRg3NgUgJgUwFQUDCQUPVA8BEkZ2LzcYAC8vEP0v/S/9L/08L/0vPP08EP0BLzw8/Tw8Lzw8/Tw8Li4uLi4uAC4uMTABSWi5ABIAYUloYbBAUlg4ETe5AGH/wDhZFzQmIyIGFRQWMzI2NxQGIyImNTQ2MzIWAzIWFRQGBwYjIgYVFBYzMjc2MzIVFAcGIyImNTQ2NzMyNjU0JiMiJjU0NjMxMjY1NCYjIgcGIyI1NDc2MzIWFRQGIzEiBhUUFrQdFBQdHRQUHSg0JSU0NCUlNFklNC8jAwQUHR0UHg4GDBUCGTglNC8iCBQdHRQlNDQlFB0dFBkOBwoVBBkwJTQ0JRQdHW4UHR0UFB0dFCU0NCUlNDQBeTQlIzIDAR0UFB0cDBQFBTI0JSI0Ax0UFB00JiU0HRQUHRQKFAYGJTMlJTQdFBUdAAACABEAAAKyAZsAKwA1AFlAIQE2NkA3AhMQDQoHNC8YAjIxBS0sJiABKSMdAxYEAAEYRnYvNxgAPzw/PDw/PC88/TwBLi4uLgAuLi4uLjEwAUlouQAYADZJaGGwQFJYOBE3uQA2/8A4WSUWFRQjIicDBwYjIi8BBwYjIi8BAwYjIjU0NxM2MzIfATc2MzIfATc2MzIXAyEiNTQzITIVFAKxARUNBWdNBwsLB1FRBwwLB0xnBQ4VAXgGDAwHUFEHDAsHUFAHDA0FE/52ExMBihQaAwQTDgE/ow8PqqoPD6P+wQ4TBAMBcBEPqqoPD6qqDxH+2hQTExQAAAIAJP/FAQMBjAAWADkAbkArATo6QDsDOSonJh0cExIANzUzLSwoJyMfGRcVCQ8EAwwLBQYHBjAvAwEJRnYvNxgAPzwvPBD9PAEv/S4uLi4uLi4uLi4uLi4ALi4uLi4uLi4uMTABSWi5AAkAOkloYbBAUlg4ETe5ADr/wDhZNxcWFRQGKwEiNTQ7ATI2NTQmKwEiNTQzMjU0JisBIjU0MzI1NCYrAREUIyI1ETQ7ATIWFRQHFhUUB3NWOjsqZhQUZhkkIxorExNRHRUfFBQ5Fg87FBQUTyAtGDAjjwkbQik7FBQjGRokFBQxFB0UFCUQFv6wExMBZBQuIBoVGTYgGgADAB//9ANoAZgADQA9AE4AdkAxAU9PQFAUMCwkFkI+JhQKAAUENQxABB1KBAxEGgIFEE0gCAUqMi4qPDgQAzoOAwE1RnYvNxgAPzw/PDwvPDwQ/Tw8EP08PAEv/d39EN39Li4uLi4uAC4uLi4xMAFJaLkANQBPSWhhsEBSWDgRN7kAT//AOFkBJiMiBhUUFjMyNyY1NCU2MzIXFhUUIyInJiMiBhUUFjMyNzYzMhUUBwYjIicGIyInBiMiJjU0NjMyFzYzMhMmNTQ3JiMiBwYjBhUUFjMyAUcoL0ZjY0YvKDsBSDRCXDwGFAgGM0lGY2NGSzEGCBQGQFhBNTg+QDc1QlZ7e1ZCNDdBPxc7OyguOy8BAT5kRi4BWBhkR0ZjGD1UVVgmQgYIFAY2ZEdGYzQHFAgGQSUlJSV7Vlh7Jib+nDtWWDsYJQE0UUZjAAYAHP//AjQBjAATACcAOwBFAE8AWQCEQDwBWlpAWwBXUkM+IhoOBgoEAB4EFDIEKEU8BEE3LQNAT0YES0pZUARVVEpGBQRNOSQDEANIKxgDBAABVEZ2LzcYAD8XPD8XPBD9PAEvPP08Lzz9PC8XPP08L/0v/S/9Li4uLgAuLi4uMTABSWi5AFQAWkloYbBAUlg4ETe5AFr/wDhZJRQHBiMiNTQ3NjU0JyY1NDMyFxYHFAcGIyI1NDc2NTQnJjU0MzIXFgcUBiMiNTQzMjY1NCYjIjU0MzIWBxQjIj0BNDMyFQMUIyI1ETQzMhUDFCMiPQE0MzIVAjQ2BgoUAy8wAxQLBjZQSwYIFAY/QwcVCAZPT3RSExNCXFxCExNTc7MUFBQUTxQUFBRPFBQUFMVkVwoTBgVOWVlPBQYUClNrbVEHFAgGRV5iQwcIFAZRcFJzFBRcQUJcFBRzoRMTnRQU/wATEwFkFBT+/xMTnRQUAAcAIwAAAa4BjAAJABMAHQAnADEAOwBFAJFAQAFGRkBHCEQ/OjUwKyYhHBcSDQgDCwoFDx8eBSMBAAUGBS4tBSkoGhkFFRQ4NwUzMkJBBTw9PAAkIwIQDwMBIUZ2LzcYAD88Pzw/PBD9PC88/TwvPP08Lzz9PC88/TwQ/TwQ/TwBLi4uLi4uLi4uLi4uLi4AMTABSWi5ACEARkloYbBAUlg4ETe5AEb/wDhZJSMiNTQ7ATIVFCcjIjU0OwEyFRQXIyI1NDsBMhUUJyMiNTQ7ATIVFAcjIjU0OwEyFRQHIyI1NDsBMhUUByMiNTQ7ATIVFAGadxMTdxSL7BMT7BRjdxMTdxSL7RMT7RQU7BMT7BQU7RMT7RQU7BMT7BTrFBQUFHkUFBQU6xQUFBSrFBQUFHIUFBQUchQUFBRAFBQUFAAABQAjAAEBrgGMAAkAEwAdACcAMQBzQDEBMjJAMwgvJhwSCAMxKAQtLCENBBcLCgUPFRQFGQEABQYFJCMFHx4qGhkCEA8DARdGdi83GAA/PD88Ly88/TwvPP08EP08EP08AS8XPP08Li4uLi4ALjEwAUlouQAXADJJaGGwQFJYOBE3uQAy/8A4WSUjIjU0OwEyFRQnIyI1NDsBMhUUByMiNTQ7ATIVFAcjIjU0OwEyFRQHFCMiPQE0MzIVAZp3ExN3FIvsExPsFBTtExPtFBTsExPsFOwUFBQU6xQUFBR5FBQUFEAUFBQUchQUFBSeExN5FBQAAAEAF//0AaIBlwA0AHhANAE1NUA2DyIxLiAKAzQHBgMABBAPKQQZCAcFDCYFHAYFBQEANDMFLy4sBRYWHAMNDAEBGUZ2LzcYAD88Py8Q/S88/TwvPP08EP0Q/TwBL/0vPP0XPC4uLi4uAC4xMAFJaLkAGQA1SWhhsEBSWDgRN7kANf/AOFklIyI1NDsBNSMiNTQ7ATIdARQGFQ4BIyImNTQ2MzIXFhUUIyInJiMiBhUUFjMyNyMiNTQ7AQF6sRQUsbEUFMUUAhtjOld6eldIPAcUBwYtPUZjY0ZBMJAUFLGOFBQfFBMUfwIFAjE7eldXey8GCBUFJWRGRmMrFBQABAAg/7MBhAG0ABEAGwAlADcAiEA7ATg4QDkmLSwrKiQaBDcmDQwEEQALCgQGBR8VBDIxAwIFCxMSBRgXIiEFHRw1NAUsKw8ILygMCwIBMUZ2LzcYAD88LzwvPC88/TwvPP08Lzz9PBD9PAEvPP08Lzz9PC88/TwvPP08Li4uLgAxMAFJaLkAMQA4SWhhsEBSWDgRN7kAOP/AOFkBFCsBIj0BNDMyHQEzNTQzMhUXIyI1NDsBMhUUByMiNTQ7ATIVFBcUIyI9ASEVFCMiPQE0MyEyFQE0FJ0UFBR1FBQU7BQU7BQU7BQU7BQoFBT+7BQUFAE8FAE2FBRqFBRWVhQUxRQUFBRIFBQUFMwUFIWFFBSZFBQABQATAAEAsgIWAAsAFwAhAC0AOQBrQC0BOjpAOwAfLiIEDAAhGAQdHDQoBBIGJQUJAwUrMQUVDwU3CRo3ASsDFQIBBkZ2LzcYAD8/Py8vEP0Q/RD9EP0BLzz9PC88/TwvPP08AC4xMAFJaLkABgA6SWhhsEBSWDgRN7kAOv/AOFkTFAYjIiY1NDYzMhYVFAYjIiY1NDYzMhYDFCMiPQE0MzIVEzQmIyIGFRQWMzI2FTQmIyIGFRQWMzI2si4hIS8vISEuLiEhLy8hIS47FBQUFBMXEBEXFxEQFxcQEBgYEBAXAcchLi4hIS4u2iEvLyEhLi7+5RMTexQUATgQFxcQEBcXqRAXFxAQGBgAAAYACf/1AYUCFgALABcALQBBAE0AWQB6QDUBWlpAWwBANioiNCwgTkIELgwAEgYEVEhFBQkDBUtRBRUPBVcmBRs7BTEJMVcBSwMVAgE0RnYvNxgAPz8/Ly8Q/S/9EP0Q/RD9EP0BLzz9PC88PP08Li4uAC4uLi4xMAFJaLkANABaSWhhsEBSWDgRN7kAWv/AOFkBFAYjIiY1NDYzMhYVFAYjIiY1NDYzMhYHDgEjIiYnJjU0MzIXFjMyNzYzMhUUNw4BIyImJyYzMhceATMyNjc2MzIDNCYjIgYVFBYzMjYVNCYjIgYVFBYzMjYBgS4hIS4uISEuLiEhLi4hIS5MDTwmJTwNAhUNBRQ1NRUFDRVJDWlERGcNBRgQAwtSNTZTCwMQGCsYEBAXFxAQGBgQEBcXEBAYAcchLi4hIC8v2iEuLiEhLy+nISoqIQQEEwwyMgwTBAFBVlVBFxAzQkM0EAEjEBcXEBAXF6oQGBcREBcXAAAEACMAAAGtAYwADQAfAC0AOwBgQCUBPDxAPQI5GRELNzApIh4JAhkYBBQTAgUyJAQyACsBHBYDARNGdi83GAA/PD8/PDwQ/QEvPP08Li4uLi4uLgAuLi4uMTABSWi5ABMAPEloYbBAUlg4ETe5ADz/wDhZJRYVFCMiLwEmNTQzMhc3BwYjIj0BNDMyHQE3NjMyFRQTFhUUIyIvASY1NDMyHwEWFRQjIi8BJjU0MzIXAakEFQkGsAQVCAYHuwkIEBQUmgYHFUYEFQkGjwQVCAYzBBQJBm8EFQkGHwUGEwj7BQYUCEyUBxeUFBRrewUWCf6yBQYTCMwFBhQIzgUGEwieBQYUCAAAAwAhAAABIgHHAAkAFwAhAGBAJQEiIkAjFh8aEAIWBQQECQAhGAQdHBMSBA4NFBMFCgcLCgABDUZ2LzcYAD88LxD9PAEvPP08Lzz9PC88/TwuAC4uLi4xMAFJaLkADQAiSWhhsEBSWDgRN7kAIv/AOFk3FCMiNRE0MzIVEyMiPQE0MzIdATMyFRQnFCMiPQE0MzIV0xQUFBQ72RQUFMUUkxQUFBRZExMBWhQU/k0U2RQUxRQUWRMTTxQUAAABACUAAQJ3Ac0AJwBXQB8BKChAKQAiHBEOCwgFBQQEJwASEQQXFiUfGRQCARZGdi83GAAvPC88PAEvPP08Lzz9PAAuLi4uLi4uMTABSWi5ABYAKEloYbBAUlg4ETe5ACj/wDhZJRQjIjURBwYjIi8BBwYjIi8BERQjIjURNDMyHwE3NjMyHwE3NjMyFQJ3FBRlBwoLB3l5BwsKB2UUFBMMB3l5BwsKB3h5BwwTFBMTAU7MDg7z8w4OzP6yExMBohcO9fUODvT0DhcAAQAkAAECJgHOACMATEAZASQkQCUiIB0XDAkGAyINDAQSERQaDwERRnYvNxgALy88AS88/TwuAC4uLi4uLi4xMAFJaLkAEQAkSWhhsEBSWDgRN7kAJP/AOFkBAwYjIi8BBwYjIi8BERQjIjURNDMyHwE3NjMyHwE3NjMyFRQCJHcGDAwGZGQGDQwGUBQUEw0GZGUHCwsHZGQFDRUBrv7oDw/t7Q8Pvv7AExMBohYO7e0QEO3tDBMFAAUAHf/zAb8BlwALABcAIwAvADcAakAuATg4QDkADAQAEgQGJAQYKgQeMAQ0DwUJJwUhFQUDLQUbMgU2AzYBIQIJAwEGRnYvNxgAPz8/LxD9L/0Q/RD9EP0BL/0v/S/9L/0v/QAxMAFJaLkABgA4SWhhsEBSWDgRN7kAOP/AOFklFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFCMiNTQzMgG/eldXenpXV3onZEZGZGRGRmQuSDQ0SUk0NEgoMSMjMjIjIzE2Hh4eHsVXe3tXV3t7V0ZkY0dGZGRGNElJNDRJSTQjMjIjIzIyIx0dHQADACIAAQF9AYwAEwAvADkAbkAuATo6QDsAJw4GIAQUCgQAJSQEKhopOTAENTQkIwUQHRwFGAQXMjctLAMQAwE0RnYvNxgAPxc8Ly88PP08EP08AS88/TwvPDz9PC/9L/0uLgAuMTABSWi5ADQAOkloYbBAUlg4ETe5ADr/wDhZARQHBiMiNTQ3NjU0JyY1NDMyFxYHFAYrASI1NDsBMjY1NCYrARUUIyI9ATQ7ATIWAxQjIjURNDMyFQF9IgYKFAMbGwMUCgYiVkgyKBMTKCIxMSIUFBQUKDJI3RQUFBQBET00CRQFBiswMSsGBRQJND4zSBQUMSIiMVMTE2cUSP7QExMBZBQUAAACAB3/dQI+AZcAIABBAHxANwFCQkBDJDEuHxwVEg8sKSQaFwYDADQzFQMUBDk4EAMPDAQ8JyYBAwAFIiEGAwUJBT82PwMBPEZ2LzcYAD8vEP0vFzz9FzwBL/0vFzz9FzwuLi4uLi4uLgAuLi4uLi4uMTABSWi5ADwAQkloYbBAUlg4ETe5AEL/wDhZJSMiNTQ7AS4BIyIGFRQWFzU0MzIdATY3JyY1NDMyHwE2NzMyFRQrAQYHFxYVFCMiLwEGBxUUIyI9AS4BNTQ2MzIWAZhBExNBCGBBRmRXPxQULyYtBxUIBi0eLWsUFGsGKUwGFQgGSzFAFBRQbntXUXeyFBNAVmNHQWAIQBQUQAYeLQcIFAYuJlcTFD8zTAYIFQZMKQZrFBRrCHdSV3tuAAACACYAAAGUAYwACQA/AHpANQFAQEBBDTUSKCEeGBUNCi4EPjMyBDg3CQAEBQQyMQUHKyoFHh0VAxQjGgIDDwA7OgcDAQRGdi83GAA/PDw/FzwvFzz9PBD9PAEvPP08Lzz9PC/9Li4uLi4uLgAuLjEwAUlouQAEAEBJaGGwQFJYOBE3uQBA/8A4WTcUIyI1ETQzMhUfARYVFCMiLwEGKwEXFhUUIyIvASMXFhUUIyIvASY1NDsBMjY1NCYrARUUIyI9ATQ7ATIWFRROFBQUFONfBBUKBmUKDApYBBULBmYfWAQVCgdtBhd/IC4uIGsUFBR/MUUUExMBZBQUyZAGBRQJmAN/BgUUCZV/BQYUCZ4IBxAuISAvbxMTgxRGMUMAAQAd/zkA0AKiAFsAdkAyAVxcQF0fQBI+EDElGQRZTQlTRwMENysfFgUMIgUABgUcRAU6NAVKUAUuVgUoDDoBCUZ2LzcYAC8vL/0v/S/9EP0v/S/9EP0BLzw8/Tw8Lzw8/Tw8Li4ALi4xMAFJaLkACQBcSWhhsEBSWDgRN7kAXP/AOFkTMjY1NCYjIiY1NDYzMhcWFRQjIicmIyIGFRQWMzIWFRQGIyIGFRQWMzIWFRQGIyIGFRQWMzIWFRQGIyInJjU0MzIXFjMyNjU0JiMiJjU0NjMyNjU0JiMiJjU0NnYUHh0UJjQ0Ji8aBBULBg4ZFB8fFCU0NSQUHx4VJTQ2JRQdHxQlNDQlOhgCFAwGDiAUHR0UJjQ0JhQdHRQmNDQBjB4VFBw0JSY0JgYFFAkVHhUUHTMlJjQeFBQcNSUlNh0UFB01JSU0MwUFEwwcHRQUHjQlJjQeFBQdMyYmMwADAA0AAQFwAaAACQAhACsAeEA0ASwsQC0ZHw4HKiUZFAwLBBEQBCEKBB0cCQAEBQQcGxIRCwUKBRYjIgUnAignAxcWAgEURnYvNxgAPzw/PC8Q/TwQ/Rc8AS88/TzdPP08EN08/TwuLi4uAC4uLjEwAUlouQAUACxJaGGwQFJYOBE3uQAs/8A4WTcUIyI9ATQzMhU3IxUUIyI9ASMiNTQzITIVFCsBFRQjIjU3ISI1NDMhMhUU0hQUFBQdYhQURRMTATwUFEUUFG3+xBMTATwUFBMT7RQUMncTE3cUExMUdxMTvBQUFBQAAwAm//IBWQGEABcAKwA/AGVAKAFAQEBBKjw0KCA+Kh4TEgQXAAwLBDIHBg8FAyQFGjgFLi4VCQMBBkZ2LzcYAD88LxD9L/0v/QEvPDz9PC88/TwuLi4ALi4uLjEwAUlouQAGAEBJaGGwQFJYOBE3uQBA/8A4WQEUBiMiJj0BNDMyHQEUFjMyNj0BNDMyFQcGIyInJjU0MzIXFjMyNzYzMhUUBwYjIicmNTQzMhcWMzI3NjMyFRQBVlk/P1kUFEEvL0IUEwQ7VlQ9BxMHBjRERDMGBxQLQ0pLQwsUBQU7QD4+BQQTAStAWVlARRQURS9CQi9FFBT7MzQGCRQFKikFFAlmIyMGCxYDHx4CFAsAAgAI/+8BjAGMABMAJwBHQBgBKChAKSYhAyYcEggXDQEkHhADCgMBHEZ2LzcYAD8XPD8vAS4uLi4ALi4xMAFJaLkAHAAoSWhhsEBSWDgRN7kAKP/AOFkBBwYjIi8BJjU0MzIfATc2MzIVFBcDBiMiJwMmNTQzMhcbATYzMhUUATVYBwsMB1gCFQsGRkYGDBVTrgcMCwetAhULBpucBgwVAW66Dw+6BQUUDJSUDBQFBf6QDw8BcAUFFAz+twFJDBQFAAABAA7/8AKvAYoAKwBLQBkBLCxALSolHxkMBioUDwkDIhwBKBYDARRGdi83GAA/PD88Lzw8AS4uAC4uLi4uMTABSWi5ABQALEloYbBAUlg4ETe5ACz/wDhZAQMGIyIvAQcGIyIvAQcGIyInAyY1NDMyFxM3NjMyHwE3NjMyHwETNjMyFRQCrncGDQwHT1EHCwsHUVAHCw0GeAEVDgRoTAcLDAdRUQcLCwdNZwQOFQFw/pERDqqqDg6qqg4RAW8DBBMN/sGjDw+rqw4OowE/DRMEAAACABL/8wIJAZcAKwBXAGhAKAFYWEBZKlVST0xJPzkzJR8ZDwwJBgNELioUPDZCMAAiHAMoFgMBFEZ2LzcYAD88Pzw/PC88AS4uLi4ALi4uLi4uLi4uLi4uLi4uLjEwAUlouQAUAFhJaGGwQFJYOBE3uQBY/8A4WQEHBiMiLwEHBiMiLwEHBiMiLwEmNTQzMh8BNzYzMh8BNzYzMh8BNzYzMhUUAxYVFCMiLwEHBiMiLwEHBiMiLwEHBiMiNTQ/ATYzMh8BNzYzMh8BNzYzMhcCB0oHCgsHPj0HCwoHPT4HCwoHSgIUDAU4PwcLCgc9PAcKCwc/OAUMFAICFQsFOD8HCwoHPD0HCgsHPzgFCxUCSgcKCwc+PQcKCwc9PgcLCgcBbpQODnt7Dg57ew4OlAUEFAtxeg4OenoODnpxCxQE/qkFBBQLcnsODnt7Dg57cgsUBAWVDg58fA4OfHwODgAAAQAFAAEBngGzACsAX0AlASwsQC0NJh4bCwgAIR4ZDQgFKxEQAwAEJyYWAxUpEyMDAwEZRnYvNxgAPzwvLwEvFzz9FzwuLi4uLi4ALi4uLi4uMTABSWi5ABkALEloYbBAUlg4ETe5ACz/wDhZEzc2MzIVFA8BNzYzMhUUDwEVFCMiPQEnJjU0MzIfAScmNTQzMh8BNTQzMhXlTgYJFARNfgQEEw2sFBSrDRMEBH1NBBUJBk0UFAEYbggTBQZuMAIVDQVAuRMTuUAFDRUCL20FBhMIbocUFAAAAQAP/9gBBAHaAC0Ab0AsAS4uQC8gAiwpJiMgGxgVEg8MCQQBGRgFHRMSBSQjKikFDQweHQcGAQABCUZ2LzcYAD8vPC88Lzz9PC88/TwQ/TwBLi4uLi4uLi4uLi4uLi4ALjEwAUlouQAJAC5JaGGwQFJYOBE3uQAu/8A4WTcHMzIVFCsBIjU0PwEjIjU0PwEjIjU0PwEjIjU0OwEyFRQPATMyFRQPATMyFRT5mY0UFMcXCpmMFwqajRcKmYwTE8YYC5mMGAuZjBh6ehQUEgoIehIKCHoSCgh6FBQSCgh6EgoIehIKAAACAAcBvgDdAp8AFAAmAEdAFgEnJ0AoGCAdGgoAIhgQBSUVDgcBEEZ2LzcYAC88LzwBLi4uLgAuLi4uLjEwAUlouQAQACdJaGGwQFJYOBE3uQAn/8A4WRMyHwEWFRQjIi8BBgcGIyI1ND8BNjcXFhUUIyIvAQcGIyI1ND8BNnEJBlYGFAgGSBQ1BggUBlYGFlcHFQgGSUgGCBQGVg4CPQZWBggVBkgTNQYVCAZWBlRXBwgUBklIBhUIBlYOAAEAAf+xAO//2QAJADlADwEKCkALCAgDBgUBAAEDRnYvNxgALzwvPAEuLgAxMAFJaLkAAwAKSWhhsEBSWDgRN7kACv/AOFkXIyI1NDsBMhUU28YUFMYUTxQUFBQAAwABAb4A+gK3AA0AGwApAEVAFQEqKkArAicSCwQlHhcQCQIZIAEXRnYvNxgALy8BLi4uLi4uAC4uLi4xMAFJaLkAFwAqSWhhsEBSWDgRN7kAKv/AOFkTFhUUIyIvASY1NDMyFwcWFRQjIi8BJjU0MzIfARYVFCMiLwEmNTQzMhf0BhUIBkcGFQgGMwYVCAZWBhQIB5cGFQgGRwYUCAYCGwYIFQZHBggVBgYGCBUGVgYIFAbQBggVBkgGCBUGAAQAFP/zAb8BIAAJABMAHwArAGBAJgEsLEAtABEHBQQECQAPDgQTCiAEFCYEGiMFHSkFFx0XDAIAARpGdi83GAA/PC8vEP0Q/QEv/S/9Lzz9PC88/TwALi4xMAFJaLkAGgAsSWhhsEBSWDgRN7kALP/AOFklFCMiPQE0MzIVBxQjIj0BNDMyFQcUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNgG/ExQUE0UUFBQUOVk+PlhYPj5ZKEEuLUFBLS5BExQU7RQU7RQU7RQUdj5ZWT4+WFg+LUFBLS5BQQAAAQAiAAABBgIVADcAc0AwATg4QDkCISA2NCwjHhgAEgQCJwQyDg0ECQgaBRYVKikFLg8OBQULLy4DBgUAAQhGdi83GAA/PD88LxD9PBD9PC88/QEvPP08L/0v/S4uLi4uLi4ALi4xMAFJaLkACAA4SWhhsEBSWDgRN7kAOP/AOFk3FhUUBisBIjURNDMyFREzMjY1NCYrAQY1NDMyNzY1NCsBIjU0MzI1NCsBIjU0OwEyFhUUBxYVFNE1OipsFBQUWBgkJBgnExMaFhwxGhMTMyUOExMOISwTK6gaNSU0FAHtFBT+JxwVFR0EFhUJCxMoFBQdHRQUKRwWExctHgADABX/8wK3AUgADQA9AEwAc0AvAU1NQE4UOjAsJBYOREAmFAoASQQMQgQdBQQ1RhoCBRA+CCAFKjIuKjw4EAIBNUZ2LzcYAD88PC88PBD9PDwQ/Tw8AS/9L/0v/S4uLi4uLgAuLi4uLi4xMAFJaLkANQBNSWhhsEBSWDgRN7kATf/AOFkTJiMiBhUUFjMyNyY1NCU2MzIXFhUUIyInJiMiBhUUFjMyNzYzMhUUBwYjIicGIyInBiMiJjU0NjMyFzYzMgMyNyY1NDcmIyIGFRQXFvwbIjZMTDYiGysBBik2RzQGFAgGJzg2TEw2OCcGCBQGNUYyLSg1NSgqNEZkZEY0KCs0NTUjGywsGiQ1TTYnARAQTTU2TA8wQ0JLHTUGCBMGKE01Nk0pBhQHBjYdHBwcZEZHYx0d/tQPL0RDLxBNNUIlGwAEABj/9AHDAdsACQATAB8AKwBdQCQBLCxALQAMAgUEBAkADw4EEwogBBQmBBojBR0pBRcRBxcBGkZ2LzcYAC8vPBD9L/0BL/0v/S88/TwvPP08AC4uMTABSWi5ABoALEloYbBAUlg4ETe5ACz/wDhZJRQjIjURNDMyFQMUIyI1ETQzMhUDFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYBwxMUFBNFFBQUFDlZPj5YWT0+WShBLi1BQS0uQRQTEwGzFBT+TRMTAbMUFP7EPllZPj5YWD4tQUEtLkFBAAMAFf/zAa0BIAAJABMAMwBiQCYBNDRANQgwIjIgEg0IAykEGQEABQYFJgUcEA8FCwosBRYcFgEZRnYvNxgALy8Q/S88/TwQ/S88/TwBL/0uLi4uLi4ALi4xMAFJaLkAGQA0SWhhsEBSWDgRN7kANP/AOFklISI1NDMhMhUUByEiNTQzITIVFAcGIyImNTQ2MzIXFhUUIyInJiMiBhUUFjMyNzYzMhUUAZn+2BMTASgUFP7YExMBKBSTLEI+WVk+OigHFAcGIScuQUEuLyIGCBSeFBMTFEYUFBQUNDFZPj5YJAYJFQUbQS0uQSQGFAcAAAEADf9+AOoB4wA+AJJASgE/P0BADhA7NCghGg4DLCslJB4dFwcWBD44NzEwBwYHABMFCh0cAQMABRgXBgMFPj0fAx4FOTgkAyM3NiYDJQUyMSsDKgouAQNGdi83GAAvLy8XPP0XPC8XPP0XPC8XPP0XPBD9AS8XPP0XPC4uLi4uLi4ALjEwAUlouQADAD9JaGGwQFJYOBE3uQA//8A4WTcjIjU0OwE1NDYzMhcWFRQjIiYjIgYdATMyFRQrARUzMhUUKwEVMzIVFCsBFRQjIj0BIyI1NDsBNSMiNTQ7AVw7FBQ7LiEgGAcUBhcOEBc7FBQ7OxQUOzsUFDsUFDsUFDs7FBQ74hQUiiAvFwYJExEXEIoUFB0UFB0UFMYUFMYUFB0UFAAEAAn/OQGtASAACwAkAEIATgBfQCUBT09AUEE/MSEULyMSQwRBAEkEBkYFCUwFAxsFDjgFKAkoAS9Gdi83GAAvLxD9L/0v/RD9AS/9Lzz9Li4uAC4uLi4xMAFJaLkALwBPSWhhsEBSWDgRN7kAT//AOFklFAYjIiY1NDYzMhYDBiMiJyY1NDMyFx4BFxYzMjc2NzYzMhUUFw4BIyImJyYnJjU0MzIXFhceATMyNjc2NzYzMhUUJzQmIyIGFRQWMzI2AaxYPj5YWD4+WFYvS0wwDBILBwIFASM5OiIGAQgKE0MbbkJCbhwBBAIUDQYBBBZaNzZaFwIDBg0SKEEuLkBALi5Bij5ZWT4+WFj+7js9DwoSCQIHAS0uBgMLFQkMO0dIOwQIBQQUDgMJMDo7MAUFDhQLxS1BQS0uQUEAAgAi/zkCJQHbAAkAOABeQCMBOTlAOhg4NTArJiEVExEPDQIeHRkYOAoJAwAEBQQHGwEERnYvNxgALy8BLzz9FzwuLi4uAC4uLi4uLi4uLi4uLjEwAUlouQAEADlJaGGwQFJYOBE3uQA5/8A4WTcUIyI1ETQzMh0BNDYzMhc2MzIXNjMyFhURFCMiNRE0JiMiBhUUIyI1NCYjIgYVFCMiNTQmIyIGFUoUFBQUIxgwIBwyMh0gLyk7FBQjGRgjFBQiGRgjExQjGRgjFBMTAbMUFMEMFygoKCg6Kf6HFBQBeRgjIxgTExgjIxgTExgjIxgABQAV/8gAswHyAAsAFwAhAC0AOQBnQCoBOjpAOwAfNCgEEgYcLiIEDAAhGAQdHCUFCQMFKzEFFTcFDwkaKwMBBkZ2LzcYAD8vLy/9L/0Q/RD9AS88/TzdPP08EN08/TwALjEwAUlouQAGADpJaGGwQFJYOBE3uQA6/8A4WRMUBiMiJjU0NjMyFhUUBiMiJjU0NjMyFgMUIyI9ATQzMhUTNCYjIgYVFBYzMjYVNCYjIgYVFBYzMjazLiEgLy8gIS4uISEuLiEhLjsUFBQUExcQEBcXEBAXFhEQFxcQEBcBoyEvLyEhLi7fIC8vICEuLv7WFBSMFBQBOxAXFxAQGBetERYWERAXFwAABgAK/8MBfQHkAAsAFwArAEEATQBZAHRAMQFaWkBbAD81KCAyLCoeTkIEDAAGEgRIVAMFS0UFCVEFFVcFDyQFGjoFLwkvSwMBMkZ2LzcYAD8vLxD9L/0v/S/9EP0Q/QEvPP08Lzz9PC4uLi4ALi4uLjEwAUlouQAyAFpJaGGwQFJYOBE3uQBa/8A4WQEUBiMiJjU0NjMyFhUUBiMiJjU0NjMyFgcGIyInJjU0MzIXFjMyNzYzMhUUFw4BIyImJyY2MzIXHgEzMjY3NjMyFgM0JiMiBhUUFjMyNhU0JiMiBhUUFjMyNgF9LiAhLi4hIC4uICEvLyEgLk4gTU4fAhUNBRUzMxYFDRRID2ZCQmYOAg0JDgQMUTM0Tw0EDgoNJRcQEBcXEBAXFxAQGBcREBcBlCAuLiAhLy/eIS4uISEvL6lHRwQFEwwvLwwTBAI+UVE+Cw0OMUBAMQ4NATcQGBcREBcXrRAYGBAQFxcAAAQAJ///AYQBoAANAB8ALQA7AFpAIQE8PEA9AjkrHBkRCzcwKSIeCQIZGAQUExYDMiQEAAETRnYvNxgAPzw8PwEvPP08Li4uLi4uLgAuLi4uLi4xMAFJaLkAEwA8SWhhsEBSWDgRN7kAPP/AOFklFhUUIyIvASY1NDMyFycHBiMiPQE0MzIdATc2MzIVFBcWFRQjIi8BJjU0FzIXBxYVFCMiLwEmNTQzMhcBgAQVCQZ8BBUJBjOKCQgPFBRrBgYURAQVCQZbBBUJBgcEFQkGOQQUCgYgBgYUCK0GBhQIJGIGFe4UFMdMBBUJ1wYGFQl/BgYVAQh/BgYVCVAGBhUJAAACACQAAQCaAaAACQATAEhAGAEUFEAVChEPDgQTCgkABAUEDAIHAwEERnYvNxgAPy88AS88/TwvPP08AC4xMAFJaLkABAAUSWhhsEBSWDgRN7kAFP/AOFk3FCMiNRE0MzIVExQjIj0BNDMyFUwUFBQUThQUFBQUExMBeBQU/ogTE9kUFAAFACUAAQJjAVAACQATAB0AJwBdAJlARAFeXkBfLVJHPDAlFhEHRUQPDgQTCh0UBBkYMzIELi0FBAQJACceBCMiUE8EVVQ+BDo5TEE2BVxYKiAMAlooARsCARhGdi83GAA/PzwvPDwvPDz9PDwBLzz9Lzz9PC88/TwvPP08Lzz9PC88/TwvPP08Li4ALi4uLi4uLi4xMAFJaLkAGABeSWhhsEBSWDgRN7kAXv/AOFklFCMiPQE0MzIVBxQjIj0BNDMyFQUUIyI9ATQzMhUTFCMiPQE0MzIVNzYzMhYdARQjIj0BNCYjIgYdARQjIjU0JiMiBh0BFCMiNTQmIyIGHQEUIyI9ATQ2MzIXNjMyAhQUFBQUnxMUFBP+1xMUFBOLFBQUFNcdNCk7FBQjGRgjFBQjFxkiFBQkGBgjFBQ7KC4fHzMtFBMTnhQUnhMTnhQUFBMTnhQU/tgTE54UFEwrOikKExMKGCMjGAsTExktIxgLExMZLSMYChMTCik6KysABAAdAAEBwQFTAAkAEwAdAEMAekAzAUREQEU6PDUtIRYRBzoFBAQJACQjBB8eEwoEDw4rKgQwLx0UBBkYQScFNzMMAhsCARhGdi83GAA/LzwvPP08AS88/TwvPP08Lzz9PC88/TwvPP08LgAuLi4uLi4uMTABSWi5ABgAREloYbBAUlg4ETe5AET/wDhZJRQjIj0BNDMyFQcUIyI9ATQzMhUHFCMiPQE0MzIVFxUUIyI9ATQmIyIGHQEUIyI9ATQ2MzIXNjMyFhUUIyI1NCYjIgYBchQUFBSgFBQUFI0UFBQU2xMVJBYZIxQUOykuIBs3KDsUFCQXGSUUExOfFBSfExOfFBQTExOfFBR2DBMTChcmJBgLExMLKToqKkQqExMaLSMAAAQAGf/zAUUBIAALABcAIwAvAFxAJQEwMEAxACoEHhIEBgwEACQEGA8FCScFIS0FGxUFAwkDIQEBBkZ2LzcYAD8vLxD9L/0Q/RD9AS/9L/0v/S/9ADEwAUlouQAGADBJaGGwQFJYOBE3uQAw/8A4WSUUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNgFFWD89WFc+P1goQS4tQUEtLkEbMSMiMDAiIzEoGhISGRkSEhqKPllZPj5YWD4tQUEtLkFBLiMwMCMjMDAjEhkZEhIZGQAABAAm/zoB0QEgAAsAFQAfACsAXUAkASwsQC0AHRMVDAQRECYEBiAEAB8WBBsaIwUJKQUDCRgOARpGdi83GAAvPC8v/RD9AS88/Twv/S/9Lzz9PAAuLjEwAUlouQAaACxJaGGwQFJYOBE3uQAs/8A4WSUUBiMiJjU0NjMyFgEUIyI1ETQzMhUDFCMiNRE0MzIVBTQmIyIGFRQWMzI2AdFYPz5YWD4/WP7BExQUE0QUFBQUAVtBLi1BQS0uQYo+WFg+PlhY/oYUFAGyFBT+ThQUAbIUFHYuQEAuLkBAAAQAGf86AcQBIAAJABMAHwArAF1AJAEsLEAtABEHBQQECQAPDgQTCiAEFCYEGiMFHSkFFx0MAgEaRnYvNxgALzwvL/0Q/QEv/S/9Lzz9PC88/TwALi4xMAFJaLkAGgAsSWhhsEBSWDgRN7kALP/AOFkFFCMiNRE0MzIVAxQjIjURNDMyFQcUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNgHEFBQUFEUUFBQUOVg/PlhYPj9YKEEuLUFBLS5BshQUAbIUFP5OFBQBshQUdj5YWD4+WFg+LkBALi5AQAAAAgAhAAEBwAFQAAkALwBcQCIBMDBAMSQsJyEdFxEMLyUkGhkVFAoJAAQFBAIfAQcCAQRGdi83GAA/Py8BLzz9PC4uLi4uLi4uAC4uLi4uLi4xMAFJaLkABAAwSWhhsEBSWDgRN7kAMP/AOFk3FCMiNRE0MzIVFxQjIjU0JiMiBh0BFCMiPQE0NjMyFzYzMhYdARQjIjU0JiMiBhdIExQUE9sUFCQYGCMUFDsoLh8fMyg6FBQjFxkjARQTEwEoFBSBExMZLSMYChMTCik6KytDKgETExktIxgAAQAa/3UAzQHGAEcAZEAoAUhIQEkDMAwuCiETBD0DRTcEJxkQBQYkBTo0BSoABRYeBUIqBgEZRnYvNxgALy8v/S/9EP0v/RD9AS88/TwvPP08Li4ALi4xMAFJaLkAGQBISWhhsEBSWDgRN7kASP/AOFk3MhYVFAYjIicmNTQzMhcWMzI2NTQmIyImNTQ2NzYzMjY1NCYjIiY1NDYzMhcWFRQjIicmIyIGFRQWMzIWFRQGBwYjIgYVFBZzJTU0JjgZAhUNBQ0fFR0dFSU0LyMDBBUdHRUlNDQlLRwEFAkHEBkUHR0UJTUvIwMFFB0dJzQlJTQzBQQUDB0eFBQdNCUjMwMBHBQUHTUlJTQmBgYUCRUdFBQeNCUjMgMBHRQUHQAAAQARAAEA1wFPADMAikBGATQ0QDUPMCkdFg8DISAaGRMSDAcLBDMtLCYlBwYHABIRAQMABQ0MBgMFLi0ZAxgFMzIUAxMsKxsDGgUnJiADHyMJAgEDRnYvNxgAPy8vFzz9FzwvFzz9FzwvFzz9FzwBLxc8/Rc8Li4uLi4uADEwAUlouQADADRJaGGwQFJYOBE3uQA0/8A4WTcjIjU0OwE1NDMyHQEzMhUUKwEVMzIVFCsBFTMyFRQrARUUIyI9ASMiNTQ7ATUjIjU0OwFgOxQUOxQUOxQUOzsUFDs7FBQ7FBQ7FBQ7OxQUO+wUFCcUFCcUFB0UFBwUFE8TE08UFBwUFAAAAgAg//QBDgESABcAKwBXQCABLCxALSooIBMSBCoXAAwLBB4HBg8FAyQFGhUJGgEGRnYvNxgALy88EP0v/QEvPDz9PC88PP08AC4uMTABSWi5AAYALEloYbBAUlg4ETe5ACz/wDhZJRQGIyImPQE0MzIdARQWMzI2PQE0MzIVBwYjIicmNTQzMhcWMzI3NjMyFRQBDUUyMUUUFC4gIS4UFAgzPDwxCRMGBiYxMicFBhS6MkVFMkQUFEQhLi4hRBQU6SEhBgoVBBobBBYKAAACAAn/8QEyARUAEwAnAEVAFgEoKEApJiENAyYcEggkHhADChcBHEZ2LzcYAC8vFzwBLi4uLgAuLi4xMAFJaLkAHAAoSWhhsEBSWDgRN7kAKP/AOFk3BwYjIi8BJjU0MzIfATc2MzIVFBcHBiMiLwEmNTQzMh8BNzYzMhUU4jIHCwoHMwMVCwYhIQYLFEyABwsKB4EDFQsGb28GCxT4Yg4NYgUFFAtBQAsTBAX5Dg35BQUUC9fWCxMEAAABAAj/8QJZARwAKwBJQBcBLCxALSolIh8cGQwGKhQoFg8JAwEURnYvNxgALzw8LzwBLi4ALi4uLi4uLjEwAUlouQAUACxJaGGwQFJYOBE3uQAs/8A4WQEDBiMiLwEHBiMiLwEHBiMiJwMmNTQzMh8BNzYzMh8BNzYzMh8BNzYzMhUUAlhjBgwLB0dIBwsKB0ZIBwsMBmMCFA0FVUQICQoIR0gICgkIQ1QFDRQBAf8AEA1/fw0Nf38NEAEABAQTDdl5DQ1+fg4OedkNEwQAAAIACv/xAf4BPwArAFcAaEAoAVhYQFkqVVJPTEk/OTMoFg8MCQYDRC4qFDw2QjAAIhwCJR8ZAQEURnYvNxgAPzw8Pzw/PC88AS4uLi4ALi4uLi4uLi4uLi4uLi4uMTABSWi5ABQAWEloYbBAUlg4ETe5AFj/wDhZAQcGIyIvAQcGIyIvAQcGIyIvASY1NDMyHwE3NjMyHwE3NjMyHwE3NjMyFRQHFhUUIyIvAQcGIyIvAQcGIyIvAQcGIyI1ND8BNjMyHwE3NjMyHwE3NjMyFwH6SAgICAhAPwcJCAc/QAgICAhHBBQJBjhACAgICD8+CAgICEA4BgkVBQQUCgY4PwgICAg+QAgICAg/OAYKEwRHCAgICD9ACAgHCD8/CAgICAETZAoKV1cKCldXCwtkBgYUCE5XCwtXVwsLV04IFAb8BgYUCUxWCwtXVwoKVkwJFAYGYwsLV1cKCldXCwsAAQAJ/4kBowE8ACwAXkAkAS0tQC4OJyQfHAwJAwAiHxoOCQUsEhEDAAQoJxcDFioUARpGdi83GAAvLwEvFzz9FzwuLi4uLi4ALi4uLi4uLi4xMAFJaLkAGgAtSWhhsEBSWDgRN7kALf/AOFk/ATYzMhUUBwYHNzYzMhUUDwEVFCMiPQEnJjU0MzIfAScmNTQzMh8BNTQzMhXqTQYJFQQmKH8EBBMNrBQUrA0UBAR9TQQVCQZNFBSibggTBgU3ODABFA0FQLkUFLlABQ0VAjBvBQYTCG6GFBQAAQAR//8BBAGLACEAYEAlASIiQCMaEyAdGhUSDwwJBAECAQUGHh0FDQwYFwMSAgcGAAEJRnYvNxgAPzw/PzwvPP08EP08AS4uLi4uLi4uLi4ALjEwAUlouQAJACJJaGGwQFJYOBE3uQAi/8A4WTcHMzIVFCsBIjU0PwEjIjU0PwEjIjU0OwEyFRQPATMyFRT7n5EUFMUXCZ+RFwmfkRMTxRcJn5EXto8UFBEKCJARCgiOFBQRCgiPEQoABwAY//8BLAIpAAsAFQAfACkANQBBAEkAjkBCAUpKQEsAJxNGPBUREAwbGgQfFkIENioEACkgBCUkMAQGJCAaFhAFDAUOOQVIRAU/LQUJAwUzCUgDHQEiGA4AAQZGdi83GAA/PDw/Py8v/RD9L/0Q/RD9FzwBL/0vPP08L/0v/S88/TwuLi4uLi4ALi4xMAFJaLkABgBKSWhhsEBSWDgRN7kASv/AOFkBFAYjIiY1NDYzMhYDFCMiPQE0MzIVBxQjIj0BNDMyFQcUIyI9ATQzMhUTNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCMiFRQzMgEsUDo6UFA6OlAxFBQUFEUTFBQTRxQUFBSVOSkpOTkpKTkcKR0dKCgdHSkoHh0dHgGfOlFROjlRUf47FBSLFBSLFBTZFBTZFBSLFBQBASk5OSkpOjopHSgoHR0oKB0dHR4AAAUABP//AUYBlwATAB0AJwAxADsAd0AyATw8QD06LyoMAjo1JiEcFw4AMSgELSwHBREVFAUZJCMFHx44NwUyMzIAGhkBEQMBDkZ2LzcYAD8/PD88EP08Lzz9PBD9PBD9AS88/TwuLi4uLi4uLgAuLi4uMTABSWi5AA4APEloYbBAUlg4ETe5ADz/wDhZARYjIicuASMiBgcGIyI3PgEzMhYHIyI1NDsBMhUUByMiNTQ7ATIVFAcUIyI9ATQzMhUTISI1NDMhMhUUARYGGQ8ECDYiIjQJBA8aBgtLMDBKOygTEygUFCgTEygUYxQUFBSy/usTEwEVFAEvGQ8gKiogDxktOzuXFBQUFEMUFBQUMxMTxRQU/usUFBQUAAkAAQGoAjwCWgALABcAIwAvADsARwBPAFcAXwCFQDsBYGBAYQAkBABYBFwYBDxMBEhQBFQ2BBIGBCowBAxCBB5FOS0FA15WTgVaUko/MycFCSEVCRsPAwEeRnYvNxgALzw8Lzw8EP08PC88PP08PBD9PDwBL/0v/S/9L/0v/S/9L/0v/S/9ADEwAUlouQAeAGBJaGGwQFJYOBE3uQBg/8A4WQEUBiMiJjU0NjMyFgcUBiMiJjU0NjMyFgcUBiMiJjU0NjMyFgU0JiMiBhUUFjMyNic0JiMiBhUUFjMyNic0JiMiBhUUFjMyNiUUIyI1NDMyBxQjIjU0MzIHFCMiNTQzMgI8MyYlNDQlJTTENCUmNDUlJTTGMyYlMzMlJTQBYx4UFB0dFBQexR0UFB4eFBQdxR4UFBwcFBQeAWwUFBQUxBQUFBTGFBMTFAIBJTQ0JSU0NCUlNDQlJTQ0JSU0NCUlNDQlFB0dFBQdHRQUHR0UFB0dFBQdHRQUHR0UExMUFBMTFBQTExQAA///Ab4A+AK3AA0AGwApAEVAFQEqKkArDCYYEQMoIRoTDAUKHwETRnYvNxgALy8BLi4uLi4uAC4uLi4xMAFJaLkAEwAqSWhhsEBSWDgRN7kAKv/AOFkTBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUFwcGIyI1ND8BNjMyFRTyVwYIFQdWBggVkEYHCBQHRgYIFDRHBgcWBkcGCBUClFYGFAgHVgYVCFZGBxQIB0YGFAhARgYWBwZGBhUIAAIAEP9qAMIAHAAXAB8AS0AaASAgQCEABg8EABgEExwMBQMIHgUaFQMBBkZ2LzcYAC8vL/08EP0BLzz9L/0uADEwAUlouQAGACBJaGGwQFJYOBE3uQAg/8A4WRcUBiMiJjU0MzIUFjMyNjU0JiI1NDMyFgcUIyI1NDMywjQlJTQUFB0UFB0dJxMlNEUUFBQUPSU0NCUTJx4eFBQdFBQ0JRQUFAAAAwAt/zkA3gJEAAsAFwBcAHtANQFdXUBeAEckRSJaThIEPjIGOCsMBFQbAA8FCQMFFUsFQTsFUTUFVxgFLy4oBR4JHkEDAQZGdi83GAA/Ly8Q/S88/S/9L/0Q/S/9EP0BLzw8/Tw8Lzw8/Tw8Li4ALi4xMAFJaLkABgBdSWhhsEBSWDgRN7kAXf/AOFkTFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYDMhYVFAYjIicmNTQzMhcWMzI2NTQmKwEiJjU0NjMyNjU0JiMiJjU0NjMyFxYVFCMiJyYjIgYVFBYzMhYVFAYjIgYVFBbeMyUlNDQlJTMoHBQUHh4UFBwxJTQ0JC8aBBQLBg4aFBwcFAElMzMkFB4dFCUzMyU5GAIUDAYNIBQdHRQlNDQkFB4dAewlNDQlJTMzJRQdHRQUHR3+EzQlJTQmBgYUChQdFBQdNCUlNB0UFB40JSU0MwUFEwwcHRQUHTUlJTQdFBQdAAUAEQAAArICuAANABsAKQBVAF8AcUAtAWBgQGEsPTo3NDEnIBILBF5ZQiwlHhcQCQJcWwVXVhlQSgFTTUcDQC4AAUJGdi83GAA/PD88PD88Ly88/TwBLi4uLi4uLi4uLgAuLi4uLi4uLi4uMTABSWi5AEIAYEloYbBAUlg4ETe5AGD/wDhZARYVFCMiLwEmNTQzMhcHFhUUIyIvASY1NDMyHwEWFRQjIi8BJjU0MzIXARYVFCMiJwMHBiMiLwEHBiMiLwEDBiMiNTQ3EzYzMh8BNzYzMh8BNzYzMhcDISI1NDMhMhUUAacGFQgGRwYVCAYzBhUIBlYGFQgGlwYUCAZIBhQIBwGKARUOBWdMBwsMB1BSBwsLB01nBQ0VAXcFDQwHUFEHDAsHUFAHDAwGE/52ExMBihQCHAYIFQZHBggVBgcGCBQGVgYIFAbQBggVBkgGCBUH/fEDBBMOAT+jDw+qqg8Po/7BDhMEAwFwEQ+qqg8PqqoPEf7aFBMTFAAFABAAAAKxArcADQAbACkAVQBfAHFALQFgYEBhLD06NzQxJh8YEQNeWUIsKCEaEwwFXFsFV1YKUEoBU01HA0AuAAFCRnYvNxgAPzw/PDw/PC8vPP08AS4uLi4uLi4uLi4ALi4uLi4uLi4uLjEwAUlouQBCAGBJaGGwQFJYOBE3uQBg/8A4WQEHBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQXBwYjIjU0PwE2MzIVFBMWFRQjIicDBwYjIi8BBwYjIi8BAwYjIjU0NxM2MzIfATc2MzIfATc2MzIXAyEiNTQzITIVFAIGVgYIFgdXBwgTj0YGCBUGRgYIFTNHBggVBkcGBxb0ARUNBWhMBwsMB1BSBwsLB01nBQ0VAXcGDQwHT1EHDAsHUFAHDAwGE/52ExMBihQClVYGFQgGVQYUCFdGBhUIBkYGFQg/RgYVCAZGBhYH/gkEAxMOAT+jDw+qqg8Po/7BDhMEAwFwEQ+qqg8PqqoPEf7aFBMTFAAABAARAAACsgKhAAkANQBJAFwAdUAvAV1dQF4MWFVSQ0A9Nh0aFxQRWlBNRTsiDAgDBgUFAQBNSjAqATMtJwMgDgABIkZ2LzcYAD88Pzw8PzwvPC88/TwBLi4uLi4uLi4uAC4uLi4uLi4uLi4uLjEwAUlouQAiAF1JaGGwQFJYOBE3uQBd/8A4WSUhIjU0MyEyFRQXFhUUIyInAwcGIyIvAQcGIyIvAQMGIyI1NDcTNjMyHwE3NjMyHwE3NjMyFycyHwEWFRQjIi8BBwYjIjU0PwE2JzYXMRcWFRQjIi8BBwYjIjU0NwIm/nYTEwGKFHcBFQ4FZ0wHCwwHUFIHCwsHTWcFDRUBdwUNDAdQUQcMCwdQUAcMDAbYCAdWBhUIBkdJBggVBlYICA8OVwYVCAZISAYIFQZkFBMTFEoDBBMOAT+jDw+qqg8Po/7BDhMEAwFwEQ+qqg8PqqoPEbQGVgYIFQZISAYVCAZWBlQPD1cGCBUGSUgGFQgGAAQAEQAAArICLQARACMATwBZAHVAMAFaWkBbJjc0MS4rWFM8Jh4SBgAcFAMFDFZVBVFQGAUhEAghSkQBTUdBAzooAAE8RnYvNxgAPzw/PDw/PC88PBD9Lzz9PC/9PDwBLi4uLi4uLi4ALi4uLi4xMAFJaLkAPABaSWhhsEBSWDgRN7kAWv/AOFkBFAYjIiY1NDMyFBYzMjY0MzIHFCMiNCYjIgYUIyI1NDYzMhYBFhUUIyInAwcGIyIvAQcGIyIvAQMGIyI1NDcTNjMyHwE3NjMyHwE3NjMyFwMhIjU0MyEyFRQCJDQlJTQUFB0UFB0UFM8UFB0UFB4UFDUlJTQBXAEVDQVnTQcLCwdRUQcMCwdMZwUOFQF4BgwMB1BRBwwLB1BQBwwNBRP+dhMTAYoUAhglNDQlFCgeHihZEyceHicTJjQ1/iIDBBMOAT+jDw+qqg8Po/7BDhMEAwFwEQ+qqg8PqqoPEf7aFBMTFAALABEAAAKyAlsACwAXACMATwBZAGUAcQB9AIUAjQCVAK9AUgGWlkCXJjc0MS4rPCaKBIZmBAyOBJJTBgRgWgQAggR+WBgEcmwEEngEHpCIgAWUjIRWVQVRUHVpXQUJGw8DBXtvYyEVCUpEAU1HQQM6KAABPEZ2LzcYAD88Pzw8PzwvPDwvPDz9PDwQ/Tw8Lzz9PC88PP08PAEv/S/9L/0vPP0v/S/9Lzz9L/0v/S4uAC4uLi4uMTABSWi5ADwAlkloYbBAUlg4ETe5AJb/wDhZARQGIyImNTQ2MzIWBxQGIyImNTQ2MzIWBxQGIyImNTQ2MzIWARYVFCMiJwMHBiMiLwEHBiMiLwEDBiMiNTQ3EzYzMh8BNzYzMh8BNzYzMhcDISI1NDMhMhUUEzQmIyIGFRQWMzI2JzQmIyIGFRQWMzI2JzQmIyIGFRQWMzI2JRQjIjU0MzIHFCMiNTQzMgcUIyI1NDMyAoA0JSU0NCUlNMUzJiU0NCUlNMU0JSU0NCUlNAG7ARUNBWdNBwsLB1FRBwwLB0xnBQ4VAXgGDAwHUFEHDAsHUFAHDA0FE/52ExMBihQdHRQUHR0UFB3EHhQUHR0UFR3GHRQUHR0UFB0BbRQUFBTFFBMTFMUUExMUAgIlNDQlJTQ0JSU0NCUlNDQlJTQ0JSU0NP3zAwQTDgE/ow8PqqoPD6P+wQ4TBAMBcBEPqqoPD6qqDxH+2hQTExQBnhQdHRQVHBwVFB0dFBUcHBUUHR0UFRwcFRQUExMUFBMTFBQTAAAFABAAAAKxAloACwA3AEEATQBVAHlANAFWVkBXDh8cGRYTQDskDkgEBkIEAE4EUj49BTk4RQUJAwVLUAVUCTIsATUvKQMiEAABJEZ2LzcYAD88Pzw8PzwvL/0v/RD9Lzz9PAEv/S/9L/0uLi4uAC4uLi4uMTABSWi5ACQAVkloYbBAUlg4ETe5AFb/wDhZARQGIyImNTQ2MzIWExYVFCMiJwMHBiMiLwEHBiMiLwEDBiMiNTQ3EzYzMh8BNzYzMh8BNzYzMhcDISI1NDMhMhUUAzQmIyIGFRQWMzI2JxQjIjU0MzIBujQlJTQ0JSU09gEVDQVoTAcLDAdQUgcLCwdNZwUNFQF3Bg0MB09RBwwLB1BQBwwMBhP+dhMTAYoUpx0UFB4eFBQdHRQUFBQCASU0NCUlNDT99AQDEw4BP6MPD6qqDw+j/sEOEwQDAXARD6qqDw+qqg8R/toUExMUAZ0UHR0UFB0dFRUVEwAACgAJAAADVQGcAAkAEwAdACcAMQA7AEUATwBpAHMAvEBZAXR0QHUIcG9ralZTcm1oW0Q/OjUwKyYhHBcSDQgDT0YES0oLCgUPAQAFBgUuLQUpKBoZBRUUHx4FIzg3BTMyQkEFPGMBYANZSD0DPAAkIwJmTRADDwMBW0Z2LzcYAD8XPD88Pxc8Pz8Q/TwvPP08EP08Lzz9PC88/TwvPP08EP08AS88/TwuLi4uLi4uLi4uLi4uLi4uLi4ALi4uLi4uMTABSWi5AFsAdEloYbBAUlg4ETe5AHT/wDhZJSMiNTQ7ATIVFCcjIjU0OwEyFRQXIyI1NDsBMhUUJyMiNTQ7ATIVFAcjIjU0OwEyFRQHIyI1NDsBMhUUByMiNTQ7ATIVFCUUIyI1ETQzMhUPAQYjIi8BAwYjIjU0NxM2MzIfATc2MzIVFAMjIjU0OwEyFRQDQXcTE3cUi+wUFOwUY3YTE3YUi+0TE+0UFOwUFOwUFO0TE+0UFOwUFOwU/s4TFBQTR10HCwsHTmYFDRUBdgYNDAdQSwYLFRTAExPAFOsUFBQUeRQUFBTrFBQUFKsUFBQUchQUFBRyFBQUFEAUFBQUFBMTAWQUFAnFDw+j/sEOEwQDAXASEKqfDBQF/vAUExMUAAAEACH/agNrAZcABwAVACMAaACLQD0BaWlAajpUTDwmXlZOQzoiGBYMCAQEAGcEWB0EChEEK2QFW0AaDgUuYAYFAkggFAVSKFs0MAM2Mi4DAStGdi83GAA/PDw/PC8vPP08PC/9PBD9PDwQ/QEv/S/9L/0v/S4uLi4uLi4uLi4ALi4uLjEwAUlouQArAGlJaGGwQFJYOBE3uQBp/8A4WQUUIyI1NDMyJyY1NDcmIyIGFRQWMzI3NDcmIyIGFRQWMzI3JgciJwYjIiY1NDYzMhc2MzIXNjMyFxYVFCMiJyYjIgYVFB8BFjMyNzYzMhUUBwYjIicGBxYVFAYjIiY1NDMyFBYzMjY1NAH2FBMTFKw7OygvRmRkRi/ZPCssRmNjRiwrPBs/ODVBV3t7Vz83N0BBNjVBXDwGFQgGMklGZD4CLT1KMQYIFQY/WUE1FR4YNCYlMxQUHBQVHT0UFBRdO1ZXOxhkRkZjqVU+F2NHRmMXOnklJXtWV3slJSUlQQYHFQY1Y0dPNAIkNAcVBwZBJQ4MGiIlNDQlEyceHhQxAAAKAAD//wGvAqwADQAbACkAMwA9AEcAUQBbAGUAbwCpQEwBcHBAcTInIBILBG5pZF9aVVBLRkE8NzItJR4XEAkCWFcFU1JJSAVNMC8FKyo1NAU5REMFPz5iYQVdXGxrBWYZZ2YATk0COjkDARdGdi83GAA/PD88PzwvEP08Lzz9PC88/TwQ/TwvPP08EP08Lzz9PAEuLi4uLi4uLi4uLi4uLi4uLi4uLgAuLi4uLjEwAUlouQAXAHBJaGGwQFJYOBE3uQBw/8A4WRMWFRQjIi8BJjU0MzIXBxYVFCMiLwEmNTQzMh8BFhUUIyIvASY1NDMyFwEjIjU0OwEyFRQnIyI1NDsBMhUUFyMiNTQ7ATIVFCcjIjU0OwEyFRQHIyI1NDsBMhUUByMiNTQ7ATIVFAcjIjU0OwEyFRTzBhUIBkYGFQgGMwYVCAZXBhUIBpgGFQgGRwYUCAYBKHcTE3cUi+wUFOwUY3cTE3cUi+0TE+0UFOwUFOwUFO0TE+0UFOwUFOwUAg4GBxUGRgYIFQYGBggVBlcGCBUG0QYIFQZHBggVBv7OFBQUFHkUFBQU6xQUFBSrFBQUFHEUExMUcxQUFBRAFBQUFAAACgAjAAABrgKrAA0AGwApADMAPQBHAFEAWwBlAG8AqUBMAXBwQHEyJh8YEQNuaWRfWlVQS0ZBPDcyLSghGhMMBTU0BTlJSAVNMC8FKypYVwVTUkRDBT8+YmEFXVxsawVmCmdmAE5NAjo5AwFLRnYvNxgAPzw/PD88LxD9PC88/TwvPP08Lzz9PC88/TwQ/TwQ/TwBLi4uLi4uLi4uLi4uLi4uLi4uLi4ALi4uLi4xMAFJaLkASwBwSWhhsEBSWDgRN7kAcP/AOFkBBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUFwcGIyI1ND8BNjMyFRQTIyI1NDsBMhUUJyMiNTQ7ATIVFBcjIjU0OwEyFRQnIyI1NDsBMhUUByMiNTQ7ATIVFAcjIjU0OwEyFRQHIyI1NDsBMhUUAVFXBggVBlcGCBWQRgYIFQZGBggVM0YGCBUGRwYIFJR3ExN3FIvsExPsFGN3ExN3FIvtExPtFBTsExPsFBTtExPtFBTsExPsFAKIVgYVCAZWBhUIVkYGFQcGRwYVCEBGBhUIBkYGFQj+5xQUFBR5FBQUFOsUFBQUqxQUFBRyFBQUFHIUFBQUQBQUFBQAAAkAIwAAAa4CiwAJABMAHQAnADEAOwBFAFgAbQCpQEwBbm5AbwhnY2BXUk5LaV5USUQ/OjUwKyYhHBcSDQgDCwoFDx8eBSMGBQUBAC4tBSkoGhkFFRQ4NwUzMkJBBTxZPTwAJCMCEA8DASFGdi83GAA/PD88PzwvEP08Lzz9PC88/TwvPP08Lzz9PBD9PBD9PAEuLi4uLi4uLi4uLi4uLi4uLi4ALi4uLi4uLjEwAUlouQAhAG5JaGGwQFJYOBE3uQBu/8A4WSUjIjU0OwEyFRQnIyI1NDsBMhUUFyMiNTQ7ATIVFCcjIjU0OwEyFRQHIyI1NDsBMhUUByMiNTQ7ATIVFAcjIjU0OwEyFRQDFxYVFCMiLwEGBwYjIjU0PwE2JzIfARYVFCMiLwEGBwYjIjU0PwE2AZp3ExN3FIvsExPsFGN3ExN3FIvtExPtFBTsExPsFBTtExPtFBTsExPsFHpTBhQIBkgTNQYIFQZXEAMKBVYGFAgGSBM1BggVBlYG6xQUFBR5FBQUFOsUFBQUqxQUFBRyFBQUFHIUFBQUQBQUFBQCKVQGCBUGSBM1BhUIBlcQTwZWBggVBkgTNQYVCAZWBgAABv+4//8AswKMAA0AGwApADUAPwBLAHZAMgFMTEBNKj0nIBILBCUXEAlGBDA6QAQCKj8eNgQ7Ojo2BThDBTMtBUkZSQE4ADMDARdGdi83GAA/Pz8vEP0Q/RD9PAEvPP08PN08/RDd/S4uLi4ALi4uLi4uMTABSWi5ABcATEloYbBAUlg4ETe5AEz/wDhZExYVFCMiLwEmNTQzMhcHFhUUIyIvASY1NDMyHwEWFRQjIi8BJjU0MzIfARQGIyImNTQ2MzIWAxQjIj0BNDMyFTc0JiMiBhUUFjMyNqsGFAgGRwYUCAYzBhQIBlcGFQgGmAYVCAZIBhUIBoguISEuLiEhLjsUFBQUExYREBcXEBAXAe4GCBQGRwYIFAYGBggVBlcGCBUG0QYIFQZHBggVBuAhLi4hIS4u/tYUFIsUFH4RFhYREBcXAAAGABP//wEOAosADQAbACkANQA/AEsAdEAxAUxMQE0MPSYfGBEDKBoMBUAEKj82BDshOkYEEzA6NgU4QwUzLQVJCkkBOAAzAwEwRnYvNxgAPz8/LxD9EP0Q/TwBLzz9Lzw8/Twv/S4uLi4ALi4uLi4uMTABSWi5ADAATEloYbBAUlg4ETe5AEz/wDhZAQcGIyI1ND8BNjMyFRQPAQYjIjU0PwE2MzIVFBcHBiMiNTQ/ATYzMhUUBxQGIyImNTQ2MzIWAxQjIj0BNDMyFTc0JiMiBhUUFjMyNgEIVgYIFQZWBggVkEYGCBUGRgYIFTNGBggVBkYHCBQLLiIhLi4hIi47FBQUFBMXERAXFxAQGAJoVwYVCAZXBhUIVkcGFQgGRgYUCEBGBhUIBkUGFAjIIS4uISEuLv7WFBSLFBR+EBcWERAXFwAF//j//wDOAmsACwAXACEANgBIAHlANAFJSUBKJ0RBPjk3MCkfRjwyJwAEDB0cBCEYBgQSHBgFGgMFFQ8FCS0FIiIaABUDCQEBMkZ2LzcYAD8/Py8Q/RD9EP0Q/TwBL/0vPP08L/0uLi4uAC4uLi4uLi4uMTABSWi5ADIASUloYbBAUlg4ETe5AEn/wDhZEzQmIyIGFRQWMzI2NxQGIyImNTQ2MzIWAxQjIj0BNDMyFQMyHwEWFRQjIicmJwcGIyI1ND8BNgc2HwEWFRQjIi8BBwYjIjU0N4sXEBEXFxEQFycuICIuLiIgLjsTFBQTFAkGVgYVCAYjJUgGCBUGVgYFDw5WBhUIBkdJBggVBgEcEBcWERAXFxAhLi4hIS4u/tYUFIsUFAHNBlcGCBQGJCRIBhUIBlYGYA4OVwYIFAZISAYVCAYAAAMAIwABAiUCXwARACMARwBoQCgBSEhASUZEQT47ODAtKidGHhIGADEwBDY1GAUIHBQDBQwhEAgzATVGdi83GAAvLzw8L/08PBD9AS88/TwuLi4uLgAuLi4uLi4uLi4xMAFJaLkANQBISWhhsEBSWDgRN7kASP/AOFkBFAYjIiY1NDMyFBYzMjY0MzIHFCMiNCYjIgYUIyI1NDYzMhYFAwYjIi8BBwYjIi8BERQjIjURNDMyHwE3NjMyHwE3NjMyFRQB4zQlJTQUFB0UFB0UFM8UFB0UFB0UFDQlJTQBD3cGDAwGZGQGDQwGUBQUEw0GZWQHDAsHY2QFDRUCSyU0NCUUKB4eKFkTJx4eJxMlNDR9/ugPD+3tDw++/sATEwGiFg7t7RAQ7e0NFAUAAAgAHf/zAb8CuAANABsAKQA1AEEATQBZAGEAgkA6AWJiQGMqJyASCwQlHhcQCQI2BCo8BDBOBEJUBEhaBF45BTNRBUs/BS1XBUVcBWAZLWABSwIzAwEwRnYvNxgAPz8/Ly8Q/S/9EP0Q/RD9AS/9L/0v/S/9L/0uLi4uLi4ALi4uLi4xMAFJaLkAMABiSWhhsEBSWDgRN7kAYv/AOFkBFhUUIyIvASY1NDMyFwcWFRQjIi8BJjU0MzIfARYVFCMiLwEmNTQzMhcBFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFCMiNTQzMgE1BhQIB0cGFQgGMwYVCAZWBhMIB5gGFAgGSAYVCAYBCnpXV3p6V1d6J2RGRmRkRkZkLkg0NElJNDRIKDEjIzIyIyMxNh4eHh4CGgYIFAZGBggVBgYGCBUGVwYIFQfRBggVBkgGCBUG/p1Xe3tXV3t7V0ZkY0dGZGRGNElJNDRJSTQjMjIjIzIyIx0dHQAACAAd//MBvwK3AA0AGwApADUAQQBNAFkAYQCCQDoBYmJAYyomHxgRAyghGhMMBTYEKjwEME4EQlQESFoEXjkFM1EFSz8FLVcFRVwFYAotYAFLAjMDATBGdi83GAA/Pz8vLxD9L/0Q/RD9EP0BL/0v/S/9L/0v/S4uLi4uLgAuLi4uLjEwAUlouQAwAGJJaGGwQFJYOBE3uQBi/8A4WQEHBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQXBwYjIjU0PwE2MzIVFBMUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUIyI1NDMyAZRXBggVBlcGCBWQRgcIFAZGBggVM0cGBxUGRwYIFHZ6V1d6eldXeidkRkZkZEZGZC5INDRJSTQ0SCgxIyMyMiMjMTYeHh4eApRWBhUIBlYGFQhWRgcVCAZGBhQIQEYGFQgGRgYVCP61V3t7V1d7e1dGZGNHRmRkRjRJSTQ0SUk0IzIyIyMyMiMdHR0ABwAc//MBvwKWAAsAFwAjAC8ANwBMAGAAhUA8AWFhQGIAWlRLREA9XFJGOyQEGAwEABIEBioEHjAENA8FCScFIS0FGxUFA1cFTTIFNk0DNgEhAgkDAQZGdi83GAA/Pz8vLxD9EP0Q/S/9EP0Q/QEv/S/9L/0v/S/9Li4uLgAuLi4uLi4xMAFJaLkABgBhSWhhsEBSWDgRN7kAYf/AOFklFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFCMiNTQzMgMXFhUUIyIvAQYHBiMiNTQ/ATYXFicyHwEWFRQjIi8BBwYjIjU0PwE2Ab97V1d6eldXeyhkRkZjY0ZGZC5INDRJSTQ0SCcyIyMyMiMjMjceHh4eDVQGFQgGSBM1BggVBlcHCgkNCgZWBhQIB0lHBggVBlYGxVd7e1dXe3tXRmRjR0ZkZEY0SUk0NElJNCMyMiMjMjIjHR0dAVJUBggVBkgTNQYVCAZXBwECWwZXBggVB0hIBhUIBlYGAAcAHP/zAb8CUwARACMALwA7AEcAUwBbAIRAOwFcXEBdJFhUMCQeEgYASAQ8TgRCNgQqGAUhHBQDBQwzBS1LBUVRBT85BSdWBVoQCCEnWgFFAi0DASpGdi83GAA/Pz8vLzw8EP0Q/S/9EP0Q/S/9PDwQ/QEv/S/9L/0uLi4uLi4uLgAxMAFJaLkAKgBcSWhhsEBSWDgRN7kAXP/AOFkBFAYjIiY1NDMyFBYzMjY0MzIHFCMiNCYjIgYUIyI1NDYzMhYTFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFCMiNTQzMgGtNCUlNBQUHRQUHRQU0BMUHRQUHRQUNCUlM+J7V1d6eldXeyhkRkZjY0ZGZC5INDRJSTQ0SCcyIyMyMiMjMjceHh4eAj4lNDQlFCgdHShYFCgdHSgUJTQ0/qZXe3tXV3t7V0ZkY0dGZGRGNElJNDRJSTQjMjIjIzIyIx0dHQALAB3/8wHAAyEACwAXACMALwA7AEcATwBXAGMAbwB3AKJATQF4eEB5GHRwNjAqJBIMBgA8BBhqBF5kBFhCBB5QSARUTFIFVkoFTicFCTMFFQMFLQ8FOT8FIWcFYUUFG20FW3IFdgkbdgFhAiEDAR5Gdi83GAA/Pz8vLxD9L/0Q/RD9EP0v/S/9L/0Q/S/9L/0BLzz9PC/9L/0v/S/9Li4uLi4uLi4uLgAxMAFJaLkAHgB4SWhhsEBSWDgRN7kAeP/AOFkBFAYjIiY1NDYzMhYHFAYjIiY1NDYzMhYTFAYjIiY1NDYzMhYDNCYjIgYVFBYzMjYHNCYjIgYVFBYzMjYTNCYjIgYVFBYzMjYDFCMiNTQzMgcUIyI1NDMyExQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2JxQjIjU0MzIBSDQlJTQ0JSU0ATQkJTQ0JSQ0eXtWV3t7V1Z7oB0UFB4eFBQdAR0TFB4eFBQceWNGRmRkRkZjlRQUFBQBExQUE2lJMzRJSTQzSSgxIyMyMiMjMTcdHh4dAsklNTQmJTMz6yU0NCUlNDT+nVd7e1dXe3sBrRQcHBQUHh6yFB0dFBQdHf7WRmRjR0ZkZAJKFBQT2RQUE/6vNElJNDRJSTQjMjIjIzIyIx0dHQAGAA3/4AHZAasADQAnADUATwBdAGsAdkAxAWxsQG0MaFNMPysfEgNqY1xVSj00LR0QDAVGBDYZBCMWBSZDBTkKYVoBMgImAwFjRnYvNxgAPz8/Ly8v/RD9AS/9L/0uLi4uLi4uLi4uLi4ALi4uLi4uLi4xMAFJaLkAYwBsSWhhsEBSWDgRN7kAbP/AOFkBBwYjIjU0PwE2MzIVFAcWFRQjIicmIyIGFRQXFhUUIyInJjU0NjMyDwEGIyI1ND8BNjMyFRQXFAYjIicmNTQzMhcWMzI2NTQnJjU0MzIXFg8BBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQB034GCBUGfgYIFYgLFAQFJiZGZBICFAsGF3tXMQyCBggVBoMHBxSme1YxLgsTBQUlKEZjEgMVCwYXXH8GCBQGfgYIFcF9BggVBn0GCBUBiX4GFAgGfgYUCA8GCxQCEmNHJyYFBBMLKzNXe3WDBhUIBoIHFQhjV3sXBgsUAhJkRishBQUUCysvfgYUCAZ/BhUIbX0GFAgGfQYUCAAABgAP//MBVgKlAA0AGwApAEEAVQBpAH1ANAFqakBrVGZeUkonIBILBGhUSCUeFxAJAj08BEEqNjUEXDEwOQUtTgVEYgVYGVg/MwMBF0Z2LzcYAD88Ly8Q/S/9L/0BLzw8/TwvPP08Li4uLi4uLi4uAC4uLi4uLi4uLjEwAUlouQAXAGpJaGGwQFJYOBE3uQBq/8A4WQEWFRQjIi8BJjU0MzIXBxYVFCMiLwEmNTQzMh8BFhUUIyIvASY1NDMyHwEUBiMiJj0BNDMyHQEUFjMyNj0BNDMyFQcGIyInJjU0MzIXFjMyNzYzMhUUBwYjIicmNTQzMhcWMzI3NjMyFRQBAQYUCAZHBhUHBjMGFAcHVgYUCAaYBxYIBkgGFAgH0lk/P1kUFEIuLkIUFAU8VFI/BxMHBjVDRDMGBxQLQ0pLQwsUBQU5Qj4+BQQTAgkGCBUGRgYIFQYGBggVB1YGCBQG0AYIFQZHBggUBuo/Wlo/RhQURi9CQy5GFBT7MzQGCRQFKikFFAlnIiMGCxUDHh4CFQsABgAl//MBaAKkAA0AGwApAEEAVQBpAH1ANQFqakBrDGZeUkomHxgRA2goIRoTDAU2NQRcSDEDMD08BFRBKjkFLU4FRGIFWApYPzMDATBGdi83GAA/PC8vEP0v/S/9AS88PP08Lxc8/TwuLi4uLi4uAC4uLi4uLi4uLjEwAUlouQAwAGpJaGGwQFJYOBE3uQBq/8A4WQEHBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQXBwYjIjU0PwE2MzIVFBcUBiMiJj0BNDMyHQEUFjMyNj0BNDMyFQcGIyInJjU0MzIXFjMyNzYzMhUUBwYjIicmNTQzMhcWMzI3NjMyFRQBYlcGCBUGVwYIFZBGBggVBkYGBxYzRwYIFAZGBggVPlo+P1kUE0MuLkIUFAU8VFM/BxQHBjRERDMGBxMKQ0pMQwsUBQU4RD49BQQUAoJXBhUIBlYGFAhXRwYVCAZHBhYHP0YGFQgGRgYVCNM/Wlo/RhQURi5DQy5GFBT7MzQGCBUFKikFFAlnIiMGCxUDHh4CFQsABQAk//MBVwKFABMAJwA/AFMAZwB9QDUBaGhAaRJlXltYS0hFJBwQCGBWTUMSOzoEPyYoNDMELxoGAy43BSsgBRYMBQJSAj0xAwEuRnYvNxgAPzwvLxD9L/0v/QEvFzz9PC88PP08Li4uLi4ALi4uLi4uLi4uLi4xMAFJaLkALgBoSWhhsEBSWDgRN7kAaP/AOFklBiMiJyY1NDMyFxYzMjc2MzIVFCcGIyInJjU0MzIXFjMyNzYzMhUUJxQGIyImPQE0MzIdARQWMzI2PQE0MzIVAxcWFRQjIi8BBwYjIjU0PwE2MzIXFhUUIyIvAQcGIyI1ND8BNjMyFwFMQ0pLQwsUBQU4Qz49BQQUCDxUUz8HFAcGNUNEMwYHEwJaPj9ZFBRCLi5CFBSIUwcVCAZISAYIFQZXBggKWwcVCAZJSAYIFQZXCAcIBxUiIwYLFQMeHgIVC1szNAYIFQUqKQUUCa8/Wlo/RhQURi9CQy5GFBQBC1MHCBQGSEgGFQgGVga2BwgUBkhIBhUIBlYHCQAJACX/9AFZAtUACwAXAC8AQwBXAGMAbwB3AH8AokBLAYCAQIFCVExAOFZCNnhwBHx0ZFgEDAArKgQvGGpeBBIGJCMESh8eWwUJcgV2AwVhZwUVegV+DwUhJwUbPAUyUAVGCUZtLSEDAR5Gdi83GAA/PDwvLxD9L/0v/RD9L/0v/S/9L/0Q/QEvPDz9PC88/TwvPP08Lzz9PC88/TwuLi4ALi4uLjEwAUlouQAeAIBJaGGwQFJYOBE3uQCA/8A4WQEUBiMiJjU0NjMyFhUUBiMiJjU0NjMyFhcUBiMiJj0BNDMyHQEUFjMyNj0BNDMyFQcGIyInJjU0MzIXFjMyNzYzMhUUBwYjIicmNTQzMhcWMzI3NjMyFRQDNCYjIgYVFBYzMjYVNCYjIgYVFBYzMjYnFCMiNTQzMhUUIyI1NDMyARc1JSU0NCUmNDUlJTQ0JSU1P1o/P1kUFEIuL0IUFAVAUFM/BxMHBjRFQTUGBxULQUxOQQsUBQU3RUQ2BQUUah0VFB0dFBUdHRUUHR0UFR0eFBMTFBQTExQCeyU0NCUlNTTrJTQ0JSU0NLA/WVk/RhQURi5CQi5GFBT8MjQGCRQFKioFFgllIiIGCxUDHR0DFQsCXxQeHhQUHR2xFB0dFBQdHdkUFBTZFBQUAAABACX/dQEIAYsANwBzQDABODhAOSQ0MzYqIiAeCAIREAQWFTAEJAwEHBAPBRgGBQUKLSwFJxMoJwAZGAMBFUZ2LzcYAD88PzwvEP08L/08EP08AS/9L/0vPP08Li4uLi4uLgAuLjEwAUlouQAVADhJaGGwQFJYOBE3uQA4/8A4WTcyNTQmKwEiNTQzMjU0JisBERQjIjURNDsBMhYVFAcWFRQHFhUUBisBIjU0OwEyNjU0JisBIjU0fUwdFRkTEzMXDz8TFBRSIS0UKx42OislExMlGSQkGSYTsicSFhQUHQwR/iYUFAHuFCkcFRQWLhsWGTYlNBQUHBUVHRQTAAcAEP/0AbsCQQANABsAKQAzAD0ASQBVAHVAMAFWVkBXKjs2MSwnIBILBCUeFxAJAi8uBDMqOTgEPTRKBD5QBERHBU1TBUEZQQFERnYvNxgALy8Q/S/9AS/9L/0vPP08Lzz9PC4uLi4uLgAuLi4uLi4uLi4xMAFJaLkARABWSWhhsEBSWDgRN7kAVv/AOFkBFhUUIyIvASY1NDMyFwcWFRQjIi8BJjU0MzIfARYVFCMiLwEmNTQzMhcBFCMiPQE0MzIVBxQjIj0BNDMyFQcUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNgEnBhQIBkYGFAgGMwYVCAZWBhUIBpcGFAgHRwYVCAYBExMUFBNFFBQUFDlZPj5YWT0+WShBLi1BQS0uQQGkBggVBkcGCBQGBgYIFQZXBggVBtEGCBQGRgYIFQb+YxMT7RQU7RMT7RQUdj5ZWT4+WFg+LUFBLS5BQQAABwAU//QBvwJBAA0AGwApADMAPQBJAFUAdUAwAVZWQFcqOzYxLCYfGBEDKCEaEwwFLy4EMyo5OAQ9NEoEPlAEREcFTVMFQQpBAURGdi83GAAvLxD9L/0BL/0v/S88/TwvPP08Li4uLi4uAC4uLi4uLi4uLjEwAUlouQBEAFZJaGGwQFJYOBE3uQBW/8A4WQEHBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQnBwYjIjU0PwE2MzIVFBMUIyI9ATQzMhUHFCMiPQE0MzIVBxQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2AU9WBggUBlYGCBRVRwYHFgZHBggVQUYGCBQGRgYIFPQTFBQTRRQUFBQ5WT4+WFk9PlkoQS4tQUEtLkECHlcGFAgHVwYVCJBGBhYHBkYGFQg0RwYVCAZGBhQI/kATE+0UFO0TE+0UFHY+WVk+PlhYPi1BQS0uQUEABgAS//QBvgIpAAsAFwAhACsAQABUAH9ANQFVVUBWIlBNSkNBPDk2KSQfGlJIREM+NDAnJgQrIh0cBCEYAAQMBgQSAwUVCQUPMCwPARJGdi83GAAvLzwQ/S/9AS/9L/0vPP08Lzz9PC4uLi4uLi4ALi4uLi4uLi4uLi4uMTABSWi5ABIAVUloYbBAUlg4ETe5AFX/wDhZJTQmIyIGFRQWMzI2NxQGIyImNTQ2MzIWFxQjIj0BNDMyFRcUIyI9ATQzMhUBNhcmFRYXFhUUIyIvAQcGIyI1NDcXNhcVFhcWFRQjIi8BBwYjIjU0NwEXQS0uQUEuLUEoWD4+WVk+Plg6FBQUFEUUFBQU/twPDgEDVAYUCAdHSQcIEwZWDw4DVAYUCAdISQcIEwaLLUFBLS5BQS4+WVk+PlhYtRMT7RQU7RMT7RQUARkPDwEBAVYGCBUHSEcGFAgGBA8PAQFUBggUBkdHBhQIBgAABgAR//QBuwG1ABEAGwAtADcAQwBPAHxANQFQUEBRADUwGRQoHAYXFgQbEgBEBDgzMgQ3Lj4ESiIFCCYeAwUMRwVBTQU7KxAIOwwDAT5Gdi83GAA/Ly88PBD9L/0Q/Tw8EP0BL/0vPP08L/0vPDz9PC4uLgAuLi4uMTABSWi5AD4AUEloYbBAUlg4ETe5AFD/wDhZARQGIyImNTQzMhQWMzI2NDMyERQjIj0BNDMyFScUIyI0JiMiBhQjIjU0NjMyFhMUIyI9ATQzMhUHFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYBuzQlJTQUFB0UFB4UExMUFBPPExQeFBQdFBQ0JSU0ihQUFBQ5WD4+WFg+PlgoQC4uQEAuLkABoSU0NCUUKB0dKP5fExPtFBRbEycdHScTJTQ0/pMTE+0UFHY+WVk+PlhYPi1BQS0uQUEAAAgAEf/0AbwClAALABUAIQArADcAQwBPAFsAhUA7AVxcQF0MKSQTDhEQBBUMJyYEKyJQBCwWAAREOEo+BBwGVgQyAwVBOwUJRwUfGQVNNQVTWQUvCS8BMkZ2LzcYAC8vEP0v/S/9L/0Q/S/9AS/9Lzz9PC88/Twv/S88/TwvPP08AC4uLi4xMAFJaLkAMgBcSWhhsEBSWDgRN7kAXP/AOFkTFAYjIiY1NDYzMhYTFCMiPQE0MzIVJxQGIyImNTQ2MzIWExQjIj0BNDMyFQcUBiMiJjU0NjMyFgM0JiMiBhUUFjMyNhU0JiMiBhUUFjMyNhc0JiMiBhUUFjMyNvcvISEuLiEhL8UUFBQUxS4iIS4uISIugBQUFBQ5WT4+WFg+PllvFxEQFxcQEBgYEBAXFxARF0dBLi1BQS0uQQJEIC4uICEvL/2vExPtFBSLIi4uIiAvLv5nExPtFBR2PllZPj5YWAF7ERcYEBAXF6gQFxcQERcX8C1BQS0uQUEABgAS//QBvQHbAAkAFQAfACsANwBDAHNAMQFEREBFAB0YBwI4BCA+BCYFBAQJABsaBB8WCgQsMgQQLwUTDQU1OwUpQQUjEyMBJkZ2LzcYAC8vEP0v/S/9EP0BL/0v/S88/TwvPP08L/0v/QAuLi4uMTABSWi5ACYAREloYbBAUlg4ETe5AET/wDhZJRQjIj0BNDMyFScUBiMiJjU0NjMyFhMUIyI9ATQzMhUHFAYjIiY1NDYzMhYnNCYjIgYVFBYzMjYXNCYjIgYVFBYzMjYBvRQUFBTFLiIhLi4hIi6AFBQUFDpYPj5YWD4+WG4YEBAXFhERF0dBLi5BQS4uQRQTE+0UFIsiLi4iIC8u/mcTE+0UFHY+WVk+PlhYwxAXFxARFxfwLUFBLS5BQQAABQAV//MDDQEgAAkAEwAzAD0AXQCEQDgBXl5AXwhaTDs2MCJcSjIgEg0IAykEGT00BDk4UwRDAQAFBgVQJgUcEA8FCwosVgVARhwWQAFDRnYvNxgALzwvPBD9PC88/TwQ/TwvPP08AS/9Lzz9PC/9Li4uLi4uLi4ALi4uLi4uMTABSWi5AEMAXkloYbBAUlg4ETe5AF7/wDhZJSEiNTQzITIVFAchIjU0MyEyFRQHBiMiJjU0NjMyFxYVFCMiJyYjIgYVFBYzMjc2MzIVFAUUIyI9ATQzMhUHBiMiJjU0NjMyFxYVFCMiJyYjIgYVFBYzMjc2MzIVFAL5/tcTEwEpFBT+1xMTASkUkytDP1hYPzgpBxQGBh8pLkFBLjAhBggU/tkUFBQUSyo4PlhYPjooBxUHBh0qLkBALiodBggUnhQTExRFFBQUFDUwWD4+WCQGCRQFGkAuLkAjBhQHFhMT7BQU6CVZPj5YJAcIFgYbQS0uQRsGFQkAAAQAFf9qArgBSAAHAE0AWwBpAIpAPAFqakBrHDQsHhYSCGZcWlBOPjYuJRxHBDgEBABVBGhhBA1ABgUCRAU7XlIiBRBkWCgFCjI7GBQQAgENRnYvNxgAPzw8Ly88/Tw8EP08PBD9L/08AS/9L/0v/S/9Li4uLi4uLi4uLgAuLi4uLi4xMAFJaLkADQBqSWhhsEBSWDgRN7kAav/AOFkFFCMiNTQzMicGIyImNTQ2MzIXNjMyFzYzMhcWFRQjIicmIyIGFRQWMzI3NjMyFRQHBiMiJwYHFhUUBiMiJjU0MzIUFjMyNjU0JiMiJyY3NDcmIyIGFRQWMzI3JicmIyIGFRQWMzI3JjU0AZAUFBQUcio0R2RkRzQoKTY1KCk2RjUGFAgGJzg2TU02OCcGCBQGNkUzLA8OGjQlJTQUEx4UFB0dFAUCMEctGiQ2TEw2IxstjxsiNk1NNiIbLD0UFBM6HGRGRmQdHR0dNQYIEwYoTTU2TSkGFAcGNh0KBRokJTQzJhMnHh4UFBwBAqhCMBBNNTZMDzC1EE01NkwPMUJBAAYAFv/zAa4CQQANABsAKQAzAD0AXQB4QDEBXl5AXzJaTCcgEgsEXEo8NzItJR4XEAkCUwRDMC8FKypGBVA6OQU1NFYFQBlAAUNGdi83GAAvLxD9Lzz9PC/9Lzz9PAEv/S4uLi4uLi4uLi4uLgAuLi4uLi4uMTABSWi5AEMAXkloYbBAUlg4ETe5AF7/wDhZARYVFCMiLwEmNTQzMhcHFhUUIyIvASY1NDMyHwEWFRQjIi8BJjU0MzIXEyEiNTQzITIVFAchIjU0MyEyFRQHBiMiJjU0NjMyFxYVFCMiJyYjIgYVFBYzMjc2MzIVFAEsBhQIB0YGFAgHMwYVCAZWBhQIBpgHFAgHSAcWCAbt/tgTEwEoFBT+2BMTASgUkyxCPllZPjkpBxQHBiImLkFBLjAhBggUAaQGCBUHRgYIFQcFBggVBlYGCBUG0QcIEwZGBggVBv7tFBMTFEYUFBQUNDFZPj5YJAYJFQUbQS0uQSQGFAcAAAYAFf/zAa0CPwANABsAKQAzAD0AXQB4QDEBXl5AXzJaTCYfGBEDXEo8NzItKCEaEwwFUwRDMC8FKypGBVA6OQU1NFYFQApAAUNGdi83GAAvLxD9Lzz9PC/9Lzz9PAEv/S4uLi4uLi4uLi4uLgAuLi4uLi4uMTABSWi5AEMAXkloYbBAUlg4ETe5AF7/wDhZAQcGIyI1ND8BNjMyFRQPAQYjIjU0PwE2MzIVFBcHBiMiNTQ/ATYzMhUUFyEiNTQzITIVFAchIjU0MyEyFRQHBiMiJjU0NjMyFxYVFCMiJyYjIgYVFBYzMjc2MzIVFAFSVwYIFQZXBggVkEYGCBUGRgYHFjNHBggUBkcGBxWS/tgTEwEoFBT+2BMTASgUkyxCPllZPjooBxQHBiEnLkFBLi8iBggUAh1XBhQIBlcGFAhXRwYVCAZHBhYHP0YGFAgGRwYVCPsUExMURhQUFBQ0MVk+PlgkBgkVBRtBLS5BJAYUBwAFABX/8wGtAh8AHwApADMARwBZAHpAMgFaWkBbKFlXUk9MPzw5HA5USkE3Mi0oIx4MFQQFMC8FKyoSBQgmJQUhIBgFAkYCAQVGdi83GAAvLxD9Lzz9PC/9Lzz9PAEv/S4uLi4uLi4uLi4ALi4uLi4uLi4uLjEwAUlouQAFAFpJaGGwQFJYOBE3uQBa/8A4WSUGIyImNTQ2MzIXFhUUIyInJiMiBhUUFjMyNzYzMhUUNyEiNTQzITIVFCchIjU0MyEyFRQDFxYVFCMiLwEHBiMiNTQ/ATYzMhcWFRQjIi8BBwYjIjU0PwE2FwEaLEI+WVk+OigHFAcGIScuQUEuLyIGCBR6/tgTEwEoFBT+2BMTASgU8FMGFAgGSEgGCBUGVwYIClsGFQgGSEgGCBUGVxEMJDFZPj5YJAYJFQUbQS0uQSQGFAcuFBQUFEYUExMUAXhTBggVBkhIBhUIBlYGtgYIFQZISAYVCAZWEBAABv+2/7oAsgJGAA0AGwApADUAPwBLAGZAKAFMTEBNKj0nIBILBCUXEAlABAIqOzoEPzYeRgQwQwUzSQUtGTgBF0Z2LzcYAC8vL/0v/QEv/S88PP08Lzz9Li4uLgAuLi4uLi4xMAFJaLkAFwBMSWhhsEBSWDgRN7kATP/AOFkTFhUUIyIvASY1NDMyFwcWFRQjIi8BJjU0MzIfARYVFCMiLwEmNTQzMh8BFAYjIiY1NDYzMhYDFCMiPQE0MzIVNzQmIyIGFRQWMzI2qgYVCAZHBhUIBjMGFQgGVwYUCAeYBhUIBkcGFAgGiS4hIi4uIiEuOxQUFBQTFxARFxcREBcBqQYIFQZHBggVBgYGCBUGVwYIFAbQBggVBkcGCBUG4CEuLiEhLi7+1hQUixQUfhAXFxARFhcAAAYAFP+6AQ4CRQANABsAKQA1AD8ASwBmQCgBTExATQw9Jh8YEQMoGgwFQAQqPzYEOyE6RgQTMEMFM0kFLQo4ATBGdi83GAAvLy/9L/0BLzz9Lzw8/Twv/S4uLi4ALi4uLi4uMTABSWi5ADAATEloYbBAUlg4ETe5AEz/wDhZAQcGIyI1ND8BNjMyFRQPAQYjIjU0PwE2MzIVFBcHBiMiNTQ/ATYzMhUUBxQGIyImNTQ2MzIWAxQjIj0BNDMyFTc0JiMiBhUUFjMyNgEIVgYIFAZWBggUj0YGCBUGRgYIFTNGBggVBkYGCBUMLiAiLi4iIC47ExQUExQXEBEXFxEQFwIiVgYVCAZWBhUIVUcGFAgGRwYVB0FFBhUIBkUGFQjHIS4uISEuLv7WFBSLFBR+EBcXEBEWFwAF//j/ugDNAiYACwAXACEANgBJAGtAKwFKSkBLJ0hGQT47MCkfQzkyJwAEDCEYBB0cBgQSAwUVCQUPLQUiIhoBMkZ2LzcYAC8vEP0v/S/9AS/9Lzz9PC/9Li4uLgAuLi4uLi4uLjEwAUlouQAyAEpJaGGwQFJYOBE3uQBK/8A4WTc0JiMiBhUUFjMyNjcUBiMiJjU0NjMyFgMUIyI9ATQzMhUDMh8BFhUUIyInJicHBiMiNTQ/ATYXFhUUIyIvAQcGIyI1ND8BNhcWihcQERcXERAXKC4hIi4uIiEuOxQUFBQVCQZWBhUIBiMlSAYIFAZWBW4GFQgGR0kGCBQGVg0OEtcQFxcQERYXECEuLiEhLi7+1hQUixQUAc0GVwYIFQYlJEgGFQgGVga3BggVBklIBhUIBlYNDREAAAYAHQABAcEBwgARABsAJQAvAEEAZwCcQEYBaGhAaV5gWVFFKCMZNjAMAGIEXhcWBBsSSEcEQ0IlHAQhIE9OBFRTLyYEKyplSwVbVwYFDwoCMwU8QDgPHhQ8Ay0CASpGdi83GAA/Py88Lzw8EP08PBD9Lzz9PAEvPP08Lzz9PC88/TwvPP08Lzz9PC/9Li4uLgAuLi4uLi4uMTABSWi5ACoAaEloYbBAUlg4ETe5AGj/wDhZExQjIjQmIyIGFCMiNTQ2MzIWExQjIj0BNDMyFQcUIyI9ATQzMhUHFCMiPQE0MzIVJRQGIyImNTQzMhQWMzI2NDMyBxUUIyI9ATQmIyIGHQEUIyI9ATQ2MzIXNjMyFhUUIyI1NCYjIgbmFBQeFBUdFBQ1JSU1jBQUFBSgFBQUFI0UFBQUAXI0JSU1FBQdFRQeFBOXExUkFhkjFBQ7KS4gGzcoOxQUJBcZJQFoEygdHSgTJjQ1/ocTE58UFJ8TE58UFBMTE58UFG8mNDUlFCkdHSn5DBMTChcmJBgLExMLKToqKkQqExMaLSMAAAcAAv/zAUQCVQANABsAKQA1AEEATQBZAHJAMAFaWkBbKicgEgsEJR4XCQI2BCpOBEIQVARIPAQwMwU5UQVLVwVFPwUtGS1LAQEXRnYvNxgAPy8vEP0v/RD9L/0BL/0v/Twv/S/9Li4uLi4ALi4uLi4xMAFJaLkAFwBaSWhhsEBSWDgRN7kAWv/AOFkTFhUUIyIvASY1NDMyFwcWFRQjIi8BJjU0MzIfARYVFCMiLwEmNTQzMhcTFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjb1BhQIBkcGFAgGMwYUCAZXBhUIBpgGFAgHSAYVCAbPWD4+WFg+PlgoQC4uQEAuLkAbMCMjMDAjIzAoGhESGRkSERoBtwYIFAZHBggUBgYHCBQGVwYIFQbRBggUBkYGCBUG/sU+WVk+PlhYPi1BQS0uQUEuIjEwIyMwMCMSGRkSEhkZAAcAGf/zAVsCVAANABsAKQA1AEEATQBZAHJAMAFaWkBbDCYfGBEDKCEaEwxUBEg8BDA2BCoFTgRCMwU5UQVLVwVFPwUtCi1LAQEwRnYvNxgAPy8vEP0v/RD9L/0BL/08L/0v/S/9Li4uLi4ALi4uLi4xMAFJaLkAMABaSWhhsEBSWDgRN7kAWv/AOFkBBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUFwcGIyI1ND8BNjMyFRQTFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYBVVcHCBQGVwYIFZBGBgcWBkYGCBUzRwYIFAZHBggUO1g/PVhXPj9YKEEuLUFBLS5BGzEjIjAwIiMxKBoSEhkZEhIaAjFWBhQIBlcGFQhWRwYWBwZHBhUIP0YGFAgGRgYUCP7cPllZPj5YWD4tQUEtLkFBLiMwMCMjMDAjEhkZEhIZGQAABgAX//MBQwI0AAsAFwAjAC8ARABZAHJAMAFaWkBbAFFNSkM8ODVTSD4zJAQYDAQAKgQeEgQGCQUPJwUhLQUbFQUDWAMhAQEGRnYvNxgAPy8vEP0v/RD9L/0BL/0v/S/9L/0uLi4uAC4uLi4uLi4xMAFJaLkABgBaSWhhsEBSWDgRN7kAWv/AOFklFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYDFxYVFCMiLwEGBwYjIjU0PwE2MzI3FxYVFCMiLwEGBwYjIjU0PwE2MzIBQ1g+PlhYPj5YKEAuLkBALi5AGzAjIjExIiMwJxoSEhkZEhIaG1QGFQgGRxQ1BggVBlcHCAoGVAYVCAZHFDUGCBUGVwYIC4o+WVk+PlhYPi1BQS0uQUEuIjExIiMwMCMSGRkSEhkZAVlUBggUBkcTNAYUCAZXB1BUBggUBkcTNAYUCAZXBgAG/+7/8wFwAbQAEQAjAC8AOwBHAFMAeEA0AVRUQFUASDweEgYAMAQkTgRCNgQqGAUIHBQDBQwzBS1LBUVRBT85BSchEAgnRQEMAwEeRnYvNxgAPz8vLzw8EP0v/RD9L/0Q/Tw8EP0BL/0v/S/9Li4uLi4uADEwAUlouQAeAFRJaGGwQFJYOBE3uQBU/8A4WQEUBiMiJjU0MzIUFjMyNjQzMgcUIyI0JiMiBhQjIjU0NjMyFhcUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNgFwNCUlNRQUHhQUHRQUzxQUHRQUHhQUNSUlNKNYPj9YWD8+WChBLS5BQS4tQRwwIiMxMSMiMCcaERIaGhIRGgGgJTQ0JRQoHR0oWRMnHR0nEyU0NPY+WVk+PlhYPi1BQS0uQUEuIzAwIyMwMCMSGRkSEhkZAAgAGf/zAUYCjwALABcAIwAvADsARwBTAF8Ag0A7AWBgQGEYVEg2KhIGPAQYMCQEDABaBE5CBB4nBQkDBS0zBRUPBTkhBT9XBVFdBUtFBRsJG1EBOQIBHkZ2LzcYAD8/Ly8Q/S/9EP0v/RD9L/0v/RD9AS/9L/0vPP08L/0uLi4uLi4AMTABSWi5AB4AYEloYbBAUlg4ETe5AGD/wDhZExQGIyImNTQ2MzIWFRQGIyImNTQ2MzIWExQGIyImNTQ2MzIWAzQmIyIGFRQWMzI2FTQmIyIGFRQWMzI2FzQmIyIGFRQWMzI2JxQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2/y4hIi4uIiEuLiEhLy8hIS5HWD8+WFg+P1hvFxARFxcREBcXEBAYGBAQF0dBLi1BQS0uQRsxIyIxMSIjMSgaEhIZGRISGgJAIS4uISEuLtohLy8hIS4u/uI+WVk+PlhYAXgQFxcQEBcXqRAXFxAQGBjtLUFBLS5BQS4iMTEiIzAxIhIZGRISGRkABgAN/+YBVgEvAA0AGwAzAEEAWQBnAHJALgFoaEBpDGRWSz43KyARA2ZfVElAOSkeGhMMBVEEQiYELyMFMk4FRQpdGAEBX0Z2LzcYAD8vLy/9L/0BL/0v/S4uLi4uLi4uLi4uLgAuLi4uLi4uLi4xMAFJaLkAXwBoSWhhsEBSWDgRN7kAaP/AOFkBBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUNxYVFCMiJiMiBhUUFhUUIyInJjU0NjMyFwcGIyI1ND8BNjMyFRQ3FAYjIicmNTQzMhYzMjY1NCY1NDMyFxYPAQYjIjU0PwE2MzIVFAFQVwcIFAdWBggVkEYGCBQGRgYIFBQNEwYaCC5BBhQOBQdZPh4wRgcIFAZGBwgUQlg+GhQPEwccBy1BBhQOBQfBVwYIFQZXBggVAQxWBxQIB1cGFQhWRgYTCAdHBhUIWAUOFAVALQccBxMPFBo9WJ5FBxUIBkUGFAgDP1gHBQ4UBkEuBxsHEw8UYlYGFQgGVgYVCAAABf/p//QBDgIzAA0AGwApAEEAVQBvQCwBVlZAV1RSSj8zJyASCwQlHhcQCQI9PARUQSo2NQRIMTA5BS1OBUQZRAEXRnYvNxgALy8Q/S/9AS88PP08Lzw8/TwuLi4uLi4ALi4uLi4uLi4uMTABSWi5ABcAVkloYbBAUlg4ETe5AFb/wDhZExYVFCMiLwEmNTQzMhcHFhUUIyIvASY1NDMyHwEWFRQjIi8BJjU0MzIfARQGIyImPQE0MzIdARQWMzI2PQE0MzIVBwYjIicmNTQzMhcWMzI3NjMyFRTcBhYHBkYGFQgGNAYVCAZWBhUIBpcGFAgGSAYVCAawRDIyRRQULyAgLxQTCDM7PTEJFAYFJTMyJgUGFQGWBgcWBkcGCBUGBgYIFQZWBggVBtEGCBUGRwYIFQbpMkVFMkQUFEQhLi4hRBQU6SEhBgoVBBobBBYKAAAFACD/9AFAAjMADQAbACkAQQBVAG9ALAFWVkBXDFJKPzMmHxgRAzY1KBoTDAU9PARUQSohBEgxMDkFLU4FRApEATBGdi83GAAvLxD9L/0BLzw8/S88PP08Li4uLi4uLgAuLi4uLi4uLi4xMAFJaLkAMABWSWhhsEBSWDgRN7kAVv/AOFkBBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUJwcGIyI1ND8BNjMyFRQTFAYjIiY9ATQzMh0BFBYzMjY9ATQzMhUHBiMiJyY1NDMyFxYzMjc2MzIVFAE6VQYIFQZWBggUVkYGCBUGRgYIFT9GBggVBkYGCBVWRTIxRRQULiAhLhQUCDM8PDEJEwYGJjEyJwUGFAIQVwcWCAZXBhQIkUYGFQgGRgYVCDNGBhQIBkcGFQj+9TJFRTJEFBREIS4uIUQUFOkhIQYKFQQaGwQWCgAABAAe//QBDQIaABcAKwA9AFEAd0AwAVJSQFMqTUpHPTs2MzAoIBUJT0VBQDguExIEKhcADAsEHgcGDwUDJAUaQD4aAQZGdi83GAAvLzwQ/S/9AS88PP08Lzw8/TwuLi4uLi4ALi4uLi4uLi4uLi4uMTABSWi5AAYAUkloYbBAUlg4ETe5AFL/wDhZJRQGIyImPQE0MzIdARQWMzI2PQE0MzIVBwYjIicmNTQzMhcWMzI3NjMyFRQDFhUUIyIvAQcGIyI1ND8BNhcnNhcVFhcWFRQjIi8BBwYjIjU0NwEMRTIxRhQULyAhLhQUCDM8PTEJFAYFJTMxJwYGFBQGFAgGSUgGCBQGVg4OHA4OBlEGFAgGSUgGCBUGujJFRTJEFBREIS4uIUQUFOkhIQYKFQQaGwQWCgFABggVBklIBhUIBlYODloODgEFUQYIFQZJSAYVCAYAAAYAH//0AQ4CXgALABcALwBDAE8AWwCGQDsBXFxAXUJAOC0hKyokI0IvGAQAUEQEDABWSgQGEgYENh8eUwUVRwUJAwVNWQUPJwUbPAUyCTIVAwEeRnYvNxgAPy8vEP0v/S/9L/0Q/RD9AS88PP08EP08Lzz9PBD9PDwuLi4uAC4uLi4xMAFJaLkAHgBcSWhhsEBSWDgRN7kAXP/AOFkTFAYjIiY1NDYzMhYVFAYjIiY1NDYzMhYXFAYjIiY9ATQzMh0BFBYzMjY9ATQzMhUHBiMiJyY1NDMyFxYzMjc2MzIVFAM0JiMiBhUUFjMyNhU0JiMiBhUUFjMyNuUvICEuLiEhLi8gIS4uISAvJ0QyMkUUFC8gIC8UEwgzOz0xCRQGBSUzMiYFBhVRFxARFhcQEBcXEBAXFxAQFwIOIS4uISIuLtohLy8hIC4uvDJFRTJEFBREIS4uIUQUFOkhIQYKFQQaGwQWCgHzERcXERAXF6gQFxcQERcYAAAMABn/2gNLAX0ACQATAB0AJwAxADsARQBRAF0AaQB1AH0AvkBZAX5+QH8IfHhVQkE9PDg3MzIkIx8eRD86NTArJiEcFxINCANGBFJYBExeBGpwBGR2BHoBAAUFbQVnCwoFDxoZBRUUcwVhWwVJLi0FKShJTwMQDwMGBQEBTEZ2LzcYAD88Pzw/Ly88/TwQ/S/9Lzz9PBD9PC/9EP08AS/9L/0v/S/9L/0uLi4uLi4uLi4uLi4uLgAuLi4uLi4uLi4uLi4uLi4xMAFJaLkATAB+SWhhsEBSWDgRN7kAfv/AOFklIyI1NDsBMhUUJyEiNTQzITIVFBcjIjU0OwEyFRQnIyI1NDsBMhUUByMiNTQ7ATIVFAcjIjU0OwEyFRQHISI1NDMhMhUUJRQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2JxQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2JxQjIjU0MzIDN3YUFHYUiv7yFBQBDhRidhMTdhSK5BMT5BQUyxMTyxQU5BMT5BQU/vMTEwENFP7meldXenpXV3onZEZGZGRGRmQuSDQ0SUk0NEgoMSMjMjIjIzE2Hh4eHtEUExMUeBQUFBTrFBQUFKwUFBQUcxQUFBRyFBQUFD8UFBQUxVZ7e1ZXe3tXRmRjR0ZjY0YzSUkzNElJNCMyMiMjMTIjHR0dAAYAEv/zAq4BIAALABcAIwAtADcAXwB+QDQBYGBAYSxYVE5KQjg0My8uGwkDWlFIPTYxLCcGAAwEGB4EEiUkBSopIQUPREBeOhUBAT1Gdi83GAA/LzwvPC/9Lzz9PAEv/S/9Li4uLi4uLi4uLgAuLi4uLi4uLi4uLi4uMTABSWi5AD0AYEloYbBAUlg4ETe5AGD/wDhZJTQmIyIGFRQWMzI2JxQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2JSEiNTQzITIVFAchIjU0MyEyFRQFBiMiJjU0NjMyFzYzMhcWFRQjIicmIyIGFRQWMzI3NjMyFRQHBiMiARdBLi5BQS4uQRwwIyMxMSMjMCgZEhIaGhISGQHH/tcTEwEpFBT+1xMTASkU/n0uVT9XVz9WLSpYOicHFAYGIScuQUEuMCAGCRUGLEJYii1BQS0uQUEuIjExIiIxMCMSGRkSEhkZJRQUFBRFFBQUFBlMWD8+WExLIwcIFQUbQS0uQSMHFQcGMAADAAr/2AD+AtoALQA/AFEAhUA3AVJSQFMgUUc9ODEuAkxCOzMsKSYjIBsYFRIPDAkEARkYBR4dJCMFExIqKQUNDERKBwYBAAEJRnYvNxgAPy88LzwvPP08Lzz9PC88/TwBLi4uLi4uLi4uLi4uLi4uLi4uAC4uLi4uLi4xMAFJaLkACQBSSWhhsEBSWDgRN7kAUv/AOFk3BzMyFRQrASI1ND8BIyI1ND8BIyI1ND8BIyI1NDsBMhUUDwEzMhUUDwEzMhUUAzc2MzIVFA8BBi8BJjU0MzIXJyY1NDMyHwE3NjMyFRQPAQYn9JmNFBTHFwqZjBcKmo0XCpmMFBTGFwqZjBcKmo0XekkGCBQGVg8OVgYVCAYdBhUIBkhIBggUBlUPDnp6FBQSCgh6EgoIehIKCHoUFBIKCHoSCgh6EgoBsEgGFQgGVg8OVwYIFQY8BggVBkhJBhUIBlYPDgADAAr//wD+AosAIQA1AEoAeUAyAUtLQEwaMywlIhNGPDEnIB0aFRIPDAkEAR4dBQ0MAgEFBkEFNjpIGBcDEgIHBgABCUZ2LzcYAD88Pz88Lzwv/RD9PC88/TwBLi4uLi4uLi4uLi4uLi4ALi4uLi4xMAFJaLkACQBLSWhhsEBSWDgRN7kAS//AOFk3BzMyFRQrASI1ND8BIyI1ND8BIyI1NDsBMhUUDwEzMhUUAzc2MzIVFA8BBiMiLwEmNTQzMhc3Njc2MzIVFA8BBiMiLwEmNTQzMhf0npEUFMYXCp6RFwqekRMTxhcKnpEXekkGCBUHVgYIBwhWBhUIBkcUNQYIFQdVBwcJBlcGFQgGto8UFBEJCZARCQmOFBQRCQmPEQkBI0gGFAgHVgYGVgYIFgcSFDQGFAgHVQgHVgYIFgcAAAIABwG/ANwCoAATACYASUAXAScnQCgFIh8cCgAkGhcPBRcUDQcBD0Z2LzcYAC88LzwBLi4uLi4ALi4uLi4xMAFJaLkADwAnSWhhsEBSWDgRN7kAJ//AOFkTMh8BFhUUIyIvAQcGIyI1ND8BNic2FzEXFhUUIyIvAQcGIyI1NDdxCAdWBhQIBkhJBggUBlYICA4OVwYUCAZJSAYIFAYCPgZWBggVBkhIBhUIBlYGVA4OVwYIFQZJSAYVCAYAAgADAfkA2QLbABEAIwBFQBUBJCRAJQUcFA8DACEXDQUZHwoBF0Z2LzcYAC8vPAEuLi4uAC4uLi4uMTABSWi5ABcAJEloYbBAUlg4ETe5ACT/wDhZEzc2MzIVFA8BBi8BJjU0MzIfAQYvASY1NDMyHwE3NjMyFRQHbkgGCBUGVg8OVgYUCAZXDw5WBxUIBklHBggVBgIzSAYVCAZWDw5XBwgUBhkPDlYHCBQGSEkGFQgGAAEABQG/APIB5gAJADlADwEKCkALCAgDBgUBAAEDRnYvNxgALzwvPAEuLgAxMAFJaLkAAwAKSWhhsEBSWDgRN7kACv/AOFkTIyI1NDsBMhUU3sYTE8YUAb8UExMUAAABAAUBqAC3AhUAEQA8QBEBEhJAEwAGAAwFAxAIAwEGRnYvNxgALy88EP0BLi4AMTABSWi5AAYAEkloYbBAUlg4ETe5ABL/wDhZExQGIyImNTQzMhQWMzI2NDMytzQlJTQUFB0UFB0UFAIBJTQ0JRQoHR0oAAEADQHaAFwCKQALADZADgEMDEANAAAEBgkDAQZGdi83GAAvLwEv/QAxMAFJaLkABgAMSWhhsEBSWDgRN7kADP/AOFkTFAYjIiY1NDYzMhZcFxARFxcREBcCARAXFxARFxcAAwAPAagAwQJaAAsAFwAfAE9AHQEgIEAhAAwEABgEHBIEBhUFAx4FGg8FCQkDAQZGdi83GAAvLxD9L/0Q/QEv/S/9L/0AMTABSWi5AAYAIEloYbBAUlg4ETe5ACD/wDhZExQGIyImNTQ2MzIWBzQmIyIGFRQWMzI2JxQjIjU0MzLBNCUlNDQlJTQnHhQUHR0UFB4eFBQUFAIBJTQ0JSU0NCUUHR0UFB0dFRUVEwAAAgAV/2oAxwAcAAcAHwBLQBoBICBAIQgIFwQOEwAEBBoFCx4GBQIRCwEORnYvNxgALy8v/TwQ/QEv/Twv/S4AMTABSWi5AA4AIEloYbBAUlg4ETe5ACD/wDhZFxQjIjU0MzIXFAYjIiY1NDYzMhUUIgYVFBYzMjY0MzKCFBQUFEU0JSU0NCUUKB0dFBQdFBQ9FBQUFCU0NCUlNBQUHRQUHh4nAAACAAYBvwGIAi0AEQAjAEtAGQEkJEAlAB4SBgAMBQMYBSEQCCEcFAMBHkZ2LzcYAC88PC88PBD9EP0BLi4uLgAxMAFJaLkAHgAkSWhhsEBSWDgRN7kAJP/AOFkBFAYjIiY1NDMyFBYzMjY0MzIHFCMiNCYjIgYUIyI1NDYzMhYBiDQlJTQUFB0UFB0UFM8UFB0UFR0UFDUlJTQCGCU0NCUUKB4eKFkTJx4eJxMmNDUAAAMAFwAFAMkAfAAJABMAHQBUQB4BHh5AHwAFBAQJABMKBA8OHRQEGRgbEQcWDAIBGEZ2LzcYAC88PC88PAEvPP08Lzz9PC88/TwAMTABSWi5ABgAHkloYbBAUlg4ETe5AB7/wDhZNxQjIj0BNDMyFQcUIyI9ATQzMhUHFCMiPQE0MzIVyRMUFBNFFBQUFEUUFBQUGRQUTxQUTxQUTxQUUBMTUBQUAAADABYBPADJAbMACQATAB0AVEAeAR4eQB8AEwoEDw4FBAQJAB0UBBkYGxEHFgwCARhGdi83GAAvPDwvPDwBLzz9PC88/TwvPP08ADEwAUlouQAYAB5JaGGwQFJYOBE3uQAe/8A4WRMUIyI9ATQzMhUHFCMiPQE0MzIVBxQjIj0BNDMyFckUFBQURhMUFBNFFBQUFAFPExNQFBRQExNQFBRQExNPFBQAAwAWAHYAyAEoAAsAFwAfAFRAIAEgIEAhABIEBhwMBAAYBBwVBQMaBR4PBQkJAx4BAQZGdi83GAA/Ly8Q/RD9EP0BL/3d/RDd/QAxMAFJaLkABgAgSWhhsEBSWDgRN7kAIP/AOFk3FAYjIiY1NDYzMhYHNCYjIgYVFBYzMjYnFCMiNTQzMsg0JSU0NCUlNCgcFRQdHRQVHB0UExMUzyU0NCUlNDQlFB0dFBQdHRQUFBQAAA0ABv/fAqMBrAANABkAJwAzAEEATwBbAGcAbwB3AIMAjwCXAK1AUgGYmECZeEw3HQNOQDkmHwVWBEcUlASQfgSKXAQMKIQEeGIELg4EUGgEbHQEcI1lBStTBRdqBW6BMQWHX5Z2BZJyEQVZChd7RStuAz4BJAIBFEZ2LzcYAD8/Py88PC88L/0vPP08Lzz9PBD9EP0Q/TwBL/0v/S/9L/0v/S88/S/9L/0vPP0uLi4uLi4ALi4uLjEwAUlouQAUAJhJaGGwQFJYOBE3uQCY/8A4WQEHBiMiNTQ/ATYzMhUUBRQGIyImNTQ2MzIWFwcGIyI1ND8BNjMyFRQXFAYjIiY1NDYzMhYnBwYjIjU0PwE2MzIVFA8BBiMiNTQ/ATYzMhUUJzQmIyIGFRQWMzI2ATQmIyIGFRQWMzI2ARQjIjU0MzIBFCMiNTQzMgUUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNicUIyI1NDMyAcx+BggUBn4GCBT+5jQlJTQ0JSU0WoMGCBQGggcIFLs0JiU0NCUlNXF/BggVBn8GCBXCfQYIFAZ9BggVHR0UFB4eFBQdARseFBQdHRQUHv7IFBQUFAEaFBQUFAEWNCUlNDQlJTQoHRQUHR0UFB0dFBQUFAGJfgYUCAZ+BhQIPSU0NCUmNDVVgwYVCAaCBxUI8CU0NCUlNDRtfgYUCAZ/BhUIbX0GFAgGfQYUB+gUHh4UFB0d/voUHR0UFB4eAS8UFBT+0RQUFBQlNDQlJTQ0JRQdHRQUHh4UFBQUAAQAFf/gAeEBqwANABsAKQA3AE9AGwE4OEA5DDQfEQM2LyghGhMMBQotJgEYAgEvRnYvNxgAPz8vLwEuLi4uLi4uLgAuLi4uMTABSWi5AC8AOEloYbBAUlg4ETe5ADj/wDhZAQcGIyI1ND8BNjMyFRQPAQYjIjU0PwE2MzIVFBcHBiMiNTQ/ATYzMhUUDwEGIyI1ND8BNjMyFRQB234GCBUGfgYIFcGCBggVBoMHBxRKfwYIFQd+BggVwX0GCBUGfQYIFQGJfgYUCAZ+BhQIbYMGFQgGggcVCF5+BhMIB38GFQhtfQYUCAZ9BhQIAAACAAwAoABvAQIACwATAEJAFQEUFEAVAAYADAQQDgUSAwkSAQEGRnYvNxgAPy8vEP0BL/0uLgAxMAFJaLkABgAUSWhhsEBSWDgRN7kAFP/AOFk3NCYjIgYVFBYzMjYnFCMiNTQzMm8eFBQdHRQUHh4UFBQU0RQdHRQUHR0UFBQUAAAAAAAAAAAAfAAAAHwAAAB8AAAAfAAAAb4AAAJkAAAD9gAABdAAAAciAAAILAAACSQAAAo4AAAKuAAAC2QAAAwQAAAM/gAADgQAAA6uAAAPsAAAEK4AABG0AAASpgAAE7oAABR2AAAVjAAAFqgAABfCAAAYuAAAGcIAABpuAAAbZgAAHOQAAB3cAAAe3AAAICgAACGWAAAi1gAAI8oAACTIAAAl3AAAJugAAChaAAApYAAAKhwAACrmAAArngAALKQAAC2sAAAu2AAAL/YAADFUAAAyPAAAM0oAADQMAAA03gAANj4AADcWAAA3/AAAOLgAADkUAAA50gAAOqwAADuqAAA87gAAPcgAAD64AAA/3AAAQRgAAEIIAABDEAAARHwAAEV8AABGAAAAR34AAEiiAABJiAAASmQAAEs+AABMFgAATTYAAE44AABPBgAAT8AAAFCOAABR7AAAUsQAAFN+AABU0gAAVewAAFd0AABYMgAAWNYAAFpCAABbwAAAXT4AAF62AABgIgAAYmgAAGPUAABltgAAZ1QAAGkaAABq4AAAbKQAAG3qAABvLgAAcHQAAHGgAABzLgAAdLoAAHZKAAB3wgAAeagAAHs+AAB80AAAfmIAAH/wAACB3AAAgtoAAIQ4AACFlAAAhvwAAIhKAACJxgAAivIAAIxqAACOCAAAj3wAAJDuAACSWgAAk5AAAJTGAACWAAAAl54AAJkGAACacAAAm9oAAJ0yAACeugAAoEAAAKGSAACi5gAApDoAAKWyAACnsgAAqTAAAKqMAACrzAAArIgAAK06AACtmAAArgwAAK5uAACvHAAAr8AAALBwAACxFgAAsbwAALJuAAC0tAAAtaIAALYiAAC2IgAAtiIB9AA/AAAAAACLAAAAiwAAAUUAGADdABcBdQAMAeUACgIqABQBMgAJATIAEQHuABQAxQAKAYcAEQDfABYB9AAVAdwAHQDnABsBgAARAUYAGQFcACUBYgAnAcoAFwFSABAA6gAiAbUACwD0ACEA3wAXATIACQGHABEBMgARAQ0AKgLAABEBIwAkA3kAHwJFABwBtAAjAbQAIwHDABcBowAgAMYAEwGWAAkBuwAjAS0AIQKaACUCNQAkAdwAHQGQACICSAAdAaAAJgDrAB0BfAANAXkAJgGUAAgCuwAOAhkAEgGkAAUBFwAPAOIABwD2AAEA+wABAd8AFAEcACICxgAVAeoAGAG0ABUA7AANAcYACQJHACIAxgAVAZcACgGNACcAugAkAnUAJQHRAB0BXQAZAekAJgHpABkB0QAhAOoAGgDoABEBLQAgAT4ACQJoAAgCBgAKAawACQEXABEBRQAYAU0ABAI8AAEA+v//ANIAEAENAC0CwAARAsAAEALAABECwAARAsAAEQLAABADWgAJA5AAIQG0AAABvQAjAbQAIwDG/7gAxgATAMb/+AI1ACMB3AAdAdwAHQHcABwB3AAcAdwAHQHlAA0BeQAPAXkAJQF5ACQBeQAlARwAJQHfABAB3wAUAd8AEgHfABEB3wARAd8AEgMTABUCxgAVAbQAFgG0ABUBtAAVAMb/tgDGABQAxv/4AdEAHQFdAAIBXQAZAV0AFwFd/+4BXQAZAWIADQEt/+kBLQAgAS0AHgEtAB8DUAAZArIAEgEJAAoBCQAKAOIABwDiAAMA9gAFALsABQBoAA0A0QAPANIAFQGOAAYA4QAXAOEAFgDfABYCowAGAfQAFQB6AAwB9AAAAfQAAAACAAAAAAAA/5YAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAABAAIAAwAEAAUABwAIAAkACwAMAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQBBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AowCFAI4AjQDeAKIArQDJAMcArgBiAGMAkABkAMsAZQDIAM8AzADNAGYA0wDQANEArwBnAJEA1gDUANUAaACJAGoAaQBrAG0AbABuAKAAbwBxAHAAcgB1AHQAdgB4AHoAeQB7AH0AfAChAH8AfgCAAIEAsACxAOYA5wDYAOEA2gDbANwA3QDgANkAtAC1AIcAxgC8AMMAAACsAAAAAAADAAAAAAAABegAAQAAAAAAHAADAAEAAAXoAAYFzAAAAAAC4QABAAAAAAAAAAAAAAAAAAAAAQADAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAwAEAAUAAAAGAAcACAAAAAkACgAAAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfAAAAIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5AAAAAAAAADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVwAAAFgAAAAAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABaAAAAAAAAAFsAAAAAAAAAAAAAAAAAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAAABoAGkAagAAAAAAawBsAG0AbgBvAHAAAABxAHIAcwB0AHUAAAAAAHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAAAAggCDAIQAAAAAAIUAhgCHAIgAiQCKAAAAiwCMAI0AjgCPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAJMAAAAAAAAAAAAAAAAAAAAAAAAAlACVAJYAlwCYAJkAmgCbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnACdAAAAAAAAAAAAngAAAJ8AAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjAKIABAJYAAAAQABAAAUAAAAiACYAKQA/AFoAegChAKMAqACvALQAuADKAM4A1gDcAOoA7gD2APwBUwF+AscCyQLcIBAgHSAiIDAgRCIZ//8AAAAgACQAKAArAEEAXgCgAKMAqACvALQAtwC/AMwA0QDYAN8A7ADxAPgBUgF9AsYCyQLYIBAgHCAiIDAgRCIZ//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAEAARABIAEoAcgCkANwA3gDeAN4A3gDeAOAA9gD6AQQBDAEiASYBMAE4AToBPAE+AT4BRgFGAUgBSAFIAUj//wADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgCjAFcAWABZAJYAWgChAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWAJcAmACZAJoAmwANAJwAnQCeAJ8AoAChAAAAAAAQAAAAqAkIBQABAQMCAwQFAwMEAgQCBQQCAwMDAwQDAgQCAgMEAwIGAwgFBAQEBAIEBAMGBQQEBQQCAwMEBgUEAwICAgQDBgQEAgQFAgQEAgYEAwQEBAICAwMGBQQDAwMFAgICBgYGBgYGCAgEBAQCAgIFBAQEBAQEAwMDAwMEBAQEBAQHBgQEBAICAgQDAwMDAwMDAwMDCAYCAgICAgIBAgIEAgICBgUBBQUAAAoJBQABAQMCBAUGAwMFAgQCBQUCBAMDBAUDAgQCAgMEAwMHAwkGBAQFBAIEBAMHBgUEBgQCBAQEBwUEAwICAwUDBwUEAgUGAgQEAgYFAwUFBQICAwMGBQQDAwMGAwIDBwcHBwcHCQkEBAQCAgIGBQUFBQUFBAQEBAMFBQUFBQUIBwQEBAICAgUDAwMDAwQDAwMDCAcDAwICAgIBAgIEAgICBwUBBQUAAAsKBgACAgQCBAUGAwMFAgQCBgUDBAQEBAUEAwUDAgMEAwMIAwoGBQUFBQIEBQMHBgUEBgUDBAQECAYFAwIDAwUDCAUFAwUGAgQEAgcFBAUFBQMDAwMHBgUDBAQGAwIDCAgICAgICQoFBQUCAgIGBQUFBQUFBAQEBAMFBQUFBQUJCAUFBQICAgUEBAQEBAQDAwMDCQgDAwICAwIBAgIEAgICBwYBBgYAAAwLBgACAgQDBAYHBAQGAgUDBgYDBQQEBAUEAwUDAwQFBAMIAwsHBQUFBQIFBQQIBwYFBwUDBQUFCAYFAwMDAwYDCQYFAwUHAgUFAggGBAYGBgMDBAQHBgUDBAQHAwMDCAgICAgICgsFBQUCAgIHBgYGBgYGBQUFBQMGBgYGBgYJCQUFBQICAgYEBAQEBAQEBAQECggDAwMDAwIBAwMFAwMDCAYBBgYAAA0MBwACAgQDBQYHBAQGAwUDBwYDBQQFBQYEAwYDAwQFBAMJBAwIBgYGBQMFBgQJBwYFCAUDBQUFCQcFBAMDAwYECQYGAwYIAwUFAggGBQYGBgMDBAQIBwYEBAQHAwMDCQkJCQkJCwwGBgYDAwMHBgYGBgYGBQUFBQQGBgYGBgYKCQYGBgMDAwYFBQUFBQUEBAQECwkDAwMDAwIBAwMFAwMDCQcCBwcAAA4NBwACAgUDBQcIBAQHAwUDBwcDBQUFBQYFAwYDAwQFBAQKBAwIBgYGBgMGBgQJCAcGCAYDBQUGCggGBAMDBAcECgcGAwYIAwYGAwkHBQcHBwMDBAQJBwYEBQUIBAMECgoKCgoKDA0GBgYDAwMIBwcHBwcHBQUFBQQHBwcHBwcLCgYGBgMDAwcFBQUFBQUEBAQEDAoEBAMDAwMBAwMGAwMDCQcCBwcAAA8OCAACAgUDBgcIBQUHAwYDCAcDBgUFBQcFBAcEAwUGBQQLBA0JBwcHBgMGBwUKCAcGCQYEBgYGCggGBAMEBAcECwcHBAcJAwYGAwkHBQcHBwQDBQUJCAYEBQUJBAMECwsLCwsLDQ4HBwcDAwMIBwcHBwcHBgYGBgQHBwcHBwcMCwcHBwMDAwcFBQUFBQUFBQUFDQoEBAMDBAMCAwMGAwMDCggCCAgAABAPCAACAgUEBggJBQUIAwYECAgEBgUGBgcFBAcEBAUGBQQLBQ4JBwcHBwMGBwULCQgGCQcEBgYGCwkHBAQEBAgFCwgHBAcJAwcGAwoHBggIBwQEBQUKCAcEBQUJBAMECwsLCwsLDg8HBwcDAwMJCAgICAgIBgYGBgUICAgICAgNCwcHBwMDAwcGBgYGBgYFBQUFDgsEBAQEBAMCAwMGBAQECwgCCAgAABEQCQACAgYEBggJBQUIAwcECQgEBwYGBggGBAcEBAUHBQUMBQ8KBwcIBwMHCAULCggHCgcEBgYHDAkHBQQEBAgFDAgHBAgKAwcHAwsIBggICAQEBQUKCQcFBgYKBAQFDAwMDAwMDxAHCAcDAwMKCAgICAgIBgYGBgUICAgICAgNDAcHBwMDAwgGBgYGBgYFBQUFDgwFBQQEBAMCBAQHBAQECwkCCQkAABIQCQADAwYEBwkKBgYJBAcECQkEBwYGBggGBAgEBAYHBgUNBRAKCAgICAQHCAUMCgkHCwcEBwcHDQoIBQQEBQkFDQkIBAgKBAcHAwsIBgkJCAQEBQYLCQgFBgYKBQQFDQ0NDQ0NDxAICAgEBAQKCQkJCQkJBwcHBwUJCQkJCQkODQgICAQEBAgGBgYGBgYFBQUFDwwFBQQEBAMCBAQHBAQEDAkCCQkAABMRCgADAwYEBwkLBgYJBAcECgkEBwYHBwkGBAgFBAYHBgUNBhELCAgJCAQICAYNCwkICwgEBwcIDQoIBQQFBQkFDQkIBAkLBAgIBAwJBwkJCQQEBgYMCggFBgYLBQQFDQ0NDQ0NEBEICAgEBAQLCQkJCQkJBwcHBwUJCQkJCQkPDQgICAQEBAkHBwcHBwcGBgYGEA0FBQQEBQQCBAQIBAQEDQoCCgoAABQSCgADAwcEBwoLBgYKBAgECgoFCAcHBwkHBQkFBAYIBgUOBhIMCQkJCAQICQYNCwoIDAgFCAgIDgsIBgUFBQoGDgoJBQkMBAgIBA0JBwoKCQUFBgYMCgkGBwcLBQQFDg4ODg4OERIJCQkEBAQLCgoKCgoKCAgICAYKCgoKCgoQDgkJCQQEBAkHBwcHBwcGBgYGEQ4FBQUFBQQCBAQIBQUEDgoCCgoAABUTCwADAwcFCAoMBgYKBAgFCwoFCAcHBwoHBQkFBQYIBgYPBhMMCQkJCQQJCQYODAoIDAkFCAgIDwsJBgUFBQoGDwoJBQoMBAkIBA0KBwoKCgUFBgcNCwkGBwcMBQQGDw8PDw8PEhMJCQkEBAQMCgoKCgoKCAgICAYKCgoKCgoRDwkJCQQEBAoHBwcHBwcGBgYGEg4GBgUFBQQCBAQIBQUFDgsDCwsAABYUCwADAwcFCAsMBwcLBAkFCwoFCAcICAoHBQoFBQcJBwYPBhQNCgoKCQQJCgcPDAoJDQkFCAgJDwwJBgUFBgsGEAsKBQoNBAkJBA4KCAsLCgUFBwcOCwkGBwcNBgUGDw8PDw8PExQKCgoEBAQMCgoKCgoLCAgICAYLCwsLCwsREAoKCgQEBAoICAgICAgHBwcHEw8GBgUFBQQCBQUJBQUFDwsDCwsAABcVDAADAwcFCQsNBwcLBQkFDAsFCQcICAsIBQoGBQcJBwYQBxQNCgoKCgUJCgcPDQsJDQoFCQkJEAwKBgUGBgsHEAsKBQoNBQkJBA4LCAsLCwUFBwcODAoGBwgNBgUGEBAQEBAQFBUKCgoFBQUNCwsLCwsLCQkJCQcLCwsLCwsSEAoKCgUFBQsICAgICAgHBwcHFBAGBgUFBgQCBQUJBQUFEAwDDAwAABgWDAADAwgFCQwNBwcMBQkFDAsGCQgICAsIBgoGBQcJBwYRBxUOCgoLCgUKCwcQDgsKDgoGCQkKEQ0KBwUGBgsHEQwKBgsOBQoKBA8LCAwMCwYGBwgPDAoHCAgOBgUGERERERERFRYKCwoFBQUOCwsLCwsMCQkJCQcLCwsLCwsTEQoKCgUFBQsICAgICAgHBwcHFBEGBgUFBgQCBQUKBQUFEAwDDAwAAAABAV0BkAAFAAICvAKKAAAAjwK8AooAAAHFADIBAwAAAAAEAAAAAAAAAAAAAAMAAAAAAAAAAAAAAABNQUNSAEAAICIZAyH/OQAAAyEAxwAAAAEAAAAAAAAAAQAAgAAAAACLAT8AAGAAAbQCdVlva2ttb2trICAgICAgICD/////N////llPS1IwMAAAAAAAAAABAAAAAQAAmJpL9V8PPPUAAAPoAAAAALfnFZIAAAAAt+cVkv+2/zkDawMhAAAAAwACAAEAAAAAAAEAAAMh/zkAAAOQ/7b/uANrAAEAAAAAAAAAAAAAAAAAAACkAAEAAACkAJgADQAAAAAAAgAIAEAACgAAAF0AvgABAAE=");
			background-color: lightblue;
			background-color: linen;
			background-color: burlywood;
			background-color: antiquewhite;
			background-color: yellow;
			background-color: lightyellow;
			background-color: blue;
			background-color: lightblue;
			background-color: black;
			background-color: white;
			background-color: wheat;
			background-color: #FFFDDA
//			background-color: darkslategrey;
//			background-color: darkgreyslate;
//			color: white;
			color: black;
			font-size:62.5%; 
			font-family: "New Times Roman";
			font-family: "serif";
			font-family: "sans-serif";
			font-family: "courier";
			font-family: "monospace";
			font-family: cursive;
			font-family: fantasy;
			font-family: "arial";
			font-family: "monserrat";
			font-family: yokkmokkOT;
			font-size: 38pt;
			}

//		h1 { font-size: 2.4em; } /* =24px */
		h1 { font-size: 24pt; } /* =24px */
		h2 { font-size: 14pt; } /* =14px */
		h3 { font-size: 10pt; } /* =10px */
		p  { font-size: 10pt; } /* =14px */
		li { font-size: 20pt; } /* =14px? */
		</style>

	<style id="style_buttons" >
//		body { text-align: center; background-color: "darkSlategrey"; color:"ivory"; }
                button {
//			visibility: hidden;
//			background: rgba(7, 99, 53, .1);
			background: transparent;
//	                border: 3px solid rgba(7, 99, 53, 1);
//	                border: 3px solid wheat;
//	                border: 3px solid #FFFDDA;
	                border: 3px solid darkSlategrey;
			border-radius: 5px;
//			color: rgba(7, 99, 53, 1);
//			color: ivory;
			color: darkSlategrey;
			color: black;
			cursor: pointer;
			line-height: 40px;
			font-size: 20px;
			outline: none;
			padding: 0 20px;
			transition: all .3s;
                	}
	        button:hover {
//	              background: rgba(7, 99, 53, 1);
			background: darkSlategrey;
			background: wheat;
			background: #FFFDDA;
//			background: yellow;
//			background: white;
//			color: rgba(255,255,255,1);
//			color: ivory				
			color: black;

  	              }
		p {font-size: 20px; font-weight: bold;
		</style>

	<style id="style_input" >
//		body { text-align: center; background-color: "darkSlategrey"; color:"ivory"; }
                input {
//			visibility: hidden;
//			background: rgba(7, 99, 53, .1);
			background: transparent;
//	                border: 3px solid rgba(7, 99, 53, 1);
	                border: 3px solid darkSlategrey;
			border-radius: 5px;
//			color: rgba(7, 99, 53, 1);
//			color: ivory;
//			color: darkSlategrey;
			color: black;
			cursor: pointer;
			line-height: 40px;
			font-size: 10px;
			outline: none;
			padding: 0 20px;
			transition: all .3s;
                	}
	        button:hover {
//	              background: rgba(7, 99, 53, 1);
  	              background: darkslategray;
//  	              background: yellow;
//  	              background: white;
//  	              color: rgba(255,255,255,1);
//  	              color: white;
//  	              color: ivory;
  	              color: darkslategray;
  	              }
		p {font-size: 10px; font-weight: bold;
		</style>




	<script id="script_allowdrop" >
		function allowDrop(ev) {ev.preventDefault();}
		function drag(ev) {ev.dataTransfer.setData("text", ev.target.id);}
		function drop(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		</script>

	<style id="style_input_file">
		.fileContainer {
		    overflow: hidden;
		    position: relative;
			}
		
		.fileContainer [type=file] {
		    cursor: inherit;
		    display: block;
		    font-size: 999px;
		    filter: alpha(opacity=0);
		    min-height: 100%;
		    min-width: 100%;
		    opacity: 0;
		    position: absolute;
		    right: 0;
		    text-align: right;
		    top: 0;
			}
		</style>
<!--
	<style id="style_input_text">
		input[type=text] {
//			background-color: #BFBDBD;
//			background-color: darkSlategrey;
			background-color: wheat;
			background-color: #FFFDDA;
//			color: #979797;
			border:solid 1px darkSlategrey;
//			color: ivory;
			color: black;
			height: 28px;
			padding-left:10px;
			width: 191px;
			box-shadow: 2px 2px 0 #828181 inset;
			}
		input[type=button] {
//			background-color: #1E1E1E;
//			color: #979797;
			background-color: darkSlategrey;
			background-color: wheat;
			background-color: #FFFDDA;
//			color: ivory;
			color: darkslategray;
			height: 24px;
			width: 103px;
			text-transform:uppercase;
			box-shadow:-1px 2px #6E6B6A inset;
			}
//		input[type=button], input[type=text]
//			{border-radius: 5px; font-family: Sansation;}
//			{border-radius: 5px; font-family: yokkmokkOT;}
		</style>
	-->






	<style id="style_ko_popover" >
		.ko_popover  {
			position: relative;
			float: left;
			padding: 5px;
			/*z-ka1: 0;*/
			}
		.ko_popover:hover {
//			background-color: darkslategrey;
			background-color: wheat;
			/*z-ka1: 50;*/
//			color: ivory;
			color: wheat;
			text-decoration: none;
			}

/*CSS for enlarged image*/
		.ko_popover span { 
			position: absolute; 
//			background-color: darkslategrey;
			background-color: wheat;
			padding: 5px;
			/*left: -1000px;*/
//			border: 1px solid darkslategrey;
			border: 1px solid wheat;
//			visibility: visible;
			visibility: hidden;
			color: black;
			text-decoration: none;
			}
/*CSS for enlarged image*/
		.ko_popover span img { 
			border-width: 0px; 
			/*padding: 2px;*/
			}
		
/*CSS for enlarged image on hover*/
		.ko_popover:hover span { 
			visibility: visible; 
//			width: 200px;
			top: 0px; /* use IF IE6 style to correct IE6 positions of larger image relative to thumb */
			left: 0px;/*position where enlarged image should offset horizontally */
			}
		</style>

	<style id="style_ko_thumbnail" >
		.ko_thumbnail  {
			position: relative;
			float: left;
			padding: 5px;
			/*z-ka1: 0;*/
			}
		.ko_thumbnail:hover {
//			background-color: #e9e9e2;
//			background-color: darkslategrey;
			background-color: wheat;
			/*z-ka1: 50;*/
//			color: #335500;
//			color: ivory;
//			color: darkslategray;
			color: wheat;
			text-decoration: none;
			}

/*CSS for enlarged image*/
		.Ko_thumbnail span { 
			position: absolute; 
//			background-color: #e5e5e5;
//			background-color: darkslategrey;
			background-color: wheat;
			padding: 5px;
			/*left: -1000px;*/
#			border: 1px solid #666;
			border: 1px solid wheat;
			visibility: hidden;
//			color: black;
//			color: ivory;
			color: wheat;
			text-decoration: none;
			}
/*CSS for enlarged image*/
		.ko_thumbnail span img { 
			background-color: wheat;
			color: wheat;
			border-width: 0px; 
			/*padding: 2px;*/
			}
		
/*CSS for enlarged image on hover*/
		.ko_thumbnail:hover span { 
			visibility: visible; 
			width: 200px;
			top: 5px; /* use IF IE6 style to correct IE6 positions of larger image relative to thumb */
			left: 300px;/*position where enlarged image should offset horizontally */
			}
		</style>








	<script id="script_allowdrop">
		function allowDrop(ev) {
			ev.preventDefault();
			}

		function drag(ev) {
			ev.dataTransfer.setData("text", ev.target.id);
			}

		function drop(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function drop1(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function drop2(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		</script>

	
	<script id="script_drop">
		function drop(e) {
			var e_id=e.getAttribute('id');
			var eid = e.attribute("id");
			alert( "BUGS_01 drop e_id="+e_id );
			alert( "BUGS_01 drop e.id="+e.id );
			var e_id=e.getAttribute("id");
			alert( "BUGS_00 drop e_id="+e_id );
			alert( "BUGS_00 drop e="+e );
			alert( "BUGS_01 drop e.attribute.id="+e.attribute.id );
			}
		</script>
	
	<script id="script_dropw1">
		function dropw1(e) {
			alert( "BUGS_110w dropw1 e="+e );
			alert( "BUGS_110w dropw1 e.id="+e.id );
			alert( "BUGS_111w dropw1 e.attribute.id="+e.attribute.id );
			}
		</script>
	<script id="script_dropb1">
		function dropb1(e) {
			alert( "BUGS_111b dropb1 e_id="+e_id );
			alert( "BUGS_111b dropb1 e.id="+e.id );
			alert( "BUGS_110b dropb1 e="+e );
			alert( "BUGS_21 dropb1 e.attribute.id="+e.attribute.id );
			}
		</script>

	<script id="script_allowdrop">
		function allowDrop(ev) { ev.preventDefault(); }
		function drag(ev) {ev.dataTransfer.setData("text", ev.target.id);}
		</script>

	<script id="script_drop">
		function drop(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function drop0(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function drop1(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function drop2(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}

		function dropw(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function dropb(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function dropw1(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function dropb1(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function dropw2(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		function dropb2(ev) {
			ev.preventDefault();
			var data = ev.dataTransfer.getData("text");
			ev.target.appendChild(document.getElementById(data));
			}
		</script>


		</style id=style_ko_end>


	<style id="style_mobile">
/* Style the navigation menu */
/* Hide the links inside the navigation menu (except for logo/home) */
/* Style navigation menu links */
/* Style the hamburger menu */
/* Add a grey background color on mouse-over */
/* Style the active link (or home/logo) */
		.topnav {
			overflow: hidden;
			background-color: #333;
			position: relative;
			}
		.topnav #myLinks {display: none;}
		.topnav a {
			color: white; 
			padding: 14px 16px;
			text-decoration: none;
			font-size: 17px;
			display: block;
			}
		.topnav a.icon {
			background: black;
			display: block;
			position: absolute;
			right: 0;
			top: 0;
			}
		.topnav a:hover {
			background-color: #ddd;
			color: black;
			}
		.active {
			background-color: #4CAF50;
			color: white;
			} 
		</style>

	<script id="script_mobile">
/* Toggle between showing and hiding the navigation menu links when the user clicks on the hamburger menu / bar icon */
		function myFunction() {
			var x = document.getElementById("myLinks");
			if (x.style.display === "block") {
				x.style.display = "none";
				} 
			else {
				x.style.display = "block";
				}
			} 
		</script>



	<script id="script_ko_mobile_links">
/* Toggle between showing and hiding the navigation menu links when the user clicks on the hamburger menu / bar icon */
		function myFunction() {
			var x = document.getElementById("myLinks");
			if (x.style.display === "block") {
				x.style.display = "none";
				} 
			else {
				x.style.display = "block";
  				}
			} 
		</script id=script_ko_mobile_links_end>



	<script id="fb_extras_jquery_min_17_js" src='data:/text/plain;base64,LyohIGpRdWVyeSB2MS43IGpxdWVyeS5jb20gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KKGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gY0EoYSl7cmV0dXJuIGYuaXNXaW5kb3coYSk/YTphLm5vZGVUeXBlPT09OT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1mdW5jdGlvbiBjeChhKXtpZighY21bYV0pe3ZhciBiPWMuYm9keSxkPWYoIjwiK2ErIj4iKS5hcHBlbmRUbyhiKSxlPWQuY3NzKCJkaXNwbGF5Iik7ZC5yZW1vdmUoKTtpZihlPT09Im5vbmUifHxlPT09IiIpe2NufHwoY249Yy5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxjbi5mcmFtZUJvcmRlcj1jbi53aWR0aD1jbi5oZWlnaHQ9MCksYi5hcHBlbmRDaGlsZChjbik7aWYoIWNvfHwhY24uY3JlYXRlRWxlbWVudCljbz0oY24uY29udGVudFdpbmRvd3x8Y24uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxjby53cml0ZSgoYy5jb21wYXRNb2RlPT09IkNTUzFDb21wYXQiPyI8IWRvY3R5cGUgaHRtbD4iOiIiKSsiPGh0bWw+PGJvZHk+IiksY28uY2xvc2UoKTtkPWNvLmNyZWF0ZUVsZW1lbnQoYSksY28uYm9keS5hcHBlbmRDaGlsZChkKSxlPWYuY3NzKGQsImRpc3BsYXkiKSxiLnJlbW92ZUNoaWxkKGNuKX1jbVthXT1lfXJldHVybiBjbVthXX1mdW5jdGlvbiBjdyhhLGIpe3ZhciBjPXt9O2YuZWFjaChjcy5jb25jYXQuYXBwbHkoW10sY3Muc2xpY2UoMCxiKSksZnVuY3Rpb24oKXtjW3RoaXNdPWF9KTtyZXR1cm4gY31mdW5jdGlvbiBjdigpe2N0PWJ9ZnVuY3Rpb24gY3UoKXtzZXRUaW1lb3V0KGN2LDApO3JldHVybiBjdD1mLm5vdygpfWZ1bmN0aW9uIGNsKCl7dHJ5e3JldHVybiBuZXcgYS5BY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpfWNhdGNoKGIpe319ZnVuY3Rpb24gY2soKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gY2UoYSxjKXthLmRhdGFGaWx0ZXImJihjPWEuZGF0YUZpbHRlcihjLGEuZGF0YVR5cGUpKTt2YXIgZD1hLmRhdGFUeXBlcyxlPXt9LGcsaCxpPWQubGVuZ3RoLGosaz1kWzBdLGwsbSxuLG8scDtmb3IoZz0xO2c8aTtnKyspe2lmKGc9PT0xKWZvcihoIGluIGEuY29udmVydGVycyl0eXBlb2YgaD09InN0cmluZyImJihlW2gudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2hdKTtsPWssaz1kW2ddO2lmKGs9PT0iKiIpaz1sO2Vsc2UgaWYobCE9PSIqIiYmbCE9PWspe209bCsiICIrayxuPWVbbV18fGVbIiogIitrXTtpZighbil7cD1iO2ZvcihvIGluIGUpe2o9by5zcGxpdCgiICIpO2lmKGpbMF09PT1sfHxqWzBdPT09IioiKXtwPWVbalsxXSsiICIra107aWYocCl7bz1lW29dLG89PT0hMD9uPXA6cD09PSEwJiYobj1vKTticmVha319fX0hbiYmIXAmJmYuZXJyb3IoIk5vIGNvbnZlcnNpb24gZnJvbSAiK20ucmVwbGFjZSgiICIsIiB0byAiKSksbiE9PSEwJiYoYz1uP24oYyk6cChvKGMpKSl9fXJldHVybiBjfWZ1bmN0aW9uIGNkKGEsYyxkKXt2YXIgZT1hLmNvbnRlbnRzLGY9YS5kYXRhVHlwZXMsZz1hLnJlc3BvbnNlRmllbGRzLGgsaSxqLGs7Zm9yKGkgaW4gZylpIGluIGQmJihjW2dbaV1dPWRbaV0pO3doaWxlKGZbMF09PT0iKiIpZi5zaGlmdCgpLGg9PT1iJiYoaD1hLm1pbWVUeXBlfHxjLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSk7aWYoaClmb3IoaSBpbiBlKWlmKGVbaV0mJmVbaV0udGVzdChoKSl7Zi51bnNoaWZ0KGkpO2JyZWFrfWlmKGZbMF1pbiBkKWo9ZlswXTtlbHNle2ZvcihpIGluIGQpe2lmKCFmWzBdfHxhLmNvbnZlcnRlcnNbaSsiICIrZlswXV0pe2o9aTticmVha31rfHwoaz1pKX1qPWp8fGt9aWYoail7aiE9PWZbMF0mJmYudW5zaGlmdChqKTtyZXR1cm4gZFtqXX19ZnVuY3Rpb24gY2MoYSxiLGMsZCl7aWYoZi5pc0FycmF5KGIpKWYuZWFjaChiLGZ1bmN0aW9uKGIsZSl7Y3x8YkcudGVzdChhKT9kKGEsZSk6Y2MoYSsiWyIrKHR5cGVvZiBlPT0ib2JqZWN0Inx8Zi5pc0FycmF5KGUpP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlmKCFjJiZiIT1udWxsJiZ0eXBlb2YgYj09Im9iamVjdCIpZm9yKHZhciBlIGluIGIpY2MoYSsiWyIrZSsiXSIsYltlXSxjLGQpO2Vsc2UgZChhLGIpfWZ1bmN0aW9uIGNiKGEsYyl7dmFyIGQsZSxnPWYuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoZCBpbiBjKWNbZF0hPT1iJiYoKGdbZF0/YTplfHwoZT17fSkpW2RdPWNbZF0pO2UmJmYuZXh0ZW5kKCEwLGEsZSl9ZnVuY3Rpb24gY2EoYSxjLGQsZSxmLGcpe2Y9Znx8Yy5kYXRhVHlwZXNbMF0sZz1nfHx7fSxnW2ZdPSEwO3ZhciBoPWFbZl0saT0wLGo9aD9oLmxlbmd0aDowLGs9YT09PWJWLGw7Zm9yKDtpPGomJihrfHwhbCk7aSsrKWw9aFtpXShjLGQsZSksdHlwZW9mIGw9PSJzdHJpbmciJiYoIWt8fGdbbF0/bD1iOihjLmRhdGFUeXBlcy51bnNoaWZ0KGwpLGw9Y2EoYSxjLGQsZSxsLGcpKSk7KGt8fCFsKSYmIWdbIioiXSYmKGw9Y2EoYSxjLGQsZSwiKiIsZykpO3JldHVybiBsfWZ1bmN0aW9uIGJfKGEpe3JldHVybiBmdW5jdGlvbihiLGMpe3R5cGVvZiBiIT0ic3RyaW5nIiYmKGM9YixiPSIqIik7aWYoZi5pc0Z1bmN0aW9uKGMpKXt2YXIgZD1iLnRvTG93ZXJDYXNlKCkuc3BsaXQoYlIpLGU9MCxnPWQubGVuZ3RoLGgsaSxqO2Zvcig7ZTxnO2UrKyloPWRbZV0saj0vXlwrLy50ZXN0KGgpLGomJihoPWguc3Vic3RyKDEpfHwiKiIpLGk9YVtoXT1hW2hdfHxbXSxpW2o/InVuc2hpZnQiOiJwdXNoIl0oYyl9fX1mdW5jdGlvbiBiRShhLGIsYyl7dmFyIGQ9Yj09PSJ3aWR0aCI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxlPWI9PT0id2lkdGgiP2J6OmJBO2lmKGQ+MCl7YyE9PSJib3JkZXIiJiZmLmVhY2goZSxmdW5jdGlvbigpe2N8fChkLT1wYXJzZUZsb2F0KGYuY3NzKGEsInBhZGRpbmciK3RoaXMpKXx8MCksYz09PSJtYXJnaW4iP2QrPXBhcnNlRmxvYXQoZi5jc3MoYSxjK3RoaXMpKXx8MDpkLT1wYXJzZUZsb2F0KGYuY3NzKGEsImJvcmRlciIrdGhpcysiV2lkdGgiKSl8fDB9KTtyZXR1cm4gZCsicHgifWQ9YkIoYSxiLGIpO2lmKGQ8MHx8ZD09bnVsbClkPWEuc3R5bGVbYl18fDA7ZD1wYXJzZUZsb2F0KGQpfHwwLGMmJmYuZWFjaChlLGZ1bmN0aW9uKCl7ZCs9cGFyc2VGbG9hdChmLmNzcyhhLCJwYWRkaW5nIit0aGlzKSl8fDAsYyE9PSJwYWRkaW5nIiYmKGQrPXBhcnNlRmxvYXQoZi5jc3MoYSwiYm9yZGVyIit0aGlzKyJXaWR0aCIpKXx8MCksYz09PSJtYXJnaW4iJiYoZCs9cGFyc2VGbG9hdChmLmNzcyhhLGMrdGhpcykpfHwwKX0pO3JldHVybiBkKyJweCJ9ZnVuY3Rpb24gYnIoYSxiKXtiLnNyYz9mLmFqYXgoe3VybDpiLnNyYyxhc3luYzohMSxkYXRhVHlwZToic2NyaXB0In0pOmYuZ2xvYmFsRXZhbCgoYi50ZXh0fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoYmksIi8qJDAqLyIpKSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX1mdW5jdGlvbiBicShhKXt2YXIgYj0oYS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk7Yj09PSJpbnB1dCI/YnAoYSk6YiE9PSJzY3JpcHQiJiZ0eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCImJmYuZ3JlcChhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLGJwKX1mdW5jdGlvbiBicChhKXtpZihhLnR5cGU9PT0iY2hlY2tib3gifHxhLnR5cGU9PT0icmFkaW8iKWEuZGVmYXVsdENoZWNrZWQ9YS5jaGVja2VkfWZ1bmN0aW9uIGJvKGEpe3JldHVybiB0eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOnR5cGVvZiBhLnF1ZXJ5U2VsZWN0b3JBbGwhPSJ1bmRlZmluZWQiP2EucXVlcnlTZWxlY3RvckFsbCgiKiIpOltdfWZ1bmN0aW9uIGJuKGEsYil7dmFyIGM7aWYoYi5ub2RlVHlwZT09PTEpe2IuY2xlYXJBdHRyaWJ1dGVzJiZiLmNsZWFyQXR0cmlidXRlcygpLGIubWVyZ2VBdHRyaWJ1dGVzJiZiLm1lcmdlQXR0cmlidXRlcyhhKSxjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihjPT09Im9iamVjdCIpYi5vdXRlckhUTUw9YS5vdXRlckhUTUw7ZWxzZSBpZihjIT09ImlucHV0Inx8YS50eXBlIT09ImNoZWNrYm94IiYmYS50eXBlIT09InJhZGlvIil7aWYoYz09PSJvcHRpb24iKWIuc2VsZWN0ZWQ9YS5kZWZhdWx0U2VsZWN0ZWQ7ZWxzZSBpZihjPT09ImlucHV0Inx8Yz09PSJ0ZXh0YXJlYSIpYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWV9ZWxzZSBhLmNoZWNrZWQmJihiLmRlZmF1bHRDaGVja2VkPWIuY2hlY2tlZD1hLmNoZWNrZWQpLGIudmFsdWUhPT1hLnZhbHVlJiYoYi52YWx1ZT1hLnZhbHVlKTtiLnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pfX1mdW5jdGlvbiBibShhLGIpe2lmKGIubm9kZVR5cGU9PT0xJiYhIWYuaGFzRGF0YShhKSl7dmFyIGMsZCxlLGc9Zi5fZGF0YShhKSxoPWYuX2RhdGEoYixnKSxpPWcuZXZlbnRzO2lmKGkpe2RlbGV0ZSBoLmhhbmRsZSxoLmV2ZW50cz17fTtmb3IoYyBpbiBpKWZvcihkPTAsZT1pW2NdLmxlbmd0aDtkPGU7ZCsrKWYuZXZlbnQuYWRkKGIsYysoaVtjXVtkXS5uYW1lc3BhY2U/Ii4iOiIiKStpW2NdW2RdLm5hbWVzcGFjZSxpW2NdW2RdLGlbY11bZF0uZGF0YSl9aC5kYXRhJiYoaC5kYXRhPWYuZXh0ZW5kKHt9LGguZGF0YSkpfX1mdW5jdGlvbiBibChhLGIpe3JldHVybiBmLm5vZGVOYW1lKGEsInRhYmxlIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiBYKGEpe3ZhciBiPVkuc3BsaXQoIiAiKSxjPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKGMuY3JlYXRlRWxlbWVudCl3aGlsZShiLmxlbmd0aCljLmNyZWF0ZUVsZW1lbnQoYi5wb3AoKSk7cmV0dXJuIGN9ZnVuY3Rpb24gVyhhLGIsYyl7Yj1ifHwwO2lmKGYuaXNGdW5jdGlvbihiKSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXt2YXIgZT0hIWIuY2FsbChhLGQsYSk7cmV0dXJuIGU9PT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gYT09PWI9PT1jfSk7aWYodHlwZW9mIGI9PSJzdHJpbmciKXt2YXIgZD1mLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlVHlwZT09PTF9KTtpZihSLnRlc3QoYikpcmV0dXJuIGYuZmlsdGVyKGIsZCwhYyk7Yj1mLmZpbHRlcihiLGQpfXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiBmLmluQXJyYXkoYSxiKT49MD09PWN9KX1mdW5jdGlvbiBWKGEpe3JldHVybiFhfHwhYS5wYXJlbnROb2RlfHxhLnBhcmVudE5vZGUubm9kZVR5cGU9PT0xMX1mdW5jdGlvbiBOKCl7cmV0dXJuITB9ZnVuY3Rpb24gTSgpe3JldHVybiExfWZ1bmN0aW9uIG4oYSxiLGMpe3ZhciBkPWIrImRlZmVyIixlPWIrInF1ZXVlIixnPWIrIm1hcmsiLGg9Zi5fZGF0YShhLGQpO2gmJihjPT09InF1ZXVlInx8IWYuX2RhdGEoYSxlKSkmJihjPT09Im1hcmsifHwhZi5fZGF0YShhLGcpKSYmc2V0VGltZW91dChmdW5jdGlvbigpeyFmLl9kYXRhKGEsZSkmJiFmLl9kYXRhKGEsZykmJihmLnJlbW92ZURhdGEoYSxkLCEwKSxoLmZpcmUoKSl9LDApfWZ1bmN0aW9uIG0oYSl7Zm9yKHZhciBiIGluIGEpe2lmKGI9PT0iZGF0YSImJmYuaXNFbXB0eU9iamVjdChhW2JdKSljb250aW51ZTtpZihiIT09InRvSlNPTiIpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gbChhLGMsZCl7aWYoZD09PWImJmEubm9kZVR5cGU9PT0xKXt2YXIgZT0iZGF0YS0iK2MucmVwbGFjZShrLCItJDEiKS50b0xvd2VyQ2FzZSgpO2Q9YS5nZXRBdHRyaWJ1dGUoZSk7aWYodHlwZW9mIGQ9PSJzdHJpbmciKXt0cnl7ZD1kPT09InRydWUiPyEwOmQ9PT0iZmFsc2UiPyExOmQ9PT0ibnVsbCI/bnVsbDpmLmlzTnVtZXJpYyhkKT9wYXJzZUZsb2F0KGQpOmoudGVzdChkKT9mLnBhcnNlSlNPTihkKTpkfWNhdGNoKGcpe31mLmRhdGEoYSxjLGQpfWVsc2UgZD1ifXJldHVybiBkfWZ1bmN0aW9uIGgoYSl7dmFyIGI9Z1thXT17fSxjLGQ7YT1hLnNwbGl0KC9ccysvKTtmb3IoYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyliW2FbY11dPSEwO3JldHVybiBifXZhciBjPWEuZG9jdW1lbnQsZD1hLm5hdmlnYXRvcixlPWEubG9jYXRpb24sZj1mdW5jdGlvbigpe2Z1bmN0aW9uIEsoKXtpZighZS5pc1JlYWR5KXt0cnl7Yy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChhKXtzZXRUaW1lb3V0KEssMSk7cmV0dXJufWUucmVhZHkoKX19dmFyIGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGUuZm4uaW5pdChhLGIsaCl9LGY9YS5qUXVlcnksZz1hLiQsaCxpPS9eKD86W14jPF0qKDxbXHdcV10rPilbXj5dKiR8IyhbXHdcLV0qKSQpLyxqPS9cUy8saz0vXlxzKy8sbD0vXHMrJC8sbT0vXGQvLG49L148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLyxvPS9eW1xdLDp7fVxzXSokLyxwPS9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2cscT0vIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2cscj0vKD86Xnw6fCwpKD86XHMqXFspKy9nLHM9Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8sdD0vKG9wZXJhKSg/Oi4qdmVyc2lvbik/WyBcL10oW1x3Ll0rKS8sdT0vKG1zaWUpIChbXHcuXSspLyx2PS8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKykpPy8sdz0vLShbYS16XXxbMC05XSkvaWcseD0vXi1tcy0vLHk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYisiIikudG9VcHBlckNhc2UoKX0sej1kLnVzZXJBZ2VudCxBLEIsQyxEPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEY9QXJyYXkucHJvdG90eXBlLnB1c2gsRz1BcnJheS5wcm90b3R5cGUuc2xpY2UsSD1TdHJpbmcucHJvdG90eXBlLnRyaW0sST1BcnJheS5wcm90b3R5cGUuaW5kZXhPZixKPXt9O2UuZm49ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmUsaW5pdDpmdW5jdGlvbihhLGQsZil7dmFyIGcsaCxqLGs7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYS5ub2RlVHlwZSl7dGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKGE9PT0iYm9keSImJiFkJiZjLmJvZHkpe3RoaXMuY29udGV4dD1jLHRoaXNbMF09Yy5ib2R5LHRoaXMuc2VsZWN0b3I9YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKHR5cGVvZiBhPT0ic3RyaW5nIil7YS5jaGFyQXQoMCkhPT0iPCJ8fGEuY2hhckF0KGEubGVuZ3RoLTEpIT09Ij4ifHxhLmxlbmd0aDwzP2c9aS5leGVjKGEpOmc9W251bGwsYSxudWxsXTtpZihnJiYoZ1sxXXx8IWQpKXtpZihnWzFdKXtkPWQgaW5zdGFuY2VvZiBlP2RbMF06ZCxrPWQ/ZC5vd25lckRvY3VtZW50fHxkOmMsaj1uLmV4ZWMoYSksaj9lLmlzUGxhaW5PYmplY3QoZCk/KGE9W2MuY3JlYXRlRWxlbWVudChqWzFdKV0sZS5mbi5hdHRyLmNhbGwoYSxkLCEwKSk6YT1bay5jcmVhdGVFbGVtZW50KGpbMV0pXTooaj1lLmJ1aWxkRnJhZ21lbnQoW2dbMV1dLFtrXSksYT0oai5jYWNoZWFibGU/ZS5jbG9uZShqLmZyYWdtZW50KTpqLmZyYWdtZW50KS5jaGlsZE5vZGVzKTtyZXR1cm4gZS5tZXJnZSh0aGlzLGEpfWg9Yy5nZXRFbGVtZW50QnlJZChnWzJdKTtpZihoJiZoLnBhcmVudE5vZGUpe2lmKGguaWQhPT1nWzJdKXJldHVybiBmLmZpbmQoYSk7dGhpcy5sZW5ndGg9MSx0aGlzWzBdPWh9dGhpcy5jb250ZXh0PWMsdGhpcy5zZWxlY3Rvcj1hO3JldHVybiB0aGlzfXJldHVybiFkfHxkLmpxdWVyeT8oZHx8ZikuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGQpLmZpbmQoYSl9aWYoZS5pc0Z1bmN0aW9uKGEpKXJldHVybiBmLnJlYWR5KGEpO2Euc2VsZWN0b3IhPT1iJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpO3JldHVybiBlLm1ha2VBcnJheShhLHRoaXMpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuNyIsbGVuZ3RoOjAsc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBHLmNhbGwodGhpcywwKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP3RoaXMudG9BcnJheSgpOmE8MD90aGlzW3RoaXMubGVuZ3RoK2FdOnRoaXNbYV19LHB1c2hTdGFjazpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5jb25zdHJ1Y3RvcigpO2UuaXNBcnJheShhKT9GLmFwcGx5KGQsYSk6ZS5tZXJnZShkLGEpLGQucHJldk9iamVjdD10aGlzLGQuY29udGV4dD10aGlzLmNvbnRleHQsYj09PSJmaW5kIj9kLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrKHRoaXMuc2VsZWN0b3I/IiAiOiIiKStjOmImJihkLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK2IrIigiK2MrIikiKTtyZXR1cm4gZH0sZWFjaDpmdW5jdGlvbihhLGIpe3JldHVybiBlLmVhY2godGhpcyxhLGIpfSxyZWFkeTpmdW5jdGlvbihhKXtlLmJpbmRSZWFkeSgpLEIuYWRkKGEpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbihhKXtyZXR1cm4gYT09PS0xP3RoaXMuc2xpY2UoYSk6dGhpcy5zbGljZShhLCthKzEpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhHLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwic2xpY2UiLEcuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOkYsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9LGUuZm4uaW5pdC5wcm90b3R5cGU9ZS5mbixlLmV4dGVuZD1lLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGMsZCxmLGcsaCxpPWFyZ3VtZW50c1swXXx8e30saj0xLGs9YXJndW1lbnRzLmxlbmd0aCxsPSExO3R5cGVvZiBpPT0iYm9vbGVhbiImJihsPWksaT1hcmd1bWVudHNbMV18fHt9LGo9MiksdHlwZW9mIGkhPSJvYmplY3QiJiYhZS5pc0Z1bmN0aW9uKGkpJiYoaT17fSksaz09PWomJihpPXRoaXMsLS1qKTtmb3IoO2o8aztqKyspaWYoKGE9YXJndW1lbnRzW2pdKSE9bnVsbClmb3IoYyBpbiBhKXtkPWlbY10sZj1hW2NdO2lmKGk9PT1mKWNvbnRpbnVlO2wmJmYmJihlLmlzUGxhaW5PYmplY3QoZil8fChnPWUuaXNBcnJheShmKSkpPyhnPyhnPSExLGg9ZCYmZS5pc0FycmF5KGQpP2Q6W10pOmg9ZCYmZS5pc1BsYWluT2JqZWN0KGQpP2Q6e30saVtjXT1lLmV4dGVuZChsLGgsZikpOmYhPT1iJiYoaVtjXT1mKX1yZXR1cm4gaX0sZS5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oYil7YS4kPT09ZSYmKGEuJD1nKSxiJiZhLmpRdWVyeT09PWUmJihhLmpRdWVyeT1mKTtyZXR1cm4gZX0saXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9lLnJlYWR5V2FpdCsrOmUucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITAmJiEtLWUucmVhZHlXYWl0fHxhIT09ITAmJiFlLmlzUmVhZHkpe2lmKCFjLmJvZHkpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtlLmlzUmVhZHk9ITA7aWYoYSE9PSEwJiYtLWUucmVhZHlXYWl0PjApcmV0dXJuO0IuZmlyZVdpdGgoYyxbZV0pLGUuZm4udHJpZ2dlciYmZShjKS50cmlnZ2VyKCJyZWFkeSIpLnVuYmluZCgicmVhZHkiKX19LGJpbmRSZWFkeTpmdW5jdGlvbigpe2lmKCFCKXtCPWUuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpO2lmKGMucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtpZihjLmFkZEV2ZW50TGlzdGVuZXIpYy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixDLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGUucmVhZHksITEpO2Vsc2UgaWYoYy5hdHRhY2hFdmVudCl7Yy5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixDKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLGUucmVhZHkpO3ZhciBiPSExO3RyeXtiPWEuZnJhbWVFbGVtZW50PT1udWxsfWNhdGNoKGQpe31jLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCYmYiYmSygpfX19LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJmdW5jdGlvbiJ9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJhcnJheSJ9LGlzV2luZG93OmZ1bmN0aW9uKGEpe3JldHVybiBhJiZ0eXBlb2YgYT09Im9iamVjdCImJiJzZXRJbnRlcnZhbCJpbiBhfSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPW51bGwmJm0udGVzdChhKSYmIWlzTmFOKGEpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP1N0cmluZyhhKTpKW0QuY2FsbChhKV18fCJvYmplY3QifSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe2lmKCFhfHxlLnR5cGUoYSkhPT0ib2JqZWN0Inx8YS5ub2RlVHlwZXx8ZS5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIUUuY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhRS5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9dmFyIGQ7Zm9yKGQgaW4gYSk7cmV0dXJuIGQ9PT1ifHxFLmNhbGwoYSxkKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0sZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgYX0scGFyc2VKU09OOmZ1bmN0aW9uKGIpe2lmKHR5cGVvZiBiIT0ic3RyaW5nInx8IWIpcmV0dXJuIG51bGw7Yj1lLnRyaW0oYik7aWYoYS5KU09OJiZhLkpTT04ucGFyc2UpcmV0dXJuIGEuSlNPTi5wYXJzZShiKTtpZihvLnRlc3QoYi5yZXBsYWNlKHAsIkAiKS5yZXBsYWNlKHEsIl0iKS5yZXBsYWNlKHIsIiIpKSlyZXR1cm4obmV3IEZ1bmN0aW9uKCJyZXR1cm4gIitiKSkoKTtlLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LHBhcnNlWE1MOmZ1bmN0aW9uKGMpe3ZhciBkLGY7dHJ5e2EuRE9NUGFyc2VyPyhmPW5ldyBET01QYXJzZXIsZD1mLnBhcnNlRnJvbVN0cmluZyhjLCJ0ZXh0L3htbCIpKTooZD1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpLGQuYXN5bmM9ImZhbHNlIixkLmxvYWRYTUwoYykpfWNhdGNoKGcpe2Q9Yn0oIWR8fCFkLmRvY3VtZW50RWxlbWVudHx8ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGgpJiZlLmVycm9yKCJJbnZhbGlkIFhNTDogIitjKTtyZXR1cm4gZH0sbm9vcDpmdW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZqLnRlc3QoYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoeCwibXMtIikucmVwbGFjZSh3LHkpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT1iLnRvVXBwZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxjLGQpe3ZhciBmLGc9MCxoPWEubGVuZ3RoLGk9aD09PWJ8fGUuaXNGdW5jdGlvbihhKTtpZihkKXtpZihpKXtmb3IoZiBpbiBhKWlmKGMuYXBwbHkoYVtmXSxkKT09PSExKWJyZWFrfWVsc2UgZm9yKDtnPGg7KWlmKGMuYXBwbHkoYVtnKytdLGQpPT09ITEpYnJlYWt9ZWxzZSBpZihpKXtmb3IoZiBpbiBhKWlmKGMuY2FsbChhW2ZdLGYsYVtmXSk9PT0hMSlicmVha31lbHNlIGZvcig7ZzxoOylpZihjLmNhbGwoYVtnXSxnLGFbZysrXSk9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpIP2Z1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOkguY2FsbChhKX06ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6KGErIiIpLnJlcGxhY2UoaywiIikucmVwbGFjZShsLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107aWYoYSE9bnVsbCl7dmFyIGQ9ZS50eXBlKGEpO2EubGVuZ3RoPT1udWxsfHxkPT09InN0cmluZyJ8fGQ9PT0iZnVuY3Rpb24ifHxkPT09InJlZ2V4cCJ8fGUuaXNXaW5kb3coYSk/Ri5jYWxsKGMsYSk6ZS5tZXJnZShjLGEpfXJldHVybiBjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihiKXtpZihJKXJldHVybiBJLmNhbGwoYixhLGMpO2Q9Yi5sZW5ndGgsYz1jP2M8MD9NYXRoLm1heCgwLGQrYyk6YzowO2Zvcig7YzxkO2MrKylpZihjIGluIGImJmJbY109PT1hKXJldHVybiBjfXJldHVybi0xfSxtZXJnZTpmdW5jdGlvbihhLGMpe3ZhciBkPWEubGVuZ3RoLGU9MDtpZih0eXBlb2YgYy5sZW5ndGg9PSJudW1iZXIiKWZvcih2YXIgZj1jLmxlbmd0aDtlPGY7ZSsrKWFbZCsrXT1jW2VdO2Vsc2Ugd2hpbGUoY1tlXSE9PWIpYVtkKytdPWNbZSsrXTthLmxlbmd0aD1kO3JldHVybiBhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlO2M9ISFjO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGg7ZjxnO2YrKyllPSEhYihhW2ZdLGYpLGMhPT1lJiZkLnB1c2goYVtmXSk7cmV0dXJuIGR9LG1hcDpmdW5jdGlvbihhLGMsZCl7dmFyIGYsZyxoPVtdLGk9MCxqPWEubGVuZ3RoLGs9YSBpbnN0YW5jZW9mIGV8fGohPT1iJiZ0eXBlb2Ygaj09Im51bWJlciImJihqPjAmJmFbMF0mJmFbai0xXXx8aj09PTB8fGUuaXNBcnJheShhKSk7aWYoaylmb3IoO2k8ajtpKyspZj1jKGFbaV0saSxkKSxmIT1udWxsJiYoaFtoLmxlbmd0aF09Zik7ZWxzZSBmb3IoZyBpbiBhKWY9YyhhW2ddLGcsZCksZiE9bnVsbCYmKGhbaC5sZW5ndGhdPWYpO3JldHVybiBoLmNvbmNhdC5hcHBseShbXSxoKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYyl7aWYodHlwZW9mIGM9PSJzdHJpbmciKXt2YXIgZD1hW2NdO2M9YSxhPWR9aWYoIWUuaXNGdW5jdGlvbihhKSlyZXR1cm4gYjt2YXIgZj1HLmNhbGwoYXJndW1lbnRzLDIpLGc9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShjLGYuY29uY2F0KEcuY2FsbChhcmd1bWVudHMpKSl9O2cuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxnLmd1aWR8fGUuZ3VpZCsrO3JldHVybiBnfSxhY2Nlc3M6ZnVuY3Rpb24oYSxjLGQsZixnLGgpe3ZhciBpPWEubGVuZ3RoO2lmKHR5cGVvZiBjPT0ib2JqZWN0Iil7Zm9yKHZhciBqIGluIGMpZS5hY2Nlc3MoYSxqLGNbal0sZixnLGQpO3JldHVybiBhfWlmKGQhPT1iKXtmPSFoJiZmJiZlLmlzRnVuY3Rpb24oZCk7Zm9yKHZhciBrPTA7azxpO2srKylnKGFba10sYyxmP2QuY2FsbChhW2tdLGssZyhhW2tdLGMpKTpkLGgpO3JldHVybiBhfXJldHVybiBpP2coYVswXSxjKTpifSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0sdWFNYXRjaDpmdW5jdGlvbihhKXthPWEudG9Mb3dlckNhc2UoKTt2YXIgYj1zLmV4ZWMoYSl8fHQuZXhlYyhhKXx8dS5leGVjKGEpfHxhLmluZGV4T2YoImNvbXBhdGlibGUiKTwwJiZ2LmV4ZWMoYSl8fFtdO3JldHVybnticm93c2VyOmJbMV18fCIiLHZlcnNpb246YlsyXXx8IjAifX0sc3ViOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMpe3JldHVybiBuZXcgYS5mbi5pbml0KGIsYyl9ZS5leHRlbmQoITAsYSx0aGlzKSxhLnN1cGVyY2xhc3M9dGhpcyxhLmZuPWEucHJvdG90eXBlPXRoaXMoKSxhLmZuLmNvbnN0cnVjdG9yPWEsYS5zdWI9dGhpcy5zdWIsYS5mbi5pbml0PWZ1bmN0aW9uKGQsZil7ZiYmZiBpbnN0YW5jZW9mIGUmJiEoZiBpbnN0YW5jZW9mIGEpJiYoZj1hKGYpKTtyZXR1cm4gZS5mbi5pbml0LmNhbGwodGhpcyxkLGYsYil9LGEuZm4uaW5pdC5wcm90b3R5cGU9YS5mbjt2YXIgYj1hKGMpO3JldHVybiBhfSxicm93c2VyOnt9fSksZS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7SlsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KSxBPWUudWFNYXRjaCh6KSxBLmJyb3dzZXImJihlLmJyb3dzZXJbQS5icm93c2VyXT0hMCxlLmJyb3dzZXIudmVyc2lvbj1BLnZlcnNpb24pLGUuYnJvd3Nlci53ZWJraXQmJihlLmJyb3dzZXIuc2FmYXJpPSEwKSxqLnRlc3QoIsKgIikmJihrPS9eW1xzXHhBMF0rLyxsPS9bXHNceEEwXSskLyksaD1lKGMpLGMuYWRkRXZlbnRMaXN0ZW5lcj9DPWZ1bmN0aW9uKCl7Yy5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixDLCExKSxlLnJlYWR5KCl9OmMuYXR0YWNoRXZlbnQmJihDPWZ1bmN0aW9uKCl7Yy5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIiYmKGMuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsQyksZS5yZWFkeSgpKX0pLHR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQmJmRlZmluZS5hbWQualF1ZXJ5JiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gZX0pO3JldHVybiBlfSgpLGc9e307Zi5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT1hP2dbYV18fGgoYSk6e307dmFyIGM9W10sZD1bXSxlLGksaixrLGwsbT1mdW5jdGlvbihiKXt2YXIgZCxlLGcsaCxpO2ZvcihkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWc9YltkXSxoPWYudHlwZShnKSxoPT09ImFycmF5Ij9tKGcpOmg9PT0iZnVuY3Rpb24iJiYoIWEudW5pcXVlfHwhby5oYXMoZykpJiZjLnB1c2goZyl9LG49ZnVuY3Rpb24oYixmKXtmPWZ8fFtdLGU9IWEubWVtb3J5fHxbYixmXSxpPSEwLGw9anx8MCxqPTAsaz1jLmxlbmd0aDtmb3IoO2MmJmw8aztsKyspaWYoY1tsXS5hcHBseShiLGYpPT09ITEmJmEuc3RvcE9uRmFsc2Upe2U9ITA7YnJlYWt9aT0hMSxjJiYoYS5vbmNlP2U9PT0hMD9vLmRpc2FibGUoKTpjPVtdOmQmJmQubGVuZ3RoJiYoZT1kLnNoaWZ0KCksby5maXJlV2l0aChlWzBdLGVbMV0pKSl9LG89e2FkZDpmdW5jdGlvbigpe2lmKGMpe3ZhciBhPWMubGVuZ3RoO20oYXJndW1lbnRzKSxpP2s9Yy5sZW5ndGg6ZSYmZSE9PSEwJiYoaj1hLG4oZVswXSxlWzFdKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe2lmKGMpe3ZhciBiPWFyZ3VtZW50cyxkPTAsZT1iLmxlbmd0aDtmb3IoO2Q8ZTtkKyspZm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspaWYoYltkXT09PWNbZl0pe2kmJmY8PWsmJihrLS0sZjw9bCYmbC0tKSxjLnNwbGljZShmLS0sMSk7aWYoYS51bmlxdWUpYnJlYWt9fXJldHVybiB0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7aWYoYyl7dmFyIGI9MCxkPWMubGVuZ3RoO2Zvcig7YjxkO2IrKylpZihhPT09Y1tiXSlyZXR1cm4hMH1yZXR1cm4hMX0sZW1wdHk6ZnVuY3Rpb24oKXtjPVtdO3JldHVybiB0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7Yz1kPWU9YjtyZXR1cm4gdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hY30sbG9jazpmdW5jdGlvbigpe2Q9YiwoIWV8fGU9PT0hMCkmJm8uZGlzYWJsZSgpO3JldHVybiB0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hZH0sZmlyZVdpdGg6ZnVuY3Rpb24oYixjKXtkJiYoaT9hLm9uY2V8fGQucHVzaChbYixjXSk6KCFhLm9uY2V8fCFlKSYmbihiLGMpKTtyZXR1cm4gdGhpc30sZmlyZTpmdW5jdGlvbigpe28uZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZX19O3JldHVybiBvfTt2YXIgaT1bXS5zbGljZTtmLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksYz1mLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxkPWYuQ2FsbGJhY2tzKCJtZW1vcnkiKSxlPSJwZW5kaW5nIixnPXtyZXNvbHZlOmIscmVqZWN0OmMsbm90aWZ5OmR9LGg9e2RvbmU6Yi5hZGQsZmFpbDpjLmFkZCxwcm9ncmVzczpkLmFkZCxzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBlfSxpc1Jlc29sdmVkOmIuZmlyZWQsaXNSZWplY3RlZDpjLmZpcmVkLHRoZW46ZnVuY3Rpb24oYSxiLGMpe2kuZG9uZShhKS5mYWlsKGIpLnByb2dyZXNzKGMpO3JldHVybiB0aGlzfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gaS5kb25lLmFwcGx5KGksYXJndW1lbnRzKS5mYWlsLmFwcGx5KGksYXJndW1lbnRzKX0scGlwZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuRGVmZXJyZWQoZnVuY3Rpb24oZCl7Zi5lYWNoKHtkb25lOlthLCJyZXNvbHZlIl0sZmFpbDpbYiwicmVqZWN0Il0scHJvZ3Jlc3M6W2MsIm5vdGlmeSJdfSxmdW5jdGlvbihhLGIpe3ZhciBjPWJbMF0sZT1iWzFdLGc7Zi5pc0Z1bmN0aW9uKGMpP2lbYV0oZnVuY3Rpb24oKXtnPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpLGcmJmYuaXNGdW5jdGlvbihnLnByb21pc2UpP2cucHJvbWlzZSgpLnRoZW4oZC5yZXNvbHZlLGQucmVqZWN0LGQubm90aWZ5KTpkW2UrIldpdGgiXSh0aGlzPT09aT9kOnRoaXMsW2ddKX0pOmlbYV0oZFtlXSl9KX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtpZihhPT1udWxsKWE9aDtlbHNlIGZvcih2YXIgYiBpbiBoKWFbYl09aFtiXTtyZXR1cm4gYX19LGk9aC5wcm9taXNlKHt9KSxqO2ZvcihqIGluIGcpaVtqXT1nW2pdLmZpcmUsaVtqKyJXaXRoIl09Z1tqXS5maXJlV2l0aDtpLmRvbmUoZnVuY3Rpb24oKXtlPSJyZXNvbHZlZCJ9LGMuZGlzYWJsZSxkLmxvY2spLmZhaWwoZnVuY3Rpb24oKXtlPSJyZWplY3RlZCJ9LGIuZGlzYWJsZSxkLmxvY2spLGEmJmEuY2FsbChpLGkpO3JldHVybiBpfSx3aGVuOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIG0oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe2VbYV09YXJndW1lbnRzLmxlbmd0aD4xP2kuY2FsbChhcmd1bWVudHMsMCk6YixqLm5vdGlmeVdpdGgoayxlKX19ZnVuY3Rpb24gbChhKXtyZXR1cm4gZnVuY3Rpb24oYyl7YlthXT1hcmd1bWVudHMubGVuZ3RoPjE/aS5jYWxsKGFyZ3VtZW50cywwKTpjLC0tZ3x8ai5yZXNvbHZlV2l0aChqLGIpfX12YXIgYj1pLmNhbGwoYXJndW1lbnRzLDApLGM9MCxkPWIubGVuZ3RoLGU9QXJyYXkoZCksZz1kLGg9ZCxqPWQ8PTEmJmEmJmYuaXNGdW5jdGlvbihhLnByb21pc2UpP2E6Zi5EZWZlcnJlZCgpLGs9ai5wcm9taXNlKCk7aWYoZD4xKXtmb3IoO2M8ZDtjKyspYltjXSYmYltjXS5wcm9taXNlJiZmLmlzRnVuY3Rpb24oYltjXS5wcm9taXNlKT9iW2NdLnByb21pc2UoKS50aGVuKGwoYyksai5yZWplY3QsbShjKSk6LS1nO2d8fGoucmVzb2x2ZVdpdGgoaixiKX1lbHNlIGohPT1hJiZqLnJlc29sdmVXaXRoKGosZD9bYV06W10pO3JldHVybiBrfX0pLGYuc3VwcG9ydD1mdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksYj1jLmRvY3VtZW50RWxlbWVudCxkLGUsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU7YS5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxhLmlubmVySFRNTD0iICAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJyBzdHlsZT0ndG9wOjFweDtmbG9hdDpsZWZ0O29wYWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz48bmF2PjwvbmF2PiIsZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIiksZT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF07aWYoIWR8fCFkLmxlbmd0aHx8IWUpcmV0dXJue307Zz1jLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGg9Zy5hcHBlbmRDaGlsZChjLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKSxpPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0saz17bGVhZGluZ1doaXRlc3BhY2U6YS5maXJzdENoaWxkLm5vZGVUeXBlPT09Myx0Ym9keTohYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsaHRtbFNlcmlhbGl6ZTohIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGgsc3R5bGU6L3RvcC8udGVzdChlLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksaHJlZk5vcm1hbGl6ZWQ6ZS5nZXRBdHRyaWJ1dGUoImhyZWYiKT09PSIvYSIsb3BhY2l0eTovXjAuNTUvLnRlc3QoZS5zdHlsZS5vcGFjaXR5KSxjc3NGbG9hdDohIWUuc3R5bGUuY3NzRmxvYXQsdW5rbm93bkVsZW1zOiEhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibmF2IikubGVuZ3RoLGNoZWNrT246aS52YWx1ZT09PSJvbiIsb3B0U2VsZWN0ZWQ6aC5zZWxlY3RlZCxnZXRTZXRBdHRyaWJ1dGU6YS5jbGFzc05hbWUhPT0idCIsZW5jdHlwZTohIWMuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsc3VibWl0QnViYmxlczohMCxjaGFuZ2VCdWJibGVzOiEwLGZvY3VzaW5CdWJibGVzOiExLGRlbGV0ZUV4cGFuZG86ITAsbm9DbG9uZUV2ZW50OiEwLGlubGluZUJsb2NrTmVlZHNMYXlvdXQ6ITEsc2hyaW5rV3JhcEJsb2NrczohMSxyZWxpYWJsZU1hcmdpblJpZ2h0OiEwfSxpLmNoZWNrZWQ9ITAsay5ub0Nsb25lQ2hlY2tlZD1pLmNsb25lTm9kZSghMCkuY2hlY2tlZCxnLmRpc2FibGVkPSEwLGsub3B0RGlzYWJsZWQ9IWguZGlzYWJsZWQ7dHJ5e2RlbGV0ZSBhLnRlc3R9Y2F0Y2godil7ay5kZWxldGVFeHBhbmRvPSExfSFhLmFkZEV2ZW50TGlzdGVuZXImJmEuYXR0YWNoRXZlbnQmJmEuZmlyZUV2ZW50JiYoYS5hdHRhY2hFdmVudCgib25jbGljayIsZnVuY3Rpb24oKXtrLm5vQ2xvbmVFdmVudD0hMX0pLGEuY2xvbmVOb2RlKCEwKS5maXJlRXZlbnQoIm9uY2xpY2siKSksaT1jLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksaS52YWx1ZT0idCIsaS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGsucmFkaW9WYWx1ZT1pLnZhbHVlPT09InQiLGkuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpLGEuYXBwZW5kQ2hpbGQoaSksbD1jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxsLmFwcGVuZENoaWxkKGEubGFzdENoaWxkKSxrLmNoZWNrQ2xvbmU9bC5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsYS5pbm5lckhUTUw9IiIsYS5zdHlsZS53aWR0aD1hLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiLG09Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLG89Yy5jcmVhdGVFbGVtZW50KG0/ImRpdiI6ImJvZHkiKSxwPXt2aXNpYmlsaXR5OiJoaWRkZW4iLHdpZHRoOjAsaGVpZ2h0OjAsYm9yZGVyOjAsbWFyZ2luOjAsYmFja2dyb3VuZDoibm9uZSJ9LG0mJmYuZXh0ZW5kKHAse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiLTk5OXB4Iix0b3A6Ii05OTlweCJ9KTtmb3IodCBpbiBwKW8uc3R5bGVbdF09cFt0XTtvLmFwcGVuZENoaWxkKGEpLG49bXx8YixuLmluc2VydEJlZm9yZShvLG4uZmlyc3RDaGlsZCksay5hcHBlbmRDaGVja2VkPWkuY2hlY2tlZCxrLmJveE1vZGVsPWEub2Zmc2V0V2lkdGg9PT0yLCJ6b29tImluIGEuc3R5bGUmJihhLnN0eWxlLmRpc3BsYXk9ImlubGluZSIsYS5zdHlsZS56b29tPTEsay5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PWEub2Zmc2V0V2lkdGg9PT0yLGEuc3R5bGUuZGlzcGxheT0iIixhLmlubmVySFRNTD0iPGRpdiBzdHlsZT0nd2lkdGg6NHB4Oyc+PC9kaXY+IixrLnNocmlua1dyYXBCbG9ja3M9YS5vZmZzZXRXaWR0aCE9PTIpLGEuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZCBzdHlsZT0ncGFkZGluZzowO2JvcmRlcjowO2Rpc3BsYXk6bm9uZSc+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIscT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLHU9cVswXS5vZmZzZXRIZWlnaHQ9PT0wLHFbMF0uc3R5bGUuZGlzcGxheT0iIixxWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGsucmVsaWFibGVIaWRkZW5PZmZzZXRzPXUmJnFbMF0ub2Zmc2V0SGVpZ2h0PT09MCxhLmlubmVySFRNTD0iIixjLmRlZmF1bHRWaWV3JiZjLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihqPWMuY3JlYXRlRWxlbWVudCgiZGl2Iiksai5zdHlsZS53aWR0aD0iMCIsai5zdHlsZS5tYXJnaW5SaWdodD0iMCIsYS5hcHBlbmRDaGlsZChqKSxrLnJlbGlhYmxlTWFyZ2luUmlnaHQ9KHBhcnNlSW50KChjLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoaixudWxsKXx8e21hcmdpblJpZ2h0OjB9KS5tYXJnaW5SaWdodCwxMCl8fDApPT09MCk7aWYoYS5hdHRhY2hFdmVudClmb3IodCBpbntzdWJtaXQ6MSxjaGFuZ2U6MSxmb2N1c2luOjF9KXM9Im9uIit0LHU9cyBpbiBhLHV8fChhLnNldEF0dHJpYnV0ZShzLCJyZXR1cm47IiksdT10eXBlb2YgYVtzXT09ImZ1bmN0aW9uIiksa1t0KyJCdWJibGVzIl09dTtmKGZ1bmN0aW9uKCl7dmFyIGEsYixkLGUsZyxoLGk9MSxqPSJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7bWFyZ2luOjA7IixsPSJ2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXI6MDsiLG49InN0eWxlPSciK2orImJvcmRlcjo1cHggc29saWQgIzAwMDtwYWRkaW5nOjA7JyIscD0iPGRpdiAiK24rIj48ZGl2PjwvZGl2PjwvZGl2PiIrIjx0YWJsZSAiK24rIiBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPiIrIjx0cj48dGQ+PC90ZD48L3RyPjwvdGFibGU+IjttPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTshbXx8KGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxhLnN0eWxlLmNzc1RleHQ9bCsid2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjpzdGF0aWM7dG9wOjA7bWFyZ2luLXRvcDoiK2krInB4IixtLmluc2VydEJlZm9yZShhLG0uZmlyc3RDaGlsZCksbz1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG8uc3R5bGUuY3NzVGV4dD1qK2wsby5pbm5lckhUTUw9cCxhLmFwcGVuZENoaWxkKG8pLGI9by5maXJzdENoaWxkLGQ9Yi5maXJzdENoaWxkLGc9Yi5uZXh0U2libGluZy5maXJzdENoaWxkLmZpcnN0Q2hpbGQsaD17ZG9lc05vdEFkZEJvcmRlcjpkLm9mZnNldFRvcCE9PTUsZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHM6Zy5vZmZzZXRUb3A9PT01fSxkLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsZC5zdHlsZS50b3A9IjIwcHgiLGguZml4ZWRQb3NpdGlvbj1kLm9mZnNldFRvcD09PTIwfHxkLm9mZnNldFRvcD09PTE1LGQuc3R5bGUucG9zaXRpb249ZC5zdHlsZS50b3A9IiIsYi5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixiLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsaC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGU9ZC5vZmZzZXRUb3A9PT0tNSxoLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PW0ub2Zmc2V0VG9wIT09aSxtLnJlbW92ZUNoaWxkKGEpLG89YT1udWxsLGYuZXh0ZW5kKGssaCkpfSksby5pbm5lckhUTUw9IiIsbi5yZW1vdmVDaGlsZChvKSxvPWw9Zz1oPW09aj1hPWk9bnVsbDtyZXR1cm4ga30oKSxmLmJveE1vZGVsPWYuc3VwcG9ydC5ib3hNb2RlbDt2YXIgaj0vXig/Olx7LipcfXxcWy4qXF0pJC8saz0vKFtBLVpdKS9nO2YuZXh0ZW5kKHtjYWNoZTp7fSx1dWlkOjAsZXhwYW5kbzoialF1ZXJ5IisoZi5mbi5qcXVlcnkrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksbm9EYXRhOntlbWJlZDohMCxvYmplY3Q6ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIsYXBwbGV0OiEwfSxoYXNEYXRhOmZ1bmN0aW9uKGEpe2E9YS5ub2RlVHlwZT9mLmNhY2hlW2FbZi5leHBhbmRvXV06YVtmLmV4cGFuZG9dO3JldHVybiEhYSYmIW0oYSl9LGRhdGE6ZnVuY3Rpb24oYSxjLGQsZSl7aWYoISFmLmFjY2VwdERhdGEoYSkpe3ZhciBnLGgsaSxqPWYuZXhwYW5kbyxrPXR5cGVvZiBjPT0ic3RyaW5nIixsPWEubm9kZVR5cGUsbT1sP2YuY2FjaGU6YSxuPWw/YVtmLmV4cGFuZG9dOmFbZi5leHBhbmRvXSYmZi5leHBhbmRvLG89Yz09PSJldmVudHMiO2lmKCghbnx8IW1bbl18fCFvJiYhZSYmIW1bbl0uZGF0YSkmJmsmJmQ9PT1iKXJldHVybjtufHwobD9hW2YuZXhwYW5kb109bj0rK2YudXVpZDpuPWYuZXhwYW5kbyksbVtuXXx8KG1bbl09e30sbHx8KG1bbl0udG9KU09OPWYubm9vcCkpO2lmKHR5cGVvZiBjPT0ib2JqZWN0Inx8dHlwZW9mIGM9PSJmdW5jdGlvbiIpZT9tW25dPWYuZXh0ZW5kKG1bbl0sYyk6bVtuXS5kYXRhPWYuZXh0ZW5kKG1bbl0uZGF0YSxjKTtnPWg9bVtuXSxlfHwoaC5kYXRhfHwoaC5kYXRhPXt9KSxoPWguZGF0YSksZCE9PWImJihoW2YuY2FtZWxDYXNlKGMpXT1kKTtpZihvJiYhaFtjXSlyZXR1cm4gZy5ldmVudHM7az8oaT1oW2NdLGk9PW51bGwmJihpPWhbZi5jYW1lbENhc2UoYyldKSk6aT1oO3JldHVybiBpfX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIsYyl7aWYoISFmLmFjY2VwdERhdGEoYSkpe3ZhciBkLGUsZyxoPWYuZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP2YuY2FjaGU6YSxrPWk/YVtmLmV4cGFuZG9dOmYuZXhwYW5kbztpZighaltrXSlyZXR1cm47aWYoYil7ZD1jP2pba106altrXS5kYXRhO2lmKGQpe2YuaXNBcnJheShiKT9iPWI6YiBpbiBkP2I9W2JdOihiPWYuY2FtZWxDYXNlKGIpLGIgaW4gZD9iPVtiXTpiPWIuc3BsaXQoIiAiKSk7Zm9yKGU9MCxnPWIubGVuZ3RoO2U8ZztlKyspZGVsZXRlIGRbYltlXV07aWYoIShjP206Zi5pc0VtcHR5T2JqZWN0KShkKSlyZXR1cm59fWlmKCFjKXtkZWxldGUgaltrXS5kYXRhO2lmKCFtKGpba10pKXJldHVybn1mLnN1cHBvcnQuZGVsZXRlRXhwYW5kb3x8IWouc2V0SW50ZXJ2YWw/ZGVsZXRlIGpba106altrXT1udWxsLGkmJihmLnN1cHBvcnQuZGVsZXRlRXhwYW5kbz9kZWxldGUgYVtmLmV4cGFuZG9dOmEucmVtb3ZlQXR0cmlidXRlP2EucmVtb3ZlQXR0cmlidXRlKGYuZXhwYW5kbyk6YVtmLmV4cGFuZG9dPW51bGwpfX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRhdGEoYSxiLGMsITApfSxhY2NlcHREYXRhOmZ1bmN0aW9uKGEpe2lmKGEubm9kZU5hbWUpe3ZhciBiPWYubm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKV07aWYoYilyZXR1cm4gYiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn1yZXR1cm4hMH19KSxmLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihhLGMpe3ZhciBkLGUsZyxoPW51bGw7aWYodHlwZW9mIGE9PSJ1bmRlZmluZWQiKXtpZih0aGlzLmxlbmd0aCl7aD1mLmRhdGEodGhpc1swXSk7aWYodGhpc1swXS5ub2RlVHlwZT09PTEmJiFmLl9kYXRhKHRoaXNbMF0sInBhcnNlZEF0dHJzIikpe2U9dGhpc1swXS5hdHRyaWJ1dGVzO2Zvcih2YXIgaT0wLGo9ZS5sZW5ndGg7aTxqO2krKylnPWVbaV0ubmFtZSxnLmluZGV4T2YoImRhdGEtIik9PT0wJiYoZz1mLmNhbWVsQ2FzZShnLnN1YnN0cmluZyg1KSksbCh0aGlzWzBdLGcsaFtnXSkpO2YuX2RhdGEodGhpc1swXSwicGFyc2VkQXR0cnMiLCEwKX19cmV0dXJuIGh9aWYodHlwZW9mIGE9PSJvYmplY3QiKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmRhdGEodGhpcyxhKX0pO2Q9YS5zcGxpdCgiLiIpLGRbMV09ZFsxXT8iLiIrZFsxXToiIjtpZihjPT09Yil7aD10aGlzLnRyaWdnZXJIYW5kbGVyKCJnZXREYXRhIitkWzFdKyIhIixbZFswXV0pLGg9PT1iJiZ0aGlzLmxlbmd0aCYmKGg9Zi5kYXRhKHRoaXNbMF0sYSksaD1sKHRoaXNbMF0sYSxoKSk7cmV0dXJuIGg9PT1iJiZkWzFdP3RoaXMuZGF0YShkWzBdKTpofXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1mKHRoaXMpLGU9W2RbMF0sY107Yi50cmlnZ2VySGFuZGxlcigic2V0RGF0YSIrZFsxXSsiISIsZSksZi5kYXRhKHRoaXMsYSxjKSxiLnRyaWdnZXJIYW5kbGVyKCJjaGFuZ2VEYXRhIitkWzFdKyIhIixlKX0pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLGYuZXh0ZW5kKHtfbWFyazpmdW5jdGlvbihhLGIpe2EmJihiPShifHwiZngiKSsibWFyayIsZi5fZGF0YShhLGIsKGYuX2RhdGEoYSxiKXx8MCkrMSkpfSxfdW5tYXJrOmZ1bmN0aW9uKGEsYixjKXthIT09ITAmJihjPWIsYj1hLGE9ITEpO2lmKGIpe2M9Y3x8ImZ4Ijt2YXIgZD1jKyJtYXJrIixlPWE/MDooZi5fZGF0YShiLGQpfHwxKS0xO2U/Zi5fZGF0YShiLGQsZSk6KGYucmVtb3ZlRGF0YShiLGQsITApLG4oYixjLCJtYXJrIikpfX0scXVldWU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGEpe2I9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1mLl9kYXRhKGEsYiksYyYmKCFkfHxmLmlzQXJyYXkoYyk/ZD1mLl9kYXRhKGEsYixmLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKTtyZXR1cm4gZHx8W119fSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPWYucXVldWUoYSxiKSxkPWMuc2hpZnQoKSxlPXt9O2Q9PT0iaW5wcm9ncmVzcyImJihkPWMuc2hpZnQoKSksZCYmKGI9PT0iZngiJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxmLl9kYXRhKGEsYisiLnJ1biIsZSksZC5jYWxsKGEsZnVuY3Rpb24oKXtmLmRlcXVldWUoYSxiKX0sZSkpLGMubGVuZ3RofHwoZi5yZW1vdmVEYXRhKGEsYisicXVldWUgIitiKyIucnVuIiwhMCksbihhLGIsInF1ZXVlIikpfX0pLGYuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGMpe3R5cGVvZiBhIT0ic3RyaW5nIiYmKGM9YSxhPSJmeCIpO2lmKGM9PT1iKXJldHVybiBmLnF1ZXVlKHRoaXNbMF0sYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYucXVldWUodGhpcyxhLGMpO2E9PT0iZngiJiZiWzBdIT09ImlucHJvZ3Jlc3MiJiZmLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmRlcXVldWUodGhpcyxhKX0pfSxkZWxheTpmdW5jdGlvbihhLGIpe2E9Zi5meD9mLmZ4LnNwZWVkc1thXXx8YTphLGI9Ynx8ImZ4IjtyZXR1cm4gdGhpcy5xdWV1ZShiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9c2V0VGltZW91dChiLGEpO2Muc3RvcD1mdW5jdGlvbigpe2NsZWFyVGltZW91dChkKX19KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGMpe2Z1bmN0aW9uIG0oKXstLWh8fGQucmVzb2x2ZVdpdGgoZSxbZV0pfXR5cGVvZiBhIT0ic3RyaW5nIiYmKGM9YSxhPWIpLGE9YXx8ImZ4Ijt2YXIgZD1mLkRlZmVycmVkKCksZT10aGlzLGc9ZS5sZW5ndGgsaD0xLGk9YSsiZGVmZXIiLGo9YSsicXVldWUiLGs9YSsibWFyayIsbDt3aGlsZShnLS0paWYobD1mLmRhdGEoZVtnXSxpLGIsITApfHwoZi5kYXRhKGVbZ10saixiLCEwKXx8Zi5kYXRhKGVbZ10sayxiLCEwKSkmJmYuZGF0YShlW2ddLGksZi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksITApKWgrKyxsLmFkZChtKTttKCk7cmV0dXJuIGQucHJvbWlzZSgpfX0pO3ZhciBvPS9bXG5cdFxyXS9nLHA9L1xzKy8scT0vXHIvZyxyPS9eKD86YnV0dG9ufGlucHV0KSQvaSxzPS9eKD86YnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8dGV4dGFyZWEpJC9pLHQ9L15hKD86cmVhKT8kL2ksdT0vXig/OmF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjaGVja2VkfGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkfHNlbGVjdGVkKSQvaSx2PWYuc3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGUsdyx4LHk7Zi5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxhLGIsITAsZi5hdHRyKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5yZW1vdmVBdHRyKHRoaXMsYSl9KX0scHJvcDpmdW5jdGlvbihhLGIpe3JldHVybiBmLmFjY2Vzcyh0aGlzLGEsYiwhMCxmLnByb3ApfSxyZW1vdmVQcm9wOmZ1bmN0aW9uKGEpe2E9Zi5wcm9wRml4W2FdfHxhO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0cnl7dGhpc1thXT1iLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGMpe319KX0sYWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZyxoLGk7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcyxiLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihhJiZ0eXBlb2YgYT09InN0cmluZyIpe2I9YS5zcGxpdChwKTtmb3IoYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKyl7ZT10aGlzW2NdO2lmKGUubm9kZVR5cGU9PT0xKWlmKCFlLmNsYXNzTmFtZSYmYi5sZW5ndGg9PT0xKWUuY2xhc3NOYW1lPWE7ZWxzZXtnPSIgIitlLmNsYXNzTmFtZSsiICI7Zm9yKGg9MCxpPWIubGVuZ3RoO2g8aTtoKyspfmcuaW5kZXhPZigiICIrYltoXSsiICIpfHwoZys9YltoXSsiICIpO2UuY2xhc3NOYW1lPWYudHJpbShnKX19fXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYyxkLGUsZyxoLGksajtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGEmJnR5cGVvZiBhPT0ic3RyaW5nInx8YT09PWIpe2M9KGF8fCIiKS5zcGxpdChwKTtmb3IoZD0wLGU9dGhpcy5sZW5ndGg7ZDxlO2QrKyl7Zz10aGlzW2RdO2lmKGcubm9kZVR5cGU9PT0xJiZnLmNsYXNzTmFtZSlpZihhKXtoPSgiICIrZy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKG8sIiAiKTtmb3IoaT0wLGo9Yy5sZW5ndGg7aTxqO2krKyloPWgucmVwbGFjZSgiICIrY1tpXSsiICIsIiAiKTtnLmNsYXNzTmFtZT1mLnRyaW0oaCl9ZWxzZSBnLmNsYXNzTmFtZT0iIn19cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGEsZD10eXBlb2YgYj09ImJvb2xlYW4iO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe2YodGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyx0aGlzLmNsYXNzTmFtZSxiKSxiKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihjPT09InN0cmluZyIpe3ZhciBlLGc9MCxoPWYodGhpcyksaT1iLGo9YS5zcGxpdChwKTt3aGlsZShlPWpbZysrXSlpPWQ/aTohaC5oYXNDbGFzcyhlKSxoW2k/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXShlKX1lbHNlIGlmKGM9PT0idW5kZWZpbmVkInx8Yz09PSJib29sZWFuIil0aGlzLmNsYXNzTmFtZSYmZi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjpmLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiJ9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGI9IiAiK2ErIiAiLGM9MCxkPXRoaXMubGVuZ3RoO2Zvcig7YzxkO2MrKylpZih0aGlzW2NdLm5vZGVUeXBlPT09MSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UobywiICIpLmluZGV4T2YoYik+LTEpcmV0dXJuITA7cmV0dXJuITF9LHZhbDpmdW5jdGlvbihhKXt2YXIgYyxkLGUsZz10aGlzWzBdO2lmKCFhcmd1bWVudHMubGVuZ3RoKXtpZihnKXtjPWYudmFsSG9va3NbZy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXXx8Zi52YWxIb29rc1tnLnR5cGVdO2lmKGMmJiJnZXQiaW4gYyYmKGQ9Yy5nZXQoZywidmFsdWUiKSkhPT1iKXJldHVybiBkO2Q9Zy52YWx1ZTtyZXR1cm4gdHlwZW9mIGQ9PSJzdHJpbmciP2QucmVwbGFjZShxLCIiKTpkPT1udWxsPyIiOmR9cmV0dXJuIGJ9ZT1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihkKXt2YXIgZz1mKHRoaXMpLGg7aWYodGhpcy5ub2RlVHlwZT09PTEpe2U/aD1hLmNhbGwodGhpcyxkLGcudmFsKCkpOmg9YSxoPT1udWxsP2g9IiI6dHlwZW9mIGg9PSJudW1iZXIiP2grPSIiOmYuaXNBcnJheShoKSYmKGg9Zi5tYXAoaCxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpLGM9Zi52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxmLnZhbEhvb2tzW3RoaXMudHlwZV07aWYoIWN8fCEoInNldCJpbiBjKXx8Yy5zZXQodGhpcyxoLCJ2YWx1ZSIpPT09Yil0aGlzLnZhbHVlPWh9fSl9fSksZi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZz1hLnNlbGVjdGVkSW5kZXgsaD1bXSxpPWEub3B0aW9ucyxqPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihnPDApcmV0dXJuIG51bGw7Yz1qP2c6MCxkPWo/ZysxOmkubGVuZ3RoO2Zvcig7YzxkO2MrKyl7ZT1pW2NdO2lmKGUuc2VsZWN0ZWQmJihmLnN1cHBvcnQub3B0RGlzYWJsZWQ/IWUuZGlzYWJsZWQ6ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIik9PT1udWxsKSYmKCFlLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFmLm5vZGVOYW1lKGUucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2I9ZihlKS52YWwoKTtpZihqKXJldHVybiBiO2gucHVzaChiKX19aWYoaiYmIWgubGVuZ3RoJiZpLmxlbmd0aClyZXR1cm4gZihpW2ddKS52YWwoKTtyZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9Zi5tYWtlQXJyYXkoYik7ZihhKS5maW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1mLmluQXJyYXkoZih0aGlzKS52YWwoKSxjKT49MH0pLGMubGVuZ3RofHwoYS5zZWxlY3RlZEluZGV4PS0xKTtyZXR1cm4gY319fSxhdHRyRm46e3ZhbDohMCxjc3M6ITAsaHRtbDohMCx0ZXh0OiEwLGRhdGE6ITAsd2lkdGg6ITAsaGVpZ2h0OiEwLG9mZnNldDohMH0sYXR0cjpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZyxoLGksaj1hLm5vZGVUeXBlO2lmKCFhfHxqPT09M3x8aj09PTh8fGo9PT0yKXJldHVybiBiO2lmKGUmJmMgaW4gZi5hdHRyRm4pcmV0dXJuIGYoYSlbY10oZCk7aWYoISgiZ2V0QXR0cmlidXRlImluIGEpKXJldHVybiBmLnByb3AoYSxjLGQpO2k9aiE9PTF8fCFmLmlzWE1MRG9jKGEpLGkmJihjPWMudG9Mb3dlckNhc2UoKSxoPWYuYXR0ckhvb2tzW2NdfHwodS50ZXN0KGMpP3g6dykpO2lmKGQhPT1iKXtpZihkPT09bnVsbCl7Zi5yZW1vdmVBdHRyKGEsYyk7cmV0dXJuIGJ9aWYoaCYmInNldCJpbiBoJiZpJiYoZz1oLnNldChhLGQsYykpIT09YilyZXR1cm4gZzthLnNldEF0dHJpYnV0ZShjLCIiK2QpO3JldHVybiBkfWlmKGgmJiJnZXQiaW4gaCYmaSYmKGc9aC5nZXQoYSxjKSkhPT1udWxsKXJldHVybiBnO2c9YS5nZXRBdHRyaWJ1dGUoYyk7cmV0dXJuIGc9PT1udWxsP2I6Z30scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxnLGg9MDtpZihhLm5vZGVUeXBlPT09MSl7ZD0oYnx8IiIpLnNwbGl0KHApLGc9ZC5sZW5ndGg7Zm9yKDtoPGc7aCsrKWU9ZFtoXS50b0xvd2VyQ2FzZSgpLGM9Zi5wcm9wRml4W2VdfHxlLGYuYXR0cihhLGUsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHY/ZTpjKSx1LnRlc3QoZSkmJmMgaW4gYSYmKGFbY109ITEpfX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxiKXtpZihyLnRlc3QoYS5ub2RlTmFtZSkmJmEucGFyZW50Tm9kZSlmLmVycm9yKCJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQiKTtlbHNlIGlmKCFmLnN1cHBvcnQucmFkaW9WYWx1ZSYmYj09PSJyYWRpbyImJmYubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTthLnNldEF0dHJpYnV0ZSgidHlwZSIsYiksYyYmKGEudmFsdWU9Yyk7cmV0dXJuIGJ9fX0sdmFsdWU6e2dldDpmdW5jdGlvbihhLGIpe2lmKHcmJmYubm9kZU5hbWUoYSwiYnV0dG9uIikpcmV0dXJuIHcuZ2V0KGEsYik7cmV0dXJuIGIgaW4gYT9hLnZhbHVlOm51bGx9LHNldDpmdW5jdGlvbihhLGIsYyl7aWYodyYmZi5ub2RlTmFtZShhLCJidXR0b24iKSlyZXR1cm4gdy5zZXQoYSxiLGMpO2EudmFsdWU9Yn19fSxwcm9wRml4Ont0YWJpbmRleDoidGFiSW5kZXgiLHJlYWRvbmx5OiJyZWFkT25seSIsImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIsY2VsbHBhZGRpbmc6ImNlbGxQYWRkaW5nIixyb3dzcGFuOiJyb3dTcGFuIixjb2xzcGFuOiJjb2xTcGFuIix1c2VtYXA6InVzZU1hcCIsZnJhbWVib3JkZXI6ImZyYW1lQm9yZGVyIixjb250ZW50ZWRpdGFibGU6ImNvbnRlbnRFZGl0YWJsZSJ9LHByb3A6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGcsaCxpPWEubm9kZVR5cGU7aWYoIWF8fGk9PT0zfHxpPT09OHx8aT09PTIpcmV0dXJuIGI7aD1pIT09MXx8IWYuaXNYTUxEb2MoYSksaCYmKGM9Zi5wcm9wRml4W2NdfHxjLGc9Zi5wcm9wSG9va3NbY10pO3JldHVybiBkIT09Yj9nJiYic2V0ImluIGcmJihlPWcuc2V0KGEsZCxjKSkhPT1iP2U6YVtjXT1kOmcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSxjKSkhPT1udWxsP2U6YVtjXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBjPWEuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTtyZXR1cm4gYyYmYy5zcGVjaWZpZWQ/cGFyc2VJbnQoYy52YWx1ZSwxMCk6cy50ZXN0KGEubm9kZU5hbWUpfHx0LnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOmJ9fX19KSxmLmF0dHJIb29rcy50YWJpbmRleD1mLnByb3BIb29rcy50YWJJbmRleCx4PXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZCxlPWYucHJvcChhLGMpO3JldHVybiBlPT09ITB8fHR5cGVvZiBlIT0iYm9vbGVhbiImJihkPWEuZ2V0QXR0cmlidXRlTm9kZShjKSkmJmQubm9kZVZhbHVlIT09ITE/Yy50b0xvd2VyQ2FzZSgpOmJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7Yj09PSExP2YucmVtb3ZlQXR0cihhLGMpOihkPWYucHJvcEZpeFtjXXx8YyxkIGluIGEmJihhW2RdPSEwKSxhLnNldEF0dHJpYnV0ZShjLGMudG9Mb3dlckNhc2UoKSkpO3JldHVybiBjfX0sdnx8KHk9e25hbWU6ITAsaWQ6ITB9LHc9Zi52YWxIb29rcy5idXR0b249e2dldDpmdW5jdGlvbihhLGMpe3ZhciBkO2Q9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkJiYoeVtjXT9kLm5vZGVWYWx1ZSE9PSIiOmQuc3BlY2lmaWVkKT9kLm5vZGVWYWx1ZTpifSxzZXQ6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWEuZ2V0QXR0cmlidXRlTm9kZShkKTtlfHwoZT1jLmNyZWF0ZUF0dHJpYnV0ZShkKSxhLnNldEF0dHJpYnV0ZU5vZGUoZSkpO3JldHVybiBlLm5vZGVWYWx1ZT1iKyIifX0sZi5hdHRySG9va3MudGFiaW5kZXguc2V0PXcuc2V0LGYuZWFjaChbIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxiKXtmLmF0dHJIb29rc1tiXT1mLmV4dGVuZChmLmF0dHJIb29rc1tiXSx7c2V0OmZ1bmN0aW9uKGEsYyl7aWYoYz09PSIiKXthLnNldEF0dHJpYnV0ZShiLCJhdXRvIik7cmV0dXJuIGN9fX0pfSksZi5hdHRySG9va3MuY29udGVudGVkaXRhYmxlPXtnZXQ6dy5nZXQsc2V0OmZ1bmN0aW9uKGEsYixjKXtiPT09IiImJihiPSJmYWxzZSIpLHcuc2V0KGEsYixjKX19KSxmLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWR8fGYuZWFjaChbImhyZWYiLCJzcmMiLCJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYyl7Zi5hdHRySG9va3NbY109Zi5leHRlbmQoZi5hdHRySG9va3NbY10se2dldDpmdW5jdGlvbihhKXt2YXIgZD1hLmdldEF0dHJpYnV0ZShjLDIpO3JldHVybiBkPT09bnVsbD9iOmR9fSl9KSxmLnN1cHBvcnQuc3R5bGV8fChmLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHQudG9Mb3dlckNhc2UoKXx8Yn0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD0iIitifX0pLGYuc3VwcG9ydC5vcHRTZWxlY3RlZHx8KGYucHJvcEhvb2tzLnNlbGVjdGVkPWYuZXh0ZW5kKGYucHJvcEhvb2tzLnNlbGVjdGVkLHtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO2ImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCk7cmV0dXJuIG51bGx9fSkpLGYuc3VwcG9ydC5lbmN0eXBlfHwoZi5wcm9wRml4LmVuY3R5cGU9ImVuY29kaW5nIiksZi5zdXBwb3J0LmNoZWNrT258fGYuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2YudmFsSG9va3NbdGhpc109e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInZhbHVlIik9PT1udWxsPyJvbiI6YS52YWx1ZX19fSksZi5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Zi52YWxIb29rc1t0aGlzXT1mLmV4dGVuZChmLnZhbEhvb2tzW3RoaXNdLHtzZXQ6ZnVuY3Rpb24oYSxiKXtpZihmLmlzQXJyYXkoYikpcmV0dXJuIGEuY2hlY2tlZD1mLmluQXJyYXkoZihhKS52YWwoKSxiKT49MH19KX0pO3ZhciB6PS9cLiguKikkLyxBPS9eKD86dGV4dGFyZWF8aW5wdXR8c2VsZWN0KSQvaSxCPS9cLi9nLEM9LyAvZyxEPS9bXlx3XHMufGBdL2csRT0vXihbXlwuXSopPyg/OlwuKC4rKSk/JC8sRj0vXGJob3ZlcihcLlxTKyk/LyxHPS9ea2V5LyxIPS9eKD86bW91c2V8Y29udGV4dG1lbnUpfGNsaWNrLyxJPS9eKFx3KikoPzojKFtcd1wtXSspKT8oPzpcLihbXHdcLV0rKSk/JC8sSj1mdW5jdGlvbihhKXt2YXIgYj1JLmV4ZWMoYSk7YiYmCihiWzFdPShiWzFdfHwiIikudG9Mb3dlckNhc2UoKSxiWzNdPWJbM10mJm5ldyBSZWdFeHAoIig/Ol58XFxzKSIrYlszXSsiKD86XFxzfCQpIikpO3JldHVybiBifSxLPWZ1bmN0aW9uKGEsYil7cmV0dXJuKCFiWzFdfHxhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iWzFdKSYmKCFiWzJdfHxhLmlkPT09YlsyXSkmJighYlszXXx8YlszXS50ZXN0KGEuY2xhc3NOYW1lKSl9LEw9ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZXZlbnQuc3BlY2lhbC5ob3Zlcj9hOmEucmVwbGFjZShGLCJtb3VzZWVudGVyJDEgbW91c2VsZWF2ZSQxIil9O2YuZXZlbnQ9e2FkZDpmdW5jdGlvbihhLGMsZCxlLGcpe3ZhciBoLGksaixrLGwsbSxuLG8scCxxLHIscztpZighKGEubm9kZVR5cGU9PT0zfHxhLm5vZGVUeXBlPT09OHx8IWN8fCFkfHwhKGg9Zi5fZGF0YShhKSkpKXtkLmhhbmRsZXImJihwPWQsZD1wLmhhbmRsZXIpLGQuZ3VpZHx8KGQuZ3VpZD1mLmd1aWQrKyksaj1oLmV2ZW50cyxqfHwoaC5ldmVudHM9aj17fSksaT1oLmhhbmRsZSxpfHwoaC5oYW5kbGU9aT1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGYhPSJ1bmRlZmluZWQiJiYoIWF8fGYuZXZlbnQudHJpZ2dlcmVkIT09YS50eXBlKT9mLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGkuZWxlbSxhcmd1bWVudHMpOmJ9LGkuZWxlbT1hKSxjPUwoYykuc3BsaXQoIiAiKTtmb3Ioaz0wO2s8Yy5sZW5ndGg7aysrKXtsPUUuZXhlYyhjW2tdKXx8W10sbT1sWzFdLG49KGxbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbT0oZz9zLmRlbGVnYXRlVHlwZTpzLmJpbmRUeXBlKXx8bSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbz1mLmV4dGVuZCh7dHlwZTptLG9yaWdUeXBlOmxbMV0sZGF0YTplLGhhbmRsZXI6ZCxndWlkOmQuZ3VpZCxzZWxlY3RvcjpnLG5hbWVzcGFjZTpuLmpvaW4oIi4iKX0scCksZyYmKG8ucXVpY2s9SihnKSwhby5xdWljayYmZi5leHByLm1hdGNoLlBPUy50ZXN0KGcpJiYoby5pc1Bvc2l0aW9uYWw9ITApKSxyPWpbbV07aWYoIXIpe3I9alttXT1bXSxyLmRlbGVnYXRlQ291bnQ9MDtpZighcy5zZXR1cHx8cy5zZXR1cC5jYWxsKGEsZSxuLGkpPT09ITEpYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihtLGksITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIittLGkpfXMuYWRkJiYocy5hZGQuY2FsbChhLG8pLG8uaGFuZGxlci5ndWlkfHwoby5oYW5kbGVyLmd1aWQ9ZC5ndWlkKSksZz9yLnNwbGljZShyLmRlbGVnYXRlQ291bnQrKywwLG8pOnIucHVzaChvKSxmLmV2ZW50Lmdsb2JhbFttXT0hMH1hPW51bGx9fSxnbG9iYWw6e30scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWYuaGFzRGF0YShhKSYmZi5fZGF0YShhKSxnLGgsaSxqLGssbCxtLG4sbyxwLHE7aWYoISFlJiYhIShtPWUuZXZlbnRzKSl7Yj1MKGJ8fCIiKS5zcGxpdCgiICIpO2ZvcihnPTA7ZzxiLmxlbmd0aDtnKyspe2g9RS5leGVjKGJbZ10pfHxbXSxpPWhbMV0saj1oWzJdO2lmKCFpKXtqPWo/Ii4iK2o6IiI7Zm9yKGwgaW4gbSlmLmV2ZW50LnJlbW92ZShhLGwraixjLGQpO3JldHVybn1uPWYuZXZlbnQuc3BlY2lhbFtpXXx8e30saT0oZD9uLmRlbGVnYXRlVHlwZTpuLmJpbmRUeXBlKXx8aSxwPW1baV18fFtdLGs9cC5sZW5ndGgsaj1qP25ldyBSZWdFeHAoIihefFxcLikiK2ouc3BsaXQoIi4iKS5zb3J0KCkuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik6bnVsbDtpZihjfHxqfHxkfHxuLnJlbW92ZSlmb3IobD0wO2w8cC5sZW5ndGg7bCsrKXtxPXBbbF07aWYoIWN8fGMuZ3VpZD09PXEuZ3VpZClpZighanx8ai50ZXN0KHEubmFtZXNwYWNlKSlpZighZHx8ZD09PXEuc2VsZWN0b3J8fGQ9PT0iKioiJiZxLnNlbGVjdG9yKXAuc3BsaWNlKGwtLSwxKSxxLnNlbGVjdG9yJiZwLmRlbGVnYXRlQ291bnQtLSxuLnJlbW92ZSYmbi5yZW1vdmUuY2FsbChhLHEpfWVsc2UgcC5sZW5ndGg9MDtwLmxlbmd0aD09PTAmJmshPT1wLmxlbmd0aCYmKCghbi50ZWFyZG93bnx8bi50ZWFyZG93bi5jYWxsKGEsaik9PT0hMSkmJmYucmVtb3ZlRXZlbnQoYSxpLGUuaGFuZGxlKSxkZWxldGUgbVtpXSl9Zi5pc0VtcHR5T2JqZWN0KG0pJiYobz1lLmhhbmRsZSxvJiYoby5lbGVtPW51bGwpLGYucmVtb3ZlRGF0YShhLFsiZXZlbnRzIiwiaGFuZGxlIl0sITApKX19LGN1c3RvbUV2ZW50OntnZXREYXRhOiEwLHNldERhdGE6ITAsY2hhbmdlRGF0YTohMH0sdHJpZ2dlcjpmdW5jdGlvbihjLGQsZSxnKXtpZighZXx8ZS5ub2RlVHlwZSE9PTMmJmUubm9kZVR5cGUhPT04KXt2YXIgaD1jLnR5cGV8fGMsaT1bXSxqLGssbCxtLG4sbyxwLHEscixzO2guaW5kZXhPZigiISIpPj0wJiYoaD1oLnNsaWNlKDAsLTEpLGs9ITApLGguaW5kZXhPZigiLiIpPj0wJiYoaT1oLnNwbGl0KCIuIiksaD1pLnNoaWZ0KCksaS5zb3J0KCkpO2lmKCghZXx8Zi5ldmVudC5jdXN0b21FdmVudFtoXSkmJiFmLmV2ZW50Lmdsb2JhbFtoXSlyZXR1cm47Yz10eXBlb2YgYz09Im9iamVjdCI/Y1tmLmV4cGFuZG9dP2M6bmV3IGYuRXZlbnQoaCxjKTpuZXcgZi5FdmVudChoKSxjLnR5cGU9aCxjLmlzVHJpZ2dlcj0hMCxjLmV4Y2x1c2l2ZT1rLGMubmFtZXNwYWNlPWkuam9pbigiLiIpLGMubmFtZXNwYWNlX3JlPWMubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK2kuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik6bnVsbCxvPWguaW5kZXhPZigiOiIpPDA/Im9uIitoOiIiLChnfHwhZSkmJmMucHJldmVudERlZmF1bHQoKTtpZighZSl7aj1mLmNhY2hlO2ZvcihsIGluIGopaltsXS5ldmVudHMmJmpbbF0uZXZlbnRzW2hdJiZmLmV2ZW50LnRyaWdnZXIoYyxkLGpbbF0uaGFuZGxlLmVsZW0sITApO3JldHVybn1jLnJlc3VsdD1iLGMudGFyZ2V0fHwoYy50YXJnZXQ9ZSksZD1kIT1udWxsP2YubWFrZUFycmF5KGQpOltdLGQudW5zaGlmdChjKSxwPWYuZXZlbnQuc3BlY2lhbFtoXXx8e307aWYocC50cmlnZ2VyJiZwLnRyaWdnZXIuYXBwbHkoZSxkKT09PSExKXJldHVybjtyPVtbZSxwLmJpbmRUeXBlfHxoXV07aWYoIWcmJiFwLm5vQnViYmxlJiYhZi5pc1dpbmRvdyhlKSl7cz1wLmRlbGVnYXRlVHlwZXx8aCxuPW51bGw7Zm9yKG09ZS5wYXJlbnROb2RlO207bT1tLnBhcmVudE5vZGUpci5wdXNoKFttLHNdKSxuPW07biYmbj09PWUub3duZXJEb2N1bWVudCYmci5wdXNoKFtuLmRlZmF1bHRWaWV3fHxuLnBhcmVudFdpbmRvd3x8YSxzXSl9Zm9yKGw9MDtsPHIubGVuZ3RoO2wrKyl7bT1yW2xdWzBdLGMudHlwZT1yW2xdWzFdLHE9KGYuX2RhdGEobSwiZXZlbnRzIil8fHt9KVtjLnR5cGVdJiZmLl9kYXRhKG0sImhhbmRsZSIpLHEmJnEuYXBwbHkobSxkKSxxPW8mJm1bb10scSYmZi5hY2NlcHREYXRhKG0pJiZxLmFwcGx5KG0sZCk7aWYoYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfWMudHlwZT1oLGMuaXNEZWZhdWx0UHJldmVudGVkKCl8fCghcC5fZGVmYXVsdHx8cC5fZGVmYXVsdC5hcHBseShlLm93bmVyRG9jdW1lbnQsZCk9PT0hMSkmJihoIT09ImNsaWNrInx8IWYubm9kZU5hbWUoZSwiYSIpKSYmZi5hY2NlcHREYXRhKGUpJiZvJiZlW2hdJiYoaCE9PSJmb2N1cyImJmghPT0iYmx1ciJ8fGMudGFyZ2V0Lm9mZnNldFdpZHRoIT09MCkmJiFmLmlzV2luZG93KGUpJiYobj1lW29dLG4mJihlW29dPW51bGwpLGYuZXZlbnQudHJpZ2dlcmVkPWgsZVtoXSgpLGYuZXZlbnQudHJpZ2dlcmVkPWIsbiYmKGVbb109bikpO3JldHVybiBjLnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGMpe2M9Zi5ldmVudC5maXgoY3x8YS5ldmVudCk7dmFyIGQ9KGYuX2RhdGEodGhpcywiZXZlbnRzIil8fHt9KVtjLnR5cGVdfHxbXSxlPWQuZGVsZWdhdGVDb3VudCxnPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApLGg9IWMuZXhjbHVzaXZlJiYhYy5uYW1lc3BhY2UsaT0oZi5ldmVudC5zcGVjaWFsW2MudHlwZV18fHt9KS5oYW5kbGUsaj1bXSxrLGwsbSxuLG8scCxxLHIscyx0LHU7Z1swXT1jLGMuZGVsZWdhdGVUYXJnZXQ9dGhpcztpZihlJiYhYy50YXJnZXQuZGlzYWJsZWQmJighYy5idXR0b258fGMudHlwZSE9PSJjbGljayIpKWZvcihtPWMudGFyZ2V0O20hPXRoaXM7bT1tLnBhcmVudE5vZGV8fHRoaXMpe289e30scT1bXTtmb3Ioaz0wO2s8ZTtrKyspcj1kW2tdLHM9ci5zZWxlY3Rvcix0PW9bc10sci5pc1Bvc2l0aW9uYWw/dD0odHx8KG9bc109ZihzKSkpLmluZGV4KG0pPj0wOnQ9PT1iJiYodD1vW3NdPXIucXVpY2s/SyhtLHIucXVpY2spOmYobSkuaXMocykpLHQmJnEucHVzaChyKTtxLmxlbmd0aCYmai5wdXNoKHtlbGVtOm0sbWF0Y2hlczpxfSl9ZC5sZW5ndGg+ZSYmai5wdXNoKHtlbGVtOnRoaXMsbWF0Y2hlczpkLnNsaWNlKGUpfSk7Zm9yKGs9MDtrPGoubGVuZ3RoJiYhYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO2srKyl7cD1qW2tdLGMuY3VycmVudFRhcmdldD1wLmVsZW07Zm9yKGw9MDtsPHAubWF0Y2hlcy5sZW5ndGgmJiFjLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7bCsrKXtyPXAubWF0Y2hlc1tsXTtpZihofHwhYy5uYW1lc3BhY2UmJiFyLm5hbWVzcGFjZXx8Yy5uYW1lc3BhY2VfcmUmJmMubmFtZXNwYWNlX3JlLnRlc3Qoci5uYW1lc3BhY2UpKWMuZGF0YT1yLmRhdGEsYy5oYW5kbGVPYmo9cixuPShpfHxyLmhhbmRsZXIpLmFwcGx5KHAuZWxlbSxnKSxuIT09YiYmKGMucmVzdWx0PW4sbj09PSExJiYoYy5wcmV2ZW50RGVmYXVsdCgpLGMuc3RvcFByb3BhZ2F0aW9uKCkpKX19cmV0dXJuIGMucmVzdWx0fSxwcm9wczoiYXR0ckNoYW5nZSBhdHRyTmFtZSByZWxhdGVkTm9kZSBzcmNFbGVtZW50IGFsdEtleSBidWJibGVzIGNhbmNlbGFibGUgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIuc3BsaXQoIiAiKSxmaXhIb29rczp7fSxrZXlIb29rczp7cHJvcHM6ImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGUiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7YS53aGljaD09bnVsbCYmKGEud2hpY2g9Yi5jaGFyQ29kZSE9bnVsbD9iLmNoYXJDb2RlOmIua2V5Q29kZSk7cmV0dXJuIGF9fSxtb3VzZUhvb2tzOntwcm9wczoiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIGZyb21FbGVtZW50IG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50IHdoZWVsRGVsdGEiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsZCl7dmFyIGUsZixnLGg9ZC5idXR0b24saT1kLmZyb21FbGVtZW50O2EucGFnZVg9PW51bGwmJmQuY2xpZW50WCE9bnVsbCYmKGU9YS50YXJnZXQub3duZXJEb2N1bWVudHx8YyxmPWUuZG9jdW1lbnRFbGVtZW50LGc9ZS5ib2R5LGEucGFnZVg9ZC5jbGllbnRYKyhmJiZmLnNjcm9sbExlZnR8fGcmJmcuc2Nyb2xsTGVmdHx8MCktKGYmJmYuY2xpZW50TGVmdHx8ZyYmZy5jbGllbnRMZWZ0fHwwKSxhLnBhZ2VZPWQuY2xpZW50WSsoZiYmZi5zY3JvbGxUb3B8fGcmJmcuc2Nyb2xsVG9wfHwwKS0oZiYmZi5jbGllbnRUb3B8fGcmJmcuY2xpZW50VG9wfHwwKSksIWEucmVsYXRlZFRhcmdldCYmaSYmKGEucmVsYXRlZFRhcmdldD1pPT09YS50YXJnZXQ/ZC50b0VsZW1lbnQ6aSksIWEud2hpY2gmJmghPT1iJiYoYS53aGljaD1oJjE/MTpoJjI/MzpoJjQ/MjowKTtyZXR1cm4gYX19LGZpeDpmdW5jdGlvbihhKXtpZihhW2YuZXhwYW5kb10pcmV0dXJuIGE7dmFyIGQsZSxnPWEsaD1mLmV2ZW50LmZpeEhvb2tzW2EudHlwZV18fHt9LGk9aC5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChoLnByb3BzKTp0aGlzLnByb3BzO2E9Zi5FdmVudChnKTtmb3IoZD1pLmxlbmd0aDtkOyllPWlbLS1kXSxhW2VdPWdbZV07YS50YXJnZXR8fChhLnRhcmdldD1nLnNyY0VsZW1lbnR8fGMpLGEudGFyZ2V0Lm5vZGVUeXBlPT09MyYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGEubWV0YUtleT09PWImJihhLm1ldGFLZXk9YS5jdHJsS2V5KTtyZXR1cm4gaC5maWx0ZXI/aC5maWx0ZXIoYSxnKTphfSxzcGVjaWFsOntyZWFkeTp7c2V0dXA6Zi5iaW5kUmVhZHl9LGZvY3VzOntkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4iLG5vQnViYmxlOiEwfSxibHVyOntkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0Iixub0J1YmJsZTohMH0sYmVmb3JldW5sb2FkOntzZXR1cDpmdW5jdGlvbihhLGIsYyl7Zi5pc1dpbmRvdyh0aGlzKSYmKHRoaXMub25iZWZvcmV1bmxvYWQ9Yyl9LHRlYXJkb3duOmZ1bmN0aW9uKGEsYil7dGhpcy5vbmJlZm9yZXVubG9hZD09PWImJih0aGlzLm9uYmVmb3JldW5sb2FkPW51bGwpfX19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWYuZXh0ZW5kKG5ldyBmLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMCxvcmlnaW5hbEV2ZW50Ont9fSk7ZD9mLmV2ZW50LnRyaWdnZXIoZSxudWxsLGIpOmYuZXZlbnQuZGlzcGF0Y2guY2FsbChiLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmMucHJldmVudERlZmF1bHQoKX19LGYuZXZlbnQuaGFuZGxlPWYuZXZlbnQuZGlzcGF0Y2gsZi5yZW1vdmVFdmVudD1jLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXthLmRldGFjaEV2ZW50JiZhLmRldGFjaEV2ZW50KCJvbiIrYixjKX0sZi5FdmVudD1mdW5jdGlvbihhLGIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGYuRXZlbnQpKXJldHVybiBuZXcgZi5FdmVudChhLGIpO2EmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fGEucmV0dXJuVmFsdWU9PT0hMXx8YS5nZXRQcmV2ZW50RGVmYXVsdCYmYS5nZXRQcmV2ZW50RGVmYXVsdCgpP046TSk6dGhpcy50eXBlPWEsYiYmZi5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8Zi5ub3coKSx0aGlzW2YuZXhwYW5kb109ITB9LGYuRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPU47dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50OyFhfHwoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9Tjt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7IWF8fChhLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9Tix0aGlzLnN0b3BQcm9wYWdhdGlvbigpfSxpc0RlZmF1bHRQcmV2ZW50ZWQ6TSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpNLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOk19LGYuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7Zi5ldmVudC5zcGVjaWFsW2FdPWYuZXZlbnQuc3BlY2lhbFtiXT17ZGVsZWdhdGVUeXBlOmIsYmluZFR5cGU6YixoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPWEucmVsYXRlZFRhcmdldCxkPWEuaGFuZGxlT2JqLGU9ZC5zZWxlY3RvcixnLGg7aWYoIWN8fGQub3JpZ1R5cGU9PT1hLnR5cGV8fGMhPT1iJiYhZi5jb250YWlucyhiLGMpKWc9YS50eXBlLGEudHlwZT1kLm9yaWdUeXBlLGg9ZC5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9ZztyZXR1cm4gaH19fSksZi5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fChmLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe2lmKGYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO2YuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGM9YS50YXJnZXQsZD1mLm5vZGVOYW1lKGMsImlucHV0Iil8fGYubm9kZU5hbWUoYywiYnV0dG9uIik/Yy5mb3JtOmI7ZCYmIWQuX3N1Ym1pdF9hdHRhY2hlZCYmKGYuZXZlbnQuYWRkKGQsInN1Ym1pdC5fc3VibWl0IixmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJmYuZXZlbnQuc2ltdWxhdGUoInN1Ym1pdCIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksZC5fc3VibWl0X2F0dGFjaGVkPSEwKX0pfSx0ZWFyZG93bjpmdW5jdGlvbigpe2lmKGYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO2YuZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSksZi5zdXBwb3J0LmNoYW5nZUJ1YmJsZXN8fChmLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe2lmKEEudGVzdCh0aGlzLm5vZGVOYW1lKSl7aWYodGhpcy50eXBlPT09ImNoZWNrYm94Inx8dGhpcy50eXBlPT09InJhZGlvIilmLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXthLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lPT09ImNoZWNrZWQiJiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLGYuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMuX2p1c3RfY2hhbmdlZCYmKHRoaXMuX2p1c3RfY2hhbmdlZD0hMSxmLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCkpfSk7cmV0dXJuITF9Zi5ldmVudC5hZGQodGhpcywiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7QS50ZXN0KGIubm9kZU5hbWUpJiYhYi5fY2hhbmdlX2F0dGFjaGVkJiYoZi5ldmVudC5hZGQoYiwiY2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmIWEuaXNTaW11bGF0ZWQmJmYuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksYi5fY2hhbmdlX2F0dGFjaGVkPSEwKX0pfSxoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7aWYodGhpcyE9PWJ8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHxiLnR5cGUhPT0icmFkaW8iJiZiLnR5cGUhPT0iY2hlY2tib3giKXJldHVybiBhLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtmLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpO3JldHVybiBBLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksZi5zdXBwb3J0LmZvY3VzaW5CdWJibGVzfHxmLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGQ9MCxlPWZ1bmN0aW9uKGEpe2YuZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxmLmV2ZW50LmZpeChhKSwhMCl9O2YuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXtkKys9PT0wJiZjLmFkZEV2ZW50TGlzdGVuZXIoYSxlLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXstLWQ9PT0wJiZjLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxlLCEwKX19fSksZi5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYyxkLGUsZyl7dmFyIGgsaTtpZih0eXBlb2YgYT09Im9iamVjdCIpe3R5cGVvZiBjIT0ic3RyaW5nIiYmKGQ9YyxjPWIpO2ZvcihpIGluIGEpdGhpcy5vbihpLGMsZCxhW2ldLGcpO3JldHVybiB0aGlzfWQ9PW51bGwmJmU9PW51bGw/KGU9YyxkPWM9Yik6ZT09bnVsbCYmKHR5cGVvZiBjPT0ic3RyaW5nIj8oZT1kLGQ9Yik6KGU9ZCxkPWMsYz1iKSk7aWYoZT09PSExKWU9TTtlbHNlIGlmKCFlKXJldHVybiB0aGlzO2c9PT0xJiYoaD1lLGU9ZnVuY3Rpb24oYSl7ZigpLm9mZihhKTtyZXR1cm4gaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUuZ3VpZD1oLmd1aWR8fChoLmd1aWQ9Zi5ndWlkKyspKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5hZGQodGhpcyxhLGUsZCxjKX0pfSxvbmU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24uY2FsbCh0aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGMsZCl7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmope3ZhciBlPWEuaGFuZGxlT2JqO2YoYS5kZWxlZ2F0ZVRhcmdldCkub2ZmKGUubmFtZXNwYWNlP2UudHlwZSsiLiIrZS5uYW1lc3BhY2U6ZS50eXBlLGUuc2VsZWN0b3IsZS5oYW5kbGVyKTtyZXR1cm4gdGhpc31pZih0eXBlb2YgYT09Im9iamVjdCIpe2Zvcih2YXIgZyBpbiBhKXRoaXMub2ZmKGcsYyxhW2ddKTtyZXR1cm4gdGhpc31pZihjPT09ITF8fHR5cGVvZiBjPT0iZnVuY3Rpb24iKWQ9YyxjPWI7ZD09PSExJiYoZD1NKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5yZW1vdmUodGhpcyxhLGQsYyl9KX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGxpdmU6ZnVuY3Rpb24oYSxiLGMpe2YodGhpcy5jb250ZXh0KS5vbihhLHRoaXMuc2VsZWN0b3IsYixjKTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKGEsYil7Zih0aGlzLmNvbnRleHQpLm9mZihhLHRoaXMuc2VsZWN0b3J8fCIqKiIsYik7cmV0dXJuIHRoaXN9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09MT90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYSxjKX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7aWYodGhpc1swXSlyZXR1cm4gZi5ldmVudC50cmlnZ2VyKGEsYix0aGlzWzBdLCEwKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cyxjPWEuZ3VpZHx8Zi5ndWlkKyssZD0wLGU9ZnVuY3Rpb24oYyl7dmFyIGU9KGYuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkKXx8MCklZDtmLl9kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2EuZ3VpZCxlKzEpLGMucHJldmVudERlZmF1bHQoKTtyZXR1cm4gYltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfTtlLmd1aWQ9Yzt3aGlsZShkPGIubGVuZ3RoKWJbZCsrXS5ndWlkPWM7cmV0dXJuIHRoaXMuY2xpY2soZSl9LGhvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pLGYuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2YuZm5bYl09ZnVuY3Rpb24oYSxjKXtjPT1udWxsJiYoYz1hLGE9bnVsbCk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLmJpbmQoYixhLGMpOnRoaXMudHJpZ2dlcihiKX0sZi5hdHRyRm4mJihmLmF0dHJGbltiXT0hMCksRy50ZXN0KGIpJiYoZi5ldmVudC5maXhIb29rc1tiXT1mLmV2ZW50LmtleUhvb2tzKSxILnRlc3QoYikmJihmLmV2ZW50LmZpeEhvb2tzW2JdPWYuZXZlbnQubW91c2VIb29rcyl9KSxmdW5jdGlvbigpe2Z1bmN0aW9uIHgoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9aWYoai5ub2RlVHlwZT09PTEpe2d8fChqW2RdPWMsai5zaXpzZXQ9aCk7aWYodHlwZW9mIGIhPSJzdHJpbmciKXtpZihqPT09Yil7az0hMDticmVha319ZWxzZSBpZihtLmZpbHRlcihiLFtqXSkubGVuZ3RoPjApe2s9ajticmVha319aj1qW2FdfWVbaF09a319fWZ1bmN0aW9uIHcoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9ai5ub2RlVHlwZT09PTEmJiFnJiYoaltkXT1jLGouc2l6c2V0PWgpO2lmKGoubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIpe2s9ajticmVha31qPWpbYV19ZVtoXT1rfX19dmFyIGE9LygoPzpcKCg/OlwoW14oKV0rXCl8W14oKV0rKStcKXxcWyg/OlxbW15cW1xdXSpcXXxbJyJdW14nIl0qWyciXXxbXlxbXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8XG4pKikvZyxkPSJzaXpjYWNoZSIrKE1hdGgucmFuZG9tKCkrIiIpLnJlcGxhY2UoIi4iLCIiKSxlPTAsZz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGg9ITEsaT0hMCxqPS9cXC9nLGs9L1xyXG4vZyxsPS9cVy87WzAsMF0uc29ydChmdW5jdGlvbigpe2k9ITE7cmV0dXJuIDB9KTt2YXIgbT1mdW5jdGlvbihiLGQsZSxmKXtlPWV8fFtdLGQ9ZHx8Yzt2YXIgaD1kO2lmKGQubm9kZVR5cGUhPT0xJiZkLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZighYnx8dHlwZW9mIGIhPSJzdHJpbmciKXJldHVybiBlO3ZhciBpLGosayxsLG4scSxyLHQsdT0hMCx2PW0uaXNYTUwoZCksdz1bXSx4PWI7ZG97YS5leGVjKCIiKSxpPWEuZXhlYyh4KTtpZihpKXt4PWlbM10sdy5wdXNoKGlbMV0pO2lmKGlbMl0pe2w9aVszXTticmVha319fXdoaWxlKGkpO2lmKHcubGVuZ3RoPjEmJnAuZXhlYyhiKSlpZih3Lmxlbmd0aD09PTImJm8ucmVsYXRpdmVbd1swXV0paj15KHdbMF0rd1sxXSxkLGYpO2Vsc2V7aj1vLnJlbGF0aXZlW3dbMF1dP1tkXTptKHcuc2hpZnQoKSxkKTt3aGlsZSh3Lmxlbmd0aCliPXcuc2hpZnQoKSxvLnJlbGF0aXZlW2JdJiYoYis9dy5zaGlmdCgpKSxqPXkoYixqLGYpfWVsc2V7IWYmJncubGVuZ3RoPjEmJmQubm9kZVR5cGU9PT05JiYhdiYmby5tYXRjaC5JRC50ZXN0KHdbMF0pJiYhby5tYXRjaC5JRC50ZXN0KHdbdy5sZW5ndGgtMV0pJiYobj1tLmZpbmQody5zaGlmdCgpLGQsdiksZD1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KVswXTpuLnNldFswXSk7aWYoZCl7bj1mP3tleHByOncucG9wKCksc2V0OnMoZil9Om0uZmluZCh3LnBvcCgpLHcubGVuZ3RoPT09MSYmKHdbMF09PT0ifiJ8fHdbMF09PT0iKyIpJiZkLnBhcmVudE5vZGU/ZC5wYXJlbnROb2RlOmQsdiksaj1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KTpuLnNldCx3Lmxlbmd0aD4wP2s9cyhqKTp1PSExO3doaWxlKHcubGVuZ3RoKXE9dy5wb3AoKSxyPXEsby5yZWxhdGl2ZVtxXT9yPXcucG9wKCk6cT0iIixyPT1udWxsJiYocj1kKSxvLnJlbGF0aXZlW3FdKGsscix2KX1lbHNlIGs9dz1bXX1rfHwoaz1qKSxrfHxtLmVycm9yKHF8fGIpO2lmKGcuY2FsbChrKT09PSJbb2JqZWN0IEFycmF5XSIpaWYoIXUpZS5wdXNoLmFwcGx5KGUsayk7ZWxzZSBpZihkJiZkLm5vZGVUeXBlPT09MSlmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJihrW3RdPT09ITB8fGtbdF0ubm9kZVR5cGU9PT0xJiZtLmNvbnRhaW5zKGQsa1t0XSkpJiZlLnB1c2goalt0XSk7ZWxzZSBmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJmtbdF0ubm9kZVR5cGU9PT0xJiZlLnB1c2goalt0XSk7ZWxzZSBzKGssZSk7bCYmKG0obCxoLGUsZiksbS51bmlxdWVTb3J0KGUpKTtyZXR1cm4gZX07bS51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe2lmKHUpe2g9aSxhLnNvcnQodSk7aWYoaClmb3IodmFyIGI9MTtiPGEubGVuZ3RoO2IrKylhW2JdPT09YVtiLTFdJiZhLnNwbGljZShiLS0sMSl9cmV0dXJuIGF9LG0ubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBtKGEsbnVsbCxudWxsLGIpfSxtLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe3JldHVybiBtKGIsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9LG0uZmluZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2lmKCFhKXJldHVybltdO2ZvcihlPTAsZj1vLm9yZGVyLmxlbmd0aDtlPGY7ZSsrKXtoPW8ub3JkZXJbZV07aWYoZz1vLmxlZnRNYXRjaFtoXS5leGVjKGEpKXtpPWdbMV0sZy5zcGxpY2UoMSwxKTtpZihpLnN1YnN0cihpLmxlbmd0aC0xKSE9PSJcXCIpe2dbMV09KGdbMV18fCIiKS5yZXBsYWNlKGosIiIpLGQ9by5maW5kW2hdKGcsYixjKTtpZihkIT1udWxsKXthPWEucmVwbGFjZShvLm1hdGNoW2hdLCIiKTticmVha319fX1kfHwoZD10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOltdKTtyZXR1cm57c2V0OmQsZXhwcjphfX0sbS5maWx0ZXI9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixwLHE9YSxyPVtdLHM9Yyx0PWMmJmNbMF0mJm0uaXNYTUwoY1swXSk7d2hpbGUoYSYmYy5sZW5ndGgpe2ZvcihoIGluIG8uZmlsdGVyKWlmKChmPW8ubGVmdE1hdGNoW2hdLmV4ZWMoYSkpIT1udWxsJiZmWzJdKXtrPW8uZmlsdGVyW2hdLGw9ZlsxXSxnPSExLGYuc3BsaWNlKDEsMSk7aWYobC5zdWJzdHIobC5sZW5ndGgtMSk9PT0iXFwiKWNvbnRpbnVlO3M9PT1yJiYocj1bXSk7aWYoby5wcmVGaWx0ZXJbaF0pe2Y9by5wcmVGaWx0ZXJbaF0oZixzLGQscixlLHQpO2lmKCFmKWc9aT0hMDtlbHNlIGlmKGY9PT0hMCljb250aW51ZX1pZihmKWZvcihuPTA7KGo9c1tuXSkhPW51bGw7bisrKWomJihpPWsoaixmLG4scykscD1lXmksZCYmaSE9bnVsbD9wP2c9ITA6c1tuXT0hMTpwJiYoci5wdXNoKGopLGc9ITApKTtpZihpIT09Yil7ZHx8KHM9ciksYT1hLnJlcGxhY2Uoby5tYXRjaFtoXSwiIik7aWYoIWcpcmV0dXJuW107YnJlYWt9fWlmKGE9PT1xKWlmKGc9PW51bGwpbS5lcnJvcihhKTtlbHNlIGJyZWFrO3E9YX1yZXR1cm4gc30sbS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2F9O3ZhciBuPW0uZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIgYixjLGQ9YS5ub2RlVHlwZSxlPSIiO2lmKGQpe2lmKGQ9PT0xKXtpZih0eXBlb2YgYS50ZXh0Q29udGVudD09InN0cmluZyIpcmV0dXJuIGEudGV4dENvbnRlbnQ7aWYodHlwZW9mIGEuaW5uZXJUZXh0PT0ic3RyaW5nIilyZXR1cm4gYS5pbm5lclRleHQucmVwbGFjZShrLCIiKTtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpZSs9bihhKX1lbHNlIGlmKGQ9PT0zfHxkPT09NClyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSBmb3IoYj0wO2M9YVtiXTtiKyspYy5ub2RlVHlwZSE9PTgmJihlKz1uKGMpKTtyZXR1cm4gZX0sbz1tLnNlbGVjdG9ycz17b3JkZXI6WyJJRCIsIk5BTUUiLCJUQUciXSxtYXRjaDp7SUQ6LyMoKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLENMQVNTOi9cLigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKS8sTkFNRTovXFtuYW1lPVsnIl0qKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspWyciXSpcXS8sQVRUUjovXFtccyooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKylccyooPzooXFM/PSlccyooPzooWyciXSkoLio/KVwzfCgjPyg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSopfCl8KVxzKlxdLyxUQUc6L14oKD86W1x3XHUwMGMwLVx1RkZGRlwqXC1dfFxcLikrKS8sQ0hJTEQ6Lzoob25seXxudGh8bGFzdHxmaXJzdCktY2hpbGQoPzpcKFxzKihldmVufG9kZHwoPzpbK1wtXT9cZCt8KD86WytcLV0/XGQqKT9uXHMqKD86WytcLV1ccypcZCspPykpXHMqXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W15cLV18JCkvLFBTRVVETzovOigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/L30sbGVmdE1hdGNoOnt9LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgidHlwZSIpfX0scmVsYXRpdmU6eyIrIjpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBiPT0ic3RyaW5nIixkPWMmJiFsLnRlc3QoYiksZT1jJiYhZDtkJiYoYj1iLnRvTG93ZXJDYXNlKCkpO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGgsaDtmPGc7ZisrKWlmKGg9YVtmXSl7d2hpbGUoKGg9aC5wcmV2aW91c1NpYmxpbmcpJiZoLm5vZGVUeXBlIT09MSk7YVtmXT1lfHxoJiZoLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iP2h8fCExOmg9PT1ifWUmJm0uZmlsdGVyKGIsYSwhMCl9LCI+IjpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9dHlwZW9mIGI9PSJzdHJpbmciLGU9MCxmPWEubGVuZ3RoO2lmKGQmJiFsLnRlc3QoYikpe2I9Yi50b0xvd2VyQ2FzZSgpO2Zvcig7ZTxmO2UrKyl7Yz1hW2VdO2lmKGMpe3ZhciBnPWMucGFyZW50Tm9kZTthW2VdPWcubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWI/ZzohMX19fWVsc2V7Zm9yKDtlPGY7ZSsrKWM9YVtlXSxjJiYoYVtlXT1kP2MucGFyZW50Tm9kZTpjLnBhcmVudE5vZGU9PT1iKTtkJiZtLmZpbHRlcihiLGEsITApfX0sIiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwYXJlbnROb2RlIixiLGYsYSxkLGMpfSwifiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwcmV2aW91c1NpYmxpbmciLGIsZixhLGQsYyl9fSxmaW5kOntJRDpmdW5jdGlvbihhLGIsYyl7aWYodHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQhPSJ1bmRlZmluZWQiJiYhYyl7dmFyIGQ9Yi5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1cm4gZCYmZC5wYXJlbnROb2RlP1tkXTpbXX19LE5BTUU6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5TmFtZSE9InVuZGVmaW5lZCIpe3ZhciBjPVtdLGQ9Yi5nZXRFbGVtZW50c0J5TmFtZShhWzFdKTtmb3IodmFyIGU9MCxmPWQubGVuZ3RoO2U8ZjtlKyspZFtlXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKT09PWFbMV0mJmMucHVzaChkW2VdKTtyZXR1cm4gYy5sZW5ndGg9PT0wP251bGw6Y319LFRBRzpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIilyZXR1cm4gYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhWzFdKX19LHByZUZpbHRlcjp7Q0xBU1M6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2E9IiAiK2FbMV0ucmVwbGFjZShqLCIiKSsiICI7aWYoZilyZXR1cm4gYTtmb3IodmFyIGc9MCxoOyhoPWJbZ10pIT1udWxsO2crKyloJiYoZV4oaC5jbGFzc05hbWUmJigiICIraC5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKC9bXHRcblxyXS9nLCIgIikuaW5kZXhPZihhKT49MCk/Y3x8ZC5wdXNoKGgpOmMmJihiW2ddPSExKSk7cmV0dXJuITF9LElEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIil9LFRBRzpmdW5jdGlvbihhLGIpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIikudG9Mb3dlckNhc2UoKX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7aWYoYVsxXT09PSJudGgiKXthWzJdfHxtLmVycm9yKGFbMF0pLGFbMl09YVsyXS5yZXBsYWNlKC9eXCt8XHMqL2csIiIpO3ZhciBiPS8oLT8pKFxkKikoPzpuKFsrXC1dP1xkKikpPy8uZXhlYyhhWzJdPT09ImV2ZW4iJiYiMm4ifHxhWzJdPT09Im9kZCImJiIybisxInx8IS9cRC8udGVzdChhWzJdKSYmIjBuKyIrYVsyXXx8YVsyXSk7YVsyXT1iWzFdKyhiWzJdfHwxKS0wLGFbM109YlszXS0wfWVsc2UgYVsyXSYmbS5lcnJvcihhWzBdKTthWzBdPWUrKztyZXR1cm4gYX0sQVRUUjpmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YVsxXT1hWzFdLnJlcGxhY2UoaiwiIik7IWYmJm8uYXR0ck1hcFtnXSYmKGFbMV09by5hdHRyTWFwW2ddKSxhWzRdPShhWzRdfHxhWzVdfHwiIikucmVwbGFjZShqLCIiKSxhWzJdPT09In49IiYmKGFbNF09IiAiK2FbNF0rIiAiKTtyZXR1cm4gYX0sUFNFVURPOmZ1bmN0aW9uKGIsYyxkLGUsZil7aWYoYlsxXT09PSJub3QiKWlmKChhLmV4ZWMoYlszXSl8fCIiKS5sZW5ndGg+MXx8L15cdy8udGVzdChiWzNdKSliWzNdPW0oYlszXSxudWxsLG51bGwsYyk7ZWxzZXt2YXIgZz1tLmZpbHRlcihiWzNdLGMsZCwhMF5mKTtkfHxlLnB1c2guYXBwbHkoZSxnKTtyZXR1cm4hMX1lbHNlIGlmKG8ubWF0Y2guUE9TLnRlc3QoYlswXSl8fG8ubWF0Y2guQ0hJTEQudGVzdChiWzBdKSlyZXR1cm4hMDtyZXR1cm4gYn0sUE9TOmZ1bmN0aW9uKGEpe2EudW5zaGlmdCghMCk7cmV0dXJuIGF9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITEmJmEudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmNoZWNrZWQ9PT0hMH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7YS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtyZXR1cm4gYS5zZWxlY3RlZD09PSEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuISFhLmZpcnN0Q2hpbGR9LGVtcHR5OmZ1bmN0aW9uKGEpe3JldHVybiFhLmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihhLGIsYyl7cmV0dXJuISFtKGNbM10sYSkubGVuZ3RofSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuL2hcZC9pLnRlc3QoYS5ub2RlTmFtZSl9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSxjPWEudHlwZTtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInRleHQiPT09YyYmKGI9PT1jfHxiPT09bnVsbCl9LHJhZGlvOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYicmFkaW8iPT09YS50eXBlfSxjaGVja2JveDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImNoZWNrYm94Ij09PWEudHlwZX0sZmlsZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImZpbGUiPT09YS50eXBlfSxwYXNzd29yZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInBhc3N3b3JkIj09PWEudHlwZX0sc3VibWl0OmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oYj09PSJpbnB1dCJ8fGI9PT0iYnV0dG9uIikmJiJzdWJtaXQiPT09YS50eXBlfSxpbWFnZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImltYWdlIj09PWEudHlwZX0scmVzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybihiPT09ImlucHV0Inx8Yj09PSJidXR0b24iKSYmInJlc2V0Ij09PWEudHlwZX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gYj09PSJpbnB1dCImJiJidXR0b24iPT09YS50eXBlfHxiPT09ImJ1dHRvbiJ9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybi9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2kudGVzdChhLm5vZGVOYW1lKX0sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1hLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudH19LHNldEZpbHRlcnM6e2ZpcnN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0wfSxsYXN0OmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBiPT09ZC5sZW5ndGgtMX0sZXZlbjpmdW5jdGlvbihhLGIpe3JldHVybiBiJTI9PT0wfSxvZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUyPT09MX0sbHQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPGNbM10tMH0sZ3Q6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPmNbM10tMH0sbnRoOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY1szXS0wPT09Yn0sZXE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjWzNdLTA9PT1ifX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsxXSxmPW8uZmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpO2lmKGU9PT0iY29udGFpbnMiKXJldHVybihhLnRleHRDb250ZW50fHxhLmlubmVyVGV4dHx8bihbYV0pfHwiIikuaW5kZXhPZihiWzNdKT49MDtpZihlPT09Im5vdCIpe3ZhciBnPWJbM107Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKWlmKGdbaF09PT1hKXJldHVybiExO3JldHVybiEwfW0uZXJyb3IoZSl9LENISUxEOmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz1iWzFdLGw9YTtzd2l0Y2goayl7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShsPWwucHJldmlvdXNTaWJsaW5nKWlmKGwubm9kZVR5cGU9PT0xKXJldHVybiExO2lmKGs9PT0iZmlyc3QiKXJldHVybiEwO2w9YTtjYXNlImxhc3QiOndoaWxlKGw9bC5uZXh0U2libGluZylpZihsLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtyZXR1cm4hMDtjYXNlIm50aCI6Yz1iWzJdLGU9YlszXTtpZihjPT09MSYmZT09PTApcmV0dXJuITA7Zj1iWzBdLGc9YS5wYXJlbnROb2RlO2lmKGcmJihnW2RdIT09Znx8IWEubm9kZUluZGV4KSl7aT0wO2ZvcihsPWcuZmlyc3RDaGlsZDtsO2w9bC5uZXh0U2libGluZylsLm5vZGVUeXBlPT09MSYmKGwubm9kZUluZGV4PSsraSk7Z1tkXT1mfWo9YS5ub2RlSW5kZXgtZTtyZXR1cm4gYz09PTA/aj09PTA6aiVjPT09MCYmai9jPj0wfX0sSUQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlVHlwZT09PTEmJmEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn0sVEFHOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0iKiImJmEubm9kZVR5cGU9PT0xfHwhIWEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9LENMQVNTOmZ1bmN0aW9uKGEsYil7cmV0dXJuKCIgIisoYS5jbGFzc05hbWV8fGEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSsiICIpLmluZGV4T2YoYik+LTF9LEFUVFI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzFdLGQ9bS5hdHRyP20uYXR0cihhLGMpOm8uYXR0ckhhbmRsZVtjXT9vLmF0dHJIYW5kbGVbY10oYSk6YVtjXSE9bnVsbD9hW2NdOmEuZ2V0QXR0cmlidXRlKGMpLGU9ZCsiIixmPWJbMl0sZz1iWzRdO3JldHVybiBkPT1udWxsP2Y9PT0iIT0iOiFmJiZtLmF0dHI/ZCE9bnVsbDpmPT09Ij0iP2U9PT1nOmY9PT0iKj0iP2UuaW5kZXhPZihnKT49MDpmPT09In49Ij8oIiAiK2UrIiAiKS5pbmRleE9mKGcpPj0wOmc/Zj09PSIhPSI/ZSE9PWc6Zj09PSJePSI/ZS5pbmRleE9mKGcpPT09MDpmPT09IiQ9Ij9lLnN1YnN0cihlLmxlbmd0aC1nLmxlbmd0aCk9PT1nOmY9PT0ifD0iP2U9PT1nfHxlLnN1YnN0cigwLGcubGVuZ3RoKzEpPT09ZysiLSI6ITE6ZSYmZCE9PSExfSxQT1M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsyXSxmPW8uc2V0RmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpfX19LHA9by5tYXRjaC5QT1MscT1mdW5jdGlvbihhLGIpe3JldHVybiJcXCIrKGItMCsxKX07Zm9yKHZhciByIGluIG8ubWF0Y2gpby5tYXRjaFtyXT1uZXcgUmVnRXhwKG8ubWF0Y2hbcl0uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSksby5sZWZ0TWF0Y2hbcl09bmV3IFJlZ0V4cCgvKF4oPzoufFxyfFxuKSo/KS8uc291cmNlK28ubWF0Y2hbcl0uc291cmNlLnJlcGxhY2UoL1xcKFxkKykvZyxxKSk7dmFyIHM9ZnVuY3Rpb24oYSxiKXthPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsMCk7aWYoYil7Yi5wdXNoLmFwcGx5KGIsYSk7cmV0dXJuIGJ9cmV0dXJuIGF9O3RyeXtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjLmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLDApWzBdLm5vZGVUeXBlfWNhdGNoKHQpe3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9Ynx8W107aWYoZy5jYWxsKGEpPT09IltvYmplY3QgQXJyYXldIilBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLGEpO2Vsc2UgaWYodHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIilmb3IodmFyIGU9YS5sZW5ndGg7YzxlO2MrKylkLnB1c2goYVtjXSk7ZWxzZSBmb3IoO2FbY107YysrKWQucHVzaChhW2NdKTtyZXR1cm4gZH19dmFyIHUsdjtjLmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj91PWZ1bmN0aW9uKGEsYil7aWYoYT09PWIpe2g9ITA7cmV0dXJuIDB9aWYoIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb258fCFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXJldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPy0xOjE7cmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmND8tMToxfToodT1mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXtoPSEwO3JldHVybiAwfWlmKGEuc291cmNlSW5kZXgmJmIuc291cmNlSW5kZXgpcmV0dXJuIGEuc291cmNlSW5kZXgtYi5zb3VyY2VJbmRleDt2YXIgYyxkLGU9W10sZj1bXSxnPWEucGFyZW50Tm9kZSxpPWIucGFyZW50Tm9kZSxqPWc7aWYoZz09PWkpcmV0dXJuIHYoYSxiKTtpZighZylyZXR1cm4tMTtpZighaSlyZXR1cm4gMTt3aGlsZShqKWUudW5zaGlmdChqKSxqPWoucGFyZW50Tm9kZTtqPWk7d2hpbGUoailmLnVuc2hpZnQoaiksaj1qLnBhcmVudE5vZGU7Yz1lLmxlbmd0aCxkPWYubGVuZ3RoO2Zvcih2YXIgaz0wO2s8YyYmazxkO2srKylpZihlW2tdIT09ZltrXSlyZXR1cm4gdihlW2tdLGZba10pO3JldHVybiBrPT09Yz92KGEsZltrXSwtMSk6dihlW2tdLGIsMSl9LHY9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PT1iKXJldHVybiBjO3ZhciBkPWEubmV4dFNpYmxpbmc7d2hpbGUoZCl7aWYoZD09PWIpcmV0dXJuLTE7ZD1kLm5leHRTaWJsaW5nfXJldHVybiAxfSksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9InNjcmlwdCIrKG5ldyBEYXRlKS5nZXRUaW1lKCksZT1jLmRvY3VtZW50RWxlbWVudDthLmlubmVySFRNTD0iPGEgbmFtZT0nIitkKyInLz4iLGUuaW5zZXJ0QmVmb3JlKGEsZS5maXJzdENoaWxkKSxjLmdldEVsZW1lbnRCeUlkKGQpJiYoby5maW5kLklEPWZ1bmN0aW9uKGEsYyxkKXtpZih0eXBlb2YgYy5nZXRFbGVtZW50QnlJZCE9InVuZGVmaW5lZCImJiFkKXt2YXIgZT1jLmdldEVsZW1lbnRCeUlkKGFbMV0pO3JldHVybiBlP2UuaWQ9PT1hWzFdfHx0eXBlb2YgZS5nZXRBdHRyaWJ1dGVOb2RlIT0idW5kZWZpbmVkIiYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLm5vZGVWYWx1ZT09PWFbMV0/W2VdOmI6W119fSxvLmZpbHRlci5JRD1mdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUhPSJ1bmRlZmluZWQiJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGEubm9kZVR5cGU9PT0xJiZjJiZjLm5vZGVWYWx1ZT09PWJ9KSxlLnJlbW92ZUNoaWxkKGEpLGU9YT1udWxsfSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmFwcGVuZENoaWxkKGMuY3JlYXRlQ29tbWVudCgiIikpLGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg+MCYmKG8uZmluZC5UQUc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGFbMV0pO2lmKGFbMV09PT0iKiIpe3ZhciBkPVtdO2Zvcih2YXIgZT0wO2NbZV07ZSsrKWNbZV0ubm9kZVR5cGU9PT0xJiZkLnB1c2goY1tlXSk7Yz1kfXJldHVybiBjfSksYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLGEuZmlyc3RDaGlsZCYmdHlwZW9mIGEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPSJ1bmRlZmluZWQiJiZhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikhPT0iIyImJihvLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfSksYT1udWxsfSgpLGMucXVlcnlTZWxlY3RvckFsbCYmZnVuY3Rpb24oKXt2YXIgYT1tLGI9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPSJfX3NpenpsZV9fIjtiLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKCFiLnF1ZXJ5U2VsZWN0b3JBbGx8fGIucXVlcnlTZWxlY3RvckFsbCgiLlRFU1QiKS5sZW5ndGghPT0wKXttPWZ1bmN0aW9uKGIsZSxmLGcpe2U9ZXx8YztpZighZyYmIW0uaXNYTUwoZSkpe3ZhciBoPS9eKFx3KyQpfF5cLihbXHdcLV0rJCl8XiMoW1x3XC1dKyQpLy5leGVjKGIpO2lmKGgmJihlLm5vZGVUeXBlPT09MXx8ZS5ub2RlVHlwZT09PTkpKXtpZihoWzFdKXJldHVybiBzKGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYiksZik7aWYoaFsyXSYmby5maW5kLkNMQVNTJiZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIHMoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGhbMl0pLGYpfWlmKGUubm9kZVR5cGU9PT05KXtpZihiPT09ImJvZHkiJiZlLmJvZHkpcmV0dXJuIHMoW2UuYm9keV0sZik7aWYoaCYmaFszXSl7dmFyIGk9ZS5nZXRFbGVtZW50QnlJZChoWzNdKTtpZighaXx8IWkucGFyZW50Tm9kZSlyZXR1cm4gcyhbXSxmKTtpZihpLmlkPT09aFszXSlyZXR1cm4gcyhbaV0sZil9dHJ5e3JldHVybiBzKGUucXVlcnlTZWxlY3RvckFsbChiKSxmKX1jYXRjaChqKXt9fWVsc2UgaWYoZS5ub2RlVHlwZT09PTEmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJvYmplY3QiKXt2YXIgaz1lLGw9ZS5nZXRBdHRyaWJ1dGUoImlkIiksbj1sfHxkLHA9ZS5wYXJlbnROb2RlLHE9L15ccypbK35dLy50ZXN0KGIpO2w/bj1uLnJlcGxhY2UoLycvZywiXFwkJiIpOmUuc2V0QXR0cmlidXRlKCJpZCIsbikscSYmcCYmKGU9ZS5wYXJlbnROb2RlKTt0cnl7aWYoIXF8fHApcmV0dXJuIHMoZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWQ9JyIrbisiJ10gIitiKSxmKX1jYXRjaChyKXt9ZmluYWxseXtsfHxrLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBhKGIsZSxmLGcpfTtmb3IodmFyIGUgaW4gYSltW2VdPWFbZV07Yj1udWxsfX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuZG9jdW1lbnRFbGVtZW50LGI9YS5tYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3RvcjtpZihiKXt2YXIgZD0hYi5jYWxsKGMuY3JlYXRlRWxlbWVudCgiZGl2IiksImRpdiIpLGU9ITE7dHJ5e2IuY2FsbChjLmRvY3VtZW50RWxlbWVudCwiW3Rlc3QhPScnXTpzaXp6bGUiKX1jYXRjaChmKXtlPSEwfW0ubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYyl7Yz1jLnJlcGxhY2UoL1w9XHMqKFteJyJcXV0qKVxzKlxdL2csIj0nJDEnXSIpO2lmKCFtLmlzWE1MKGEpKXRyeXtpZihlfHwhby5tYXRjaC5QU0VVRE8udGVzdChjKSYmIS8hPS8udGVzdChjKSl7dmFyIGY9Yi5jYWxsKGEsYyk7aWYoZnx8IWR8fGEuZG9jdW1lbnQmJmEuZG9jdW1lbnQubm9kZVR5cGUhPT0xMSlyZXR1cm4gZn19Y2F0Y2goZyl7fXJldHVybiBtKGMsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9fX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5pbm5lckhUTUw9IjxkaXYgY2xhc3M9J3Rlc3QgZSc+PC9kaXY+PGRpdiBjbGFzcz0ndGVzdCc+PC9kaXY+IjtpZighIWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoIT09MCl7YS5sYXN0Q2hpbGQuY2xhc3NOYW1lPSJlIjtpZihhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGg9PT0xKXJldHVybjtvLm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIiksby5maW5kLkNMQVNTPWZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT0idW5kZWZpbmVkIiYmIWMpcmV0dXJuIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhWzFdKX0sYT1udWxsfX0oKSxjLmRvY3VtZW50RWxlbWVudC5jb250YWlucz9tLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEhPT1iJiYoYS5jb250YWlucz9hLmNvbnRhaW5zKGIpOiEwKX06Yy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/bS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpfTptLmNvbnRhaW5zPWZ1bmN0aW9uKCl7cmV0dXJuITF9LG0uaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9KGE/YS5vd25lckRvY3VtZW50fHxhOjApLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj9iLm5vZGVOYW1lIT09IkhUTUwiOiExfTt2YXIgeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZT1bXSxmPSIiLGc9Yi5ub2RlVHlwZT9bYl06Yjt3aGlsZShkPW8ubWF0Y2guUFNFVURPLmV4ZWMoYSkpZis9ZFswXSxhPWEucmVwbGFjZShvLm1hdGNoLlBTRVVETywiIik7YT1vLnJlbGF0aXZlW2FdP2ErIioiOmE7Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKW0oYSxnW2hdLGUsYyk7cmV0dXJuIG0uZmlsdGVyKGYsZSl9O20uYXR0cj1mLmF0dHIsbS5zZWxlY3RvcnMuYXR0ck1hcD17fSxmLmZpbmQ9bSxmLmV4cHI9bS5zZWxlY3RvcnMsZi5leHByWyI6Il09Zi5leHByLmZpbHRlcnMsZi51bmlxdWU9bS51bmlxdWVTb3J0LGYudGV4dD1tLmdldFRleHQsZi5pc1hNTERvYz1tLmlzWE1MLGYuY29udGFpbnM9bS5jb250YWluc30oKTt2YXIgTz0vVW50aWwkLyxQPS9eKD86cGFyZW50c3xwcmV2VW50aWx8cHJldkFsbCkvLFE9LywvLFI9L14uW146I1xbXC4sXSokLyxTPUFycmF5LnByb3RvdHlwZS5zbGljZSxUPWYuZXhwci5tYXRjaC5QT1MsVT17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGMsZDtpZih0eXBlb2YgYSE9InN0cmluZyIpcmV0dXJuIGYoYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspaWYoZi5jb250YWlucyhiW2NdLHRoaXMpKXJldHVybiEwfSk7dmFyIGU9dGhpcy5wdXNoU3RhY2soIiIsImZpbmQiLGEpLGcsaCxpO2ZvcihjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXtnPWUubGVuZ3RoLGYuZmluZChhLHRoaXNbY10sZSk7aWYoYz4wKWZvcihoPWc7aDxlLmxlbmd0aDtoKyspZm9yKGk9MDtpPGc7aSsrKWlmKGVbaV09PT1lW2hdKXtlLnNwbGljZShoLS0sMSk7YnJlYWt9fXJldHVybiBlfSxoYXM6ZnVuY3Rpb24oYSl7dmFyIGI9ZihhKTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxjPWIubGVuZ3RoO2E8YzthKyspaWYoZi5jb250YWlucyh0aGlzLGJbYV0pKXJldHVybiEwfSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVyh0aGlzLGEsITEpLCJub3QiLGEpfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFcodGhpcyxhLCEwKSwiZmlsdGVyIixhKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYodHlwZW9mIGE9PSJzdHJpbmciP1QudGVzdChhKT9mKGEsdGhpcy5jb250ZXh0KS5pbmRleCh0aGlzWzBdKT49MDpmLmZpbHRlcihhLHRoaXMpLmxlbmd0aD4wOnRoaXMuZmlsdGVyKGEpLmxlbmd0aD4wKX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQsZSxnPXRoaXNbMF07aWYoZi5pc0FycmF5KGEpKXt2YXIgaD0xO3doaWxlKGcmJmcub3duZXJEb2N1bWVudCYmZyE9PWIpe2ZvcihkPTA7ZDxhLmxlbmd0aDtkKyspZihnKS5pcyhhW2RdKSYmYy5wdXNoKHtzZWxlY3RvcjphW2RdLGVsZW06ZyxsZXZlbDpofSk7Zz1nLnBhcmVudE5vZGUsaCsrfXJldHVybiBjfXZhciBpPVQudGVzdChhKXx8dHlwZW9mIGEhPSJzdHJpbmciP2YoYSxifHx0aGlzLmNvbnRleHQpOjA7Zm9yKGQ9MCxlPXRoaXMubGVuZ3RoO2Q8ZTtkKyspe2c9dGhpc1tkXTt3aGlsZShnKXtpZihpP2kuaW5kZXgoZyk+LTE6Zi5maW5kLm1hdGNoZXNTZWxlY3RvcihnLGEpKXtjLnB1c2goZyk7YnJlYWt9Zz1nLnBhcmVudE5vZGU7aWYoIWd8fCFnLm93bmVyRG9jdW1lbnR8fGc9PT1ifHxnLm5vZGVUeXBlPT09MTEpYnJlYWt9fWM9Yy5sZW5ndGg+MT9mLnVuaXF1ZShjKTpjO3JldHVybiB0aGlzLnB1c2hTdGFjayhjLCJjbG9zZXN0IixhKX0saW5kZXg6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLnByZXZBbGwoKS5sZW5ndGg6LTE7aWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVybiBmLmluQXJyYXkodGhpc1swXSxmKGEpKTtyZXR1cm4gZi5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKX0sYWRkOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGE9PSJzdHJpbmciP2YoYSxiKTpmLm1ha2VBcnJheShhJiZhLm5vZGVUeXBlP1thXTphKSxkPWYubWVyZ2UodGhpcy5nZXQoKSxjKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVihjWzBdKXx8VihkWzBdKT9kOmYudW5pcXVlKGQpKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfX0pLGYuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmYi5ub2RlVHlwZSE9PTExP2I6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gZi5kaXIoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwYXJlbnROb2RlIixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gZi5udGgoYSwyLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBmLm50aChhLDIsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kaXIoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEucGFyZW50Tm9kZS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBmLm5vZGVOYW1lKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6Zi5tYWtlQXJyYXkoYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7Zi5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPWYubWFwKHRoaXMsYixjKSxnPVMuY2FsbChhcmd1bWVudHMpO08udGVzdChhKXx8KGQ9YyksZCYmdHlwZW9mIGQ9PSJzdHJpbmciJiYoZT1mLmZpbHRlcihkLGUpKSxlPXRoaXMubGVuZ3RoPjEmJiFVW2FdP2YudW5pcXVlKGUpOmUsKHRoaXMubGVuZ3RoPjF8fFEudGVzdChkKSkmJlAudGVzdChhKSYmKGU9ZS5yZXZlcnNlKCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhlLGEsZy5qb2luKCIsIikpfX0pLGYuZXh0ZW5kKHtmaWx0ZXI6ZnVuY3Rpb24oYSxiLGMpe2MmJihhPSI6bm90KCIrYSsiKSIpO3JldHVybiBiLmxlbmd0aD09PTE/Zi5maW5kLm1hdGNoZXNTZWxlY3RvcihiWzBdLGEpP1tiWzBdXTpbXTpmLmZpbmQubWF0Y2hlcyhhLGIpfSxkaXI6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPVtdLGc9YVtjXTt3aGlsZShnJiZnLm5vZGVUeXBlIT09OSYmKGQ9PT1ifHxnLm5vZGVUeXBlIT09MXx8IWYoZykuaXMoZCkpKWcubm9kZVR5cGU9PT0xJiZlLnB1c2goZyksZz1nW2NdO3JldHVybiBlfSxudGg6ZnVuY3Rpb24oYSxiLGMsZCl7Yj1ifHwxO3ZhciBlPTA7Zm9yKDthO2E9YVtjXSlpZihhLm5vZGVUeXBlPT09MSYmKytlPT09YilicmVhaztyZXR1cm4gYX0sc2libGluZzpmdW5jdGlvbihhLGIpe3ZhciBjPVtdO2Zvcig7YTthPWEubmV4dFNpYmxpbmcpYS5ub2RlVHlwZT09PTEmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSk7dmFyIFk9ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBjYW52YXMgZGF0YWxpc3QgZGV0YWlscyBmaWdjYXB0aW9uIGZpZ3VyZSBmb290ZXIgaGVhZGVyIGhncm91cCBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcHJvZ3Jlc3Mgc2VjdGlvbiBzdW1tYXJ5IHRpbWUgdmlkZW8iLFo9LyBqUXVlcnlcZCs9Iig/OlxkK3xudWxsKSIvZywkPS9eXHMrLyxfPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vaWcsYmE9LzwoW1x3Ol0rKS8sYmI9Lzx0Ym9keS9pLGJjPS88fCYjP1x3KzsvLGJkPS88KD86c2NyaXB0fHN0eWxlKS9pLGJlPS88KD86c2NyaXB0fG9iamVjdHxlbWJlZHxvcHRpb258c3R5bGUpL2ksYmY9bmV3IFJlZ0V4cCgiPCg/OiIrWS5yZXBsYWNlKCIgIiwifCIpKyIpIiwiaSIpLGJnPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLGJoPS9cLyhqYXZhfGVjbWEpc2NyaXB0L2ksYmk9L15ccyo8ISg/OlxbQ0RBVEFcW3xcLVwtKS8sYmo9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLF9kZWZhdWx0OlswLCIiLCIiXX0sYms9WChjKTtiai5vcHRncm91cD1iai5vcHRpb24sYmoudGJvZHk9YmoudGZvb3Q9YmouY29sZ3JvdXA9YmouY2FwdGlvbj1iai50aGVhZCxiai50aD1iai50ZCxmLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZXx8KGJqLl9kZWZhdWx0PVsxLCJkaXY8ZGl2PiIsIjwvZGl2PiJdKSxmLmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihhKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpO2MudGV4dChhLmNhbGwodGhpcyxiLGMudGV4dCgpKSl9KTtpZih0eXBlb2YgYSE9Im9iamVjdCImJmEhPT1iKXJldHVybiB0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0aGlzWzBdLm93bmVyRG9jdW1lbnR8fGMpLmNyZWF0ZVRleHROb2RlKGEpKTtyZXR1cm4gZi50ZXh0KHRoaXMpfSx3cmFwQWxsOmZ1bmN0aW9uKGEpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykud3JhcEFsbChhLmNhbGwodGhpcyxiKSl9KTtpZih0aGlzWzBdKXt2YXIgYj1mKGEsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCk7dGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKSxiLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXM7d2hpbGUoYS5maXJzdENoaWxkJiZhLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0xKWE9YS5maXJzdENoaWxkO3JldHVybiBhfSkuYXBwZW5kKHRoaXMpfXJldHVybiB0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS53cmFwSW5uZXIoYS5jYWxsKHRoaXMsYikpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YodGhpcykud3JhcEFsbChhKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7Zi5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fGYodGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuYXBwZW5kQ2hpbGQoYSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihhKXt0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5pbnNlcnRCZWZvcmUoYSx0aGlzLmZpcnN0Q2hpbGQpfSl9LGJlZm9yZTpmdW5jdGlvbigpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9Zihhcmd1bWVudHNbMF0pO2EucHVzaC5hcHBseShhLHRoaXMudG9BcnJheSgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYSwiYmVmb3JlIixhcmd1bWVudHMpfX0sYWZ0ZXI6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzLm5leHRTaWJsaW5nKX0pO2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBhPXRoaXMucHVzaFN0YWNrKHRoaXMsImFmdGVyIgosYXJndW1lbnRzKTthLnB1c2guYXBwbHkoYSxmKGFyZ3VtZW50c1swXSkudG9BcnJheSgpKTtyZXR1cm4gYX19LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ7KGQ9dGhpc1tjXSkhPW51bGw7YysrKWlmKCFhfHxmLmZpbHRlcihhLFtkXSkubGVuZ3RoKSFiJiZkLm5vZGVUeXBlPT09MSYmKGYuY2xlYW5EYXRhKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksZi5jbGVhbkRhdGEoW2RdKSksZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYjsoYj10aGlzW2FdKSE9bnVsbDthKyspe2Iubm9kZVR5cGU9PT0xJiZmLmNsZWFuRGF0YShiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3doaWxlKGIuZmlyc3RDaGlsZCliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7YT1hPT1udWxsPyExOmEsYj1iPT1udWxsP2E6YjtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZi5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtpZihhPT09YilyZXR1cm4gdGhpc1swXSYmdGhpc1swXS5ub2RlVHlwZT09PTE/dGhpc1swXS5pbm5lckhUTUwucmVwbGFjZShaLCIiKTpudWxsO2lmKHR5cGVvZiBhPT0ic3RyaW5nIiYmIWJkLnRlc3QoYSkmJihmLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2V8fCEkLnRlc3QoYSkpJiYhYmpbKGJhLmV4ZWMoYSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKXthPWEucmVwbGFjZShfLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKHZhciBjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXRoaXNbY10ubm9kZVR5cGU9PT0xJiYoZi5jbGVhbkRhdGEodGhpc1tjXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKSx0aGlzW2NdLmlubmVySFRNTD1hKX1jYXRjaChlKXt0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfX1lbHNlIGYuaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9Zih0aGlzKTtjLmh0bWwoYS5jYWxsKHRoaXMsYixjLmh0bWwoKSkpfSk6dGhpcy5lbXB0eSgpLmFwcGVuZChhKTtyZXR1cm4gdGhpc30scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpLGQ9Yy5odG1sKCk7Yy5yZXBsYWNlV2l0aChhLmNhbGwodGhpcyxiLGQpKX0pO3R5cGVvZiBhIT0ic3RyaW5nIiYmKGE9ZihhKS5kZXRhY2goKSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXRoaXMubmV4dFNpYmxpbmcsYz10aGlzLnBhcmVudE5vZGU7Zih0aGlzKS5yZW1vdmUoKSxiP2YoYikuYmVmb3JlKGEpOmYoYykuYXBwZW5kKGEpfSl9cmV0dXJuIHRoaXMubGVuZ3RoP3RoaXMucHVzaFN0YWNrKGYoZi5pc0Z1bmN0aW9uKGEpP2EoKTphKSwicmVwbGFjZVdpdGgiLGEpOnRoaXN9LGRldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnLGgsaSxqPWFbMF0saz1bXTtpZighZi5zdXBwb3J0LmNoZWNrQ2xvbmUmJmFyZ3VtZW50cy5sZW5ndGg9PT0zJiZ0eXBlb2Ygaj09InN0cmluZyImJmJnLnRlc3QoaikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YodGhpcykuZG9tTWFuaXAoYSxjLGQsITApfSk7aWYoZi5pc0Z1bmN0aW9uKGopKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7dmFyIGc9Zih0aGlzKTthWzBdPWouY2FsbCh0aGlzLGUsYz9nLmh0bWwoKTpiKSxnLmRvbU1hbmlwKGEsYyxkKX0pO2lmKHRoaXNbMF0pe2k9aiYmai5wYXJlbnROb2RlLGYuc3VwcG9ydC5wYXJlbnROb2RlJiZpJiZpLm5vZGVUeXBlPT09MTEmJmkuY2hpbGROb2Rlcy5sZW5ndGg9PT10aGlzLmxlbmd0aD9lPXtmcmFnbWVudDppfTplPWYuYnVpbGRGcmFnbWVudChhLHRoaXMsayksaD1lLmZyYWdtZW50LGguY2hpbGROb2Rlcy5sZW5ndGg9PT0xP2c9aD1oLmZpcnN0Q2hpbGQ6Zz1oLmZpcnN0Q2hpbGQ7aWYoZyl7Yz1jJiZmLm5vZGVOYW1lKGcsInRyIik7Zm9yKHZhciBsPTAsbT10aGlzLmxlbmd0aCxuPW0tMTtsPG07bCsrKWQuY2FsbChjP2JsKHRoaXNbbF0sZyk6dGhpc1tsXSxlLmNhY2hlYWJsZXx8bT4xJiZsPG4/Zi5jbG9uZShoLCEwLCEwKTpoKX1rLmxlbmd0aCYmZi5lYWNoKGssYnIpfXJldHVybiB0aGlzfX0pLGYuYnVpbGRGcmFnbWVudD1mdW5jdGlvbihhLGIsZCl7dmFyIGUsZyxoLGksaj1hWzBdO2ImJmJbMF0mJihpPWJbMF0ub3duZXJEb2N1bWVudHx8YlswXSksaS5jcmVhdGVEb2N1bWVudEZyYWdtZW50fHwoaT1jKSxhLmxlbmd0aD09PTEmJnR5cGVvZiBqPT0ic3RyaW5nIiYmai5sZW5ndGg8NTEyJiZpPT09YyYmai5jaGFyQXQoMCk9PT0iPCImJiFiZS50ZXN0KGopJiYoZi5zdXBwb3J0LmNoZWNrQ2xvbmV8fCFiZy50ZXN0KGopKSYmIWYuc3VwcG9ydC51bmtub3duRWxlbXMmJmJmLnRlc3QoaikmJihnPSEwLGg9Zi5mcmFnbWVudHNbal0saCYmaCE9PTEmJihlPWgpKSxlfHwoZT1pLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxmLmNsZWFuKGEsaSxlLGQpKSxnJiYoZi5mcmFnbWVudHNbal09aD9lOjEpO3JldHVybntmcmFnbWVudDplLGNhY2hlYWJsZTpnfX0sZi5mcmFnbWVudHM9e30sZi5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGMpe3ZhciBkPVtdLGU9ZihjKSxnPXRoaXMubGVuZ3RoPT09MSYmdGhpc1swXS5wYXJlbnROb2RlO2lmKGcmJmcubm9kZVR5cGU9PT0xMSYmZy5jaGlsZE5vZGVzLmxlbmd0aD09PTEmJmUubGVuZ3RoPT09MSl7ZVtiXSh0aGlzWzBdKTtyZXR1cm4gdGhpc31mb3IodmFyIGg9MCxpPWUubGVuZ3RoO2g8aTtoKyspe3ZhciBqPShoPjA/dGhpcy5jbG9uZSghMCk6dGhpcykuZ2V0KCk7ZihlW2hdKVtiXShqKSxkPWQuY29uY2F0KGopfXJldHVybiB0aGlzLnB1c2hTdGFjayhkLGEsZS5zZWxlY3Rvcil9fSksZi5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmNsb25lTm9kZSghMCksZSxnLGg7aWYoKCFmLnN1cHBvcnQubm9DbG9uZUV2ZW50fHwhZi5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkKSYmKGEubm9kZVR5cGU9PT0xfHxhLm5vZGVUeXBlPT09MTEpJiYhZi5pc1hNTERvYyhhKSl7Ym4oYSxkKSxlPWJvKGEpLGc9Ym8oZCk7Zm9yKGg9MDtlW2hdOysraClnW2hdJiZibihlW2hdLGdbaF0pfWlmKGIpe2JtKGEsZCk7aWYoYyl7ZT1ibyhhKSxnPWJvKGQpO2ZvcihoPTA7ZVtoXTsrK2gpYm0oZVtoXSxnW2hdKX19ZT1nPW51bGw7cmV0dXJuIGR9LGNsZWFuOmZ1bmN0aW9uKGEsYixkLGUpe3ZhciBnO2I9Ynx8Yyx0eXBlb2YgYi5jcmVhdGVFbGVtZW50PT0idW5kZWZpbmVkIiYmKGI9Yi5vd25lckRvY3VtZW50fHxiWzBdJiZiWzBdLm93bmVyRG9jdW1lbnR8fGMpO3ZhciBoPVtdLGk7Zm9yKHZhciBqPTAsazsoaz1hW2pdKSE9bnVsbDtqKyspe3R5cGVvZiBrPT0ibnVtYmVyIiYmKGsrPSIiKTtpZighayljb250aW51ZTtpZih0eXBlb2Ygaz09InN0cmluZyIpaWYoIWJjLnRlc3Qoaykpaz1iLmNyZWF0ZVRleHROb2RlKGspO2Vsc2V7az1rLnJlcGxhY2UoXywiPCQxPjwvJDI+Iik7dmFyIGw9KGJhLmV4ZWMoayl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksbT1ialtsXXx8YmouX2RlZmF1bHQsbj1tWzBdLG89Yi5jcmVhdGVFbGVtZW50KCJkaXYiKTtiPT09Yz9iay5hcHBlbmRDaGlsZChvKTpYKGIpLmFwcGVuZENoaWxkKG8pLG8uaW5uZXJIVE1MPW1bMV0rayttWzJdO3doaWxlKG4tLSlvPW8ubGFzdENoaWxkO2lmKCFmLnN1cHBvcnQudGJvZHkpe3ZhciBwPWJiLnRlc3QoaykscT1sPT09InRhYmxlIiYmIXA/by5maXJzdENoaWxkJiZvLmZpcnN0Q2hpbGQuY2hpbGROb2RlczptWzFdPT09Ijx0YWJsZT4iJiYhcD9vLmNoaWxkTm9kZXM6W107Zm9yKGk9cS5sZW5ndGgtMTtpPj0wOy0taSlmLm5vZGVOYW1lKHFbaV0sInRib2R5IikmJiFxW2ldLmNoaWxkTm9kZXMubGVuZ3RoJiZxW2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocVtpXSl9IWYuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmJC50ZXN0KGspJiZvLmluc2VydEJlZm9yZShiLmNyZWF0ZVRleHROb2RlKCQuZXhlYyhrKVswXSksby5maXJzdENoaWxkKSxrPW8uY2hpbGROb2Rlc312YXIgcjtpZighZi5zdXBwb3J0LmFwcGVuZENoZWNrZWQpaWYoa1swXSYmdHlwZW9mIChyPWsubGVuZ3RoKT09Im51bWJlciIpZm9yKGk9MDtpPHI7aSsrKWJxKGtbaV0pO2Vsc2UgYnEoayk7ay5ub2RlVHlwZT9oLnB1c2goayk6aD1mLm1lcmdlKGgsayl9aWYoZCl7Zz1mdW5jdGlvbihhKXtyZXR1cm4hYS50eXBlfHxiaC50ZXN0KGEudHlwZSl9O2ZvcihqPTA7aFtqXTtqKyspaWYoZSYmZi5ub2RlTmFtZShoW2pdLCJzY3JpcHQiKSYmKCFoW2pdLnR5cGV8fGhbal0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRleHQvamF2YXNjcmlwdCIpKWUucHVzaChoW2pdLnBhcmVudE5vZGU/aFtqXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGhbal0pOmhbal0pO2Vsc2V7aWYoaFtqXS5ub2RlVHlwZT09PTEpe3ZhciBzPWYuZ3JlcChoW2pdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxnKTtoLnNwbGljZS5hcHBseShoLFtqKzEsMF0uY29uY2F0KHMpKX1kLmFwcGVuZENoaWxkKGhbal0pfX1yZXR1cm4gaH0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1mLmNhY2hlLGU9Zi5ldmVudC5zcGVjaWFsLGc9Zi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG87Zm9yKHZhciBoPTAsaTsoaT1hW2hdKSE9bnVsbDtoKyspe2lmKGkubm9kZU5hbWUmJmYubm9EYXRhW2kubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pY29udGludWU7Yz1pW2YuZXhwYW5kb107aWYoYyl7Yj1kW2NdO2lmKGImJmIuZXZlbnRzKXtmb3IodmFyIGogaW4gYi5ldmVudHMpZVtqXT9mLmV2ZW50LnJlbW92ZShpLGopOmYucmVtb3ZlRXZlbnQoaSxqLGIuaGFuZGxlKTtiLmhhbmRsZSYmKGIuaGFuZGxlLmVsZW09bnVsbCl9Zz9kZWxldGUgaVtmLmV4cGFuZG9dOmkucmVtb3ZlQXR0cmlidXRlJiZpLnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pLGRlbGV0ZSBkW2NdfX19fSk7dmFyIGJzPS9hbHBoYVwoW14pXSpcKS9pLGJ0PS9vcGFjaXR5PShbXildKikvLGJ1PS8oW0EtWl18Xm1zKS9nLGJ2PS9eLT9cZCsoPzpweCk/JC9pLGJ3PS9eLT9cZC8sYng9L14oW1wtK10pPShbXC0rLlxkZV0rKS8sYnk9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LGJ6PVsiTGVmdCIsIlJpZ2h0Il0sYkE9WyJUb3AiLCJCb3R0b20iXSxiQixiQyxiRDtmLmZuLmNzcz1mdW5jdGlvbihhLGMpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0yJiZjPT09YilyZXR1cm4gdGhpcztyZXR1cm4gZi5hY2Nlc3ModGhpcyxhLGMsITAsZnVuY3Rpb24oYSxjLGQpe3JldHVybiBkIT09Yj9mLnN0eWxlKGEsYyxkKTpmLmNzcyhhLGMpfSl9LGYuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9YkIoYSwib3BhY2l0eSIsIm9wYWNpdHkiKTtyZXR1cm4gYz09PSIiPyIxIjpjfXJldHVybiBhLnN0eWxlLm9wYWNpdHl9fX0sY3NzTnVtYmVyOntmaWxsT3BhY2l0eTohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6Zi5zdXBwb3J0LmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGMsZCxlKXtpZighIWEmJmEubm9kZVR5cGUhPT0zJiZhLm5vZGVUeXBlIT09OCYmISFhLnN0eWxlKXt2YXIgZyxoLGk9Zi5jYW1lbENhc2UoYyksaj1hLnN0eWxlLGs9Zi5jc3NIb29rc1tpXTtjPWYuY3NzUHJvcHNbaV18fGk7aWYoZD09PWIpe2lmKGsmJiJnZXQiaW4gayYmKGc9ay5nZXQoYSwhMSxlKSkhPT1iKXJldHVybiBnO3JldHVybiBqW2NdfWg9dHlwZW9mIGQsaD09PSJzdHJpbmciJiYoZz1ieC5leGVjKGQpKSYmKGQ9KyhnWzFdKzEpKitnWzJdK3BhcnNlRmxvYXQoZi5jc3MoYSxjKSksaD0ibnVtYmVyIik7aWYoZD09bnVsbHx8aD09PSJudW1iZXIiJiZpc05hTihkKSlyZXR1cm47aD09PSJudW1iZXIiJiYhZi5jc3NOdW1iZXJbaV0mJihkKz0icHgiKTtpZigha3x8ISgic2V0ImluIGspfHwoZD1rLnNldChhLGQpKSE9PWIpdHJ5e2pbY109ZH1jYXRjaChsKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnO2M9Zi5jYW1lbENhc2UoYyksZz1mLmNzc0hvb2tzW2NdLGM9Zi5jc3NQcm9wc1tjXXx8YyxjPT09ImNzc0Zsb2F0IiYmKGM9ImZsb2F0Iik7aWYoZyYmImdldCJpbiBnJiYoZT1nLmdldChhLCEwLGQpKSE9PWIpcmV0dXJuIGU7aWYoYkIpcmV0dXJuIGJCKGEsYyl9LHN3YXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt9O2Zvcih2YXIgZSBpbiBiKWRbZV09YS5zdHlsZVtlXSxhLnN0eWxlW2VdPWJbZV07Yy5jYWxsKGEpO2ZvcihlIGluIGIpYS5zdHlsZVtlXT1kW2VdfX0pLGYuY3VyQ1NTPWYuY3NzLGYuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxiKXtmLmNzc0hvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlO2lmKGMpe2lmKGEub2Zmc2V0V2lkdGghPT0wKXJldHVybiBiRShhLGIsZCk7Zi5zd2FwKGEsYnksZnVuY3Rpb24oKXtlPWJFKGEsYixkKX0pO3JldHVybiBlfX0sc2V0OmZ1bmN0aW9uKGEsYil7aWYoIWJ2LnRlc3QoYikpcmV0dXJuIGI7Yj1wYXJzZUZsb2F0KGIpO2lmKGI+PTApcmV0dXJuIGIrInB4In19fSksZi5zdXBwb3J0Lm9wYWNpdHl8fChmLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBidC50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/cGFyc2VGbG9hdChSZWdFeHAuJDEpLzEwMCsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3VycmVudFN0eWxlLGU9Zi5pc051bWVyaWMoYik/ImFscGhhKG9wYWNpdHk9IitiKjEwMCsiKSI6IiIsZz1kJiZkLmZpbHRlcnx8Yy5maWx0ZXJ8fCIiO2Muem9vbT0xO2lmKGI+PTEmJmYudHJpbShnLnJlcGxhY2UoYnMsIiIpKT09PSIiKXtjLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIik7aWYoZCYmIWQuZmlsdGVyKXJldHVybn1jLmZpbHRlcj1icy50ZXN0KGcpP2cucmVwbGFjZShicyxlKTpnKyIgIitlfX0pLGYoZnVuY3Rpb24oKXtmLnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodHx8KGYuY3NzSG9va3MubWFyZ2luUmlnaHQ9e2dldDpmdW5jdGlvbihhLGIpe3ZhciBjO2Yuc3dhcChhLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxmdW5jdGlvbigpe2I/Yz1iQihhLCJtYXJnaW4tcmlnaHQiLCJtYXJnaW5SaWdodCIpOmM9YS5zdHlsZS5tYXJnaW5SaWdodH0pO3JldHVybiBjfX0pfSksYy5kZWZhdWx0VmlldyYmYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoYkM9ZnVuY3Rpb24oYSxjKXt2YXIgZCxlLGc7Yz1jLnJlcGxhY2UoYnUsIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoIShlPWEub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykpcmV0dXJuIGI7aWYoZz1lLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKSlkPWcuZ2V0UHJvcGVydHlWYWx1ZShjKSxkPT09IiImJiFmLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYSkmJihkPWYuc3R5bGUoYSxjKSk7cmV0dXJuIGR9KSxjLmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUmJihiRD1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPWEuY3VycmVudFN0eWxlJiZhLmN1cnJlbnRTdHlsZVtiXSxnPWEuc3R5bGU7Zj09PW51bGwmJmcmJihlPWdbYl0pJiYoZj1lKSwhYnYudGVzdChmKSYmYncudGVzdChmKSYmKGM9Zy5sZWZ0LGQ9YS5ydW50aW1lU3R5bGUmJmEucnVudGltZVN0eWxlLmxlZnQsZCYmKGEucnVudGltZVN0eWxlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksZy5sZWZ0PWI9PT0iZm9udFNpemUiPyIxZW0iOmZ8fDAsZj1nLnBpeGVsTGVmdCsicHgiLGcubGVmdD1jLGQmJihhLnJ1bnRpbWVTdHlsZS5sZWZ0PWQpKTtyZXR1cm4gZj09PSIiPyJhdXRvIjpmfSksYkI9YkN8fGJELGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRXaWR0aCxjPWEub2Zmc2V0SGVpZ2h0O3JldHVybiBiPT09MCYmYz09PTB8fCFmLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzJiYoYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxmLmNzcyhhLCJkaXNwbGF5IikpPT09Im5vbmUifSxmLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFmLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9KTt2YXIgYkY9LyUyMC9nLGJHPS9cW1xdJC8sYkg9L1xyP1xuL2csYkk9LyMuKiQvLGJKPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQvbWcsYks9L14oPzpjb2xvcnxkYXRlfGRhdGV0aW1lfGRhdGV0aW1lLWxvY2FsfGVtYWlsfGhpZGRlbnxtb250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2VhcmNofHRlbHx0ZXh0fHRpbWV8dXJsfHdlZWspJC9pLGJMPS9eKD86YWJvdXR8YXBwfGFwcFwtc3RvcmFnZXwuK1wtZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sYk09L14oPzpHRVR8SEVBRCkkLyxiTj0vXlwvXC8vLGJPPS9cPy8sYlA9LzxzY3JpcHRcYltePF0qKD86KD8hPFwvc2NyaXB0Pik8W148XSopKjxcL3NjcmlwdD4vZ2ksYlE9L14oPzpzZWxlY3R8dGV4dGFyZWEpL2ksYlI9L1xzKy8sYlM9LyhbPyZdKV89W14mXSovLGJUPS9eKFtcd1wrXC5cLV0rOikoPzpcL1wvKFteXC8/IzpdKikoPzo6KFxkKykpPyk/LyxiVT1mLmZuLmxvYWQsYlY9e30sYlc9e30sYlgsYlksYlo9WyIqLyJdK1siKiJdO3RyeXtiWD1lLmhyZWZ9Y2F0Y2goYiQpe2JYPWMuY3JlYXRlRWxlbWVudCgiYSIpLGJYLmhyZWY9IiIsYlg9YlguaHJlZn1iWT1iVC5leGVjKGJYLnRvTG93ZXJDYXNlKCkpfHxbXSxmLmZuLmV4dGVuZCh7bG9hZDpmdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGEhPSJzdHJpbmciJiZiVSlyZXR1cm4gYlUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2YXIgZT1hLmluZGV4T2YoIiAiKTtpZihlPj0wKXt2YXIgZz1hLnNsaWNlKGUsYS5sZW5ndGgpO2E9YS5zbGljZSgwLGUpfXZhciBoPSJHRVQiO2MmJihmLmlzRnVuY3Rpb24oYyk/KGQ9YyxjPWIpOnR5cGVvZiBjPT0ib2JqZWN0IiYmKGM9Zi5wYXJhbShjLGYuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxoPSJQT1NUIikpO3ZhciBpPXRoaXM7Zi5hamF4KHt1cmw6YSx0eXBlOmgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yyxjb21wbGV0ZTpmdW5jdGlvbihhLGIsYyl7Yz1hLnJlc3BvbnNlVGV4dCxhLmlzUmVzb2x2ZWQoKSYmKGEuZG9uZShmdW5jdGlvbihhKXtjPWF9KSxpLmh0bWwoZz9mKCI8ZGl2PiIpLmFwcGVuZChjLnJlcGxhY2UoYlAsIiIpKS5maW5kKGcpOmMpKSxkJiZpLmVhY2goZCxbYyxiLGFdKX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGYucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9mLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fGJRLnRlc3QodGhpcy5ub2RlTmFtZSl8fGJLLnRlc3QodGhpcy50eXBlKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1mKHRoaXMpLnZhbCgpO3JldHVybiBjPT1udWxsP251bGw6Zi5pc0FycmF5KGMpP2YubWFwKGMsZnVuY3Rpb24oYSxjKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKGJILCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZShiSCwiXHJcbiIpfX0pLmdldCgpfX0pLGYuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtmLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmJpbmQoYixhKX19KSxmLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oYSxjKXtmW2NdPWZ1bmN0aW9uKGEsZCxlLGcpe2YuaXNGdW5jdGlvbihkKSYmKGc9Z3x8ZSxlPWQsZD1iKTtyZXR1cm4gZi5hamF4KHt0eXBlOmMsdXJsOmEsZGF0YTpkLHN1Y2Nlc3M6ZSxkYXRhVHlwZTpnfSl9fSksZi5leHRlbmQoe2dldFNjcmlwdDpmdW5jdGlvbihhLGMpe3JldHVybiBmLmdldChhLGIsYywic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmdldChhLGIsYywianNvbiIpfSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtiP2NiKGEsZi5hamF4U2V0dGluZ3MpOihiPWEsYT1mLmFqYXhTZXR0aW5ncyksY2IoYSxiKTtyZXR1cm4gYX0sYWpheFNldHRpbmdzOnt1cmw6YlgsaXNMb2NhbDpiTC50ZXN0KGJZWzFdKSxnbG9iYWw6ITAsdHlwZToiR0VUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixwcm9jZXNzRGF0YTohMCxhc3luYzohMCxhY2NlcHRzOnt4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6InRleHQvaHRtbCIsdGV4dDoidGV4dC9wbGFpbiIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IiwiKiI6Ylp9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjphLlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpmLnBhcnNlSlNPTiwidGV4dCB4bWwiOmYucGFyc2VYTUx9LGZsYXRPcHRpb25zOntjb250ZXh0OiEwLHVybDohMH19LGFqYXhQcmVmaWx0ZXI6Yl8oYlYpLGFqYXhUcmFuc3BvcnQ6Yl8oYlcpLGFqYXg6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiB3KGEsYyxsLG0pe2lmKHMhPT0yKXtzPTIscSYmY2xlYXJUaW1lb3V0KHEpLHA9YixuPW18fCIiLHYucmVhZHlTdGF0ZT1hPjA/NDowO3ZhciBvLHIsdSx3PWMseD1sP2NkKGQsdixsKTpiLHksejtpZihhPj0yMDAmJmE8MzAwfHxhPT09MzA0KXtpZihkLmlmTW9kaWZpZWQpe2lmKHk9di5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKWYubGFzdE1vZGlmaWVkW2tdPXk7aWYoej12LmdldFJlc3BvbnNlSGVhZGVyKCJFdGFnIikpZi5ldGFnW2tdPXp9aWYoYT09PTMwNCl3PSJub3Rtb2RpZmllZCIsbz0hMDtlbHNlIHRyeXtyPWNlKGQseCksdz0ic3VjY2VzcyIsbz0hMH1jYXRjaChBKXt3PSJwYXJzZXJlcnJvciIsdT1BfX1lbHNle3U9dztpZighd3x8YSl3PSJlcnJvciIsYTwwJiYoYT0wKX12LnN0YXR1cz1hLHYuc3RhdHVzVGV4dD0iIisoY3x8dyksbz9oLnJlc29sdmVXaXRoKGUsW3Isdyx2XSk6aC5yZWplY3RXaXRoKGUsW3Ysdyx1XSksdi5zdGF0dXNDb2RlKGopLGo9Yix0JiZnLnRyaWdnZXIoImFqYXgiKyhvPyJTdWNjZXNzIjoiRXJyb3IiKSxbdixkLG8/cjp1XSksaS5maXJlV2l0aChlLFt2LHddKSx0JiYoZy50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFt2LGRdKSwtLWYuYWN0aXZlfHxmLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpfX10eXBlb2YgYT09Im9iamVjdCImJihjPWEsYT1iKSxjPWN8fHt9O3ZhciBkPWYuYWpheFNldHVwKHt9LGMpLGU9ZC5jb250ZXh0fHxkLGc9ZSE9PWQmJihlLm5vZGVUeXBlfHxlIGluc3RhbmNlb2YgZik/ZihlKTpmLmV2ZW50LGg9Zi5EZWZlcnJlZCgpLGk9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksaj1kLnN0YXR1c0NvZGV8fHt9LGssbD17fSxtPXt9LG4sbyxwLHEscixzPTAsdCx1LHY9e3JlYWR5U3RhdGU6MCxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7aWYoIXMpe3ZhciBjPWEudG9Mb3dlckNhc2UoKTthPW1bY109bVtjXXx8YSxsW2FdPWJ9cmV0dXJuIHRoaXN9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiBzPT09Mj9uOm51bGx9LGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBjO2lmKHM9PT0yKXtpZighbyl7bz17fTt3aGlsZShjPWJKLmV4ZWMobikpb1tjWzFdLnRvTG93ZXJDYXNlKCldPWNbMl19Yz1vW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIGM9PT1iP251bGw6Y30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihhKXtzfHwoZC5taW1lVHlwZT1hKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7YT1hfHwiYWJvcnQiLHAmJnAuYWJvcnQoYSksdygwLGEpO3JldHVybiB0aGlzfX07aC5wcm9taXNlKHYpLHYuc3VjY2Vzcz12LmRvbmUsdi5lcnJvcj12LmZhaWwsdi5jb21wbGV0ZT1pLmFkZCx2LnN0YXR1c0NvZGU9ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI7aWYoczwyKWZvcihiIGluIGEpaltiXT1baltiXSxhW2JdXTtlbHNlIGI9YVt2LnN0YXR1c10sdi50aGVuKGIsYil9cmV0dXJuIHRoaXN9LGQudXJsPSgoYXx8ZC51cmwpKyIiKS5yZXBsYWNlKGJJLCIiKS5yZXBsYWNlKGJOLGJZWzFdKyIvLyIpLGQuZGF0YVR5cGVzPWYudHJpbShkLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkuc3BsaXQoYlIpLGQuY3Jvc3NEb21haW49PW51bGwmJihyPWJULmV4ZWMoZC51cmwudG9Mb3dlckNhc2UoKSksZC5jcm9zc0RvbWFpbj0hKCFyfHxyWzFdPT1iWVsxXSYmclsyXT09YllbMl0mJihyWzNdfHwoclsxXT09PSJodHRwOiI/ODA6NDQzKSk9PShiWVszXXx8KGJZWzFdPT09Imh0dHA6Ij84MDo0NDMpKSkpLGQuZGF0YSYmZC5wcm9jZXNzRGF0YSYmdHlwZW9mIGQuZGF0YSE9InN0cmluZyImJihkLmRhdGE9Zi5wYXJhbShkLmRhdGEsZC50cmFkaXRpb25hbCkpLGNhKGJWLGQsYyx2KTtpZihzPT09MilyZXR1cm4hMTt0PWQuZ2xvYmFsLGQudHlwZT1kLnR5cGUudG9VcHBlckNhc2UoKSxkLmhhc0NvbnRlbnQ9IWJNLnRlc3QoZC50eXBlKSx0JiZmLmFjdGl2ZSsrPT09MCYmZi5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKTtpZighZC5oYXNDb250ZW50KXtkLmRhdGEmJihkLnVybCs9KGJPLnRlc3QoZC51cmwpPyImIjoiPyIpK2QuZGF0YSxkZWxldGUgZC5kYXRhKSxrPWQudXJsO2lmKGQuY2FjaGU9PT0hMSl7dmFyIHg9Zi5ub3coKSx5PWQudXJsLnJlcGxhY2UoYlMsIiQxXz0iK3gpO2QudXJsPXkrKHk9PT1kLnVybD8oYk8udGVzdChkLnVybCk/IiYiOiI/IikrIl89Iit4OiIiKX19KGQuZGF0YSYmZC5oYXNDb250ZW50JiZkLmNvbnRlbnRUeXBlIT09ITF8fGMuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsZC5jb250ZW50VHlwZSksZC5pZk1vZGlmaWVkJiYoaz1rfHxkLnVybCxmLmxhc3RNb2RpZmllZFtrXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsZi5sYXN0TW9kaWZpZWRba10pLGYuZXRhZ1trXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixmLmV0YWdba10pKSx2LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsZC5kYXRhVHlwZXNbMF0mJmQuYWNjZXB0c1tkLmRhdGFUeXBlc1swXV0/ZC5hY2NlcHRzW2QuZGF0YVR5cGVzWzBdXSsoZC5kYXRhVHlwZXNbMF0hPT0iKiI/IiwgIitiWisiOyBxPTAuMDEiOiIiKTpkLmFjY2VwdHNbIioiXSk7Zm9yKHUgaW4gZC5oZWFkZXJzKXYuc2V0UmVxdWVzdEhlYWRlcih1LGQuaGVhZGVyc1t1XSk7aWYoZC5iZWZvcmVTZW5kJiYoZC5iZWZvcmVTZW5kLmNhbGwoZSx2LGQpPT09ITF8fHM9PT0yKSl7di5hYm9ydCgpO3JldHVybiExfWZvcih1IGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbdV0oZFt1XSk7cD1jYShiVyxkLGMsdik7aWYoIXApdygtMSwiTm8gVHJhbnNwb3J0Iik7ZWxzZXt2LnJlYWR5U3RhdGU9MSx0JiZnLnRyaWdnZXIoImFqYXhTZW5kIixbdixkXSksZC5hc3luYyYmZC50aW1lb3V0PjAmJihxPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2LmFib3J0KCJ0aW1lb3V0Iil9LGQudGltZW91dCkpO3RyeXtzPTEscC5zZW5kKGwsdyl9Y2F0Y2goeil7czwyP3coLTEseik6Zi5lcnJvcih6KX19cmV0dXJuIHZ9LHBhcmFtOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9Zi5pc0Z1bmN0aW9uKGIpP2IoKTpiLGRbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGIpfTtjPT09YiYmKGM9Zi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpO2lmKGYuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFmLmlzUGxhaW5PYmplY3QoYSkpZi5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKHZhciBnIGluIGEpY2MoZyxhW2ddLGMsZSk7cmV0dXJuIGQuam9pbigiJiIpLnJlcGxhY2UoYkYsIisiKX19KSxmLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e319KTt2YXIgY2Y9Zi5ub3coKSxjZz0vKFw9KVw/KCZ8JCl8XD9cPy9pO2YuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZi5leHBhbmRvKyJfIitjZisrfX0pLGYuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlPWIuY29udGVudFR5cGU9PT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiYmdHlwZW9mIGIuZGF0YT09InN0cmluZyI7aWYoYi5kYXRhVHlwZXNbMF09PT0ianNvbnAifHxiLmpzb25wIT09ITEmJihjZy50ZXN0KGIudXJsKXx8ZSYmY2cudGVzdChiLmRhdGEpKSl7dmFyIGcsaD1iLmpzb25wQ2FsbGJhY2s9Zi5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGk9YVtoXSxqPWIudXJsLGs9Yi5kYXRhLGw9IiQxIitoKyIkMiI7Yi5qc29ucCE9PSExJiYoaj1qLnJlcGxhY2UoY2csbCksYi51cmw9PT1qJiYoZSYmKGs9ay5yZXBsYWNlKGNnLGwpKSxiLmRhdGE9PT1rJiYoais9KC9cPy8udGVzdChqKT8iJiI6Ij8iKStiLmpzb25wKyI9IitoKSkpLGIudXJsPWosYi5kYXRhPWssYVtoXT1mdW5jdGlvbihhKXtnPVthXX0sZC5hbHdheXMoZnVuY3Rpb24oKXthW2hdPWksZyYmZi5pc0Z1bmN0aW9uKGkpJiZhW2hdKGdbMF0pfSksYi5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7Z3x8Zi5lcnJvcihoKyIgd2FzIG5vdCBjYWxsZWQiKTtyZXR1cm4gZ1swXX0sYi5kYXRhVHlwZXNbMF09Impzb24iO3JldHVybiJzY3JpcHQifX0pLGYuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovamF2YXNjcmlwdHxlY21hc2NyaXB0L30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihhKXtmLmdsb2JhbEV2YWwoYSk7cmV0dXJuIGF9fX0pLGYuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihhKXthLmNhY2hlPT09YiYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIsYS5nbG9iYWw9ITEpfSksZi5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBkLGU9Yy5oZWFkfHxjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGMuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKGYsZyl7ZD1jLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGQuYXN5bmM9ImFzeW5jIixhLnNjcmlwdENoYXJzZXQmJihkLmNoYXJzZXQ9YS5zY3JpcHRDaGFyc2V0KSxkLnNyYz1hLnVybCxkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihhLGMpe2lmKGN8fCFkLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZC5yZWFkeVN0YXRlKSlkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGUmJmQucGFyZW50Tm9kZSYmZS5yZW1vdmVDaGlsZChkKSxkPWIsY3x8ZygyMDAsInN1Y2Nlc3MiKX0sZS5pbnNlcnRCZWZvcmUoZCxlLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2QmJmQub25sb2FkKDAsMSl9fX19KTt2YXIgY2g9YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7Zm9yKHZhciBhIGluIGNqKWNqW2FdKDAsMSl9OiExLGNpPTAsY2o7Zi5hamF4U2V0dGluZ3MueGhyPWEuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzTG9jYWwmJmNrKCl8fGNsKCl9OmNrLGZ1bmN0aW9uKGEpe2YuZXh0ZW5kKGYuc3VwcG9ydCx7YWpheDohIWEsY29yczohIWEmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gYX0pfShmLmFqYXhTZXR0aW5ncy54aHIoKSksZi5zdXBwb3J0LmFqYXgmJmYuYWpheFRyYW5zcG9ydChmdW5jdGlvbihjKXtpZighYy5jcm9zc0RvbWFpbnx8Zi5zdXBwb3J0LmNvcnMpe3ZhciBkO3JldHVybntzZW5kOmZ1bmN0aW9uKGUsZyl7dmFyIGg9Yy54aHIoKSxpLGo7Yy51c2VybmFtZT9oLm9wZW4oYy50eXBlLGMudXJsLGMuYXN5bmMsYy51c2VybmFtZSxjLnBhc3N3b3JkKTpoLm9wZW4oYy50eXBlLGMudXJsLGMuYXN5bmMpO2lmKGMueGhyRmllbGRzKWZvcihqIGluIGMueGhyRmllbGRzKWhbal09Yy54aHJGaWVsZHNbal07Yy5taW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUoYy5taW1lVHlwZSksIWMuY3Jvc3NEb21haW4mJiFlWyJYLVJlcXVlc3RlZC1XaXRoIl0mJihlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7dHJ5e2ZvcihqIGluIGUpaC5zZXRSZXF1ZXN0SGVhZGVyKGosZVtqXSl9Y2F0Y2goayl7fWguc2VuZChjLmhhc0NvbnRlbnQmJmMuZGF0YXx8bnVsbCksZD1mdW5jdGlvbihhLGUpe3ZhciBqLGssbCxtLG47dHJ5e2lmKGQmJihlfHxoLnJlYWR5U3RhdGU9PT00KSl7ZD1iLGkmJihoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mLm5vb3AsY2gmJmRlbGV0ZSBjaltpXSk7aWYoZSloLnJlYWR5U3RhdGUhPT00JiZoLmFib3J0KCk7ZWxzZXtqPWguc3RhdHVzLGw9aC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSxtPXt9LG49aC5yZXNwb25zZVhNTCxuJiZuLmRvY3VtZW50RWxlbWVudCYmKG0ueG1sPW4pLG0udGV4dD1oLnJlc3BvbnNlVGV4dDt0cnl7az1oLnN0YXR1c1RleHR9Y2F0Y2gobyl7az0iIn0haiYmYy5pc0xvY2FsJiYhYy5jcm9zc0RvbWFpbj9qPW0udGV4dD8yMDA6NDA0Omo9PT0xMjIzJiYoaj0yMDQpfX19Y2F0Y2gocCl7ZXx8ZygtMSxwKX1tJiZnKGosayxtLGwpfSwhYy5hc3luY3x8aC5yZWFkeVN0YXRlPT09ND9kKCk6KGk9KytjaSxjaCYmKGNqfHwoY2o9e30sZihhKS51bmxvYWQoY2gpKSxjaltpXT1kKSxoLm9ucmVhZHlzdGF0ZWNoYW5nZT1kKX0sYWJvcnQ6ZnVuY3Rpb24oKXtkJiZkKDAsMSl9fX19KTt2YXIgY209e30sY24sY28sY3A9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGNxPS9eKFsrXC1dPSk/KFtcZCsuXC1dKykoW2EteiVdKikkL2ksY3IsY3M9W1siaGVpZ2h0IiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSxbIndpZHRoIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiXSxbIm9wYWNpdHkiXV0sY3Q7Zi5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjdygic2hvdyIsMyksYSxiLGMpO2Zvcih2YXIgZz0wLGg9dGhpcy5sZW5ndGg7ZzxoO2crKylkPXRoaXNbZ10sZC5zdHlsZSYmKGU9ZC5zdHlsZS5kaXNwbGF5LCFmLl9kYXRhKGQsIm9sZGRpc3BsYXkiKSYmZT09PSJub25lIiYmKGU9ZC5zdHlsZS5kaXNwbGF5PSIiKSxlPT09IiImJmYuY3NzKGQsImRpc3BsYXkiKT09PSJub25lIiYmZi5fZGF0YShkLCJvbGRkaXNwbGF5IixjeChkLm5vZGVOYW1lKSkpO2ZvcihnPTA7ZzxoO2crKyl7ZD10aGlzW2ddO2lmKGQuc3R5bGUpe2U9ZC5zdHlsZS5kaXNwbGF5O2lmKGU9PT0iInx8ZT09PSJub25lIilkLnN0eWxlLmRpc3BsYXk9Zi5fZGF0YShkLCJvbGRkaXNwbGF5Iil8fCIifX1yZXR1cm4gdGhpc30saGlkZTpmdW5jdGlvbihhLGIsYyl7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjdygiaGlkZSIsMyksYSxiLGMpO3ZhciBkLGUsZz0wLGg9dGhpcy5sZW5ndGg7Zm9yKDtnPGg7ZysrKWQ9dGhpc1tnXSxkLnN0eWxlJiYoZT1mLmNzcyhkLCJkaXNwbGF5IiksZSE9PSJub25lIiYmIWYuX2RhdGEoZCwib2xkZGlzcGxheSIpJiZmLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGUpKTtmb3IoZz0wO2c8aDtnKyspdGhpc1tnXS5zdHlsZSYmKHRoaXNbZ10uc3R5bGUuZGlzcGxheT0ibm9uZSIpO3JldHVybiB0aGlzfSxfdG9nZ2xlOmYuZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dHlwZW9mIGE9PSJib29sZWFuIjtmLmlzRnVuY3Rpb24oYSkmJmYuaXNGdW5jdGlvbihiKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpOmE9PW51bGx8fGQ/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ZD9hOmYodGhpcykuaXMoIjpoaWRkZW4iKTtmKHRoaXMpW2I/InNob3ciOiJoaWRlIl0oKX0pOnRoaXMuYW5pbWF0ZShjdygidG9nZ2xlIiwzKSxhLGIsYyk7cmV0dXJuIHRoaXN9LGZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoIjpoaWRkZW4iKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmJ9LGEsYyxkKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxkKXtmdW5jdGlvbiBnKCl7ZS5xdWV1ZT09PSExJiZmLl9tYXJrKHRoaXMpO3ZhciBiPWYuZXh0ZW5kKHt9LGUpLGM9dGhpcy5ub2RlVHlwZT09PTEsZD1jJiZmKHRoaXMpLmlzKCI6aGlkZGVuIiksZyxoLGksaixrLGwsbSxuLG87Yi5hbmltYXRlZFByb3BlcnRpZXM9e307Zm9yKGkgaW4gYSl7Zz1mLmNhbWVsQ2FzZShpKSxpIT09ZyYmKGFbZ109YVtpXSxkZWxldGUgYVtpXSksaD1hW2ddLGYuaXNBcnJheShoKT8oYi5hbmltYXRlZFByb3BlcnRpZXNbZ109aFsxXSxoPWFbZ109aFswXSk6Yi5hbmltYXRlZFByb3BlcnRpZXNbZ109Yi5zcGVjaWFsRWFzaW5nJiZiLnNwZWNpYWxFYXNpbmdbZ118fGIuZWFzaW5nfHwic3dpbmciO2lmKGg9PT0iaGlkZSImJmR8fGg9PT0ic2hvdyImJiFkKXJldHVybiBiLmNvbXBsZXRlLmNhbGwodGhpcyk7YyYmKGc9PT0iaGVpZ2h0Inx8Zz09PSJ3aWR0aCIpJiYoYi5vdmVyZmxvdz1bdGhpcy5zdHlsZS5vdmVyZmxvdyx0aGlzLnN0eWxlLm92ZXJmbG93WCx0aGlzLnN0eWxlLm92ZXJmbG93WV0sZi5jc3ModGhpcywiZGlzcGxheSIpPT09ImlubGluZSImJmYuY3NzKHRoaXMsImZsb2F0Iik9PT0ibm9uZSImJighZi5zdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXR8fGN4KHRoaXMubm9kZU5hbWUpPT09ImlubGluZSI/dGhpcy5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siOnRoaXMuc3R5bGUuem9vbT0xKSl9Yi5vdmVyZmxvdyE9bnVsbCYmKHRoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpO2ZvcihpIGluIGEpaj1uZXcgZi5meCh0aGlzLGIsaSksaD1hW2ldLGNwLnRlc3QoaCk/KG89Zi5fZGF0YSh0aGlzLCJ0b2dnbGUiK2kpfHwoaD09PSJ0b2dnbGUiP2Q/InNob3ciOiJoaWRlIjowKSxvPyhmLl9kYXRhKHRoaXMsInRvZ2dsZSIraSxvPT09InNob3ciPyJoaWRlIjoic2hvdyIpLGpbb10oKSk6altoXSgpKTooaz1jcS5leGVjKGgpLGw9ai5jdXIoKSxrPyhtPXBhcnNlRmxvYXQoa1syXSksbj1rWzNdfHwoZi5jc3NOdW1iZXJbaV0/IiI6InB4IiksbiE9PSJweCImJihmLnN0eWxlKHRoaXMsaSwobXx8MSkrbiksbD0obXx8MSkvai5jdXIoKSpsLGYuc3R5bGUodGhpcyxpLGwrbikpLGtbMV0mJihtPShrWzFdPT09Ii09Ij8tMToxKSptK2wpLGouY3VzdG9tKGwsbSxuKSk6ai5jdXN0b20obCxoLCIiKSk7cmV0dXJuITB9dmFyIGU9Zi5zcGVlZChiLGMsZCk7aWYoZi5pc0VtcHR5T2JqZWN0KGEpKXJldHVybiB0aGlzLmVhY2goZS5jb21wbGV0ZSxbITFdKTthPWYuZXh0ZW5kKHt9LGEpO3JldHVybiBlLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZS5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGMsZCl7dHlwZW9mIGEhPSJzdHJpbmciJiYoZD1jLGM9YSxhPWIpLGMmJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gaChhLGIsYyl7dmFyIGU9YltjXTtmLnJlbW92ZURhdGEoYSxjLCEwKSxlLnN0b3AoZCl9dmFyIGIsYz0hMSxlPWYudGltZXJzLGc9Zi5fZGF0YSh0aGlzKTtkfHxmLl91bm1hcmsoITAsdGhpcyk7aWYoYT09bnVsbClmb3IoYiBpbiBnKWdbYl0uc3RvcCYmYi5pbmRleE9mKCIucnVuIik9PT1iLmxlbmd0aC00JiZoKHRoaXMsZyxiKTtlbHNlIGdbYj1hKyIucnVuIl0mJmdbYl0uc3RvcCYmaCh0aGlzLGcsYik7Zm9yKGI9ZS5sZW5ndGg7Yi0tOyllW2JdLmVsZW09PT10aGlzJiYoYT09bnVsbHx8ZVtiXS5xdWV1ZT09PWEpJiYoZD9lW2JdKCEwKTplW2JdLnNhdmVTdGF0ZSgpLGM9ITAsZS5zcGxpY2UoYiwxKSk7KCFkfHwhYykmJmYuZGVxdWV1ZSh0aGlzLGEpfSl9fSksZi5lYWNoKHtzbGlkZURvd246Y3coInNob3ciLDEpLHNsaWRlVXA6Y3coImhpZGUiLDEpLHNsaWRlVG9nZ2xlOmN3KCJ0b2dnbGUiLDEpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsYSxjLGQpfX0pLGYuZXh0ZW5kKHtzcGVlZDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmdHlwZW9mIGE9PSJvYmplY3QiP2YuZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8Zi5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFmLmlzRnVuY3Rpb24oYikmJmJ9O2QuZHVyYXRpb249Zi5meC5vZmY/MDp0eXBlb2YgZC5kdXJhdGlvbj09Im51bWJlciI/ZC5kdXJhdGlvbjpkLmR1cmF0aW9uIGluIGYuZnguc3BlZWRzP2YuZnguc3BlZWRzW2QuZHVyYXRpb25dOmYuZnguc3BlZWRzLl9kZWZhdWx0O2lmKGQucXVldWU9PW51bGx8fGQucXVldWU9PT0hMClkLnF1ZXVlPSJmeCI7ZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKGEpe2YuaXNGdW5jdGlvbihkLm9sZCkmJmQub2xkLmNhbGwodGhpcyksZC5xdWV1ZT9mLmRlcXVldWUodGhpcyxkLnF1ZXVlKTphIT09ITEmJmYuX3VubWFyayh0aGlzKX07cmV0dXJuIGR9LGVhc2luZzp7bGluZWFyOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBjK2QqYX0sc3dpbmc6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuKC1NYXRoLmNvcyhhKk1hdGguUEkpLzIrLjUpKmQrY319LHRpbWVyczpbXSxmeDpmdW5jdGlvbihhLGIsYyl7dGhpcy5vcHRpb25zPWIsdGhpcy5lbGVtPWEsdGhpcy5wcm9wPWMsYi5vcmlnPWIub3JpZ3x8e319fSksZi5meC5wcm90b3R5cGU9e3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSwoZi5meC5zdGVwW3RoaXMucHJvcF18fGYuZnguc3RlcC5fZGVmYXVsdCkodGhpcyl9LGN1cjpmdW5jdGlvbigpe2lmKHRoaXMuZWxlbVt0aGlzLnByb3BdIT1udWxsJiYoIXRoaXMuZWxlbS5zdHlsZXx8dGhpcy5lbGVtLnN0eWxlW3RoaXMucHJvcF09PW51bGwpKXJldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXTt2YXIgYSxiPWYuY3NzKHRoaXMuZWxlbSx0aGlzLnByb3ApO3JldHVybiBpc05hTihhPXBhcnNlRmxvYXQoYikpPyFifHxiPT09ImF1dG8iPzA6YjphfSxjdXN0b206ZnVuY3Rpb24oYSxjLGQpe2Z1bmN0aW9uIGgoYSl7cmV0dXJuIGUuc3RlcChhKX12YXIgZT10aGlzLGc9Zi5meDt0aGlzLnN0YXJ0VGltZT1jdHx8Y3UoKSx0aGlzLmVuZD1jLHRoaXMubm93PXRoaXMuc3RhcnQ9YSx0aGlzLnBvcz10aGlzLnN0YXRlPTAsdGhpcy51bml0PWR8fHRoaXMudW5pdHx8KGYuY3NzTnVtYmVyW3RoaXMucHJvcF0/IiI6InB4IiksaC5xdWV1ZT10aGlzLm9wdGlvbnMucXVldWUsaC5lbGVtPXRoaXMuZWxlbSxoLnNhdmVTdGF0ZT1mdW5jdGlvbigpe2Uub3B0aW9ucy5oaWRlJiZmLl9kYXRhKGUuZWxlbSwiZnhzaG93IitlLnByb3ApPT09YiYmZi5fZGF0YShlLmVsZW0sImZ4c2hvdyIrZS5wcm9wLGUuc3RhcnQpfSxoKCkmJmYudGltZXJzLnB1c2goaCkmJiFjciYmKGNyPXNldEludGVydmFsKGcudGljayxnLmludGVydmFsKSl9LHNob3c6ZnVuY3Rpb24oKXt2YXIgYT1mLl9kYXRhKHRoaXMuZWxlbSwiZnhzaG93Iit0aGlzLnByb3ApO3RoaXMub3B0aW9ucy5vcmlnW3RoaXMucHJvcF09YXx8Zi5zdHlsZSh0aGlzLmVsZW0sdGhpcy5wcm9wKSx0aGlzLm9wdGlvbnMuc2hvdz0hMCxhIT09Yj90aGlzLmN1c3RvbSh0aGlzLmN1cigpLGEpOnRoaXMuY3VzdG9tKHRoaXMucHJvcD09PSJ3aWR0aCJ8fHRoaXMucHJvcD09PSJoZWlnaHQiPzE6MCx0aGlzLmN1cigpKSxmKHRoaXMuZWxlbSkuc2hvdygpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1mLl9kYXRhKHRoaXMuZWxlbSwiZnhzaG93Iit0aGlzLnByb3ApfHxmLnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3ApLHRoaXMub3B0aW9ucy5oaWRlPSEwLHRoaXMuY3VzdG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9Y3R8fGN1KCksZz0hMCxoPXRoaXMuZWxlbSxpPXRoaXMub3B0aW9ucztpZihhfHxlPj1pLmR1cmF0aW9uK3RoaXMuc3RhcnRUaW1lKXt0aGlzLm5vdz10aGlzLmVuZCx0aGlzLnBvcz10aGlzLnN0YXRlPTEsdGhpcy51cGRhdGUoKSxpLmFuaW1hdGVkUHJvcGVydGllc1t0aGlzLnByb3BdPSEwO2ZvcihiIGluIGkuYW5pbWF0ZWRQcm9wZXJ0aWVzKWkuYW5pbWF0ZWRQcm9wZXJ0aWVzW2JdIT09ITAmJihnPSExKTtpZihnKXtpLm92ZXJmbG93IT1udWxsJiYhZi5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3MmJmYuZWFjaChbIiIsIlgiLCJZIl0sZnVuY3Rpb24oYSxiKXtoLnN0eWxlWyJvdmVyZmxvdyIrYl09aS5vdmVyZmxvd1thXX0pLGkuaGlkZSYmZihoKS5oaWRlKCk7aWYoaS5oaWRlfHxpLnNob3cpZm9yKGIgaW4gaS5hbmltYXRlZFByb3BlcnRpZXMpZi5zdHlsZShoLGIsaS5vcmlnW2JdKSxmLnJlbW92ZURhdGEoaCwiZnhzaG93IitiLCEwKSxmLnJlbW92ZURhdGEoaCwidG9nZ2xlIitiLCEwKTtkPWkuY29tcGxldGUsZCYmKGkuY29tcGxldGU9ITEsZC5jYWxsKGgpKX1yZXR1cm4hMX1pLmR1cmF0aW9uPT1JbmZpbml0eT90aGlzLm5vdz1lOihjPWUtdGhpcy5zdGFydFRpbWUsdGhpcy5zdGF0ZT1jL2kuZHVyYXRpb24sdGhpcy5wb3M9Zi5lYXNpbmdbaS5hbmltYXRlZFByb3BlcnRpZXNbdGhpcy5wcm9wXV0odGhpcy5zdGF0ZSxjLDAsMSxpLmR1cmF0aW9uKSx0aGlzLm5vdz10aGlzLnN0YXJ0Kyh0aGlzLmVuZC10aGlzLnN0YXJ0KSp0aGlzLnBvcyksdGhpcy51cGRhdGUoKTtyZXR1cm4hMH19LGYuZXh0ZW5kKGYuZngse3RpY2s6ZnVuY3Rpb24oKXt2YXIgYSxiPWYudGltZXJzLGM9MDtmb3IoO2M8Yi5sZW5ndGg7YysrKWE9YltjXSwhYSgpJiZiW2NdPT09YSYmYi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxmLmZ4LnN0b3AoKX0saW50ZXJ2YWw6MTMsc3RvcDpmdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoY3IpLGNyPW51bGx9LHNwZWVkczp7c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxzdGVwOntvcGFjaXR5OmZ1bmN0aW9uKGEpe2Yuc3R5bGUoYS5lbGVtLCJvcGFjaXR5IixhLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe2EuZWxlbS5zdHlsZSYmYS5lbGVtLnN0eWxlW2EucHJvcF0hPW51bGw/YS5lbGVtLnN0eWxlW2EucHJvcF09YS5ub3crYS51bml0OmEuZWxlbVthLnByb3BdPWEubm93fX19KSxmLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7Zi5meC5zdGVwW2JdPWZ1bmN0aW9uKGEpe2Yuc3R5bGUoYS5lbGVtLGIsTWF0aC5tYXgoMCxhLm5vdykpfX0pLGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gZi5ncmVwKGYudGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofSk7dmFyIGN5PS9edCg/OmFibGV8ZHxoKSQvaSxjej0vXig/OmJvZHl8aHRtbCkkL2k7ImdldEJvdW5kaW5nQ2xpZW50UmVjdCJpbiBjLmRvY3VtZW50RWxlbWVudD9mLmZuLm9mZnNldD1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdLGM7aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Yub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGYub2Zmc2V0LmJvZHlPZmZzZXQoYik7dHJ5e2M9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChkKXt9dmFyIGU9Yi5vd25lckRvY3VtZW50LGc9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoIWN8fCFmLmNvbnRhaW5zKGcsYikpcmV0dXJuIGM/e3RvcDpjLnRvcCxsZWZ0OmMubGVmdH06e3RvcDowLGxlZnQ6MH07dmFyIGg9ZS5ib2R5LGk9Y0EoZSksaj1nLmNsaWVudFRvcHx8aC5jbGllbnRUb3B8fDAsaz1nLmNsaWVudExlZnR8fGguY2xpZW50TGVmdHx8MCxsPWkucGFnZVlPZmZzZXR8fGYuc3VwcG9ydC5ib3hNb2RlbCYmZy5zY3JvbGxUb3B8fGguc2Nyb2xsVG9wLG09aS5wYWdlWE9mZnNldHx8Zi5zdXBwb3J0LmJveE1vZGVsJiZnLnNjcm9sbExlZnR8fGguc2Nyb2xsTGVmdCxuPWMudG9wK2wtaixvPWMubGVmdCttLWs7cmV0dXJue3RvcDpuLGxlZnQ6b319OmYuZm4ub2Zmc2V0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF07aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Yub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGYub2Zmc2V0LmJvZHlPZmZzZXQoYik7dmFyIGMsZD1iLm9mZnNldFBhcmVudCxlPWIsZz1iLm93bmVyRG9jdW1lbnQsaD1nLmRvY3VtZW50RWxlbWVudCxpPWcuYm9keSxqPWcuZGVmYXVsdFZpZXcsaz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGw9Yi5vZmZzZXRUb3AsbT1iLm9mZnNldExlZnQ7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYmYiE9PWkmJmIhPT1oKXtpZihmLnN1cHBvcnQuZml4ZWRQb3NpdGlvbiYmay5wb3NpdGlvbj09PSJmaXhlZCIpYnJlYWs7Yz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGwtPWIuc2Nyb2xsVG9wLG0tPWIuc2Nyb2xsTGVmdCxiPT09ZCYmKGwrPWIub2Zmc2V0VG9wLG0rPWIub2Zmc2V0TGVmdCxmLnN1cHBvcnQuZG9lc05vdEFkZEJvcmRlciYmKCFmLnN1cHBvcnQuZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHN8fCFjeS50ZXN0KGIubm9kZU5hbWUpKSYmKGwrPXBhcnNlRmxvYXQoYy5ib3JkZXJUb3BXaWR0aCl8fDAsbSs9cGFyc2VGbG9hdChjLmJvcmRlckxlZnRXaWR0aCl8fDApLGU9ZCxkPWIub2Zmc2V0UGFyZW50KSxmLnN1cHBvcnQuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlJiZjLm92ZXJmbG93IT09InZpc2libGUiJiYobCs9cGFyc2VGbG9hdChjLmJvcmRlclRvcFdpZHRoKXx8MCxtKz1wYXJzZUZsb2F0KGMuYm9yZGVyTGVmdFdpZHRoKXx8MCksaz1jfWlmKGsucG9zaXRpb249PT0icmVsYXRpdmUifHxrLnBvc2l0aW9uPT09InN0YXRpYyIpbCs9aS5vZmZzZXRUb3AsbSs9aS5vZmZzZXRMZWZ0O2Yuc3VwcG9ydC5maXhlZFBvc2l0aW9uJiZrLnBvc2l0aW9uPT09ImZpeGVkIiYmKGwrPU1hdGgubWF4KGguc2Nyb2xsVG9wLGkuc2Nyb2xsVG9wKSxtKz1NYXRoLm1heChoLnNjcm9sbExlZnQsaS5zY3JvbGxMZWZ0KSk7cmV0dXJue3RvcDpsLGxlZnQ6bX19LGYub2Zmc2V0PXtib2R5T2Zmc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEub2Zmc2V0VG9wLGM9YS5vZmZzZXRMZWZ0O2Yuc3VwcG9ydC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCYmKGIrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGMrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCk7cmV0dXJue3RvcDpiLGxlZnQ6Y319LHNldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Zi5jc3MoYSwicG9zaXRpb24iKTtkPT09InN0YXRpYyImJihhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciBlPWYoYSksZz1lLm9mZnNldCgpLGg9Zi5jc3MoYSwidG9wIiksaT1mLmNzcyhhLCJsZWZ0Iiksaj0oZD09PSJhYnNvbHV0ZSJ8fGQ9PT0iZml4ZWQiKSYmZi5pbkFycmF5KCJhdXRvIixbaCxpXSk+LTEsaz17fSxsPXt9LG0sbjtqPyhsPWUucG9zaXRpb24oKSxtPWwudG9wLG49bC5sZWZ0KToobT1wYXJzZUZsb2F0KGgpfHwwLG49cGFyc2VGbG9hdChpKXx8MCksZi5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGcpKSxiLnRvcCE9bnVsbCYmKGsudG9wPWIudG9wLWcudG9wK20pLGIubGVmdCE9bnVsbCYmKGsubGVmdD1iLmxlZnQtZy5sZWZ0K24pLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGspOmUuY3NzKGspfX0sZi5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pcmV0dXJuIG51bGw7dmFyIGE9dGhpc1swXSxiPXRoaXMub2Zmc2V0UGFyZW50KCksYz10aGlzLm9mZnNldCgpLGQ9Y3oudGVzdChiWzBdLm5vZGVOYW1lKT97dG9wOjAsbGVmdDowfTpiLm9mZnNldCgpO2MudG9wLT1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjLmxlZnQtPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCxkLnRvcCs9cGFyc2VGbG9hdChmLmNzcyhiWzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxkLmxlZnQrPXBhcnNlRmxvYXQoZi5jc3MoYlswXSwiYm9yZGVyTGVmdFdpZHRoIikpfHwwO3JldHVybnt0b3A6Yy50b3AtZC50b3AsbGVmdDpjLmxlZnQtZC5sZWZ0fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fGMuYm9keTt3aGlsZShhJiYhY3oudGVzdChhLm5vZGVOYW1lKSYmZi5jc3MoYSwicG9zaXRpb24iKT09PSJzdGF0aWMiKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF9KX19KSxmLmVhY2goWyJMZWZ0IiwiVG9wIl0sZnVuY3Rpb24oYSxjKXt2YXIgZD0ic2Nyb2xsIitjO2YuZm5bZF09ZnVuY3Rpb24oYyl7dmFyIGUsZztpZihjPT09Yil7ZT10aGlzWzBdO2lmKCFlKXJldHVybiBudWxsO2c9Y0EoZSk7cmV0dXJuIGc/InBhZ2VYT2Zmc2V0ImluIGc/Z1thPyJwYWdlWU9mZnNldCI6InBhZ2VYT2Zmc2V0Il06Zi5zdXBwb3J0LmJveE1vZGVsJiZnLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXXx8Zy5kb2N1bWVudC5ib2R5W2RdOmVbZF19cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2c9Y0EodGhpcyksZz9nLnNjcm9sbFRvKGE/ZihnKS5zY3JvbGxMZWZ0KCk6YyxhP2M6ZihnKS5zY3JvbGxUb3AoKSk6dGhpc1tkXT1jfSl9fSksZi5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihhLGMpe3ZhciBkPWMudG9Mb3dlckNhc2UoKTtmLmZuWyJpbm5lciIrY109ZnVuY3Rpb24oKXt2YXIgYT10aGlzWzBdO3JldHVybiBhP2Euc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhhLGQsInBhZGRpbmciKSk6dGhpc1tkXSgpOm51bGx9LGYuZm5bIm91dGVyIitjXT1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdO3JldHVybiBiP2Iuc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhiLGQsYT8ibWFyZ2luIjoiYm9yZGVyIikpOnRoaXNbZF0oKTpudWxsfSxmLmZuW2RdPWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXNbMF07aWYoIWUpcmV0dXJuIGE9PW51bGw/bnVsbDp0aGlzO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyk7Y1tkXShhLmNhbGwodGhpcyxiLGNbZF0oKSkpfSk7aWYoZi5pc1dpbmRvdyhlKSl7dmFyIGc9ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10saD1lLmRvY3VtZW50LmJvZHk7cmV0dXJuIGUuZG9jdW1lbnQuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IiYmZ3x8aCYmaFsiY2xpZW50IitjXXx8Z31pZihlLm5vZGVUeXBlPT09OSlyZXR1cm4gTWF0aC5tYXgoZS5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10sZS5ib2R5WyJzY3JvbGwiK2NdLGUuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK2NdLGUuYm9keVsib2Zmc2V0IitjXSxlLmRvY3VtZW50RWxlbWVudFsib2Zmc2V0IitjXSk7aWYoYT09PWIpe3ZhciBpPWYuY3NzKGUsZCksaj1wYXJzZUZsb2F0KGkpO3JldHVybiBmLmlzTnVtZXJpYyhqKT9qOml9cmV0dXJuIHRoaXMuY3NzKGQsdHlwZW9mIGE9PSJzdHJpbmciP2E6YSsicHgiKX19KSxhLmpRdWVyeT1hLiQ9Zn0pKHdpbmRvdyk7'></script>



	<script id=script_head>
		var myb64=new Array();
		var myb64_js=new Array();
		var myb64_png=new Array();
		var myb64_jpg=new Array();
		var myb64_pdf=new Array();
		var myb64_csv=new Array();
		var myb64_psv=new Array();
		var mylinks=new Array();
		</script>


<style type="text/css">
	.exampleserif {font-family: Times, "Times New Roman", Georgia, serif;}
	.examplesansserif {font-family: Verdana, Arial, Helvetica, sans-serif;}
	.examplemonospace {font-family: "Lucida Console", Courier, monospace;}
	.examplecursive {font-family: cursive;}
	.examplefantasy {font-family: fantasy;}
	.exampleyokkmokk {font-family: yokkmokkOT; font-size:38pt;}
	.exampleyokkmokk_small {font-family: yokkmokkOT_file; font-size:20pt;}
	.exampleyokkmokk_file {font-family: yokkmokkOT_file; font-size:50pt;}
	</style>





<style id="popups">
	/*HOVER POPUP LINKS*/
	/*hoverpopups type 1*/

	#popup { color: #000; background-color: #c0c0c0; }

	#popup a, #popup a:visited {
		position: relative;
		display: block;
		width: 130px;
		line-height: 30px;
		text-align: right;
		padding: 0 10px;
		margin: 0;
		border: 1px solid #666;
		text-decoration: none;
		font-size: 1em;
		font-weight: bold;
		}

	#popup a span {display: none;}
	#popup a:hover { background-color: #e9e9e2; }

/* the IE correction rule */
	#popup a:hover	{color: #f00; background-color: #e9e9e2; text-indent: 0; /* added the default value */
	#popup a:hover span {
		display: block;
		position: absolute;
		top: 0px;
		left: 170px;
		width: 320px;
		margin: 0px;
		padding: 10px;
		color: #335500;
		font-weight: normal;
		background: #e5e5e5;
		text-align: left;
		border: 1px solid #666;
		}

	</style>



	<style id="style_popover" >
		.popover  {
			position: relative;
			float: left;
			padding: 5px;
			/*z-index: 0;*/
			}
		.popover:hover {
			background-color: slategrey;
//			background-color: #e9e9e2;
			/*z-index: 50;*/
			color: goldenrod;
//			color: #335500;
			text-decoration: none;
			}
/*CSS for enlarged image*/
		.popover span { 
			position: absolute; 
//			background-color: #e5e5e5;
			background-color: slategrey;
			padding: 5px;
			/*left: -1000px;*/
			border: 1px solid #666;
			visibility: hidden;
			color: black;
			text-decoration: none;
			}
/*CSS for enlarged image*/
		.popover span img { 
			border-width: 0px; 
			/*padding: 2px;*/
			}
		
/*CSS for enlarged image on hover*/
		.popover:hover span { 
			visibility: visible; 
//			width: 200px;
			top: 5px; /* use IF IE6 style to correct IE6 positions of larger image relative to thumb */
			left: 5px;/*position where enlarged image should offset horizontally */
			}
		</style>


	<style>
		.thumbnail  {
			position: relative;
			float: left;
			padding: 5px;
			/*z-index: 0;*/
			}

		.thumbnail:hover {
			background-color: #e9e9e2;
			/*z-index: 50;*/
			color: #335500;
			text-decoration: none;
			}

		.thumbnail span { /*CSS for enlarged image*/
			position: absolute; 
			background-color: #e5e5e5;
			padding: 5px;
			/*left: -1000px;*/
			border: 1px solid #666;
			visibility: hidden;
			color: black;
			text-decoration: none;
				}

		.thumbnail span img { /*CSS for enlarged image*/
			border-width: 0px; 
			/*padding: 2px;*/
		}
		
		.thumbnail:hover span { /*CSS for enlarged image on hover*/
			visibility: visible; 
			width: 200px;
			top: 5px; /* use IF IE6 style to correct IE6 positions of larger image relative to thumb */
			left: 300px;/*position where enlarged image should offset horizontally */
		}
		
		/*THUMBNAIL2 - thumbnail2 has border and border on hover*/
		
		.thumbnail2 {
			position: relative;
			float: left;
			padding: 5px;
			/*z-index: 0;*/
		}
		
		.thumbnail2:hover { 
			background-color: #e9e9e2;
			/*z-index: 50;*/
			color: #335500;
			text-decoration: none;
		}
		
		.thumbnail2 span { /*CSS for enlarged image*/
			position: absolute;
			background-color: #e5e5e5;
			padding: 5px;
			/*left: -1000px;*/
			border: 1px solid #666;
			visibility: hidden;
			color: black;
			text-decoration: none;
		}
		
		.thumbnail2 span img { /*CSS for enlarged image*/
			border-width: 0px;
			/*padding: 2px;*/
		}
		
		.thumbnail2:hover span { /*CSS for enlarged image on hover*/
			visibility: visible; width: 208px;
			top: 5px; /* use IF IE6 style to correct IE6 positions of larger image relative to thumb */
			left: 300px;/*position where enlarged image should offset horizontally */
		}
		
		a.thumbnail2 img { 
			text-decoration:none;
			z-index: 50; 
		}
		
		/*if same attribute for all 4 states, then declare here in
		a.thumbnail2*/ 
		
		a.thumbnail2 img:link { 
			border: 2px solid #e9e9e2; 
			background: transparent; 
		}
		
		a.thumbnail2 img:visited { 
			border: 2px solid #e9e9e2; 
			background : transparent; 
		}
		
		a.thumbnail2 img:hover { 
			border: 2px solid #f00; 
			background : transparent; 
		}
		
		a.thumbnail2 img:active { 
			border: 2px solid #e9e9e2; 
			background : transparent; 
		}
		
		a.thumbnail2 img { 
			border: 2px solid #e9e9e2; 
			}
		
		/*end of hover popup links*/
		
		</style>
		
		<script id="script_fileexists">
			function html_error() {
				document.write("<hr><h1>ERR_206</h1><hr>");
				exit();
				}
			function myfileexists(myfilename) {
				var fs = require('fs'),
				filename = process.args[2];
				filename = "index.png";
				fs.exists(filename, function(exists) {
				if (exists) {
					fs.stat(filename, function(err, stats) { 
					if (stats.isDirectory()) {
//						console.log(filename + ": is a directory");
						document.write(filename + ": is a directory");
						} 
					else {
        // do something with file
//						console.log(filename);
						document.write(filename);
						}
					});
					} 
				else {
//					console.log(filename + ": no such file");
					document.write(filename + ": disabled<hr><hr><hr><hr><hr><hr><hr>");
					html_error();
					}
				});

			</script id=script_fileexists_end>





		<script id=index_js_terminal>
//	var util = util || {};
//	util.toArray = function(list) {
//			return Array.prototype.slice.call(list || [], 0);
//			};

	var Terminal = Terminal || function(cmdLineContainer, outputContainer) {
	window.URL = window.URL || window.webkitURL;
	window.requestFileSystem = window.requestFileSystem ||
                             window.webkitRequestFileSystem;

	var cmdLine_ = document.querySelector(cmdLineContainer);
	var output_ = document.querySelector(outputContainer);
	const VERSION_ = '0.0.1';

	const CMDS_ = [
		'\.', '\.\.', '\:', '/', '\?', '+', '-', '\$', '\^', '\`', char(27), 
		'n', 'i', 'o', 'a', 'I', 'O', 'A', 'h', 
		'go', 'go1', 'ok', 'ok1',
		'cat', 'cd', 'cp', 'clear', 'date', 'help', 'ls', 'mkdir', 'mv', 'open',
		'pwd', 'rm', 'rmdir', 'theme', 'version', 'who'
		];

	const THEMES_ = ['default', 'cream'];
		var fs_ = null;
		var cwd_ = null;
		var history_ = [];
		var histpos_ = 0;
		var histtemp_ = 0;

		window.addEventListener('click', function(e) {
			cmdLine_.focus();
			}, false);

// Always force text cursor to end of input line.
		cmdLine_.addEventListener('click', inputTextClick_, false);

// Handle up/down key presses for shell history and enter for new command.
		cmdLine_.addEventListener('keydown', historyHandler_, false);
		cmdLine_.addEventListener('keydown', processNewCommand_, false);

	function inputTextClick_(e) {
		this.value = this.value;
		}

	function historyHandler_(e) { // Tab needs to be keydown.

		if (history_.length) {
			if (e.keyCode == 38 || e.keyCode == 40) {
				if (history_[histpos_]) {
					history_[histpos_] = this.value;
					} 
				else {
					histtemp_ = this.value;
					}
				}

		if (e.keyCode == 38) { // up
			histpos_--;
			if (histpos_ < 0) {
				histpos_ = 0;
				}
			} 
		else if (e.keyCode == 40) { // down
			histpos_++;
			if (histpos_ > history_.length) {
				histpos_ = history_.length;
				}
			}

		if (e.keyCode == 38 || e.keyCode == 40) {
			this.value = history_[histpos_] ? history_[histpos_] : histtemp_;
			this.value = this.value; // Sets cursor to end of input.
			}
		}
	}

		function processNewCommand_(e) {
			if (e.keyCode == 9) { // tab
				e.preventDefault();
// TODO(ericbidelman): Implement tab suggest.
				} else if (e.keyCode == 13) { // enter

// Save shell history.
			if (this.value) {
				history_[history_.length] = this.value;
				histpos_ = history_.length;
				}


// Duplicate current input and append to output section.
			var line = this.parentNode.parentNode.cloneNode(true);
			line.removeAttribute('id')
			line.classList.add('line');
			var input = line.querySelector('input.cmdline');
			input.autofocus = false;
			input.readOnly = true;
			output_.appendChild(line);

// Parse out command, args, and trim off whitespace.
// TODO(ericbidelman): Support multiple comma separated commands.
			if (this.value && this.value.trim()) {
				var args = this.value.split(' ').filter(function(val, i) {
					return val;
					});
				var cmd = args[0].toLowerCase();
			args = args.splice(1); // Remove cmd from arg list.
				}

			switch (cmd) {
				case 'cat':
					var fileName = args.join(' ');

					if (!fileName) {
						output('usage: ' + cmd + ' filename');
						break;
						}

					read_(cmd, fileName, function(result) {
					output('<pre>' + result + '</pre>');
					});

					break;
				case 'clear':
					output_.innerHTML = '';
					this.value = '';
					return;
				case 'date':
					output((new Date()).toLocaleString());
					break;
				case '.':
					script_dd_new();
					break;
				case '..':
					script_dd_new();
					break;
				case 'help':
					output('<div class="ls-files">' + CMDS_.join('<br>') + '</div>');
<!--					output('<p>drag</p>');	-->
					break;
				case 'ls':
					ls_(function(entries) {
					if (entries.length) {
						var html = formatColumns_(entries);
						util.toArray(entries).forEach(function(entry, i) {
							html.push(
							'<span class="', entry.isDirectory ? 'folder' : 'file',
							'">', entry.name, '</span><br>');
							});
						html.push('</div>');
						output(html.join(''));
						}
					});
					break;
				case 'pwd':
					output(cwd_.fullPath);
					break;
				case 'cd':
					var dest = args.join(' ') || '/';

					cwd_.getDirectory(dest, {}, function(dirEntry) {
						cwd_ = dirEntry;
						output('<div>' + dirEntry.fullPath + '</div>');
						}, function(e) { invalidOpForEntryType_(e, cmd, dest); });

					break;
				case 'mkdir':
					var dashP = false;
					var index = args.indexOf('-p');
					if (index != -1) {
						args.splice(index, 1);
						dashP = true;
						}

					if (!args.length) {
						output('usage: ' + cmd + ' [-p] directory<br>');
						break;
						}

// Create each directory passed as an argument.
				args.forEach(function(dirName, i) {
					if (dashP) {
						var folders = dirName.split('/');

// Throw out './' or '/' if present on the beginning of our path.
						if (folders[0] == '.' || folders[0] == '') {
							folders = folders.slice(1);
							}

						createDir_(cwd_, folders);
						} 
					else {
						cwd_.getDirectory(dirName, {create: true, exclusive: true}, null,
						function(e) { invalidOpForEntryType_(e, cmd, dirName); });
						}
					});
					break;

				case 'cp':
				case 'mv':
					var src = args[0];
					var dest = args[1];

					if (!src || !dest) {
						output(['usage: ', cmd, ' source target<br>',
						'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', cmd,
						' source directory/'].join(''));
						break;
						}

						var runAction = function(cmd, srcDirEntry, destDirEntry, opt_newName) {
						var newName = opt_newName || null;
						if (cmd == 'mv') {
							srcDirEntry.moveTo(destDirEntry, newName, function(e) {
// UNIX doesn't display output on successful move.
							}, function(e) {
								errorHandler_(e);
								});
							} 
						else {
							srcDirEntry.copyTo(destDirEntry, newName, function(e) {
// UNIX doesn't display output on successful copy.
								}, function(e) {
									errorHandler_(e);
								});
							}
						};

// Moving to a folder? (e.g. second arg ends in '/').
					if (dest[dest.length - 1] == '/') {
						cwd_.getDirectory(src, {}, function(srcDirEntry) {
// Create blacklist for dirs we can't re-create.
							var create = [
								'.', './', '..', '../', '/'].indexOf(dest) != -1 ? false : true;

							cwd_.getDirectory(dest, {create: create}, function(destDirEntry) {
								runAction(cmd, srcDirEntry, destDirEntry);
								}, errorHandler_);
							}, function(e) {
// Try the src entry as a file instead.
								cwd_.getFile(src, {}, function(srcDirEntry) {
									cwd_.getDirectory(dest, {}, function(destDirEntry) {
									runAction(cmd, srcDirEntry, destDirEntry);
									}, errorHandler_);
								}, errorHandler_);
							});
						} 
					else { // Treat src/destination as files.
						cwd_.getFile(src, {}, function(srcFileEntry) {
							srcFileEntry.getParent(function(parentDirEntry) {
							runAction(cmd, srcFileEntry, parentDirEntry, dest);
							}, errorHandler_);
						}, errorHandler_);
					}

					break;



				case 'open':
					var fileName = args.join(' ');

					if (!fileName) {
						output('usage: ' + cmd + ' filename');
						break;
						}

					open_(cmd, fileName, function(fileEntry) {
						var myWin = window.open(fileEntry.toURL(), 'mywin');
						});

					break;

				case 'rm':
// Remove recursively? If so, remove the flag(s) from the arg list.
					var recursive = false;
					['-r', '-f', '-rf', '-fr'].forEach(function(arg, i) {
						var index = args.indexOf(arg);
						if (index != -1) {
							args.splice(index, 1);
							recursive = true;
							}
						});

// Remove each file passed as an argument.
					args.forEach(function(fileName, i) {
						cwd_.getFile(fileName, {}, function(fileEntry) {
							fileEntry.remove(function() {}, errorHandler_);
							}, function(e) {
								if (recursive && e.code == FileError.TYPE_MISMATCH_ERR) {
									cwd_.getDirectory(fileName, {}, function(dirEntry) {
										dirEntry.removeRecursively(function() {}, errorHandler_);
										}, errorHandler_);
									} 
								else if (e.code == FileError.INVALID_STATE_ERR) {
									output(cmd + ': ' + fileName + ': is a directory<br>');
									} 
								else {
									errorHandler_(e);
									}
								});
							});
						break;

				case 'rmdir':
// Remove each directory passed as an argument.
					args.forEach(function(dirName, i) {
						cwd_.getDirectory(dirName, {}, function(dirEntry) {
							dirEntry.remove(function() {}, function(e) {
								if (e.code == FileError.INVALID_MODIFICATION_ERR) {
									output(cmd + ': ' + dirName + ': Directory not empty<br>');
									} 
								else {
									errorHandler_(e);
									}
								});
							}, function(e) { invalidOpForEntryType_(e, cmd, dirName); });
						});
					break;
				case 'theme':
					var theme = args.join(' ');
					if (!theme) {
						output(['usage: ', cmd, ' ' + THEMES_.join('|')].join(''));
						} 
					else {
						var matchedThemes = THEMES_.join('|').match(theme);
						if (matchedThemes && matchedThemes.length) {
							setTheme_(theme);
							} 
						else {
							output('Error - Unrecognized theme used');
							}
						}
					break;
				case 'version':
				case 'ver':
					output(VERSION_);
					break;
				case 'who':
					output(document.title +
					' - By: Eric Bidelman &lt;ericbidelman@chromium.org&gt;');
					break;
					break;
				default:
					if (cmd) {
						output(cmd + ': command not found');
						}
					};

				window.scrollTo(0, getDocHeight_());
				this.value = ''; // Clear/setup line for next input.
				}
			}


		function formatColumns_(entries) {
			var maxName = entries[0].name;
			util.toArray(entries).forEach(function(entry, i) {
				if (entry.name.length > maxName.length) {
					maxName = entry.name;
					}
				});

// If we have 3 or less entires, shorten the output container's height.
// 15 is the pixel height with a monospace font-size of 12px;
			var height = entries.length <= 3 ?
			'height: ' + (entries.length * 15) + 'px;' : '';

// 12px monospace font yields ~7px screen width.
			var colWidth = maxName.length * 7;

			return ['<div class="ls-files" style="-webkit-column-width:',
			colWidth, 'px;', height, '">'];
			}

		function invalidOpForEntryType_(e, cmd, dest) {
			if (e.code == FileError.NOT_FOUND_ERR) {
				output(cmd + ': ' + dest + ': No such file or directory<br>');
				} 
			else if (e.code == FileError.INVALID_STATE_ERR) {
				output(cmd + ': ' + dest + ': Not a directory<br>');
				} 
			else if (e.code == FileError.INVALID_MODIFICATION_ERR) {
				output(cmd + ': ' + dest + ': File already exists<br>');
				} 
			else {
				errorHandler_(e);
				}
			}


		function errorHandler_(e) {
			var msg = '';
			switch (e.code) {
				case FileError.QUOTA_EXCEEDED_ERR:
					msg = 'QUOTA_EXCEEDED_ERR';
					break;
				case FileError.NOT_FOUND_ERR:
					msg = 'NOT_FOUND_ERR';
					break;
				case FileError.SECURITY_ERR:
					msg = 'SECURITY_ERR';
					break;
				case FileError.INVALID_MODIFICATION_ERR:
					msg = 'INVALID_MODIFICATION_ERR';
					break;
				case FileError.INVALID_STATE_ERR:
					msg = 'INVALID_STATE_ERR';
					break;
				default:
					msg = 'Unknown Error';
					break;
					};
				output('<div>Error: ' + msg + '</div>');
				}


		function createDir_(rootDirEntry, folders, opt_errorCallback) {
			var errorCallback = opt_errorCallback || errorHandler_;

			rootDirEntry.getDirectory(folders[0], {create: true}, function(dirEntry) {
// Recursively add the new subfolder if we still have a subfolder to create.
				if (folders.length) {
					createDir_(dirEntry, folders.slice(1));
					}
				}, errorCallback);
			}

		function open_(cmd, path, successCallback) {
			if (!fs_) {return;}

			cwd_.getFile(path, {}, successCallback, function(e) {
				if (e.code == FileError.NOT_FOUND_ERR) {
					output(cmd + ': ' + path + ': No such file or directory<br>');
					}
				});
			}

		function read_(cmd, path, successCallback) {
			if (!fs_) {return;}

			cwd_.getFile(path, {}, function(fileEntry) {
				fileEntry.file(function(file) {
					var reader = new FileReader();

					reader.onloadend = function(e) {
						successCallback(this.result);
						};

					reader.readAsText(file);
					}, errorHandler_);
				}, function(e) {
					if (e.code == FileError.INVALID_STATE_ERR) {
						output(cmd + ': ' + path + ': is a directory<br>');
						} 
					else if (e.code == FileError.NOT_FOUND_ERR) {
						output(cmd + ': ' + path + ': No such file or directory<br>');
						}
					});
			}

		function ls_(successCallback) {
			if (!fs_) {return;}

// Read contents of current working directory. According to spec, need to
// keep calling readEntries() until length of result array is 0. We're
// guarenteed the same entry won't be returned again.
			var entries = [];
			var reader = cwd_.createReader();

			var readEntries = function() {
				reader.readEntries(function(results) {
					if (!results.length) {
						successCallback(entries.sort());
						} 
					else {
						entries = entries.concat(util.toArray(results));
						readEntries();
						}
					}, errorHandler_);
				};

			readEntries();
			}

		function setTheme_(theme) {
			var currentUrl = document.location.pathname;

			if (!theme || theme == 'default') {
// history.replaceState({}, '', currentUrl);
				localStorage.removeItem('theme');
				document.body.className = '';
				return;
				}

			if (theme) {
				document.body.classList.add(theme);
				localStorage.theme = theme;
//history.replaceState({}, '', currentUrl + '#theme=' + theme);
				}
			}

		function output(html) {
			output_.insertAdjacentHTML('beforeEnd', html);
			}

// Cross-browser impl to get document's height.
		function getDocHeight_() {
			var d = document;
			return Math.max(
				Math.max(d.body.scrollHeight, d.documentElement.scrollHeight),
				Math.max(d.body.offsetHeight, d.documentElement.offsetHeight),
				Math.max(d.body.clientHeight, d.documentElement.clientHeight)
				);
			}

		return {
			initFS: function(persistent, size) {
			output('<div>ko ' + document.title +
			'! (v' + VERSION_ + ')</div>');
			output((new Date()).toLocaleString());
			output('<p>...</p>');

			if (!!!window.requestFileSystem) {
				output('<div>unauthorized access has been logged! </div>');
				return;
				}

			var type = persistent ? window.PERSISTENT : window.TEMPORARY;
			window.requestFileSystem(type, size, function(filesystem) {
				fs_ = filesystem;
				cwd_ = fs_.root;

// Attempt to create a folder to test if we can.
				cwd_.getDirectory('testquotaforfsfolder', {create: true}, function(dirEntry) {
					dirEntry.remove(function() { // If successfully created, just delete it.
// noop.
						});
					}, function(e) {
						if (e.code == FileError.QUOTA_EXCEEDED_ERR) {
							output('fail: fs unavailable. ' + ' ' + ' ');
							} 
						else {
							errorHandler_(e);
							}
						});

					}, errorHandler_);
				},
			output: output,
			setTheme: setTheme_,
			addDroppedFiles: function(files) {
				util.toArray(files).forEach(function(file, i) {
					cwd_.getFile(file.name, {create: true, exclusive: true}, function(fileEntry) {
						fileEntry.createWriter(function(fileWriter) {
							fileWriter.onerror = function(e) {
								errorHandler_(e.currentTarget.error);
								};
							fileWriter.write(file);
							}, errorHandler_);
						}, errorHandler_);
					});
				}
			}
		};

		</script>


	<script>
		function degToRad(degree) {
			var factor = Math.PI/180;
			return degree*factor;
			}

		function renderTime() {
  
		  var now = new Date();
		  var today = now.toDateString();
		  var time = now.toLocaleTimeString();
		  var hours = now.getHours();
		  var minutes = now.getMinutes();
		  var seconds = now.getSeconds();
		  var milliseconds = now.getMilliseconds();
		  var newSeconds = seconds+ (milliseconds/1000);
		</script>


	<div class="div_offerings" hidden>
		<div class="title"><h3><font size=2>Want to Donate?</font></h3></div>
		<div class="content"><font size=1>To test and donate.
				We suggest $1000.00 but any amount would be most welcome.</font>
		<form action="http://www.paypal.com/cgi-bin/webscr" method="post">
		<table >
				<tr align="center">
				<td>Amount $ <input name="amount" size="3" value="20.00">
				</td>
				</tr>
				<tr align="center">
		<td>
				<input type="hidden" name="cmd" value="_xclick">
				<input type="hidden" name="business" value="ekonet@konet.org">
				<input type="hidden" name="item_name" value="donate money down the toilet to konet llc">
				<input type="hidden" name="notify_url" value="http://konet.org/index.php?ipn">
				<input type="hidden" name="no_shipping" value="1">
				<input type="hidden" name="return" value="http://konet.org//index.php?donation_thanks">
				<input type="hidden" name="currency_code" value="USD">
				<input type="hidden" name="no_note" value="1">
				<input type="hidden" name="lc" value="US">
				<input type="hidden" name="tax" value="0">
				<input type="hidden" name="bn" value="PP-DonationsBF">
				<input type="hidden" name="custom" value="0">
				<input type="image" src="http://konet.org/imgs/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
				</td></tr></table>
				</form>
			</div>
		</div>














	<script id=script_lists>
lists=[];
lists['items']=`
item|id|grp|path|desc|dt|link
item0|id|grp|path|desc|dt|link
item1|id|grp|path|desc|dt|link
item2|id|grp|path|desc|dt|link
item3|id|grp|path|desc|dt|link
item4|id|grp|path|desc|dt|link
`.split('\n');

lists['contacts']=`
item|id|grp|path|desc|dt|link
item0|id|grp|path|desc|dt|link
item1|id|grp|path|desc|dt|link
item2|id|grp|path|desc|dt|link
item3|id|grp|path|desc|dt|link
item4|id|grp|path|desc|dt|link
`.split('\n');

lists['letter']=`
subject: letter
Dear M.:
line1
line2
line3
thank you
jkwii
123-456-7890
jkwii@ko1.us
`.split("\n");

lists['wz']=`
CURSOR_MOVE
RESIZABLE
NO_ALT
SCROLL
TRANSPARENT
VERTICAL
HORIZONTAL
CURSOR_DEFAULT
'.split("\n");



lists['wz_static']=`
CURSOR_MOVE,
 RESIZABLE,
 NO_ALT,
 SCROLL,
 "img_item_1"+TRANSPARENT,
 "img_item_2"+TRANSPARENT,
 "button"+VERTICAL+HORIZONTAL+CURSOR_DEFAULT,
 "cat"+TRANSPARENT,
 "img_item_3",
 "counter",
 "img_item_3"+TRANSPARENT,
 "img_item_4",
 "img_item_5",
 "img_item_6",
 "img_item_7"+TRANSPARENT+COPY+4,
 "img_item_8"+TRANSPARENT,
 "redarrow",
 "reldiv",
 "reldivn4",
 "reldiv2"+TRANSPARENT,
 "reldiv2n4"+TRANSPARENT,
 "reltab",
 "sepline1"+NO_DRAG,
 "skitour"+TRANSPARENT,
 "slidercanvas",
 "smile1"+SCALABLE,
 "thumb"+HORIZONTAL+MAXOFFLEFT+45+MAXOFFRIGHT+45,
 "track"+NO_DRAG,
 "tryit",
`.split("\n");
		</script id=script_lists_end>

	<script id=script_dhtml>
		function dhtml(args) {
			divid="div_dhtml";
			htmout="";

//			wz_len=lists['wz'].length;
//			wz_static_len=lists['wz_static'].length;
//			htmout += "BUGS_101 DHTML divid="+divid+" len="+wz_len+" lists_wz="+lists['wz']+"\n";
//			htmout += "BUGS_102 DHTML divid="+divid+" len="+wz_static_len+" lists_wz_static="+lists['wz_static']+"\n";
			set_dhtmls="";
			list=lists['items'];
			for (j=0; j<list.length; j++) {
				item += lists['items'][j];
				src=item;
				divid="div_item_"+j;
				imgid="img_item_"+j;
				set_dhtmls += "'"+divid+"',";
				set_dhtmls += "'"+imgid+"',";
				htmout += "<div id="+divid+" ";
				htmout += " style=\"";
				htmout += "position: absolute;";
				htmout += "left: 1123px;";
				htmout += "top: 3361px;";
				htmout += "width: 97px;";
				htmout += "height: 41px;";
				htmout += "z-index: 0;";
				htmout += "cursor: move;";
				htmout += "\">";
				htmout += "	<img id="+imgid+" name="+imgid+" src="+src+" width=97 height=41>";
				htmout += "	</div>\n";

// <div id="koIi15v" style="position: absolute; left: 1123px; top: 3361px; width: 97px; height: 41px; z-index: 0; cursor: move;">
//	<img name="koIi15vNI1m6G" src="/imgs/btn/ko.png" width="97" height="41"></div>

				}

			if( document.getElementById('div_wz')) {
				document.getElementById('div_wz').innerHTML=htmout;
				}

			set_dhtmls += "'"+divid+"'";
			set_dhtmls += "'"+imgid+"'";
//			SET_DHTML( set_dhtmls );
			alert(htmout);
			
			return(htmout);
			}
		</script id=script_dhtml_end>
<!--
// BUGS_140				SET_DHTML(CURSOR_MOVE,
 RESIZABLE, NO_ALT, SCROLL, "img_item_1"+TRANSPARENT, "img_item_2"+TRANSPARENT, "button"+VERTICAL+HORIZONTAL+CURSOR_DEFAULT, "cat"+TRANSPARENT, "img_item_3", "counter", "img_item_3"+TRANSPARENT, "img_item_4", "img_item_5", "img_item_6", "img_item_7"+TRANSPARENT+COPY+4, "img_item_8"+TRANSPARENT, "redarrow", "reldiv", "reldivn4", "reldiv2"+TRANSPARENT, "reldiv2n4"+TRANSPARENT, "reltab", "sepline1"+NO_DRAG, "skitour"+TRANSPARENT, "slidercanvas", "smile1"+SCALABLE, "thumb"+HORIZONTAL+MAXOFFLEFT+45+MAXOFFRIGHT+45, "track"+NO_DRAG, "tryit", "upleft");
	-->


	<script id=script_head1>
		function head1(args) {
			alert( "BUGS_110 head1 args="+args );
			}
		function head0(args) {
			txtfil="main.txt";
			divid_main="div_main";
			divid_kojax="div_kojax";
			alert("BUGS_110 head args="+args+" txtfil=+txtfil+" divid_main="+divid_main+" divid_kojax="+div_kojax );
		

			htmout=""; j=0; k=0;
//			if(! document.getElementById(divid_main)) {
//				alert( "BUGS_111 head NOTFOUND divid_main="+divid_main );
//				return("");
//				}
//			if(! document.getElementById(divid_main)) {
//				alert( "BUGS_112 head NOTFOUND divid_kojax="+divid_kojax );
//				return("");
//				}
//			if(! filecheck(txtfil)) {
//				alert( "BUGS_113 head NOTFOUND txtfil="+txtfil );
//				return("");
//				}
//
//			htmout="<div id=div_lists>\n";
//			htmout="	<h1>div_lists</h1>>\n";
//			alert( "BUGS_115 BEFORE kojax_text txtfil="+txtfil );
//			kojax_text=jax(txtfil,'');
//			div_kojax_html=document.getElementById(div_koajax).innerHTML;
//			div_main_html=document.getElementById(div_main).innerHTML;

//			htmout+="<br>\n";
//			htmout+="<div_main>\n";
//			htmout+="<h2>div_main<\h2>\n";
//			htmout+="<h3>20230211_1433<\h3>\n";
//			htmout+="<h2>txtfil="+txtfil+" divid_kojax="+div_kojax+" divid_main="+divid_man+"<h2>\n";
//			htmout+="<hr color=black>\n";
//			htmout+="<hr color=white>\n";
//			htmout+="<h2>kojax_text</h2>\n"
//			htmout+=kojax_text;
//			htmout+="<hr color=white>\n";
//			htmout+="<h2>div_kojax_html</h2>\n"
//			htmout+=div_kojax_html;
//			htmout+="<hr color=white>\n";
//			htmout+="<h2>div_main_html</h2>\n"
//			htmout+=div_main_html;
//			htmout+="<hr color=white>\n";
//			htmout+="<hr color=black>\n";
//			htmout+="	</div id=div_main_end>\n";

			htmout+="<h1>HEAD div_main HEAD</h1>\n";
			if( document.getElementById(div_main)) {
				document.getElementById(div_main).innerHTML=htmout;
				}
//
//			
//			htmout += "<h1>BUGS_11 HEAD args="+args;
//			htmout += "lists_items="+lists['items'];
//			htmout += "lists_letter="+lists['letter'];
//			htmout += "lists_contacts="+lists['contacts'];
//			htmout += "lists_wz="+lists['wz'];
			alert(htmout);
			return(htmout);
			}
		</script id=script_head_end>




	<script id="wz_library" src='data:/text/plain;base64,DQoNCi8vSW50ZWdyYXRlZCB0byBXYWx0ZXIgWm9ybiBodG1sIGxpYnJhcnkNCg0KLy8gZnVuY3Rpb24gZXhlY3V0ZVRlc3Q6IGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9uIGxheWVyT2JqZWN0Lmh0bQ0KZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKXsNCg0KdHJhbnNmb3JtTGF5ZXIgKGRvY3VtZW50LmZvcm1zWzBdLngudmFsdWUsZG9jdW1lbnQuZm9ybXNbMF0ueS52YWx1ZSxkb2N1bWVudC5mb3Jtc1swXS53LnZhbHVlLGRvY3VtZW50LmZvcm1zWzBdLmgudmFsdWUsIkJsb3F1ZSIsMTAwLDEwKTsNCg0KDQp9DQoNCi8vIFVzZXMgV1ogZGh0bWwgbGlicmFyeSB0byBtYWtlIHRpbWVkIHRyYW5zZm9ybWF0aW9ucyBvZiBkaHRtbCwNCi8vIHNvIG1pbmltaXppbmcsIG1heGltaXppbmcgbGF5ZXJzIGNhbiBiZSByYXRoZXIgInNtb290IiBmb3IgdXNlciwNCi8vIHNpbXVsYXRpbmcgd2luZG93cyBvcy4NCg0KLy9GdW5jdGlvbiB0cmFuc2Zvcm1MYXllcg0KLy94LHkgPSBQb3NpdGlvbi4gVG9wIGxlZnQgY29ybmVyIGNvb3JkaW5hdGVzDQovL3csaCA9IFNpemUuIHdpZHRoIGFuZCBoZWlnaHQgb2YgPGRpdj48L2Rpdj4gbGF5ZXINCi8vaWQgPSBpZCBvZiB0aGUgRGl2IChpLmUuOiBpZD0ibXlMYXllciIsIHRoZW4sIHVzZSAibXlMYXllciIsIFdJVEggcXVvdGVzISkNCi8vZHVyYXRpb24gPSBEdXJhdGlvbiwgaW4gbWlsaXNlY29uZHMNCi8vc3RlcHMgPSBUcmFuc2l0aW9uIGludGVydmFscw0KDQpmdW5jdGlvbiB0cmFuc2Zvcm1MYXllciAoeCx5LHcsaCxpZCxkdXJhdGlvbixzdGVwcykgew0KICANCiAgLy9kdXJhdGlvbiBpcyBpbiBzZWNvbmRzDQogIHN0ZXBEdXJhdGlvbiA9IE1hdGgucm91bmQoZHVyYXRpb24vc3RlcHMpIDsgLy8gVmFsdWUgaXMgaW4gbWlsaXNlY29uZHMuDQoNCiAgb2JqID0gZGQuZWxlbWVudHNbaWRdOw0KICANCg0KICAvLyBHZXQgb3JpZ2luYWwgdmFsdWVzOiB4LHkgPSB0b3AgbGVmdCBjb3JuZXI7ICB3LGggPSB3aWR0aCBoZWlnaHQgICANCiAgDQogIHgxID0gb2JqLng7ICANCiAgeTEgPSBvYmoueTsgIA0KICB3MSA9IG9iai53OyAgDQogIGgxID0gb2JqLmg7ICANCg0KDQogIC8vIElmIHZhbHVlcyBub3Qgc2V0LCBvciB6ZXJvLCB3ZSBkbyBub3QgbW9kaWZ5IHRoZW0sIGFuZCB0YWtlIG9yaWdpbmFsIGFzIGZpbmFsIGFzIHdlbGwNCiAgeCA9ICh4KT94OngxOw0KICB5ID0gKHkpP3k6eTE7DQogIHcgPSAodyk/dzp3MTsNCiAgaCA9IChoKT9oOmgxOw0KDQogIC8vIGhvdyBtdWNoIGRvIHdlIG5lZWQgdG8gbW9kaWZ5IG91ciB2YWx1ZXMgZm9yIGVhY2ggc3RlcD8NCiAgLy8gVGhlIFdaIGxpYnJhcnkgbW92ZUJ5IGFuZCByZXNpemVCeSB0YWtlcyB0aGUgZGlmZiB3aXRoIGludmVydGVkIHNpZ24gYXMgZnJvbSBvcmlnaW5hbCBjZSBzY3JpcHQ6DQogIGRpZlggPSAoeCAtIHgxKS9zdGVwczsgIA0KICBkaWZZID0gKHkgLSB5MSkvc3RlcHM7ICANCiAgZGlmVyA9ICh3IC0gdzEpL3N0ZXBzOyAgDQogIGRpZkggPSAoaCAtIGgxKS9zdGVwczsgIA0KICANCiAgDQogIA0KICBpZih0b3AuZGVidWc9PXRydWUpICB3aW5kb3cuYWxlcnQoJ3gxOicreDErJywgeTE6Jyt5MSsnLCB3MTonK3cxKycsIGgxOicraDErJyw8YnI+eDonK3grJywgeTonK3krJywgdzonK3crJywgaDonK2grJywgPGJyPmRpZlg6JytkaWZYKycsIGRpZlk6JytkaWZZKycsIGRpZlc6JytkaWZXKycsIGRpZkg6JytkaWZIKycsPGJyPmR1cmF0aW9uOicrZHVyYXRpb24rJywgPGJyPnN0ZXBzOicrc3RlcHMrJyw8YnI+c3RlcER1cmF0aW9uOicrc3RlcER1cmF0aW9uKycnKTsNCiANCiAgb2JqLm1vdmVCeShkaWZYLGRpZlkpOw0KICBvYmoucmVzaXplQnkoZGlmVyxkaWZIKTsNCg0KICAvL1dlIHRha2Ugb3V0IHRoZSBhbW91bnQgb2YgdGltZSB1c2VkLCBhbmQgYSBzdGVwIGFscmVhZHkgYmVpbmcgZXhlY3V0ZWQNCiAgZHVyYXRpb24gPSAoZHVyYXRpb24gLSBzdGVwRHVyYXRpb24pOw0KICBzdGVwcyAtLTsNCg0KCS8vSWYgdGhlcmUgaXMgYW55IHN0ZXAgbGVmdCwgd2UgZXhlY3V0ZSBhZ2Fpbg0KCWlmKHN0ZXBzPj0wKXsNCgkgc2V0VGltZW91dCgndHJhbnNmb3JtTGF5ZXIoJyt4KycsJyt5KycsJyt3KycsJytoKycsIicraWQrJyIsJytkdXJhdGlvbisnLCcrc3RlcHMrJyknLHN0ZXBEdXJhdGlvbik7DQoJIH0NCiAgLy9JZiBSZXR1cm4uLi4gd2UgY291bGQgc2V0IHNvbWUgYXBpIGhlcmUgYXMgdG8gY2FsbCBhIGZ1bmN0aW9uIHRvIGJlIGV2YWx1YXRlZCBieSB0aGUgamF2YXNjcmlwdCxpZiBzZXQsIG9uIHJldHVybg0KICAvL2ZvciBleGFtcGxlIHRvIGNhbGwgdGhlIGZ1bmN0aW9uIHRoYXQgaGFzIHRvIHBvcHVsYXRlIHRoZSBkaXYgd2l0aCBjb250ZW50DQogIC8vYnV0IFdaIGhhcyBhbHJlYWR5IHRob3VnaHQgb24gaXQgOi0pDQogIHJldHVybjsNCg0KfQ0KDQo='></script>


	<script id="wz_dragdrop" 
	src='data:/text/plain;base64,LyogVGhpcyBub3RpY2UgbXVzdCBiZSB1bnRvdWNoZWQgYXQgYWxsIHRpbWVzLCBhbmQgbXVzdCBub3QgYmUgcmVtb3ZlZC4KCnd6X2RyYWdkcm9wLmpzCXYuIDQuOTEKVGhlIGxhdGVzdCB2ZXJzaW9uIGlzIGF2YWlsYWJsZSBhdApodHRwOi8vd3d3LndhbHRlcnpvcm4uY29tCm9yIGh0dHA6Ly93d3cuZGV2aXJhLmNvbQpvciBodHRwOi8vd3d3LndhbHRlcnpvcm4uZGUKCkNvcHlyaWdodCAoYykgV2FsdGVyIFpvcm4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkNyZWF0ZWQgMjYuIDguIDIwMDIgYnkgV2FsdGVyIFpvcm4gKFdlYjogaHR0cDovL3d3dy53YWx0ZXJ6b3JuLmNvbSApCkxhc3QgbW9kaWZpZWQ6IDEwLjEwLjIwMDgKClRoaXMgREhUTUwgJiBEcmFnJkRyb3AgTGlicmFyeSBhZGRzIERyYWcmRHJvcCBmdW5jdGlvbmFsaXR5IHRvOgotIGltYWdlcywgZXZlbiB0aG9zZSBub3QgcG9zaXRpb25lZCB2aWEgbGF5ZXJzLAogIG5vciB2aWEgc3R5bGVzaGVldHMgb3IgYW55IG90aGVyIGtpbmQgb2YgImhhcmQtY29kaW5nIjsKLSByZWxhdGl2ZWx5IGFuZCBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgbGF5ZXJzIChESVYgZWxlbWVudHMpLgpNb3Jlb3ZlciwgaXQgcHJvdmlkZXMgZXh0ZW5kZWQgREhUTUwgY2FwYWJpbGl0aWVzLgoKTElDRU5TRTogTEdQTAoKVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgptb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkxpY2Vuc2UgKExHUEwpIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgpUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgoKRm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLApzZWUgaHR0cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0L2xlc3Nlci5odG1sCiovCgoKLy8gUEFUSCBUTyBUSEUgVFJBTlNQQVJFTlQgMSoxIFBYIElNQUdFIChyZXF1aXJlZCBieSBOUyA0IGFzIHNwYWNlcikKdmFyIHNwYWNlciA9ICd0cmFuc3BhcmVudHBpeGVsLmdpZic7CgoKCgovL3dpbmRvdy5vbmVycm9yID0gbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdHJ1ZTsnKTsKCgovLyBPcHRpb25hbCBjb21tYW5kcyBwYXNzZWQgdG8gU0VUX0RIVE1MKCkgb24gdGhlIGh0bWwtcGFnZSAoZzogbWF5IGJlIGFwcGxpZWQgZ2xvYmFsbHksIGk6IGluZGl2aWR1YWxseSkKdmFyIENMT05FCQkJPSAnQzEwbkUnOyAgIC8vIGkgIGltZwkgIGNsb25lIGltYWdlCnZhciBDT1BZCQkJPSAnQzBwWSc7CS8vIGkgIGltZwkgIGNyZWF0ZSBjb3BpZXMKdmFyIERFVEFDSF9DSElMRFJFTiA9ICdkMzdhQ0gnOyAgLy8gaSAgbHlyCSAgZGV0YWNoIGltYWdlcwp2YXIgSE9SSVpPTlRBTAkJPSAnSDByMVonOyAgIC8vIGkgIGltZyxseXIgIGhvcml6b250YWxseSBkcmFnZ2FibGUgb25seQp2YXIgTUFYSEVJR0hUCQk9ICdtN3g4SSc7ICAgLy8gaSAgaW1nLGx5ciAgbWF4aW11bSBoZWlnaHQgbGltaXQsICIKdmFyIE1BWE9GRkJPVFRPTQk9ICdtN3hkMHdOJzsgLy8gaSAgaW1nLGx5ciAgZG93bndhcmQgb2Zmc2V0IGxpbWl0CnZhciBNQVhPRkZMRUZUCQk9ICdtN3gyM0Z0JzsgLy8gaSAgaW1nLGx5ciAgbGVmdHdhcmQgb2Zmc2V0IGxpbWl0CnZhciBNQVhPRkZSSUdIVAkJPSAnbTd4MEZmOCc7IC8vIGkgIGltZyxseXIgIHJpZ2h0d2FyZCBvZmZzZXQgbGltaXQKdmFyIE1BWE9GRlRPUAkJPSAnbTd4dTknOyAgIC8vIGkgIGltZyxseXIgIHVwd2FyZCBvZmZzZXQgbGltaXQKdmFyIE1BWFdJRFRICQk9ICdtN3hXMSc7ICAgLy8gaSAgaW1nLGx5ciAgbWF4aW11bSB3aWR0aCBsaW1pdCwgdXNlIHdpdGggcmVzaXphYmxlIG9yIHNjYWxhYmxlCnZhciBNSU5XSURUSAkJPSAnbTFudzEnOyAgIC8vIGkgIGltZyxseXIgIG1pbmltdW0gd2lkdGggbGltaXQsICIKdmFyIE1JTkhFSUdIVAkJPSAnbTFuOEknOyAgIC8vIGkgIGltZyxseXIgIG1pbmltdW0gaGVpZ2h0IGxpbWl0LCAiCnZhciBOT19BTFQJCQk9ICdubzgxVCc7ICAgLy8gZ2kgaW1nCSAgZGlzYWJsZSBhbHQgYW5kIHRpdGxlIGF0dHJpYnV0ZXMKdmFyIE5PX0RSQUcJCQk9ICdOMGQ0QWcnOyAgLy8gaSAgaW1nLGx5ciAgZGlzYWJsZSBkcmFnZ2FiaWxpdHkKdmFyIFJFU0VUX1oJCQk9ICdyMzVFN3onOyAgLy8gZ2kgaW1nLGx5ciAgcmVzZXQgei1pbmRleCB3aGVuIGRyb3BwZWQKdmFyIFJFU0laQUJMRQkJPSAncjVJWmJsJzsgIC8vIGdpIGltZyxseXIgIHJlc2l6YWJsZSBpZiA8Y3RybD4gb3IgPHNoaWZ0PiBwcmVzc2VkCnZhciBTQ0FMQUJMRQkJPSAnU0NMYmwnOyAgIC8vIGdpIGltZyxseXIgIHNjYWxhYmxlCQkgICAiCnZhciBTQ1JPTEwJCQk9ICdzQzhsTCc7ICAgLy8gZ2kgaW1nLGx5ciAgZW5hYmxlIGF1dG8gc2Nyb2xsIGZ1bmN0aW9uYWxpdHkKdmFyIFRSQU5TUEFSRU5UCQk9ICdkSUFwSEFuJzsgLy8gZ2kgaW1nLGx5ciAgdHJhbnNsdWNlbnQgd2hpbGUgZHJhZ2dlZAp2YXIgVkVSVElDQUwJCT0gJ1YzUnQxQyc7ICAvLyBpICBpbWcsbHlyICB2ZXJ0aWNhbGx5IGRyYWdnYWJsZSBvbmx5CnZhciBkZF9jdXJzb3JzID0gbmV3IEFycmF5KAoJJ2M6ZGVmYXVsdCcsCgknYzpjcm9zc2hhaXInLAoJJ2M6ZS1yZXNpemUnLAoJJ2M6aGFuZCcsCgknYzpoZWxwJywKCSdjOm1vdmUnLAoJJ2M6bi1yZXNpemUnLAoJJ2M6bmUtcmVzaXplJywKCSdjOm53LXJlc2l6ZScsCgknYzpzLXJlc2l6ZScsCgknYzpzZS1yZXNpemUnLAoJJ2M6c3ctcmVzaXplJywKCSdjOnRleHQnLAoJJ2M6dy1yZXNpemUnLAoJJ2M6d2FpdCcKKTsKZm9yKHZhciBkZF9pID0gZGRfY3Vyc29ycy5sZW5ndGg7IGRkX2k7KQp7LS1kZF9pOwoJZXZhbCgndmFyIENVUlNPUl8nICsgKGRkX2N1cnNvcnNbZGRfaV0uc3Vic3RyaW5nKDIpLnRvVXBwZXJDYXNlKCkucmVwbGFjZSgnLScsICdfJykpICsgJyA9ICInICsgZGRfY3Vyc29yc1tkZF9pXSArICciOycpOwp9CnZhciBkZF91ID0gInVuZGVmaW5lZCI7CmZ1bmN0aW9uIFdaREQoKQp7Cgl0aGlzLmVsZW1lbnRzID0gbmV3IEFycmF5KDApOwoJdGhpcy5vYmogPSBudWxsOwoJdGhpcy5uID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpOwoJdGhpcy5kYiA9IChkb2N1bWVudC5jb21wYXRNb2RlICYmIGRvY3VtZW50LmNvbXBhdE1vZGUudG9Mb3dlckNhc2UoKSAhPSAiYmFja2NvbXBhdCIpPwoJCWRvY3VtZW50LmRvY3VtZW50RWxlbWVudAoJCTogKGRvY3VtZW50LmJvZHkgfHwgbnVsbCk7Cgl0aGlzLm9wID0gISEod2luZG93Lm9wZXJhICYmIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKTsKCWlmKHRoaXMub3ApIGRvY3VtZW50Lm9ubW91c2Vkb3duID0gbmV3IEZ1bmN0aW9uKCdlJywKCQknaWYoKChlID0gZSB8fCB3aW5kb3cuZXZlbnQpLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQpLnRhZ05hbWUgPT0gIklNQUdFIikgcmV0dXJuIGZhbHNlOycpOwoJdGhpcy5pZSA9ICEhKHRoaXMubi5pbmRleE9mKCJtc2llIikgPj0gMCAmJiBkb2N1bWVudC5hbGwgJiYgdGhpcy5kYiAmJiAhdGhpcy5vcCk7Cgl0aGlzLmllbWFjID0gISEodGhpcy5pZSAmJiB0aGlzLm4uaW5kZXhPZigibWFjIikgPj0gMCk7Cgl0aGlzLmllNCA9ICEhKHRoaXMuaWUgJiYgIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKTsKCXRoaXMubjQgPSAhIShkb2N1bWVudC5sYXllcnMgJiYgdHlwZW9mIGRvY3VtZW50LmNsYXNzZXMgIT0gZGRfdSk7Cgl0aGlzLm42ID0gISEodHlwZW9mIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlICE9IGRkX3UgJiYgdHlwZW9mIGRvY3VtZW50LmNyZWF0ZVJhbmdlICE9IGRkX3UpOwoJdGhpcy53M2MgPSAhISghdGhpcy5vcCAmJiAhdGhpcy5pZSAmJiAhdGhpcy5uNiAmJiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCk7Cgl0aGlzLmNlID0gISEoZG9jdW1lbnQuY2FwdHVyZUV2ZW50cyAmJiBkb2N1bWVudC5yZWxlYXNlRXZlbnRzICYmICF0aGlzLm42KTsKCXRoaXMucHggPSB0aGlzLm40PyAnJyA6ICdweCc7Cgl0aGlzLnRXYWl0ID0gdGhpcy53M2M/IDQwIDogMTA7Cgl0aGlzLm5vUmVjYWxjID0gZmFsc2U7Cn0KdmFyIGRkID0gbmV3IFdaREQoKTsKCmRkLkludCA9IGZ1bmN0aW9uKGRfeCwgZF95KQp7CglyZXR1cm4gaXNOYU4oZF95ID0gcGFyc2VJbnQoZF94KSk/IDAgOiBkX3k7Cn07CmRkLmdldFduZFcgPSBmdW5jdGlvbigpCnsKCXJldHVybiBkZC5JbnQoCgkJKGRkLmRiICYmICFkZC5vcCAmJiAhZGQudzNjICYmIGRkLmRiLmNsaWVudFdpZHRoKT8gZGQuZGIuY2xpZW50V2lkdGgKCQk6ICh3aW5kb3cuaW5uZXJXaWR0aCB8fCAwKQoJKTsKfTsKZGQuZ2V0V25kSCA9IGZ1bmN0aW9uKCkKewoJcmV0dXJuIGRkLkludCgKCQkoZGQuZGIgJiYgIWRkLm9wICYmICFkZC53M2MgJiYgZGQuZGIuY2xpZW50SGVpZ2h0KT8gZGQuZGIuY2xpZW50SGVpZ2h0CgkJOiAod2luZG93LmlubmVySGVpZ2h0IHx8IDApCgkpOwp9OwpkZC5nZXRTY3JvbGxYID0gZnVuY3Rpb24oKQp7CglyZXR1cm4gZGQuSW50KHdpbmRvdy5wYWdlWE9mZnNldCB8fCAoZGQuZGI/IGRkLmRiLnNjcm9sbExlZnQgOiAwKSk7Cn07CmRkLmdldFNjcm9sbFkgPSBmdW5jdGlvbigpCnsKCXJldHVybiBkZC5JbnQod2luZG93LnBhZ2VZT2Zmc2V0IHx8IChkZC5kYj8gZGQuZGIuc2Nyb2xsVG9wIDogMCkpOwp9OwpkZC5nZXRQYWdlWFkgPSBmdW5jdGlvbihkX28pCnsKCWlmKGRkLm40ICYmIGRfbykKCXsKCQlkZC54ID0gZF9vLnBhZ2VYIHx8IDA7CgkJZGQueSA9IGRfby5wYWdlWSB8fCAwOwoJfQoJZWxzZQoJewoJCWRkLnggPSBkZC55ID0gMDsgLy9nbG9iYWwgaGVscGVyIHZhcnMKCQl3aGlsZShkX28pCgkJewoJCQlkZC54ICs9IGRkLkludChkX28ub2Zmc2V0TGVmdCk7CgkJCWRkLnkgKz0gZGQuSW50KGRfby5vZmZzZXRUb3ApOwoJCQlkX28gPSBkX28ub2Zmc2V0UGFyZW50IHx8IG51bGw7CgkJfQoJfQp9OwpkZC5nZXRDc3NYWSA9IGZ1bmN0aW9uKGRfbykKewoJaWYoZF9vLmRpdikKCXsKCQlpZihkZC5uNCkKCQl7CgkJCWRfby5jc3N4ID0gZF9vLmRpdi54OwoJCQlkX28uY3NzeSA9IGRfby5kaXYueTsKCQl9CgkJZWxzZSBpZihkZC5pZTQpCgkJewoJCQlkX28uY3NzeCA9IGRfby5jc3MucGl4ZWxMZWZ0OwoJCQlkX28uY3NzeSA9IGRfby5jc3MucGl4ZWxUb3A7CgkJfQoJCWVsc2UKCQl7CgkJCWRfby5jc3MubGVmdCA9IGRfby5jc3MudG9wID0gMCArIGRkLnB4OwoJCQlkZC5nZXRQYWdlWFkoZF9vLmRpdik7CgkJCWRfby5jc3N4ID0gZF9vLnggLSBkZC54OwoJCQlkX28uY3NzeSA9IGRfby55IC0gZGQueTsKCQkJZF9vLmNzcy5sZWZ0ID0gZF9vLmNzc3ggKyBkZC5weDsKCQkJZF9vLmNzcy50b3AgPSBkX28uY3NzeSArIGRkLnB4OwoJCX0KCX0KCWVsc2UKCXsKCQlkX28uY3NzeCA9IDA7CgkJZF9vLmNzc3kgPSAwOwoJfQp9OwpkZC5nZXRJbWdXID0gZnVuY3Rpb24oZF9vKQp7CglyZXR1cm4gZF9vPyBkZC5JbnQoZF9vLndpZHRoKSA6IDA7Cn07CmRkLmdldEltZ0ggPSBmdW5jdGlvbihkX28pCnsKCXJldHVybiBkX28/IGRkLkludChkX28uaGVpZ2h0KSA6IDA7Cn07CmRkLmdldERpdlcgPSBmdW5jdGlvbihkX28pCnsKCXJldHVybiBkZC5JbnQoCgkJZGQubjQ/IChkX28uZGl2PyBkX28uZGl2LmNsaXAud2lkdGggOiAwKQoJCTogZF9vLmRpdj8gKGRfby5kaXYub2Zmc2V0V2lkdGggfHwgZF9vLmNzcy5waXhlbFdpZHRoIHx8IGRfby5jc3Mud2lkdGggfHwgMCkKCQk6IDAKCSk7Cn07CmRkLmdldERpdkggPSBmdW5jdGlvbihkX28pCnsKCXJldHVybiBkZC5JbnQoCgkJZGQubjQ/IChkX28uZGl2PyBkX28uZGl2LmNsaXAuaGVpZ2h0IDogMCkKCQk6IGRfby5kaXY/IChkX28uZGl2Lm9mZnNldEhlaWdodCB8fCBkX28uY3NzLnBpeGVsSGVpZ2h0IHx8IGRfby5jc3MuaGVpZ2h0IHx8IDApCgkJOiAwCgkpOwp9OwpkZC5nZXRXSCA9IGZ1bmN0aW9uKGRfbykKewoJZF9vLncgPSBkZC5nZXREaXZXKGRfbyk7CglkX28uaCA9IGRkLmdldERpdkgoZF9vKTsKCWlmKGRfby5jc3MpCgl7CgkJZF9vLmNzcy53aWR0aCA9IGRfby53ICsgZGQucHg7CgkJZF9vLmNzcy5oZWlnaHQgPSBkX28uaCArIGRkLnB4OwoJCWRfby5kdyA9IGRkLmdldERpdlcoZF9vKS1kX28udzsKCQlkX28uZGggPSBkZC5nZXREaXZIKGRfbyktZF9vLmg7CgkJZF9vLmNzcy53aWR0aCA9IChkX28udy1kX28uZHcpICsgZGQucHg7CgkJZF9vLmNzcy5oZWlnaHQgPSAoZF9vLmgtZF9vLmRoKSArIGRkLnB4OwoJfQoJZWxzZSBkX28uZHcgPSBkX28uZGggPSAwOwp9OwpkZC5nZXRDc3NQcm9wID0gZnVuY3Rpb24oZF9vLCBkX3BuNiwgZF9wc3R5bGUsIGRfcG40KQp7CglpZihkX28gJiYgZGQubjYpIHJldHVybiAnJyt3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkX28sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoZF9wbjYpOwoJaWYoZF9vICYmIGRfby5jdXJyZW50U3R5bGUpIHJldHVybiAnJytldmFsKCdkX28uY3VycmVudFN0eWxlLicrZF9wc3R5bGUpOwoJaWYoZF9vICYmIGRfby5zdHlsZSkgcmV0dXJuICcnK2V2YWwoJ2Rfby5zdHlsZS4nK2RfcHN0eWxlKTsKCWlmKGRfbyAmJiBkZC5uNCkgcmV0dXJuICcnK2V2YWwoJ2Rfby4nK2RfcG40KTsKCXJldHVybiAnJzsKfTsKZGQuZ2V0RGl2ID0gZnVuY3Rpb24oZF94LCBkX2QpCnsKCWRfZCA9IGRfZCB8fCBkb2N1bWVudDsKCWlmKGRkLm40KQoJewoJCWlmKGRfZC5sYXllcnNbZF94XSkgcmV0dXJuIGRfZC5sYXllcnNbZF94XTsKCQlmb3IodmFyIGRfaSA9IGRfZC5sYXllcnMubGVuZ3RoOyBkX2k7KQoJCXsKCQkJdmFyIGRfeSA9IGRkLmdldERpdihkX3gsIGRfZC5sYXllcnNbLS1kX2ldLmRvY3VtZW50KTsKCQkJaWYoZF95KSByZXR1cm4gZF95OwoJCX0KCX0KCWlmKGRkLmllKSByZXR1cm4gZF9kLmFsbFtkX3hdIHx8IG51bGw7CglpZihkX2QuZ2V0RWxlbWVudEJ5SWQpIHJldHVybiBkX2QuZ2V0RWxlbWVudEJ5SWQoZF94KSB8fCBudWxsOwoJcmV0dXJuIG51bGw7Cn07CmRkLmdldEltZyA9IGZ1bmN0aW9uKGRfbywgZF9ubSwgZF94eSwgZF93KQp7CglkX3cgPSBkX3cgfHwgd2luZG93OwoJdmFyIGRfaW1nOwoJaWYoZG9jdW1lbnQuaW1hZ2VzICYmIChkX2ltZyA9IGRfdy5kb2N1bWVudC5pbWFnZXNbZF9ubV0pKQoJewoJCWlmKGRfeHkpCgkJewoJCQlpZihkZC5uNCkKCQkJewoJCQkJZGQuZ2V0UGFnZVhZKGRfdyk7CgkJCQlkX28uZGVmeCA9IGRfaW1nLnggKyBkZC54OwoJCQkJZF9vLmRlZnkgPSBkX2ltZy55ICsgZGQueTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWRkLmdldFBhZ2VYWShkX2ltZyk7CgkJCQlkX28uZGVmeCA9IGRkLng7CgkJCQlkX28uZGVmeSA9IGRkLnk7CgkJCX0KCQl9CgkJcmV0dXJuIGRfaW1nOwoJfQoJaWYoZGQubjQpIGZvcih2YXIgZF9pID0gZF93LmRvY3VtZW50LmxheWVycy5sZW5ndGg7IGRfaTspCgl7CgkJdmFyIGRfeSA9IGRkLmdldEltZyhkX28sIGRfbm0sIGRfeHksIGRfdy5kb2N1bWVudC5sYXllcnNbLS1kX2ldKTsKCQlpZihkX3kpIHJldHVybiBkX3k7Cgl9CglyZXR1cm4gbnVsbDsKfTsKZGQuZ2V0UGFyZW50ID0gZnVuY3Rpb24oZF9vLCBkX3ApCnsKCWlmKGRkLm40KQoJewoJCWZvcih2YXIgZF9pID0gZGQuZWxlbWVudHMubGVuZ3RoOyBkX2k7KQoJCXsKCQkJaWYoISgoZF9wID0gZGQuZWxlbWVudHNbLS1kX2ldKS5pc19pbWFnZSkgJiYgZF9wLmRpdiAmJiAoZF9wLmRpdi5kb2N1bWVudC5sYXllcnNbZF9vLm5hbWVdIHx8IGRfby5vaW1nICYmIGRfcC5kaXYuZG9jdW1lbnQuaW1hZ2VzW2Rfby5vaW1nLm5hbWVdKSkKCQkJCWRfcC5hZGRDaGlsZChkX28sIGRfcC5kZXRhY2gsIDEpOwoJCX0KCX0KCWVsc2UKCXsKCQlkX3AgPSBkX28uaXNfaW1hZ2U/IGRkLmdldEltZyhkX28sIGRfby5vaW1nLm5hbWUpIDogKGRfby5kaXYgfHwgbnVsbCk7CgkJd2hpbGUoZF9wICYmICEhKGRfcCA9IGRfcC5vZmZzZXRQYXJlbnQgfHwgZF9wLnBhcmVudE5vZGUgfHwgbnVsbCkpCgkJewoJCQlpZihkX3AuZGRPYmopCgkJCXsKCQkJCWRfcC5kZE9iai5hZGRDaGlsZChkX28sIGRfcC5kZE9iai5kZXRhY2gsIDEpOwoJCQkJYnJlYWs7CgkJCX0KCQl9Cgl9Cn07CmRkLmdldENtZCA9IGZ1bmN0aW9uKGRfbywgZF9jbWQsIGRfY21kU3RyKQp7Cgl2YXIgZF9pID0gZF9vLmlkLmluZGV4T2YoZF9jbWQpLCBkX2osCglkX3kgPSAoZF9pID49IDApKjE7CglpZihkX3kpCgl7CgkJZF9qID0gZF9pK2RfY21kLmxlbmd0aDsKCQlpZihkX2NtZFN0cikgZF9vLmNtZCArPSBkX28uaWQuc3Vic3RyaW5nKGRfaSwgZF9qKTsKCQlkX28uaWQgPSBkX28uaWQuc3Vic3RyaW5nKDAsIGRfaSkgKyBkX28uaWQuc3Vic3RyaW5nKGRfaik7Cgl9CglyZXR1cm4gZF95Owp9OwpkZC5nZXRDbWRWYWwgPSBmdW5jdGlvbihkX28sIGRfY21kLCBkX2NtZFN0ciwgaW50MCkKewoJdmFyIGRfaSA9IGRfby5pZC5pbmRleE9mKGRfY21kKSwgZF9qLAoJZF95ID0gKGRfby5pZC5pbmRleE9mKGRfY21kKSA+PSAwKT8gZGQuSW50KGRfby5pZC5zdWJzdHJpbmcoZF9vLmlkLmluZGV4T2YoZF9jbWQpK2RfY21kLmxlbmd0aCkpIDogaW50MD8gLTEgOiAwOwoJaWYoIWludDAgJiYgZF95IHx8IGludDAgJiYgZF95ID49IDApCgl7CgkJZF9qID0gZF9pK2RfY21kLmxlbmd0aCsoIiIrZF95KS5sZW5ndGg7CgkJaWYoZF9jbWRTdHIpIGRfby5jbWQgKz0gZF9vLmlkLnN1YnN0cmluZyhkX2ksIGRfaik7CgkJZF9vLmlkID0gZF9vLmlkLnN1YnN0cmluZygwLCBkX2kpICsgZF9vLmlkLnN1YnN0cmluZyhkX2opOwoJfQoJcmV0dXJuIGRfeTsKfTsKZGQuYWRkRWx0ID0gZnVuY3Rpb24oZF9vLCBkX3ApCnsKCWRkLmVsZW1lbnRzW2Rfby5uYW1lXSA9IGRkLmVsZW1lbnRzW2Rfby5pbmRleCA9IGRkLmVsZW1lbnRzLmxlbmd0aF0gPSBkX287CglpZihkX3ApIGRfcC5jb3BpZXNbZF9vLm5hbWVdID0gZF9wLmNvcGllc1tkX3AuY29waWVzLmxlbmd0aF0gPSBkX287Cn07CmRkLm1rV3pEb20gPSBmdW5jdGlvbigpCnsKCXZhciBkX28sIGRfbCA9IGRkLmVsZW1lbnRzLmxlbmd0aCwgZF9pOwoJZm9yKGRfaSA9IGRfbDsgZF9pOykgZGQuZ2V0UGFyZW50KGRkLmVsZW1lbnRzWy0tZF9pXSk7Cglmb3IoZF9pID0gZF9sOyBkX2k7KQoJewoJCWlmKChkX28gPSBkZC5lbGVtZW50c1stLWRfaV0pLmNoaWxkcmVuICYmICFkX28ucGFyZW50KQoJCXsKCQkJZm9yKHZhciBkX2ogPSBkX28uY2hpbGRyZW4ubGVuZ3RoOyBkX2o7KQoJCQl7LS1kX2o7CgkJCQlkX28uY2hpbGRyZW5bZF9qXS5zZXRaKGRfby56K2Rfby5jaGlsZHJlbltkX2pdLnosIDEpOwoJCQl9CgkJfQoJfQp9OwpkZC5hZGRQcm9wcyA9IGZ1bmN0aW9uKGRfbykKewoJaWYoZF9vLmlzX2ltYWdlKQoJewoJCWRfby5kaXYgPSBkZC5nZXREaXYoZF9vLmlkKTsKCQlkX28uY3NzID0gKGRfby5kaXYgJiYgdHlwZW9mIGRfby5kaXYuc3R5bGUgIT0gZGRfdSk/IGRfby5kaXYuc3R5bGUgOiBudWxsOwoJCWRfby5uaW1nID0gKGRkLm40ICYmIGRfby5kaXYpPyBkX28uZGl2LmRvY3VtZW50LmltYWdlc1swXSA6IChkb2N1bWVudC5pbWFnZXNbZF9vLmlkKyJOSTFtNkciXSB8fCBudWxsKTsKCQlpZighZF9vLm5vYWx0ICYmICFkZC5ub2FsdCAmJiBkX28ubmltZyAmJiBkX28ub2ltZykKCQl7CgkJCWRfby5uaW1nLmFsdCA9IGRfby5vaW1nLmFsdCB8fCAnJzsKCQkJZF9vLm5pbWcudGl0bGUgPSBkX28ub2ltZy50aXRsZTsKCQkJZF9vLm5pbWcub25tb3VzZW92ZXIgPSBkX28ub2ltZy5vbm1vdXNlb3ZlcjsKCQkJZF9vLm5pbWcub25tb3VzZW91dCA9IGRfby5vaW1nLm9ubW91c2VvdXQ7CgkJfQoJCWRfby5iZ0NvbG9yID0gJyc7Cgl9CgllbHNlCgl7CgkJZF9vLmJnQ29sb3IgPSBkZC5nZXRDc3NQcm9wKGRfby5kaXYsICdiYWNrZ3JvdW5kLWNvbG9yJywnYmFja2dyb3VuZENvbG9yJywnYmdDb2xvcicpLnRvTG93ZXJDYXNlKCk7CgkJaWYoZGQubjYgJiYgZF9vLmRpdikKCQl7CgkJCXZhciBkX2MgPSBkX28uYmdDb2xvci50b0xvd2VyQ2FzZSgpOwoJCQlpZihkX2MuaW5kZXhPZigncmdiJykgPj0gMCkKCQkJewoJCQkJZF9jID0gZF9jLnN1YnN0cmluZyg0LCBkX2MubGVuZ3RoLTEpLnNwbGl0KCcsJyk7CgkJCQlkX28uYmdDb2xvciA9ICcjJzsKCQkJCWZvcih2YXIgZF9sID0gZF9jLmxlbmd0aCwgZF9pID0gMDsgZF9pIDwgZF9sOyBkX2krKykgZF9vLmJnQ29sb3IgKz0gcGFyc2VJbnQoZF9jW2RfaV0pLnRvU3RyaW5nKDB4MTApOwoJCQl9CgkJCWVsc2UgZF9vLmJnQ29sb3IgPSBkX2M7CgkJfQoJfQoJaWYoZGQuc2NhbGFibGUpIGRfby5zY2FsYWJsZSA9IGRfby5yZXNpemFibGVeMTsKCWVsc2UgaWYoZGQucmVzaXphYmxlKSBkX28ucmVzaXphYmxlID0gZF9vLnNjYWxhYmxlXjE7CglkX28uc2V0WihkX28uZGVmeik7CglkX28uY3Vyc29yID0gZF9vLmN1cnNvciB8fCBkZC5jdXJzb3IgfHwgJ2F1dG8nOwoJZF9vLl9zZXRDcnMoZF9vLm5vZHJhZz8gJ2F1dG8nIDogZF9vLmN1cnNvcik7CglkX28uZGlhcGhhbiA9IGRfby5kaWFwaGFuIHx8IGRkLmRpYXBoYW4gfHwgMDsKCWRfby5vcGFjaXR5ID0gMS4wOwoJZF9vLnZpc2libGUgPSB0cnVlOwp9OwpkZC5pbml0eiA9IGZ1bmN0aW9uKCkKewoJaWYoIShkZCAmJiAoZGQubjQgfHwgZGQubjYgfHwgZGQuaWUgfHwgZGQub3AgfHwgZGQudzNjKSkpIHJldHVybjsKCWVsc2UgaWYoZGQubjYgfHwgZGQuaWUgfHwgZGQub3AgfHwgZGQudzNjKSBkZC5yZWNhbGMoMSk7Cgl2YXIgZF9kcmFnID0gKGRvY3VtZW50Lm9ubW91c2Vtb3ZlID09IERSQUcpLAoJZF9yZXNpemUgPSAoZG9jdW1lbnQub25tb3VzZW1vdmUgPT0gUkVTSVpFKTsKCWlmKGRkLmxvYWRGdW5jKSBkZC5sb2FkRnVuYygpOwoJaWYoZF9kcmFnKSBkZC5zZXRNb3ZIZGwoRFJBRyk7CgllbHNlIGlmKGRfcmVzaXplKSBkZC5zZXRNb3ZIZGwoUkVTSVpFKTsKCWlmKGRfZHJhZyB8fCBkX3Jlc2l6ZSkgZGQuc2V0VXBIZGwoRFJPUCk7CglkZC5zZXREd25IZGwoUElDSyk7Cn07CmRkLmZpbmx6ID0gZnVuY3Rpb24oKQp7CglpZihkZC5pZSAmJiBkZC5lbGVtZW50cykKCXsKCQlkZC5ub1JlY2FsYyA9IHRydWU7CgkJZm9yKHZhciBkX2kgPSBkZC5lbGVtZW50cy5sZW5ndGg7IGRfaTspCgkJCWRkLmVsZW1lbnRzWy0tZF9pXS5kZWwoKTsKCQlkZC5ub1JlY2FsYyA9IGZhbHNlOwoJfQoJaWYoZGQudWxvYWRGdW5jKSBkZC51bG9hZEZ1bmMoKTsKfTsKZGQuc2V0Q2UgPSBmdW5jdGlvbihkX2UsIGRfZm5jKQp7CglkX2ZuYz8gZG9jdW1lbnQuY2FwdHVyZUV2ZW50cyhkX2UpIDogZG9jdW1lbnQucmVsZWFzZUV2ZW50cyhkX2UpOwp9OwpkZC5zZXREd25IZGwgPSBmdW5jdGlvbihkX3gpCnsKCWlmKGRvY3VtZW50Lm9ubW91c2Vkb3duICE9IGRfeCkKCXsKCQlkZC5kb3duRnVuYyA9IGRvY3VtZW50Lm9ubW91c2Vkb3duOwoJCWRvY3VtZW50Lm9ubW91c2Vkb3duID0gZF94OwoJCWlmKGRkLmNlKSBkZC5zZXRDZShFdmVudC5NT1VTRURPV04sIGRfeCk7Cgl9Cn07CmRkLnNldE1vdkhkbCA9IGZ1bmN0aW9uKGRfeCkKewoJaWYoZG9jdW1lbnQub25tb3VzZW1vdmUgIT0gZF94KQoJewoJCWRkLm1vdmVGdW5jID0gZG9jdW1lbnQub25tb3VzZW1vdmU7CgkJZG9jdW1lbnQub25tb3VzZW1vdmUgPSBkX3g7CgkJaWYoZGQuY2UpIGRkLnNldENlKEV2ZW50Lk1PVVNFTU9WRSwgZF94KTsKCX0KfTsKZGQuc2V0VXBIZGwgPSBmdW5jdGlvbihkX3gpCnsKCWlmKGRvY3VtZW50Lm9ubW91c2V1cCAhPSBkX3gpCgl7CgkJZGQudXBGdW5jID0gZG9jdW1lbnQub25tb3VzZXVwOwoJCWRvY3VtZW50Lm9ubW91c2V1cCA9IGRfeDsKCQlpZihkZC5jZSkgZGQuc2V0Q2UoRXZlbnQuTU9VU0VVUCwgZF94KTsKCX0KfTsKZGQuZXZ0ID0gZnVuY3Rpb24oZF9lKQp7Cgl0aGlzLmJ1dCA9ICh0aGlzLmUgPSBkX2UgfHwgd2luZG93LmV2ZW50KS53aGljaCB8fCB0aGlzLmUuYnV0dG9uIHx8IDA7Cgl0aGlzLmJ1dHRvbiA9ICh0aGlzLmUudHlwZSA9PSAnbW91c2Vkb3duJyk/IHRoaXMuYnV0CgkJOiAoZGQuZSAmJiBkZC5lLmJ1dHRvbik/IGRkLmUuYnV0dG9uCgkJOiAwOwoJdGhpcy5zcmMgPSB0aGlzLmUudGFyZ2V0IHx8IHRoaXMuZS5zcmNFbGVtZW50IHx8IG51bGw7Cgl0aGlzLnNyYy50YWcgPSAoIiIgKyAodGhpcy5zcmMudGFnTmFtZSB8fCB0aGlzLnNyYykpLnRvTG93ZXJDYXNlKCk7Cgl0aGlzLnggPSBkZC5JbnQodGhpcy5lLnBhZ2VYIHx8IHRoaXMuZS5jbGllbnRYIHx8IDApOwoJdGhpcy55ID0gZGQuSW50KHRoaXMuZS5wYWdlWSB8fCB0aGlzLmUuY2xpZW50WSB8fCAwKTsKCWlmKGRkLmllKQoJewoJCXRoaXMueCArPSBkZC5nZXRTY3JvbGxYKCkgLSAoZGQuaWUgJiYgIWRkLmllbWFjKSoxOwoJCXRoaXMueSArPSBkZC5nZXRTY3JvbGxZKCkgLSAoZGQuaWUgJiYgIWRkLmllbWFjKSoxOwoJfQoJdGhpcy5tb2RpZktleSA9IHRoaXMuZS5tb2RpZmllcnM/IHRoaXMuZS5tb2RpZmllcnMmRXZlbnQuU0hJRlRfTUFTSyA6ICh0aGlzLmUuc2hpZnRLZXkgfHwgZmFsc2UpOwp9OwpkZC5nZXRFdmVudFRhcmdldCA9IGZ1bmN0aW9uKGRfZSwgZF9zLCBkX24pCnsKCWRfZSA9IGRfZSB8fCB3aW5kb3cuZXZlbnQ7CglpZihkX2UgJiYgKGRfcyA9IGRfZS50YXJnZXQgfHwgZF9lLnNyY0VsZW1lbnQgfHwgbnVsbCkgIT0gbnVsbCkKCXsKCQlpZihudWxsICE9IChkX24gPSBkX3MuaWQgfHwgZF9zLm5hbWUgfHwgbnVsbCkpCgkJewoJCQlpZihkX24uaW5kZXhPZigiZElpMTV2TkkxbTZHIikgPT0gZF9uLmxlbmd0aC0xMikKCQkJCXJldHVybiBkZC5lbGVtZW50c1tkX24uc3Vic3RyaW5nKDAsIGRfbi5sZW5ndGgtMTIpXSB8fCBudWxsOwoJCQlpZihkX24uaW5kZXhPZigiZElpMTV2IikgPT0gZF9uLmxlbmd0aC02KQoJCQkJcmV0dXJuIGRkLmVsZW1lbnRzW2Rfbi5zdWJzdHJpbmcoMCwgZF9uLmxlbmd0aC02KV0gfHwgbnVsbDsKCQkJcmV0dXJuIGRkLmVsZW1lbnRzW2Rfbl0gfHwgbnVsbDsKCQl9Cgl9CglyZXR1cm4gbnVsbDsKfTsKZGQucmVjYWxjID0gZnVuY3Rpb24oZF94KQp7CglpZihkZC5ub1JlY2FsYykgcmV0dXJuOwoJZm9yKHZhciBkX28sIGRfaSA9IGRkLmVsZW1lbnRzLmxlbmd0aDsgZF9pOykKCXsKCQlpZighKGRfbyA9IGRkLmVsZW1lbnRzWy0tZF9pXSkuaXNfaW1hZ2UgJiYgZF9vLmRpdikKCQl7CgkJCWRkLmdldFdIKGRfbyk7CgkJCWlmKGRfby5kaXYucG9zX3JlbCkKCQkJewoJCQkJZGQuZ2V0UGFnZVhZKGRfby5kaXYpOwoJCQkJdmFyIGRfZHggPSBkZC54IC0gZF9vLngsIGRfZHkgPSBkZC55IC0gZF9vLnk7CgkJCQlkX28uZGVmeCArPSBkX2R4OwoJCQkJZF9vLnggKz0gZF9keDsKCQkJCWRfby5kZWZ5ICs9IGRfZHk7CgkJCQlkX28ueSArPSBkX2R5OwoJCQkJZm9yKHZhciBkX3AsIGRfaiA9IGRfby5jaGlsZHJlbi5sZW5ndGg7IGRfajspCgkJCQl7CgkJCQkJaWYoIShkX3AgPSBkX28uY2hpbGRyZW5bLS1kX2pdKS5kZXRhY2hlZCAmJiAoZF9vICE9IGRfcC5kZWZwYXJlbnQgfHwgIShkX3AuaXNfaW1hZ2UgJiYgZGQuZ2V0SW1nKGRfcCwgZF9wLm9pbWcubmFtZSwgMSkpKSkKCQkJCQl7CgkJCQkJCWRfcC5kZWZ4ICs9IGRfZHg7CgkJCQkJCWRfcC5kZWZ5ICs9IGRfZHk7CgkJCQkJCWRfcC5tb3ZlQnkoZF9keCwgZF9keSk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJCWVsc2UgaWYoZF9vLmlzX2ltYWdlICYmICFkZC5uNCkKCQl7CgkJCWlmKGRkLm42ICYmIGRfeCAmJiAhZF9vLmRlZncpIGRfby5yZXNpemVUbyhkX28uZGVmdyA9IGRkLmdldEltZ1coZF9vLm9pbWcpLCBkX28uZGVmaCA9IGRkLmdldEltZ0goZF9vLm9pbWcpKTsKCQkJdmFyIGRfZGVmeCA9IGRfby5kZWZ4LCBkX2RlZnkgPSBkX28uZGVmeTsKCQkJaWYoIShkX28ucGFyZW50ICYmIGRfby5wYXJlbnQgIT0gZF9vLmRlZnBhcmVudCkgJiYgKGRfeCB8fCAhZF9vLmRldGFjaGVkIHx8IGRfby5ob3Jpem9udGFsIHx8IGRfby52ZXJ0aWNhbCkgJiYgZGQuZ2V0SW1nKGRfbywgZF9vLm9pbWcubmFtZSwgMSkpCgkJCQlkX28ubW92ZUJ5KGRfby5kZWZ4LWRfZGVmeCwgZF9vLmRlZnktZF9kZWZ5KTsKCQl9Cgl9Cn07CmZ1bmN0aW9uIFdJTlNaKGRfeCkKewoJaWYoZF94KQoJewoJCWlmKGRkLm40KQoJCXsKCQkJZGQuaVcgPSBpbm5lcldpZHRoOwoJCQlkZC5pSCA9IGlubmVySGVpZ2h0OwoJCX0KCQl3aW5kb3cub25yZXNpemUgPSBuZXcgRnVuY3Rpb24oJ1dJTlNaKCk7Jyk7Cgl9CgllbHNlIGlmKGRkLm40ICYmIChpbm5lcldpZHRoICE9IGRkLmlXIHx8IGlubmVySGVpZ2h0ICE9IGRkLmlIKSkgbG9jYXRpb24ucmVsb2FkKCk7CgllbHNlIGlmKCFkZC5uNCkgc2V0VGltZW91dCgnZGQucmVjYWxjKCknLCAweGEpOwp9CldJTlNaKDEpOwoKZnVuY3Rpb24gRERPYmooZF9vLCBkX2kpCnsKCXRoaXMuaWQgPSBkX287Cgl0aGlzLmNtZCA9ICcnOwoJdGhpcy5jcHlfbiA9IGRkLmdldENtZFZhbCh0aGlzLCBDT1BZKTsKCXRoaXMubWF4b2ZmYiA9IGRkLmdldENtZFZhbCh0aGlzLCBNQVhPRkZCT1RUT00sIDAsIDEpOwoJdGhpcy5tYXhvZmZsID0gZGQuZ2V0Q21kVmFsKHRoaXMsIE1BWE9GRkxFRlQsIDAsIDEpOwoJdGhpcy5tYXhvZmZyID0gZGQuZ2V0Q21kVmFsKHRoaXMsIE1BWE9GRlJJR0hULCAwLCAxKTsKCXRoaXMubWF4b2ZmdCA9IGRkLmdldENtZFZhbCh0aGlzLCBNQVhPRkZUT1AsIDAsIDEpOwoJdmFyIGRfaiA9IGRkX2N1cnNvcnMubGVuZ3RoOyB3aGlsZShkX2otLSkKCQlpZihkZC5nZXRDbWQodGhpcywgZGRfY3Vyc29yc1tkX2pdLCAxKSkgdGhpcy5jdXJzb3IgPSBkZF9jdXJzb3JzW2Rfal0uc3Vic3RyaW5nKDIpOwoJdGhpcy5jbG9uZSA9IGRkLmdldENtZCh0aGlzLCBDTE9ORSwgMSk7Cgl0aGlzLmRldGFjaCA9IGRkLmdldENtZCh0aGlzLCBERVRBQ0hfQ0hJTERSRU4pOwoJdGhpcy5zY2FsYWJsZSA9IGRkLmdldENtZCh0aGlzLCBTQ0FMQUJMRSwgMSk7Cgl0aGlzLmhvcml6b250YWwgPSBkZC5nZXRDbWQodGhpcywgSE9SSVpPTlRBTCk7Cgl0aGlzLm5vYWx0ID0gZGQuZ2V0Q21kKHRoaXMsIE5PX0FMVCwgMSk7Cgl0aGlzLm5vZHJhZyA9IGRkLmdldENtZCh0aGlzLCBOT19EUkFHKTsKCXRoaXMuc2Nyb2xsID0gZGQuZ2V0Q21kKHRoaXMsIFNDUk9MTCwgMSk7Cgl0aGlzLnJlc2l6YWJsZSA9IGRkLmdldENtZCh0aGlzLCBSRVNJWkFCTEUsIDEpOwoJdGhpcy5yZV96ID0gZGQuZ2V0Q21kKHRoaXMsIFJFU0VUX1osIDEpOwoJdGhpcy5kaWFwaGFuID0gZGQuZ2V0Q21kKHRoaXMsIFRSQU5TUEFSRU5ULCAxKTsKCXRoaXMudmVydGljYWwgPSBkZC5nZXRDbWQodGhpcywgVkVSVElDQUwpOwoJdGhpcy5tYXh3ID0gZGQuZ2V0Q21kVmFsKHRoaXMsIE1BWFdJRFRILCAxLCAxKTsKCXRoaXMubWludyA9IE1hdGguYWJzKGRkLmdldENtZFZhbCh0aGlzLCBNSU5XSURUSCwgMSwgMSkpOwoJdGhpcy5tYXhoID0gZGQuZ2V0Q21kVmFsKHRoaXMsIE1BWEhFSUdIVCwgMSwgMSk7Cgl0aGlzLm1pbmggPSBNYXRoLmFicyhkZC5nZXRDbWRWYWwodGhpcywgTUlOSEVJR0hULCAxLCAxKSk7Cgl0aGlzLnBpY2tGdW5jID0gdGhpcy5kcmFnRnVuYyA9IHRoaXMucmVzaXplRnVuYyA9IHRoaXMuZHJvcEZ1bmMgPSBudWxsOwoKCXRoaXMubmFtZSA9IHRoaXMuaWQgKyAoZF9pIHx8ICcnKTsKCXRoaXMub2ltZyA9IGRkLmdldEltZyh0aGlzLCB0aGlzLmlkLCAxKTsKCXRoaXMuaXNfaW1hZ2UgPSAhIXRoaXMub2ltZzsKCXRoaXMuY29waWVzID0gbmV3IEFycmF5KCk7Cgl0aGlzLmNoaWxkcmVuID0gbmV3IEFycmF5KCk7Cgl0aGlzLnBhcmVudCA9IHRoaXMub3JpZ2luYWwgPSBudWxsOwoJaWYodGhpcy5vaW1nKQoJewoJCXRoaXMuaWQgPSB0aGlzLm5hbWUgKyAiZElpMTV2IjsKCQl0aGlzLncgPSBkZC5nZXRJbWdXKHRoaXMub2ltZyk7CgkJdGhpcy5oID0gZGQuZ2V0SW1nSCh0aGlzLm9pbWcpOwoJCXRoaXMuZHcgPSB0aGlzLmRoID0gMDsKCQl0aGlzLmRlZnogPSBkZC5JbnQoZGQuZ2V0Q3NzUHJvcCh0aGlzLm9pbWcsICd6LWluZGV4JywnekluZGV4JywnekluZGV4JykpIHx8IDE7CgkJdGhpcy5kZWZzcmMgPSB0aGlzLnNyYyA9IHRoaXMub2ltZy5zcmM7CgkJdGhpcy5odG0gPSAnPGltZyBuYW1lPSInICsgdGhpcy5pZCArICdOSTFtNkciJysKCQkJJyBzcmM9IicgKyB0aGlzLm9pbWcuc3JjICsgJyIgJysKCQkJJ3dpZHRoPSInICsgdGhpcy53ICsgJyIgaGVpZ2h0PSInICsgdGhpcy5oICsgJyI+JzsKCQl0aGlzLnRfaHRtID0gJzxkaXYgaWQ9IicgKyB0aGlzLmlkICsKCQkJJyIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOycrCgkJCSdsZWZ0OicgKyAodGhpcy5jc3N4ID0gdGhpcy54ID0gdGhpcy5kZWZ4KSArICdweDsnKwoJCQkndG9wOicgKyAodGhpcy5jc3N5ID0gdGhpcy55ID0gdGhpcy5kZWZ5KSArICdweDsnKwoJCQknd2lkdGg6JyArIHRoaXMudyArICdweDsnKwoJCQknaGVpZ2h0OicgKyB0aGlzLmggKyAncHg7Ij4nKwoJCQl0aGlzLmh0bSArICc8L2Rpdj4nOwoJfQoJZWxzZQoJewoJCWlmKCEhKHRoaXMuZGl2ID0gZGQuZ2V0RGl2KHRoaXMuaWQpKSAmJiB0eXBlb2YgdGhpcy5kaXYuc3R5bGUgIT0gZGRfdSkgdGhpcy5jc3MgPSB0aGlzLmRpdi5zdHlsZTsKCQlkZC5nZXRXSCh0aGlzKTsKCQlpZih0aGlzLmRpdikKCQl7CgkJCXRoaXMuZGl2LmRkT2JqID0gdGhpczsKCQkJdGhpcy5kaXYucG9zX3JlbCA9IGRkLmdldENzc1Byb3AodGhpcy5kaXYsICdwb3NpdGlvbicsJ3Bvc2l0aW9uJywncG9zaXRpb24nKSA9PSAicmVsYXRpdmUiOwoJCX0KCQlkZC5nZXRQYWdlWFkodGhpcy5kaXYpOwoJCXRoaXMuZGVmeCA9IHRoaXMueCA9IGRkLng7CgkJdGhpcy5kZWZ5ID0gdGhpcy55ID0gZGQueTsKCQlkZC5nZXRDc3NYWSh0aGlzKTsKCQl0aGlzLmRlZnogPSBkZC5JbnQoZGQuZ2V0Q3NzUHJvcCh0aGlzLmRpdiwgJ3otaW5kZXgnLCd6SW5kZXgnLCd6SW5kZXgnKSk7Cgl9Cgl0aGlzLmRlZncgPSB0aGlzLncgfHwgMDsKCXRoaXMuZGVmaCA9IHRoaXMuaCB8fCAwOwp9CkRET2JqLnByb3RvdHlwZS5zZXRQaWNrRnVuYyA9IGZ1bmN0aW9uKGRfeCkKewoJdGhpcy5waWNrRnVuYyA9IGRfeDsKfTsKRERPYmoucHJvdG90eXBlLnNldERyYWdGdW5jID0gZnVuY3Rpb24oZF94KQp7Cgl0aGlzLmRyYWdGdW5jID0gZF94Owp9OwpERE9iai5wcm90b3R5cGUuc2V0UmVzaXplRnVuYyA9IGZ1bmN0aW9uKGRfeCkKewoJdGhpcy5yZXNpemVGdW5jID0gZF94Owp9OwpERE9iai5wcm90b3R5cGUuc2V0RHJvcEZ1bmMgPSBmdW5jdGlvbihkX3gpCnsKCXRoaXMuZHJvcEZ1bmMgPSBkX3g7Cn07CkRET2JqLnByb3RvdHlwZS5tb3ZlQnkgPSBmdW5jdGlvbihkX3gsIGRfeSwgZF9rZHMsIGRfbykKewoJaWYoIXRoaXMuZGl2KSByZXR1cm47Cgl0aGlzLnggKz0gKGRfeCA9IGRkLkludChkX3gpKTsKCXRoaXMueSArPSAoZF95ID0gZGQuSW50KGRfeSkpOwoJaWYoIWRfa2RzIHx8IHRoaXMuaXNfaW1hZ2UgfHwgdGhpcy5wYXJlbnQgIT0gdGhpcy5kZWZwYXJlbnQpCgl7CgkJKGRfbyA9IHRoaXMuY3NzIHx8IHRoaXMuZGl2KS5sZWZ0ID0gKHRoaXMuY3NzeCArPSBkX3gpICsgZGQucHg7CgkJZF9vLnRvcCA9ICh0aGlzLmNzc3kgKz0gZF95KSArIGRkLnB4OwoJfQoJZm9yKHZhciBkX2kgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgZF9pOykKCXsKCQlpZighKGRfbyA9IHRoaXMuY2hpbGRyZW5bLS1kX2ldKS5kZXRhY2hlZCkgZF9vLm1vdmVCeShkX3gsIGRfeSwgMSk7CgkJZF9vLmRlZnggKz0gZF94OwoJCWRfby5kZWZ5ICs9IGRfeTsKCX0KfTsKCkRET2JqLnByb3RvdHlwZS5tb3ZlVG8gPSBmdW5jdGlvbihkX3gsIGRfeSkKewoJdGhpcy5tb3ZlQnkoZGQuSW50KGRfeCktdGhpcy54LCBkZC5JbnQoZF95KS10aGlzLnkpOwp9OwpERE9iai5wcm90b3R5cGUuaGlkZSA9IGZ1bmN0aW9uKGRfbSwgZF9vLCBkX3ApCnsKCWlmKHRoaXMuZGl2ICYmIHRoaXMudmlzaWJsZSkKCXsKCQlkX3AgPSB0aGlzLmNzcyB8fCB0aGlzLmRpdjsKCQlpZihkX20gJiYgIWRkLm40KQoJCXsKCQkJdGhpcy5kaXNwbGF5ID0gZGQuZ2V0Q3NzUHJvcCh0aGlzLmRpdiwgImRpc3BsYXkiLCAiZGlzcGxheSIsICJkaXNwbGF5Iik7CgkJCWlmKHRoaXMub2ltZykKCQkJewoJCQkJdGhpcy5vaW1nLmRpc3BsYXkgPSBkZC5nZXRDc3NQcm9wKHRoaXMub2ltZywgImRpc3BsYXkiLCAiZGlzcGxheSIsICJkaXNwbGF5Iik7CgkJCQl0aGlzLm9pbWcuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCQkJfQoJCQlkX3AuZGlzcGxheSA9ICJub25lIjsKCQkJZGQucmVjYWxjKCk7CgkJfQoJCWVsc2UgZF9wLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKCX0KCXRoaXMudmlzaWJsZSA9IGZhbHNlOwoJZm9yKHZhciBkX2kgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgZF9pOykKCQlpZighKGRfbyA9IHRoaXMuY2hpbGRyZW5bLS1kX2ldKS5kZXRhY2hlZCkgZF9vLmhpZGUoZF9tKTsKfTsKRERPYmoucHJvdG90eXBlLnNob3cgPSBmdW5jdGlvbihkX28sIGRfcCkKewoJaWYodGhpcy5kaXYpCgl7CgkJZF9wID0gdGhpcy5jc3MgfHwgdGhpcy5kaXY7CgkJaWYoZF9wLmRpc3BsYXkgJiYgZF9wLmRpc3BsYXkgPT0gIm5vbmUiKQoJCXsKCQkJZF9wLmRpc3BsYXkgPSB0aGlzLmRpc3BsYXkgfHwgImJsb2NrIjsKCQkJaWYodGhpcy5vaW1nKSB0aGlzLm9pbWcuc3R5bGUuZGlzcGxheSA9IHRoaXMub2ltZy5kaXNwbGF5IHx8ICJpbmxpbmUiOwoJCQlkZC5yZWNhbGMoKTsKCQl9CgkJZWxzZSBkX3AudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsKCX0KCXRoaXMudmlzaWJsZSA9IHRydWU7Cglmb3IodmFyIGRfaSA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBkX2k7KQoJCWlmKCEoZF9vID0gdGhpcy5jaGlsZHJlblstLWRfaV0pLmRldGFjaGVkKSBkX28uc2hvdygpOwp9OwpERE9iai5wcm90b3R5cGUucmVzaXplVG8gPSBmdW5jdGlvbihkX3csIGRfaCwgZF9vKQp7CglpZighdGhpcy5kaXYpIHJldHVybjsKCWRfdyA9ICh0aGlzLncgPSBkZC5JbnQoZF93KSktdGhpcy5kdzsKCWRfaCA9ICh0aGlzLmggPSBkZC5JbnQoZF9oKSktdGhpcy5kaDsKCWlmKGRkLm40KQoJewoJCXRoaXMuZGl2LnJlc2l6ZVRvKGRfdywgZF9oKTsKCQlpZih0aGlzLmlzX2ltYWdlKQoJCXsKCQkJdGhpcy53cml0ZSgnPGltZyBzcmM9IicgKyB0aGlzLnNyYyArICciIHdpZHRoPSInICsgZF93ICsgJyIgaGVpZ2h0PSInICsgZF9oICsgJyI+Jyk7CgkJCSh0aGlzLm5pbWcgPSB0aGlzLmRpdi5kb2N1bWVudC5pbWFnZXNbMF0pLnNyYyA9IHRoaXMuc3JjOwoJCX0KCX0KCWVsc2UgaWYodHlwZW9mIHRoaXMuY3NzLnBpeGVsV2lkdGggIT0gZGRfdSkKCXsKCQl0aGlzLmNzcy5waXhlbFdpZHRoID0gZF93OwoJCXRoaXMuY3NzLnBpeGVsSGVpZ2h0ID0gZF9oOwoJCWlmKHRoaXMuaXNfaW1hZ2UpCgkJewoJCQkoZF9vID0gdGhpcy5uaW1nLnN0eWxlKS5waXhlbFdpZHRoID0gZF93OwoJCQlkX28ucGl4ZWxIZWlnaHQgPSBkX2g7CgkJfQoJfQoJZWxzZQoJewoJCXRoaXMuY3NzLndpZHRoID0gZF93ICsgZGQucHg7CgkJdGhpcy5jc3MuaGVpZ2h0ID0gZF9oICsgZGQucHg7CgkJaWYodGhpcy5pc19pbWFnZSkKCQl7CgkJCShkX28gPSB0aGlzLm5pbWcpLndpZHRoID0gZF93OwoJCQlkX28uaGVpZ2h0ID0gZF9oOwoJCQlpZighZF9vLmNvbXBsZXRlKSBkX28uc3JjID0gdGhpcy5zcmM7CgkJfQoJfQp9OwpERE9iai5wcm90b3R5cGUucmVzaXplQnkgPSBmdW5jdGlvbihkX2R3LCBkX2RoKQp7Cgl0aGlzLnJlc2l6ZVRvKHRoaXMudytkZC5JbnQoZF9kdyksIHRoaXMuaCtkZC5JbnQoZF9kaCkpOwp9OwpERE9iai5wcm90b3R5cGUuc3dhcEltYWdlID0gZnVuY3Rpb24oZF94LCBkX2NwKQp7CglpZighdGhpcy5uaW1nKSByZXR1cm47Cgl0aGlzLm5pbWcuc3JjID0gZF94OwoJdGhpcy5zcmMgPSB0aGlzLm5pbWcuc3JjOwoJaWYoZF9jcCkKCXsKCQlmb3IodmFyIGRfaSA9IHRoaXMuY29waWVzLmxlbmd0aDsgZF9pOykKCQl7LS1kX2k7CgkJCXRoaXMuY29waWVzW2RfaV0uc3JjID0gdGhpcy5jb3BpZXNbZF9pXS5uaW1nLnNyYyA9IHRoaXMubmltZy5zcmM7CgkJfQoJfQp9OwpERE9iai5wcm90b3R5cGUuc2V0QmdDb2xvciA9IGZ1bmN0aW9uKGRfeCkKewoJaWYoZGQubjQgJiYgdGhpcy5kaXYpIHRoaXMuZGl2LmJnQ29sb3IgPSBkX3g7CgllbHNlIGlmKHRoaXMuY3NzKSB0aGlzLmNzcy5iYWNrZ3JvdW5kID0gZF94OwoJdGhpcy5iZ0NvbG9yID0gZF94Owp9OwpERE9iai5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihkX3gsIGRfbykKewoJdGhpcy50ZXh0ID0gZF94OwoJaWYoIXRoaXMuZGl2KSByZXR1cm47CglpZihkZC5uNCkKCXsKCQkoZF9vID0gdGhpcy5kaXYuZG9jdW1lbnQpLm9wZW4oKTsKCQlkX28ud3JpdGUoZF94KTsKCQlkX28uY2xvc2UoKTsKCQlkZC5nZXRXSCh0aGlzKTsKCX0KCWVsc2UKCXsKCQl0aGlzLmNzcy5oZWlnaHQgPSAnYXV0byc7CgkJdGhpcy5kaXYuaW5uZXJIVE1MID0gZF94OwoJCWlmKCFkZC5pZTQpIGRkLnJlY2FsYygpOwoJCWlmKGRkLmllNCB8fCBkZC5uNikgc2V0VGltZW91dCgnZGQucmVjYWxjKCk7JywgMCk7IC8vIG42LjA6IHJlY2FsYyB0d2ljZQoJfQp9OwpERE9iai5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uKGRfbiwgZF9wLCBkX2IpCnsKCWlmKCF0aGlzLm9pbWcpIHJldHVybjsKCWRfYiA9IChkZC5pZSAmJiBkb2N1bWVudC5hbGwudGFncygnYm9keScpKT8gZG9jdW1lbnQuYWxsLnRhZ3MoJ2JvZHknKVswXSA6IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lPyAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXSB8fCBkZC5kYikgOiBkZC5kYjsKCWZvcihkX24gPSBkX24gfHwgMTsgZF9uID4gMDsgLS1kX24pCgl7CgkJdmFyIGRfbCA9IHRoaXMuY29waWVzLmxlbmd0aCwKCQlkX28gPSBuZXcgRERPYmoodGhpcy5uYW1lK3RoaXMuY21kLCBkX2wrMSk7CgkJaWYoZGQubjQpCgkJewoJCQlkX28uaWQgPSAoZF9wID0gbmV3IExheWVyKGRfby53KSkubmFtZTsKCQkJZF9wLmNsaXAuaGVpZ2h0ID0gZF9vLmg7CgkJCWRfcC52aXNpYmlsaXR5ID0gJ3Nob3cnOwoJCQkoZF9wID0gZF9wLmRvY3VtZW50KS5vcGVuKCk7CgkJCWRfcC53cml0ZShkX28uaHRtKTsKCQkJZF9wLmNsb3NlKCk7CgkJfQoJCWVsc2UgaWYoZF9iICYmIGRfYi5pbnNlcnRBZGphY2VudEhUTUwpIGRfYi5pbnNlcnRBZGphY2VudEhUTUwoIkFmdGVyQmVnaW4iLCBkX28udF9odG0pOwoJCWVsc2UgaWYoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAmJiBkX2IgJiYgZF9iLmFwcGVuZENoaWxkKQoJCXsKCQkJZF9iLmFwcGVuZENoaWxkKGRfcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRJaTE1diIpKTsKCQkJZF9wLmlubmVySFRNTCA9IGRfby5odG07CgkJCWRfcC5pZCA9IGRfby5pZDsKCQkJZF9wLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKCQkJZF9wLnN0eWxlLndpZHRoID0gZF9vLncgKyAncHgnOwoJCQlkX3Auc3R5bGUuaGVpZ2h0ID0gZF9vLmggKyAncHgnOwoJCX0KCQllbHNlIGlmKGRfYiAmJiBkX2IuaW5uZXJIVE1MKSBkX2IuaW5uZXJIVE1MICs9IGRfby50X2h0bTsKCQlkX28uZGVmeiA9IHRoaXMuZGVmeisxK2RfbDsKCQlkZC5hZGRQcm9wcyhkX28pOwoJCWRfby5vcmlnaW5hbCA9IHRoaXM7CgkJZGQuYWRkRWx0KGRfbywgdGhpcyk7CgkJaWYodGhpcy5wYXJlbnQpCgkJewoJCQl0aGlzLnBhcmVudC5hZGRDaGlsZChkX28sIHRoaXMuZGV0YWNoZWQpOwoJCQlkX28uZGVmcGFyZW50ID0gdGhpcy5kZWZwYXJlbnQ7CgkJfQoJCWRfby5tb3ZlVG8oZF9vLmRlZnggPSB0aGlzLmRlZngsIGRfby5kZWZ5ID0gdGhpcy5kZWZ5KTsKCQlpZihkZC5uNCkgZF9vLmRlZnNyYyA9IGRfby5zcmMgPSB0aGlzLmRlZnNyYzsKCQlkX28uc3dhcEltYWdlKHRoaXMuc3JjKTsKCX0KfTsKRERPYmoucHJvdG90eXBlLmFkZENoaWxkID0gZnVuY3Rpb24oZF9rZCwgZGV0YWNoLCBkZWZwKQp7CglpZih0eXBlb2YgZF9rZCAhPSAib2JqZWN0IikgZF9rZCA9IGRkLmVsZW1lbnRzW2Rfa2RdOwoJaWYoZF9rZC5wYXJlbnQgJiYgZF9rZC5wYXJlbnQgPT0gdGhpcyB8fCBkX2tkID09IHRoaXMgfHwgIWRfa2QuaXNfaW1hZ2UgJiYgZF9rZC5kZWZwYXJlbnQgJiYgIWRlZnApIHJldHVybjsKCgl0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoXSA9IHRoaXMuY2hpbGRyZW5bZF9rZC5uYW1lXSA9IGRfa2Q7CglkX2tkLmRldGFjaGVkID0gZGV0YWNoIHx8IDA7CglpZihkZWZwKSBkX2tkLmRlZnBhcmVudCA9IHRoaXM7CgllbHNlIGlmKHRoaXMgPT0gZF9rZC5kZWZwYXJlbnQgJiYgZF9rZC5pc19pbWFnZSkgZGQuZ2V0SW1nKHRoaXMsIGRfa2Qub2ltZy5uYW1lLCAxKTsKCWlmKCFkX2tkLmRlZnBhcmVudCB8fCB0aGlzICE9IGRfa2QuZGVmcGFyZW50KQoJewoJCWRfa2QuZGVmeCA9IGRfa2QueDsKCQlkX2tkLmRlZnkgPSBkX2tkLnk7Cgl9CglpZighZGV0YWNoKQoJewoJCWRfa2QuZGVmeiA9IGRfa2QuZGVmeit0aGlzLmRlZnotKGRfa2QucGFyZW50PyBkX2tkLnBhcmVudC5kZWZ6IDogMCkrKCFkX2tkLmlzX2ltYWdlKjEpOwoJCWRfa2Quc2V0WihkX2tkLnordGhpcy56LShkX2tkLnBhcmVudD8gZF9rZC5wYXJlbnQueiA6IDApKyghZF9rZC5pc19pbWFnZSoxKSwgMSk7Cgl9CglpZihkX2tkLnBhcmVudCkgZF9rZC5wYXJlbnQucmVtb3ZlQ2hpbGQoZF9rZCwgMSk7CglkX2tkLnBhcmVudCA9IHRoaXM7Cn07CkRET2JqLnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IGZ1bmN0aW9uKGRfa2QsIGRfbmV3cCkKewoJaWYodHlwZW9mIGRfa2QgIT0gIm9iamVjdCIpIGRfa2QgPSB0aGlzLmNoaWxkcmVuW2Rfa2RdOwoJdmFyIGRfb2MgPSB0aGlzLmNoaWxkcmVuLCBkX25jID0gbmV3IEFycmF5KCk7Cglmb3IodmFyIGRfaSA9IDA7IGRfaSA8IGRfb2MubGVuZ3RoOyBkX2krKykKCQlpZihkX29jW2RfaV0gIT0gZF9rZCkgZF9uY1tkX25jLmxlbmd0aF0gPSBkX29jW2RfaV07Cgl0aGlzLmNoaWxkcmVuID0gZF9uYzsKCWRfa2QucGFyZW50ID0gbnVsbDsKCWlmKCFkX25ld3ApCgl7CgkJZF9rZC5kZXRhY2hlZCA9IGRfa2QuZGVmcCA9IDA7CgkJaWYoZF9rZC5pc19pbWFnZSkgZGQuZ2V0SW1nKGRfa2QsIGRfa2Qub2ltZy5uYW1lLCAxKTsKCX0KfTsKRERPYmoucHJvdG90eXBlLmF0dGFjaENoaWxkID0gZnVuY3Rpb24oZF9rZCkKewoJKGRfa2QgPSAodHlwZW9mIGRfa2QgIT0gIm9iamVjdCIpPyB0aGlzLmNoaWxkcmVuW2Rfa2RdOiBkX2tkKS5kZXRhY2hlZCA9IDA7CglkX2tkLnNldFooZF9rZC5kZWZ6ICsgdGhpcy56LXRoaXMuZGVmeiwgMSk7Cn07CkRET2JqLnByb3RvdHlwZS5kZXRhY2hDaGlsZCA9IGZ1bmN0aW9uKGRfa2QpCnsKCShkX2tkID0gKHR5cGVvZiBkX2tkICE9ICJvYmplY3QiKT8gdGhpcy5jaGlsZHJlbltkX2tkXTogZF9rZCkuZGV0YWNoZWQgPSAxOwp9OwpERE9iai5wcm90b3R5cGUuc2V0WiA9IGZ1bmN0aW9uKGRfeCwgZF9rZHMsIGRfbykKewoJaWYoZF9rZHMpCgl7CgkJZm9yKHZhciBkX2R6ID0gZF94LXRoaXMueiwgZF9pID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGRfaTspCgkJCWlmKCEoZF9vID0gdGhpcy5jaGlsZHJlblstLWRfaV0pLmRldGFjaGVkKSBkX28uc2V0WihkX28ueitkX2R6LCAxKTsKCX0KCWRkLnogPSBNYXRoLm1heChkZC56LCB0aGlzLnogPSB0aGlzLmRpdj8gKCh0aGlzLmNzcyB8fCB0aGlzLmRpdikuekluZGV4ID0gZF94KSA6IDApOwp9OwpERE9iai5wcm90b3R5cGUubWF4aW1pemVaID0gZnVuY3Rpb24oKQp7Cgl0aGlzLnNldFooZGQueisxLCAxKTsKfTsKRERPYmoucHJvdG90eXBlLl9yZXNldFogPSBmdW5jdGlvbihkX28pCnsKCWlmKHRoaXMucmVfeiB8fCBkZC5yZV96KQoJewoJCXRoaXMuc2V0Wih0aGlzLmRlZnopOwoJCWZvcih2YXIgZF9pID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGRfaTspCgkJCWlmKCEoZF9vID0gdGhpcy5jaGlsZHJlblstLWRfaV0pLmRldGFjaGVkKSBkX28uc2V0WihkX28uZGVmeik7Cgl9Cn07CkRET2JqLnByb3RvdHlwZS5zZXRPcGFjaXR5ID0gZnVuY3Rpb24oZF94KQp7Cgl0aGlzLm9wYWNpdHkgPSBkX3g7Cgl0aGlzLl9zZXRPcGFSZWwoMS4wLCAxKTsKfTsKRERPYmoucHJvdG90eXBlLl9zZXRPcGFSZWwgPSBmdW5jdGlvbihkX3gsIGRfa2QsIGRfeSwgZF9vKQp7CglpZih0aGlzLmNzcyAmJiAodGhpcy5kaWFwaGFuIHx8IGRfa2QpKQoJewoJCWRfeSA9IHRoaXMub3BhY2l0eSpkX3g7CgkJaWYodHlwZW9mIHRoaXMuY3NzLk1vek9wYWNpdHkgIT0gZGRfdSkgdGhpcy5jc3MuTW96T3BhY2l0eSA9IGRfeTsKCQllbHNlIGlmICh0eXBlb2YgdGhpcy5jc3Mub3BhY2l0eSAhPSBkZF91KSB0aGlzLmNzcy5vcGFjaXR5ID0gZF95OwoJCWVsc2UgaWYodHlwZW9mIHRoaXMuY3NzLmZpbHRlciAhPSBkZF91KQoJCQl0aGlzLmNzcy5maWx0ZXIgPSAiQWxwaGEob3BhY2l0eT0iK3BhcnNlSW50KDEwMCpkX3kpKyIpIjsKCQlmb3IodmFyIGRfaSA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBkX2k7KQoJCQlpZighKGRfbyA9IHRoaXMuY2hpbGRyZW5bLS1kX2ldKS5kZXRhY2hlZCkgZF9vLl9zZXRPcGFSZWwoZF94LCAxKTsKCX0KfTsKRERPYmoucHJvdG90eXBlLnNldEN1cnNvciA9IGZ1bmN0aW9uKGRfeCkKewoJdGhpcy5fc2V0Q3JzKHRoaXMuY3Vyc29yID0gKGRfeC5pbmRleE9mKCdjOicpKzEpPyBkX3guc3Vic3RyaW5nKDIpIDogZF94KTsKfTsKRERPYmoucHJvdG90eXBlLl9zZXRDcnMgPSBmdW5jdGlvbihkX3gpCnsKCWlmKHRoaXMuY3NzKSB0aGlzLmNzcy5jdXJzb3IgPSAoKCFkZC5pZSB8fCBkZC5pZW1hYykgJiYgZF94ID09ICdoYW5kJyk/ICdwb2ludGVyJyA6IGRfeDsKfTsKRERPYmoucHJvdG90eXBlLnNldERyYWdnYWJsZSA9IGZ1bmN0aW9uKGRfeCkKewoJdGhpcy5ub2RyYWcgPSAhZF94KjE7Cgl0aGlzLl9zZXRDcnMoZF94PyB0aGlzLmN1cnNvciA6ICdhdXRvJyk7Cn07CkRET2JqLnByb3RvdHlwZS5zZXRSZXNpemFibGUgPSBmdW5jdGlvbihkX3gpCnsKCXRoaXMucmVzaXphYmxlID0gZF94KjE7CglpZihkX3gpIHRoaXMuc2NhbGFibGUgPSAwOwp9OwpERE9iai5wcm90b3R5cGUuc2V0U2NhbGFibGUgPSBmdW5jdGlvbihkX3gpCnsKCXRoaXMuc2NhbGFibGUgPSBkX3gqMTsKCWlmKGRfeCkgdGhpcy5yZXNpemFibGUgPSAwOwp9OwpERE9iai5wcm90b3R5cGUuc2V0SG9yaXpvbnRhbCA9IGZ1bmN0aW9uKGRfeCkKewoJdGhpcy5ob3Jpem9udGFsID0gZF94KjE7Cn07CkRET2JqLnByb3RvdHlwZS5zZXRWZXJ0aWNhbCA9IGZ1bmN0aW9uKGRfeCkKewoJdGhpcy52ZXJ0aWNhbCA9IGRfeCoxOwp9OwpERE9iai5wcm90b3R5cGUuZ2V0RWx0QmVsb3cgPSBmdW5jdGlvbihkX3JldCwgZF94LCBkX3kpCnsKCXZhciBkX28sIGRfY21wID0gLTEsIGRfaSA9IGRkLmVsZW1lbnRzLmxlbmd0aDsgd2hpbGUoZF9pLS0pCgl7CgkJZF9vID0gZGQuZWxlbWVudHNbZF9pXTsKCQlkX3ggPSBkX28ueC10aGlzLncvMjsKCQlkX3kgPSBkX28ueS10aGlzLmgvMjsKCQlpZihkX28udmlzaWJsZSAmJiBkX28ueiA8IHRoaXMueiAmJiB0aGlzLnggPj0gZF94ICYmIHRoaXMueCA8PSBkX3grZF9vLncgJiYgdGhpcy55ID49IGRfeSAmJiB0aGlzLnkgPD0gZF95K2Rfby5oKQoJCXsKCQkJaWYoZF9vLnogPiBkX2NtcCkKCQkJewoJCQkJZF9jbXAgPSBkX28uejsKCQkJCWRfcmV0ID0gZF9vOwoJCQl9CgkJfQoJfQoJcmV0dXJuIGRfcmV0Owp9OwpERE9iai5wcm90b3R5cGUuZGVsID0gZnVuY3Rpb24oZF9vcywgZF9vKQp7Cgl2YXIgZF9pLCBkX2w7CglpZih0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCkgdGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyk7CglpZih0aGlzLm9yaWdpbmFsKQoJewoJCXRoaXMuaGlkZSgpOwoJCWlmKHRoaXMub3JpZ2luYWwuY29waWVzKQoJCXsKCQkJZF9vcyA9IG5ldyBBcnJheSgpOwoJCQlmb3IoZF9sID0gdGhpcy5vcmlnaW5hbC5jb3BpZXMubGVuZ3RoLCBkX2kgPSAwOyBkX2kgPCBkX2w7IGRfaSsrKQoJCQkJaWYoKGRfbyA9IHRoaXMub3JpZ2luYWwuY29waWVzW2RfaV0pICE9IHRoaXMpIGRfb3NbZF9vLm5hbWVdID0gZF9vc1tkX29zLmxlbmd0aF0gPSBkX287CgkJCXRoaXMub3JpZ2luYWwuY29waWVzID0gZF9vczsKCQl9Cgl9CgllbHNlIGlmKHRoaXMuaXNfaW1hZ2UpCgl7CgkJdGhpcy5oaWRlKCk7CgkJaWYodGhpcy5vaW1nKQoJCXsKCQkgIGlmKGRkLm40KSB0aGlzLm9pbWcuc3JjID0gdGhpcy5kZWZzcmM7CgkJICBlbHNlIHRoaXMub2ltZy5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnOwoJCX0KCX0KCWVsc2UgaWYodGhpcy5tb3ZlVG8pCgl7CgkJaWYodGhpcy5jc3MpIHRoaXMuY3NzLmN1cnNvciA9ICdkZWZhdWx0JzsKCQl0aGlzLm1vdmVUbyh0aGlzLmRlZngsIHRoaXMuZGVmeSk7CgkJdGhpcy5yZXNpemVUbyh0aGlzLmRlZncsIHRoaXMuZGVmaCk7Cgl9CglkX29zID0gbmV3IEFycmF5KCk7Cglmb3IoZF9sID0gZGQuZWxlbWVudHMubGVuZ3RoLCBkX2kgPSAwOyBkX2kgPCBkX2w7IGRfaSsrKQoJewoJCWlmKChkX28gPSBkZC5lbGVtZW50c1tkX2ldKSAhPSB0aGlzKSBkX29zW2Rfby5uYW1lXSA9IGRfb3NbZF9vLmluZGV4ID0gZF9vcy5sZW5ndGhdID0gZF9vOwoJCWVsc2UgZF9vLl9mcmVlKCk7Cgl9CglkZC5lbGVtZW50cyA9IGRfb3M7CglpZighZGQubjQpIGRkLnJlY2FsYygpOwp9OwpERE9iai5wcm90b3R5cGUuX2ZyZWUgPSBmdW5jdGlvbigpCnsKCWZvcih2YXIgZF9pIGluIHRoaXMpCgkJdGhpc1tkX2ldID0gbnVsbDsKCWRkLmVsZW1lbnRzW3RoaXMubmFtZV0gPSBudWxsOwp9OwpkZC5uNFJlY3RWaXMgPSBmdW5jdGlvbih2aXMpCnsKCWZvcih2YXIgZF9pID0gNDsgZF9pOykKCXstLWRfaTsKCQlkZC5yZWN0SVtkX2ldLnZpc2liaWxpdHkgPSBkZC5yZWN0QVtkX2ldLnZpc2liaWxpdHkgPSB2aXM/ICdzaG93JyA6ICdoaWRlJzsKCQlpZih2aXMpIGRkLnJlY3RJW2RfaV0uekluZGV4ID0gZGQucmVjdEFbZF9pXS56SW5kZXggPSBkZC56KzI7Cgl9Cn07CmRkLm40UmVjdFBvcyA9IGZ1bmN0aW9uKGRfbywgZF94LCBkX3ksIGRfdywgZF9oKQp7CglkX28ueCA9IGRfeDsKCWRfby55ID0gZF95OwoJZF9vLmNsaXAud2lkdGggPSBkX3c7CglkX28uY2xpcC5oZWlnaHQgPSBkX2g7Cn07Ci8vIE5ONDogRHJhdyBpbWcgc2l6aW5nIHJlY3QKZGQubjRSZWN0ID0gZnVuY3Rpb24oZF93LCBkX2gpCnsKCXZhciBkX2k7CglpZighZGQucmVjdEkpCgl7CgkJZGQucmVjdEkgPSBuZXcgQXJyYXkoKTsKCQlkZC5yZWN0QSA9IG5ldyBBcnJheSgpOwoJfQoJaWYoIWRkLnJlY3RJWzBdKQoJewoJCWZvcihkX2kgPSA0OyBkX2k7KQoJCXsKCQkJKGRkLnJlY3RJWy0tZF9pXSA9IG5ldyBMYXllcigxKSkuYmdDb2xvciA9ICcjMDAwMDAwJzsKCQkJKGRkLnJlY3RBW2RfaV0gPSBuZXcgTGF5ZXIoMSkpLmJnQ29sb3IgPSAnI2ZmZmZmZic7CgkJfQoJfQoJaWYoIWRkLnJlY3RJWzBdLnZpc2liaWxpdHkgfHwgZGQucmVjdElbMF0udmlzaWJpbGl0eSA9PSAnaGlkZScpIGRkLm40UmVjdFZpcygxKTsKCWRkLm9iai53ID0gZF93OwoJZGQub2JqLmggPSBkX2g7Cglmb3IoZF9pID0gNDsgZF9pOykKCXstLWRfaTsKCQlkZC5uNFJlY3RQb3MoZGQucmVjdElbZF9pXSwgZGQub2JqLnggKyAoIShkX2ktMSk/IChkZC5vYmoudy0xKSA6IDApLCBkZC5vYmoueSArICghKGRfaS0yKT8gKGRkLm9iai5oLTEpIDogMCksIGRfaSYxIHx8IGRkLm9iai53LCAhKGRfaSYxKSB8fCBkZC5vYmouaCk7CgkJZGQubjRSZWN0UG9zKGRkLnJlY3RBW2RfaV0sICEoZF9pLTEpPyBkZC5yZWN0SVsxXS54KzEgOiAoZGQub2JqLngtMSksICEoZF9pLTIpPyBkZC5yZWN0SVsyXS55KzEgOiAoZGQub2JqLnktMSksIGRfaSYxIHx8IGRkLm9iai53KzIsICEoZF9pJjEpIHx8IGRkLm9iai5oKzIpOwoJfQp9OwpkZC5yZXN6VG8gPSBmdW5jdGlvbihkX3csIGRfaCkKewoJaWYoZGQubjQgJiYgZGQub2JqLmlzX2ltYWdlKSBkZC5uNFJlY3QoZF93LCBkX2gpOwoJZWxzZSBkZC5vYmoucmVzaXplVG8oZF93LCBkX2gpOwp9OwpkZC5lbWJlZFZpcyA9IGZ1bmN0aW9uKGRfdmlzKQp7Cgl2YXIgZF9vID0gbmV3IEFycmF5KCdpZnJhbWUnLCAnYXBwbGV0JywgJ2VtYmVkJywgJ29iamVjdCcpOwoJZm9yKHZhciBkX2kgPSBkX28ubGVuZ3RoOyBkX2k7KQoJey0tZF9pOwoJCXZhciBkX3AgPSBkZC5pZT8gZG9jdW1lbnQuYWxsLnRhZ3MoZF9vW2RfaV0pIDogZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWU/IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKGRfb1tkX2ldKSA6IG51bGw7CgkJaWYoZF9wKQoJCXsKCQkJZm9yKHZhciBkX2ogPSBkX3AubGVuZ3RoOyBkX2o7KQoJCQl7CgkJCQl2YXIgZF9xID0gZF9wWy0tZF9qXTsKCQkJCXdoaWxlKGRfcS5vZmZzZXRQYXJlbnQgfHwgZF9xLnBhcmVudE5vZGUpCgkJCQl7CgkJCQkJaWYoKGRfcSA9IGRfcS5wYXJlbnROb2RlIHx8IGRfcS5vZmZzZXRQYXJlbnQgfHwgbnVsbCkgPT0gZGQub2JqLmRpdikKCQkJCQl7CgkJCQkJCWRfcFtkX2pdLnN0eWxlLnZpc2liaWxpdHkgPSBkX3ZpczsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQp9OwoKZGQubWF4T2ZmWCA9IGZ1bmN0aW9uKGRfeCwgZF95KQp7CglyZXR1cm4oCgkJKGRkLm9iai5tYXhvZmZsKzEgJiYgKGRfeSA9IGRkLm9iai5kZWZ4LWRkLm9iai5tYXhvZmZsKS1kX3ggPiAwCgkJfHwgZGQub2JqLm1heG9mZnIrMSAmJiAoZF95ID0gZGQub2JqLmRlZngrZGQub2JqLm1heG9mZnIpLWRfeCA8IDApPyBkX3kKCQk6IGRfeAoJKTsKfTsKZGQubWF4T2ZmWSA9IGZ1bmN0aW9uKGRfeCwgZF95KQp7CglyZXR1cm4oCgkJKGRkLm9iai5tYXhvZmZ0KzEgJiYgKGRfeSA9IGRkLm9iai5kZWZ5LWRkLm9iai5tYXhvZmZ0KS1kX3ggPiAwCgkJfHwgZGQub2JqLm1heG9mZmIrMSAmJiAoZF95ID0gZGQub2JqLmRlZnkrZGQub2JqLm1heG9mZmIpLWRfeCA8IDApPyBkX3kKCQk6IGRfeAoJKTsKfTsKZGQuaW5XbmRXID0gZnVuY3Rpb24oZF94LCBkX3kpCnsKCXZhciBkX3d4ID0gZGQuZ2V0U2Nyb2xsWCgpLAoJZF93dyA9IGRkLmdldFduZFcoKTsKCXJldHVybigKCQkoKGRfeSA9IGRfd3grMiktZF94ID4gMCkgfHwgKChkX3kgPSBkX3d4K2Rfd3crZGQub2JqLnctMiktZF94IDwgMCk/IGRfeQoJCTogZF94CgkpOwp9OwpkZC5pblduZEggPSBmdW5jdGlvbihkX3gsIGRfeSkKewoJdmFyIGRfd3kgPSBkZC5nZXRTY3JvbGxZKCksCglkX3doID0gZGQuZ2V0V25kSCgpOwoJcmV0dXJuKAoJCSgoZF95ID0gZF93eSsyKS1kX3ggPiAwKSB8fCAoKGRfeSA9IGRfd3krZF93aCtkZC5vYmouaC0yKS1kX3ggPCAwKT8gZF95CgkJOiBkX3gKCSk7Cn07Ci8vIFRoZXNlIHR3byBmdW5jcyBsaW1pdCB0aGUgc2l6ZSBvZiBlbGVtZW50IHdoZW4gbW91c2VyZXNpemVkLgovLyBJbXBsZW1lbnRlZCAyMi41LjIwMDMgYnkgR3JlZ29yIEx0b2xmLCBtb2RpZmllZCBieSBXYWx0ZXIgWm9ybgpkZC5saW1XID0gZnVuY3Rpb24oZF93KQp7CglyZXR1cm4oCgkJKGRkLm9iai5taW53LWRfdyA+IDApPyBkZC5vYmoubWludwoJCTogKGRkLm9iai5tYXh3ID4gMCAmJiBkZC5vYmoubWF4dy1kX3cgPCAwKT8gZGQub2JqLm1heHcKCQk6IGRfdwoJKTsKfTsKZGQubGltSCA9IGZ1bmN0aW9uKGRfaCkKewoJcmV0dXJuKAoJCShkZC5vYmoubWluaC1kX2ggPiAwKT8gZGQub2JqLm1pbmgKCQk6IChkZC5vYmoubWF4aCA+IDAgJiYgZGQub2JqLm1heGgtZF9oIDwgMCk/IGRkLm9iai5tYXhoCgkJOiBkX2gKCSk7Cn07Ci8vIE9wdGlvbmFsIGF1dG9zY3JvbGwtcGFnZSBmdW5jdGlvbmFsaXR5LiBDb3VydGVzeSBDZWRyaWMgU2F2YXJlc2UuCi8vIE1vZGlmaWVkIGJ5IFdhbHRlciBab3JuLgpmdW5jdGlvbiBERFNjcm9sbCgpCnsKCWlmKCFkZC5vYmogfHwgIWRkLm9iai5zY3JvbGwgJiYgIWRkLnNjcm9sbCB8fCBkZC5pZTQgfHwgZGQud2hyYXRpbykKCXsKCQlkZC5zY3J4ID0gZGQuc2NyeSA9IDA7CgkJcmV0dXJuOwoJfQoJdmFyIGRfYm5kID0gMHgxYywKCWRfd3ggPSBkZC5nZXRTY3JvbGxYKCksIGRfd3kgPSBkZC5nZXRTY3JvbGxZKCk7CglpZihkZC5tc21vdmVkKQoJewoJCXZhciBkX3d3ID0gZGQuZ2V0V25kVygpLCBkX3doID0gZGQuZ2V0V25kSCgpLCBkX3k7CgkJZGQuc2NyeCA9ICgoZF95ID0gZGQuZS54LWRfd3ctZF93eCtkX2JuZCkgPiAwKT8gKGRfeT4+PTIpKmRfeQoJCQk6ICgoZF95ID0gZF93eCtkX2JuZC1kZC5lLngpID4gMCk/IC0oZF95Pj49MikqZF95CgkJCTogMDsKCQlkZC5zY3J5ID0gKChkX3kgPSBkZC5lLnktZF93aC1kX3d5K2RfYm5kKSA+IDApPyAoZF95Pj49MikqZF95CgkJCTogKChkX3kgPSBkX3d5K2RfYm5kLWRkLmUueSkgPiAwKT8gLShkX3k+Pj0yKSpkX3kKCQkJOiAwOwoJfQoJaWYoZGQuc2NyeCB8fCBkZC5zY3J5KQoJewoJCXdpbmRvdy5zY3JvbGxUbygKCQkJZF93eCArIChkZC5zY3J4ID0gZGQub2JqLmlzX3Jlc2l6ZWQ/IGRkLmxpbVcoZGQub2JqLncrZGQuc2NyeCktZGQub2JqLncgOiBkZC5vYmoudmVydGljYWw/IDAgOiAoZGQubWF4T2ZmWChkZC5vYmoueCtkZC5zY3J4KS1kZC5vYmoueCkpLAoJCQlkX3d5ICsgKGRkLnNjcnkgPSBkZC5vYmouaXNfcmVzaXplZD8gZGQubGltSChkZC5vYmouaCtkZC5zY3J5KS1kZC5vYmouaCA6IGRkLm9iai5ob3Jpem9udGFsPyAwIDogKGRkLm1heE9mZlkoZGQub2JqLnkrZGQuc2NyeSktZGQub2JqLnkpKQoJCSk7CgkJZGQub2JqLmlzX2RyYWdnZWQ/IGRkLm9iai5tb3ZlVG8oZGQub2JqLngrZGQuZ2V0U2Nyb2xsWCgpLWRfd3gsIGRkLm9iai55K2RkLmdldFNjcm9sbFkoKS1kX3d5KQoJCQk6IGRkLnJlc3pUbyhkZC5vYmoudytkZC5nZXRTY3JvbGxYKCktZF93eCwgZGQub2JqLmgrZGQuZ2V0U2Nyb2xsWSgpLWRfd3kpOwoJfQoJZGQubXNtb3ZlZCA9IDA7Cgl3aW5kb3cuc2V0VGltZW91dCgnRERTY3JvbGwoKScsIDB4MzMpOwp9CmZ1bmN0aW9uIFBJQ0soZF9ldikKewoJZGQuZSA9IG5ldyBkZC5ldnQoZF9ldik7CglpZihkZC5lLnggPj0gZGQuZ2V0V25kVygpK2RkLmdldFNjcm9sbFgoKSB8fCBkZC5lLnkgPj0gZGQuZ2V0V25kSCgpK2RkLmdldFNjcm9sbFkoKSkgcmV0dXJuIHRydWU7IC8vIG9uIHNjcm9sbGJhcgoJZm9yKHZhciBkX28sIGRfdCwgZF9jbXAgPSAtMSwgZF9pID0gZGQuZWxlbWVudHMubGVuZ3RoOyBkX2k7KQoJewoJCWRfbyA9IGRkLmVsZW1lbnRzWy0tZF9pXTsKCQlpZihkZC5uNCAmJiBkZC5lLmJ1dCA+IDEgJiYgZGQuZS5zcmMgPT0gZF9vLm9pbWcgJiYgIWRfby5jbG9uZSkgcmV0dXJuIGZhbHNlOwoJCWlmKGRfby52aXNpYmxlICYmIGRkLmUuYnV0IDw9IDEgJiYgZGQuZS54ID49IGRfby54ICYmIGRkLmUueCA8PSBkX28ueCtkX28udyAmJiBkZC5lLnkgPj0gZF9vLnkgJiYgZGQuZS55IDw9IGRfby55K2Rfby5oKQoJCXsKCQkJaWYoZF9vLnogPiBkX2NtcCAmJiAoZF90ID0gZGQuZS5zcmMudGFnKS5pbmRleE9mKCdpbnB1JykgPCAwICYmIGRfdC5pbmRleE9mKCd0ZXh0YScpIDwgMCAmJiBkX3QuaW5kZXhPZignc2VsZScpIDwgMCAmJiBkX3QuaW5kZXhPZignb3B0aScpIDwgMCAmJiBkX3QuaW5kZXhPZignc2Nyb2wnKSA8IDApCgkJCXsKCQkJCWRfY21wID0gZF9vLno7CgkJCQlkZC5vYmogPSBkX287CgkJCX0KCQl9Cgl9CglpZihkZC5vYmopCgl7CgkJaWYoZGQub2JqLm5vZHJhZykgZGQub2JqID0gbnVsbDsKCQllbHNlCgkJewoJCQlkZC5lLmUuY2FuY2VsQnViYmxlID0gdHJ1ZTsKCQkJdmFyIGRfcnN6ID0gZGQuZS5tb2RpZktleSAmJiAoZGQub2JqLnJlc2l6YWJsZSB8fCBkZC5vYmouc2NhbGFibGUpOwoJCQlpZihkZC5vcCkKCQkJewoJCQkJKGRfbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdPcEJsVXInKSkuc3R5bGUucGl4ZWxMZWZ0ID0gZGQuZS54OwoJCQkJZF9vLnN0eWxlLnBpeGVsVG9wID0gZGQuZS55OwoJCQkJKGRfbyA9IGRfby5jaGlsZHJlblswXS5jaGlsZHJlblswXSkuZm9jdXMoKTsKCQkJCWRfby5ibHVyKCk7CgkJCX0KCQkJZWxzZSBpZihkZC5pZSAmJiAhZGQuaWU0KQoJCQl7CgkJCQlpZihkb2N1bWVudC5zZWxlY3Rpb24gJiYgZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KSBkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkoKTsKCQkJCWRkLmRiLm9uc2VsZWN0c3RhcnQgPSBmdW5jdGlvbigpCgkJCQl7CgkJCQkJZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTsKCQkJCX07CgkJCX0KCQkJaWYoZF9yc3opCgkJCXsKCQkJCWRkLm9iai5fc2V0Q3JzKCdzZS1yZXNpemUnKTsKCQkJCWRkLm9iai5pc19yZXNpemVkID0gMTsKCQkJCWRkLndocmF0aW8gPSBkZC5vYmouc2NhbGFibGU/IGRkLm9iai5kZWZ3L2RkLm9iai5kZWZoIDogMDsKCQkJCWlmKGRkLmllKQoJCQkJewoJCQkJCWlmKGRkLmllNCkKCQkJCQl7CgkJCQkJCXdpbmRvdy5kZF94ID0gZGQuZ2V0U2Nyb2xsWCgpOwoJCQkJCQl3aW5kb3cuZGRfeSA9IGRkLmdldFNjcm9sbFkoKTsKCQkJCQl9CgkJCQkJc2V0VGltZW91dCgKCQkJCQkJJ2lmKGRkLm9iaiAmJiBkb2N1bWVudC5zZWxlY3Rpb24gJiYgZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KScrCgkJCQkJCSd7JysKCQkJCQkJCSdkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkoKTsnKwoJCQkJCQkJJ2lmKGRkLmllNCkgd2luZG93LnNjcm9sbFRvKHdpbmRvdy5kZF94LCB3aW5kb3cuZGRfeSk7JysKCQkJCQkJJ30nCgkJCQkJLDApOwoJCQkJfQoJCQkJZGQuc2V0TW92SGRsKFJFU0laRSk7CgkJCQlkZC5yZXN6VG8oZGQub2JqLncsIGRkLm9iai5oKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWRkLm9iai5pc19kcmFnZ2VkID0gMTsKCQkJCWRkLnNldE1vdkhkbChEUkFHKTsKCQkJfQoJCQlkZC5zZXRVcEhkbChEUk9QKTsKCQkJZGQuZW1iZWRWaXMoJ2hpZGRlbicpOwoJCQlkZC5vYmouX3NldE9wYVJlbCgwLjcpOwoJCQlkZC5vYmoubWF4aW1pemVaKCk7CgkJCWRkLm9meCA9IGRkLm9iai54K2RkLm9iai53LWRkLmUueDsKCQkJZGQub2Z5ID0gZGQub2JqLnkrZGQub2JqLmgtZGQuZS55OwoJCQlpZih3aW5kb3cubXlfUGlja0Z1bmMpIG15X1BpY2tGdW5jKCk7CgkJCWlmKGRkLm9iai5waWNrRnVuYykgZGQub2JqLnBpY2tGdW5jKCk7CgkJCUREU2Nyb2xsKCk7CgkJCXJldHVybiAhKAoJCQkJZGQub2JqLmlzX3Jlc2l6ZWQKCQkJCXx8IGRkLm40ICYmIGRkLm9iai5pc19pbWFnZQoJCQkJfHwgZGQubjYgfHwgZGQudzNjCgkJCSk7CgkJfQoJfQoJaWYoZGQuZG93bkZ1bmMpIHJldHVybiBkZC5kb3duRnVuYyhkX2V2KTsKCXJldHVybiB0cnVlOwp9CmZ1bmN0aW9uIERSQUcoZF9ldikKewoJaWYoIWRkLm9iaiB8fCAhZGQub2JqLnZpc2libGUpIHJldHVybiB0cnVlOwoJaWYoZGQuaWU0IHx8IGRkLnczYyB8fCBkZC5uNiB8fCBkZC5vYmouY2hpbGRyZW4ubGVuZ3RoID4gMHhmKQoJewoJCWlmKGRkLndhaXQpIHJldHVybiBmYWxzZTsKCQlkZC53YWl0ID0gMTsKCQlzZXRUaW1lb3V0KCdkZC53YWl0ID0gMDsnLCBkZC50V2FpdCk7Cgl9CglkZC5lID0gbmV3IGRkLmV2dChkX2V2KTsKCWlmKGRkLmllICYmICFkZC5lLmJ1dCkKCXsKCQlEUk9QKGRfZXYpOwoJCXJldHVybiB0cnVlOwoJfQoJZGQubXNtb3ZlZCA9IDE7CglkZC5vYmoubW92ZVRvKAoJCWRkLm9iai52ZXJ0aWNhbD8gZGQub2JqLnggOiBkZC5tYXhPZmZYKGRkLmluV25kVyhkZC5vZngrZGQuZS54KS1kZC5vYmoudyksCgkJZGQub2JqLmhvcml6b250YWw/IGRkLm9iai55IDogZGQubWF4T2ZmWShkZC5pblduZEgoZGQub2Z5K2RkLmUueSktZGQub2JqLmgpCgkpOwoKCWlmKHdpbmRvdy5teV9EcmFnRnVuYykgbXlfRHJhZ0Z1bmMoKTsKCWlmKGRkLm9iai5kcmFnRnVuYykgZGQub2JqLmRyYWdGdW5jKCk7CglpZihkZC5tb3ZlRnVuYykgcmV0dXJuIGRkLm1vdmVGdW5jKGRfZXYpOwoJcmV0dXJuIGZhbHNlOwp9CmZ1bmN0aW9uIFJFU0laRShkX2V2KQp7CglpZighZGQub2JqIHx8ICFkZC5vYmoudmlzaWJsZSkgcmV0dXJuIHRydWU7CglpZihkZC53YWl0KSByZXR1cm4gZmFsc2U7CglkZC53YWl0ID0gMTsKCXNldFRpbWVvdXQoJ2RkLndhaXQgPSAwOycsIGRkLnRXYWl0KTsKCWRkLmUgPSBuZXcgZGQuZXZ0KGRfZXYpOwoJaWYoZGQuaWUgJiYgIWRkLmUuYnV0KQoJewoJCURST1AoZF9ldik7CgkJcmV0dXJuIHRydWU7Cgl9CglkZC5tc21vdmVkID0gMTsKCXZhciBkX3cgPSBkZC5saW1XKGRkLmluV25kVyhkZC5vZngrZGQuZS54KS1kZC5vYmoueCksIGRfaDsKCWlmKCFkZC53aHJhdGlvKSBkX2ggPSBkZC5saW1IKGRkLmluV25kSChkZC5vZnkrZGQuZS55KS1kZC5vYmoueSk7CgllbHNlCgl7CgkJZF9oID0gZGQubGltSChkZC5pblduZEgoTWF0aC5yb3VuZChkX3cvZGQud2hyYXRpbykrZGQub2JqLnkpLWRkLm9iai55KTsKCQlkX3cgPSBNYXRoLnJvdW5kKGRfaCpkZC53aHJhdGlvKTsKCX0KCWRkLnJlc3pUbyhkX3csIGRfaCk7CglpZih3aW5kb3cubXlfUmVzaXplRnVuYykgbXlfUmVzaXplRnVuYygpOwoJaWYoZGQub2JqLnJlc2l6ZUZ1bmMpIGRkLm9iai5yZXNpemVGdW5jKCk7CglpZihkZC5tb3ZlRnVuYykgcmV0dXJuIGRkLm1vdmVGdW5jKGRfZXYpOwoJcmV0dXJuIGZhbHNlOwp9CmZ1bmN0aW9uIERST1AoZF9ldikKewoJaWYoZGQub2JqKQoJewoJCWlmKGRkLm9iai5pc19kcmFnZ2VkKQoJCXsKCQkJaWYoIWRkLm9iai5pc19pbWFnZSkgZGQuZ2V0V0goZGQub2JqKTsKCQl9CgkJZWxzZSBpZihkZC5uNCkKCQl7CgkJCWlmKGRkLm9iai5pc19pbWFnZSkKCQkJewoJCQkJZGQubjRSZWN0VmlzKDApOwoJCQkJZGQub2JqLnJlc2l6ZVRvKGRkLm9iai53LCBkZC5vYmouaCk7CgkJCX0KCQl9CgkJaWYoIWRkLm40IHx8ICFkZC5vYmouaXNfaW1hZ2UpIGRkLnJlY2FsYygpOwoJCWRkLnNldE1vdkhkbChkZC5tb3ZlRnVuYyk7CgkJZGQuc2V0VXBIZGwoZGQudXBGdW5jKTsKCQlpZihkZC5kYikgZGQuZGIub25zZWxlY3RzdGFydCA9IG51bGw7CgkJZGQub2JqLl9zZXRPcGFSZWwoMS4wKTsKCQlkZC5vYmouX3NldENycyhkZC5vYmouY3Vyc29yKTsKCQlkZC5lbWJlZFZpcygndmlzaWJsZScpOwoJCWRkLm9iai5fcmVzZXRaKCk7CgkJZGQuZSA9IG5ldyBkZC5ldnQoZF9ldik7CgkJaWYod2luZG93Lm15X0Ryb3BGdW5jKSBteV9Ecm9wRnVuYygpOwoJCWlmKGRkLm9iai5kcm9wRnVuYykgZGQub2JqLmRyb3BGdW5jKCk7CgkJZGQubXNtb3ZlZCA9IGRkLm9iai5pc19kcmFnZ2VkID0gZGQub2JqLmlzX3Jlc2l6ZWQgPSBkZC53aHJhdGlvID0gMDsKCQlkZC5vYmogPSBudWxsOwoJfQoJZGQuc2V0RHduSGRsKFBJQ0spOwp9CmZ1bmN0aW9uIFNFVF9ESFRNTCgpCnsKCXZhciBkX2EgPSBhcmd1bWVudHMsIGRfYWksIGRfaHRtID0gJycsIGRfbywgZF9pID0gZF9hLmxlbmd0aDsKCXdoaWxlKGRfaSkKCXsKCQlpZighKGRfYWkgPSBkX2FbLS1kX2ldKS5pbmRleE9mKCdjOicpKSBkZC5jdXJzb3IgPSBkX2FpLnN1YnN0cmluZygyKTsKCQllbHNlIGlmKGRfYWkgPT0gTk9fQUxUKSBkZC5ub2FsdCA9IDE7CgkJZWxzZSBpZihkX2FpID09IFNDUk9MTCkgZGQuc2Nyb2xsID0gMTsKCQllbHNlIGlmKGRfYWkgPT0gUkVTRVRfWikgZGQucmVfeiA9IDE7CgkJZWxzZSBpZihkX2FpID09IFJFU0laQUJMRSkgZGQucmVzaXphYmxlID0gMTsKCQllbHNlIGlmKGRfYWkgPT0gU0NBTEFCTEUpIGRkLnNjYWxhYmxlID0gMTsKCQllbHNlIGlmKGRfYWkgPT0gVFJBTlNQQVJFTlQpIGRkLmRpYXBoYW4gPSAxOwoJCWVsc2UKCQl7CgkJCWRfbyA9IG5ldyBERE9iaihkX2FpKTsKCQkJZGQuYWRkRWx0KGRfbyk7CgkJCWRfaHRtICs9IGRfby50X2h0bSB8fCAnJzsKCQkJaWYoZF9vLm9pbWcgJiYgZF9vLmNweV9uKQoJCQl7CgkJCQlmb3IodmFyIGRfbCA9IGRfby5jcHlfbiwgZF9qID0gMDsgZF9qIDwgZF9sOykKCQkJCXsKCQkJCQl2YXIgZF9wID0gbmV3IERET2JqKGRfby5uYW1lK2Rfby5jbWQsICsrZF9qKTsKCQkJCQlkZC5hZGRFbHQoZF9wLCBkX28pOwoJCQkJCWRfcC5kZWZ6ID0gZF9vLmRlZnorZF9qOwoJCQkJCWRfcC5vcmlnaW5hbCA9IGRfbzsKCQkJCQlkX2h0bSArPSBkX3AudF9odG07CgkJCQl9CgkJCX0KCQl9Cgl9CglpZiAoZGQubjQgfHwgZGQubjYgfHwgZGQuaWUgfHwgZGQub3AgfHwgZGQudzNjKSBkb2N1bWVudC53cml0ZSgKCQkoZGQubjQ/ICc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiPjxcL2Rpdj5cbicKCQk6IChkZC5vcCAmJiAhZGQub3A2KT8gJzxkaXYgaWQ9Ik9wQmxVciIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3Zpc2liaWxpdHk6aGlkZGVuO3dpZHRoOjBweDtoZWlnaHQ6MHB4OyI+PGZvcm0+PGlucHV0IHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDowcHg7aGVpZ2h0OjBweDsiPjxcL2Zvcm0+PFwvZGl2PicKCQk6ICcnKSArIGRfaHRtCgkpOwoJZGQueiA9IDB4MzM7Cglmb3IoZF9pID0gZGQuZWxlbWVudHMubGVuZ3RoOyBkX2k7KQoJewoJCWRkLmFkZFByb3BzKGRfbyA9IGRkLmVsZW1lbnRzWy0tZF9pXSk7CgkJaWYoZF9vLmlzX2ltYWdlICYmICFkX28ub3JpZ2luYWwgJiYgIWRfby5jbG9uZSkKCQkJZGQubjQ/IGRfby5vaW1nLnNyYyA9IHNwYWNlciA6IGRfby5vaW1nLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsKCX0KCWRkLm1rV3pEb20oKTsKCWlmKHdpbmRvdy5vbmxvYWQpIGRkLmxvYWRGdW5jID0gd2luZG93Lm9ubG9hZDsKCWlmKHdpbmRvdy5vbnVubG9hZCkgZGQudWxvYWRGdW5jID0gd2luZG93Lm9udW5sb2FkOwoJd2luZG93Lm9ubG9hZCA9IGRkLmluaXR6OwoJd2luZG93Lm9udW5sb2FkID0gZGQuZmlubHo7CglkZC5zZXREd25IZGwoUElDSyk7Cn0KZnVuY3Rpb24gQUREX0RIVE1MKCkgLy8gbGF5ZXJzIG9ubHkhCnsKCXZhciBkX2EgPSBhcmd1bWVudHMsIGRfbywgZF9pID0gZF9hLmxlbmd0aDsgd2hpbGUoZF9pKQoJewoJCWRfbyA9IG5ldyBERE9iaihkX2FbLS1kX2ldKTsKCQlkZC5hZGRFbHQoZF9vKTsKCQlkZC5hZGRQcm9wcyhkX28pOwoJfQoJZGQubWtXekRvbSgpOwp9CgoKCgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8gSWYgbm90IG5lZWRlZCwgYWxsIGNvZGUgYmVsb3cgdGhpcyBsaW5lIG1heSBiZSByZW1vdmVkCgoKLy8gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKZGQuZCA9IGRvY3VtZW50OwkJCS8vIDwgdi4gMi43Mgp2YXIgUkVTRVRfWklOREVYID0gUkVTRVRfWjsgLy8gPCAzLjQ0CnZhciBLRVlET1dOX1JFU0laRSA9IFJFU0laQUJMRTsgLy8gPCA0LjQzCnZhciBDVVJTT1JfUE9JTlRFUiA9IENVUlNPUl9IQU5EOyAvLyA8IDQuNDQKdmFyIE5PX1NDUk9MTCA9ICcnOwkJIC8vIDwgdi4gNC40OQoKCgoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vIEZVTkNUSU9OUyBGT1IgRVhURU5ERUQgU0NSSVBUSU5HCi8vIFVzZSB0aGVzZSBmb3IgeW91ciBvd24gZXh0ZW5zaW9ucywKLy8gb3IgdG8gY2FsbCBmdW5jdGlvbnMgZGVmaW5lZCBlbHNld2hlcmUKCgoKLyogbXlfUGlja0Z1bmMgSVMgQVVUT01BVElDQUxMWSBDQUxMRUQgV0hFTiBBTiBJVEVNIFNUQVJUUyBUTyBCRSBEUkFHR0VELgpUaGUgZm9sbG93aW5nIG9iamVjdHMvcHJvcGVydGllcyBhcmUgYWNjZXNzaWJsZSBmcm9tIGhlcmU6CgotIGRkLmU6IGN1cnJlbnQgbW91c2UgZXZlbnQKLSBkZC5lLnByb3BlcnR5OiBhY2Nlc3MgdG8gYSBwcm9wZXJ0eSBvZiB0aGUgY3VycmVudCBtb3VzZSBldmVudC4KICBNb3N0bHkgcmVxdWVzdGVkIHByb3BlcnRpZXM6CiAgLSBkZC5lLng6IGRvY3VtZW50LXJlbGF0ZWQgeCBjby1vcmRpbmF0ZQogIC0gZGQuZS55OiBkb2N1bWVudC1yZWxhdGVkIHkgY28tb3JkCiAgLSBkZC5lLnNyYzogdGFyZ2V0IG9mIG1vdXNlIGV2ZW50IChub3QgaWRlbnRpY2FsIHdpdGggdGhlIGRyYWcgZHJvcCBvYmplY3QgaXRzZWxmKS4KICAtIGRkLmUuYnV0dG9uOiBjdXJyZW50bHkgcHJlc3NlZCBtb3VzZSBidXR0b24uIExlZnQgYnV0dG9uOiBkZC5lLmJ1dHRvbiA8PSAxCgotIGRkLm9iajogcmVmZXJlbmNlIHRvIGN1cnJlbnRseSBkcmFnZ2VkIGl0ZW0uCi0gZGQub2JqLnByb3BlcnR5OiBhY2Nlc3MgdG8gYW55IHByb3BlcnR5IG9mIHRoYXQgaXRlbS4KLSBkZC5vYmoubWV0aG9kKCk6IGZvciBleGFtcGxlIGRkLm9iai5yZXNpemVUbygpIG9yIGRkLm9iai5zd2FwSW1hZ2UoKSAuCiAgTW9zdGx5IHJlcXVlc3RlZCBwcm9wZXJ0aWVzOgoJLSBkZC5vYmoubmFtZTogaW1hZ2UgbmFtZSBvciBsYXllciBJRCBwYXNzZWQgdG8gU0VUX0RIVE1MKCk7CgktIGRkLm9iai54IGFuZCBkZC5vYmoueTogY28tb3JkaW5hdGVzOwoJLSBkZC5vYmoudyBhbmQgZGQub2JqLmg6IHNpemU7CgktIGRkLm9iai5pc19kcmFnZ2VkOiAxIHdoaWxlIGl0ZW0gaXMgZHJhZ2dlZCwgZWxzZSAwOwoJLSBkZC5vYmouaXNfcmVzaXplZDogMSB3aGlsZSBpdGVtIGlzIHJlc2l6ZWQsIGkuZS4gaWYgPGN0cmw+IG9yIDxzaGlmdD4gaXMgcHJlc3NlZCwgZWxzZSAwCgpGb3IgbW9yZSBwcm9wZXJ0aWVzIGFuZCBkZXRhaWxzLCB2aXNpdCB0aGUgQVBJIGRvY3VtZW50YXRpb24KYXQgaHR0cDovL3d3dy53YWx0ZXJ6b3JuLmNvbS9kcmFnZHJvcC9hcGlfZS5odG0gKGVuZ2xpc2gpIG9yCmh0dHA6Ly93d3cud2FsdGVyem9ybi5kZS9kcmFnZHJvcC9hcGkuaHRtIChnZXJtYW4pCSovCmZ1bmN0aW9uIG15X1BpY2tGdW5jKCkKewp9CgoKCgovKiBteV9EcmFnRnVuYyBJUyBDQUxMRUQgV0hJTEUgQU4gSVRFTSBJUyBEUkFHR0VEClNlZSB0aGUgZGVzY3JpcHRpb24gb2YgbXlfUGlja0Z1bmMgYWJvdmUgZm9yIHdoYXQncyBhY2Nlc3NpYmxlIGZyb20gaGVyZS4gKi8KZnVuY3Rpb24gbXlfRHJhZ0Z1bmMoKQp7CgkvL3dpbmRvdy5zdGF0dXMgPSAnZGQuZWxlbWVudHMuJyArIGRkLm9iai5uYW1lICsgJy54ICA9ICcgKyBkZC5vYmoueCArICcJIGRkLmVsZW1lbnRzLicgKyBkZC5vYmoubmFtZSArICcueSA9ICcgKyBkZC5vYmoueTsKfQoKCgoKLyogbXlfUmVzaXplRnVuYyBJUyBDQUxMRUQgV0hJTEUgQU4gSVRFTSBJUyBSRVNJWkVEClNlZSB0aGUgZGVzY3JpcHRpb24gb2YgbXlfUGlja0Z1bmMgYWJvdmUgZm9yIHdoYXQncyBhY2Nlc3NpYmxlIGZyb20gaGVyZS4gKi8KZnVuY3Rpb24gbXlfUmVzaXplRnVuYygpCnsKCS8vd2luZG93LnN0YXR1cyA9ICdkZC5lbGVtZW50cy4nICsgZGQub2JqLm5hbWUgKyAnLncgID0gJyArIGRkLm9iai53ICsgJwkgZGQuZWxlbWVudHMuJyArIGRkLm9iai5uYW1lICsgJy5oID0gJyArIGRkLm9iai5oOwp9CgoKCgovKiBUSElTIE9ORSBJUyBDQUxMRUQgT05DRSBBTiBJVEVNIElTIERST1BQRUQKU2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBteV9QaWNrRnVuYyBmb3Igd2hhdCdzIGFjY2Vzc2libGUgZnJvbSBoZXJlLgpIZXJlIG1heSBiZSBpbnZlc3RpZ2F0ZWQsIGZvciBleGFtcGxlLCB3aGF0J3MgdGhlIG5hbWUgKGRkLm9iai5uYW1lKQpvZiB0aGUgZHJvcHBlZCBpdGVtLCBhbmQgd2hlcmUgKGRkLm9iai54LCBkZC5vYmoueSkgaXQgaGFzIGJlZW4gZHJvcHBlZC4uLiAqLwpmdW5jdGlvbiBteV9Ecm9wRnVuYygpCnsKfQo='>
	</script>



	<script id="wz_graphics" src='data:/text/plain;base64,LyogVGhpcyBub3RpY2UgbXVzdCBiZSB1bnRvdWNoZWQgYXQgYWxsIHRpbWVzLg0KDQp3el9qc2dyYXBoaWNzLmpzICAgIHYuIDMuMDUNClRoZSBsYXRlc3QgdmVyc2lvbiBpcyBhdmFpbGFibGUgYXQNCmh0dHA6Ly93d3cud2FsdGVyem9ybi5jb20NCm9yIGh0dHA6Ly93d3cuZGV2aXJhLmNvbQ0Kb3IgaHR0cDovL3d3dy53YWx0ZXJ6b3JuLmRlDQoNCkNvcHlyaWdodCAoYykgMjAwMi0yMDA5IFdhbHRlciBab3JuLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KQ3JlYXRlZCAzLiAxMS4gMjAwMiBieSBXYWx0ZXIgWm9ybiAoV2ViOiBodHRwOi8vd3d3LndhbHRlcnpvcm4uY29tICkNCkxhc3QgbW9kaWZpZWQ6IDIuIDIuIDIwMDkNCg0KUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyBmb3IgSW50ZXJuZXQgRXhwbG9yZXINCmJ5IFRob21hcyBGcmFuayBhbmQgSm9obiBIb2xkc3dvcnRoLg0KZmlsbFBvbHlnb24gbWV0aG9kIGltcGxlbWVudGVkIGJ5IE1hdHRoaWV1IEhhbGxlci4NCg0KSGlnaCBQZXJmb3JtYW5jZSBKYXZhU2NyaXB0IEdyYXBoaWNzIExpYnJhcnkuDQpQcm92aWRlcyBtZXRob2RzDQotIHRvIGRyYXcgbGluZXMsIHJlY3RhbmdsZXMsIGVsbGlwc2VzLCBwb2x5Z29ucw0KCXdpdGggc3BlY2lmaWFibGUgbGluZSB0aGlja25lc3MsDQotIHRvIGZpbGwgcmVjdGFuZ2xlcywgcG9seWdvbnMsIGVsbGlwc2VzIGFuZCBhcmNzDQotIHRvIGRyYXcgdGV4dC4NCk5PVEU6IE9wZXJhdGlvbnMsIGZ1bmN0aW9ucyBhbmQgYnJhbmNoaW5nIGhhdmUgcmF0aGVyIGJlZW4gb3B0aW1pemVkDQp0byBlZmZpY2llbmN5IGFuZCBzcGVlZCB0aGFuIHRvIHNob3J0bmVzcyBvZiBzb3VyY2UgY29kZS4NCg0KTElDRU5TRTogTEdQTA0KDQpUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQptb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQpMaWNlbnNlIChMR1BMKSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQp2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCg0KVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQpidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCkxlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQoNCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCkxpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EsDQpvciBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0L2xlc3Nlci5odG1sDQoqLw0KDQoNCnZhciBqZ19vaywgamdfaWUsIGpnX2Zhc3QsIGpnX2RvbSwgamdfbW96Ow0KDQoNCmZ1bmN0aW9uIF9jaGtESFRNKHduZCwgeCwgaSkNCi8vIFVuZGVyIFhVTCwgb3duZXIgb2YgJ2RvY3VtZW50JyBtdXN0IGJlIHNwZWNpZmllZCBleHBsaWNpdGx5DQp7DQoJeCA9IHduZC5kb2N1bWVudC5ib2R5IHx8IG51bGw7DQoJamdfaWUgPSB4ICYmIHR5cGVvZiB4Lmluc2VydEFkamFjZW50SFRNTCAhPSAidW5kZWZpbmVkIiAmJiB3bmQuZG9jdW1lbnQuY3JlYXRlRWxlbWVudDsNCglqZ19kb20gPSAoeCAmJiAhamdfaWUgJiYNCgkJdHlwZW9mIHguYXBwZW5kQ2hpbGQgIT0gInVuZGVmaW5lZCIgJiYNCgkJdHlwZW9mIHduZC5kb2N1bWVudC5jcmVhdGVSYW5nZSAhPSAidW5kZWZpbmVkIiAmJg0KCQl0eXBlb2YgKGkgPSB3bmQuZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSkuc2V0U3RhcnRCZWZvcmUgIT0gInVuZGVmaW5lZCIgJiYNCgkJdHlwZW9mIGkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50ICE9ICJ1bmRlZmluZWQiKTsNCglqZ19mYXN0ID0gamdfaWUgJiYgd25kLmRvY3VtZW50LmFsbCAmJiAhd25kLm9wZXJhOw0KCWpnX21veiA9IGpnX2RvbSAmJiB0eXBlb2YgeC5zdHlsZS5Nb3pPcGFjaXR5ICE9ICJ1bmRlZmluZWQiOw0KCWpnX29rID0gISEoamdfaWUgfHwgamdfZG9tKTsNCn0NCg0KZnVuY3Rpb24gX3BudENudkRvbSgpDQp7DQoJdmFyIHggPSB0aGlzLnduZC5kb2N1bWVudC5jcmVhdGVSYW5nZSgpOw0KCXguc2V0U3RhcnRCZWZvcmUodGhpcy5jbnYpOw0KCXggPSB4LmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChqZ19mYXN0PyB0aGlzLl9odG1ScGMoKSA6IHRoaXMuaHRtKTsNCglpZih0aGlzLmNudikgdGhpcy5jbnYuYXBwZW5kQ2hpbGQoeCk7DQoJdGhpcy5odG0gPSAiIjsNCn0NCg0KZnVuY3Rpb24gX3BudENudkllKCkNCnsNCglpZih0aGlzLmNudikgdGhpcy5jbnYuaW5zZXJ0QWRqYWNlbnRIVE1MKCJCZWZvcmVFbmQiLCBqZ19mYXN0PyB0aGlzLl9odG1ScGMoKSA6IHRoaXMuaHRtKTsNCgl0aGlzLmh0bSA9ICIiOw0KfQ0KDQpmdW5jdGlvbiBfcG50RG9jKCkNCnsNCgl0aGlzLnduZC5kb2N1bWVudC53cml0ZShqZ19mYXN0PyB0aGlzLl9odG1ScGMoKSA6IHRoaXMuaHRtKTsNCgl0aGlzLmh0bSA9ICcnOw0KfQ0KDQpmdW5jdGlvbiBfcG50TigpDQp7DQoJOw0KfQ0KDQpmdW5jdGlvbiBfbWtEaXYoeCwgeSwgdywgaCkNCnsNCgl0aGlzLmh0bSArPSAnPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7JysNCgkJJ2xlZnQ6JyArIHggKyAncHg7JysNCgkJJ3RvcDonICsgeSArICdweDsnKw0KCQknd2lkdGg6JyArIHcgKyAncHg7JysNCgkJJ2hlaWdodDonICsgaCArICdweDsnKw0KCQknY2xpcDpyZWN0KDAsJyt3KydweCwnK2grJ3B4LDApOycrDQoJCSdiYWNrZ3JvdW5kLWNvbG9yOicgKyB0aGlzLmNvbG9yICsNCgkJKCFqZ19tb3o/ICc7b3ZlcmZsb3c6aGlkZGVuJyA6ICcnKSsNCgkJJzsiPjxcL2Rpdj4nOw0KfQ0KDQpmdW5jdGlvbiBfbWtEaXZJZSh4LCB5LCB3LCBoKQ0Kew0KCXRoaXMuaHRtICs9ICclJScrdGhpcy5jb2xvcisnOycreCsnOycreSsnOycrdysnOycraCsnOyc7DQp9DQoNCmZ1bmN0aW9uIF9ta0RpdlBydCh4LCB5LCB3LCBoKQ0Kew0KCXRoaXMuaHRtICs9ICc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsnKw0KCQknYm9yZGVyLWxlZnQ6JyArIHcgKyAncHggc29saWQgJyArIHRoaXMuY29sb3IgKyAnOycrDQoJCSdsZWZ0OicgKyB4ICsgJ3B4OycrDQoJCSd0b3A6JyArIHkgKyAncHg7JysNCgkJJ3dpZHRoOjBweDsnKw0KCQknaGVpZ2h0OicgKyBoICsgJ3B4OycrDQoJCSdjbGlwOnJlY3QoMCwnK3crJ3B4LCcraCsncHgsMCk7JysNCgkJJ2JhY2tncm91bmQtY29sb3I6JyArIHRoaXMuY29sb3IgKw0KCQkoIWpnX21vej8gJztvdmVyZmxvdzpoaWRkZW4nIDogJycpKw0KCQknOyI+PFwvZGl2Pic7DQp9DQoNCnZhciBfcmVnZXggPSAgLyUlKFteO10rKTsoW147XSspOyhbXjtdKyk7KFteO10rKTsoW147XSspOy9nOw0KZnVuY3Rpb24gX2h0bVJwYygpDQp7DQoJcmV0dXJuIHRoaXMuaHRtLnJlcGxhY2UoDQoJCV9yZWdleCwNCgkJJzxkaXYgc3R5bGU9Im92ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOicrDQoJCSckMTtsZWZ0OiQycHg7dG9wOiQzcHg7d2lkdGg6JDRweDtoZWlnaHQ6JDVweCI+PC9kaXY+XG4nKTsNCn0NCg0KZnVuY3Rpb24gX2h0bVBydFJwYygpDQp7DQoJcmV0dXJuIHRoaXMuaHRtLnJlcGxhY2UoDQoJCV9yZWdleCwNCgkJJzxkaXYgc3R5bGU9Im92ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOicrDQoJCSckMTtsZWZ0OiQycHg7dG9wOiQzcHg7d2lkdGg6JDRweDtoZWlnaHQ6JDVweDtib3JkZXItbGVmdDokNHB4IHNvbGlkICQxIj48L2Rpdj5cbicpOw0KfQ0KDQpmdW5jdGlvbiBfbWtMaW4oeDEsIHkxLCB4MiwgeTIpDQp7DQoJaWYoeDEgPiB4MikNCgl7DQoJCXZhciBfeDIgPSB4MjsNCgkJdmFyIF95MiA9IHkyOw0KCQl4MiA9IHgxOw0KCQl5MiA9IHkxOw0KCQl4MSA9IF94MjsNCgkJeTEgPSBfeTI7DQoJfQ0KCXZhciBkeCA9IHgyLXgxLCBkeSA9IE1hdGguYWJzKHkyLXkxKSwNCgl4ID0geDEsIHkgPSB5MSwNCgl5SW5jciA9ICh5MSA+IHkyKT8gLTEgOiAxOw0KDQoJaWYoZHggPj0gZHkpDQoJew0KCQl2YXIgcHIgPSBkeTw8MSwNCgkJcHJ1ID0gcHIgLSAoZHg8PDEpLA0KCQlwID0gcHItZHgsDQoJCW94ID0geDsNCgkJd2hpbGUoZHggPiAwKQ0KCQl7LS1keDsNCgkJCSsreDsNCgkJCWlmKHAgPiAwKQ0KCQkJew0KCQkJCXRoaXMuX21rRGl2KG94LCB5LCB4LW94LCAxKTsNCgkJCQl5ICs9IHlJbmNyOw0KCQkJCXAgKz0gcHJ1Ow0KCQkJCW94ID0geDsNCgkJCX0NCgkJCWVsc2UgcCArPSBwcjsNCgkJfQ0KCQl0aGlzLl9ta0RpdihveCwgeSwgeDItb3grMSwgMSk7DQoJfQ0KDQoJZWxzZQ0KCXsNCgkJdmFyIHByID0gZHg8PDEsDQoJCXBydSA9IHByIC0gKGR5PDwxKSwNCgkJcCA9IHByLWR5LA0KCQlveSA9IHk7DQoJCWlmKHkyIDw9IHkxKQ0KCQl7DQoJCQl3aGlsZShkeSA+IDApDQoJCQl7LS1keTsNCgkJCQlpZihwID4gMCkNCgkJCQl7DQoJCQkJCXRoaXMuX21rRGl2KHgrKywgeSwgMSwgb3kteSsxKTsNCgkJCQkJeSArPSB5SW5jcjsNCgkJCQkJcCArPSBwcnU7DQoJCQkJCW95ID0geTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJeSArPSB5SW5jcjsNCgkJCQkJcCArPSBwcjsNCgkJCQl9DQoJCQl9DQoJCQl0aGlzLl9ta0Rpdih4MiwgeTIsIDEsIG95LXkyKzEpOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJd2hpbGUoZHkgPiAwKQ0KCQkJey0tZHk7DQoJCQkJeSArPSB5SW5jcjsNCgkJCQlpZihwID4gMCkNCgkJCQl7DQoJCQkJCXRoaXMuX21rRGl2KHgrKywgb3ksIDEsIHktb3kpOw0KCQkJCQlwICs9IHBydTsNCgkJCQkJb3kgPSB5Ow0KCQkJCX0NCgkJCQllbHNlIHAgKz0gcHI7DQoJCQl9DQoJCQl0aGlzLl9ta0Rpdih4Miwgb3ksIDEsIHkyLW95KzEpOw0KCQl9DQoJfQ0KfQ0KDQpmdW5jdGlvbiBfbWtMaW4yRCh4MSwgeTEsIHgyLCB5MikNCnsNCglpZih4MSA+IHgyKQ0KCXsNCgkJdmFyIF94MiA9IHgyOw0KCQl2YXIgX3kyID0geTI7DQoJCXgyID0geDE7DQoJCXkyID0geTE7DQoJCXgxID0gX3gyOw0KCQl5MSA9IF95MjsNCgl9DQoJdmFyIGR4ID0geDIteDEsIGR5ID0gTWF0aC5hYnMoeTIteTEpLA0KCXggPSB4MSwgeSA9IHkxLA0KCXlJbmNyID0gKHkxID4geTIpPyAtMSA6IDE7DQoNCgl2YXIgcyA9IHRoaXMuc3Ryb2tlOw0KCWlmKGR4ID49IGR5KQ0KCXsNCgkJaWYoZHggPiAwICYmIHMtMyA+IDApDQoJCXsNCgkJCXZhciBfcyA9IChzKmR4Kk1hdGguc3FydCgxK2R5KmR5LyhkeCpkeCkpLWR4LShzPj4xKSpkeSkgLyBkeDsNCgkJCV9zID0gKCEocy00KT8gTWF0aC5jZWlsKF9zKSA6IE1hdGgucm91bmQoX3MpKSArIDE7DQoJCX0NCgkJZWxzZSB2YXIgX3MgPSBzOw0KCQl2YXIgYWQgPSBNYXRoLmNlaWwocy8yKTsNCg0KCQl2YXIgcHIgPSBkeTw8MSwNCgkJcHJ1ID0gcHIgLSAoZHg8PDEpLA0KCQlwID0gcHItZHgsDQoJCW94ID0geDsNCgkJd2hpbGUoZHggPiAwKQ0KCQl7LS1keDsNCgkJCSsreDsNCgkJCWlmKHAgPiAwKQ0KCQkJew0KCQkJCXRoaXMuX21rRGl2KG94LCB5LCB4LW94K2FkLCBfcyk7DQoJCQkJeSArPSB5SW5jcjsNCgkJCQlwICs9IHBydTsNCgkJCQlveCA9IHg7DQoJCQl9DQoJCQllbHNlIHAgKz0gcHI7DQoJCX0NCgkJdGhpcy5fbWtEaXYob3gsIHksIHgyLW94K2FkKzEsIF9zKTsNCgl9DQoNCgllbHNlDQoJew0KCQlpZihzLTMgPiAwKQ0KCQl7DQoJCQl2YXIgX3MgPSAocypkeSpNYXRoLnNxcnQoMStkeCpkeC8oZHkqZHkpKS0ocz4+MSkqZHgtZHkpIC8gZHk7DQoJCQlfcyA9ICghKHMtNCk/IE1hdGguY2VpbChfcykgOiBNYXRoLnJvdW5kKF9zKSkgKyAxOw0KCQl9DQoJCWVsc2UgdmFyIF9zID0gczsNCgkJdmFyIGFkID0gTWF0aC5yb3VuZChzLzIpOw0KDQoJCXZhciBwciA9IGR4PDwxLA0KCQlwcnUgPSBwciAtIChkeTw8MSksDQoJCXAgPSBwci1keSwNCgkJb3kgPSB5Ow0KCQlpZih5MiA8PSB5MSkNCgkJew0KCQkJKythZDsNCgkJCXdoaWxlKGR5ID4gMCkNCgkJCXstLWR5Ow0KCQkJCWlmKHAgPiAwKQ0KCQkJCXsNCgkJCQkJdGhpcy5fbWtEaXYoeCsrLCB5LCBfcywgb3kteSthZCk7DQoJCQkJCXkgKz0geUluY3I7DQoJCQkJCXAgKz0gcHJ1Ow0KCQkJCQlveSA9IHk7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCXkgKz0geUluY3I7DQoJCQkJCXAgKz0gcHI7DQoJCQkJfQ0KCQkJfQ0KCQkJdGhpcy5fbWtEaXYoeDIsIHkyLCBfcywgb3kteTIrYWQpOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJd2hpbGUoZHkgPiAwKQ0KCQkJey0tZHk7DQoJCQkJeSArPSB5SW5jcjsNCgkJCQlpZihwID4gMCkNCgkJCQl7DQoJCQkJCXRoaXMuX21rRGl2KHgrKywgb3ksIF9zLCB5LW95K2FkKTsNCgkJCQkJcCArPSBwcnU7DQoJCQkJCW95ID0geTsNCgkJCQl9DQoJCQkJZWxzZSBwICs9IHByOw0KCQkJfQ0KCQkJdGhpcy5fbWtEaXYoeDIsIG95LCBfcywgeTItb3krYWQrMSk7DQoJCX0NCgl9DQp9DQoNCmZ1bmN0aW9uIF9ta0xpbkRvdHQoeDEsIHkxLCB4MiwgeTIpDQp7DQoJaWYoeDEgPiB4MikNCgl7DQoJCXZhciBfeDIgPSB4MjsNCgkJdmFyIF95MiA9IHkyOw0KCQl4MiA9IHgxOw0KCQl5MiA9IHkxOw0KCQl4MSA9IF94MjsNCgkJeTEgPSBfeTI7DQoJfQ0KCXZhciBkeCA9IHgyLXgxLCBkeSA9IE1hdGguYWJzKHkyLXkxKSwNCgl4ID0geDEsIHkgPSB5MSwNCgl5SW5jciA9ICh5MSA+IHkyKT8gLTEgOiAxLA0KCWRydyA9IHRydWU7DQoJaWYoZHggPj0gZHkpDQoJew0KCQl2YXIgcHIgPSBkeTw8MSwNCgkJcHJ1ID0gcHIgLSAoZHg8PDEpLA0KCQlwID0gcHItZHg7DQoJCXdoaWxlKGR4ID4gMCkNCgkJey0tZHg7DQoJCQlpZihkcncpIHRoaXMuX21rRGl2KHgsIHksIDEsIDEpOw0KCQkJZHJ3ID0gIWRydzsNCgkJCWlmKHAgPiAwKQ0KCQkJew0KCQkJCXkgKz0geUluY3I7DQoJCQkJcCArPSBwcnU7DQoJCQl9DQoJCQllbHNlIHAgKz0gcHI7DQoJCQkrK3g7DQoJCX0NCgl9DQoJZWxzZQ0KCXsNCgkJdmFyIHByID0gZHg8PDEsDQoJCXBydSA9IHByIC0gKGR5PDwxKSwNCgkJcCA9IHByLWR5Ow0KCQl3aGlsZShkeSA+IDApDQoJCXstLWR5Ow0KCQkJaWYoZHJ3KSB0aGlzLl9ta0Rpdih4LCB5LCAxLCAxKTsNCgkJCWRydyA9ICFkcnc7DQoJCQl5ICs9IHlJbmNyOw0KCQkJaWYocCA+IDApDQoJCQl7DQoJCQkJKyt4Ow0KCQkJCXAgKz0gcHJ1Ow0KCQkJfQ0KCQkJZWxzZSBwICs9IHByOw0KCQl9DQoJfQ0KCWlmKGRydykgdGhpcy5fbWtEaXYoeCwgeSwgMSwgMSk7DQp9DQoNCmZ1bmN0aW9uIF9ta092KGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCkNCnsNCgl2YXIgYSA9ICgrK3dpZHRoKT4+MSwgYiA9ICgrK2hlaWdodCk+PjEsDQoJd29kID0gd2lkdGgmMSwgaG9kID0gaGVpZ2h0JjEsDQoJY3ggPSBsZWZ0K2EsIGN5ID0gdG9wK2IsDQoJeCA9IDAsIHkgPSBiLA0KCW94ID0gMCwgb3kgPSBiLA0KCWFhMiA9IChhKmEpPDwxLCBhYTQgPSBhYTI8PDEsIGJiMiA9IChiKmIpPDwxLCBiYjQgPSBiYjI8PDEsDQoJc3QgPSAoYWEyPj4xKSooMS0oYjw8MSkpICsgYmIyLA0KCXR0ID0gKGJiMj4+MSkgLSBhYTIqKChiPDwxKS0xKSwNCgl3LCBoOw0KCXdoaWxlKHkgPiAwKQ0KCXsNCgkJaWYoc3QgPCAwKQ0KCQl7DQoJCQlzdCArPSBiYjIqKCh4PDwxKSszKTsNCgkJCXR0ICs9IGJiNCooKyt4KTsNCgkJfQ0KCQllbHNlIGlmKHR0IDwgMCkNCgkJew0KCQkJc3QgKz0gYmIyKigoeDw8MSkrMykgLSBhYTQqKHktMSk7DQoJCQl0dCArPSBiYjQqKCsreCkgLSBhYTIqKCgoeS0tKTw8MSktMyk7DQoJCQl3ID0geC1veDsNCgkJCWggPSBveS15Ow0KCQkJaWYoKHcmMikgJiYgKGgmMikpDQoJCQl7DQoJCQkJdGhpcy5fbWtPdlFkcyhjeCwgY3ksIHgtMiwgeSsyLCAxLCAxLCB3b2QsIGhvZCk7DQoJCQkJdGhpcy5fbWtPdlFkcyhjeCwgY3ksIHgtMSwgeSsxLCAxLCAxLCB3b2QsIGhvZCk7DQoJCQl9DQoJCQllbHNlIHRoaXMuX21rT3ZRZHMoY3gsIGN5LCB4LTEsIG95LCB3LCBoLCB3b2QsIGhvZCk7DQoJCQlveCA9IHg7DQoJCQlveSA9IHk7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQl0dCAtPSBhYTIqKCh5PDwxKS0zKTsNCgkJCXN0IC09IGFhNCooLS15KTsNCgkJfQ0KCX0NCgl3ID0gYS1veCsxOw0KCWggPSAob3k8PDEpK2hvZDsNCgl5ID0gY3ktb3k7DQoJdGhpcy5fbWtEaXYoY3gtYSwgeSwgdywgaCk7DQoJdGhpcy5fbWtEaXYoY3grb3grd29kLTEsIHksIHcsIGgpOw0KfQ0KDQpmdW5jdGlvbiBfbWtPdjJEKGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCkNCnsNCgl2YXIgcyA9IHRoaXMuc3Ryb2tlOw0KCXdpZHRoICs9IHMrMTsNCgloZWlnaHQgKz0gcysxOw0KCXZhciBhID0gd2lkdGg+PjEsIGIgPSBoZWlnaHQ+PjEsDQoJd29kID0gd2lkdGgmMSwgaG9kID0gaGVpZ2h0JjEsDQoJY3ggPSBsZWZ0K2EsIGN5ID0gdG9wK2IsDQoJeCA9IDAsIHkgPSBiLA0KCWFhMiA9IChhKmEpPDwxLCBhYTQgPSBhYTI8PDEsIGJiMiA9IChiKmIpPDwxLCBiYjQgPSBiYjI8PDEsDQoJc3QgPSAoYWEyPj4xKSooMS0oYjw8MSkpICsgYmIyLA0KCXR0ID0gKGJiMj4+MSkgLSBhYTIqKChiPDwxKS0xKTsNCg0KCWlmKHMtNCA8IDAgJiYgKCEocy0yKSB8fCB3aWR0aC01MSA+IDAgJiYgaGVpZ2h0LTUxID4gMCkpDQoJew0KCQl2YXIgb3ggPSAwLCBveSA9IGIsDQoJCXcsIGgsDQoJCXB4dzsNCgkJd2hpbGUoeSA+IDApDQoJCXsNCgkJCWlmKHN0IDwgMCkNCgkJCXsNCgkJCQlzdCArPSBiYjIqKCh4PDwxKSszKTsNCgkJCQl0dCArPSBiYjQqKCsreCk7DQoJCQl9DQoJCQllbHNlIGlmKHR0IDwgMCkNCgkJCXsNCgkJCQlzdCArPSBiYjIqKCh4PDwxKSszKSAtIGFhNCooeS0xKTsNCgkJCQl0dCArPSBiYjQqKCsreCkgLSBhYTIqKCgoeS0tKTw8MSktMyk7DQoJCQkJdyA9IHgtb3g7DQoJCQkJaCA9IG95LXk7DQoNCgkJCQlpZih3LTEpDQoJCQkJew0KCQkJCQlweHcgPSB3KzErKHMmMSk7DQoJCQkJCWggPSBzOw0KCQkJCX0NCgkJCQllbHNlIGlmKGgtMSkNCgkJCQl7DQoJCQkJCXB4dyA9IHM7DQoJCQkJCWggKz0gMSsocyYxKTsNCgkJCQl9DQoJCQkJZWxzZSBweHcgPSBoID0gczsNCgkJCQl0aGlzLl9ta092UWRzKGN4LCBjeSwgeC0xLCBveSwgcHh3LCBoLCB3b2QsIGhvZCk7DQoJCQkJb3ggPSB4Ow0KCQkJCW95ID0geTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQl0dCAtPSBhYTIqKCh5PDwxKS0zKTsNCgkJCQlzdCAtPSBhYTQqKC0teSk7DQoJCQl9DQoJCX0NCgkJdGhpcy5fbWtEaXYoY3gtYSwgY3ktb3ksIHMsIChveTw8MSkraG9kKTsNCgkJdGhpcy5fbWtEaXYoY3grYSt3b2QtcywgY3ktb3ksIHMsIChveTw8MSkraG9kKTsNCgl9DQoNCgllbHNlDQoJew0KCQl2YXIgX2EgPSAod2lkdGgtKHM8PDEpKT4+MSwNCgkJX2IgPSAoaGVpZ2h0LShzPDwxKSk+PjEsDQoJCV94ID0gMCwgX3kgPSBfYiwNCgkJX2FhMiA9IChfYSpfYSk8PDEsIF9hYTQgPSBfYWEyPDwxLCBfYmIyID0gKF9iKl9iKTw8MSwgX2JiNCA9IF9iYjI8PDEsDQoJCV9zdCA9IChfYWEyPj4xKSooMS0oX2I8PDEpKSArIF9iYjIsDQoJCV90dCA9IChfYmIyPj4xKSAtIF9hYTIqKChfYjw8MSktMSksDQoNCgkJcHhsID0gbmV3IEFycmF5KCksDQoJCXB4dCA9IG5ldyBBcnJheSgpLA0KCQlfcHhiID0gbmV3IEFycmF5KCk7DQoJCXB4bFswXSA9IDA7DQoJCXB4dFswXSA9IGI7DQoJCV9weGJbMF0gPSBfYi0xOw0KCQl3aGlsZSh5ID4gMCkNCgkJew0KCQkJaWYoc3QgPCAwKQ0KCQkJew0KCQkJCXB4bFtweGwubGVuZ3RoXSA9IHg7DQoJCQkJcHh0W3B4dC5sZW5ndGhdID0geTsNCgkJCQlzdCArPSBiYjIqKCh4PDwxKSszKTsNCgkJCQl0dCArPSBiYjQqKCsreCk7DQoJCQl9DQoJCQllbHNlIGlmKHR0IDwgMCkNCgkJCXsNCgkJCQlweGxbcHhsLmxlbmd0aF0gPSB4Ow0KCQkJCXN0ICs9IGJiMiooKHg8PDEpKzMpIC0gYWE0Kih5LTEpOw0KCQkJCXR0ICs9IGJiNCooKyt4KSAtIGFhMiooKCh5LS0pPDwxKS0zKTsNCgkJCQlweHRbcHh0Lmxlbmd0aF0gPSB5Ow0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCXR0IC09IGFhMiooKHk8PDEpLTMpOw0KCQkJCXN0IC09IGFhNCooLS15KTsNCgkJCX0NCg0KCQkJaWYoX3kgPiAwKQ0KCQkJew0KCQkJCWlmKF9zdCA8IDApDQoJCQkJew0KCQkJCQlfc3QgKz0gX2JiMiooKF94PDwxKSszKTsNCgkJCQkJX3R0ICs9IF9iYjQqKCsrX3gpOw0KCQkJCQlfcHhiW19weGIubGVuZ3RoXSA9IF95LTE7DQoJCQkJfQ0KCQkJCWVsc2UgaWYoX3R0IDwgMCkNCgkJCQl7DQoJCQkJCV9zdCArPSBfYmIyKigoX3g8PDEpKzMpIC0gX2FhNCooX3ktMSk7DQoJCQkJCV90dCArPSBfYmI0KigrK194KSAtIF9hYTIqKCgoX3ktLSk8PDEpLTMpOw0KCQkJCQlfcHhiW19weGIubGVuZ3RoXSA9IF95LTE7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCV90dCAtPSBfYWEyKigoX3k8PDEpLTMpOw0KCQkJCQlfc3QgLT0gX2FhNCooLS1feSk7DQoJCQkJCV9weGJbX3B4Yi5sZW5ndGgtMV0tLTsNCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQl2YXIgb3ggPSAtd29kLCBveSA9IGIsDQoJCV9veSA9IF9weGJbMF0sDQoJCWwgPSBweGwubGVuZ3RoLA0KCQl3LCBoOw0KCQlmb3IodmFyIGkgPSAwOyBpIDwgbDsgaSsrKQ0KCQl7DQoJCQlpZih0eXBlb2YgX3B4YltpXSAhPSAidW5kZWZpbmVkIikNCgkJCXsNCgkJCQlpZihfcHhiW2ldIDwgX295IHx8IHB4dFtpXSA8IG95KQ0KCQkJCXsNCgkJCQkJeCA9IHB4bFtpXTsNCgkJCQkJdGhpcy5fbWtPdlFkcyhjeCwgY3ksIHgsIG95LCB4LW94LCBveS1fb3ksIHdvZCwgaG9kKTsNCgkJCQkJb3ggPSB4Ow0KCQkJCQlveSA9IHB4dFtpXTsNCgkJCQkJX295ID0gX3B4YltpXTsNCgkJCQl9DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJeCA9IHB4bFtpXTsNCgkJCQl0aGlzLl9ta0RpdihjeC14LCBjeS1veSwgMSwgKG95PDwxKStob2QpOw0KCQkJCXRoaXMuX21rRGl2KGN4K294K3dvZCwgY3ktb3ksIDEsIChveTw8MSkraG9kKTsNCgkJCQlveCA9IHg7DQoJCQkJb3kgPSBweHRbaV07DQoJCQl9DQoJCX0NCgkJdGhpcy5fbWtEaXYoY3gtYSwgY3ktb3ksIDEsIChveTw8MSkraG9kKTsNCgkJdGhpcy5fbWtEaXYoY3grb3grd29kLCBjeS1veSwgMSwgKG95PDwxKStob2QpOw0KCX0NCn0NCg0KZnVuY3Rpb24gX21rT3ZEb3R0KGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCkNCnsNCgl2YXIgYSA9ICgrK3dpZHRoKT4+MSwgYiA9ICgrK2hlaWdodCk+PjEsDQoJd29kID0gd2lkdGgmMSwgaG9kID0gaGVpZ2h0JjEsIGhvZHUgPSBob2ReMSwNCgljeCA9IGxlZnQrYSwgY3kgPSB0b3ArYiwNCgl4ID0gMCwgeSA9IGIsDQoJYWEyID0gKGEqYSk8PDEsIGFhNCA9IGFhMjw8MSwgYmIyID0gKGIqYik8PDEsIGJiNCA9IGJiMjw8MSwNCglzdCA9IChhYTI+PjEpKigxLShiPDwxKSkgKyBiYjIsDQoJdHQgPSAoYmIyPj4xKSAtIGFhMiooKGI8PDEpLTEpLA0KCWRydyA9IHRydWU7DQoJd2hpbGUoeSA+IDApDQoJew0KCQlpZihzdCA8IDApDQoJCXsNCgkJCXN0ICs9IGJiMiooKHg8PDEpKzMpOw0KCQkJdHQgKz0gYmI0KigrK3gpOw0KCQl9DQoJCWVsc2UgaWYodHQgPCAwKQ0KCQl7DQoJCQlzdCArPSBiYjIqKCh4PDwxKSszKSAtIGFhNCooeS0xKTsNCgkJCXR0ICs9IGJiNCooKyt4KSAtIGFhMiooKCh5LS0pPDwxKS0zKTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCXR0IC09IGFhMiooKHk8PDEpLTMpOw0KCQkJc3QgLT0gYWE0KigtLXkpOw0KCQl9DQoJCWlmKGRydyAmJiB5ID49IGhvZHUpIHRoaXMuX21rT3ZRZHMoY3gsIGN5LCB4LCB5LCAxLCAxLCB3b2QsIGhvZCk7DQoJCWRydyA9ICFkcnc7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBfbWtSZWN0KHgsIHksIHcsIGgpDQp7DQoJdmFyIHMgPSB0aGlzLnN0cm9rZTsNCgl0aGlzLl9ta0Rpdih4LCB5LCB3LCBzKTsNCgl0aGlzLl9ta0Rpdih4K3csIHksIHMsIGgpOw0KCXRoaXMuX21rRGl2KHgsIHkraCwgdytzLCBzKTsNCgl0aGlzLl9ta0Rpdih4LCB5K3MsIHMsIGgtcyk7DQp9DQoNCmZ1bmN0aW9uIF9ta1JlY3REb3R0KHgsIHksIHcsIGgpDQp7DQoJdGhpcy5kcmF3TGluZSh4LCB5LCB4K3csIHkpOw0KCXRoaXMuZHJhd0xpbmUoeCt3LCB5LCB4K3csIHkraCk7DQoJdGhpcy5kcmF3TGluZSh4LCB5K2gsIHgrdywgeStoKTsNCgl0aGlzLmRyYXdMaW5lKHgsIHksIHgsIHkraCk7DQp9DQoNCmZ1bmN0aW9uIGpzZ0ZvbnQoKQ0Kew0KCXRoaXMuUExBSU4gPSAnZm9udC13ZWlnaHQ6bm9ybWFsOyc7DQoJdGhpcy5CT0xEID0gJ2ZvbnQtd2VpZ2h0OmJvbGQ7JzsNCgl0aGlzLklUQUxJQyA9ICdmb250LXN0eWxlOml0YWxpYzsnOw0KCXRoaXMuSVRBTElDX0JPTEQgPSB0aGlzLklUQUxJQyArIHRoaXMuQk9MRDsNCgl0aGlzLkJPTERfSVRBTElDID0gdGhpcy5JVEFMSUNfQk9MRDsNCn0NCnZhciBGb250ID0gbmV3IGpzZ0ZvbnQoKTsNCg0KZnVuY3Rpb24ganNnU3Ryb2tlKCkNCnsNCgl0aGlzLkRPVFRFRCA9IC0xOw0KfQ0KdmFyIFN0cm9rZSA9IG5ldyBqc2dTdHJva2UoKTsNCg0KZnVuY3Rpb24ganNHcmFwaGljcyhjbnYsIHduZCkNCnsNCgl0aGlzLnNldENvbG9yID0gZnVuY3Rpb24oeCkNCgl7DQoJCXRoaXMuY29sb3IgPSB4LnRvTG93ZXJDYXNlKCk7DQoJfTsNCg0KCXRoaXMuc2V0U3Ryb2tlID0gZnVuY3Rpb24oeCkNCgl7DQoJCXRoaXMuc3Ryb2tlID0geDsNCgkJaWYoISh4KzEpKQ0KCQl7DQoJCQl0aGlzLmRyYXdMaW5lID0gX21rTGluRG90dDsNCgkJCXRoaXMuX21rT3YgPSBfbWtPdkRvdHQ7DQoJCQl0aGlzLmRyYXdSZWN0ID0gX21rUmVjdERvdHQ7DQoJCX0NCgkJZWxzZSBpZih4LTEgPiAwKQ0KCQl7DQoJCQl0aGlzLmRyYXdMaW5lID0gX21rTGluMkQ7DQoJCQl0aGlzLl9ta092ID0gX21rT3YyRDsNCgkJCXRoaXMuZHJhd1JlY3QgPSBfbWtSZWN0Ow0KCQl9DQoJCWVsc2UNCgkJew0KCQkJdGhpcy5kcmF3TGluZSA9IF9ta0xpbjsNCgkJCXRoaXMuX21rT3YgPSBfbWtPdjsNCgkJCXRoaXMuZHJhd1JlY3QgPSBfbWtSZWN0Ow0KCQl9DQoJfTsNCg0KCXRoaXMuc2V0UHJpbnRhYmxlID0gZnVuY3Rpb24oYXJnKQ0KCXsNCgkJdGhpcy5wcmludGFibGUgPSBhcmc7DQoJCWlmKGpnX2Zhc3QpDQoJCXsNCgkJCXRoaXMuX21rRGl2ID0gX21rRGl2SWU7DQoJCQl0aGlzLl9odG1ScGMgPSBhcmc/IF9odG1QcnRScGMgOiBfaHRtUnBjOw0KCQl9DQoJCWVsc2UgdGhpcy5fbWtEaXYgPSBhcmc/IF9ta0RpdlBydCA6IF9ta0RpdjsNCgl9Ow0KDQoJdGhpcy5zZXRGb250ID0gZnVuY3Rpb24oZmFtLCBzeiwgc3R5KQ0KCXsNCgkJdGhpcy5mdEZhbSA9IGZhbTsNCgkJdGhpcy5mdFN6ID0gc3o7DQoJCXRoaXMuZnRTdHkgPSBzdHkgfHwgRm9udC5QTEFJTjsNCgl9Ow0KDQoJdGhpcy5kcmF3UG9seWxpbmUgPSB0aGlzLmRyYXdQb2x5TGluZSA9IGZ1bmN0aW9uKHgsIHkpDQoJew0KCQlmb3IgKHZhciBpPXgubGVuZ3RoIC0gMTsgaTspDQoJCXstLWk7DQoJCQl0aGlzLmRyYXdMaW5lKHhbaV0sIHlbaV0sIHhbaSsxXSwgeVtpKzFdKTsNCgkJfQ0KCX07DQoNCgl0aGlzLmZpbGxSZWN0ID0gZnVuY3Rpb24oeCwgeSwgdywgaCkNCgl7DQoJCXRoaXMuX21rRGl2KHgsIHksIHcsIGgpOw0KCX07DQoNCgl0aGlzLmRyYXdQb2x5Z29uID0gZnVuY3Rpb24oeCwgeSkNCgl7DQoJCXRoaXMuZHJhd1BvbHlsaW5lKHgsIHkpOw0KCQl0aGlzLmRyYXdMaW5lKHhbeC5sZW5ndGgtMV0sIHlbeC5sZW5ndGgtMV0sIHhbMF0sIHlbMF0pOw0KCX07DQoNCgl0aGlzLmRyYXdFbGxpcHNlID0gdGhpcy5kcmF3T3ZhbCA9IGZ1bmN0aW9uKHgsIHksIHcsIGgpDQoJew0KCQl0aGlzLl9ta092KHgsIHksIHcsIGgpOw0KCX07DQoNCgl0aGlzLmZpbGxFbGxpcHNlID0gdGhpcy5maWxsT3ZhbCA9IGZ1bmN0aW9uKGxlZnQsIHRvcCwgdywgaCkNCgl7DQoJCXZhciBhID0gdz4+MSwgYiA9IGg+PjEsDQoJCXdvZCA9IHcmMSwgaG9kID0gaCYxLA0KCQljeCA9IGxlZnQrYSwgY3kgPSB0b3ArYiwNCgkJeCA9IDAsIHkgPSBiLCBveSA9IGIsDQoJCWFhMiA9IChhKmEpPDwxLCBhYTQgPSBhYTI8PDEsIGJiMiA9IChiKmIpPDwxLCBiYjQgPSBiYjI8PDEsDQoJCXN0ID0gKGFhMj4+MSkqKDEtKGI8PDEpKSArIGJiMiwNCgkJdHQgPSAoYmIyPj4xKSAtIGFhMiooKGI8PDEpLTEpLA0KCQl4bCwgZHcsIGRoOw0KCQlpZih3KSB3aGlsZSh5ID4gMCkNCgkJew0KCQkJaWYoc3QgPCAwKQ0KCQkJew0KCQkJCXN0ICs9IGJiMiooKHg8PDEpKzMpOw0KCQkJCXR0ICs9IGJiNCooKyt4KTsNCgkJCX0NCgkJCWVsc2UgaWYodHQgPCAwKQ0KCQkJew0KCQkJCXN0ICs9IGJiMiooKHg8PDEpKzMpIC0gYWE0Kih5LTEpOw0KCQkJCXhsID0gY3gteDsNCgkJCQlkdyA9ICh4PDwxKSt3b2Q7DQoJCQkJdHQgKz0gYmI0KigrK3gpIC0gYWEyKigoKHktLSk8PDEpLTMpOw0KCQkJCWRoID0gb3kteTsNCgkJCQl0aGlzLl9ta0Rpdih4bCwgY3ktb3ksIGR3LCBkaCk7DQoJCQkJdGhpcy5fbWtEaXYoeGwsIGN5K3kraG9kLCBkdywgZGgpOw0KCQkJCW95ID0geTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQl0dCAtPSBhYTIqKCh5PDwxKS0zKTsNCgkJCQlzdCAtPSBhYTQqKC0teSk7DQoJCQl9DQoJCX0NCgkJdGhpcy5fbWtEaXYoY3gtYSwgY3ktb3ksIHcsIChveTw8MSkraG9kKTsNCgl9Ow0KDQoJdGhpcy5maWxsQXJjID0gZnVuY3Rpb24oaUwsIGlULCBpVywgaUgsIGZBbmdBLCBmQW5nWikNCgl7DQoJCXZhciBhID0gaVc+PjEsIGIgPSBpSD4+MSwNCgkJaU9kZHMgPSAoaVcmMSkgfCAoKGlIJjEpIDw8IDE2KSwNCgkJY3ggPSBpTCthLCBjeSA9IGlUK2IsDQoJCXggPSAwLCB5ID0gYiwgb3ggPSB4LCBveSA9IHksDQoJCWFhMiA9IChhKmEpPDwxLCBhYTQgPSBhYTI8PDEsIGJiMiA9IChiKmIpPDwxLCBiYjQgPSBiYjI8PDEsDQoJCXN0ID0gKGFhMj4+MSkqKDEtKGI8PDEpKSArIGJiMiwNCgkJdHQgPSAoYmIyPj4xKSAtIGFhMiooKGI8PDEpLTEpLA0KCQkvLyBWYXJzIGZvciByYWRpYWwgYm91bmRhcnkgbGluZXMNCgkJeEVuZEEsIHlFbmRBLCB4RW5kWiwgeUVuZFosDQoJCWlTZWN0cyA9ICgxIDw8IChNYXRoLmZsb29yKChmQW5nQSAlPSAzNjAuMCkvMTgwLjApIDw8IDMpKQ0KCQkJCXwgKDIgPDwgKE1hdGguZmxvb3IoKGZBbmdaICU9IDM2MC4wKS8xODAuMCkgPDwgMykpDQoJCQkJfCAoKGZBbmdBID49IGZBbmdaKSA8PCAxNiksDQoJCWFCbmRBID0gbmV3IEFycmF5KGIrMSksIGFCbmRaID0gbmV3IEFycmF5KGIrMSk7DQoJCQ0KCQkvLyBTZXQgdXAgcmFkaWFsIGJvdW5kYXJ5IGxpbmVzDQoJCWZBbmdBICo9IE1hdGguUEkvMTgwLjA7DQoJCWZBbmdaICo9IE1hdGguUEkvMTgwLjA7DQoJCXhFbmRBID0gY3grTWF0aC5yb3VuZChhKk1hdGguY29zKGZBbmdBKSk7DQoJCXlFbmRBID0gY3krTWF0aC5yb3VuZCgtYipNYXRoLnNpbihmQW5nQSkpOw0KCQlfbWtMaW5WaXJ0KGFCbmRBLCBjeCwgY3ksIHhFbmRBLCB5RW5kQSk7DQoJCXhFbmRaID0gY3grTWF0aC5yb3VuZChhKk1hdGguY29zKGZBbmdaKSk7DQoJCXlFbmRaID0gY3krTWF0aC5yb3VuZCgtYipNYXRoLnNpbihmQW5nWikpOw0KCQlfbWtMaW5WaXJ0KGFCbmRaLCBjeCwgY3ksIHhFbmRaLCB5RW5kWik7DQoNCgkJd2hpbGUoeSA+IDApDQoJCXsNCgkJCWlmKHN0IDwgMCkgLy8gQWR2YW5jZSB4DQoJCQl7DQoJCQkJc3QgKz0gYmIyKigoeDw8MSkrMyk7DQoJCQkJdHQgKz0gYmI0KigrK3gpOw0KCQkJfQ0KCQkJZWxzZSBpZih0dCA8IDApIC8vIEFkdmFuY2UgeCBhbmQgeQ0KCQkJew0KCQkJCXN0ICs9IGJiMiooKHg8PDEpKzMpIC0gYWE0Kih5LTEpOw0KCQkJCW94ID0geDsNCgkJCQl0dCArPSBiYjQqKCsreCkgLSBhYTIqKCgoeS0tKTw8MSktMyk7DQoJCQkJdGhpcy5fbWtBcmNEaXYob3gsIHksIG95LCBjeCwgY3ksIGlPZGRzLCBhQm5kQSwgYUJuZFosIGlTZWN0cyk7DQoJCQkJb3kgPSB5Ow0KCQkJfQ0KCQkJZWxzZSAvLyBBZHZhbmNlIHkNCgkJCXsNCgkJCQl0dCAtPSBhYTIqKCh5PDwxKS0zKTsNCgkJCQlzdCAtPSBhYTQqKC0teSk7DQoJCQkJaWYoeSAmJiAoYUJuZEFbeV0gIT0gYUJuZEFbeS0xXSB8fCBhQm5kWlt5XSAhPSBhQm5kWlt5LTFdKSkNCgkJCQl7DQoJCQkJCXRoaXMuX21rQXJjRGl2KHgsIHksIG95LCBjeCwgY3ksIGlPZGRzLCBhQm5kQSwgYUJuZFosIGlTZWN0cyk7DQoJCQkJCW94ID0geDsNCgkJCQkJb3kgPSB5Ow0KCQkJCX0NCgkJCX0NCgkJfQ0KCQl0aGlzLl9ta0FyY0Rpdih4LCAwLCBveSwgY3gsIGN5LCBpT2RkcywgYUJuZEEsIGFCbmRaLCBpU2VjdHMpOw0KCQlpZihpT2RkcyA+PiAxNikgLy8gT2RkIGhlaWdodA0KCQl7DQoJCQlpZihpU2VjdHMgPj4gMTYpIC8vIFN0YXJ0LWFuZ2xlID4gZW5kLWFuZ2xlDQoJCQl7DQoJCQkJdmFyIHhsID0gKHlFbmRBIDw9IGN5IHx8IHlFbmRaID4gY3kpPyAoY3ggLSB4KSA6IGN4Ow0KCQkJCXRoaXMuX21rRGl2KHhsLCBjeSwgeCArIGN4IC0geGwgKyAoaU9kZHMgJiAweGZmZmYpLCAxKTsNCgkJCX0NCgkJCWVsc2UgaWYoKGlTZWN0cyAmIDB4MDEpICYmIHlFbmRaID4gY3kpDQoJCQkJdGhpcy5fbWtEaXYoY3ggLSB4LCBjeSwgeCwgMSk7DQoJCX0NCgl9Ow0KDQovKiBmaWxsUG9seWdvbiBtZXRob2QsIGltcGxlbWVudGVkIGJ5IE1hdHRoaWV1IEhhbGxlci4NClRoaXMgamF2YXNjcmlwdCBmdW5jdGlvbiBpcyBhbiBhZGFwdGF0aW9uIG9mIHRoZSBnZEltYWdlRmlsbGVkUG9seWdvbiBmb3IgV2FsdGVyIFpvcm4gbGliLg0KQyBzb3VyY2Ugb2YgR0QgMS44LjQgZm91bmQgYXQgaHR0cDovL3d3dy5ib3V0ZWxsLmNvbS9nZC8NCg0KVEhBTktTIHRvIEtpcnN0ZW4gU2NodWx6IGZvciB0aGUgcG9seWdvbiBmaXhlcyENCg0KVGhlIGludGVyc2VjdGlvbiBmaW5kaW5nIHRlY2huaXF1ZSBvZiB0aGlzIGNvZGUgY291bGQgYmUgaW1wcm92ZWQNCmJ5IHJlbWVtYmVyaW5nIHRoZSBwcmV2aW91cyBpbnRlcnRlcnNlY3Rpb24sIGFuZCBieSB1c2luZyB0aGUgc2xvcGUuDQpUaGF0IGNvdWxkIGhlbHAgdG8gYWRqdXN0IGludGVyc2VjdGlvbnMgdG8gcHJvZHVjZSBhIG5pY2UNCmludGVyaW9yX2V4dHJlbWEuICovDQoJdGhpcy5maWxsUG9seWdvbiA9IGZ1bmN0aW9uKGFycmF5X3gsIGFycmF5X3kpDQoJew0KCQl2YXIgaTsNCgkJdmFyIHk7DQoJCXZhciBtaW55LCBtYXh5Ow0KCQl2YXIgeDEsIHkxOw0KCQl2YXIgeDIsIHkyOw0KCQl2YXIgaW5kMSwgaW5kMjsNCgkJdmFyIGludHM7DQoNCgkJdmFyIG4gPSBhcnJheV94Lmxlbmd0aDsNCgkJaWYoIW4pIHJldHVybjsNCg0KCQltaW55ID0gYXJyYXlfeVswXTsNCgkJbWF4eSA9IGFycmF5X3lbMF07DQoJCWZvcihpID0gMTsgaSA8IG47IGkrKykNCgkJew0KCQkJaWYoYXJyYXlfeVtpXSA8IG1pbnkpDQoJCQkJbWlueSA9IGFycmF5X3lbaV07DQoNCgkJCWlmKGFycmF5X3lbaV0gPiBtYXh5KQ0KCQkJCW1heHkgPSBhcnJheV95W2ldOw0KCQl9DQoJCWZvcih5ID0gbWlueTsgeSA8PSBtYXh5OyB5KyspDQoJCXsNCgkJCXZhciBwb2x5SW50cyA9IG5ldyBBcnJheSgpOw0KCQkJaW50cyA9IDA7DQoJCQlmb3IoaSA9IDA7IGkgPCBuOyBpKyspDQoJCQl7DQoJCQkJaWYoIWkpDQoJCQkJew0KCQkJCQlpbmQxID0gbi0xOw0KCQkJCQlpbmQyID0gMDsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJaW5kMSA9IGktMTsNCgkJCQkJaW5kMiA9IGk7DQoJCQkJfQ0KCQkJCXkxID0gYXJyYXlfeVtpbmQxXTsNCgkJCQl5MiA9IGFycmF5X3lbaW5kMl07DQoJCQkJaWYoeTEgPCB5MikNCgkJCQl7DQoJCQkJCXgxID0gYXJyYXlfeFtpbmQxXTsNCgkJCQkJeDIgPSBhcnJheV94W2luZDJdOw0KCQkJCX0NCgkJCQllbHNlIGlmKHkxID4geTIpDQoJCQkJew0KCQkJCQl5MiA9IGFycmF5X3lbaW5kMV07DQoJCQkJCXkxID0gYXJyYXlfeVtpbmQyXTsNCgkJCQkJeDIgPSBhcnJheV94W2luZDFdOw0KCQkJCQl4MSA9IGFycmF5X3hbaW5kMl07DQoJCQkJfQ0KCQkJCWVsc2UgY29udGludWU7DQoNCgkJCQkgLy8gIE1vZGlmaWVkIDExLiAyLiAyMDA0IFdhbHRlciBab3JuDQoJCQkJaWYoKHkgPj0geTEpICYmICh5IDwgeTIpKQ0KCQkJCQlwb2x5SW50c1tpbnRzKytdID0gTWF0aC5yb3VuZCgoeS15MSkgKiAoeDIteDEpIC8gKHkyLXkxKSArIHgxKTsNCg0KCQkJCWVsc2UgaWYoKHkgPT0gbWF4eSkgJiYgKHkgPiB5MSkgJiYgKHkgPD0geTIpKQ0KCQkJCQlwb2x5SW50c1tpbnRzKytdID0gTWF0aC5yb3VuZCgoeS15MSkgKiAoeDIteDEpIC8gKHkyLXkxKSArIHgxKTsNCgkJCX0NCgkJCXBvbHlJbnRzLnNvcnQoX0NvbXBJbnQpOw0KCQkJZm9yKGkgPSAwOyBpIDwgaW50czsgaSs9MikNCgkJCQl0aGlzLl9ta0Rpdihwb2x5SW50c1tpXSwgeSwgcG9seUludHNbaSsxXS1wb2x5SW50c1tpXSsxLCAxKTsNCgkJfQ0KCX07DQoNCgl0aGlzLmRyYXdTdHJpbmcgPSBmdW5jdGlvbih0eHQsIHgsIHkpDQoJew0KCQl0aGlzLmh0bSArPSAnPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7d2hpdGUtc3BhY2U6bm93cmFwOycrDQoJCQknbGVmdDonICsgeCArICdweDsnKw0KCQkJJ3RvcDonICsgeSArICdweDsnKw0KCQkJJ2ZvbnQtZmFtaWx5OicgKyAgdGhpcy5mdEZhbSArICc7JysNCgkJCSdmb250LXNpemU6JyArIHRoaXMuZnRTeiArICc7JysNCgkJCSdjb2xvcjonICsgdGhpcy5jb2xvciArICc7JyArIHRoaXMuZnRTdHkgKyAnIj4nKw0KCQkJdHh0ICsNCgkJCSc8XC9kaXY+JzsNCgl9Ow0KDQovKiBkcmF3U3RyaW5nUmVjdCgpIGFkZGVkIGJ5IFJpY2sgQmxvbW1lcnMuDQpBbGxvd3MgdG8gc3BlY2lmeSB0aGUgc2l6ZSBvZiB0aGUgdGV4dCByZWN0YW5nbGUgYW5kIHRvIGFsaWduIHRoZQ0KdGV4dCBib3RoIGhvcml6b250YWxseSAoZS5nLiByaWdodCkgYW5kIHZlcnRpY2FsbHkgd2l0aGluIHRoYXQgcmVjdGFuZ2xlICovDQoJdGhpcy5kcmF3U3RyaW5nUmVjdCA9IGZ1bmN0aW9uKHR4dCwgeCwgeSwgd2lkdGgsIGhhbGlnbikNCgl7DQoJCXRoaXMuaHRtICs9ICc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpoaWRkZW47JysNCgkJCSdsZWZ0OicgKyB4ICsgJ3B4OycrDQoJCQkndG9wOicgKyB5ICsgJ3B4OycrDQoJCQknd2lkdGg6Jyt3aWR0aCArJ3B4OycrDQoJCQkndGV4dC1hbGlnbjonK2hhbGlnbisnOycrDQoJCQknZm9udC1mYW1pbHk6JyArICB0aGlzLmZ0RmFtICsgJzsnKw0KCQkJJ2ZvbnQtc2l6ZTonICsgdGhpcy5mdFN6ICsgJzsnKw0KCQkJJ2NvbG9yOicgKyB0aGlzLmNvbG9yICsgJzsnICsgdGhpcy5mdFN0eSArICciPicrDQoJCQl0eHQgKw0KCQkJJzxcL2Rpdj4nOw0KCX07DQoNCgl0aGlzLmRyYXdJbWFnZSA9IGZ1bmN0aW9uKGltZ1NyYywgeCwgeSwgdywgaCwgYSkNCgl7DQoJCXRoaXMuaHRtICs9ICc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsnKw0KCQkJJ2xlZnQ6JyArIHggKyAncHg7JysNCgkJCSd0b3A6JyArIHkgKyAncHg7JysNCgkJCS8vIHcgKHdpZHRoKSBhbmQgaCAoaGVpZ2h0KSBhcmd1bWVudHMgYXJlIG5vdyBvcHRpb25hbC4NCgkJCS8vIEFkZGVkIGJ5IE1haG11dCBLZXlndWJhdGxpLCAxNC4xLjIwMDgNCgkJCSh3PyAoJ3dpZHRoOicgKyAgdyArICdweDsnKSA6ICcnKSArDQoJCQkoaD8gKCdoZWlnaHQ6JyArIGggKyAncHg7Jyk6JycpKyciPicrDQoJCQknPGltZyBzcmM9IicgKyBpbWdTcmMgKyciJysgKHcgPyAoJyB3aWR0aD0iJyArIHcgKyAnIicpOicnKSsgKGggPyAoJyBoZWlnaHQ9IicgKyBoICsgJyInKTonJykgKyAoYT8gKCcgJythKSA6ICcnKSArICc+JysNCgkJCSc8XC9kaXY+JzsNCgl9Ow0KDQoJdGhpcy5jbGVhciA9IGZ1bmN0aW9uKCkNCgl7DQoJCXRoaXMuaHRtID0gIiI7DQoJCWlmKHRoaXMuY252KSB0aGlzLmNudi5pbm5lckhUTUwgPSAiIjsNCgl9Ow0KDQoJdGhpcy5fbWtPdlFkcyA9IGZ1bmN0aW9uKGN4LCBjeSwgeCwgeSwgdywgaCwgd29kLCBob2QpDQoJew0KCQl2YXIgeGwgPSBjeCAtIHgsIHhyID0gY3ggKyB4ICsgd29kIC0gdywgeXQgPSBjeSAtIHksIHliID0gY3kgKyB5ICsgaG9kIC0gaDsNCgkJaWYoeHIgPiB4bCt3KQ0KCQl7DQoJCQl0aGlzLl9ta0Rpdih4ciwgeXQsIHcsIGgpOw0KCQkJdGhpcy5fbWtEaXYoeHIsIHliLCB3LCBoKTsNCgkJfQ0KCQllbHNlDQoJCQl3ID0geHIgLSB4bCArIHc7DQoJCXRoaXMuX21rRGl2KHhsLCB5dCwgdywgaCk7DQoJCXRoaXMuX21rRGl2KHhsLCB5YiwgdywgaCk7DQoJfTsNCgkNCgl0aGlzLl9ta0FyY0RpdiA9IGZ1bmN0aW9uKHgsIHksIG95LCBjeCwgY3ksIGlPZGRzLCBhQm5kQSwgYUJuZFosIGlTZWN0cykNCgl7DQoJCXZhciB4ckRlZiA9IGN4ICsgeCArIChpT2RkcyAmIDB4ZmZmZiksIHkyLCBoID0gb3kgLSB5LCB4bCwgeHIsIHc7DQoNCgkJaWYoIWgpIGggPSAxOw0KCQl4ID0gY3ggLSB4Ow0KDQoJCWlmKGlTZWN0cyAmIDB4ZmYwMDAwKSAvLyBTdGFydC1hbmdsZSA+IGVuZC1hbmdsZQ0KCQl7DQoJCQl5MiA9IGN5IC0geSAtIGg7DQoJCQlpZihpU2VjdHMgJiAweDAwZmYpDQoJCQl7DQoJCQkJaWYoaVNlY3RzICYgMHgwMikNCgkJCQl7DQoJCQkJCXhsID0gTWF0aC5tYXgoeCwgYUJuZFpbeV0pOw0KCQkJCQl3ID0geHJEZWYgLSB4bDsNCgkJCQkJaWYodyA+IDApIHRoaXMuX21rRGl2KHhsLCB5MiwgdywgaCk7DQoJCQkJfQ0KCQkJCWlmKGlTZWN0cyAmIDB4MDEpDQoJCQkJew0KCQkJCQl4ciA9IE1hdGgubWluKHhyRGVmLCBhQm5kQVt5XSk7DQoJCQkJCXcgPSB4ciAtIHg7DQoJCQkJCWlmKHcgPiAwKSB0aGlzLl9ta0Rpdih4LCB5MiwgdywgaCk7DQoJCQkJfQ0KCQkJfQ0KCQkJZWxzZQ0KCQkJCXRoaXMuX21rRGl2KHgsIHkyLCB4ckRlZiAtIHgsIGgpOw0KCQkJeTIgPSBjeSArIHkgKyAoaU9kZHMgPj4gMTYpOw0KCQkJaWYoaVNlY3RzICYgMHhmZjAwKQ0KCQkJew0KCQkJCWlmKGlTZWN0cyAmIDB4MDEwMCkNCgkJCQl7DQoJCQkJCXhsID0gTWF0aC5tYXgoeCwgYUJuZEFbeV0pOw0KCQkJCQl3ID0geHJEZWYgLSB4bDsNCgkJCQkJaWYodyA+IDApIHRoaXMuX21rRGl2KHhsLCB5MiwgdywgaCk7DQoJCQkJfQ0KCQkJCWlmKGlTZWN0cyAmIDB4MDIwMCkNCgkJCQl7DQoJCQkJCXhyID0gTWF0aC5taW4oeHJEZWYsIGFCbmRaW3ldKTsNCgkJCQkJdyA9IHhyIC0geDsNCgkJCQkJaWYodyA+IDApIHRoaXMuX21rRGl2KHgsIHkyLCB3LCBoKTsNCgkJCQl9DQoJCQl9DQoJCQllbHNlDQoJCQkJdGhpcy5fbWtEaXYoeCwgeTIsIHhyRGVmIC0geCwgaCk7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQlpZihpU2VjdHMgJiAweDAwZmYpDQoJCQl7DQoJCQkJaWYoaVNlY3RzICYgMHgwMikNCgkJCQkJeGwgPSBNYXRoLm1heCh4LCBhQm5kWlt5XSk7DQoJCQkJZWxzZQ0KCQkJCQl4bCA9IHg7DQoJCQkJaWYoaVNlY3RzICYgMHgwMSkNCgkJCQkJeHIgPSBNYXRoLm1pbih4ckRlZiwgYUJuZEFbeV0pOw0KCQkJCWVsc2UNCgkJCQkJeHIgPSB4ckRlZjsNCgkJCQl5MiA9IGN5IC0geSAtIGg7DQoJCQkJdyA9IHhyIC0geGw7DQoJCQkJaWYodyA+IDApIHRoaXMuX21rRGl2KHhsLCB5MiwgdywgaCk7DQoJCQl9DQoJCQlpZihpU2VjdHMgJiAweGZmMDApDQoJCQl7DQoJCQkJaWYoaVNlY3RzICYgMHgwMTAwKQ0KCQkJCQl4bCA9IE1hdGgubWF4KHgsIGFCbmRBW3ldKTsNCgkJCQllbHNlDQoJCQkJCXhsID0geDsNCgkJCQlpZihpU2VjdHMgJiAweDAyMDApDQoJCQkJCXhyID0gTWF0aC5taW4oeHJEZWYsIGFCbmRaW3ldKTsNCgkJCQllbHNlDQoJCQkJCXhyID0geHJEZWY7DQoJCQkJeTIgPSBjeSArIHkgKyAoaU9kZHMgPj4gMTYpOw0KCQkJCXcgPSB4ciAtIHhsOw0KCQkJCWlmKHcgPiAwKSB0aGlzLl9ta0Rpdih4bCwgeTIsIHcsIGgpOw0KCQkJfQ0KCQl9DQoJfTsNCg0KCXRoaXMuc2V0U3Ryb2tlKDEpOw0KCXRoaXMuc2V0Rm9udCgidmVyZGFuYSxnZW5ldmEsaGVsdmV0aWNhLHNhbnMtc2VyaWYiLCAiMTJweCIsIEZvbnQuUExBSU4pOw0KCXRoaXMuY29sb3IgPSAiIzAwMDAwMCI7DQoJdGhpcy5odG0gPSAiIjsNCgl0aGlzLnduZCA9IHduZCB8fCB3aW5kb3c7DQoNCglpZighamdfb2spIF9jaGtESFRNKHRoaXMud25kKTsNCglpZihqZ19vaykNCgl7DQoJCWlmKGNudikNCgkJew0KCQkJaWYodHlwZW9mKGNudikgPT0gInN0cmluZyIpDQoJCQkJdGhpcy5jb250ID0gZG9jdW1lbnQuYWxsPyAodGhpcy53bmQuZG9jdW1lbnQuYWxsW2Nudl0gfHwgbnVsbCkNCgkJCQkJOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZD8gKHRoaXMud25kLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNudikgfHwgbnVsbCkNCgkJCQkJOiBudWxsOw0KCQkJZWxzZSBpZihjbnYgPT0gd2luZG93LmRvY3VtZW50KQ0KCQkJCXRoaXMuY29udCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07DQoJCQkvLyBJZiBjbnYgaXMgYSBkaXJlY3QgcmVmZXJlbmNlIHRvIGEgY2FudmFzIERPTSBub2RlDQoJCQkvLyAob3B0aW9uIHN1Z2dlc3RlZCBieSBBbmRyZWFzIEx1bGVpY2gpDQoJCQllbHNlIHRoaXMuY29udCA9IGNudjsNCgkJCS8vIENyZWF0ZSBuZXcgY2FudmFzIGluc2lkZSBjb250YWluZXIgRElWLiBUaHVzIHRoZSBkcmF3aW5nIGFuZCBjbGVhcmluZw0KCQkJLy8gbWV0aG9kcyB3b24ndCBpbnRlcmZlcmUgd2l0aCB0aGUgY29udGFpbmVyJ3MgaW5uZXIgaHRtbC4NCgkJCS8vIFNvbHV0aW9uIHN1Z2dlc3RlZCBieSBWbGFkaW1pci4NCgkJCXRoaXMuY252ID0gdGhpcy53bmQuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJCQl0aGlzLmNudi5zdHlsZS5mb250U2l6ZT0wOw0KCQkJdGhpcy5jb250LmFwcGVuZENoaWxkKHRoaXMuY252KTsNCgkJCXRoaXMucGFpbnQgPSBqZ19kb20/IF9wbnRDbnZEb20gOiBfcG50Q252SWU7DQoJCX0NCgkJZWxzZQ0KCQkJdGhpcy5wYWludCA9IF9wbnREb2M7DQoJfQ0KCWVsc2UNCgkJdGhpcy5wYWludCA9IF9wbnROOw0KDQoJdGhpcy5zZXRQcmludGFibGUoZmFsc2UpOw0KfQ0KDQpmdW5jdGlvbiBfbWtMaW5WaXJ0KGFMaW4sIHgxLCB5MSwgeDIsIHkyKQ0Kew0KCXZhciBkeCA9IE1hdGguYWJzKHgyLXgxKSwgZHkgPSBNYXRoLmFicyh5Mi15MSksDQoJeCA9IHgxLCB5ID0geTEsDQoJeEluY3IgPSAoeDEgPiB4Mik/IC0xIDogMSwNCgl5SW5jciA9ICh5MSA+IHkyKT8gLTEgOiAxLA0KCXAsDQoJaSA9IDA7DQoJaWYoZHggPj0gZHkpDQoJew0KCQl2YXIgcHIgPSBkeTw8MSwNCgkJcHJ1ID0gcHIgLSAoZHg8PDEpOw0KCQlwID0gcHItZHg7DQoJCXdoaWxlKGR4ID4gMCkNCgkJey0tZHg7DQoJCQlpZihwID4gMCkgICAgLy8gIEluY3JlbWVudCB5DQoJCQl7DQoJCQkJYUxpbltpKytdID0geDsNCgkJCQl5ICs9IHlJbmNyOw0KCQkJCXAgKz0gcHJ1Ow0KCQkJfQ0KCQkJZWxzZSBwICs9IHByOw0KCQkJeCArPSB4SW5jcjsNCgkJfQ0KCX0NCgllbHNlDQoJew0KCQl2YXIgcHIgPSBkeDw8MSwNCgkJcHJ1ID0gcHIgLSAoZHk8PDEpOw0KCQlwID0gcHItZHk7DQoJCXdoaWxlKGR5ID4gMCkNCgkJey0tZHk7DQoJCQl5ICs9IHlJbmNyOw0KCQkJYUxpbltpKytdID0geDsNCgkJCWlmKHAgPiAwKSAgICAvLyAgSW5jcmVtZW50IHgNCgkJCXsNCgkJCQl4ICs9IHhJbmNyOw0KCQkJCXAgKz0gcHJ1Ow0KCQkJfQ0KCQkJZWxzZSBwICs9IHByOw0KCQl9DQoJfQ0KCWZvcih2YXIgbGVuID0gYUxpbi5sZW5ndGgsIGkgPSBsZW4taTsgaTspDQoJCWFMaW5bbGVuLShpLS0pXSA9IHg7DQp9Ow0KDQpmdW5jdGlvbiBfQ29tcEludCh4LCB5KQ0Kew0KCXJldHVybih4IC0geSk7DQp9DQoNCg=='></script>




        <script id=script_toggle>
                function toggle(divid) {
                        var imgid=divid.replace("div_","img_" );
                        if(! document.getElementById(divid)) { return; }

                        var imgid=divid.replace("div_","img_" );
                        style_display=document.getElementById(divid).style.display;

                        if( style_display == "none" ) {
                                img="<img src=/imgs/btn/koeyew.png id="+imgid+" height=75 onclick=\"toggle('"+divid+"'); return false;\" >";
                                document.getElementById(divid).style.display="inline";
                                document.getElementById(imgid).innerHTML=img;
                                document.getElementById(imgid).src="/imgs/btn/koeyew.png";
//                              alert( "BUGS_37891 INLINE img="+img );
                                }
                       else {
                                img="<img src=/imgs/btn/koeyeb.png id="+imgid+" height=75 onclick=\"toggle('"+divid+"'); return false;\" >";

                                document.getElementById(divid).style.display="none";
                                document.getElementById(imgid).innerHTML=img;
                                document.getElementById(imgid).src="/imgs/btn/koeyeb.png";
                                }
                        }
                </script id=script_toggle_end>





	<script id="toggles">
		function toggles(div_ids,cmd) {
			htmout=0; j=0; k=0; divid=""; divids="".split(" ");
//			alert( "BUGS_200 toggles div_ids="+div_ids+" cmd="+cmd );
			var ids = "letter contacts items kojax files parse cfg main help wz konet iperms jtfdcr fb pdf pn tm tl zm file forms lists lists_letters lists_contacts lists_items lists_postturtles lists_monkeytraps lists_floods koslots views fb pdf pn tl zm mp3 mp4";

			if( div_ids == "" ) {
				for(j=0; j<ids.split(" ").length; j++ ) {
					divids[j]="div_"+ids.split(" ")[j];
//					alert( "BUGS_210 j="+j+" divid="+divid)
					}
//				alert( "BUGS_211 j="+j+" div_ids="+div_ids+" divids0="+divids[0] );
				}
			else {
				divids=div_ids.split(" ")
//				alert( "BUGS_212 j="+j+" div_ids="+div_ids+" divids0="+divids[0] );
				}
//			alert( "BUGS_220 toggles divids_length="+divids.length+" cmd="+cmd );

			for( j=0; j<divids.length; j++ ) {
				divid=divids[j];
				imgid=divid.replace("div_","img_");
//				alert( "BUGS_221 toggles j="+j+" divid="+divid+" cmd="+cmd+" imgid="+imgid );

				if( ! document.getElementById(divid)) { continue; }
//				alert( "BUGS_222 toggles j="+j+" FOUND divid="+divid+" cmd="+cmd+" imgid="+imgid );

				if( cmd == "allon" ) {
//					alert( "BUGS_230 toggles ALLON div_ids="+div_ids+" cmd="+cmd );
					document.getElementById(divid).style.display="inline";
					if (! document.getElementById(imgid)) { continue; }
					document.getElementById(imgid).src="/imgs/btn/koeyew.png";

//					if( document.getElementById('img_toggle_allon')) {
//						document.getElementById('img_toggle_allon').style.display="inline";
//						}
//					if( document.getElementById('img_toggle_toggle')) {
//						document.getElementById('img_toggle_toggle').style.display="inline";
//						}
//					if( document.getElementById('img_toggle_alloff')) {
//						document.getElementById('img_toggle_alloff').style.display="inline";
//						}
					}


				if(( cmd == "toggle" ) || ( cmd == "" )) {
					display=document.getElementById(divid).style.display;
					if( display == "none" ) {
						document.getElementById(divid).style.display="inline";
						if (document.getElementById(imgid)) { 
							document.getElementById(imgid).src="/imgs/btn/koeyew.png";
							}
						}
					else {
						document.getElementById(divid).style.display="none";
						if (document.getElementById(imgid)) { 
							document.getElementById(imgid).src="/imgs/btn/koeyeb.png";
							}
						}
					}

				if( cmd == "alloff" ) {
					document.getElementById(divid).style.display="none";
					if (! document.getElementById(imgid)) { continue; }
					document.getElementById(imgid).src="/imgs/btn/koeyeb.png";
//					if( document.getElementById('img_toggle_allon')) {
//						document.getElementById('img_toggle_allon').style.display="inline";
//						}
//					if( document.getElementById('img_toggle_toggle')) {
//						document.getElementById('img_toggle_toggle').style.display="none";
//						}
//					if( document.getElementById('img_toggle_alloff')) {
//						document.getElementById('img_toggle_alloff').style.display="none";
//						}
					}


				}

			return("");



			var htmout = ""; var htmout_b = ""; 
			var j=0; var k=0;
			var htmbugs = ""; 
			htmbugs += '<div id="div_htmbugs">';
			htmbugs += '	<h1>div_htmbugs</h1>';
			htmbugs += '	<pre>';

			var style_d = "_style_d";
			var style_v = "_style_v";
			var divid = "";
			var div_divid = "";
//			var divids = "konet iperms <hr> jkwii jk sk skwii <hr> jtfdc jtfinc jtfdcr <hr> law med kou kids <hr> av db dd fb pn sl tl tm yt zm <hr> abc media files misc mess xyz".split(" ");
			var divids = "konet iperms jtfdcr <hr> fb pdf pn tm tl zm <hr> file forms".split(" ");

			
//			alert( "BUGS_102 divids="+divids );
			htmout += '<div id="div_buttons_toggle">';
			htmout_b += '<div id="div_buttons_toggle_b">';


			if(( element == "div_alloff" )) {
				for( j=0; j<divids.length; j++ ) {
//					htmout = ""; htmout_b="";
					divid=divids[j];
					div_divid="div_"+divid;
					if( divid == "<br>" ) { 
						htmout += divid; 
						htmout_b += divid; 
						continue; 
						}
					if( divid == "<hr>" ) { 
						htmout += divid; 
						htmout_b += divid; 
						continue; 
						}

					if(! document.getElementById(div_divid)) { continue; }
					if( document.getElementById(div_divid)) {
						document.getElementById(div_divid).style.display="none";
						}
					htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">';
					htmout_b += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">';

					}
				htmout += "	</div>\n";
				htmout_b += "	</div>\n";
				document.getElementById("div_buttons_toggle").innerHTML = htmout;
				document.getElementById("div_buttons_toggle_b").innerHTML = htmout_b;
				return;
				}


			if(( element == "div_toggle" )) {
//				htmout = ""; htmout_b="";
 				for( j=0; j<divids.length; j++ ) {
 					divid=divids[j];
					div_divid="div_"+divid;
					if( divid == "<br>" ) { 
						htmout += divid; 
						htmout_b += divid; 
						continue; 
						}
					if( divid == "<hr>" ) { 
						htmout += divid; 
						htmout_b += divid; 
						continue; 
						}

//					alert( "BUGS_1770 toggle toggle j="+j+" element="+element );

					if(! document.getElementById(div_divid)) { continue; }
					if( document.getElementById(div_divid)) {
						if( document.getElementById(div_divid).style.display == "none" ) {
							document.getElementById(div_divid).style.display="inline";
							htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">';
							htmout_b += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">';
							}
						else {
							document.getElementById(div_divid).style.display="none";
							htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">';
							htmout_b += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">';
							}
						}
					}
				htmout += "	</div>\n";
				htmout_b += "	</div>\n";
				document.getElementById("div_buttons_toggle").innerHTML = htmout;
				document.getElementById("div_buttons_toggle_b").innerHTML = htmout_b;
				return;
				}




			if( element == "div_allon" )  {
//				htmout = ""; htmout_b = "";
 				for( j=0; j<divids.length; j++ ) {
 					divid=divids[j];
					div_divid="div_"+divid;
					if( divid == "<br>" ) { 
						htmout += divid; 
						htmout_b += divid;
//						alert( "BUGS_105 <BR> divid="+divid+" htmout="+htmout );
						continue; 
						}
					if( divid == "<hr>" ) { 
						htmout += divid; 
						htmout_b += divid; 
//						alert( "BUGS_105 <HR> divid="+divid+" htmout="+htmout );
						continue; 
						}


					if(! document.getElementById(div_divid)) { continue; }
					if( document.getElementById(div_divid)) {
						document.getElementById(div_divid).style.display="inline";
						}

					htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">\n';
					htmout_b += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">\n';
//					alert( "BUGS_115 j="+j+" divid="+divid+" htmout="+htmout+ "element="+element );

					}
				document.getElementById("div_buttons_toggle").innerHTML = htmout;
				document.getElementById("div_buttons_toggle_b").innerHTML = htmout_b;
				return;
				}

//			alert( "BUGS_1800 toggle element="+element );


 			for( j=0; j<divids.length; j++ ) {
 				divid=divids[j];
				div_divid="div_"+divid;
				if( divid == "<br>" ) { 
//					alert( "BUGS_151 <BR> divid="+divid+" element="+element );
					htmout += divid;
					continue; 
					}
				if( divid == "<hr>" ) { 
//					alert( "BUGS_152 <HR> divid="+divid+" element="+element );
					htmout += divid;
					continue; 
					}

				if(! document.getElementById(div_divid)) { continue; }

				style_v = document.getElementById(div_divid).style.visibility;
//				alert( "BUGS_132 j="+j+" style_d="+style_d+"  style_v="+style_v );
//				document.getElementById(div_divid).style.display = "none";

				style_d = document.getElementById(div_divid).style.display;
//				alert( "BUGS_133 j="+j+" style_d="+style_d+" style_v="+style_v );

				htmbugs += "htmbugs j="+j+" divid="+divid;
				htmbugs += " -== div_divid="+div_divid;
				htmbugs += " element="+element;
				htmbugs += " =- -=";
				htmbugs += " style_d="+style_d+"";
				htmbugs += " style_v="+style_v+"";
				htmbugs += "====================\n";


//				if( div_divid.match(/element/) != '') {
//				if( div_divid.match(element)) {
//				if( div_divid == element ) {
//					alert( "BUGS_141 _MATCH_ div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
//					htmbugs += "BUGS_141 _MATCH_ div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
//					}
//				else {
//					alert( "BUGS_142 nomatch div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
//					htmbugs += "BUGS_142 _match_ div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
//					}


// selected button
//				if( div_divid.match(element) ) {
				if( div_divid == element ) {
					style_d = document.getElementById(div_divid).style.display;
//					alert( "BUGS_160 MATCH div_divid="+div_divid+" element="+element+" style_d="+style_d );
					if( document.getElementById(div_divid).style.display == "none" ) {
						htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="toggles(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
						htmbugs += "BUGS_161 _DIV_DIVID-NONE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						document.getElementById(div_divid).style.display="inline";
						}
					else {
						htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="toggles(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
						htmbugs += "BUGS_162 DIV_DIVID-INLINE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						document.getElementById(div_divid).style.display="none";
						}
					}


// other buttons
//				else {
				if( div_divid != element ) {
//					alert( "BUGS_170 rest div_divid="+div_divid+" element="+element );
					if( document.getElementById(div_divid).style.display == "none" ) {
						htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="toggles(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
						htmbugs += "BUGS_171 div_divid_none div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						}
					else {
						htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="toggles(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
						htmbugs += "BUGS_172 div_divid_inline div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						}
					}
				if( divid == "pn" ) { htmout += "<br>"; }
				if( divid == "<br>" ) { htmout += "<br>\n"; }
				if( divid == "<hr>" ) { htmout += "<hr>\n"; }
				}  
			htmout += '	</div>';

			htmbugs += "	</pre>";
			htmbugs += "	</div>";			

//			alert( "BUGS_181 toggles divid="+divid+" htmout="+htmout );
//			alert( "BUGS_200 htmbugs="+htmbugs );	
//			document.getElementById("div_htmbugs").innerHTML = htmbugs;
			document.getElementById("div_buttons_toggle").innerHTML = htmout;
			document.getElementById("div_buttons_toggle_b").innerHTML = htmout;
			}
 		</script>




	<script id=script_startup_1650>
		function startup_1650(args) {
			alert( "BUGS_1650 startup args="+args );
			htmout="";
//			htmout += banner(args)
//			alert( "BUGS_1541 startup letter args="+args );
			htmout += letter(args);
//			alert( "BUGS_1542 startup contacts args="+args );
			htmout += contacts(args);
//			alert( "BUGS_1543 startup items args="+args );
			htmout += items(args);
//			alert( "BUGS_1545 startup args="+args );

//			htmout += dhtml(args);
//			alert(htmout);
//			htmout += head(args);
//			alert(htmout);
//			htmout += tail(args);
//			alert(htmout);
//			return(htmout);
			}
		</script id=script_head_end>

	<script id=script_items1>
		function items1(args) {
			htmout=""; j=0; k=0; i=0;
			alert(htmout);
			divid="div_items";



items=`
/imgs/btn/koeye_handhither.gif|koeye_handhither
/byrdbellvjk/imgs/01.jpg|/imgs/01
/byrdbellvjk/imgs/100.jpg|/imgs/100
/byrdbellvjk/imgs/100_jtfdcr_2013_byrd_threat.jpg|/imgs/100_jtfdcr_2013_byrd_threat
/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespas.jpg|/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespas
/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespass2.jpg|/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespass2
/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_3dogs_after_heartrequest.jpg|/imgs/100_jtfdcr_byrd_seigrist_3dogs_after_heartrequest
/byrdbellvjk/imgs/100_jtfdcr_byrds_theft_sawhorse.jpg|/imgs/100_jtfdcr_byrds_theft_sawhorse
/byrdbellvjk/imgs/100_zn_16.jpg|/imgs/100_zn_16
/byrdbellvjk/imgs/100_zn_21.jpg|/imgs/100_zn_21
/byrdbellvjk/imgs/113.jpg|/imgs/113
/byrdbellvjk/imgs/115.jpg|/imgs/115
/byrdbellvjk/imgs/116.jpg|/imgs/116
/byrdbellvjk/imgs/124.jpg|/imgs/124
/byrdbellvjk/imgs/170.jpg|/imgs/170
/byrdbellvjk/imgs/171.jpg|/imgs/171
/byrdbellvjk/imgs/202.jpg|/imgs/202
/byrdbellvjk/imgs/203.jpg|/imgs/203
/byrdbellvjk/imgs/204.jpg|/imgs/204
/byrdbellvjk/imgs/205.jpg|/imgs/205
/byrdbellvjk/imgs/206.jpg|/imgs/206
/byrdbellvjk/imgs/207.jpg|/imgs/207
/byrdbellvjk/imgs/208.jpg|/imgs/208
/byrdbellvjk/imgs/209.jpg|/imgs/209
/byrdbellvjk/imgs/210.jpg|/imgs/210
/byrdbellvjk/imgs/211.jpg|/imgs/211
/byrdbellvjk/imgs/212.jpg|/imgs/212
/byrdbellvjk/imgs/22.jpg|/imgs/22
/byrdbellvjk/imgs/222.jpg|/imgs/222
/byrdbellvjk/imgs/229.jpg|/imgs/229
/byrdbellvjk/imgs/232.jpg|/imgs/232
/byrdbellvjk/imgs/233.jpg|/imgs/233
/byrdbellvjk/imgs/26.jpg|/imgs/26
/byrdbellvjk/imgs/27.jpg|/imgs/27
/byrdbellvjk/imgs/28.jpg|/imgs/28
/byrdbellvjk/imgs/29.jpg|/imgs/29
/byrdbellvjk/imgs/30.jpg|/imgs/30
/byrdbellvjk/imgs/31.jpg|/imgs/31
/byrdbellvjk/imgs/32.jpg|/imgs/32
/byrdbellvjk/imgs/33.jpg|/imgs/33
/byrdbellvjk/imgs/34.jpg|/imgs/34
/byrdbellvjk/imgs/36.jpg|/imgs/36
/byrdbellvjk/imgs/42.jpg|/imgs/42
/byrdbellvjk/imgs/43.jpg|/imgs/43
/byrdbellvjk/imgs/44.jpg|/imgs/44
/byrdbellvjk/imgs/46.jpg|/imgs/46
/byrdbellvjk/imgs/550_head_jtfdcr_police_neiborhood.jpg|/imgs/550_head_jtfdcr_police_neiborhood
/byrdbellvjk/imgs/63.jpg|/imgs/63
/byrdbellvjk/imgs/66.jpg|/imgs/66
/byrdbellvjk/imgs/71.jpg|/imgs/71
/byrdbellvjk/imgs/900_136.jpg|/imgs/900_136
/byrdbellvjk/imgs/900_68.jpg|/imgs/900_68
/byrdbellvjk/imgs/900_byrdbell_20200916.jpg|/imgs/900_byrdbell_20200916
/byrdbellvjk/imgs/900_byrdbell_20200916_1.jpg|/imgs/900_byrdbell_20200916_1
/byrdbellvjk/imgs/900_emh_20160911_056.jpg|/imgs/900_emh_20160911_056
/byrdbellvjk/imgs/900_emh_20160911_058.jpg|/imgs/900_emh_20160911_058
/byrdbellvjk/imgs/900_emh_20160911_059.jpg|/imgs/900_emh_20160911_059
/byrdbellvjk/imgs/900_IMG_0574.jpg|/imgs/900_IMG_0574
/byrdbellvjk/imgs/900_IMG_0577.jpg|/imgs/900_IMG_0577
/byrdbellvjk/imgs/900_jtfdc_private_court_since_1979_viewin.jpg|/imgs/900_jtfdc_private_court_since_1979_viewin
/byrdbellvjk/imgs/900_jtfinc.jpg|/imgs/900_jtfinc
/byrdbellvjk/imgs/900_snap_20170123_187559_jtfdc_kids_cycle_laps.jpg|/imgs/900_snap_20170123_187559_jtfdc_kids_cycle_laps
/byrdbellvjk/imgs/900_snap_20170123_187576_jtf32_preservation_police_yellowsticker_frenzy.jpg|/imgs/900_snap_20170123_187576_jtf32_preservation_police_yellowsticker_frenzy
/byrdbellvjk/imgs/900_snap_20170123_197616_law_donovan_joann1.jpg|/imgs/900_snap_20170123_197616_law_donovan_joann1
/byrdbellvjk/imgs/900_stlcounty_kassil_bench_probaton_20170918-1818_001.jpg|/imgs/900_stlcounty_kassil_bench_probaton_20170918-1818_001
/byrdbellvjk/imgs/900_topos.jpg|/imgs/900_topos
/byrdbellvjk/imgs/900_topos_20160505_031.jpg|/imgs/900_topos_20160505_031
/byrdbellvjk/imgs/900_zn_4.jpg|/imgs/900_zn_4
/byrdbellvjk/imgs/jtfdc_sawhorse_2020.jpg|/imgs/jtfdc_sawhorse_2020
/byrdbellvjk/imgs/snap_202209156950.png|/imgs/snap_202209156950
/byrdbellvjk/imgs/snap_202209156951.png|/imgs/snap_202209156951
/byrdbellvjk/imgs/snap_202209156952.png|/imgs/snap_202209156952
/byrdbellvjk/imgs/snap_202209156953.png|/imgs/snap_202209156953
/byrdbellvjk/imgs/snap_202209156954.png|/imgs/snap_202209156954
/byrdbellvjk/imgs/snap_202209156955.png|/imgs/snap_202209156955
/byrdbellvjk/imgs/snap_202209156956.png|/imgs/snap_202209156956
/byrdbellvjk/imgs/snap_202209156957.png|/imgs/snap_202209156957
/byrdbellvjk/imgs/snap_202209156958.png|/imgs/snap_202209156958
/byrdbellvjk/imgs/snap_202209156959.png|/imgs/snap_202209156959
/byrdbellvjk/imgs/snap_202209156960.png|/imgs/snap_202209156960
/byrdbellvjk/imgs/snap_202209156961.png|/imgs/snap_202209156961
/byrdbellvjk/imgs/snap_202209156962.png|/imgs/snap_202209156962
/byrdbellvjk/imgs/snap_202209156963.png|/imgs/snap_202209156963
/byrdbellvjk/imgs/snap_202209156964.png|/imgs/snap_202209156964
/byrdbellvjk/imgs/snap_202209156965.png|/imgs/snap_202209156965
/byrdbellvjk/imgs/snap_202209156966.png|/imgs/snap_202209156966
/byrdbellvjk/imgs/snap_202209156967.png|/imgs/snap_202209156967
/byrdbellvjk/imgs/snap_202209156968.png|/imgs/snap_202209156968
/byrdbellvjk/imgs/snap_202209156969.png|/imgs/snap_202209156969
`.split("\n");



items1=`
170.jpg|jtfdc_sawhorse_original
171.jpg|jtfinc_entrance
900_jtfdc_private_court_since_1979_viewin.jpg|jtfdc_viewin
900_jtfinc.jpg|
900_snap_20170123_187559_jtfdc_kids_cycle_laps|jtfdc_cycle_kids
900_snap_20170123_187576_jtf32_preservation_police_yellowsticker_frenzy
jtfdc_sawhorse_2020.jpg|jtfdc_sawhorse_2020
100_jtfdcr_2013_byrd_threat.jpg|jtfdcr_2013_byrd_threat
116.jpg|sign_private|jtfdc_sign_private_green
100.jpg|jtfdc_birdview|jtfdc_birdview
44.jpg|byrd_siegrist_dogs3.jpg|byrd_sieggrist_dogs3
66.jpg|jtf28-30-32_eagle_theft.jpg|jtf29_eagle_theft_jtf28-30-32
46.jpg|byrds_sawhorse_theft|jtf29_byrds_sawhorse_theft
32.jpg|jtfdcr_cover|jtfdcr_cover
31.jpg|who2jail
900_byrdbell_20200916.jpg|jkmed_eyes
900_emh_20160911_056.jpg|jkmed_heart
100_jtfdcr_byrd_seigrist_2dogs_trespass2|100_jtfdcr_byrd_seigrist_2dogs_trespass2
900_IMG_0577.jpg|jtf29_police_door_entry
900_IMG_0574.jpg|jtf29_doorchimes
229.jpg|trial3_brown_bench_probation_nocameras_notrespass
900_topos_20160505_031.jpg|police_jahns_card
`.split("\n");

			htmout+="<div id=div_items>\n";
			htmout+="<h1>div_items</h1>\n";
			htmout+="<table id=table_items>\n";
			htmout+="<tr>\n";
			htmout+="	<td>num</td>";
			htmout+="	<td>link</td>";
			htmout+="<	td>desc</td>";
			htmout+="	</tr>\n";
			alert( "BUGS_360 IIIIIIIIIIIIIIII htmout="+htmout );

 			for( j=0; j<items.length; j++ ) {
 				file=""; desc="";
 				file=items[j].split("|")[0];
 				desc=items[j].split("|")[1];
 				pathfile="/byrdbellvjk/imgs/"+file;
				alert( "BUGS_360 j="+j+" file="+file+" JJJJJJJJJJJJJJ\n" );
 				url="";
 				url+="<a href="+pathfile+" target=_blank>";
 				url+="	<img id=img_item_"+j+" src="+tn+" height=100 border=0>";
 				url+= "	</a>";

				id=name;
				tn="/imgs/btn/kow.png";
				alert( "BUGS_505 LETTER id="+id+" tn="+tn );
 				url_letter=""; 
				url_letter=url;

 
 				htmout += "<tr>\n";
 				htmout += "	<td>"+j+"</td>";
 				htmout += "	<td>"+url+"</td>";
 				htmout += "	<td>"+desc+"</td>";
 				htmout += "	</tr>\n";
 				}
 			htmout += "	</table id=table_items>\n";
 			htmout += "	</div id=div_items>\n";
			htmout += "<h1>BUGS_ABC xxxxxxxxxxxxxxxx</h1>\n";

			alert( "<h1>BUGS_370 ITEMS JJJJJJJJJJJJJJJJJJJ htmout="+htmout+"<h1>\n";
 			divid="div_items";
			htmout += "<h1>div_items</h1>\n";
 			if( document.getElementById(divid)) {
				document.getElementById(divid).innerHTML=htmout;
 				}
			return(htmout);
			}
		</script id=script_items_end>

	<script id=script_items>
		function items(args) {
			divid="div_items";
			alert( "BUGS_1740 items args="+args );
			htmout=""; j=0; k=0;
			ht="/byrdbellvjk/imgs/";
			divid="div_items";
//			htmout += "<h1>BUGS_21 CONTACTS args="+args+"</h1>\n";
//			alert(htmout);
//			return(htmout);

//			alert( "BUGS_710 ITEMS args="+args+"\n");
			htmout=""; j=0; k=0; i=0;
			htmout_wz="";
			divid="div_item"+i;
			imgid="img_item"+i;
			src="/imgs/btn/koeye.png";
			divids = new Array();
			imgids = new Array();
			divids[0]=divid;
			imgids[0]=imgid;
//			alert( "BUGS_720 items args="+args );

items=`
file|desc|
170.jpg|jtfdc_sawhorse_original
171.jpg|jtfinc_entrance
900_jtfdc_private_court_since_1979_viewin.jpg|jtfdc_viewin
900_jtfinc.jpg|
900_snap_20170123_187559_jtfdc_kids_cycle_laps|jtfdc_cycle_kids
900_snap_20170123_187576_jtf32_preservation_police_yellowsticker_frenzy
jtfdc_sawhorse_2020.jpg|jtfdc_sawhorse_2020
100_jtfdcr_2013_byrd_threat.jpg|jtfdcr_2013_byrd_threat
116.jpg|sign_private|jtfdc_sign_private_green
100.jpg|jtfdc_birdview|jtfdc_birdview
44.jpg|byrd_siegrist_dogs3.jpg|byrd_sieggrist_dogs3
66.jpg|jtf28-30-32_eagle_theft.jpg|jtf29_eagle_theft_jtf28-30-32
46.jpg|byrds_sawhorse_theft|jtf29_byrds_sawhorse_theft
32.jpg|jtfdcr_cover|jtfdcr_cover
31.jpg|who2jail
900_byrdbell_20200916.jpg|jkmed_eyes
900_emh_20160911_056.jpg|jkmed_heart
100_jtfdcr_byrd_seigrist_2dogs_trespass2|100_jtfdcr_byrd_seigrist_2dogs_trespass2
900_IMG_0577.jpg|jtf29_police_door_entry
900_IMG_0574.jpg|jtf29_doorchimes
229.jpg|trial3_brown_bench_probation_nocameras_notrespass
900_topos_20160505_031.jpg|police_jahns_card
`.split("\n");

// items=`
// name|phn|url|email|note|action
// greg luber|314-|https://501law.com|email|note|action|
// henry elster|314-|https://elsterlaw.com|email|note|action|
// dan diemer|314-863-8833|https://diemerlawfirm.com/|email|note|action|
// joe whitner|314-354-8484|https://rsblawfirm.com|email|note|action|
// todo|phn|url|email|note|action
// brown|314-|https://brown..com|email|note|action
// keuhlig|314-|https://keyhlig..com|email|note|action
// walters|314-|https://walters|email|note|action
// columbo|314-|https://columbo|email|note|action
// fail|phn|url|email|note|action
// mccloskey|314-721-4000|https://www.mccloskeylaw.com/|email|note|action|
// richard woolf|314-345-5030|https://bakersterchi.com|rwoolf@bakersterchi.com|email|note|action|
// keven dolley|314-293-4884|https://www.missouriemploymentlawattorney.com|email|note|action|
// richard sindel|314-721-6040|https://sindellaw.com|email|note|action|
// evelyn lewis|314-721-6040|https://evelynlewislawllc.com|email|note|action|
// `.split("\n");
 
//			alert( "BUGS_431 items items="+items[0] );
//			alert( "BUGS_432 items items="+items[1] );
//			alert( "BUGS_433 items items="+items[2] );
//			alert( "BUGS_775 items items.length="+items.length );

			htmout = ""; j=0; k=0; i=0;
			htmout += "<div id=div_items>\n";
			htmout += "<h1>div_items</h1>\n";
			htmout += "	<table id=table_items>\n";
			htmout += "	<tr>";
			htmout += "		<td width=10>num</td>";
			htmout += "		<td width=200>id</td>";
			htmout += "		<td width=200>name</td>";
			htmout += "		<td width=300>url</td>";
			htmout += "		<td width=400>desc</td>";

//			htmout += "		<td>phn</td>";
//			htmout += "		<td>firm</td>";
//			htmout += "		<td>email</td>";
//			htmout += "		<td>action</td>";
			htmout += "		</tr>";

//			alert( "BUGS_800 items args="+args );


			for ( j=0; j<items.length; j++ ) {
				name = items[j].split("|")[0];
//				alert( "BUGS_801 name="+name+" j="+j );
				if( name == undefined ) { continue; }
				if( name == "undefined" ) { continue; }
				if( name == "name" ) { continue; }
				if( name == "" ) { continue; }



				file = items[j].split("|")[0];

				if( file == "file" ) { continue; }
				if( file == "" ) { continue; }

				htfile=ht+file;
				desc = items[j].split("|")[1];

//				phn = items[j].split("|")[1];
//				firm = items[j].split("|")[2];
//				email = items[j].split("|")[3];
//				note = items[j].split("|")[5];
//				action = items[j].split("|")[6];

				url="";
				url+="<a href="+htfile+" target=_blank>";
				url+="<img name=img_item_"+j+" id=img_item_"+j+" src="+htfile+" height=100 width=80 border=0>";
				url+="</a>";


				htmout += "	<tr>";
				htmout += "		<td>"+j+"</td>";
				htmout += "		<td>"+url+"</td>";
				htmout += "		<td><b>"+desc+"</b></td>";
				htmout += "		<td>"+file+"</td>";
				htmout += "		</tr>";
//				alert( "BUGS_822 items j="+j+" name="+name+"\n" );
				}
//			alert( "BUGS_831 j="+j );
			htmout += "		</table id=table_items_end>\n";
			htmout += "	</div id=div_items_end>\n";
//			alert( "BUGS_832 divid="+divid );

			if( document.getElementById('div_items')) {
				document.getElementById('div_items').innerHTML=htmout;
				}
			return(htmout);
			}
        	</script id=script_items_end>

	<script id=script_contacts>
		function contacts(args) {
			divid="div_contacts";
			htmout=""; j=0; k=0; i=0;
			alert( "BUGS_1880 contacts args="+args );
//			htmout += "<h1>BUGS_21 CONTACTS args="+args+"</h1>\n";
//			alert(htmout);
//			return(htmout);


// items=`
// file|desc|
// 170.jpg|jtfdc_sawhorse_original
// 171.jpg|jtfinc_entrance
// 900_jtfdc_private_court_since_1979_viewin.jpg|jtfdc_viewin
// 900_jtfinc.jpg|
// 900_snap_20170123_187559_jtfdc_kids_cycle_laps|jtfdc_cycle_kids
// 900_snap_20170123_187576_jtf32_preservation_police_yellowsticker_frenzy
// jtfdc_sawhorse_2020.jpg|jtfdc_sawhorse_2020
// 100_jtfdcr_2013_byrd_threat.jpg|jtfdcr_2013_byrd_threat
// 116.jpg|sign_private|jtfdc_sign_private_green
// 100.jpg|jtfdc_birdview|jtfdc_birdview
// 44.jpg|byrd_siegrist_dogs3.jpg|byrd_sieggrist_dogs3
// 66.jpg|jtf28-30-32_eagle_theft.jpg|jtf29_eagle_theft_jtf28-30-32
// 46.jpg|byrds_sawhorse_theft|jtf29_byrds_sawhorse_theft
// 32.jpg|jtfdcr_cover|jtfdcr_cover
// 31.jpg|who2jail
// 900_byrdbell_20200916.jpg|jkmed_eyes
// 900_emh_20160911_056.jpg|jkmed_heart
// 100_jtfdcr_byrd_seigrist_2dogs_trespass2|100_jtfdcr_byrd_seigrist_2dogs_trespass2
// 900_IMG_0577.jpg|jtf29_police_door_entry
// 900_IMG_0574.jpg|jtf29_doorchimes
// 229.jpg|trial3_brown_bench_probation_nocameras_notrespass
// 900_topos_20160505_031.jpg|police_jahns_card
// `.split("\n");

contacts=`
id|name|phn|firm|url|email|note|action
jak3|jenna|314-123-456|konet|konet.org|admin@konet.org|note|action
huschblackwell|gregoroy r smith|314-480-1720|huschblack|huschblackwell.com|gregory.smith@huschblackwell.com|note|action
smithj|melvin j smith|314-726-2141|melvinjsmith|www.melvinjsmithlaw.com|@melvinjsmithlaw.com|note|action
smithr|rudman smith|phn|rudmansmith|www.rudmansmithlaw.com|@rudmansmithlaw.com|note|action
fleddermann|fleddermann|636-947-4343|fleddermann|www.fleddermannlawoffice.com|fleddermann@.fleddermannlawoffice.com|note|action
smithmeuler|smith meuler|314-266-6515|smithmeuller|smithmeuller.com|mgoodman@smithmeuller.com|note|action
goldenhersh|ben goldenhershlaw|314-707-7789|goldenhersh|http://goldenhershlaw.com|ben@goldenhershlaw.com|personal injury|action
<br>|<br>|phn|url|email|note|action
tc|thompson coburn|314-552-6000|thompsoncoburn|thompsoncoburn.com|email|note|action
archcity|archcitydefenders|855-724-2489|archcitydefenders|www.archcitydefenders.org|mail@archcitydefenters.org|savannah downs|action
bb|brown brown|314-333-333|brown|brownlawoffice.com|@brownlawoffice.com|note|action
bc|brown crouppen|314-501-9510|brownandcrouppen|https://www.brownandcrouppen.com/st-louis/|https://www.brownandcrouppen.com/st-louis/|note|action
<br>|
<br>|<br>|phn|url|email|note|action
<br>|<hr>|phn|url|email|note|action
keyhlig|alexander keuhlig|314-726-6868|rosenblumgoldenhersh|rosenblumgoldenhersh.com|@rosenblumgoldenhersh.com|note|20160826
walters|alan p walters|314-227-1943|url|email|note|action
donovan|joann c donovan|314-921-6600|donovan|lawdonovan.com|jdonovan@lawdonovan.com|note|action
cohena|alan cohen|314-|firm|url|email|retired|action
cohenn|nathan cohen|314-|firm|url|email|note|action
luber|greg luber|636-947-1122|501law|https://501law.com|email|debtlaw|action|
elster|henry elster|314-|elster|https://elsterlaw.com|email|note|action|
diemer|dan diemer|314-863-8833|diemer|https://diemerlawfirm.com/|email|note|action|
whitner|joe whitner|314-354-8484|https://rsblawfirm.com|email|note|action|
<br>|todo|phn|url|email|note|action||
mccloskey|mccloskey|314-721-4000|mccloskey|https://www.mccloskeylaw.com/|email|note|action|
woolf|richard woolf|314-345-5030|bakersterchi|https://bakersterchi.com|rwoolf@bakersterchi.com|email|note|action|
dolley|keven dolley|314-293-4884|dolley|https://www.missouriemploymentlawattorney.com|email|note|action|
sindel|richard sindel|314-721-6040|sindel|https://sindellaw.com|email|note|action|
id|evelyn lewis|314-721-6040|evelynlewis|https://evelynlewislawllc.com|email|note|action|
id|`.split("\n");



contacts1=`
name|phn|url|email|note|action
greg luber|314-|https://501law.com|email|note|action|
henry elster|314-|https://elsterlaw.com|email|note|action|
dan diemer|314-863-8833|https://diemerlawfirm.com/|email|note|action|
joe whitner|314-354-8484|https://rsblawfirm.com|email|note|action|
todo|phn|url|email|note|action
brown|314-|https://brown..com|email|note|action
keuhlig|314-|https://keyhlig..com|email|note|action
walters|314-|https://walters|email|note|action
columbo|314-|https://columbo|email|note|action
fail|phn|url|email|note|action
mccloskey|314-721-4000|https://www.mccloskeylaw.com/|email|note|action|
richard woolf|314-345-5030|https://bakersterchi.com|rwoolf@bakersterchi.com|email|note|action|
keven dolley|314-293-4884|https://www.missouriemploymentlawattorney.com|email|note|action|
richard sindel|314-721-6040|https://sindellaw.com|email|note|action|
evelyn lewis|314-721-6040|https://evelynlewislawllc.com|email|note|action|
`.split("\n");

//			alert( "BUGS_200 contacts contacts0="+contacts[0] );
//			alert( "BUGS_200 contacts contacts1="+contacts[1] );
//			alert( "BUGS_200 contacts contacts2="+contacts[2] );
//			alert( "BUGS_200 contacts contacts.length="+contacts.length );

			htmout = ""; j=0; k=0; i=0;
			htmout += "<div id=div_contacts>\n";
			htmout += "<h1>div_contacts</h1>\n";
			htmout += "	<table id=table_contacts>\n";
			htmout += "	<tr>";
			htmout += "		<td>num</td>";
			htmout += "		<td>name</td>";
			htmout += "		<td>phn</td>";
			htmout += "		<td>url</td>";
			htmout += "		<td>url_letter</td>";
			htmout += "		<td>firm</td>";
			htmout += "		<td>email</td>";
			htmout += "		<td>note</td>";
			htmout += "		<td>action</td>";
			htmout += "		</tr>";



			for ( j=0; j<contacts.length; j++ ) {
				name = contacts[j].split("|")[0];
				if( name == undefined ) { continue; }
				if( name == "undefined" ) { continue; }
				if( name == "name" ) { continue; }
				if( name == "" ) { continue; }

				id = contacts[j].split("|")[0];
				phn = contacts[j].split("|")[1];
				firm = contacts[j].split("|")[2];
				site = contacts[j].split("|")[3];
				email = contacts[j].split("|")[4];
				date = contacts[j].split("|")[5];
				note = contacts[j].split("|")[6];
				action = contacts[j].split("|")[7];
				url="";
				url+="<a href="+site+" target=_blank>";
				url+="<img src=/imgs/btn/kob.png height=20 border=0>";
				url+="</a>";
				url_letter="";
				url_letter+="<img src=/imgs/btn/kow.png ";
//				url_letter+=" onclick=\"letter('"+id+"'); return false;\" "
				url_letter+=" onclick=\"letter('"+contacts[j]+"'); return false;\" "
				url_letter+=" height=20 border=0>";

//				alert( "BUGS_650 url="+url+" firm="+firm+"\n" );


				htmout += "	<tr>";
				htmout += "		<td>"+j+"</td>";
				htmout += "		<td><b>"+id+"</b></td>";
				htmout += "		<td><b>"+name+"</b></td>";
				htmout += "		<td><b>"+phn+"</b></td>";
				htmout += "		<td>"+firm+"</td>";
				htmout += "		<td>"+url+"</td>";
				htmout += "		<td>"+url_letter+"</td>";
				htmout += "		<td>"+email+"</td>";
				htmout += "		<td>"+note+"</td>";
				htmout += "		<td>"+action+"</td>";
				htmout += "		</tr>";
//				alert( "BUGS_201 contacts j="+j+" name="+name+"phn= "+phn+"\n" );
				}

			htmout += "		</table id=table_contacts_end>\n";
			htmout += "	</div id=div_contacts_end>\n";

			if( document.getElementById(divid)) {
				document.getElementById(divid).innerHTML=htmout;
				}
			return(htmout);
			}
        	</script id=script_contacts_end>



	<script id=script_letter>
		function letter(contact) {
//			alert( "BUGS_2050 LETTER contact="+contact );
			divid="div_letter";
			htmout="";
			default_contact="id|phn|name|firm|site|email|date|note|action";
			if(contact == "" ) contact=default_contact;

//			alert( "BUGS_930 contact="+contact );
			id = contact.split("|")[0];
			name = contact.split("|")[1];
			phn = contact.split("|")[2];
			firm = contact.split("|")[3];
			site = contact.split("|")[4];
			email = contact.split("|")[5];
			date = contact.split("|")[6];
			note = contact.split("|")[7];
			action = contact.split("|")[8];

//			alert( "BUS_950 id="+id+" name="+name+" phn="+phn );
			contact_info="";
			contact_info+="<div id=div_contacts_info>\n";
			contact_info+="<hr color=goldenrod>\n";


			contact_info+="<table id=table_contact_info1>\n";
			contact_info+="<tr><td>id</td><td>="+id+"</td></tr>\n";
			contact_info+="<tr><td>name</td><td>"+name+"</td></tr>\n";
			contact_info+="<tr><td>phn</td><td>="+phn+"</td></tr>\n";
			contact_info+="<tr><td>firm</td><td>="+firm+"</td></tr>\n";
			contact_info+="<tr><td>site</td><td>"+site+"</td></tr>\n";
			contact_info+="<tr><td>email</td><td>"+email+"</td></tr>\n";
			contact_info+="<tr><td>date</td><td>"+date+"</td></tr>\n";
			contact_info+="<tr><td>note</td><td>"+note+"</td></tr>\n";
			contact_info+="<tr><td>action</td><td>"+action+"</td></tr>\n";
			contact_info+="	</table id=table_contact_info_end>\n";
			contact_info+="<br>\n";
			contact_info+="<hr color=goldenrod>\n";
			contact_info+="	</div id=div_contacts_info_end>\n";

//			alert( "BUGS_2090 contact_info="+contact_info );
			if ( document.getElementById('div_contact_info')) {
				document.getElementById('div_contact_info').innerHTML=contact_info;
				}
			id=args
			htmout += "<h1>BUGS_2091 LETTER  id="+id;
//			alert(htmout);

letter_body=`
we need time

- new grandaughter born 20230227 is in ICU with oxigen problems
- doctor requested medical tests for me
- internet cable problems too

can you reschedule/dismiss out Feb 9 summons court date?
ko2.us/law

- jtfdc_20190516_0880_policereport.pdf (summons and police report)
- jtfdc_20190516_1700_sk_protect.pdf (wifes order of protection from G. Byrd)
- videos of my police calls for help and the police tazor response


the case is about a 20190516 alleged "chestbump" assault against
Gary Byrd and a "door" assault against a "special person" (stlc police)

the allegation are unsupported by the actual
videos of my police calls for help, police tazor response and Mr Byrds pattern and practice
of threats, bullying and trespass over the last 10 years.

our situation is really all about a 10 year dispute over
big dogs, property and safety of small children

We have been targeted by
Ms Joan Donovan Family Law and her a handful of recruited client neighbors
attempts to force us from our home in a private 3 house court .

Ms Donovans legal strategy involving
false police reports, endless legal fees, 
thier 9 freeroaming big dogs and redirected traffic thru our driveway,
has disrupted our lives and business for 10 year.

all documentation, summons, police report, sk order of protection from G. Byrd,
videos, maps, photos are available somewhere online at:

ko2.us/law

Due to the scope and volume of the documentation
the site is evolving into a general
knowledgebase/case managment system portal
that could eventually include aggregated local law news.

you are invited to explore and imagine the potential of this work in progress.

If you are unable to help us,
can you provide a referal for someone to simply 
reschedule/dismiss the Feb 9 court date.

thank you again for your time and consideration

jsk
ko2.us/law
`;

			htmout_pre ="";
			htmout_pre += "<pre id=pre_letter>\n";
			htmout_pre += "Dear "+id+":\n";
			htmout_pre += letter_body;
			htmout_pre += "	</pre id=pre_letter_end>\n";

			htmout="";
			htmout += "Dear "+id+":\n";
			htmout += letter_body;

//			alert( "BUGS_750 LETTER id="+id+" htmout="+htmout );

//			divid="div_letter";
//			if( document.getElementById(divid)) {
//				document.getElementById(divid).innerHTML=htmout;
//				}

			divid="pre_letter";
			if( document.getElementById(divid)) {
				document.getElementById(divid).innerHTML=htmout_pre;
				}


			return(htmout);
			}
		</script id=script_letter_end>

	<script id=script_links>
		function links(args) {
			htmout="";
			htmout += "<h1>BUGS_1170 links args="+args+"</h1>\n;



			alert(htmout);
			return(htmout);
			}
		</script id=script_links>


	<script id=script_k9>
		function k9(args) {
			htmout=""; j=0; k=0;
			alert( "BUGS_2110 k9 args="+args );
			return(htmout);
			}
		</script id=script_k9_end>

	<script id="script_grid_toggle">
		function grid_toggle(args) {
//			alert("BUGS_200 grid args="+args );

			div_divid="div_grid";
			if( document.getElementById('div_grid')) {
				if( document.getElementById('div_grid').style.display == "inline" ) {
					document.getElementById('div_grid').style.display="none";
					if( document.getElementById('img_grid_toggle')) {
						document.getElementById('img_grid_toggle').src="/imgs/btn/btn_keyhole1.png";
						}
					if( document.getElementById('img_grid_keys')) {
						document.getElementById('img_grid_keys').src="/imgs/btn/btn_keys1.png";
						}
					}
				else{
					document.getElementById('div_grid').style.display="inline";
					if( document.getElementById('img_grid_toggle')) {
						document.getElementById('img_grid_toggle').src="/imgs/btn/btn_keyhole2heaven.png";
						}
//					if( document.getElementById('img_grid_keys')) {
//						document.getElementById('img_grid_keys').src="/imgs/btn/btn_keys2.png";
//						}
//					return('');
					}
				}



			return(args);
			}
		</script id=script_grid_toggle_end>

	<script id="script_grid">
		function grid(args) {
//			alert("BUGS_200 grid args="+args );
//			var ctx = document.getElementById('canvas_table_top').getContext('2d');
			if( document.getElementById('img_grid_keys')) {
				document.getElementById('img_grid_keys').src="/imgs/btn/btn_keys_string1.png";
				}
			if(args=="") {
				}
			tokens=args;
			k9s=tokens;
			j=0; k=0;
			if( args == '' ) {
				tokens = '';
				tokens += '-';
				for( k=1; k<11; k++ ) {
//					token = random_int(9,0);
					token = random_int(9,0);
					token = random_int(99,00);
					token = random_int(999,100);
					token = random_int(9999,1000);
					token = random_int(999999,100000);
					token = random_int(99999999,10000000);

					k9=token;
//					alert("BUGS_9010 grid j="+j+" k="+k+" token="+token+" k9="+k9 );
					k9=keine(token);
//					alert("BUGS_9020 grid j="+j+" k="+k+" token="+token+" k9="+k9 );
					token_str = token.toString();
					tokens += token.toString(); tokens += '-';
//					tokens += token_str; tokens += '-';
					}
//				tokens += '-';
				}
		k9s=tokens;
	
		var tokes = tokens.split(/-/);
		tokes_len = tokes.length;
		head=0; tail=tokes_len-1;

		if(( tokes[head] != "" ) && ( tokes[tail] != "" )) {
			k9head=keine(tokes[head]);
			status=0;
			for( j=1; j<tail; j++ ) {
				if( tokes[tail] == tokes[j] ) {
					if( j == k9head ) { status=1; }				
					break;
					}
				}
			if( status == 1 ) {
				htmout  = '';
				htmout += '<img src="/imgs/btn/btn_key_happiness.png" ';
				htmout += '	onclick="window.open(\'/imgs/btn/btn_key_happiness.png\');return false;"';
				htmout += '	height=400 border=0>';
				}
			else {
				htmout  = '';
				htmout += '<img src="/imgs/btn/btn_keyhole_us.png" ';
				htmout += '	onclick="window.open(\'/imgs/btn/btn_key_happiness.png\');return false;"';
				htmout += '	height=400 border=0>';
				}
			if( document.getElementById('div_grid1')) {
				document.getElementById('div_grid1').innerHTML = htmout;
				}

			return(args);
			}




		grid1 = '';
		grid1 += '<div id="div_grid1" >';
		grid1 += '	<h1>div_grid1</h1>';
		grid1 += '	<h3>'+tokens+'</h3>';
		grid1 += '	<br>';
		grid1 += '	<table id="table_grid">';
//		alert( "BUGS_150 grid1="+grid1+"  tokes="+tokes );
		j=0;
		for(r=1; r<4; r++) {
			grid1 += '<tr>';
			for(c=1; c<4; c++) {
//				alert( "BUGS_150 j="+j+"-"+r+"-"+c+" tokens="+tokens );
				j=j+1;
				grid1 += '<td>';
				grid1 += j;
				if((tokes[head]=="")&&(tokes[tail]=="")) {
					grid1 += '<img src="/imgs/btn/kob.png" onclick=';
//					grid1 += '	"grid(\''+j+tokens+'\'); return false;" ';
					grid1 += '	"grid(\''+tokes[j]+tokens+'\'); return false;" ';
					grid1 += '	height=50 border=0>';
					grid1 += '<br>';
//					grid1 += tokes[j];
//					grid1 += '<br>';
//					grid1 += keine(tokes[j]);
//					alert( "BUGS_151 j="+j+"-"+r+"-"+c+" tokens="+tokens );
					}
				if((tokes[head]!="")&&(tokes[tail]=="")) {
//					if( tokes[head] == j ) {
					if( tokes[head] == tokes[j] ) {
						grid1 += '<img src="/imgs/btn/kow.png" ';
//						grid1 += '	onclick="grid(\''+tokens+j+'\'); return false;" ';
						grid1 += '	onclick="grid(\''+tokens+tokes[j]+'\'); return false;" ';
						grid1 += '	height=50 border=0>';
						grid1 += '<br>';
//						grid1 += tokes[j];
//						grid1 += '<br>';
//						grid1 += keine(tokes[j]);
						}
					else {
						grid1 += '<img src="/imgs/btn/kob.png" ';
						grid1 += '	onclick="grid(\''+tokens+tokes[j]+'\'); return false;" ';
						grid1 += '	height=50 border=0>';
						grid1 += '<br>';
//						grid1 += tokes[j];
//						grid1 += '<br>';
//						grid1 += keine(tokes[j]);
						}
//					alert( "BUGS_152 j="+j+"-"+r+"-"+c+" tokens="+tokens );
					}
				if((tokes[head]!="")&&(tokes[tail]!="")) {
//					if( tokes[head] == keine(tokes[tokes[tail]]) ) {
//					if( tokes[ tokes[head]] == keine(tokes[tokes[tail]]) ) {
					if( tokes[ tokes[head]] == tokes[tokes[tail]] ) {
						grid1 += '<img src="/imgs/btn/btn_key_happiness.png" ';
						grid1 += '	onclick="grid(\''+tokens+'\'); return false;" ';
						grid1 += '	height=50 border=0>';
						grid1 += '<br>';
						grid1 += tokes[head]+'='+tokes[tail]+'<br>';
//						grid1 += tokes[j]+<br>;
//						grid1 += '<br>';
//						grid1 += keine(tokes[tokes[tail]]);
						}
					else {
						grid1 += '<img src="/imgs/btn/kob.png" ';
						grid1 += '	onclick="grid(\''+tokens+'\'); return false;" ';
						grid1 += '	height=50 border=0>';
						grid1 += '<br>';
						grid1 += tokes[j];
//						grid1 += '<br>';
//						grid1 += keine(tokes[j]);
						}

//					alert( "BUGS_153 j="+j+"-"+r+"-"+c+" tokens="+tokens );
					}





				grid1 += '<br>'+tokes[j];
//				grid1 += '<br>'+keine(tokes[j]);
				grid1 += '<br>';
				grid1 += '	</td>';

//				grid1 += '-'+k9;
//				grid1 += '-'+keine(tokes[j]);
//				alert( "BUGS_65 j="+j+" toke="+tokes[j] );
//				grid1 += 	tokes[j].toString();
				}
			grid1 += '	</tr>';	
			}
		grid1 += '	</table>';
		grid1 += '	</div>';

//		alert( "BUGS_111 grid1="+grid1 );

		if( document.getElementById('div_grid')) {
			document.getElementById('div_grid').innerHTML=grid1;
			}
//		alert( "BUGS_71 grid1="+grid1 );

		return(args);


			htmout = '';
			htmout += '<div id="div_tokens">';
			htmout += '<h1>div_tokens</h1>';
			htmout += '<br>';
			htmout += '	</div>';	
			if( document.getElementById('div_tokens')) {
				document.getElementById('div_tokens').innerHTML=tokens;
				}


			htmout += '<div id="div_grid">';
			htmout += '<h1>div_grid</h1>';

			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-1\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-2\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-3\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<br>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-4\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-5\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-6\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<br>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-7\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-8\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-9\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<br><br><br><br>';
			htmout += '<hr color=goldenrod';


//			htmout += '<table>';
//
//			j=0;
//			for(r=0; r<3; r++ ) {
//				htmout += '	<tr>';
//				for( c=0; c<3; c++ ) {
//					rand=random_int(99999999,0);
////					alert( "BUGS_202 j="+j+"  rand="+rand );
//					kolists[j] = rand;
//					htmout += '	<td>';
//					htmout += '<img src="/imgs/btn/kob.png"';
//					htmout += '	alt="/imgs/btn/kob.png"';
//					htmout += '	onclick="grid(\''j+'|'+kolists[j]+'\');return false;" ';
//					htmout += '	height=50 border=0>';
//					htmout += '	'+kolists[j];
//					htmout += '		</td>';
//					}
//				htmout += '		</tr>';
//				}
//			htmout += '	</table>';
//			htmout += '	</div>';
//
//			htmout="<h1>BUGS_HTML</h1>";	
//			alert("BUGS_201 grid htmout="+htmout );
			if( document.getElementById('div_grid')) {
				document.getElementById('div_grid').innerHTML=htmout;
				}
			return(args);
			}
		</script>

	<script id="script_startup1">
		function startup1(args) {
			htmout=""; j=0; k=0;
			alert("BUGS_2480 startup1 args="+args );
			htmout=banner('');			
			grid(args);
			return(args);
			}
		</script>

<script id=script_drawgrid >
	function drawgrid() {
		if(document.getElementById('canvas_grid_table_top')) {;
			var canvas = document.getElementById('canvas_grid_table_top');
			}
		if (canvas.getContext) {
			var ctx = canvas.getContext('2d');
               
// Create a pattern
			for (var i = 0;i<7;i++) {
				for (var j = 0;j<7;j++) {   
					ctx.fillStyle = 'rgb(' + Math.floor(255-20.5*i)+ ','+ 
					Math.floor(255 - 42.5*j) + ',255)';
					ctx.fillRect( j*25, i* 25, 55, 55 );
        				}
				}
			} 
		else {
			alert('ALERT_100: unauthorized access logged !!');
			}
		}
	</script id=script_drawgrid_end>







	<script id="script_keine">
              function keine(i) {
//			alert( "BUGS_8980 keine i="+i );
			j=0; o=0;
			is=i.toString().split("");
			islen=is.length;
//			alert( "BUGS_8995 keine j="+j+" islen="+islen+" is="+is );
			for( j=0; j<islen; j++ ) {
				o=o+parseInt(is[j]);
				if( o>9 ) { 
//					alert( "BUGS_8996 TOBIG j="+j+" i="+i+" o="+o );
					o=o-9; 
//					alert( "BUGS_8997 tobig j="+j+" i="+i+" o="+o );
					}
				}
//			alert( "BUGS_9000 keine j="+j+" i="+i+" o="+o );
			return(o);
			}
		</script id=script_keine_end>


	<script id="script_grid_k9">
		function k9_grid(args) {
			alert("BUGS_2120 k9_grid args="+args );
//			var ctx = document.getElementById('canvas_table_top').getContext('2d');
			if( document.getElementById('img_grid_keys')) {
				document.getElementById('img_grid_keys').src="/imgs/btn/btn_keys_string1.png";
				}
			if(args=="") {
				}
			tokens=args;
			k9s=tokens;
			j=0; k=0;
			if( args == '' ) {
				tokens = '';
				tokens += '-';
				for( k=1; k<11; k++ ) {
//					token = random_int(9,0);
					token = random_int(9,0);
					token = random_int(99,00);
					token = random_int(999,100);
					token = random_int(9999,1000);
					token = random_int(999999,100000);
					token = random_int(99999999,10000000);

					k9=token;
//					alert("BUGS_9010 grid j="+j+" k="+k+" token="+token+" k9="+k9 );
					k9=keine(token);
//					alert("BUGS_9020 grid j="+j+" k="+k+" token="+token+" k9="+k9 );
					token_str = token.toString();
					tokens += token.toString(); tokens += '-';
//					tokens += token_str; tokens += '-';
					}
//				tokens += '-';
				}
		k9s=tokens;
	
		var tokes = tokens.split(/-/);
		tokes_len = tokes.length;
		head=0; tail=tokes_len-1;

		if(( tokes[head] != "" ) && ( tokes[tail] != "" )) {
			k9head=keine(tokes[head]);
			status=0;
			for( j=1; j<tail; j++ ) {
				if( tokes[tail] == tokes[j] ) {
					if( j == k9head ) { status=1; }				
					break;
					}
				}
			if( status == 1 ) {
				htmout  = '';
				htmout += '<img src="/imgs/btn/btn_key_happiness.png" ';
				htmout += '	onclick="window.open(\'/imgs/btn/btn_key_happiness.png\');return false;"';
				htmout += '	height=400 border=0>';
				}
			else {
				htmout  = '';
				htmout += '<img src="/imgs/btn/btn_keyhole_us.png" ';
				htmout += '	onclick="window.open(\'/imgs/btn/btn_key_happiness.png\');return false;"';
				htmout += '	height=400 border=0>';
				}
			if( document.getElementById('div_grid1')) {
				document.getElementById('div_grid1').innerHTML = htmout;
				}

			return(args);
			}




		grid1 = '';
		grid1 += '<div id="div_grid1" >';
		grid1 += '	<h1>div_grid1</h1>';
		grid1 += '	<h3>'+tokens+'</h3>';
		grid1 += '	<br>';
		grid1 += '	<table id="table_grid">';
//		alert( "BUGS_150 grid1="+grid1+"  tokes="+tokes );
		j=0;
		for(r=1; r<4; r++) {
			grid1 += '<tr>';
			for(c=1; c<4; c++) {
//				alert( "BUGS_150 j="+j+"-"+r+"-"+c+" tokens="+tokens );
				j=j+1;
				grid1 += '<td>';
				grid1 += j;
				if((tokes[head]=="")&&(tokes[tail]=="")) {
					grid1 += '<img src="/imgs/btn/kob.png" onclick=';
//					grid1 += '	"grid(\''+j+tokens+'\'); return false;" ';
					grid1 += '	"grid(\''+tokes[j]+tokens+'\'); return false;" ';
					grid1 += '	height=50 border=0>';
					grid1 += '<br>';
//					grid1 += tokes[j];
//					grid1 += '<br>';
//					grid1 += keine(tokes[j]);
//					alert( "BUGS_151 j="+j+"-"+r+"-"+c+" tokens="+tokens );
					}
				if((tokes[head]!="")&&(tokes[tail]=="")) {
//					if( tokes[head] == j ) {
					if( tokes[head] == tokes[j] ) {
						grid1 += '<img src="/imgs/btn/kow.png" ';
//						grid1 += '	onclick="grid(\''+tokens+j+'\'); return false;" ';
						grid1 += '	onclick="grid(\''+tokens+tokes[j]+'\'); return false;" ';
						grid1 += '	height=50 border=0>';
						grid1 += '<br>';
//						grid1 += tokes[j];
//						grid1 += '<br>';
//						grid1 += keine(tokes[j]);
						}
					else {
						grid1 += '<img src="/imgs/btn/kob.png" ';
						grid1 += '	onclick="grid(\''+tokens+tokes[j]+'\'); return false;" ';
						grid1 += '	height=50 border=0>';
						grid1 += '<br>';
//						grid1 += tokes[j];
//						grid1 += '<br>';
//						grid1 += keine(tokes[j]);
						}
//					alert( "BUGS_152 j="+j+"-"+r+"-"+c+" tokens="+tokens );
					}
				if((tokes[head]!="")&&(tokes[tail]!="")) {
//					if( tokes[head] == keine(tokes[tokes[tail]]) ) {
//					if( tokes[ tokes[head]] == keine(tokes[tokes[tail]]) ) {
					if( tokes[ tokes[head]] == tokes[tokes[tail]] ) {
						grid1 += '<img src="/imgs/btn/btn_key_happiness.png" ';
						grid1 += '	onclick="grid(\''+tokens+'\'); return false;" ';
						grid1 += '	height=50 border=0>';
						grid1 += '<br>';
						grid1 += tokes[head]+'='+tokes[tail]+'<br>';
//						grid1 += tokes[j]+<br>;
//						grid1 += '<br>';
//						grid1 += keine(tokes[tokes[tail]]);
						}
					else {
						grid1 += '<img src="/imgs/btn/kob.png" ';
						grid1 += '	onclick="grid(\''+tokens+'\'); return false;" ';
						grid1 += '	height=50 border=0>';
						grid1 += '<br>';
						grid1 += tokes[j];
//						grid1 += '<br>';
//						grid1 += keine(tokes[j]);
						}

//					alert( "BUGS_153 j="+j+"-"+r+"-"+c+" tokens="+tokens );
					}





				grid1 += '<br>'+tokes[j];
//				grid1 += '<br>'+keine(tokes[j]);
				grid1 += '<br>';
				grid1 += '	</td>';

//				grid1 += '-'+k9;
//				grid1 += '-'+keine(tokes[j]);
//				alert( "BUGS_65 j="+j+" toke="+tokes[j] );
//				grid1 += 	tokes[j].toString();
				}
			grid1 += '	</tr>';	
			}
		grid1 += '	</table>';
		grid1 += '	</div>';

//		alert( "BUGS_111 grid1="+grid1 );

		if( document.getElementById('div_grid')) {
			document.getElementById('div_grid').innerHTML=grid1;
			}
//		alert( "BUGS_71 grid1="+grid1 );

		return(args);


			htmout = '';
			htmout += '<div id="div_tokens">';
			htmout += '<h1>div_tokens</h1>';
			htmout += '<br>';
			htmout += '	</div>';	
			if( document.getElementById('div_tokens')) {
				document.getElementById('div_tokens').innerHTML=tokens;
				}


			htmout += '<div id="div_grid">';
			htmout += '<h1>div_grid</h1>';

			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-1\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-2\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-3\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<br>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-4\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-5\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-6\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<br>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-7\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-8\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<img src="/imgs/btn/kob.png" ';
			htmout += '	onclick="grid(\'grid-9\');return false;" ';
			htmout += '	height=50 border=0>';
			htmout += '<br><br><br><br>';
			htmout += '<hr color=goldenrod';


//			htmout += '<table>';
//
//			j=0;
//			for(r=0; r<3; r++ ) {
//				htmout += '	<tr>';
//				for( c=0; c<3; c++ ) {
//					rand=random_int(99999999,0);
////					alert( "BUGS_202 j="+j+"  rand="+rand );
//					kolists[j] = rand;
//					htmout += '	<td>';
//					htmout += '<img src="/imgs/btn/kob.png"';
//					htmout += '	alt="/imgs/btn/kob.png"';
//					htmout += '	onclick="grid(\''j+'|'+kolists[j]+'\');return false;" ';
//					htmout += '	height=50 border=0>';
//					htmout += '	'+kolists[j];
//					htmout += '		</td>';
//					}
//				htmout += '		</tr>';
//				}
//			htmout += '	</table>';
//			htmout += '	</div>';
//
//			htmout="<h1>BUGS_HTML</h1>";	
//			alert("BUGS_201 grid htmout="+htmout );
			if( document.getElementById('div_grid')) {
				document.getElementById('div_grid').innerHTML=htmout;
				}
			return(args);
			}
		</script id=script_grid_end>


	<script id=script_banner>
		function banner(args) {
			htmout=""; j=0; k=0;
			alert( "BUGS_2790 banner args="+args);
			return(htmout);
			}

		function banner1(args) {
			htmout=""; j=0; k=0;
			alert( "BUGS_2800 banner args="+args );
			psvrec=protocol+"|"+hostname+"|"+port+"|"+pathname+"|"+search+"|"+hash+"|"+host+"|"+dttm+"|";
			protocol=psvrec.split("|")[0];
			hostname=psvrec.split("|")[1];
			port=psvrec.split("|")[2];
			pathname=psvrec.split("|")[3];
			search=psvrec.split("|")[4];
			hash=psvrec.split("|")[5];
			host=psvrec.split("|")[6];
//			dttm=psvrec.split("|")[7];
			dttm = new Date().toISOString().slice(0, 10);

			htmout+="<a href=/k9.html target=_blank><img id=img_k9 src=/imgs/keys/keys00_hole.png height=20 border=0></a>";
			htmout+="<a href=/leds/leds.php target=_blank><img id=img_leds_php src=/imgs/btn/tn_leds.png height=20 border=0></a>";
			htmout+="d r a f t ";
			htmout+="&nbsp &nbsp &nbsp &nbsp";
			htmout+=hostname;
			htmout+="&nbsp &nbsp &nbsp &nbsp";
			htmout+="P R E V I E W";
			htmout+="<img src=/imgs/btn/kop12.png height=20>";
			htmout+=" K O ";
//			htmout+=" K A ";
//			htmout+=" L A W ";
//			htmout+=" B Y R D B E L L V J K ";
//			htmout+=" M E D ";
//			htmout+=" K O N E T ";
//			htmout+=" I P E R M S ";
//			htmout+=" J T F D C ";
//			htmout+=" J T F D C R ";
//			htmout+=" J T F I N C";
//			htmout+=" K O 1 ";
//			htmout+=" K O 2 ";
//			htmout+=" K O 0 ";
			htmout+=pathname;
			htmout+="<img src=/imgs/btn/kop34.png height=20>";
			htmout+="&nbsp &nbsp &nbsp &nbsp";
			htmout+="<font style=\"font-size:18\">"+dttm_"</font>";

<!--
		<a href=/ko/leds/leds.php target=_blank><img id=img_leds_dhtml src=/imgs/btn/tn_leds.png height=20 border=0></a>
		<a href=/k9.html target=_blank><img id=img_k9_dhtml src=/imgs/keys/keys00_hole.png height=20 border=0></a>
		<a href=./ target=_blank><img id=img_ok_dhtml src=/imgs/btn/ok.png height=20 border=0></a>
	-->


			if( document.getElementById('div_banner')) {
				alert( "BUGS_2831 ___FOUND divid=div_banner" );
				document.getElementById('div_banner').innerHTML=htmout;
				}
			else {
				alert( "BUGS_2831 NOTFOUND divid=div_banner" );
				}
			return(htmout);
			}
		</script id=script_banner_end>



	<script id=script_head>
		function head(args) {
			alert( "BUGS_2840 head args="+args );
			htmout="";
			htmout += "<h1>BUGS_1031 HEAD args="+args;
			alert(htmout);
			return(htmout);
			}
		</script id=script_head_end>

	<script id=script_startup2>
		function startup2(args) {
			alert( "BUGS_2850 startup2 args="+args );
			htmout=""; j=0; k=0;
			htmout += "<h1>BUGS_2350 startup3 args="+args;
			alert(htmout);
			return(htmout);
			}
		</script id=script_startup_end>

	<script id=script_tail>
		function tail(args) {
			htmout="";
			htmout += "<h1>BUGS_1031 TAIL args="+args;
			alert(htmout);
			return(htmout);
			}
		</script id=script_tail_end>

	</head>

<body bgcolor=linen onload="startup('startup'); return false;" >


<!-- Load an icon library to show a hamburger menu (bars) on small screens -->
<!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> -->

<!-- Top Navigation Menu -->
		<div class="topnav">
<!--			<a href="#home" class="active">Logo</a>  -->
<img id=topnav_ko title="          home" src=/imgs/btn/ko.png onclick="window.open('./'); return false;"
<img id=topnav_bh title="          bluehost" src=/imgs/bh/bluehost_grid00.jpg onclick="window.open('https://bluehost.com/?utm_source=%28direct%29utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype&affiliate=konet'); return false;" height=20 border=0>
<img id=topnav_k9 title="          k9" src=/imgs/keys/keys00_hole.png onclick="window.open('/k9.htm'); return false;" height=20 border=0>
<img id=topnav_leds title="          leds" src=/imgs/btn/tn_leds.png onclick="window.open('/leds/leds.php'); return false;" height=15 width=15 border=0>

	
<!-- Navigation links (hidden by default) -->
		<div id="myLinks">
			<a href="#news">News</a>
			<a href="#contact">Contact</a>
			<a href="#about">About</a>
			<hr color=white>
			<hr color=black>
			<a href="/notes.txt">notes</a>

			<a href="/index_vu.html">vu</a>
			<a href="#about">About</a>
			</div>
<!-- "Hamburger menu" / "Bar icon" to toggle the navigation links -->
			<a href="javascript:void(0);" class="icon" onclick="myFunction()">
				<i class="fa fa-bars"></i>
			</a>
		</div id=myLinks_end>


	<br>
	<hr color=yellow>
	<h3>ko_sailboat <h3>
	
&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp
&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp
&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp
	<a href=/ko/ko_sailboat.html target=_blank> 
		<img id=img_ko_sailboat title="          ko_sailboat" src=/js/wz/sailboat.png onclick="window.open('/ko/ko_sailboat.html')" height=100 border=0> 
		</a>
	<hr color=yellow>
	<br>





<!--
	<a href=help_20230209_0840.html target=_blank>help_20230209_0840.html</a><br>
	<br>
	<a href=help_20230208_1600.html target=_blank>help_20230208_1600.html</a><br>
	<a href=help_20230208_2030.html target=_blank>help_20230208_2030.html</a><br>
	<a href=help_20230209_0130.html target=_blank>help_20230209_0130.html</a><br>
	<a href=help_20230209_0215.html target=_blank>help_20230209_0215.html</a><br>
	<a href=help_20230209_0230.html target=_blank>help_20230209_0230.html</a><br>
	<a href=help_20230209_0300.html target=_blank>help_20230209_0300.html</a><br>
	<a href=help_20230209_0500.html target=_blank>help_20230209_0500.html</a><br>
	
	
	<a href=help_20230210_1130.html target=_blank>help_20230210_1130.html</a><br>
	<a href=help_20230210_1800.html target=_blank>help_20230210_1800.html</a><br>
	<a href=help_2023082300.html target=_blank>help_2023082300.html</a><br>
	<a href=help_202309_0630.html target=_blank>help_202309_0630.html</a><br>
	<a href=help_20232009_0900.html target=_blank>help_20232009_0900.html</a><br>
	
	<br>
	<hr coloc=black>
	-->

<img id=img_notice_sailboat title="          notice_sailboat" src=/imgs/btn/koeyew.png onclick="toggle('div_notice_sailboat','');return false;" height=20 border=0>notice_sailboat
<div id=div_notice_sailboat 
	style="width: 200px; height: 350px; top: 300px; left: 600px; z-index: 0; cursor: move; visibility: visible;">
<!--	<a name=demolyr1> </a> -->
<!--	<a name=notice_sailboat> </a> -->
	<div id=div_innotice_sailboat>
	<center>
		<img name="button" src=/imgs/btn/koeyew.png alt="wz_dd" style="visibility: hidden;" height=20>
<hr color=black>
<hr color=white>
	<a href=/ko/ko_sailboat.html target=_blank> 
		<img id=img_ko_sailboat title="          ko_sailboat" src=/js/wz/sailboat.png height=25 border=0>

		 </a>
	<br>

	<a href=/pdf/web/viewer.html?file=/byrdbellvjk/pdf/jtfdcr_20150821_cohena_policeletter.pdf target=_blank> 
	<img title="          jtfdcr_20150821_cohena_policeletter" 
src=/byrdbellvjk/pdf/tn_jtfdcr_20150821_cohena_policeletter.png height=30 border=0> </a>

	<a href=/pdf/web/viewer.html?file=/byrdbellvjk/pdf/jtfdcr_20190516_luber_policereport.pdf target=_blank> <img title="          jtfdcr_20190516_luber_policereport" src=/byrdbellvjk/pdf/tn_jtfdcr_20190516_luber_policereport.png height=30 border=0> </a>

	<a href=/pdf/web/viewer.html?file=/byrdbellvjk/pdf/jtfdcr_20190516_1700_sk_protect.pdf target=_blank> <img title="          jtfdcr_20190516_1700_sk_protect" src=/byrdbellvjk/pdf/tn_jtfdcr_20190516_1700_sk_protect.png height=30 border=0> </a>
	<br>
	<hr color=white>
<!--
	. <font style="font-size:6">20150812_cohena_policeletter</font>
	<br>
	. . <font style="font-size:6">jtfdcr_20190516_luber_policereport</font>
	<br>
	. . . <font style="font-size:6">jtfdcr_20190516_1700_sk_protect</font>
	<br>
	-->

	<a href=/byrdbellvjk/mp3/jtfdc_20190516_0830_1m23-1m33.mp3 target=_blank> <img title="          jtfdc_20190516_0830_1m23-1m33" src=/imgs/btn/koeye_mp3.png height=10 border=0></a>

	<a href=/byrdbellvjk/txt/jtfdc_20190516_0820_policecall.txt target=_blank> <img title="          jtfdc_20190516_0820_policecall" src=/imgs/btn/koeye_txt.png height=10 border=0> </a>

	<a href=/byrdbellvjk/txt/skbyrd_protect_20190516.txt target=_blank> <img title="          skbyrd_protect_20190516" src=/imgs/btn/koeye_txt.png height=10 border=0> </a>

	<br>
	<hr color=white>
	<a href=/byrdbellvjk/mp4/jtfdc_byrd_20190516_0820.mp4 target=_blank > <img title="          20190516_0820_jk_policecall" src=/byrdbellvjk/mp4/tn_jtfdc_byrd_20190516_0820.png height=20 border=0> </a>
 -
	<a href=/byrdbellvjk/mp4/jtfdc_byrd_20190516_0830.mp4 target=_blank > <img title="           20190516_0830_jk_police_response" src=/byrdbellvjk/mp4/tn_jtfdc_byrd_20190516_0830.png height=20 border=0> </a>
	<br>
	<hr color=white>
<a href=/byrdbellvjk/mp4/jtfdc_20160530_1327_byrd_trustee_threat.mp4 target=_blank> <img title="      20160530_1327_byrd_threat" src=/byrdbellvjk/mp4/jtfdc_20160530_1317_byrd_trustee_threat.jpg height=15 border=0></a>

<a href=/byrdbellvjk/mp4/jtfdc_byrd_20180606_1648_threats_bucket_theft.mp4 target=_blank> <img title="          byrd_20180606_1648_threats_bucket_theft" src=/byrdbellvjk/mp4/jtfdc_byrd_20180606_1648_threats_bucket_theft.jpg height=15 border=0></a>

<a href=/byrdbellvjk/mp4/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.mp4 target=_blank > <img title=20190528_1636_byrd_marshall_yourself src=/byrdbellvjk/mp4/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshal_yourself.jpg height=15 border=0> </a>
	<br>
	<hr color=white>
	<a href=/law/tls.html target=_blank> <img title="         timelines" src=/imgs/btn/tl.png height=30 border=0> </a>
	<br>
	<hr color=white>
<a href=/fb/law/jkwiiv_byrdbell/zm/zm_donutvanlaw_takings.html target=_blank>
<img title="          donutvanlaw_takings"
src=/fb/law/jkwiiv_byrdbell/zm/donutvanlaw_takings/TileGroup0/0-0-0.jpg
height=25 border=0></a>

<a href=/fb/law/jkwiiv_byrdbell/zm/zm_jtfinc.html target=_blank>
<img title="          jtfinc"
src=/fb/law/jkwiiv_byrdbell/zm/jtfinc/TileGroup0/0-0-0.jpg
height=25 border=0></a>

<a href=/fb/law/jkwiiv_byrdbell/zm/zm_jtf2930.html  target=_blank>
<img title="          jtf2930" src=/fb/law/jkwiiv_byrdbell/zm/jtf2930/TileGroup0/0-0-0.jpg height=25 border=0></a>
<hr color=white>
<hr color=black>

	</center>
		</div id=div_innotice_sailboat>
	</div id=div_notice_sailboat_end >



		<img id=img_notice_leds title="          notice_leds" src=/imgs/btn/koeyew.png onclick="toggle('div_notice_leds','');return false;" height=20 border=0>notice_leds
<img id=img_descriptions title="          descriptions" src=/imgs/btn/koeyew.png onclick="toggle('div_descriptions','');return false;" height=20 border=0>descriptions
<div id=div_notice_leds
	style="width: 300px; height: 200px; top: 300px; left: 100px; z-index: 0; cursor: move; visibility: visible;">
<!--	<a name=demolyr> </a> -->
	<img name="button" src=/imgs/btn/koeyew.png alt="wz_dd" style="visibility: hidden;" height=25>
	<div id=div_innotice_leds>
<!--	<center> -->
		<img name="button" src=/imgs/btn/koeyew.png alt="wz_dd" style="visibility: hidden;" height=20>
<!--
/*
Link Extractor Script- 
(c) Dynamic Drive (www.dynamicdrive.com)
For full source code, installation instructions,
100's more DHTML scripts, and Terms Of
Use, visit dynamicdrive.com
*/
<script id=script_dynamicdrive language="JavaScript1.2">
	function extractlinks(){
		if (document.all||document.getElementById){
			if (document.all)
				var links=document.all.tags("A")
			else if (document.getElementById)
				var links=document.getElementsByTagName("A")
			var total=links.length
			var win2=window.open("","","menubar,scrollbars,status")
			win2.document.write("<h2>Total Links="+total+"</h2><br>")
			for (i=0;i<total;i++){
				win2.document.write('<a href="'+links[i]+'">'+links[i].innerHTML+'</a><br>')
				}
			win2.document.close() 
			}
		}
//-->
		</script id=script_dynamicdrive_end>
<!-- <button onClick="extractlinks()">Extract Links</button>
 -->
	<img id=img_leds title="          leds" src=/imgs/btn/koeye.png onclick="toggle('div_leds',''); return false;" height=15 border=0>leds
	<img id=img_leds_go title="          leds_go" src=/imgs/btn/brdb.png onclick="leds('click'); return false;" height=15 border=0>

	<div id=div_leds>
		<div id=scriptmenu hidden>
			<p><strong><a href="../dynamicindex1/index.html" onMouseover="changetext(content[0])">Menus and Navigation Systems</a><br> 
			<a href="../dynamicindex3/index.html" onMouseover="changetext(content[1])">Special document effects</a><br>
			<a href="../dynamicindex2/index.html" onMouseover="changetext(content[2])">Scrollers</a><br>
			<a href="../dynamicindex4/index.html" onMouseover="changetext(content[3])">Image effects</a><br>
			<a href="index.html" onMouseover="changetext(content[4])">Links and buttons</a><br>
			<a href="../dynamicindex6/index.html" onMouseover="changetext(content[5])">Dynamic Clocks and dates</a><br>
			<a href="../dynamicindex10/index.html" onMouseover="changetext(content[6])">Text animations</a><br>
			<a href="../dynamicindex8/index.html" onMouseover="changetext(content[7])">Browser Window</a><br>
			<a href="../dynamicindex11/index.html" onMouseover="changetext(content[8])">Other</a></strong></p>
			</div id=scriptmenu_end>
		<div id=div_leds_out>
			<a href="index.html?leds=led0 target=_blank
				onclick="window.open('/fb/jtfdc/pages/1.jpg'); return false;"
				onMouseout="tipout(); return false;"
				onMouseover="changetext(content[0])">
				<img id=img_led1 title="          led1" src=/imgs/leds/hal/hal000.gif height=10 border=0>
				</a>
			<a href="index.html?leds=led1 target=_blank onclick="window.open('/fb/jtfdc/pages/1.jpg'); return false;" onMouseout="tipout(); return false;" onMouseover="changetext(content[1])"> <img id=img_led1 title="          led1" src=/imgs/leds/hal/hal000.gif height=10 border=0> </a>
			<a href="index.html?leds=led2 target=_blank
				onclick="window.open('/fb/jtfdc/pages/2.jpg'); return false;"
				onMouseout="tipout(); return false;"
				onMouseover="changetext(content[2])">
				<img id=img_led2 title="          led2" src=/imgs/leds/hal/hal000.gif height=10 border=0>
				</a>
			<a href="index.html?leds=led3 target=_blank
				onclick="window.open('/fb/jtfdc/pages/3.jpg'); return false;"
				onMouseout="tipout(); return false;"
				onMouseover="changetext(content[3])">
				<img id=img_led3 title="          led3" src=/imgs/leds/hal/hal000.gif height=10 border=0>
				</a>
			<a href="index.html?leds=led4 target=_blank
				onclick="window.open('/fb/jtfdc/pages/4.jpg'); return false;"
				onMouseout="tipout(); return false;"
				onMouseover="changetext(content[4])">
				<img id=img_led4 title="          led4" src=/imgs/leds/hal/hal000.gif height=10 border=0>
				</a>
			<a href="index.html?leds=led5 target=_blank
				onclick="window.open('/fb/jtfdc/pages/5.jpg'); return false;"
				onMouseout="tipout(); return false;"
				onMouseover="changetext(content[5])">
				<img id=img_led5 title="          led5" src=/imgs/leds/hal/hal000.gif height=10 border=0>
				</a>
			<a href="index.html?leds=led6 target=_blank
				onclick="window.open('/fb/jtfdc/pages/6.jpg'); return false;"
				onMouseout="tipout(); return false;"
				onMouseover="changetext(content[6])">
				<img id=img_led6 title="          led6" src=/imgs/leds/hal/hal000.gif height=10 border=0>
				</a>
			<a href="index.html?leds=led7 target=_blank
				onclick="window.open('/fb/jtfdc/pages/7.jpg'); return false;"
				onMouseout="tipout(); return false;"
				onMouseover="changetext(content[7])">
				<img id=img_led7 title="          led7" src=/imgs/leds/hal/hal000.gif height=10 border=0>
				</a>
			<a href="index.html?leds=led8 target=_blank
				onclick="window.open('/fb/jtfdc/pages/8.jpg'); return false;"
				onMouseout="tipout(); return false;"
				onMouseover="changetext(content[8])">
				<img id=img_led8 title="          led8" src=/imgs/leds/hal/hal000.gif height=10 border=0>
				</a>
			<a href="index.html?leds=led9 target=_blank
				onclick="window.open('/fb/jtfdc/pages/9.jpg'); return false;"
				onMouseout="tipout(); return false;"
				onMouseover="changetext(content[9])">
				<img id=img_led9 title="          led9" src=/imgs/leds/hal/hal000.gif height=10 border=0>
				</a>
			<a href="index.html?leds=led10 target=_blank
				onclick="window.open('/fb/jtfdc/pages/10.jpg'); return false;"
				onMouseout="tipout(); return false;"
				onMouseover="changetext(content[10])">
				<img id=img_led10 title="          led10" src=/imgs/leds/hal/hal000.gif height=10 border=0>
				</a>
			<a href="index.html?leds=led11 target=_blank
				onclick="window.open('/fb/jtfdc/pages/11.jpg'); return false;"
				onMouseout="tipout(); return false;"
				onMouseover="changetext(content[11])">
				<img id=img_led11 title="          led11" src=/imgs/leds/hal/hal000.gif height=10 border=0>
				</a>
			<a href="index.html?leds=led12 target=_blank
				onclick="window.open('/fb/jtfdc/pages/12.jpg'); return false;"
				onMouseout="tipout(); return false;"
				onMouseover="changetext(content[12])">
				<img id=img_led12 title="          led12" src=/imgs/leds/hal/hal000.gif height=10 border=0>
				</a>
			<br>
<hr color=black>
<hr color=white>
<img id=img_led_1 title="          led_1" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[1])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(1); return false; ";
	height=10 border=0> 
<img id=img_led_2 title="          led_2" 
	src=/imgs/leds/hal/hal000.gif  
	onclick="window.open(''); return false;"  
	onMouseover="changetext(content[2])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(2); return false; ";
	height=10 border=0>
<img id=img_led_3 title="          led_3" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[3])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(3); return false; ";
	height=10 border=0>
<img id=img_led_4 title="          led_4" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[4])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(4); return false; ";
	height=10 border=0>
<img id=img_led_5 title="          led_5" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[5])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(5); return false; ";
	height=10 border=0>
<img id=img_led_6 title="          led_6" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[6])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(6); return false; ";
	height=10 border=0>
<img id=img_led_7 title="          led_7" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[7])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(7); return false; ";
	height=10 border=0>
<img id=img_led_8 title="          led_8" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[8])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(8); return false; ";
	height=10 border=0>
<img id=img_led_9 title="          led_9" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[9])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(9); return false; ";
	height=10 border=0>
<img id=img_led_10 title="          led_10" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[10])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(10); return false; ";
	height=10 border=0>
<img id=img_led_11 title="          led_11" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[11])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(11); return false; ";
	height=10 border=0>
<img id=img_led_12 title="          led_12" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[12])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(12); return false; ";
	height=10 border=0>
<img id=img_led_13 title="          led_13" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[13])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(13); return false; ";
	height=10 border=0>
<img id=img_led_14 title="          led_14" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[14])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(14); return false; ";
	height=10 border=0>
<img id=img_led_15 title="          led_15" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[15])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(15); return false; ";
	height=10 border=0>
<img id=img_led_16 title="          led_16" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[16])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(16); return false; ";
	height=10 border=0>
<img id=img_led_17 title="          led_17" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[17])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(17); return false; ";
	height=10 border=0>
<img id=img_led_18 title="          led_18" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[18])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(18); return false; ";
	height=10 border=0>
<img id=img_led_19 title="          led_19" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[19])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(19); return false; ";
	height=10 border=0>
<img id=img_led_20 title="          led_20" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[20])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(20); return false; ";
	height=10 border=0>
<img id=img_led_21 title="          led_21" 
	src=/imgs/leds/hal/hal000.gif  
	onMouseover="changetext(content[21])" 
	onMouseout="tipout(); return false;"
	onclick="leds_click(21); return false; ";
	height=10 border=0>
			</div id=div_leds_out_end>

<!--		<div id=div_descriptions></div id=div_descriptions_end> -->
		<hr color=black>
		<hr color=black>
		</div id=div_leds_end>


	<script id=script_leds>
		function leds(args) {
			var content=new Array();
			htmout=""; j=0; k=0;
			json_items=""; psv_items=""; div_items=""; phpjson_items=""; phppsv_items="";
			alert( "BUGS_3450 LEDS leds args="+args );
			htmout+="<h1>BUGS_3450 LEDS leds args="+args+"<h1>\n";


//			php_items=kojax('./ko.php?leds&fmt=psv','','' );
//			psv_items=kojax('./ko.php?leds&fmt=psv','','');

//			alert( "BUGS_3461 LEDS url=./ko.php?leds&fmt=json&save="+json_items );
//			json_items=kojaxj('./ko.php?leds&fmt=json&save','','');
//			alert( "BUGS_3462 LEDS json_items="+json_items );


//			alert( "BUGS_3462 LEDS psv_items="+psv_items );

			if( document.getElementById('pre_kojax')) {
				div_items=document.getElementById('pre_kojax').innerHTML;
//				alert( "BUGS_3464 LEDS items="+items );
				}

			psv_items=kojax('./ko.php?leds&fmt=psv&save','','');

			div_items_cnt=div_items.length;
			alert( "BUGS_3471 LEDS DIV div_items_cnt="+div_items_cnt );
			alert( "BUGS_3472 LEDS DIV div_items="+div_items);
			psv_items_cnt=psv_items.length;
			alert( "BUGS_3481 LEDS PSV psv_items_cnt="+psv_items_cnt );
			alert( "BUGS_3482 LEDS PSV psv_items="+psv_items);
			exit;
//			alert( "BUGS_3471 LEDS PSV items="+items);
//			alert( "BUGS_3472 LEDS PSV items0="+items.split("|")[0]);
//			alert( "BUGS_3473 LEDS PSV items1="+items.split("|")[1]);
//			alert( "BUGS_3474 LEDS PSV items2="+items.split("|")[2]);

			links="";
			ledmode="";
			height="20";
			collim=10;
			item="item";
			if( items_cnt < 100 ) { height=40; collim=20;}
			if( items_cnt > 200 ) { height=30; collim=30; }
			if( items_cnt > 300 ) { height=20; collim=40; }
			if( items_cnt > 500 ) { height=10; collim=50; }
			alert( "BUGS_3490 LEDS PSV items_cnt="+items_cnt );
//			alert( "BUGS_3491 LEDS PSV items="+items );
			for( j=0; j< items; j++ ) {
				printf( "BUGS_3492 j="+j+" item="+item[j] );
				continue;
				item=items.split("\n")[j].split("|");

//				id = item[0];
//				progid = item[1];
//				dttm = item[2];
//				status = item[3];
//				grp = item[4];
//				account = item[5];
//				attachment = item[6];
//				bcc = item[7];
//				role = item[8];
//				callback = item[9];
//				carphone = item[10];
//				categories = item[11];
//				cc = item[12];
//				dueby = item[13];
//				duedate = item[14];
//				duration = item[15];
//				email = item[16];
//				email2 = item[17];
//				email3 = item[18];
//				actualwork = item[19];
//				address_selected = item[20];
//				address_selector = item[21];
//				all_day_event = item[22];
//				bday = item[23];
//				dday = item[24];
//				notedays varchar = item[25];
//				anniversary = item[26];
//				assigned = item[27];
//				assistants_name = item[28];
//				assistants_phone = item[29];
//				billing_information = item[30];
//				birthday = item[31];
//				bizaddr = item[32];
//				bizaddrcity = item[33];
//				bizaddrcountry = item[34];
//				bizaddrpobox = item[35];
//				bizaddrpocode = item[36];
//				bizaddrstate = item[37];
//				bizaddrstreet = item[38];
//				bizfax = item[39];
//				bizhomepage = item[40];
//				bizphn = item[41];
//				bizph2 = item[42];
//				changedby = item[43];
//				children = item[44];
//				city = item[45];
//				company = item[46];
//				coname = item[47];
//				cophn = item[48];
//				complete = item[49];
//				computer = item[50];
//				contact = item[51];
//				contacts = item[52];
//				content = item[53];
//				conversation = item[54];
//				country = item[55];
//				created = item[56];
//				custid = item[57];
//				dtdone = item[58];
//				defertil = item[59];
//				dept = item[60];
//				distlistname = item[61];
//				noautoarchive = item[62];
//				downloadstate = item[63];
//				emailselected = item[64];
//				emailselector = item[65];
//				end = item[66];
//				entrytype = item[67];
//				expires = item[68];
//				fileas = item[69];
//				fname = item[70];
//				flagstatus = item[71];
//				followupflag = item[72];
//				sendfrom = item[73];
//				ftpsite = item[74];
//				fullname = item[75];
//				gender = item[76];
//				govid = item[77];
//				haverepliessentto = item[78];
//				hobbies = item[79];
//				home_addr = item[80];
//				home_addrcity = item[81];
//				home_addrcountry = item[82];
//				home_addrpobox = item[83];
//				home_addrpostalcode = item[84];
//				home_addrstate = item[85];
//				home_addrstreet = item[86];
//				home_fax = item[87];
//				home_phone = item[88];
//				home_phone2 = item[89];
//				iconformdescription = item[90];
//				importance = item[0];
//				infolder = item[0];
//				initials = item[0];
//				inetfreebusyaddress = item[0];
//				isdn = item[0];
//				jobtitle = item[0];
//				journal = item[0];
//				junkmailtype = item[0];
//				language = item[0];
//				lname = item[0];
//				lastsavedtm = item[0];
//				location = item[0];
//				mailaddr = item[0];
//				mailaddrflag = item[0];
//				managersname = item[0];
//				meetingstatus = item[0];
//				msg = item[0];
//				msgclass = item[0];
//				msgflag = item[0];
//				mname = item[0];
//				mileage = item[0];
//				mblphn = item[0];
//				modified = item[0];
//				meetingurl = item[0];
//				nickname = item[0];
//				notes = item[0];
//				officeloc = item[0];
//				optattendees = item[0];
//				orgid = item[0];
//				organizer = item[0];
//				otheraddr = item[0];
//				otheraddr_city = item[0];
//				othaddr_country = item[0];
//				othaddr_pobox = item[0];
//				othaddr_postalcode = item[0];
//				othaddr_state = item[0];
//				othaddr_street = item[0];
//				othfax = item[0];
//				othphn = item[0];
//				outlookiver = item[0];
//				outlookver = item[0];
//				owner = item[0];
//				pager = item[0];
//				personalurl = item[0];
//				phnselected = item[0];
//				phnselector = item[0];
//				pobox = item[0];
//				primaryphn = item[0];
//				priority = item[0];
//				private = item[0];
//				profession = item[0];
//				radiophn = item[0];
//				read = item[0];
//				received = item[0];
//				recur = item[0];
//				recurpattern = item[0];
//				recurrangeend = item[0];
//				recurrangestart = item[0];
//				recurring = item[0];
//				referby = item[0];
//				remindbeforehand = item[0];
//				remind = item[0];
//				remindoverridedefault = item[0];
//				remindsound = item[0];
//				remindsoundfile = item[0];
//				remindtime = item[0];
//				remindtopic = item[0];
//				remotestatus = item[0];
//				reqstatus = item[0];
//				requestedby = item[0];
//				requiredattendess = item[0];
//				resources = item[0];
//				responserequested = item[0];
//				retrievaltime = item[0];
//				schedpriority = item[0];
//				sendtextonly = item[0];
//				sensitivity = item[0];
//				sent = item[0];
//				showtimeas = item[0];
//				size = item[0];
//				spouse = item[0];
//				start = item[0];
//				state = item[0];
//				straddr = item[0];
//				subject = item[0];
//				suffix = item[0];
//				teamtask = item[0];
//				telex = item[0];
//				title = item[0];
//				sendto = item[0];
//				totalwork = item[0];
//				trackstat = item[0];
//				ttytddphn = item[0];
//				user1 = item[0];
//				user2 = item[0];
//				user3 = item[0];
//				user4 = item[0];
//				webpage = item[0];
//				zipcode = item[0];
//				pathfile = item[0];
//				path = item[0];
//				file = item[0];
//				base = item[0];
//				ext = item[0];
//				src = item[0];
//				tn = item[0];
//				startdate = item[0];
//				starttime = item[0];
//				enddate = item[0];
//				endtime = item[0];
//				headline = item[0];
//				media = item[0];
//				credit = item[0];
//				text = item[0];
//				led = item[0];
//				type = item[0];
//				speed = item[0];
//				color = item[0];
//				bldg = item[0];
//				loc = item[0];
//				j = item[0];
//				k = item[0];
//				l = item[0];
//				m = item[0];
//				h = item[0];
//				w = item[0];
//				x = item[0];
//				y = item[0];
//				z = item[0];
//				t = item[0];
//				x1 = item[0];
//				y1 = item[0];
//				z1 = item[0];
//				t1 = item[0];
//				x2 = item[0];
//				y2 = item[0];
//				z2 = item[0];
//				t2 = item[0];
//				temp = item[0];
//				desc = item[0];
				}

			for( j=0; j< items_cnt; j++ ) {
				item=psv_items[j];
				printf( "BUGS_3491 j="+j+" item="+item );
				continue;

				led_id=item.split("|")[0];
//				if( led_id == "" ) { continue; }

3490




led_status=item.split("|")[0];
led_code=item.split("|")[1];
led_name=item.split("|")[2];
led_dttm=item.split("|")[3];
led_color=item.split("|")[4];
led_speed=item.split("|")[5];
led_type=item.split("|")[6];
led_date=item.split("|")[7];
led_cmd=item.split("|")[8];
led_cmdout=item.split("|")[9];
led_desc=item.split("|")[10];
led_misc=item.split("|")[11];
led_city=item.split("|")[12];
led_bldg=item.split("|")[13];
led_loc_code=item.split("|")[14];
led_floor=item.split("|")[15];
led_group=item.split("|")[16];
led_orgs=item.split("|")[17];
led_title=item.split("|")[18];
led_published=item.split("|")[19];
led_width=item.split("|")[20];
led_height=item.split("|")[21];
led_comment=item.split("|")[22];
led_filename=item.split("|")[23];
led_user=item.split("|")[24];
led_user_ip=item.split("|")[25];
led_referer=item.split("|")[26];
led_remote_port=item.split("|")[27];
led_viewrole=item.split("|")[28];
led_unique_id=item.split("|")[29];
led_err=item.split("|")[30];
led_fix=item.split("|")[31];
led_os=item.split("|")[32];
id=item.split("|")[33];
grp=item.split("|")[34];
status=item.split("|")[35];
dttm=item.split("|")[36];
pathfile=item.split("|")[37];
path=item.split("|")[38];
file=item.split("|")[39];
base=item.split("|")[40];
ext=item.split("|")[41];
size=item.split("|")[42];
ctime=item.split("|")[43];
mtime=item.split("|")[44];
exif_dttm=item.split("|")[45];
exif_dt=item.split("|")[46];
exif_tm=item.split("|")[47];
title=item.split("|")[48];
thumbnail=item.split("|")[49];
alt=item.split("|")[50];
link=item.split("|")[51];
linktarget=item.split("|")[52];
src=item.split("|")[53];
tn=item.split("|")[54];
startdate=item.split("|")[55];
enddate=item.split("|")[56];
headline=item.split("|")[57];
text=item.split("|")[58];
assets=item.split("|")[59];
media=item.split("|")[60];
credit=item.split("|")[61];
caption=item.split("|")[62];
i=item.split("|")[63];
j=item.split("|")[64];
k=item.split("|")[65];
w=item.split("|")[66];
h=item.split("|")[67];
t=item.split("|")[68];
x=item.split("|")[69];
y=item.split("|")[70];
z=item.split("|")[71];
t1=item.split("|")[72];
x1=item.split("|")[73];
y1=item.split("|")[74];
z1=item.split("|")[75];
t2=item.split("|")[76];
x2=item.split("|")[77];
y2=item.split("|")[78];
z2=item.split("|")[79];
temp=item.split("|")[80];
desc=item.split("|")[81];


//				if( ledmode == "" ) {
//					tn="tn_"+pathfile.replace(".jpg",".png");
//					}
//				else {
//					tn="/leds/imgs/hal/"+led_type+"_"+led_color+led_speed;
//					}
//
//				links+="<img id=img_leds"+j+" ";
//				links+="name=img_leds"+j+" ";
//				links+="title=\"          img_leds"+j+"\n ";
//				links+="src="+tn+" "
//				links+="onMouseover=\"changetext(content["+j+"]); return false;\" ";
//				links+="onMouseout=\"tipout(); return fale;\n" ";
//				links+="onclick=\"leds_onclick('img_leds"+j+"'); return false;\" ";
//				links+=" height=20 border=0>";
//				if( colnum > collim ) {
//					links+="<br>\n";
//					colnum=0;
//					}
//
				content[j]="";
				content[j]+="'";
				content[j]+="<hr color=black>\n";
				content[j]+="<img src="+pathfile+" height=400 >";
				content[j]+="<hr color=white>\n";
				content[j]+="<font style=\"font-size:16\">"+desc+"</font>\n";
				content[j]+=led_bldg+"|"+led_type+"|"+led_color+"|"+led_speed+"\n";
				content[j]+="<hr color=black>\n";
				content[j]+="'";

				alert( "BUGS_3611 j="+j+" links="+links );
				alert( "BUGS_3612 j="+j+" content="+content[j] );
//				alert( "BUGS_17873 j="+j+" f1="+f1+" f2="+f2+" f3="+f3+" <br>\n" );
				}
			divid="div_led";
			alert( "BUGS_3616 LEDS divid="+divid );
			if( document.getElementById('div_led')) {
				alert( "BUGS_3617 LEDS links="+links );
				document.getElementById('div_led').innerHTML=links;
				}
			return(links);



			if( document.getElementById('pre_lists_items')) {
				pre_items=document.getElementById('pre_lists_items').innerHTML.split("\n");
//				alert( "BUGS_17811 pre_items.length="+pre_items.length);
//				pre_item=document.getElementById('pre_lists_items').innerHTML;
				}
//			alert( "BUGS_17872 leds items.length="+items.length );
//			alert( "BUGS_17872 leds items="+items );
items=`
/fb/jtfdcr/pages/1.jpg
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_22_terror_what_are_you_doing_here.mp3
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830.mp3
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0820_policecall.mp3
/byrdbellvjk/mp4/jtfdc_byrd_20180606_1648_threats_bucket_theft.mp4
/imgs/btn/koeye_handhither.gif|koeye_handhither
/byrdbellvjk/imgs/01.jpg|desc_01
/byrdbellvjk/imgs/100.jpg|desc_100
/byrdbellvjk/imgs/100_jtfdcr_2013_byrd_threat.jpg|desc_100_jtfdcr_2013_byrd_threat
/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespas.jpg|desc_100_jtfdcr_byrd_seigrist_2dogs_trespas
/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespass2.jpg|desc_100_jtfdcr_byrd_seigrist_2dogs_trespass2
/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_3dogs_after_heartrequest.jpg|desc_100_jtfdcr_byrd_seigrist_3dogs_after_heartrequest
/byrdbellvjk/imgs/100_jtfdcr_byrds_theft_sawhorse.jpg|desc_100_jtfdcr_byrds_theft_sawhorse
/byrdbellvjk/imgs/100_zn_16.jpg|desc_100_zn_16
/byrdbellvjk/imgs/100_zn_21.jpg|desc_100_zn_21
/byrdbellvjk/imgs/113.jpg|desc_113
/byrdbellvjk/imgs/115.jpg|desc_115
/byrdbellvjk/imgs/116.jpg|desc_116
/byrdbellvjk/imgs/124.jpg|desc_124
/byrdbellvjk/imgs/170.jpg|desc_170
/byrdbellvjk/imgs/171.jpg|desc_171
/byrdbellvjk/imgs/202.jpg|desc_202
/byrdbellvjk/imgs/203.jpg|desc_203
/byrdbellvjk/imgs/204.jpg|desc_204
/byrdbellvjk/imgs/205.jpg|desc_205
/byrdbellvjk/imgs/206.jpg|desc_206
/byrdbellvjk/imgs/207.jpg|desc_207
/byrdbellvjk/imgs/208.jpg|desc_208
/byrdbellvjk/imgs/209.jpg|desc_209
/byrdbellvjk/imgs/210.jpg|desc_210
/byrdbellvjk/imgs/211.jpg|desc_211
/byrdbellvjk/imgs/212.jpg|desc_212
/byrdbellvjk/imgs/22.jpg|desc_22
/byrdbellvjk/imgs/222.jpg|desc_222
/byrdbellvjk/imgs/229.jpg|desc_229
/byrdbellvjk/imgs/232.jpg|desc_232
/byrdbellvjk/imgs/233.jpg|desc_233
/byrdbellvjk/imgs/26.jpg|desc_26
/byrdbellvjk/imgs/27.jpg|desc_27
/byrdbellvjk/imgs/28.jpg|desc_28
/byrdbellvjk/imgs/29.jpg|desc_29
/byrdbellvjk/imgs/30.jpg|desc_30
/byrdbellvjk/imgs/31.jpg|desc_31
/byrdbellvjk/imgs/32.jpg|desc_32
/byrdbellvjk/imgs/33.jpg|desc_33
/byrdbellvjk/imgs/34.jpg|desc_34
/byrdbellvjk/imgs/36.jpg|desc_36
/byrdbellvjk/imgs/42.jpg|desc_42
/byrdbellvjk/imgs/43.jpg|desc_43
/byrdbellvjk/imgs/44.jpg|desc_44
/byrdbellvjk/imgs/46.jpg|desc_46
/byrdbellvjk/imgs/550_head_jtfdcr_police_neiborhood.jpg|desc_550_head_jtfdcr_police_neiborhood
/byrdbellvjk/imgs/63.jpg|desc_63
/byrdbellvjk/imgs/66.jpg|desc_66
/byrdbellvjk/imgs/71.jpg|desc_71
/byrdbellvjk/imgs/900_136.jpg|desc_900_136
/byrdbellvjk/imgs/900_68.jpg|desc_900_68
/byrdbellvjk/imgs/900_byrdbell_20200916.jpg|desc_900_byrdbell_20200916
/byrdbellvjk/imgs/900_byrdbell_20200916_1.jpg|desc_900_byrdbell_20200916_1
/byrdbellvjk/imgs/900_emh_20160911_056.jpg|desc_900_emh_20160911_056
/byrdbellvjk/imgs/900_emh_20160911_058.jpg|desc_900_emh_20160911_058
/byrdbellvjk/imgs/900_emh_20160911_059.jpg|desc_900_emh_20160911_059
/byrdbellvjk/imgs/900_IMG_0574.jpg|desc_900_IMG_0574
/byrdbellvjk/imgs/900_IMG_0577.jpg|desc_900_IMG_0577
/byrdbellvjk/imgs/900_jtfdc_private_court_since_1979_viewin.jpg|desc_900_jtfdc_private_court_since_1979_viewin
/byrdbellvjk/imgs/900_jtfinc.jpg|desc_900_jtfinc
/byrdbellvjk/imgs/900_snap_20170123_187559_jtfdc_kids_cycle_laps.jpg|desc_900_snap_20170123_187559_jtfdc_kids_cycle_laps
/byrdbellvjk/imgs/900_snap_20170123_187576_jtf32_preservation_police_yellowsticker_frenzy.jpg|desc_900_snap_20170123_187576_jtf32_preservation_police_yellowsticker_frenzy
/byrdbellvjk/imgs/900_snap_20170123_197616_law_donovan_joann1.jpg|desc_900_snap_20170123_197616_law_donovan_joann1
/byrdbellvjk/imgs/900_stlcounty_kassil_bench_probaton_20170918-1818_001.jpg|desc_900_stlcounty_kassil_bench_probaton_20170918-1818_001
/byrdbellvjk/imgs/900_topos.jpg|desc_900_topos
/byrdbellvjk/imgs/900_topos_20160505_031.jpg|desc_900_topos_20160505_031
/byrdbellvjk/imgs/900_zn_4.jpg|desc_900_zn_4
/byrdbellvjk/imgs/jtfdc_sawhorse_2020.jpg|desc_jtfdc_sawhorse_2020
/byrdbellvjk/imgs/snap_202209156950.png|desc_snap_202209156950
/byrdbellvjk/imgs/snap_202209156951.png|desc_snap_202209156951
/byrdbellvjk/imgs/snap_202209156952.png|desc_snap_202209156952
/byrdbellvjk/imgs/snap_202209156953.png|desc_snap_202209156953
/byrdbellvjk/imgs/snap_202209156954.png|desc_snap_202209156954
/byrdbellvjk/imgs/snap_202209156955.png|desc_snap_202209156955
/byrdbellvjk/imgs/snap_202209156956.png|desc_snap_202209156956
/byrdbellvjk/imgs/snap_202209156957.png|desc_snap_202209156957
/byrdbellvjk/imgs/snap_202209156958.png|desc_snap_202209156958
/byrdbellvjk/imgs/snap_202209156959.png|desc_snap_202209156959
/byrdbellvjk/imgs/snap_202209156960.png|desc_snap_202209156960
/byrdbellvjk/imgs/snap_202209156961.png|desc_snap_202209156961
/byrdbellvjk/imgs/snap_202209156962.png|desc_snap_202209156962
/byrdbellvjk/imgs/snap_202209156963.png|desc_snap_202209156963
/byrdbellvjk/imgs/snap_202209156964.png|desc_snap_202209156964
/byrdbellvjk/imgs/snap_202209156965.png|desc_snap_202209156965
/byrdbellvjk/imgs/snap_202209156966.png|desc_snap_202209156966
/byrdbellvjk/imgs/snap_202209156967.png|desc_snap_202209156967
/byrdbellvjk/imgs/snap_202209156968.png|desc_snap_202209156968
/byrdbellvjk/imgs/snap_202209156969.png|desc_snap_202209156969

/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20170805_1400_police_byrddog_call.mp3
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0820_policecall.mp3
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830.mp3
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_016_when_they_move_the_sawhorsetweets.mp3
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_026_tweets.mp3
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_1m23-1m33.mp3
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830_22_terror_what_are_you_doing_here.mp3
/byrdbellvjk/mp3/jtfdc_20160530_1317_byrd_trustee_threat.mp3
/byrdbellvjk/mp3/jtfdc_20160530_1327_byrd_trustee_threat.mp3
/byrdbellvjk/mp3/jtfdc_20160530_1916_byrd_threat.mp3
/byrdbellvjk/mp3/jtfdc_20160610_2030_01234567890_waiting_police_byrd_baily.mp3
/byrdbellvjk/mp3/jtfdc_20170805_1400_police_byrddog_call.mp3
/byrdbellvjk/mp3/jtfdc_20190509_1224_jkwii_police_officerbell.mp3
/byrdbellvjk/mp3/jtfdc_20190516_0820_byrd_waiting4police.mp3
/byrdbellvjk/mp3/jtfdc_20190516_0820_policecall.mp3
/byrdbellvjk/mp3/jtfdc_20190516_0830.mp3
/byrdbellvjk/mp3/jtfdc_20190516_0830_026_tweets.mp3
/byrdbellvjk/mp3/jtfdc_20190516_0830_1m23-1m33.mp3
/byrdbellvjk/mp3/jtfdc_20190516_0830_terror_what_are_you_doing_here.mp3
/byrdbellvjk/mp3/jtfdc_20190516_0830_when_they_move_the_sawhorsetweets.mp3
/byrdbellvjk/mp3/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.mp3
/byrdbellvjk/mp3/jtfdc_20190908_0030_still_toadog.mp3
/byrdbellvjk/mp3/jtfdc_20191109_1604_skpout_jkwiigo_jtf31_fiona_nice.mp3
/byrdbellvjk/mp3/jtfdc_20191209_1529_stalkaround_bus.mp3
/byrdbellvjk/mp3/jtfdc_20200109_0648_jhappy_bday_jk2.mp3
/byrdbellvjk/mp3/jtfdc_20200119_1752_stalkaround_twins_suv_n_pickup.mp3
/byrdbellvjk/mp3/jtfdc_20200316_1756_jtf30_vickky_only1doggy.mp3
/byrdbellvjk/mp3/jtfdc_20200322_1222_jhout2.mp3
/byrdbellvjk/mp3/jtfdc_20200330_1200_jkwiigo_jtf3839_byrd_dr_hilldown.mp3
/byrdbellvjk/mp3/jtfdc_byrd_20180423_1320_trespass_bullies.mp3
/byrdbellvjk/mp3/jtfdc_byrd_20180606_1648_threats_bucket_theft.mp3
/byrdbellvjk/mp3/jtfdc_byrd_20190516_0820.mp3
/byrdbellvjk/mp3/jtfdc_byrd_20190516_0830.mp3
/byrdbellvjk/mp3/library_of_congress.mp3
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20170805_1400_police_byrddog_call.mp4
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830.mp4
/byrdbellvjk/imgs/jtfdcr_police/tn_jtfdc_20190509_1224_jkwii_police_officerbell.mp4
/byrdbellvjk/imgs/jtfdcr_police/tn_jtfdc_20190516_0820_byrd_waiting4police.mp4
/byrdbellvjk/mp4/jtfdc_20160530_1317_byrd_trustee_threat.mp4
/byrdbellvjk/mp4/jtfdc_20160530_1327_byrd_trustee_threat.mp4
/byrdbellvjk/mp4/jtfdc_20160530_1916_byrd_threat.mp4
/byrdbellvjk/mp4/jtfdc_20160610_2030_01234567890_waiting_police_byrd_baily.mp4
/byrdbellvjk/mp4/jtfdc_20170805_1400_police_byrddog_call.mp4
/byrdbellvjk/mp4/jtfdc_20190509_1224_jkwii_police_officerbell.mp4
/byrdbellvjk/mp4/jtfdc_20190516_0820_byrd_waiting4police.mp4
/byrdbellvjk/mp4/jtfdc_20190516_0830.mp4
/byrdbellvjk/mp4/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.mp4
/byrdbellvjk/mp4/jtfdc_20190908_0030_still_toadog.mp4
/byrdbellvjk/mp4/jtfdc_20191109_1604_skpout_jkwiigo_jtf31_fiona_nice.mp4
/byrdbellvjk/mp4/jtfdc_20191209_1529_stalkaround_bus.mp4
/byrdbellvjk/mp4/jtfdc_20200109_0648_jhappy_bday_jk2.mp4
/byrdbellvjk/mp4/jtfdc_20200119_1752_stalkaround_twins_suv_n_pickup.mp4
/byrdbellvjk/mp4/jtfdc_20200316_1756_jtf30_vickky_only1doggy.mp4
/byrdbellvjk/mp4/jtfdc_20200322_1222_jhout2.mp4
/byrdbellvjk/mp4/jtfdc_20200330_1200_jkwiigo_jtf3839_byrd_dr_hilldown.mp4
/byrdbellvjk/mp4/jtfdc_byrd_20180423_1320_trespass_bullies.mp4
/byrdbellvjk/mp4/jtfdc_byrd_20180606_1648_threats_bucket_theft.mp4
/byrdbellvjk/mp4/jtfdc_byrd_20190516_0820.mp4
/byrdbellvjk/mp4/jtfdc_byrd_20190516_0830.mp4
/byrdbellvjk/byrdbellvjk.pdf
/byrdbellvjk/fb.pdf
/byrdbellvjk/imgs/jk/dr_richard_gestring_internal_medicine.pdf
/byrdbellvjk/imgs/jk/dr_richard_gestring_psychiatry.pdf
/byrdbellvjk/imgs/jtfdcr/ko.pdf
/byrdbellvjk/imgs/jtfdcr_20190516_protect/102_jk_restrain_donovan_pg1.pdf
/byrdbellvjk/imgs/jtfdcr_20190516_protect/103_jk_restrain_donovan_pg2.pdf
/byrdbellvjk/imgs/jtfdcr_20190516_protect/104_jk_restrain_donovan_pg3.pdf
/byrdbellvjk/imgs/jtfdcr_20190516_protect/105_jk_restrain_donovan_pg6.pdf
/byrdbellvjk/imgs/jtfdcr_20190516_protect/106_jk_restrain_donovan_pg7.pdf
/byrdbellvjk/imgs/jtfdcr_20190516_protect/jkassil_case(s)_details.doc.pdf
/byrdbellvjk/ko.pdf
/byrdbellvjk/pdf/102_jk_restrain_donovan_pg1.pdf
/byrdbellvjk/pdf/103_jk_restrain_donovan_pg2.pdf
/byrdbellvjk/pdf/104_jk_restrain_donovan_pg3.pdf
/byrdbellvjk/pdf/105_jk_restrain_donovan_pg6.pdf
/byrdbellvjk/pdf/106_jk_restrain_donovan_pg7.pdf
/byrdbellvjk/pdf/500_jtfdcr_cohena_2013_cases.pdf
/byrdbellvjk/pdf/byrdbellvjk.pdf
/byrdbellvjk/pdf/byrdbellvjk_bell.pdf
/byrdbellvjk/pdf/byrdbellvjk_byrd.pdf
/byrdbellvjk/pdf/byrdbellvjk_donovan.pdf
/byrdbellvjk/pdf/byrdbellvjk_gardner.pdf
/byrdbellvjk/pdf/byrdbellvjk_jk.pdf
/byrdbellvjk/pdf/byrdbellvjk_jkmed.pdf
/byrdbellvjk/pdf/byrdbellvjk_jtf28.pdf
/byrdbellvjk/pdf/byrdbellvjk_jtf29.pdf
/byrdbellvjk/pdf/byrdbellvjk_jtf30.pdf
/byrdbellvjk/pdf/byrdbellvjk_jtf31.pdf
/byrdbellvjk/pdf/byrdbellvjk_jtf32.pdf
/byrdbellvjk/pdf/byrdbellvjk_jtf39.pdf
/byrdbellvjk/pdf/byrdbellvjk_jtf40.pdf
/byrdbellvjk/pdf/byrdbellvjk_jtfdc.pdf
/byrdbellvjk/pdf/byrdbellvjk_trial1.pdf
/byrdbellvjk/pdf/byrdbellvjk_trial2.pdf
/byrdbellvjk/pdf/byrdbellvjk_trial3.pdf
/byrdbellvjk/pdf/byrdbellvjk_trial4.pdf
/byrdbellvjk/pdf/byrdbellvjk_trial5.pdf
/byrdbellvjk/pdf/byrdbellvjk_trial6.pdf
/byrdbellvjk/pdf/coffee.pdf
/byrdbellvjk/pdf/cohen_15403521_15445941_comb_151203.pdf
/byrdbellvjk/pdf/cohen_15403521_15445941_cont_160121.pdf
/byrdbellvjk/pdf/cohen_15403521_continued_151203.pdf
/byrdbellvjk/pdf/cohen_affidavit_records_151030.pdf
/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg1.pdf
/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg2.pdf
/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg3.pdf
/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg4.pdf
/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg5.pdf
/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg6.pdf
/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg7.pdf
/byrdbellvjk/pdf/incrpt_1530736_citincident_150526_pg8.pdf
/byrdbellvjk/pdf/incrpt_1540352_martin_150716_pg1.pdf
/byrdbellvjk/pdf/incrpt_1540352_martin_150716_pg2.pdf
/byrdbellvjk/pdf/incrpt_1540352_martin_150716_pg3.pdf
/byrdbellvjk/pdf/incrpt_1544594_gardner_150807_pg1.pdf
/byrdbellvjk/pdf/incrpt_1544594_gardner_150807_pg2.pdf
/byrdbellvjk/pdf/incrpt_1552246_gardner_150919_pg1.pdf
/byrdbellvjk/pdf/incrpt_1552246_gardner_150919_pg2.pdf
/byrdbellvjk/pdf/incrpt_1552246_supplement1_gardner_150919_pg1.pdf
/byrdbellvjk/pdf/incrpt_1552326_gardner_150919_pg1.pdf
/byrdbellvjk/pdf/incrpt_1552326_gardner_150919_pg2.pdf
/byrdbellvjk/pdf/incrpt_1553710_martin_150928_pg1.pdf
/byrdbellvjk/pdf/incrpt_1553710_martin_150928_pg2.pdf
/byrdbellvjk/pdf/incrpt_1558386_gardner_151023_pg1.pdf
/byrdbellvjk/pdf/incrpt_1558386_gardner_151023_pg2.pdf
/byrdbellvjk/pdf/jk.pdf
/byrdbellvjk/pdf/jtfdc.pdf
/byrdbellvjk/pdf/jtfdc_20160530_1317_byrd_trustee_threat.pdf
/byrdbellvjk/pdf/jtfdc_20160530_1327_byrd_trustee_threat.pdf
/byrdbellvjk/pdf/jtfdc_20160530_1916_byrd_threat.pdf
/byrdbellvjk/pdf/jtfdc_20160610_2030_01234567890_waiting_police_byrd_baily.pdf
/byrdbellvjk/pdf/jtfdc_20170805_1400_police_byrddog_call.pdf
/byrdbellvjk/pdf/jtfdc_20190509_1224_jkwii_police_officerbell.pdf
/byrdbellvjk/pdf/jtfdc_20190516_0820_byrd_waiting4police.pdf
/byrdbellvjk/pdf/jtfdc_20190516_0830.pdf
/byrdbellvjk/pdf/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.pdf
/byrdbellvjk/pdf/jtfdc_20190908_0030_still_toadog.pdf
/byrdbellvjk/pdf/jtfdc_20191109_1604_skpout_jkwiigo_jtf31_fiona_nice.pdf
/byrdbellvjk/pdf/jtfdc_20191209_1529_stalkaround_bus.pdf
/byrdbellvjk/pdf/jtfdc_byrd_20180423_1320_trespass_bullies.pdf
/byrdbellvjk/pdf/jtfdc_byrd_20180606_1648_threats_bucket_theft.pdf
/byrdbellvjk/pdf/jtfdc_byrd_20190516_0820.pdf
/byrdbellvjk/pdf/jtfdc_byrd_20190516_0830.pdf
/byrdbellvjk/pdf/jtfdcr.pdf
/byrdbellvjk/pdf/jtfdcr_20150000_jk_protect_martin.pdf
/byrdbellvjk/pdf/jtfdcr_20150000_jtfinc_contacts.pdf
/byrdbellvjk/pdf/jtfdcr_20150000_lawers.pdf
/byrdbellvjk/pdf/jtfdcr_20150000_request_legal_assistance.pdf
/byrdbellvjk/pdf/jtfdcr_201500_cohena_cases.pdf
/byrdbellvjk/pdf/jtfdcr_20150611_martin_protect_jk.pdf
/byrdbellvjk/pdf/jtfdcr_20150611_martin_protect_jk1.pdf
/byrdbellvjk/pdf/jtfdcr_20150821_cohena_policeletter.pdf
/byrdbellvjk/pdf/jtfdcr_20150910_jk_protect_donovan.pdf
/byrdbellvjk/pdf/jtfdcr_20151012_stlc_yard_violations.pdf
/byrdbellvjk/pdf/jtfdcr_20160519_1700_sk_protect.pdf
/byrdbellvjk/pdf/jtfdcr_20160826_keuhlig_common_drive.pdf
/byrdbellvjk/pdf/jtfdcr_20170908_cohenn_trial3.pdf
/byrdbellvjk/pdf/jtfdcr_20190516.pdf
/byrdbellvjk/pdf/jtfdcr_20190516_1700_sk_protect.pdf
/byrdbellvjk/pdf/jtfdcr_20190516_big.pdf
/byrdbellvjk/pdf/jtfdcr_20190516_jkmed.pdf
/byrdbellvjk/pdf/jtfdcr_20190516_luber_policereport.pdf
/byrdbellvjk/pdf/jtfdcr_20190516_protect.pdf
/byrdbellvjk/pdf/jtfdcr_20191204_dolley_trial5.pdf
/byrdbellvjk/pdf/jtfdcr_20191204_dolley_trial5_jtfinc.pdf
/byrdbellvjk/pdf/jtfdcr_20200916_jkmed_status.pdf
/byrdbellvjk/pdf/jtfdcr_20230126_byrd_threats_n_thefts.pdf
/byrdbellvjk/pdf/jtfdcr_cohena.pdf
/byrdbellvjk/pdf/jtfdcr_cohenn.pdf
/byrdbellvjk/pdf/jtfdcr_dogs.pdf
/byrdbellvjk/pdf/jtfdcr_dolly.pdf
/byrdbellvjk/pdf/jtfdcr_keuhlig.pdf
/byrdbellvjk/pdf/jtfdcr_police.pdf
/byrdbellvjk/pdf/mp4.pdf
/byrdbellvjk/pdf/police_call_summary_29jamestown.pdf
/byrdbellvjk/pdf/police_call_summary_jamestown_pg1.pdf
/byrdbellvjk/pdf/police_call_summary_jamestown_pg2.pdf
/byrdbellvjk/pdf/police_call_summary_jamestown_pg3.pdf
/byrdbellvjk/pdf/summons_15445941_gardner_pg1.pdf
/byrdbellvjk/pdf/summons_15445941_gardner_pg2.pdf
/byrdbellvjk/pdf/summons_15445941_gardner_pg3.pdf
/byrdbellvjk/pdf/summons_15445941_gardner_pg4.pdf
/byrdbellvjk/pdf/who2jail.pdf
/byrdbellvjk/pdf/zn_byrdbellvjk.pdf
/byrdbellvjk/pj/byrdbellvjk.pdf
/byrdbellvjk/pj/gs.pdf
/byrdbellvjk/pj/gs_byrdbellvjk.pdf
/byrdbellvjk/pj/gs_police.pdf
/byrdbellvjk/pj/zn_byrdbellvjk.pdf
/byrdbellvjk/tn_byrdbellvjk.pdf
/byrdbellvjk/txt/2014_taxdetails.xls.pdf
/byrdbellvjk/txt/jk_restrain_donovan_pg1.pdf
/byrdbellvjk/txt/jk_restrain_donovan_pg2.pdf
/byrdbellvjk/txt/jk_restrain_donovan_pg3.pdf
/byrdbellvjk/txt/jk_restrain_donovan_pg4.pdf
/byrdbellvjk/txt/jk_restrain_donovan_pg5.pdf
/byrdbellvjk/txt/jk_restrain_donovan_pg6.pdf
/byrdbellvjk/txt/jk_restrain_donovan_pg7.pdf
/byrdbellvjk/txt/jk_restrain_donovan_pg8.pdf
/byrdbellvjk/txt/jk_restrain_gardner_pg1.pdf
/byrdbellvjk/txt/jk_restrain_gardner_pg2.pdf
/byrdbellvjk/txt/jk_restrain_gardner_pg3.pdf
/byrdbellvjk/txt/jk_restrain_gardner_pg4.pdf
/byrdbellvjk/txt/jk_restrain_gardner_pg5.pdf
/byrdbellvjk/txt/jk_restrain_gardner_pg6.pdf
/byrdbellvjk/txt/jk_restrain_gardner_pg7.pdf
/byrdbellvjk/txt/jk_restrain_gardner_pg8.pdf
/byrdbellvjk/txt/jk_restrain_martin_pg1.pdf
/byrdbellvjk/txt/jk_restrain_martin_pg2.pdf
/byrdbellvjk/txt/jk_restrain_martin_pg3.pdf
/byrdbellvjk/txt/jk_restrain_martin_pg4.pdf
/byrdbellvjk/txt/jk_restrain_martin_pg5.pdf
/byrdbellvjk/txt/jk_restrain_martin_pg6.pdf
/byrdbellvjk/txt/jk_restrain_martin_pg7.pdf
/byrdbellvjk/txt/jk_restrain_martin_pg8.pdf
/byrdbellvjk/zn_byrdbellvjk.pdf
/byrdbellvjk/fb/byrdbellvjk/imgs_orig/byrdbellvjk.txt
/byrdbellvjk/fb/byrdbellvjk/imgs_orig/exiftool_byrdbellvjk.txt
/byrdbellvjk/fb/byrdbellvjk/imgs_orig/outline.txt
/byrdbellvjk/fb/byrdbellvjk/pages.txt
/byrdbellvjk/fb/notes/notes.txt
/byrdbellvjk/fb/who2jail/jkwii_20190516_policemen_byrdbell_takeaneighbor2jail_day.txt
/byrdbellvjk/fb/who2jail/pages/js/b64_arrows_png.txt
/byrdbellvjk/fb/who2jail/pages/js/b64_loader_gif.txt
/byrdbellvjk/fb/who2jail/pages/js/b64_magazine_js.txt
/byrdbellvjk/fb/who2jail/pages/js/b64_pics.txt
/byrdbellvjk/fb/who2jail/pages/js/b64_zoom-icons-editable_png.txt
/byrdbellvjk/fb/who2jail/pages/js/b64_zoom-icons_png.txt
/byrdbellvjk/fb/who2jail/who2jail.txt
/byrdbellvjk/find_byrd.txt
/byrdbellvjk/find_dogs.txt
/byrdbellvjk/find_gif_jtf.txt
/byrdbellvjk/find_jtf.txt
/byrdbellvjk/find_kb_byrd_mp4.txt
/byrdbellvjk/find_kbvid_byrd.txt
/byrdbellvjk/find_kbvid_tnmp4.txt
/byrdbellvjk/find_mp3_jtf.txt
/byrdbellvjk/find_mp4_byrd.txt
/byrdbellvjk/find_mp4_jtf.txt
/byrdbellvjk/find_mp4_police.txt
/byrdbellvjk/find_police.txt
/byrdbellvjk/help.txt
/byrdbellvjk/imgs/imgs.txt
/byrdbellvjk/imgs/jtfdcr/tn_mp4.txt
/byrdbellvjk/imgs/jtfdcr_police/find_ht_mp4.txt
/byrdbellvjk/imgs/jtfdcr_police/find_ht_pdf.txt
/byrdbellvjk/imgs/jtfdcr_police/find_ht_snap.txt
/byrdbellvjk/imgs/jtfdcr_police/find_jtf.txt
/byrdbellvjk/imgs/jtfdcr_police/find_jtf_ht.txt
/byrdbellvjk/imgs/jtfdcr_police/find_jtf_mp4.txt
/byrdbellvjk/imgs/jtfdcr_police/find_jtfdc.txt
/byrdbellvjk/imgs/jtfdcr_police/find_jtfmp3.txt
/byrdbellvjk/imgs/jtfdcr_police/find_jtfmp4.txt
/byrdbellvjk/imgs/jtfdcr_police/find_kb.txt
/byrdbellvjk/imgs/jtfdcr_police/find_snap.txt
/byrdbellvjk/imgs/jtfdcr_police/find_youb.txt
/byrdbellvjk/imgs/jtfdcr_police/jkwii_20150513_police_flee2cleveland.txt
/byrdbellvjk/imgs/jtfdcr_police/jkwiisme.txt
/byrdbellvjk/imgs/jtfdcr_police/jkwiiv_byrdbell.txt
/byrdbellvjk/imgs/jtfdcr_police/jkwiiv_byrdbell_raw.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20170805_1400_police_byrddog_call.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0820_policecall.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfdc_20190516_0830.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_02.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_03.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_04.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_05.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_06.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_07.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_07_jkwii.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_08.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_10.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_byrd_11.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_dolley_1.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_dolley_2.txt
/byrdbellvjk/imgs/jtfdcr_police/jtfinc_20200102_jtfinc_dolley_3.txt
/byrdbellvjk/imgs/jtfdcr_police/pagelist.txt
/byrdbellvjk/imgs/jtfdcr_police/pagelist_byrdbell.txt
/byrdbellvjk/imgs/jtfdcr_police/pagelist_kb_jtfdcr_vid.txt
/byrdbellvjk/imgs/jtfdcr_police/pagelist_mp3.txt
/byrdbellvjk/imgs/jtfdcr_police/pcalls.txt
/byrdbellvjk/imgs/jtfdcr_police/pcalls_notes.txt
/byrdbellvjk/imgs/jtfdcr_police/policereport.txt
/byrdbellvjk/imgs/jtfdcr_police/sel_files.txt
/byrdbellvjk/imgs/jtfdcr_police/snap_1.txt
/byrdbellvjk/imgs/jtfdcr_police/tn_mp4.txt
/byrdbellvjk/imgs/jtfdcr_police/who2jail.txt
/byrdbellvjk/imgs/jtfdcr_police/who2jail_raw.txt
/byrdbellvjk/jk.txt
/byrdbellvjk/jk1.txt
/byrdbellvjk/ko.txt
/byrdbellvjk/notes.txt
/byrdbellvjk/pj/byrdbellvjk.txt
/byrdbellvjk/pj/dates.txt
/byrdbellvjk/pj/exiftool_byrdbellvjk.txt
/byrdbellvjk/pj/find_fb.txt
/byrdbellvjk/pj/find_gif.txt
/byrdbellvjk/pj/find_jpg.txt
/byrdbellvjk/pj/find_kbjtf.txt
/byrdbellvjk/pj/find_mp3.txt
/byrdbellvjk/pj/find_mp4.txt
/byrdbellvjk/pj/find_mp4_jtf.txt
/byrdbellvjk/pj/find_mp4tn.txt
/byrdbellvjk/pj/find_mp4tn_jtf.txt
/byrdbellvjk/pj/find_pdf.txt
/byrdbellvjk/pj/find_png.txt
/byrdbellvjk/pj/find_tl.txt
/byrdbellvjk/pj/find_txt.txt
/byrdbellvjk/pj/find_zm.txt
/byrdbellvjk/pj/finds.txt
/byrdbellvjk/pj/mp4tns.txt
/byrdbellvjk/pj/notes.txt
/byrdbellvjk/pj/outline.txt
/byrdbellvjk/pj/pages.txt
/byrdbellvjk/todo.txt
/byrdbellvjk/txt/ajaks_ka12_mp4.txt
/byrdbellvjk/txt/ajaks_ka1_htkb_jpg.txt
/byrdbellvjk/txt/ajaks_ka1_jtfdc_mp4.txt
/byrdbellvjk/txt/ajaks_ka1_kb_jpg.txt
/byrdbellvjk/txt/ajaks_ko2_fb_jpg.txt
/byrdbellvjk/txt/ajaks_ko2_jpg.txt
/byrdbellvjk/txt/ajaks_ko2_kb_jpg.txt
/byrdbellvjk/txt/ajaks_ko2_mp4.txt
/byrdbellvjk/txt/ajaks_ko2_sl_jpg.txt
/byrdbellvjk/txt/ajaks_ko2_tl_jpg.txt
/byrdbellvjk/txt/ajaks_ko2_us_jpg.txt
/byrdbellvjk/txt/ajax.txt
/byrdbellvjk/txt/ajax1.txt
/byrdbellvjk/txt/ajax2.txt
/byrdbellvjk/txt/ajax_info.txt
/byrdbellvjk/txt/anim.txt
/byrdbellvjk/txt/anim_cute.txt
/byrdbellvjk/txt/anim_orbs.txt
/byrdbellvjk/txt/anim_tek.txt
/byrdbellvjk/txt/b64_h5gallery_jquery_js.txt
/byrdbellvjk/txt/b64_h5gallery_js.txt
/byrdbellvjk/txt/b64_ko_js.txt
/byrdbellvjk/txt/b64_turnjs.txt
/byrdbellvjk/txt/b64_turnminjs.txt
/byrdbellvjk/txt/b64btn.txt
/byrdbellvjk/txt/brew_link_dryrun_py.txt
/byrdbellvjk/txt/bugs.txt
/byrdbellvjk/txt/callodes4.rxr.txt
/byrdbellvjk/txt/codes1.txt
/byrdbellvjk/txt/find_ht_mp4.txt
/byrdbellvjk/txt/find_ht_pdf.txt
/byrdbellvjk/txt/find_ht_snap.txt
/byrdbellvjk/txt/find_jtf.txt
/byrdbellvjk/txt/find_jtf_ht.txt
/byrdbellvjk/txt/find_jtf_mp4.txt
/byrdbellvjk/txt/find_jtfdc.txt
/byrdbellvjk/txt/find_jtfmp3.txt
/byrdbellvjk/txt/find_jtfmp4.txt
/byrdbellvjk/txt/find_kb.txt
/byrdbellvjk/txt/find_snap.txt
/byrdbellvjk/txt/find_youb.txt
/byrdbellvjk/txt/jkresume_1990_01.txt
/byrdbellvjk/txt/jkresume_1990_02.txt
/byrdbellvjk/txt/jkresume_1990_skillset.txt
/byrdbellvjk/txt/jkresume_2000_01.txt
/byrdbellvjk/txt/jkresume_2000_02.txt
/byrdbellvjk/txt/jkresume_2000_03.txt
/byrdbellvjk/txt/jkresume_2000_detail_buie.txt
/byrdbellvjk/txt/jkresume_2000_detail_bw.txt
/byrdbellvjk/txt/jkresume_2000_detail_konet.txt
/byrdbellvjk/txt/jkresume_2000_detail_preview.txt
/byrdbellvjk/txt/jkresume_2000_detail_sasc.txt
/byrdbellvjk/txt/jkwii_20150513_police_flee2cleveland.txt
/byrdbellvjk/txt/jkwiisme.txt
/byrdbellvjk/txt/jkwiiv_byrdbell.txt
/byrdbellvjk/txt/jkwiiv_byrdbell_raw.txt
/byrdbellvjk/txt/jtf_ie_200909.txt
/byrdbellvjk/txt/jtf_ie_200909_ocr.txt
/byrdbellvjk/txt/jtf_min.txt
/byrdbellvjk/txt/jtf_min_200909.txt
/byrdbellvjk/txt/jtf_min_200909_ocr.txt
/byrdbellvjk/txt/jtf_us_20070530_ocr.txt
/byrdbellvjk/txt/jtf_us_200909.txt
/byrdbellvjk/txt/jtf_us_200909_01_ocr.txt
/byrdbellvjk/txt/jtf_us_200909_02_ocr.txt
/byrdbellvjk/txt/jtf_videos.txt
/byrdbellvjk/txt/jtfdc_20160530_1317_byrd_trustee_threat.txt
/byrdbellvjk/txt/jtfdc_20160530_1327_byrd_trustee_threat.txt
/byrdbellvjk/txt/jtfdc_20160530_1916_byrd_threat.txt
/byrdbellvjk/txt/jtfdc_20160610_2030_01234567890_waiting_police_byrd_baily.txt
/byrdbellvjk/txt/jtfdc_20170805_1400_police_byrddog_call.txt
/byrdbellvjk/txt/jtfdc_20190509_1224_jkwii_police_officerbell.txt
/byrdbellvjk/txt/jtfdc_20190516_0820_byrd_waiting4police.txt
/byrdbellvjk/txt/jtfdc_20190516_0820_policecall.txt
/byrdbellvjk/txt/jtfdc_20190516_0830.txt
/byrdbellvjk/txt/jtfdc_20190516_0830_026_tweets.txt
/byrdbellvjk/txt/jtfdc_20190516_0830_1m23-1m33.txt
/byrdbellvjk/txt/jtfdc_20190516_0830_terror_what_are_you_doing_here.txt
/byrdbellvjk/txt/jtfdc_20190516_0830_when_they_move_the_sawhorsetweets.txt
/byrdbellvjk/txt/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshal_yourself.txt
/byrdbellvjk/txt/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.txt
/byrdbellvjk/txt/jtfdc_20190908_0030_still_toadog.txt
/byrdbellvjk/txt/jtfdc_20191109_1604_skpout_jkwiigo_jtf31_fiona_nice.txt
/byrdbellvjk/txt/jtfdc_20191209_1529_stalkaround_bus.txt
/byrdbellvjk/txt/jtfdc_20200109_0648_jhappy_bday_jk2.txt
/byrdbellvjk/txt/jtfdc_20200119_1752_stalkaround_twins_suv_n_pickup.txt
/byrdbellvjk/txt/jtfdc_20200316_1756_jtf30_vickky_only1doggy.txt
/byrdbellvjk/txt/jtfdc_20200322_1222_jhout2.txt
/byrdbellvjk/txt/jtfdc_20200330_1200_jkwiigo_jtf3839_byrd_dr_hilldown.txt
/byrdbellvjk/txt/jtfdc_byrd_20180423_1320_trespass_bullies.txt
/byrdbellvjk/txt/jtfdc_byrd_20180606_1648_threats_bucket_theft.txt
/byrdbellvjk/txt/jtfdc_byrd_20190516_0820.txt
/byrdbellvjk/txt/jtfdc_byrd_20190516_0830.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_02.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_03.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_04.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_05.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_06.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_07.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_07_jkwii.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_08.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_10.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_byrd_11.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_dolley_1.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_dolley_2.txt
/byrdbellvjk/txt/jtfinc_20200102_jtfinc_dolley_3.txt
/byrdbellvjk/txt/library_of_congress.txt
/byrdbellvjk/txt/mp4.txt
/byrdbellvjk/txt/pagelist.txt
/byrdbellvjk/txt/pagelist_byrdbell.txt
/byrdbellvjk/txt/pagelist_kb_jtfdcr_vid.txt
/byrdbellvjk/txt/pagelist_mp3.txt
/byrdbellvjk/txt/pcalls.txt
/byrdbellvjk/txt/policereport.txt
/byrdbellvjk/txt/report2.txt
/byrdbellvjk/txt/sel_files.txt
/byrdbellvjk/txt/skbyrd_protect_20190516.txt
/byrdbellvjk/txt/snap_1.txt
/byrdbellvjk/txt/text_testimon.txt
/byrdbellvjk/txt/textsrkc_calp2,txt.txt
/byrdbellvjk/txt/textsrkc_calp3,txt.txt
/byrdbellvjk/txt/textxodes2.rxr.txt
/byrdbellvjk/txt/tn_mp4.txt
/byrdbellvjk/txt/who2jail.txt
/byrdbellvjk/txt/who2jail_raw.txt
/byrdbellvjk/vi.txt
/byrdbellvjk/vi1.txt
/byrdbellvjk/vi2.txt
/fb/jtfdc/pages/1.jpg
/fb/jtfdcr/pages/1.jpg
/fb/jtfinc/pages/1.jpg
/fb/konet/pages/1.jpg
/fb/iperms/pages/1.jpg
/fb/ka/pages/1.jpg
/fb/kitiworks/pages/1.jpg
# lists_items.txt end 
`.split("\n");

colorids="000 050 100 110 120 150 190 000".split(" ");
colornum=0;


//			alert( "BUGS_17871 items="+items.length+" pre_items="+pre_items.length );

//			alert( "BUGS_17872 leds items.length="+items.length );
			collim=50; colnum=0;
			for( j=0; j<items.length; j++ ) {
				desc="desc_"+j;
				item=items[j];
//				alert( "BUGS_17872 leds j="+j+" item="+item );
//				if( /^#/.test(search)) { continue; }
//				if( item.match(/^#/)) { continue; }

//				if( colornum > colorids.length-1 ) { colornum=0; }
				colornum=random_int(0,colorids.length-1);
				led="/imgs/leds/hal/hal"+colorids[colornum]+".gif";	
//				colornum=colornum+1;
		
				pathfile=item.split("|")[0];
//				alert( "BUGS_17873 leds item="+item );
				if( item.split("|").length > 1 ) {
					desc=item.split("|")[1];
					}
				colnum=colnum+1;
				if( colnum > collim ) { htmout+="<br>\n"; colnum=1; }

				content[j]="<hr color=black><img src="+pathfile+" height=100><hr color=black>"+desc+"<hr color=black><br>\n";
//				htmout+="<h1>j="+j+" content="+content[j]+"</h1>\n";
//				htmout+="<img id=img_leds"+j+" title=\"          leds"+j+"\" ";
//				htmout+="src=/imgs/leds/hal/hal100.gif ";
//				htmout+=" onclick=\"windeo.open('"+pathfile+"'); return false;\" ";
//				htmout+=" onMouseOver=\"content["+j+"]\" ";
//				htmout+="  onMouseOut=\"tipout(); return false;\" ";
//				htmout+=" height=10 border=0>";

				htmout+="<img id=img_item_"+j+" title=\"          item_"+j+"\" ";
//				htmout+="src=/imgs/leds/hal/hal150.gif ";
				htmout+="src="+led+" ";
				htmout+=" onclick=\"window.open('ko_tooltips_txt.html?id=hal_"+j+"'); return false;\" ";
//				htmout+=" onMouseover=\"changetext(content["+j+"])\" height=10 border=0>";
				htmout+=" onMouseover=\"changetext('"+content[j]+"')\" height=10 border=0>";
				}


//			htmout+="<h1>CONTENT length="+content.length+"</h1>\n";
//			for j=0; j< content.length; j++ ) {
//				htmout+="<h3>j="+j+" "+content[j]+"</h3>\n";
//				}
				
			if( document.getElementById('div_leds_out')) {
				document.getElementById('div_leds_out').innerHTML=htmout;
				}
			return(htmout);
			}
		</script id=script_leds_end>

	</center>
		</div id=div_innotice_leds_end>
	</div id=div_notice_leds_end >




<br>

<!--
	<script id="wz_library" src='data:/text/plain;base64,DQoNCi8vSW50ZWdyYXRlZCB0byBXYWx0ZXIgWm9ybiBodG1sIGxpYnJhcnkNCg0KLy8gZnVuY3Rpb24gZXhlY3V0ZVRlc3Q6IGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9uIGxheWVyT2JqZWN0Lmh0bQ0KZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKXsNCg0KdHJhbnNmb3JtTGF5ZXIgKGRvY3VtZW50LmZvcm1zWzBdLngudmFsdWUsZG9jdW1lbnQuZm9ybXNbMF0ueS52YWx1ZSxkb2N1bWVudC5mb3Jtc1swXS53LnZhbHVlLGRvY3VtZW50LmZvcm1zWzBdLmgudmFsdWUsIkJsb3F1ZSIsMTAwLDEwKTsNCg0KDQp9DQoNCi8vIFVzZXMgV1ogZGh0bWwgbGlicmFyeSB0byBtYWtlIHRpbWVkIHRyYW5zZm9ybWF0aW9ucyBvZiBkaHRtbCwNCi8vIHNvIG1pbmltaXppbmcsIG1heGltaXppbmcgbGF5ZXJzIGNhbiBiZSByYXRoZXIgInNtb290IiBmb3IgdXNlciwNCi8vIHNpbXVsYXRpbmcgd2luZG93cyBvcy4NCg0KLy9GdW5jdGlvbiB0cmFuc2Zvcm1MYXllcg0KLy94LHkgPSBQb3NpdGlvbi4gVG9wIGxlZnQgY29ybmVyIGNvb3JkaW5hdGVzDQovL3csaCA9IFNpemUuIHdpZHRoIGFuZCBoZWlnaHQgb2YgPGRpdj48L2Rpdj4gbGF5ZXINCi8vaWQgPSBpZCBvZiB0aGUgRGl2IChpLmUuOiBpZD0ibXlMYXllciIsIHRoZW4sIHVzZSAibXlMYXllciIsIFdJVEggcXVvdGVzISkNCi8vZHVyYXRpb24gPSBEdXJhdGlvbiwgaW4gbWlsaXNlY29uZHMNCi8vc3RlcHMgPSBUcmFuc2l0aW9uIGludGVydmFscw0KDQpmdW5jdGlvbiB0cmFuc2Zvcm1MYXllciAoeCx5LHcsaCxpZCxkdXJhdGlvbixzdGVwcykgew0KICANCiAgLy9kdXJhdGlvbiBpcyBpbiBzZWNvbmRzDQogIHN0ZXBEdXJhdGlvbiA9IE1hdGgucm91bmQoZHVyYXRpb24vc3RlcHMpIDsgLy8gVmFsdWUgaXMgaW4gbWlsaXNlY29uZHMuDQoNCiAgb2JqID0gZGQuZWxlbWVudHNbaWRdOw0KICANCg0KICAvLyBHZXQgb3JpZ2luYWwgdmFsdWVzOiB4LHkgPSB0b3AgbGVmdCBjb3JuZXI7ICB3LGggPSB3aWR0aCBoZWlnaHQgICANCiAgDQogIHgxID0gb2JqLng7ICANCiAgeTEgPSBvYmoueTsgIA0KICB3MSA9IG9iai53OyAgDQogIGgxID0gb2JqLmg7ICANCg0KDQogIC8vIElmIHZhbHVlcyBub3Qgc2V0LCBvciB6ZXJvLCB3ZSBkbyBub3QgbW9kaWZ5IHRoZW0sIGFuZCB0YWtlIG9yaWdpbmFsIGFzIGZpbmFsIGFzIHdlbGwNCiAgeCA9ICh4KT94OngxOw0KICB5ID0gKHkpP3k6eTE7DQogIHcgPSAodyk/dzp3MTsNCiAgaCA9IChoKT9oOmgxOw0KDQogIC8vIGhvdyBtdWNoIGRvIHdlIG5lZWQgdG8gbW9kaWZ5IG91ciB2YWx1ZXMgZm9yIGVhY2ggc3RlcD8NCiAgLy8gVGhlIFdaIGxpYnJhcnkgbW92ZUJ5IGFuZCByZXNpemVCeSB0YWtlcyB0aGUgZGlmZiB3aXRoIGludmVydGVkIHNpZ24gYXMgZnJvbSBvcmlnaW5hbCBjZSBzY3JpcHQ6DQogIGRpZlggPSAoeCAtIHgxKS9zdGVwczsgIA0KICBkaWZZID0gKHkgLSB5MSkvc3RlcHM7ICANCiAgZGlmVyA9ICh3IC0gdzEpL3N0ZXBzOyAgDQogIGRpZkggPSAoaCAtIGgxKS9zdGVwczsgIA0KICANCiAgDQogIA0KICBpZih0b3AuZGVidWc9PXRydWUpICB3aW5kb3cuYWxlcnQoJ3gxOicreDErJywgeTE6Jyt5MSsnLCB3MTonK3cxKycsIGgxOicraDErJyw8YnI+eDonK3grJywgeTonK3krJywgdzonK3crJywgaDonK2grJywgPGJyPmRpZlg6JytkaWZYKycsIGRpZlk6JytkaWZZKycsIGRpZlc6JytkaWZXKycsIGRpZkg6JytkaWZIKycsPGJyPmR1cmF0aW9uOicrZHVyYXRpb24rJywgPGJyPnN0ZXBzOicrc3RlcHMrJyw8YnI+c3RlcER1cmF0aW9uOicrc3RlcER1cmF0aW9uKycnKTsNCiANCiAgb2JqLm1vdmVCeShkaWZYLGRpZlkpOw0KICBvYmoucmVzaXplQnkoZGlmVyxkaWZIKTsNCg0KICAvL1dlIHRha2Ugb3V0IHRoZSBhbW91bnQgb2YgdGltZSB1c2VkLCBhbmQgYSBzdGVwIGFscmVhZHkgYmVpbmcgZXhlY3V0ZWQNCiAgZHVyYXRpb24gPSAoZHVyYXRpb24gLSBzdGVwRHVyYXRpb24pOw0KICBzdGVwcyAtLTsNCg0KCS8vSWYgdGhlcmUgaXMgYW55IHN0ZXAgbGVmdCwgd2UgZXhlY3V0ZSBhZ2Fpbg0KCWlmKHN0ZXBzPj0wKXsNCgkgc2V0VGltZW91dCgndHJhbnNmb3JtTGF5ZXIoJyt4KycsJyt5KycsJyt3KycsJytoKycsIicraWQrJyIsJytkdXJhdGlvbisnLCcrc3RlcHMrJyknLHN0ZXBEdXJhdGlvbik7DQoJIH0NCiAgLy9JZiBSZXR1cm4uLi4gd2UgY291bGQgc2V0IHNvbWUgYXBpIGhlcmUgYXMgdG8gY2FsbCBhIGZ1bmN0aW9uIHRvIGJlIGV2YWx1YXRlZCBieSB0aGUgamF2YXNjcmlwdCxpZiBzZXQsIG9uIHJldHVybg0KICAvL2ZvciBleGFtcGxlIHRvIGNhbGwgdGhlIGZ1bmN0aW9uIHRoYXQgaGFzIHRvIHBvcHVsYXRlIHRoZSBkaXYgd2l0aCBjb250ZW50DQogIC8vYnV0IFdaIGhhcyBhbHJlYWR5IHRob3VnaHQgb24gaXQgOi0pDQogIHJldHVybjsNCg0KfQ0KDQo='></script>
	-->
<!--

	<script id=script_wz_dragdrop src=/js/wz/wz_dragdrop.js></script>
	<script id=script_wz_graphics src=/js/wz/wz_graphics.js></script>
	<script id=script_wz_tooltip src=/js/wz/wz_tooltip.js></script>
	-->

	<hr color=black>
	<hr color=white>
	<div id=div_banner>
		<h1>div_banner</h1>
	<h1>
		<a href=./ target=_blank><img id=img_ko src=/imgs/btn/ko.png height=20 border=0></a>




		<a href="https://www.bluehost.com/?utm_source=%28direct%29&utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype&affiliate=konet" class="ko_thumbnail" target=_blank>
		<img id=img_bluehost title="          bluehost.com" src=/imgs/bh/bluehost_grid00.jpg height=20 alt=bluehost.com border=0>
<!--
		<img id=img_bluehost title="          bluehost.com" src=/imgs/bh/bh_anim.gif height=20 alt=bluehost.com border=0>
		<img id=img_bluehost title="          bluehost.com" src=/imgs/bh/bh_anim.gif height=20 alt=bluehost.com border=0>
	-->




		<a href=/k9.html target=_blank><img id=img_k9 src=/imgs/keys/keys00_hole.png height=20 border=0></a>
		<a href=/leds/leds.php target=_blank><img id=img_leds_php src=/imgs/btn/tn_leds.png height=20 border=0></a>
		d r a f t 
		&nbsp &nbsp &nbsp &nbsp
		P R E V I E W
		<img src=/imgs/btn/kop12.png height=20>
		K O
<!--		L A W -->
<!--		M E D -->
<!--		B Y R D B E L L V J K -->
<!--		K A -->
<!--		K O 1 -->
<!--		K O 2 -->
<!--		K O N E T -->
<!--		I P E R M S -->
<!--		J T F D C -->
<!--		J T F D C R -->
<!--		J T F I N C -->
<!--		J A K 1 -->
<!--		J A K 2 -->
<!--		J A K 3 -->

		<img src=/imgs/btn/kop34.png height=20>
		&nbsp &nbsp &nbsp &nbsp
		<font style="font-size:18">20230212_1815</font>
			</h1>
		</div id=div_banner_end>
		<hr color=white>
		<hr color=black>
		<div id=div_descriptions></div id=div_descriptions_end>









<!--
	<img src=/imgs/btn/brdb.png onclick="dhtml('onclick'); return false" height=100 border=0>dhtml
	-->

	<hr color=black>
	<hr color=white>

	<img id=img_toggles title="          toggles" src=/imgs/btn/koeyew.png onclick="toggle('div_toggles',''); return false;" height=20 border=0>toggles
	<br>
	<hr color=white>
	<div id=div_toggles hidden>
		<img id=img_toggle_alloff title="          alloff" src=/imgs/btn/koeyeb.png onclick="toggles('','alloff'); return false;" height=20 border=0>
		<img id=img_toggle_toggle title="          toggle" src=/imgs/btn/koeye.png onclick="toggles('','toggle'); return false;" height=20 border=0>
		<img id=img_toggle_allon title="          allon" src=/imgs/btn/koeyew.png onclick="toggles('','allon'); return false;" height=20 border=0>
		<br>
		<img id=img_letter title="          letter" src=/imgs/btn/koeye.png onclick="toggles('div_letter',''); return false;" height=20 border=0>
		<img id=img_contacts title="          contacts" src=/imgs/btn/koeye.png onclick="toggles('div_contacts',''); return false;" height=20 border=0>
		<img id=img_items title="          items" src=/imgs/btn/koeye.png onclick="toggles('div_items',''); return false;" height=20 border=0>
		<br>
		<img id=img_main title="          main" src=/imgs/btn/koeye.png onclick="toggles('div_main',''); return false;" height=20 border=0>
		<img id=img_help title="          help" src=/imgs/btn/koeye.png onclick="toggles('div_help',''); return false;" height=20 border=0>
<!--		<img id=img_wz title="          wz" src=/imgs/btn/koeye.png onclick="toggles('div_wz',''); return false;" height=20 border=0> -->
		<img id=img_kojax title="          kojax" src=/imgs/btn/koeye.png onclick="toggles('div_kojax',''); return false;" height=20 border=0>
		<img id=img_files title="          files" src=/imgs/btn/koeye.png onclick="toggles('div_files',''); return false;" height=20 border=0>
		<img id=img_parse title="          parse" src=/imgs/btn/koeye.png onclick="toggles('div_parse',''); return false;" height=20 border=0>
		<img id=img_cfg title="          cfg" src=/imgs/btn/koeye.png onclick="toggles('div_cfg',''); return false;" height=20 border=0>
		<br>
		<img id=img_lists title="          lists" src=/imgs/btn/koeye.png onclick="toggles('div_lists',''); return false;" height=20 border=0>lists


		<img id=img_lists_letter title="          lists_letter" src=/imgs/btn/koeye.png onclick="toggles('div_lists_letter',''); return false;" height=20 border=0>lists_letter
		<img id=img_lists_contacts title="          lists_contacts" src=/imgs/btn/koeye.png onclick="toggles('div_lists_contacts',''); return false;" height=20 border=0>lists_contacts
		<img id=img_items title="          items" src=/imgs/btn/koeye.png onclick="toggles('div_items',''); return false;" height=20 border=0>items
		<img id=img_lists_postturtles title="          lists_postturtles" src=/imgs/btn/koeye.png onclick="toggles('div_lists_postturtles',''); return false;" height=20 border=0>lists_postturtles
		<img id=img_lists_monkeytraps title="          lists_monkeytraps" src=/imgs/btn/koeye.png onclick="toggles('div_lists_monkeytraps',''); return false;" height=20 border=0>lists_monkeytraps
		<img id=img_lists_floods title="          lists_floods" src=/imgs/btn/koeye.png onclick="toggles('div_lists_floods',''); return false;" height=20 border=0>lists_floods

		<br>

		<img id=img_views0 title="          views" src=/imgs/btn/koeye.png onclick="toggles('div_views',''); return false;" height=20 border=0>views
		<img id=img_fb title="          fb" src=/imgs/btn/koeye.png onclick="toggles('div_fb',''); return false;" height=20 border=0>fb
		<img id=img_pdf title="          pdf" src=/imgs/btn/koeye.png onclick="toggles('div_pdf',''); return false;" height=20 border=0>pdf
		<img id=img_pn title="          pn" src=/imgs/btn/koeye.png onclick="toggles('div_pn',''); return false;" height=20 border=0>pn
		<img id=img_tl title="          tl" src=/imgs/btn/koeye.png onclick="toggles('div_tl',''); return false;" height=20 border=0>tl
		<img id=img_zm title="          zm" src=/imgs/btn/koeye.png onclick="toggles('div_zm',''); return false;" height=20 border=0>zm
		<img id=img_mp3 title="          mp3" src=/imgs/btn/koeye.png onclick="toggles('div_mp3',''); return false;" height=20 border=0>mp3
		<img id=img_yt title="          mp4" src=/imgs/btn/koeye.png onclick="toggles('div_mp4',''); return false;" height=20 border=0>mp4

		<img id=img_yt title="          yt" src=/imgs/btn/koeye.png onclick="toggles('div_yt',''); return false;" height=20 border=0>yt

		</div id=div_toggles_end>
		<br>
		<hr color=white>

	<img id=img_main src=/imgs/btn/koeyew.png onclick="toggle('div_main',''); return false;" height=20 border=0>div_main
	<br>
	<div id=div_main>
		<h1>div_main</h1>
		</div id=div_main>


	<br>
	<hr color=white>
	<img id=img_help src=/imgs/btn/koeyew.png onclick="toggle('div_help',''); return false;" height=20 border=0>div_help
	<br>
	<div id=div_help>
		<h1>div_help</h1>



	<br>
	<hr color=goldenrod>

		<img id=img_letter src=/imgs/btn/koeye.png onclick="toggle('div_letter',''); return false;" height=20 border=0>div_letter
		<br>
		<div id=div_letter hidden>	

			<div id=div_contact_info>
				<h1>div_contact_info</h1>
				</div id=div_contact_info_end>

			<pre id=pre_letter>
				<h1>letter</h1>

Dear M. 
we need time

- new grandaughter born 20230227 is in ICU with oxigen problems
- doctor requested medical tests for me
- internet cable problems too

can you reschedule/dismiss out Feb 9 summons court date?
ko2.us/law

- jtfdc_20190516_0880_policereport.pdf (summons and police report)
- jtfdc_20190516_1700_sk_protect.pdf (wifes order of protection from G. Byrd)
- videos of my police calls for help and the police tazor response


the case is about a 20190516 alleged "chestbump" assault against
Gary Byrd and a "door" assault against a "special person" (stlc police)

the allegation are unsupported by the actual
videos of my police calls for help, police tazor response and Mr Byrds pattern and practice
of threats, bullying and trespass over the last 10 years.

our situation is really all about a 10 year dispute over
big dogs, property and safety of small children

We have been targeted by
Ms Joan Donovan Family Law and her a handful of recruited client neighbors
attempts to force us from our home in a private 3 house court .

Ms Donovans legal strategy involving
false police reports, endless legal fees, 
thier 9 freeroaming big dogs and redirected traffic thru our driveway,
has disrupted our lives and business for 10 year.

all documentation, summons, police report, sk order of protection from G. Byrd,
videos, maps, photos are available somewhere online at:

ko2.us/law

Due to the scope and volume of the documentation
the site is evolving into a general
knowledgebase/case managment system portal
that could eventually include aggregated local law news.

you are invited to explore and imagine the potential of this work in progress.

If you are unable to help us,
can you provide a referal for someone to simply 
reschedule/dismiss the Feb 9 court date.

thank you again for your time and consideration

jsk
ko2.us/law


				</pre id=pre_letter_end>
			</div id=div_letter_end>
		</div id=div_help_end>
	<hr color=goldenrod>
	<br>
	<hr color=black>
	<hr color=white>



	<br>
	<hr color=goldenrod>

		<img id=img_items src=/imgs/btn/koeyew.png onclick="toggle('div_items',''); return false;" height=20 border=0>div_items
		<br>
		<div id=div_items hidden>	
			<h1>div_items</h1>
<!--			SET_DHTML( 'img_item_1', 'img_item_2', 'img_item_3','img_item_4', 'img_item_5'); -->
			</div id=div_items_end>
	<hr color=goldenrod>
	<br>
	<hr color=black>
	<hr color=white>
	<br>
	<hr color=goldenrod>
		<img id=img_contacts src=/imgs/btn/koeyew.png onclick="toggle('div_contacts',''); return false;" height=20 border=0>div_contacts
		<br>
		<div id=div_contacts hidden >	
			<h1>div_contacts</h1>
			</div id=div_contacts_end>
		</div id=div_help_end>
	<hr color=goldenrod>
	<br>
	<hr color=black>
	<hr color=white>

		<hr color=goldenrod>
		<a href=/pdf/web/viewer.html?file=/byrdbellvjk/byrdbellvjk.pdf target=_blank>
			<img src=/imgs/btn/koeye_pdf.png height=20>
			</a>byrdbellvjk.pdf
		<a href=/byrdbellvjk/ target=_blank>
			<img src=/byrdbellvjk/pages/1.jpg height=50>
			</a>byrdbellvjk
		<a href=/pdf/web/viewer.html?file=/byrdbellvjk/who2jail.pdf target=_blank>
			<img src=/imgs/btn/koeye_pdf.png height=20>
			</a>byrdbellvjk.pdf
		<hr color=goldenrod>
		<hr color=white>
		<hr color=black>
		</div id=div_help_end>

	





	
	<script id=script_dhtml>
		function dhtml(args) {
//			alert( "BUGS_1000 dhtml args="+args );
			htmout="";
			htmout += "<h1>BUGS_31 DHTML args="+args+"</h1>\n";
//				'img_k9_dhtml',
//				'img_leds_dhtml',
//				'img_ok_dhtml'

<!-- //				SET_DHTML(CURSOR_MOVE, RESIZABLE, NO_ALT, SCROLL, "img_item_1"+TRANSPARENT, "img_item_2"+TRANSPARENT, "button"+VERTICAL+HORIZONTAL+CURSOR_DEFAULT, "cat"+TRANSPARENT, "img_item_3", "counter", "img_item_3"+TRANSPARENT, "img_item_4", "img_item_5", "img_item_6", "img_item_7"+TRANSPARENT+COPY+4, "img_item_8"+TRANSPARENT, "redarrow", "reldiv", "reldivn4", "reldiv2"+TRANSPARENT, "reldiv2n4"+TRANSPARENT, "reltab", "sepline1"+NO_DRAG, "skitour"+TRANSPARENT, "slidercanvas", "smile1"+SCALABLE, "thumb"+HORIZONTAL+MAXOFFLEFT+45+MAXOFFRIGHT+45, "track"+NO_DRAG, "tryit", "upleft"); -->

//			dhtml_divids ="CURSOR_MORE,RESIZABLE,NO_ALT,SCROLL,"; dhtml_length=50;
//			for( j=1; j<dhtml_length; j++ ) {
//				alert( "BUGS_1406 j="+j+" dhtml_divids="+dhtml_divids );
//				dhtml_divids += "'img_item_"+j+"'";
//				dhtml_divids += "+TRANSPARENT+",";
//				}

//			dhtml_divids += "'img_ko_dhtml'";
//			alert( "BUGS_702 dhtml_divids="+dhtml_divids );			
//			SET_DHTML( dhtml_divids );
//			SET_DHTML( 'img_item_1', 'img_item_2', 'img_item_3', 'img_item_4', 'img_item_5', 'img_item_6', 'img_item_7', 'img_item_8');

//			SET_DHTML( 'img_k9_dhtml', 'img_leds_dhtml', 'img_ok_dhtml' );

			return(htmout);
			}
		</script id=script_dhtml_end>

<!--
	<div id="catdIi15v" style="position: absolute; left: 26px; top: 152px; widt    h: 129px; height: 154px; z-index: 1; cursor: move;">
		<img name="catdIi15vNI1m6G" src="/js/wz/wz_ddcat.jpg" width="129" h    eight="154">
		</div>

	<div id="bikegoeteborgdIi15v" style="position: absolute; left: 171px; top:     522px; width: 426px; height: 444px; z-index: 1; cursor: move;">
		<img name="bikegoeteborgdIi15vNI1m6G" src="/js/wz/wz_northcapetrip_goeteborg.jpg" width="426" height="444"></div>
		</div id=div_330_end>
	-->

<link rel="stylesheet" type="text/css" href="/js/wz/newwalterzorn.css">
<style type="text/css">
<!--
#reltab {
  position:relative;
  border:1px solid #000099;
  background:#d3e3f9;
  layer-background-color:#d3e3f9;
}




#div_notice_sailboat {
	position:absolute;
	left:10px;
	top:80px;
	width:222px;
	height:422px;
	border:1px solid #000099;
	background:#eeeeee;
	layer-background-color:#eeeeee;
	overflow:hidden;
	visibility:hidden;
	}

#div_innotice_sailboat { padding:3px; }

#bluelyr {
	position:absolute;
	visibility:hidden;
	left:0px;
	top:200px;
	width:460px;
	padding:20px;
	border:1px solid #000099;
	background:#d3e3f9;
	layer-background-color:#d3e3f9;
	visibility:hidden;
	}



#div_notice_leds {
	position:absolute;
	left:600px;
	top:100px;
	width:622px;
	border:1px solid #000099;
	background:#eeeeee;
	layer-background-color:#eeeeee;
	overflow:hidden;
	visibility:hidden;
	}

#div_innotice_leds { padding:3px; }

#bluelyr1 {
	position:absolute;
	visibility:hidden;
	left:0px;
	top:2000px;
	width:460px;
	padding:20px;
	border:1px solid #000099;
	background:#d3e3f9;
	layer-background-color:#d3e3f9;
	visibility:hidden;
	}





-->
	</style>



	<img id=img_wz name=img_wz src=/imgs/btn/koeye.png onclick="toggle('div_wz',''); return false;" height=15 border=0>wz
	<br>
	<hr color=goldenrod>
	<div id=div_wz>





<script id=script_set_dhtml>
	function set_dhtmls(args) {
// SET_DHTML1(
dhtmls='CURSOR_MOVE, RESIZABLE, NO_ALT, SCROLL, "bikegoeteborg"+TRANSPARENT, "bluelyr"+TRANSPARENT, "button"+VERTICAL+HORIZONTAL+CURSOR_DEFAULT, "cat"+TRANSPARENT, "chameleon", "counter", "div_notice_leds"+TRANSPARENT, "koala", "leop", "low", "muckl"+TRANSPARENT+COPY+4, "wz_northcape"+TRANSPARENT, "redarrow", "reldiv", "reldivn4", "reldiv2"+TRANSPARENT, "reldiv2n4"+TRANSPARENT, "reltab", "sepline1"+NO_DRAG, "skitour"+TRANSPARENT, "slidercanvas", "smile1"+SCALABLE, "thumb"+HORIZONTAL+MAXOFFLEFT+45+MAXOFFRIGHT+45, "track"+NO_DRAG, "tryit", "upleft");';
// );
		return(htmout);
		}
	</script id_script_set_dhtml>


<h1>/ko/help.html 20230210_2030</h1>
<hr color=black>

<!--
	<a id=href_koeye_handhither name=href_koeye_handhither href=/imgs/btn/koeye_handhither.gif target=_blank>
		<img id=img_koeye_handhither name=img_koeye_handhither src=/imgs/btn/koeye_handhither.gif height=100 border=0>
		</a>
	-->

	<img name="cat" src="/byrdbellvjk/imgs/170.jpg" alt="DragnDrop Image" style="visibility: hidden;" width="129" height="154" onclick="window.open('/byrdbellvjk/imgs/170.jpg'); return false">

	<img name="chameleon" src="/byrdbellvjk/imgs/171.jpg" alt="JavaScript, DHTML: Drag&amp;Drop Images" style="visibility: hidden;" width="155" height="95" align="left" onclick="window.open('/byrdbellvjk/imgs171.jpg'); return false;">
	<img name="bikegoeteborg" src="/fb/jtfdcr/pages/1.jpg" alt="bikegoeteborg" title="bikegoeteborg" style="visibility: hidden;" width="426" height="444" border="0" align="left">


<!--
	<img name="cat" src="/js/wz/wz_ddcat.jpg" alt="DragnDrop Image" style="visibility: hidden;" width="129" height="154" onclick="window.open('/js/wz/wz_ddcat.jpg'); return false">
	<img name="chameleon" src="/js/wz/wz_ddcham.jpg" alt="JavaScript, DHTML: Drag&amp;Drop Images" style="visibility: hidden;" width="155" height="95" align="left" onclick="window.open('/js/wz/wz_ddcham.jpg'); return false;">
	<img name="bikegoeteborg" src="/js/wz/wz_northcapetrip_goeteborg.jpg" alt="On my first bicycle trip to Northcape" title="On my first bicycle trip to Northcape" style="visibility: hidden;" width="426" height="444" border="0" align="left">
	-->
<!--
<div id="div_notice_old" style="width: 122px; height: 305px; top: 337px; left: 1399px; z-index: 0; cursor: move; visibility: visible;">
	<a name="demolyr"> </a>
	<div id=div_innotice_old>
	<h1>BUGS_1660 DIV_NOTICE_OLD</h1>
	<center>
		<img name="button" src=/imgs/btn/koeyew.png alt="wz_dd" style="visibility: hidden;" height=20>
<hr color=black>
<hr color=white>
	-->
<!--
    <small>capabilities...
	<br>&nbsp;<br>
	timelines flipbooks zooms pdfs video 
	<br>&nbsp;<br>
	-->
<!--

	<a href=/pdf/web/viewer.html?file=/byrdbellvjk/byrdbellvjk.pdf target=_blank> 
	<img title="          byrdbellvjk.pdf" src=/imgs/btn/koeye_pdf.png height=15 border=0> </a>
	<br>
	<a href=/law/tls.html target=_blank> <img title="         timelines" src=/imgs/btn/tl.png height=40 border=0> </a>
	<br>
	<hr color=white>
	<font style="font-size:6">20190516 08:20 08:30</font>
	<a href=/byrdbellvjk/mp3/jtfdc_20190516_0830_1m23-1m33.mp3 target=_blank>
<img title=jtfdc_20190516_0830_1m23-1m33 src=/imgs/btn/koeye_mp3.png height=15 border=0></a>
<br> <br>
	<a href=/byrdbellvjk/mp4/jtfdc_byrd_20190516_0820.mp4 target=_blank > <img title=20190516_0820_jk_policecall src=/byrdbellvjk/mp4/tn_jtfdc_byrd_20190516_0820.png height=20 border=0> </a>
	<a href=/byrdbellvjk/mp4/jtfdc_byrd_20190516_0830.mp4 target=_blank > <img title=20190516_0830_jk_police_response src=/byrdbellvjk/mp4/tn_jtfdc_byrd_20190516_0830.png height=20 border=0> </a>
	<br>
	<hr color=white>
<font style="font-size:8">byrd</font>
<br>
<font style="font-size:6">20150530 20180606 20190528</font>
<br>
	-->
<!--
<a href=/byrdbellvjk/mp4/jtfdc_20160530_1317_byrd_trustee_threat.mp4 target=_blank> <img title="      20160530_1317_byrd_threat" src=/byrdbellvjk/mp4/jtfdc_20160530_1317_byrd_trustee_threat.jpg height=40 border=0></a>
	-->
<!--
<a href=/byrdbellvjk/mp4/jtfdc_20160530_1327_byrd_trustee_threat.mp4 target=_blank> <img title="      20160530_1327_byrd_threat" src=/byrdbellvjk/mp4/jtfdc_20160530_1317_byrd_trustee_threat.jpg height=20 border=0></a>

<a href=/byrdbellvjk/mp4/jtfdc_byrd_20180606_1648_threats_bucket_theft.mp4 target=_blank> <img title="          byrd_20180606_1648_threats_bucket_theft" src=/byrdbellvjk/mp4/jtfdc_byrd_20180606_1648_threats_bucket_theft.jpg height=20 border=0></a>

	<a href=/byrdbellvjk/mp4/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshall_yourself.mp4 target=_blank > <img title=20190528_1636_byrd_marshall_yourself src=/byrdbellvjk/mp4/jtfdc_20190528_1636_stalkaround_byrd_siegrist_dogs_marshal_yourself.jpg height=20 border=0> </a>
<hr color=white>
<hr color=black>


<a href=/fb/law/jkwiiv_byrdbell/zm/zm_donutvanlaw_takings.html target=_blank>
<img title="          donutvanlaw_takings"
src=/fb/law/jkwiiv_byrdbell/zm/donutvanlaw_takings/TileGroup0/0-0-0.jpg
height=25 border=0></a>

<a href=/fb/law/jkwiiv_byrdbell/zm/zm_jtfinc.html target=_blank>
<img title="          jtfinc"
src=/fb/law/jkwiiv_byrdbell/zm/jtfinc/TileGroup0/0-0-0.jpg
height=25 border=0></a>

<a href=/fb/law/jkwiiv_byrdbell/zm/zm_jtf2930.html  target=_blank>
<img title="          jtf2930" src=/fb/law/jkwiiv_byrdbell/zm/jtf2930/TileGroup0/0-0-0.jpg height=25 border=0></a>
<hr color=white>
<hr color=black>




		</center>


	-->
<!--
	<a href="#flexlyr">flexlyr </a><br>
	<a href="#div_letter">letter </a><br>
	<a href="#div_items">items </a><br>
	<a href="#div_contacts">contacts </a><br>
	-->

<!--
<div id="div_bluelyr" hidden style="width: 460px; height: 77px; top: -149px; left: 519px; z-index: 0; cursor: move; visibility: visible;">
  <a name="flexlyr"> </a>
  <center>
    Check out if links in drag&amp;drop layers work correctly.
    And if they connect to their targets correctly, even after the layers have been dragged around...
    <small><br>&nbsp;<br><a href="#demolyr">Back to first layer</a></small>
  </center>
	</div id=div_bluelyr_end>
	-->

<script id=script_script1 type="text/javascript">
<!--

SET_DHTML(CURSOR_MOVE, RESIZABLE, NO_ALT, SCROLL, 
"bikegoeteborg"+TRANSPARENT,
"bluelyr"+TRANSPARENT,
"bluelyr1"+TRANSPARENT,
"button"+VERTICAL+HORIZONTAL+CURSOR_DEFAULT,
"cat"+TRANSPARENT,
"chameleon",
"counter",
"div_notice_sailboat"+TRANSPARENT+RESIZABLE,
"div_notice_leds"+TRANSPARENT+RESIZABLE,
"koala",
"leop",
"low",
"muckl"+TRANSPARENT+COPY+4,
"wz_northcape"+TRANSPARENT,
"redarrow",
"reldiv",
"reldivn4",
"reldiv2"+TRANSPARENT,
"reldiv2n4"+TRANSPARENT,
"reltab",
"sepline1"+NO_DRAG,
"skitour"+TRANSPARENT,
"slidercanvas",
"smile1"+SCALABLE,
"thumb"+HORIZONTAL+MAXOFFLEFT+45+MAXOFFRIGHT+45,
"track"+NO_DRAG,
"tryit",
"img_ko_sailboat",
"upleft"
	);

// Kreuzotter-vs-Uplefts Animation, demonstrating how to use the API of the DragDrop-Library
function ANIM() {
//	alert( "BUGS_4550 ANIM<br>\n" );
	if (!dd.obj || !dd.op6) {
		if (dd.elements.low.z <= dd.elements.upleft.z)
			dd.elements.upleft.setZ(dd.elements.low.z - 1);

		dd.elements.upleft.moveTo(
		dd.elements.upleft.x <= -dd.elements.upleft.w?
                iW - dd.elements.upleft.w - 20 :
                (dd.elements.upleft.x - 3),
            (dd.obj==dd.elements.upleft)?
                dd.elements.upleft.y :
                (dd.elements.low.y - dh)
        );

        dd.elements.low.moveTo(
            dd.elements.low.x <= -dd.elements.low.w?
                iW-dd.elements.low.w-20 :
                (dd.elements.low.x-5),
            dd.elements.upleft.y + dh
        );
    }
    setTimeout("ANIM()", dd.kq? 200 : 100);
}


// override funcs defined within the Lib
function my_PickFunc()
{
    if (dd.obj.name == 'button') dd.obj.swapImage(insetbutton.src);
    if (!dd.obj.name.indexOf('muckl') && dd.obj.x == dd.obj.defx)
    {
        if (dd.elements.muckl.copies.length < 80) dd.elements.muckl.copy();
    }
}

function my_DragFunc()
{
    if (dd.obj.name == 'thumb')
    {
        var red = parseInt((dd.elements.thumb.x-dd.elements.thumb.defx)*255/45),
        blue = -red,
        green = (255-Math.abs(red)).toString(16);
        red = (red > 0? red : 0).toString(16);
        blue = (blue > 0? blue : 0).toString(16);
        while (red.length < 2) red = '0'+red;
        while (blue.length < 2) blue = '0'+blue;
        while (green.length < 2) green = '0'+green;
        dd.elements.slidercanvas.setBgColor("#"+red+green+blue);
    }
}

function my_DropFunc()
{
    if (dd.obj.name == 'button')
    {
        dd.obj.swapImage(outsetbutton.src);
        var minh = dd.elements.button.h+((dd.elements.button.y-dd.elements.div_notice_leds.y)<<1);
        dd.elements.notice.resizeTo(
            dd.elements.notice.w,
            (dd.elements.notice.h != minh)? minh : 300
        );
    }
}


var outsetbutton = new Image();
outsetbutton.src = '/imgs/btn/koeyeb.png';
var insetbutton = new Image();
insetbutton.src = '/imgs/btn/koeyew.png';



var iW = dd.getWndW(),
dh = dd.elements.upleft.h - dd.elements.low.h;
ANIM();

dd.elements.bluelyr.moveTo(
    (iW-dd.elements.bluelyr.w)>>1,
    dd.elements.counter.defy-dd.elements.bluelyr.h-30
);
dd.elements.div_notice_leds.moveTo(dd.elements.sepline1.x-2, dd.elements.sepline1.y+110);
dd.elements.bluelyr.show();
dd.elements.notice.show();

dd.elements.thumb.moveTo(dd.elements.track.x+36, dd.elements.track.y);
dd.elements.thumb.setZ(dd.elements.track.z+1);
dd.elements.track.addChild('thumb');
dd.elements.thumb.defx = dd.elements.track.x+36;
//-->
	</script id=script_script1_end>


<div id="koIi15v" style="position: absolute; left: 1123px; top: 3361px; width: 97px; height: 41px; z-index: 0; cursor: move;">
	<img name="koIi15vNI1m6G" src="/imgs/btn/ko.png" width="97" height="41"></div>

<div id=div_330 hidden>
<div id="upleftdIi15v" style="position: absolute; left: 1123px; top: 3361px; width: 97px; height: 41px; z-index: 0; cursor: move;">
	<img name="upleftdIi15vNI1m6G" src="/js/wz/wz_upleft.gif" width="97" height="41"></div>
<div id="tryitdIi15v" style="position: absolute; left: 320px; top: 469px; width: 50px; height: 17px; z-index: 1; cursor: move;">
	<img name="tryitdIi15vNI1m6G" src="/js/wz/wz_tryit.gif" width="50" height="17"></div>
<div id="trackdIi15v" style="position: absolute; left: 0px; top: 0px; width: 94px; height: 35px; z-index: 1; cursor: auto;">
	<img name="trackdIi15vNI1m6G" src="/js/wz/wz_track.gif" style="display: none !important;" width="94" hidden="" height="35"></div>
<div id="thumbdIi15v" style="position: absolute; left: 36px; top: 0px; width: 22px; height: 35px; z-index: 3; cursor: move;">
	<img name="thumbdIi15vNI1m6G" src="/js/wz/wz_sliderthumb.gif" width="22" height="35"></div>
<div id="smile1dIi15v" style="position: absolute; left: 1317px; top: 200px; width: 11px; height: 11px; z-index: 1; cursor: move;">
	<img name="smile1dIi15vNI1m6G" src="/js/wz/wz_smile.gif" width="11" height="11"></div>
<div id="slidercanvasdIi15v" style="position: absolute; left: 1088px; top: 3041px; width: 300px; height: 120px; z-index: 1; cursor: move;">
	<img name="slidercanvasdIi15vNI1m6G" src="/js/wz/transparent_300_120.gif" width="300" height="120"></div>
<div id="skitourdIi15v" style="position: absolute; left: 171px; top: 1517px; width: 550px; height: 298px; z-index: 1; cursor: move;">
	<img name="skitourdIi15vNI1m6G" src="/js/wz/wz_skitour_suedtirol_2.jpg" width="550" height="298"></div>
<div id="sepline1dIi15v" style="position: absolute; left: 1401px; top: 227px; width: 1px; height: 1px; z-index: 1; cursor: auto;">
	<img name="sepline1dIi15vNI1m6G" src="/js/wz/transparentpixel.gif" width="1" height="1"></div>
<div id="redarrowdIi15v" style="position: absolute; left: 171px; top: 3637px; width: 15px; height: 13px; z-index: 1; cursor: move;">
	<img name="redarrowdIi15vNI1m6G" src="/js/wz/wz_redarrow.gif" width="15" height="13"></div>
<div id="northcapedIi15v" style="position: absolute; left: 1123px; top: 2364px; width: 265px; height: 410px; z-index: 1; cursor: move;">
	<img name="northcapedIi15vNI1m6G" src="/js/wz/wz_nothcapetrip2_northcape.jpg" width="265" height="410"></div>
<div id="muckldIi15v" style="position: absolute; left: 171px; top: 3166px; width: 100px; height: 130px; z-index: 1; cursor: move;">
	<img name="muckldIi15vNI1m6G" src="/js/wz/wz_muckl.jpg" width="100" height="130"></div>
<div id="muckl1dIi15v" style="position: absolute; left: 171px; top: 3166px; width: 100px; height: 130px; z-index: 2; cursor: move;">
	<img name="muckl1dIi15vNI1m6G" src="/js/wz/wz_muckl.jpg" width="100" height="130"></div>
<div id="muckl2dIi15v" style="position: absolute; left: 171px; top: 3166px; width: 100px; height: 130px; z-index: 3; cursor: move;">
	<img name="muckl2dIi15vNI1m6G" src="/js/wz/wz_muckl.jpg" width="100" height="130"></div>
<div id="muckl3dIi15v" style="position: absolute; left: 171px; top: 3166px; width: 100px; height: 130px; z-index: 4; cursor: move;">
	<img name="muckl3dIi15vNI1m6G" src="/js/wz/wz_muckl.jpg" width="100" height="130"></div>
<div id="muckl4dIi15v" style="position: absolute; left: 171px; top: 3166px; width: 100px; height: 130px; z-index: 5; cursor: move;">
	<img name="muckl4dIi15vNI1m6G" src="/js/wz/wz_muckl.jpg" width="100" height="130"></div>
<div id="lowdIi15v" style="position: absolute; left: 643px; top: 3377px; width: 62px; height: 25px; z-index: 1; cursor: move;">
	<img name="lowdIi15vNI1m6G" src="/js/wz/zn_low.gif" width="62" height="25"></div>
<div id="leopdIi15v" style="position: absolute; left: 1084px; top: 1145px; width: 300px; height: 205px; z-index: 1; cursor: move;">
	<img name="leopdIi15vNI1m6G" src="/js/wz/wz_ddleop.jpg" width="300" height="205"></div>
<div id="koaladIi15v" style="position: absolute; left: 1228px; top: 3594px; width: 160px; height: 213px; z-index: 1; cursor: move;">
	<img name="koaladIi15vNI1m6G" src="/js/wz/wz_ddkoala.jpg" width="160" height="213"></div>
<div id="chameleondIi15v" style="position: absolute; left: 171px; top: 1969px; width: 155px; height: 95px; z-index: 1; cursor: move;">
	<img name="chameleondIi15vNI1m6G" src="/js/wz/wz_ddcham.jpg" width="155" height="95"></div>
<div id="catdIi15v" style="position: absolute; left: 26px; top: 152px; width: 129px; height: 154px; z-index: 1; cursor: move;">
	<img name="catdIi15vNI1m6G" src="/js/wz/wz_ddcat.jpg" width="129" height="154"></div>
	<div id="buttondIi15v" style="position: absolute; left: 1430px; top: 340px; width: 60px; height: 17px; z-index: 1; cursor: default; visibility: visible;">
	<img name="buttondIi15vNI1m6G" src="/js/wz/wz_button_outset.gif" width="60" height="17"></div>
<div id="bikegoeteborgdIi15v" style="position: absolute; left: 171px; top: 522px; width: 426px; height: 444px; z-index: 1; cursor: move;">
	<img name="bikegoeteborgdIi15vNI1m6G" src="/js/wz/wz_northcapetrip_goeteborg.jpg" width="426" height="444"></div>
	</div id=div_330_end>


	<br>
	<hr color=black>
	<hr color=white>
<!--
	<img id=img_wz name=img_wz src=/imgs/btn/koeye.png onclick="toggle('div_wz',''); return false;" height=15 border=0>wz
	<br>
	<hr color=goldenrod>
	<div id=div_wz>
	-->


		<h1>div_wz<h1>
<!--
	<img id=img_dhtml name=img_dhtml src=/imgs/btn/koeye.png onclick="toggle('div_dhtml',''); return false;" height=15 border=0>dhtml
	<br>
	<hr color=goldenrod>
	<div id=div_dhtml hidden>
		<h1>div_dhtml</h1>
		</div id=div_dhtml_end>
	<img id=img_set_dhtml name=img_set_dhtml src=/imgs/btn/koeye.png onclick="toggle('div_set_dhtml',''); return false;" height=15 border=0>set_dhtml
	<br>
	<hr color=goldenrod>
	<div id=div_set_dhtml hidden >
		<h1>div_set_dhtml</h1>
		</div id=div_set_dhtml_end>
<title>JavaScript: DHTML Library, Drag &amp; Drop for Images and Layers</title>
	-->

	<hr color=black>
	<hr color=white>
	</div id=div_wz_end>
	<br>
	<hr color=white>
	<hr color=black>




	<script id="script_jaxs" type="text/javascript">
//			var kolists = new Array();
//		`	kolists[''] = '';
			kolists['default'] = 'pages/1.jpg\npages/2.jpg\npages/3.jpg';
			kolists['blobs2'] = '
blob|/imgs/btn/blob.png|name_blob|color|size|link|
blob1|/imgs/btn/blob1.png|name_blob1|color|size|link|
blob2|/imgs/btn/blob2.png|name_blob2|color|size|link|
blob3|/imgs/btn/blob3.png|name_blob3|color|size|link|
blob0|/imgs/btn/blob0.png|name_blob0|color|size|link|
blob_w|/imgs/btn/blob_w.png|name_blob_w|color|size|link|
blob_b|/imgs/btn/blob_b.png|name_blob_b|color|size|link|
blob_m|/imgs/btn/blob_m.png|name_blob_m|color|size|link|
blob_default|/imgs/btn/blob_default.png|name_blob_default|color|size|link|
';
			kolists['jax'] = 'jax/pages/1.jpg\njax/pages/2.jpg\njax/pages/3.jpg';
//			kolists['jax'] = kolists['default'];
			kolists['fb'] = '/fb/pages/1.jpg\n/fb/pages/2.jpg\n/fb/pages/3.jpg';
			kolists['konet'] = '/fb/jtfdcr/pages/1.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['iperms'] = '/fb/jtfdcr/pages/1.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['jtfdcr'] = '/fb/jtfdcr/pages/1.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
kolists['av'] = `

`;

kolists['fb'] = 
`pages/1.jpg
pages/2.jpg
pages/3.jpg
pages/4.jpg
pages/5.jpg
pages/6.jpg
pages/7.jpg
pages/8.jpg
pages/9.jpg
`;

kolists['bb'] = ``;
kolists['dd'] = ``;

kolists['sl'] = `

`;
kolists['tm'] = ``;

kolists['tl'] = `

`;

kolists['us'] = 
`usid|us_name|us_img|us_tn|us_desc|us_link
usid|us_name1|us_img1|us_tn1|us_desc1|us_link1
`;

kolists['yt'] = `
yt_20200408_mcduff|https://www.youtube.com/watch?v=baK-7kr-zoo
yt_20200408_webb|https://www.youtube.com/watch?v=QdZ-vfJSE9U
yt_20200407_webb|https://www.youtube.com/watch?v=R4dLXs0PIrI
yt_20200406_webb|https://www.youtube.com/watch?v=xgtAHyssRmo
yt_20150625_chrisrea_somewhere_between_stars_santo_spirito|https://www.youtube.com/watch?v=0RF1mXxAhys
yt_20200331_carlin_germs|https://www.youtube.com/watch?v=l_L6AS1Huno
yt_20190311_bob_dylan_gotta_serve_somebody_audio|https://www.youtube.com/watch?v=wC10VWDTzmU
yt_20200407_stroppyme|https://www.youtube.com/watch?v=unNuvGJ3ses
yt_20200406_autodidactic_chinese_tartate_1729|https://www.youtube.com/watch?v=bwoF1MlckRw
yt_20190905_quinn_timothy_oneil_band_let_it_rain_official|https://www.youtube.com/watch?v=CHedk8yAF_g
yt_20200407_housitonic|https://www.youtube.com/watch?v=_pBsL0qW2Vs
yt_20200407_amazingpolly|https://www.youtube.com/watch?v=zoK6h4Mg7E8
yt_20200406_vlad9vt_sicily_polygonal_ancient_masonry|https://www.youtube.com/watch?v=sVMjRmpdUIw
yt_20200404_vlad9vt_malta_magalith|https://www.youtube.com/watch?v=zpHy1Q-fqCU
yt_20200326_borealusforum_wal_thornhil_this_is_our_electric_univers_p1of2|https://www.youtube.com/watch?v=u7peR-2m8XI`;


// kolists['zm'] = ``;









//			alert( "BUGS_5120 jax default_jaxurl="+default_jaxurl );
//			alert( "BUGS_5120 jax jaxurl="+jaxurl );
//			alert( "BUGS_12700 jax kolists_ticktick="+kolists[''] );
//			alert( "BUGS_12700 jax fb="+kolists['fb'] );
//			alert( "BUGS_12701 jax kolists_default="+kolists['default'] );
//			alert( "BUGS_12702 jax kolists_konet="+kolists['default'] );
//			alert( "BUGS_12703 jax kolists_iperms="+kolists['default'] );
//			alert( "BUGS_12704 jax kolists_jtfdcr="+kolists['default'] );
//			alert( "BUGS_12700 jax kolists_jax="+kolists['jax'] );
			</script id=script_lists>




		<script id=script_kojaxj>
			var default_jaxurl = "main.html";
			var jaxurl = default_jaxurl;
			function kojaxj(jaxurl,divid,callback) {
				if( divid == "" ) { divid="pre_kojaxj"; }
				alert( "BUGS_5111 kojaxj jaxurl="+jaxurl+" divid="+divid+" callback="+callback );
				$.ajax({
					url: jaxurl,
					dataType: "json",
					context: document.body,
					success: function(responseText) {
						alert( "BUGS_5121 KOJAXJ responseText="+responseText );
						json=JSON.parse(responseText);
						for(j=0;j<json.length;j++ ){
							alert( "BUGS_5121 j="+j+" json.pathfile="+json[j].pathfile );
							}
						alert( "BUGS_5122 KOJAX json="+json );

//						alert( "BUGS_5104 jax len="+responseText.split("\n").length+"  responseText="+responseText );

						if( document.getElementById('pre_kojaxj')) {
							document.getElementById('pre_kojaxj').innerHTML=responseText;
							}
//						kolists['kojaxj'] = responseText;
						alert( "BUGS_5105 jax kolists_jtfdcr="+kolists['jtfdcr'] );
						$("#div_kojaxj").html(responseText);
						$("#div_kojaxj").find("script").each(function(i) {
						eval($(this).text());
						alert( "BUGS_5106 kojaxj responseText="+responseText );
						return( responseText );
						});
					}
				});
			};
		</script id=script_jax_end>


		<script id="script_jax">
//			alert( "BUGS_5120 jax default_jaxurl="+default_jaxurl );
//			alert( "BUGS_5120 jax jaxurl="+jaxurl );
//			alert( "BUGS_12700 jax kolists_ticktick="+kolists[''] );
//			alert( "BUGS_12700 jax fb="+kolists['fb'] );
//			alert( "BUGS_12701 jax kolists_default="+kolists['default'] );
//			alert( "BUGS_12702 jax kolists_konet="+kolists['default'] );
//			alert( "BUGS_12703 jax kolists_iperms="+kolists['default'] );
//			alert( "BUGS_12704 jax kolists_jtfdcr="+kolists['default'] );
//			alert( "BUGS_12700 jax kolists_jax="+kolists['jax'] );


			var default_jaxurl = "jax.html";
			var jaxurl = default_jaxurl;
			function kojax(jaxurl,divid,callback) {
				if( divid == "" ) { divid="pre_kojax"; }
//				alert( "BUGS_4865 kojax jaxurl="+jaxurl+" divid="+divid+" callback="+callback );
				if(!filecheck(jaxurl)) {
//					alert( "BUGS_4870 kojax NOTFOUND jaxurl="+jaxurl );
					return("NOTFOUND="+jaxurl );
					}
				var jaxbak = '-=jaxbak=-';
				kolists['jax'] = '-=jax=-';
//				alert( "BUGS_4871 FOUND jaxurl="+jaxurl );
				$.ajax({
					url: jaxurl,
					context: document.body,
					success: function(responseText) {
// 						alert( "BUGS_4881 jax TXT URL="+jaxurl+" LEN="+responseText.split("\n").length+"  responseText="+responseText );
//						kolists['jax'] = responseText;
						jaxbak = responseText;

//						alert( "BUGS_4883 kojax innerHTML divid="+divid+" responseText="+responseText );
//						const jsobj = JSON.parse(responseText);
//						alert( "BUGS_4890 jsobj.led_id="+jsobj.led_id );
						if( document.getElementById(divid)) {
							document.getElementById(divid).innerHTML=responseText;
							}
//						$("#div_jax").html(responseText);
//						$("#pre_kojax").html(responseText);
// 						alert( "BUGS_4883 jax JAXBAK URL="+jaxurl+" LEN="+jaxbak.split("\n").length+"  responseText="+jaxbak );

						var scriptflag = "true";
						if( scriptflag == "true" ) {
							$("#div_jax").find("script").each(function(i) {
								eval($(this).text());
								});
							}
						if( callback == "dd" ) { dd(''); }
						if( callback == "letter" ) { letter(''); }
						if( callback == "contacts" ) { contacts(''); }
						if( callback == "items" ) { items(''); }
					}
				});
// alert( "BUGS_19538 jax end" );
// alert( "BUGS_19601 jax TXT URL="+jaxurl+" LEN="+responseText.split("\n").length+"  responseText="+responseText );
// alert( "BUGS_19602 jax KOL URL="+jaxurl+" LEN="+kolists['jax'].split("\n").length+"  responseText="+kolists['jax'] );
// alert( "BUGS_19603 jax JAXBAK URL="+jaxurl+" LEN="+jaxbak.split("\n").length+"  responseText="+jaxbak );
// 			alert( "BUGS_19539 jax END" );
			return( jaxbak );
			alert( "BUGS_19540 jax END END" );
			};
		</script id=script_jax_end>

	<script id="script_startup3">
		function startup3(args) {
			alert("BUGS_3870 startup3 args="+args );
			var jaxurl=args;
			var href=window.location.href;
			var search=window.location.search;

// http://ka12/fb/stlc/index.html  = index_stlc.html
//			alert( "BUGS_21511 startup args="+args+" href="+href );
			href="/fb/stlc";
			var hrefdirs = href.split("/");
			hrefdirs_len=hrefdirs.length;
			dirnam = hrefdirs[hrefdirs_len-1];
//			alert( "BUGS_21512 startup hrefdirs="+hrefdirs+" href="+href );

			var indexname = href.replace("http://","").replace("/index.html","");
			var indexname_html = "index_"+indexname+".html";
			if( filecheck( indexname_html)) {
//				alert( "BUGS_21512 startup __FOUND indexname_html="+indexname_html+" href="+href );
//				window.open(indexname_html);
//				document.location.href=indexname_html;
				}			
//			alert( "BUGS_21512 startup NOTFOUND indexname_html="+indexname_html+" href="+href );
			htmout_banner=banner('');			
			htmout_grip=grid(args);


			if( /jax/.test(search)) {
				jaxurl = search.split("=")[1];
//				alert( "BUGS_17240 startup jaxurl="+jaxurl );
				}


//			var host=window.location.host;
//			var pathname=window.location.pathname;
//			url_default="fb.json";
//			alert( "BUGS_2591 url_default="+url_default );
//			var replaced =  pathname.replace(/(^\.+|\.+$)/mg, '');
//			if( pathname.endsWith(".htm")) {
//			url_default=pathname.replace(".html",".json" );
//			jaxurl="/av.txt";
//			if(filecheck(jaxurl)) { kolists['av'] = jax(jaxurl,''); }

//			load_kolists(args);
//			show_kolists(args);
			}
			
		</script id=script_startup_end>



	<style id="style_body_scroll">
		body{ overflow-y:scroll; }
		</style>

	<script id="script_filecheck" >
		function filecheck(url) {
			if(url) {
				var req = new XMLHttpRequest();
				req.open('GET', url, false);
				req.send();
				return req.status==200;
				} 
			else {
				return false;
				}
			}
		</script>

	<script id="script_imgcheck" >
		function imgcheck(url) {
			var img = new Image();
			img.src = url;
			return img.height != 0;
			}
		</script>

	<script id="script_linkcheck" >
		function linkcheck(url) {
			var http = new XMLHttpRequest();
			http.open('HEAD', url, false);
			http.send();
			return http.status!=404;
			}
		</script>

	<script id="script_urlexists" >
		function UrlExists(url) {
			var http = new XMLHttpRequest();
			http.open('HEAD', url, false);
			http.send();
			return http.status!=404;
			}
		</script>

		<script id="script_jax1" >
			function jax1(url) {
				alert( "MSG_11970 jax1 url="+url );
				return("jax1\njax2\njax3" );
				}
			</script>	

		<script id="script_jax2" >
//			function jax2(jaxurl) {
//				alert( "BUGS_12360 jax jaxurl="+jaxurl );
//				$.ajax({
//					url: jaxurl,
//					context: document.body,
//					success: function(responseText) {
//						alert( "BUGS_5155 jax len="+responseText.split("\n").length+"  responseText="+responseText );
////						kolists['jax'] = responseText;
//						alert( "BUGS_12667 jax kolists_jtfdcr="+kolists['jtfdcr'] );
//						}
//					});
//				}
			</script>

	<script id="script_kolists" type="text/javascript">
			var kolists = new Array();
			var divids = "";
//		`	kolists[''] = '';
			divids = 'alloff toggle allon <br> hl av bb dd fb fs pn sl <br> tl tm us yt zm <br> jtfdcr jtfdc jtfinc <br> head body memes kov tail <br> pdfs media cards oklahoma turbulence us2 edu hoa law tclaw zpid fb_law postturtle_monkeytrap soul_lewis';
//			divids = 'alloff toggle allon <br> hl av bb dd fb fs pn sl <br> tl tm us yt zm <br> jtfdcr jtfdc jtfinc <br> head body memes kov tail';
			kolists['divids'] = divids;
//			kolists['divids'] = 'alloff toggle allon <br> hl av bb dd fb fs pn sl tl tm yt zm <br> jtfdcr jtfdc jtfinc <br> head body memes kov tail';
			 
			kolists['default'] = 'pages/1.jpg\npages/2.jpg\npages/3.jpg';
			kolists['jax'] = 'jax/pages/1.jpg\njax/pages/2.jpg\njax/pages/3.jpg';
//			kolists['jax'] = kolists['default'];
			kolists['fb'] = '/fb/pages/1.jpg\n/fb/pages/2.jpg\n/fb/pages/3.jpg';
			kolists['av'] = '/fb/pages/2.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['pn'] = '/fb/pages/3.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['sl'] = '/fb/pages/4.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['tl'] = '/fb/pages/5.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['us'] = 'us|link\nus0|uslink0\nus1|uslink1\nus2|uslink2\nus3|uslink3';
			kolists['yt'] = '/fb/pages/6.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
//			kolists['zm'] = '/fb/pages/7.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
			kolists['konet'] = '/fb/konet/pages/1.jpg\n/fb/konet/pages/2.jpg\n/fb/konet/pages/3.jpg';
			kolists['iperms'] = '/fb/iperms/pages/1.jpg\n/fb/iperms/pages/2.jpg\n/fb/iperms/pages/3.jpg';
			kolists['jtfdcr'] = '/fb/jtfdcr/pages/1.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';

kolists['imgs_jukebox'] = 
`/imgs/imgs_jukebox/giphy_us_20.gif
/imgs/imgs_jukebox/jukebox_00.jpg
/imgs/imgs_jukebox/jukebox_01.jpg
/imgs/imgs_jukebox/jukebox_02.jpg
/imgs/imgs_jukebox/jukebox_03.jpg
/imgs/imgs_jukebox/jukebox_05.jpg
/imgs/imgs_jukebox/jukebox_06.jpg
/imgs/imgs_jukebox/jukebox_07.jpg
/imgs/imgs_jukebox/jukebox_08.jpg
/imgs/imgs_jukebox/jukebox_10.jpg
/imgs/imgs_jukebox/jukebox_12.jpg
/imgs/imgs_jukebox/jukebox_14.jpg
/imgs/imgs_jukebox/jukebox_20.gif
/imgs/imgs_jukebox/jukebox_shuttle.gif
/imgs/imgs_jukebox/jukebox_vintage.gif
/imgs/imgs_jukebox/radio02.jpg
/imgs/imgs_jukebox/radio03.jpg
/imgs/imgs_jukebox/radio04.jpg
/imgs/imgs_jukebox/radio06.jpg
/imgs/imgs_jukebox/radio08.jpg
/imgs/imgs_jukebox/radio09.jpg
/imgs/imgs_jukebox/radio10.jpg
/imgs/imgs_jukebox/radio_wave.gif
/imgs/imgs_jukebox/radiowave2.gif
/imgs/imgs_jukebox/record_01.gif
/imgs/imgs_jukebox/record_02.gif
/imgs/imgs_jukebox/record_03.gif
/imgs/imgs_jukebox/record_04.gif
/imgs/imgs_jukebox/record_05.gif
/imgs/imgs_jukebox/record_06.gif
/imgs/imgs_jukebox/record_08.gif
/imgs/imgs_jukebox/record_089gif.gif
/imgs/imgs_jukebox/records_bins.gif
`;	

kolists['blob_img_default'] = `/fb/jtfdc/imgs/tn_jtfdc_sawhorse`;


kolists['blobs'] = 
`ka12|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
ka21|yellow|orange|pink|25|/yt/imgs/yt_polly.png
ko0|pink|yellow|red|1|/yt/imgs/yt_paityn.png
ko1|brown|tan|black|2|/yt/imgs/yt_black.png
ko2|tan|brown|white|3|/yt/imgs/yt_carter.png
paityn|#ff2c55|#a0ddff|#ff70a6|10|/yt/imgs/yt_quinn.png|#3bc14a
carter|#8eedf7|#a1cdf1|#9d695a|05|/yt/imgs/yt_quinn.png|orange
jenna|#f05363|#6ef9f5|#8f3985|05|/yt/imgs/yt_quinn.png|#efd9ce
blake|#61a0af|#7dce82|#ff8360|05|/yt/imgs/yt_quinn.png|#daffef
josh|#ef626c|#61e786|#990033|10|/yt/imgs/yt_quinn.png|#edffec
stacey|#63ccca|#ff86c8|#23c0f9|10|/yt/imgs/yt_quinn.png|45f0df
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
konet|linen|darkslategray|gray|50|/imgs/btn/btn_501law.png
law|linen|darkslategray|gray|10|/imgs/btn/btn_501law.png
law_sl|linen|darkslategray|gray|20|/imgs/btn/btn_law_sl.png
law_tc|linen|darkslategray|gray|20|/imgs/btn/btn_law_tc.png
law_tc_kk|linen|darkslategray|gray|50|/imgs/btn/btn_law_tc_kk.png
law_tc_db|linen|darkslategray|gray|50|/imgs/btn/btn_law_tc_db.png
med_kaytel|linen|darkslategray|gray|50|/imgs/btn/btn_med_kaytel.png
med_lele|linen|darkslategray|gray|50|/imgs/btn/btn_med_lele.png
# /imgs/btn/btn_501law.png
# /imgs/btn/btn_dolleylaw.png
# /imgs/btn/btn_paityn.png
# /imgs/btn/btn_carter.png
# /imgs/btn/btn_blake.png
jkwii|blue|red|black|5|/imgs/btn/btn_jkwii.png
skwii|blue|red|black|5|/imgs/btn/btn_skwii.png
jak1|blue|red|black|5|/imgs/btn/btn_jak1.png
jak2|blue|red|black|5|/imgs/btn/btn_jak2.png
jak3|blue|red|black|5|/imgs/btn/btn_jak3.png
`;



kolists['blobs_orig'] = 
`ka12|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
ka21|yellow|orange|pink|25|/yt/imgs/yt_polly.png
ko0|pink|yellow|red|1|/yt/imgs/yt_paityn.png
ko1|brown|tan|black|2|/yt/imgs/yt_black.png
ko2|tan|brown|white|3|/yt/imgs/yt_carter.png
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
konet|linen|darkslategray|gray|50|/imgs/btn/btn_501law.png
law|linen|darkslategray|gray|10|/imgs/btn/btn_501law.png
law_tc|linen|darkslategray|gray|20|/imgs/btn/btn_501law.png
law_tc_kk|linen|darkslategray|gray|50|/imgs/btn/btn_501law.png
# /imgs/btn/btn_501law.png
# /imgs/btn/btn_dolleylaw.png
# /imgs/btn/btn_paityn.png
# /imgs/btn/btn_carter.png
# /imgs/btn/btn_blake.png
jkwii|blue|red|black|5|/imgs/btn/btn_jkwii.png
skwii|blue|red|black|5|/imgs/btn/btn_skwii.png
jak1|blue|red|black|5|/imgs/btn/btn_jak1.png
jak2|blue|red|black|5|/imgs/btn/btn_jak2.png
jak3|blue|red|black|5|/imgs/btn/btn_jak3.png
`;

kolists['sounds'] = 
`/gm/sounds/bubbles.mp3
/gm/sounds/giggle_explosion.mp3
/gm/sounds/explosion.wav
/gm/sounds/shoot.wav
/gm/sounds/space_explosion.wav
/gm/sounds/space_shoot.wav
/gm/sounds/giggle_explosion.wav
/gm/sounds/giggle_shoot.mp3
/gm/sounds/giggle_shoot.wav
/gm/sounds/explosion.mp3
/gm/sounds/shoot.mp3
/gm/sounds/space_explosion.mp3
/gm/sounds/space_shoot.mp3
/gm/sounds/giggle_explosion.mp3
/gm/sounds/alarm.mp3
/gm/sounds/apprehensive.mp3
/gm/sounds/aww.mp3
/gm/sounds/ballbounce-172648817.mp3
/gm/sounds/bat_taps.mp3
/gm/sounds/beach_talking_teens.mp3
/gm/sounds/beep.mp3
/gm/sounds/bells.mp3
/gm/sounds/bird_in_Rain.mp3
/gm/sounds/birds_after_rain.mp3
/gm/sounds/bleep.mp3
/gm/sounds/bluejay.mp3
/gm/sounds/bluejay_call2.mp3
/gm/sounds/bounce.mp3
/gm/sounds/breathing.mp3
/gm/sounds/bubbles.mp3
/gm/sounds/bump_large.mp3
/gm/sounds/busy.mp3
/gm/sounds/canadian_geese.mp3
/gm/sounds/cashregister.mp3
/gm/sounds/catch.mp3
/gm/sounds/chain_fence_jump.mp3
/gm/sounds/chains_spooky.mp3
/gm/sounds/charge.mp3
/gm/sounds/charge_2.mp3
/gm/sounds/cheer.mp3
/gm/sounds/chord.mp3
/gm/sounds/clap_stomp.mp3
/gm/sounds/click2.mp3
/gm/sounds/computer_error.mp3
/gm/sounds/cork.mp3
/gm/sounds/countdown.mp3
/gm/sounds/crow.mp3
/gm/sounds/crowd.mp3
/gm/sounds/crumpling.mp3
/gm/sounds/cymbal.mp3
/gm/sounds/day_sunny.mp3
/gm/sounds/demon_girls_mockingbird_hi.mp3
/gm/sounds/digging_in.mp3
/gm/sounds/dooropen.mp3
/gm/sounds/doorslam.mp3
/gm/sounds/drop_fork.mp3
/gm/sounds/dropped_bat.mp3
/gm/sounds/duck_mallard.mp3
/gm/sounds/duck_mallard_quack.mp3
/gm/sounds/duck_pissed.mp3
/gm/sounds/earthquake.mp3
/gm/sounds/exclamation.mp3
/gm/sounds/exhale.mp3
/gm/sounds/explosion.mp3
/gm/sounds/falcon.mp3
/gm/sounds/fall.mp3
/gm/sounds/farm.mp3
/gm/sounds/field.mp3
/gm/sounds/flipflop.mp3
/gm/sounds/frog.mp3
/gm/sounds/fryingpan_hit.mp3
/gm/sounds/fryingpan_impact.mp3
/gm/sounds/giggle.mp3
/gm/sounds/giggle_funny_kid.mp3
/gm/sounds/giggle_kid.mp3
/gm/sounds/gong.mp3
/gm/sounds/hit.mp3
/gm/sounds/horned_owl.mp3
/gm/sounds/laugh_goofy.mp3
/gm/sounds/laugh_monster.mp3
/gm/sounds/laughing_kookaburra_birds.mp3
/gm/sounds/lets_go.mp3
/gm/sounds/mars_attacks.mp3
/gm/sounds/meadowlark.mp3
/gm/sounds/meoutake.mp3
/gm/sounds/merlin.mp3
/gm/sounds/moan.mp3
/gm/sounds/panica.mp3
/gm/sounds/parots_talking.mp3
/gm/sounds/phaser.mp3
/gm/sounds/phone.mp3
/gm/sounds/ping.mp3
/gm/sounds/pterodactyl_screech.mp3
/gm/sounds/rainstorm_april_45m.mp3
/gm/sounds/rooster_crow.mp3
/gm/sounds/sewing_machine.mp3
/gm/sounds/shampoo_hair.mp3
/gm/sounds/shoot.mp3
/gm/sounds/sigh.mp3
/gm/sounds/sigh_female.mp3
/gm/sounds/sigh_heavy.mp3
/gm/sounds/sigh_little_girl.mp3
/gm/sounds/siren_tornado.mp3
/gm/sounds/skipping_cd.mp3
/gm/sounds/slide.mp3
/gm/sounds/slip.mp3
/gm/sounds/slip_bananapeel.mp3
/gm/sounds/slip_strange.mp3
/gm/sounds/sonar.mp3
/gm/sounds/sonar_ping.mp3
/gm/sounds/space_explosion.mp3
/gm/sounds/space_shoot.mp3
/gm/sounds/spli_funny.mp3
/gm/sounds/starting_pistol.mp3
/gm/sounds/suspense_climactic.mp3
/gm/sounds/termites_and_ants.mp3
/gm/sounds/tree_fall_small.mp3
/gm/sounds/walking_snow.mp3
/gm/sounds/warbling_vireo.mp3
/gm/sounds/whoosh.mp3
/gm/sounds/whoosh_pitch.mp3
/gm/sounds/yahoo.mp3
/gm/sounds/bounce.wav
/gm/sounds/explosion.wav
/gm/sounds/shoot.wav
/gm/sounds/space_explosion.wav
/gm/sounds/space_shoot.wav
/gm/sounds/giggle_shoot.mp3
`;

kolists['mp3_bavaria'] = 
`/kb/mp3/bavaria/bavaria04a.mp3
/kb/mp3/bavaria/bavaria04b.mp3
/kb/mp3/bavaria/bavaria06a.mp3
/kb/mp3/bavaria/bavaria_01_b02.mp3
/kb/mp3/bavaria/bavaria_03_b12.mp3
/kb/mp3/bavaria/bavaria_04_b13.mp3
/kb/mp3/bavaria/bavaria_a15.mp3
/kb/mp3/bavaria/bavaria_a17.mp3
/kb/mp3/bavaria/bavaria_b01.mp3
/kb/mp3/bavaria/bavaria_b05.mp3
/kb/mp3/bavaria/bavaria_b09.mp3
/kb/mp3/bavaria/bavaria_b10.mp3
/kb/mp3/bavaria/bavaria_b18.mp3
/kb/mp3/dj_ethnic/dj_ethnic_barry_sisters-fargess_mich_nit.mp3
/kb/mp3/dj_ethnic/dj_ethnic_barry_sisters-ja_mein_liebe_tochter.mp3
/kb/mp3/dj_ethnic/dj_ethnic_barry_sisters-papirossen.mp3
/kb/mp3/dj_ethnic/dj_ethnic_barry_sisters-tum_balalaika.mp3
/kb/mp3/dj_ethnic/dj_ethnic_eli_eli.mp3
/kb/mp3/dj_ethnic/dj_ethnic_kibbutz_wedding.mp3
/kb/mp3/dj_ethnic/dj_ethnic_meshuggeneh-rumania.mp3
/kb/mp3/dj_ethnic/dj_ethnic_russian_gypsy_balalaika.mp3
/kb/mp3/dj_ethnic/dj_ethnic_tumalalaika-herschel_bernardi.mp3
/kb/mp3/doris_day/danny_kaye-inchworm.mp3
/kb/mp3/doris_day/danny_kaye-thumbelina.mp3
/kb/mp3/doris_day/debbie_reynolds-tammy.mp3
/kb/mp3/doris_day/doris_day-buttons_and_bows.mp3
/kb/mp3/doris_day/doris_day-que_sera_sera.mp3
/kb/mp3/doris_day/doris_day-secret_love.mp3
/kb/mp3/doris_day/doris_day-you_are_my_sunshine.mp3
/kb/mp3/eva_casidy/eva_cassidy-aint_no_sunshine.mp3
/kb/mp3/eva_casidy/eva_cassidy-kathys_song.mp3
/kb/mp3/eva_casidy/eva_cassidy-track_10.mp3
/kb/mp3/eva_casidy/eva_cassidy-track__1.mp3
/kb/mp3/eva_casidy/eva_cassidy-track__3.mp3
/kb/mp3/eva_casidy/eva_cassidy-what_a_wonderful_world.mp3
/kb/mp3/eva_casidy/eva_cassidy_-fever.mp3
/kb/mp3/favs/oscar_brand-bless_em_all.mp3
/kb/mp3/inkspots/ink_spots-i_dont_want_to_set_the_world_on_fire_1941.mp3
/kb/mp3/inkspots/ink_spots-if_i_didnt_care.mp3
/kb/mp3/inkspots/ink_spots-ill_never_smile_again.mp3
/kb/mp3/kids/disney-electric_light_parade.mp3
/kb/mp3/kids/disney-its_a_small_world_after_all.mp3
/kb/mp3/notfound.mp3
/kb/mp3/richie_havens/richie_havens-03-my_fathers_shoes.mp3
/kb/mp3/richie_havens/richie_havens-05-the_hawk.mp3
/kb/mp3/richie_havens/richie_havens-07-the_times_they_are_a-changin.mp3
/kb/mp3/richie_havens/richie_havens-10-how_the_nights_can_fly.mp3
/kb/mp3/richie_havens/richie_havens-13-at_a_glance.mp3
/kb/mp3/rupert_hine/rupert_hine-01-landscape.mp3
/kb/mp3/rupert_hine/rupert_hine-02-ass_all.mp3
/kb/mp3/rupert_hine/rupert_hine-03-me_you_mine.mp3
/kb/mp3/rupert_hine/rupert_hine-04-scarecrow.mp3
/kb/mp3/rupert_hine/rupert_hine-05-kerosene.mp3
/kb/mp3/rupert_hine/rupert_hine-06-running_away.mp3
/kb/mp3/rupert_hine/rupert_hine-07-medicine_munday.mp3
/kb/mp3/rupert_hine/rupert_hine-08-more_than_one_less_then_five.mp3
/kb/mp3/rupert_hine/rupert_hine-09-boo_boos_faux_pas.mp3
/kb/mp3/rupert_hine/rupert_hine-10-pick_up_a_bone.mp3
/kb/mp3/rupert_hine/rupert_hine-11-instant_muse.mp3
/kb/mp3/start_today_again/01-if_i_could_start_today_again.mp3
/kb/mp3/start_today_again/01-lonely_girls.mp3
/kb/mp3/start_today_again/02-change_your_mind.mp3
/kb/mp3/start_today_again/02-steal_your_love.mp3
/kb/mp3/start_today_again/03-i_envy_the_wind.mp3
/kb/mp3/start_today_again/03-midnight_rain.mp3
/kb/mp3/start_today_again/04-blue.mp3
/kb/mp3/start_today_again/04-i_close_my_eyes_and_think_of_you.mp3
/kb/mp3/start_today_again/05-out_of_touch.mp3
/kb/mp3/start_today_again/05-somewhere_in_the_city.mp3
/kb/mp3/start_today_again/06-are_you_down.mp3
/kb/mp3/start_today_again/06-just_about_to_break.mp3
/kb/mp3/start_today_again/07-essence.mp3
/kb/mp3/start_today_again/07-love_is_the_law.mp3
/kb/mp3/start_today_again/08-reason_to_cry.mp3
/kb/mp3/start_today_again/08-the_pretty_place.mp3
/kb/mp3/start_today_again/09-get_right_with_god.mp3
/kb/mp3/start_today_again/09-i_wasted_time.mp3
/kb/mp3/start_today_again/10-bus_to_baton_rouge.mp3
/kb/mp3/start_today_again/10-would_you_be_my_friend.mp3
/kb/mp3/start_today_again/11-broken_butterflies.mp3
/kb/mp3/start_today_again/11-smoke_under_the_bridge.mp3
/kb/mp3/sweethearts_rodeo/sweethearts_of_the_rodeo-catch_the_wind.mp3
/kb/mp3/sweethearts_rodeo/sweethearts_of_the_rodeo-i_wont_cry_-s.mp3
/kb/mp3/sweethearts_rodeo/sweethearts_of_the_rodeo-the_inn_at_innisfre.mp3
`;	

kolists['mp3_jkwii'] =
`/kb/mp3/jkwii/30_FredEstaire_PuttinOnTheRitz.mp3
/kb/mp3/jkwii/39_KateSmith_GodBlessAmerica.mp3
/kb/mp3/jkwii/39_KayKyser_ThreeLittleFishies.mp3
/kb/mp3/jkwii/39_LouisArmstrongDannyKaye_WhenTheSaintsGoMarchingIn.mp3
/kb/mp3/jkwii/40_PaulRobeson_BalladForAmericans.mp3
/kb/mp3/jkwii/44_AndrewSisters_ShooShooBaby.mp3
/kb/mp3/jkwii/45_BingCrosby_AndrewsSisters-DontFenceMeIn.mp3
/kb/mp3/jkwii/46_BettyHutton_PaulWeston-doctor_lawyer_indianchief.mp3
/kb/mp3/jkwii/47_AlJolson_AnniversarySong.mp3
/kb/mp3/jkwii/49_DinahShore_ButtonsAndBows.mp3
/kb/mp3/jkwii/51_DebbieReynolds_AbbaDabbaHoneymoon.mp3
/kb/mp3/jkwii/51_RosemaryClooney_ComeOnAMyHouse.mp3
/kb/mp3/jkwii/AccentuateThePositive.mp3
/kb/mp3/jkwii/Auctioneer.mp3
/kb/mp3/jkwii/BalladOfDavyCrockett.mp3
/kb/mp3/jkwii/Battle_New_Orleans.mp3
/kb/mp3/jkwii/beatles+i_want_to_hold_your_hand.mp3
/kb/mp3/jkwii/beatles-i_wanna_hold_your_hand.mp3
/kb/mp3/jkwii/beatles-youve_got_to_hide_your_love_away.mp3
/kb/mp3/jkwii/beatles_i_want_to_hold_your_hand.mp3
/kb/mp3/jkwii/beatles_let_it_be.mp3
/kb/mp3/jkwii/beatles_morwegian_wood.mp3
/kb/mp3/jkwii/beethovens-fifth_symphony.mp3
/kb/mp3/jkwii/Bellamy_Brothers-let_your_Love_Flow.mp3
/kb/mp3/jkwii/benny_boodman-swingtime_inthe_rockies.mp3
/kb/mp3/jkwii/bett_midler-bless_the_beasts_and_children.mp3
/kb/mp3/jkwii/bing_crosby_n_andrews_sisters-accentuate_the_positive.mp3
/kb/mp3/jkwii/brenda_lee-if_you_love_me.mp3
/kb/mp3/jkwii/buddy_holly-great_balls_of_fire.mp3
/kb/mp3/jkwii/buddy_holly-true_love_ways.mp3
/kb/mp3/jkwii/catch_a_falling_star.mp3
/kb/mp3/jkwii/chordettes-lollipop.mp3
/kb/mp3/jkwii/clarinet_polka.mp3
/kb/mp3/jkwii/danny_kaye-inchworm.mp3
/kb/mp3/jkwii/danny_kaye-thumbelina.mp3
/kb/mp3/jkwii/dayo.mp3
/kb/mp3/jkwii/dean_martin-memories_are_made_of_this.mp3
/kb/mp3/jkwii/disney-electric_light_parade.mp3
/kb/mp3/jkwii/donovan-catch_the_wind_original_single_with_strings.mp3
/kb/mp3/jkwii/doris_day-que_sera_sera.mp3
/kb/mp3/jkwii/dusty_springfield-windmills_of_your_mind.mp3
/kb/mp3/jkwii/eddie_cantor-makin_whoopee.mp3
/kb/mp3/jkwii/emmylou_harris-like_an_old_fashioned_waltz.mp3
/kb/mp3/jkwii/emmylou_harris-my_baby_needs_a_shepherd.mp3
/kb/mp3/jkwii/emmylou_harris-pledging_my_love.mp3
/kb/mp3/jkwii/emmylou_harris_n_john_denver-wild_montana_skies.mp3
/kb/mp3/jkwii/eva_cassidy-aint_no_sunshine.mp3
/kb/mp3/jkwii/eva_cassidy-kathys_song.mp3
/kb/mp3/jkwii/forrest_gump_theme.mp3
/kb/mp3/jkwii/frankie_lane-mule_train.mp3
/kb/mp3/jkwii/Freddie_n_the_dreamers-im_telling_you_now.mp3
/kb/mp3/jkwii/gail_garnet-well_sing_in_the_sunshine.mp3
/kb/mp3/jkwii/girls_just_want_to_have_fun.mp3
/kb/mp3/jkwii/glaube_mir.mp3
/kb/mp3/jkwii/glaube_mir3.mp3
/kb/mp3/jkwii/goodygoody.mp3
/kb/mp3/jkwii/grateful_dead-ripple.mp3
/kb/mp3/jkwii/great_balls_of_fire.mp3
/kb/mp3/jkwii/hand_jive.mp3
/kb/mp3/jkwii/hes_got_the_whole_world_in_his_hands.mp3
/kb/mp3/jkwii/honeycomb.mp3
/kb/mp3/jkwii/im_all_shook_up.mp3
/kb/mp3/jkwii/im_beginning_to_see_the_light.mp3
/kb/mp3/jkwii/in_the_good_old_summertime.mp3
/kb/mp3/jkwii/ink_spots-i_dont_want_to_set_the_world_on_fire_1941.mp3
/kb/mp3/jkwii/iris_dement-sweet_is_the_melody_incomplete.mp3
/kb/mp3/jkwii/killing_me_softly_with_his_song.mp3
/kb/mp3/jkwii/king_of_the_road.mp3
/kb/mp3/jkwii/kingsmen-louie_louie.mp3
/kb/mp3/jkwii/little_brown_jug.mp3
/kb/mp3/jkwii/little_grass_shack.mp3
/kb/mp3/jkwii/little_sir_echo-horace_heidt.mp3
/kb/mp3/jkwii/loony_tunes_bugs_bunny-the_rabbit_of_seville.mp3
/kb/mp3/jkwii/louie_armstrong-what_a_wonderful_world.mp3
/kb/mp3/jkwii/louis_armstrong-ive_got_a_pocket_full_of_dreams.mp3
/kb/mp3/jkwii/louis_prima_n_keely_smith-that_old_black.mp3
/kb/mp3/jkwii/lullaby_of_birdland.mp3
/kb/mp3/jkwii/LullabyOfBirdland.mp3
/kb/mp3/jkwii/macarena.mp3
/kb/mp3/jkwii/marlene_dietrich-lili_marlene.mp3
/kb/mp3/jkwii/marvin_gaye-lets_get_it_on.mp3
/kb/mp3/jkwii/maurice_chevalier_n_hermione_gingold-i_remember_it_well_gigi.mp3
/kb/mp3/jkwii/mills_brothers-glowworm.mp3
/kb/mp3/jkwii/millsBrothers-glowworm.mp3
/kb/mp3/jkwii/mitch_miller-battle_Hymn_Of_The_republic.mp3
/kb/mp3/jkwii/mitch_miller-camptown_races_oh_susanna.mp3
/kb/mp3/jkwii/mitch_miller-you_are_my_sunshine.mp3
/kb/mp3/jkwii/mona_lisa.mp3
/kb/mp3/jkwii/monkeys-daydream_believer.mp3
/kb/mp3/jkwii/nancy_sinartra-these_boots_are_made_for_walkin.mp3
/kb/mp3/jkwii/on_the_street_where_you_live.mp3
/kb/mp3/jkwii/open_the_door_richard.mp3
/kb/mp3/jkwii/oscar_brand-bless_em_all.mp3
/kb/mp3/jkwii/patsy_cline-back_in_babys_arms.mp3
/kb/mp3/jkwii/patti_page-mocking_bird_hill.mp3
/kb/mp3/jkwii/pattie_page-how_much_is_that_doggie_in_the_window.mp3
/kb/mp3/jkwii/peggy_Lee_n_benny_goodman-on_the_sunny_side_of_the_street.mp3
/kb/mp3/jkwii/people.mp3
/kb/mp3/jkwii/perry_como-round_and_round.mp3
/kb/mp3/jkwii/raindrops_keep_falling_on_my_head_1969.mp3
/kb/mp3/jkwii/ray_charles-georgia_on_my_mind.mp3
/kb/mp3/jkwii/simon_garfunkle-mrs_robinson.mp3
/kb/mp3/jkwii/sons_of_the_pioneers-cool_water.mp3
/kb/mp3/jkwii/supremes_you_cant_hurry_love.mp3
/kb/mp3/jkwii/texas_tornados-rueda_de_fuego_ring_of_fire.mp3
/kb/mp3/jkwii/tiny_bubbles_n_Pparly_shells.mp3
/kb/mp3/jkwii/tom_rush-the_circle_game.mp3
/kb/mp3/jkwii/tommy_dorsey-smoke_gets_in_your_eyes.mp3
/kb/mp3/jkwii/two_cigarettes_in_the_dark.mp3
/kb/mp3/jkwii/van_morrison-have_i_told_you_lately.mp3
/kb/mp3/jkwii/village_people-ymca.mp3
/kb/mp3/jkwii/Volare.mp3
/kb/mp3/jkwii/willy_nelson-on_the_road_again.mp3
/kb/mp3/jkwii/winchester_cathedral_petula_clark.mp3
/kb/mp3/jkwii/windy.mp3
/kb/mp3/jkwii/Yesterday.mp3`;



kolists['gifwave'] =
`/imgs/sound/ringworm_1.gif
/imgs/sound/ringworm_2.gif
/imgs/sound/ringworm_5.gif
/imgs/sound/ringworm_10.gif
/imgs/sound/ringworm_20.gif
/imgs/gif/alien_tek/wave.gif
/imgs/gif/crazy/giphy_fingerwave.gif
/imgs/gif/ducks/gif/alien_tek/wave.gif
/imgs/gif/ducks/gif/gif_spinners/giphy_go_gridwaves.gif
/imgs/gif/ducks/gif/gif_spinners/giphy_waveup.gif
/imgs/gif/gif_202004/giphy_orbwave.gif
/imgs/gif/gif_202004/giphy_wave00.gif
/imgs/gif/gif_202004/giphy_wave02.gif
/imgs/sound/giphy_wave03t.gif
/imgs/gif/gif_202004/giphy_wave03.gif
/imgs/gif/gif_202004/giphy_wave04.gif
/imgs/gif/gif_202004/giphy_wave07.gif
/imgs/gif/gif_202004/giphy_wave08.gif
/imgs/gif/gif_202004/giphy_wave_cbs.gif
/imgs/gif/gif_bugs/giphy_dogewaves.gif
/imgs/gif/gif_bugs/giphy_orb_wave.gif
/imgs/gif/gif_spinners/giphy_go_gridwaves.gif
/imgs/gif/gif_spinners/giphy_waveup.gif
/imgs/gif/giphy_dollars/giphygowave'.gif
/imgs/gif/giphy_us_news_focus/giph_tinkerbell_wavey.gif
/imgs/gif/giphy_us_news_focus/giphy_mouth_wavy.gif
/imgs/gif/giphy_us_news_focus/giphy_us_girlwave.gif
/imgs/gif/giphy_us_news_focus/giphy_us_polewave.gif
/imgs/gif/iperms/giphy_armywave.gif
/imgs/gif/iperms/giphy_armywave_barrel.gif
/imgs/gif/kt/giphy_headwaves.gif
/imgs/gif/notes/waves_blue.gif
/imgs/gif/notes/waves_circle.gif
/imgs/gif/notes/waves_interfere.gif
/imgs/gif/notes/waves_linedrop.gif
/imgs/gif/notes/waves_undulate.gif
/imgs/gif/notes/waves_water.gif
/imgs/gif/us/giphy_jkwii_headwave2.gif
/imgs/gif/us/giphy_orb_wave.gif
/imgs/gif/us/giphy_us_headwave.gif
/imgs/gif/us/tn/tn_giphy_jkwii_headwave2.gif
/imgs/gif/us/tn/tn_giphy_orb_wave.gif
/imgs/gif/us/tn/tn_giphy_us_headwave.gif
/imgs/gif/us_big/giphy_jkwii_headwaves2.gif
/imgs/gif/us_big/giphy_keyboard_wavepanel.gif
`;
	

kolists['ka1_mp3'] =
`/fl/ko_builder/alarm.mp3
/fl/ko_builder/bat_taps.mp3
/fl/ko_builder/bells.mp3
/fl/ko_builder/bubbles.mp3
/fl/ko_builder/busy.mp3
/fl/ko_builder/cashregister.mp3
/fl/ko_builder/catch.mp3
/fl/ko_builder/charge.mp3
/fl/ko_builder/charge_2.mp3
/fl/ko_builder/cheer.mp3
/fl/ko_builder/chord.mp3
/fl/ko_builder/clap_stomp.mp3
/fl/ko_builder/click2.mp3
/fl/ko_builder/cork.mp3
/fl/ko_builder/crowd.mp3
/fl/ko_builder/crumpling.mp3
/fl/ko_builder/cymbal.mp3
/fl/ko_builder/digging_in.mp3
/fl/ko_builder/dooropen.mp3
/fl/ko_builder/doorslam.mp3
/fl/ko_builder/dropped_bat.mp3
/fl/ko_builder/exclamation.mp3
/fl/ko_builder/fall.mp3
/fl/ko_builder/field_of.mp3
/fl/ko_builder/flipflop.mp3
/fl/ko_builder/gong.mp3
/fl/ko_builder/hit.mp3
/fl/ko_builder/lets_go.mp3
/fl/ko_builder/phaser.mp3
/fl/ko_builder/phone.mp3
/fl/ko_builder/ping.mp3
/fl/ko_builder/pitch_whoosh.mp3
/fl/ko_builder/slide.mp3
/fl/ko_builder/slip.mp3
/fl/ko_builder/Takemeou.mp3
/fl/ko_builder/whoosh.mp3
/fl/ko_typo/bubbles.mp3
/fl/ko_typo/click2.mp3
/fl/ko_typo/crumpling.mp3
/fl/ko_typo/phaser.mp3
/fl/ko_typo/ping.mp3
/gm/explosion.mp3
/gm/giggle_explosion.mp3
/gm/giggle_shoot.mp3
/gm/shoot.mp3
/gm/sounds/alarm.mp3
/gm/sounds/apprehensive.mp3
/gm/sounds/aww.mp3
/gm/sounds/ballbounce-172648817.mp3
/gm/sounds/Banging Radiator-SoundBible.com-715716895.mp3
/gm/sounds/bat_taps.mp3
/gm/sounds/beach_talking_teens.mp3
/gm/sounds/beep.mp3
/gm/sounds/bells.mp3
/gm/sounds/bird_in_Rain.mp3
/gm/sounds/birds_after_rain.mp3
/gm/sounds/bleep.mp3
/gm/sounds/bluejay.mp3
/gm/sounds/bluejay_call2.mp3
/gm/sounds/bounce.mp3
/gm/sounds/breathing.mp3
/gm/sounds/bubbles.mp3
/gm/sounds/bump_large.mp3
/gm/sounds/busy.mp3
/gm/sounds/canadian_geese.mp3
/gm/sounds/cashregister.mp3
/gm/sounds/catch.mp3
/gm/sounds/chain_fence_jump.mp3
/gm/sounds/chains_spooky.mp3
/gm/sounds/charge.mp3
/gm/sounds/charge_2.mp3
/gm/sounds/cheer.mp3
/gm/sounds/chord.mp3
/gm/sounds/clap_stomp.mp3
/gm/sounds/click2.mp3
/gm/sounds/computer_error.mp3
/gm/sounds/cork.mp3
/gm/sounds/countdown.mp3
/gm/sounds/Crash Large-SoundBible.com-2049318973.mp3
/gm/sounds/crow.mp3
/gm/sounds/crowd.mp3
/gm/sounds/crumpling.mp3
/gm/sounds/cymbal.mp3
/gm/sounds/day_sunny.mp3
/gm/sounds/demon_girls_mockingbird_hi.mp3
/gm/sounds/digging_in.mp3
/gm/sounds/dooropen.mp3
/gm/sounds/doorslam.mp3
/gm/sounds/drop_fork.mp3
/gm/sounds/dropped_bat.mp3
/gm/sounds/duck_mallard.mp3
/gm/sounds/duck_mallard_quack.mp3
/gm/sounds/duck_pissed.mp3
/gm/sounds/earthquake.mp3
/gm/sounds/exclamation.mp3
/gm/sounds/exhale.mp3
/gm/sounds/explosion.mp3
/gm/sounds/falcon.mp3
/gm/sounds/fall.mp3
/gm/sounds/farm.mp3
/gm/sounds/field.mp3
/gm/sounds/flipflop.mp3
/gm/sounds/frog.mp3
/gm/sounds/fryingpan_hit.mp3
/gm/sounds/fryingpan_impact.mp3
/gm/sounds/giggle.mp3
/gm/sounds/giggle_explosion.mp3
/gm/sounds/giggle_funny_kid.mp3
/gm/sounds/giggle_kid.mp3
/gm/sounds/giggle_shoot.mp3
/gm/sounds/gong.mp3
/gm/sounds/hit.mp3
/gm/sounds/horned_owl.mp3
/gm/sounds/Laugh To Self-SoundBible.com-468656860.mp3
/gm/sounds/laugh_goofy.mp3
/gm/sounds/laugh_monster.mp3
/gm/sounds/laughing_kookaburra_birds.mp3
/gm/sounds/lets_go.mp3
/gm/sounds/mars_attacks.mp3
/gm/sounds/meadowlark.mp3
/gm/sounds/meoutake.mp3
/gm/sounds/merlin.mp3
/gm/sounds/moan.mp3
/gm/sounds/panica.mp3
/gm/sounds/parots_talking.mp3
/gm/sounds/phaser.mp3
/gm/sounds/Phone Off Hook-SoundBible.com-701991146.mp3
/gm/sounds/phone.mp3
/gm/sounds/ping.mp3
/gm/sounds/pterodactyl_screech.mp3
/gm/sounds/rainstorm_april_45m.mp3
/gm/sounds/rooster_crow.mp3
/gm/sounds/sewing_machine.mp3
/gm/sounds/shampoo_hair.mp3
/gm/sounds/shoot.mp3
/gm/sounds/sigh.mp3
/gm/sounds/sigh_female.mp3
/gm/sounds/sigh_heavy.mp3
/gm/sounds/sigh_little_girl.mp3
/gm/sounds/siren_tornado.mp3
/gm/sounds/skipping_cd.mp3
/gm/sounds/slide.mp3
/gm/sounds/slip.mp3
/gm/sounds/slip_bananapeel.mp3
/gm/sounds/slip_strange.mp3
/gm/sounds/sonar.mp3
/gm/sounds/sonar_ping.mp3
/gm/sounds/space_explosion.mp3
/gm/sounds/space_shoot.mp3
/gm/sounds/spli_funny.mp3
/gm/sounds/starting_pistol.mp3
/gm/sounds/suspense_climactic.mp3
/gm/sounds/termites_and_ants.mp3
/gm/sounds/tree_fall_small.mp3
/gm/sounds/walking_snow.mp3
/gm/sounds/warbling_vireo.mp3
/gm/sounds/whoosh.mp3
/gm/sounds/whoosh_pitch.mp3
/gm/sounds/yahoo.mp3
/gm/space/sounds/explosion.mp3
/gm/space/sounds/shoot.mp3
/gm/space/sounds/space_explosion.mp3
/gm/space/sounds/space_shoot.mp3
/im/achat/sounds/sound_1.mp3
/im/achat/sounds/sound_2.mp3
/im/achat/sounds/sound_3.mp3
/im/achat/sounds/sound_4.mp3
/im/achat/sounds/sound_5.mp3
/im/achat/sounds/sound_6.mp3
/im/mibew/sounds/new_message.mp3
/im/mibew/sounds/new_user.mp3
/kb/a/piano/piano_0As.mp3
/kb/a/piano/piano_0B.mp3
/kb/a/piano/piano_0C.mp3
/kb/a/piano/piano_0Cs.mp3
/kb/a/piano/piano_0D.mp3
/kb/a/piano/piano_0Ds.mp3
/kb/a/piano/piano_0E.mp3
/kb/a/piano/piano_0F.mp3
/kb/a/piano/piano_0Fs.mp3
/kb/a/piano/piano_0G.mp3
/kb/a/piano/piano_0Gs.mp3
/kb/a/piano/piano_1A.mp3
/kb/a/piano/piano_1As.mp3
/kb/a/piano/piano_1B.mp3
/kb/a/piano/piano_1C.mp3
/kb/a/piano/piano_1Cs.mp3
/kb/a/piano/piano_1D.mp3
/kb/a/piano/piano_1Ds.mp3
/kb/a/piano/piano_1E.mp3
/kb/a/piano/piano_1F.mp3
/kb/a/piano/piano_1Fs.mp3
/kb/a/piano/piano_1G.mp3
/kb/a/piano/piano_1Gs.mp3
/kb/a/piano/piano_2A.mp3
/kb/a/piano/piano_2As.mp3
/kb/a/piano/piano_2B.mp3
/kb/a/piano/piano_2C.mp3
/kb/a/piano/piano_2Cs.mp3
/kb/a/piano/piano_2D.mp3
/kb/a/piano/piano_2Ds.mp3
/kb/a/piano/piano_2F.mp3
/kb/a/piano/piano_2Fs.mp3
/kb/a/piano/piano_2G.mp3
/kb/a/piano/piano_2Gs.mp3
/kb/a/piano/piano_3A.mp3
/kb/a/piano/piano_3As.mp3
/kb/a/piano/piano_3B.mp3
/kb/a/piano/piano_3C.mp3
/kb/a/piano/piano_3Cs.mp3
/kb/a/piano/piano_3D.mp3
/kb/a/piano/piano_3Ds.mp3
/kb/a/piano/piano_3E.mp3
/kb/a/piano/piano_3F.mp3
/kb/a/piano/piano_3Fs.mp3
/kb/a/piano/piano_3G.mp3
/kb/a/piano/piano_3Gs.mp3
/kb/a/piano/piano_40s.mp3
/kb/a/piano/piano_4A.mp3
/kb/a/piano/piano_4As.mp3
/kb/a/piano/piano_4B.mp3
/kb/a/piano/piano_4C.mp3
/kb/a/piano/piano_4Cs.mp3
/kb/a/piano/piano_4D.mp3
/kb/a/piano/piano_4E.mp3
/kb/a/piano/piano_4F.mp3
/kb/a/piano/piano_4Fs.mp3
/kb/a/piano/piano_4G.mp3
/kb/a/piano/piano_4Gs.mp3
/kb/a/piano/piano_56s.mp3
/kb/a/piano/piano_5A.mp3
/kb/a/piano/piano_5As.mp3
/kb/a/piano/piano_5B.mp3
/kb/a/piano/piano_5C.mp3
/kb/a/piano/piano_5Cs.mp3
/kb/a/piano/piano_5D.mp3
/kb/a/piano/piano_5Ds.mp3
/kb/a/piano/piano_5E.mp3
/kb/a/piano/piano_5F.mp3
/kb/a/piano/piano_5Fs.mp3
/kb/a/piano/piano_5G.mp3
/kb/a/piano/piano_6A.mp3
/kb/a/piano/piano_6As.mp3
/kb/a/piano/piano_6B.mp3
/kb/a/piano/piano_7C.mp3


/kb/aud/mp3/abba-andante_andante.mp3
/kb/aud/mp3/abba-fernando.mp3
/kb/aud/mp3/Beatles - You've Got To Hide Your Love Away.mp3
/kb/aud/mp3/caberet-money,_money.mp3
/kb/aud/mp3/caberet-wilkommen.mp3
/kb/aud/mp3/Can't Help Falling In Love.mp3
/kb/aud/mp3/cold-stupid_girl.mp3
/kb/aud/mp3/crystal-stevie_nicks_1.mp3
/kb/aud/mp3/danny_kaye-inchworm.mp3
/kb/aud/mp3/david_bowie-changes.mp3
/kb/aud/mp3/david_bowie-golden_years.mp3
/kb/aud/mp3/dietrich-lili_marleen-german.mp3
/kb/aud/mp3/dj_ethnic_barry_sisters_-_bei_mir_bistu_shain.mp3
/kb/aud/mp3/dj_ethnic_barry_sisters_-_ich_hob_dich_zifeel_lieb.mp3
/kb/aud/mp3/dj_ethnic_barry_sisters_-_main_glick.mp3
/kb/aud/mp3/dj_ethnic_barry_sisters_-_my_yiddishe_mama.mp3
/kb/aud/mp3/dj_opera_carreras_domingo_pavarotti_-_nessun_dorma.mp3
/kb/aud/mp3/dj_opera_rodgers_&_hammerstein_-_the_sound_of_music_-_edelweiss.mp3
/kb/aud/mp3/dori_caymmi-o_bem_do_mar.mp3
/kb/aud/mp3/doris_day-que_sera_sera.mp3
/kb/aud/mp3/doris_day-secret_love.mp3
/kb/aud/mp3/doris_day-you_are_my_sunshine.mp3
/kb/aud/mp3/elton_jhon-nikita.mp3
/kb/aud/mp3/emmylou_harris-here,_there_and_everywhere.mp3
/kb/aud/mp3/emmylou_harris-like_an_old_fashioned_waltz.mp3
/kb/aud/mp3/emmylou_harris_john_denver-wild_montana_skies.mp3
/kb/aud/mp3/Eva Cassidy - Ain't No Sunshine.mp3
/kb/aud/mp3/eva_cassidy-fever.mp3
/kb/aud/mp3/fuck.mp3
/kb/aud/mp3/glad_all_over.mp3
/kb/aud/mp3/glen_campbell-gentle_on_my_mind_1968.mp3
/kb/aud/mp3/grantorino_full.mp3
/kb/aud/mp3/i_want_to_hold_your_hand.mp3
/kb/aud/mp3/incomplete_eva_cassidy-nightbird.mp3
/kb/aud/mp3/Iris Dement - Easy's Getting Harder Every Day.mp3
/kb/aud/mp3/jesse_colin_young-songbird.mp3
/kb/aud/mp3/jesse_colin_young_sunlight-1976.mp3
/kb/aud/mp3/jimi_hendrix-national_anthem.mp3
/kb/aud/mp3/john_denver_placido_doming-perhaps_love.mp3
/kb/aud/mp3/ka2.mp3
/kb/aud/mp3/king_of_the_road.mp3
/kb/aud/mp3/kingston_town-harry_belafonte.mp3
/kb/aud/mp3/Lady Antebellum - American Honey.mp3
/kb/aud/mp3/lady_antebellum-need_you_now_hq_[lyrics].mp3
/kb/aud/mp3/louie_armstrong-what_a_wonderful_world.mp3
/kb/aud/mp3/love_me_tender.mp3
/kb/aud/mp3/Marlene Dietrich - Muss i' denn.mp3
/kb/aud/mp3/marlene_dietrich_falling_in_love_again_english.mp3
/kb/aud/mp3/mitch_miller-you_are_my_sunshine.mp3
/kb/aud/mp3/mockin_bird_hill_patti_page.mp3
/kb/aud/mp3/mona_lisa.mp3
/kb/aud/mp3/music_13119_benny_benassi_satisfaction.mp3
/kb/aud/mp3/music_141639_pure_beauty.mp3
/kb/aud/mp3/music_145075_bas_couture.mp3
/kb/aud/mp3/music_922401610_beauty_on_fire.mp3
/kb/aud/mp3/music_you_dont_own_me_235310380.mp3
/kb/aud/mp3/never_alone-lady_antebellum..mp3
/kb/aud/mp3/patsy_cline-the_wayward_wind.mp3
/kb/aud/mp3/pattie_page-how_much_is_that_doggie_in_the_window.mp3
/kb/aud/mp3/procol_harem-a_whiter_shade_of_pale.mp3
/kb/aud/mp3/quando,_quando,_quando-engelberthumperdinck.mp3
/kb/aud/mp3/Richie_Havens_-_03_-_My_Father's_Shoes.mp3
/kb/aud/mp3/Richie_Havens_-_05_-_The_Hawk.mp3
/kb/aud/mp3/Richie_Havens_-_07_-_The_Times_They_Are_a-Changin'.mp3
/kb/aud/mp3/Richie_Havens_-_10_-_How_the_Nights_Can_Fly.mp3
/kb/aud/mp3/Richie_Havens_-_13_-_At_a_Glance.mp3
/kb/aud/mp3/righteous_brothers-soul_and_inspiration.mp3
/kb/aud/mp3/scatterbrain-freddy_martin_orch.mp3
/kb/aud/mp3/smokey_robinson-ooh_baby_baby.mp3
/kb/aud/mp3/sound.mp3
/kb/aud/mp3/supermassive_black_hole_lyrics_and_twilight_videos.mp3
/kb/aud/mp3/the_platters_the_great_pretender.mp3
/kb/aud/mp3/third_eye_blind-_never_let_you_go.mp3
/kb/aud/mp3/trick_daddy-take_it_to_the_house.mp3
/kb/aud/mp3/Trio_-_Bum_Bum_1983_NDW.mp3
/kb/aud/mp3/Trio_-_Da_Da_Da_clipe_.mp3
/kb/aud/mp3/TRIO_-_Girl_Girl_Girl.mp3
/kb/aud/mp3/Trio_-_Herz_ist_Trumpf_-_1983.mp3
/kb/aud/mp3/Trio_-_Sabine.mp3
/kb/aud/mp3/Trio_-_Turaluraluralu.mp3
/kb/aud/mp3/Trio_-_Tutti-Frutti_-_NDW_-_1984.mp3
/kb/aud/mp3/trio_Vogel_der_Nacht.mp3
/kb/aud/mp3/twilight_soundtrack.mp3
/kb/aud/mp3/Volare.mp3
/kb/aud/mp3/waits-cemetery_polka-full.mp3
/kb/aud/mp3/waits-come_on_up_to_the_house.mp3
/kb/aud/mp3/waits-house_where_nobody_lives.mp3
/kb/aud/mp3/waits-long_way_home.mp3
/kb/aud/mp3/waits-lullaby-1.mp3
/kb/aud/mp3/waits-time.mp3
/kb/aud/mp3/weihnachtslieder-nicole-still_still_still.mp3
/kb/aud/mp3/wenn_die_soldaten-marlene_dietrich.mp3
/kb/aud/mp3/What's new pussycat.mp3
/kb/aud/mp3/Why_Dont_You_Do_Right_.mp3
/kb/aud/mp3/wish_we_were_back_in_missouri_em.mp3
/kb/aud/mp3/yellow_bird.mp3
/kb/aud/mp3/You Can't Hurry Love.mp3
/kb/aud/mp3/young_love.mp3
/ko/h5/lib/av/aud/effects/beeps/alarm.mp3
/ko/h5/lib/av/aud/effects/beeps/alarm2.mp3
/ko/h5/lib/av/aud/effects/beeps/alarm3.mp3
/ko/h5/lib/av/aud/effects/beeps/buzz.mp3
/ko/h5/lib/av/aud/effects/beeps/compute_ack.mp3
/ko/h5/lib/av/aud/effects/beeps/compute_ack_long.mp3
/ko/h5/lib/av/aud/effects/beeps/ping.mp3
/ko/h5/lib/av/aud/effects/beeps/ping2.mp3
/ko/h5/lib/av/aud/effects/beeps/retro_beep1.mp3
/ko/h5/lib/av/aud/effects/beeps/retro_beep2.mp3
/ko/h5/lib/av/aud/effects/beeps/super_ping.mp3
/ko/h5/lib/av/aud/effects/comm/alien_comm.mp3
/ko/h5/lib/av/aud/effects/comm/alien_comm2.mp3
/ko/h5/lib/av/aud/effects/comm/radio_noise.mp3
/ko/h5/lib/av/aud/effects/comm/radio_signal.mp3
/ko/h5/lib/av/aud/effects/comm/radio_tune.mp3
/ko/h5/lib/av/aud/effects/environmental/cloaking_device.mp3
/ko/h5/lib/av/aud/effects/environmental/computing.mp3
/ko/h5/lib/av/aud/effects/environmental/drop_item.mp3
/ko/h5/lib/av/aud/effects/environmental/engine.mp3
/ko/h5/lib/av/aud/effects/environmental/lightning1.mp3
/ko/h5/lib/av/aud/effects/environmental/lost_in_time.mp3
/ko/h5/lib/av/aud/effects/environmental/low_bass_note.mp3
/ko/h5/lib/av/aud/effects/environmental/low_flange_rez.mp3
/ko/h5/lib/av/aud/effects/environmental/low_hum.mp3
/ko/h5/lib/av/aud/effects/environmental/onimous_echo.mp3
/ko/h5/lib/av/aud/effects/environmental/quasar.mp3
/ko/h5/lib/av/aud/effects/environmental/scanner.mp3
/ko/h5/lib/av/aud/effects/environmental/war_drum.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion2.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion3.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion4.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion5.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion6.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion7.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion8.mp3
/ko/h5/lib/av/aud/effects/explosions/low_explosion.mp3
/ko/h5/lib/av/aud/effects/misc/boss_transform.mp3
/ko/h5/lib/av/aud/effects/misc/boup.mp3
/ko/h5/lib/av/aud/effects/misc/brain_fry.mp3
/ko/h5/lib/av/aud/effects/misc/deploy_mine.mp3
/ko/h5/lib/av/aud/effects/misc/deploy_radio.mp3
/ko/h5/lib/av/aud/effects/misc/deploy_web.mp3
/ko/h5/lib/av/aud/effects/misc/electric_drop.mp3
/ko/h5/lib/av/aud/effects/misc/final_boss_die.mp3
/ko/h5/lib/av/aud/effects/misc/get_item.mp3
/ko/h5/lib/av/aud/effects/misc/get_item2.mp3
/ko/h5/lib/av/aud/effects/misc/item_appear.mp3
/ko/h5/lib/av/aud/effects/misc/item_appear2.mp3
/ko/h5/lib/av/aud/effects/misc/lock_on.mp3
/ko/h5/lib/av/aud/effects/misc/materialize.mp3
/ko/h5/lib/av/aud/effects/misc/power_up.mp3
/ko/h5/lib/av/aud/effects/misc/robot_error.mp3
/ko/h5/lib/av/aud/effects/misc/robot_no.mp3
/ko/h5/lib/av/aud/effects/misc/whiplash.mp3
/ko/h5/lib/av/aud/effects/misc/wobble.mp3
/ko/h5/lib/av/aud/effects/misc/wobble2.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot1.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot2.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot3.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot4.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot5.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot6.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot7.mp3
/ko/h5/lib/av/aud/effects/projectiles/clash_ricochet.mp3
/ko/h5/lib/av/aud/effects/projectiles/hit2.mp3
/ko/h5/lib/av/aud/effects/projectiles/hit3.mp3
/ko/h5/lib/av/aud/effects/projectiles/hit4.mp3
/ko/h5/lib/av/aud/effects/projectiles/hit5.mp3
/ko/h5/lib/av/aud/effects/projectiles/ion_cannon.mp3
/ko/h5/lib/av/aud/effects/projectiles/ion_cannon_light.mp3
/ko/h5/lib/av/aud/effects/projectiles/laser.mp3
/ko/h5/lib/av/aud/effects/projectiles/missile.mp3
/ko/h5/lib/av/aud/effects/projectiles/pea_shooter.mp3
/ko/h5/lib/av/aud/effects/projectiles/photon.mp3
/ko/h5/lib/av/aud/effects/projectiles/quantum_missile.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet2.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet3.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet4.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet5.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet6.mp3
/ko/h5/lib/av/aud/effects/projectiles/scatter_shot.mp3
/ko/h5/lib/av/aud/effects/projectiles/scatter_shot2.mp3
/ko/h5/lib/av/aud/effects/projectiles/super_missile.mp3
/ko/h5/lib/av/aud/effects/projectiles/super_missile2.mp3
/ko/h5/lib/av/aud/effects/space/black_hole.mp3
/ko/h5/lib/av/aud/effects/space/cosmic_string.mp3
/ko/h5/lib/av/aud/effects/space/enemy_launch_warmup.mp3
/ko/h5/lib/av/aud/effects/space/enemy_swoop_down.mp3
/ko/h5/lib/av/aud/effects/space/enemy_wake_up.mp3
/ko/h5/lib/av/aud/effects/space/engine_damage.mp3
/ko/h5/lib/av/aud/effects/space/engine_warmup.mp3
/ko/h5/lib/av/aud/effects/space/flush_garbage.mp3
/ko/h5/lib/av/aud/effects/space/hyperdrive_abort.mp3
/ko/h5/lib/av/aud/effects/space/hyperdrive_abort2.mp3
/ko/h5/lib/av/aud/effects/space/hyperdrive_warmup.mp3
/ko/h5/lib/av/aud/effects/space/pressurize_airlock.mp3
/ko/h5/lib/av/aud/effects/space/shield_activate.mp3
/ko/h5/lib/av/aud/effects/space/shields_recharged.mp3
/ko/h5/lib/av/aud/effects/space/shields_recharged2.mp3
/ko/h5/lib/av/aud/effects/space/ship_dock.mp3
/ko/h5/lib/av/aud/effects/space/ships_collide.mp3
/ko/h5/lib/av/aud/effects/space/space_bug_scream.mp3
/ko/h5/lib/av/aud/effects/space/space_clank.mp3
/ko/h5/lib/av/aud/effects/space/space_dog_bark.mp3
/ko/h5/lib/av/aud/effects/space/space_drip.mp3
/ko/h5/lib/av/aud/effects/space/space_glug.mp3
/ko/h5/lib/av/aud/effects/space/space_ribbit.mp3
/ko/h5/lib/av/aud/effects/space/space_vacuum.mp3
/ko/h5/lib/av/aud/effects/space/space_wind.mp3
/ko/h5/lib/av/aud/effects/space/super_web_active.mp3
/ko/h5/lib/av/aud/effects/switches/switch.mp3
/ko/h5/lib/av/aud/effects/switches/switch2.mp3
/ko/h5/lib/av/aud/effects/switches/switch3.mp3
/ko/h5/lib/av/aud/effects/switches/switch4.mp3
/ko/h5/lib/av/aud/effects/switches/switch5.mp3
/ko/h5/lib/av/aud/effects/ui/blurn.mp3
/ko/h5/lib/av/aud/effects/ui/blurn_shhh.mp3
/ko/h5/lib/av/aud/effects/ui/notify.mp3
/ko/h5/lib/av/aud/effects/ui/select.mp3
/ko/h5/lib/av/aud/effects/ui/select2.mp3
/ko/h5/lib/av/aud/effects/ui/select3.mp3
/ko/h5/lib/av/aud/effects/ui/select4.mp3
/ko/h5/lib/av/aud/effects/ui/select5.mp3
/ko/h5/lib/av/aud/effects/ui/shunt.mp3
/ko/srv/blab/aud_blab7/sound_001.mp3
/ko/srv/blab/aud_blab7/sound_002.mp3
/ko/srv/blab/aud_blab7/sound_003.mp3
/ko/srv/blab/aud_blab7/sound_004.mp3
/ko/srv/blab/aud_blab7/sound_005.mp3
/ko/srv/blab/aud_blab7/sound_006.mp3
/ko/srv/blab/aud_blab7/sound_007.mp3
/ko/srv/blab/aud_blab7/sound_008.mp3
/ko/srv/blab/aud_blab7/sound_009.mp3
/ko/srv/blab/aud_blab7/sound_010.mp3
/ko/srv/blab/aud_blab7/sound_011.mp3
/ko/srv/blab/aud_blab7/sound_012.mp3
/ko/srv/blab/aud_blab7/sound_013.mp3
/ko/srv/blab/aud_blab7/sound_014.mp3
/ko/srv/blab/aud_blab7/sound_015.mp3
/ko/srv/blab/aud_blab7/sound_016.mp3
/ko/srv/blab/aud_blab7/sound_017.mp3
/ko/srv/blab/aud_blab7/sound_018.mp3
/ko/srv/blab/aud_blab7/sound_019.mp3
/ko/srv/blab/aud_blab7/sound_020.mp3
/ko/srv/blab/aud_blab7/sound_021.mp3
/ko/srv/blab/aud_blab7/sound_022.mp3
/ko/srv/blab/aud_blab7/sound_023.mp3
/ko/srv/blab/aud_blab7/sound_024.mp3
/ko/srv/blab/aud_blab7/sound_025.mp3
/ko/srv/blab/aud_blab7/sound_026.mp3
/ko/srv/blab/aud_blab7/sound_027.mp3
/ko/srv/blab/aud_blab7/sound_028.mp3
/ko/srv/blab/aud_blab7/sound_029.mp3
/ko/srv/blab/aud_blab7/sound_030.mp3
/ko/srv/blab/aud_blab7/sound_031.mp3
/ko/srv/blab/aud_blab7/sound_032.mp3
/ko/srv/blab/aud_blab7/sound_033.mp3
/ko/srv/blab/aud_blab7/sound_034.mp3
/ko/srv/blab/aud_blab7/sound_035.mp3
/ko/srv/blab/aud_blab7/sound_036.mp3
/ko/srv/blab/aud_blab7/sound_037.mp3
/ko/srv/blab/aud_blab7/sound_038.mp3
/ko/srv/blab/aud_blab7/sound_039.mp3
/ko/srv/blab/aud_blab7/sound_040.mp3
/ko/srv/blab/aud_blab7/sound_041.mp3
/ko/srv/blab/aud_blab7/sound_042.mp3
/ko/srv/blab/aud_blab7/sound_043.mp3
/ko/srv/blab/aud_blab7/sound_044.mp3
/ko/srv/blab/aud_blab7/sound_045.mp3
/ko/srv/blab/aud_blab7/sound_046.mp3
/ko/srv/blab/aud_blab7/sound_047.mp3
/ko/srv/blab/aud_blab7/sound_048.mp3
/ko/srv/blab/aud_blab7/sound_049.mp3
/ko/srv/blab/aud_blab7/sound_050.mp3
/ko/srv/blab/aud_blab7/sound_051.mp3
/ko/srv/blab/aud_blab7/sound_052.mp3
/ko/srv/blab/aud_blab7/sound_053.mp3
/ko/srv/blab/aud_blab7/sound_054.mp3
/ko/srv/blab/aud_blab7/sound_055.mp3
/ko/srv/blab/aud_blab7/sound_056.mp3
/ko/srv/blab/aud_blab7/sound_057.mp3
/ko/srv/blab/aud_blab7/sound_058.mp3
/ko/srv/blab/aud_blab7/sound_059.mp3
/ko/srv/blab/aud_blab7/sound_060.mp3
/ko/srv/blab/aud_blab7/sound_061.mp3
/ko/srv/blab/aud_blab7/sound_062.mp3
/ko/srv/blab/aud_blab7/sound_063.mp3
/ko/srv/blab/aud_blab7/sound_064.mp3
/ko/srv/blab/aud_blab7/sound_065.mp3
/ko/srv/blab/aud_blab7/sound_066.mp3
/ko/srv/blab/aud_blab7/sound_067.mp3
/ko/srv/blab/aud_blab7/sound_068.mp3
/ko/srv/blab/aud_blab7/sound_069.mp3
/ko/srv/blab/aud_blab7/sound_070.mp3
/ko/srv/blab/aud_blab7/sound_071.mp3
/ko/srv/blab/aud_blab7/sound_072.mp3
/ko/srv/blab/aud_blab7/sound_073.mp3
/ko/srv/blab/aud_blab7/sound_074.mp3
/ko/srv/blab/aud_blab7/sound_075.mp3
/ko/srv/blab/aud_blab7/sound_076.mp3
/ko/srv/blab/aud_blab7/sound_077.mp3
/ko/srv/blab/aud_blab7/sound_078.mp3
/ko/srv/blab/aud_blab7/sound_079.mp3
/ko/srv/blab/aud_blab7/sound_080.mp3
/ko/srv/blab/aud_blab7/sound_081.mp3
/ko/srv/blab/aud_blab7/sound_082.mp3
/ko/srv/blab/aud_blab7/sound_083.mp3
/ko/srv/blab/aud_blab7/sound_084.mp3
/ko/srv/blab/aud_blab7/sound_085.mp3
/ko/srv/blab/aud_blab7/sound_086.mp3
/ko/srv/blab/aud_blab7/sound_087.mp3
/ko/srv/blab/aud_blab7/sound_088.mp3
/ko/srv/blab/aud_blab7/sound_089.mp3
/ko/srv/blab/aud_blab7/sound_090.mp3
/ko/srv/blab/aud_blab7/sound_091.mp3
/ko/srv/blab/aud_blab7/sound_092.mp3
/ko/srv/blab/aud_blab7/sound_093.mp3
/ko/srv/blab/aud_blab7/sound_094.mp3
/ko/srv/blab/aud_blab7/sound_095.mp3
/ko/srv/blab/aud_blab7/sound_096.mp3
/ko/srv/blab/aud_blab7/sound_097.mp3
/ko/srv/blab/aud_blab7/sound_098.mp3
/ko/srv/blab/aud_blab7/sound_099.mp3
/ko/srv/blab/aud_blab7/sound_100.mp3
/ko/srv/blab/aud_blab7/sound_101.mp3
/ko/srv/blab/ui/sounds/1.mp3
/ko/srv/blab/ui/sounds/2.mp3
/ko/srv/blab/ui/sounds/3.mp3
/ko/srv/blab/ui/sounds/4.mp3
/ko/srv/blab/ui/sounds/5.mp3
/ko/srv/blab/ui/sounds/6.mp3
/ko/srv/blab/ui/sounds/7.mp3
/ko/srv/blab/ui/sounds/8.mp3
/ko/srv/blab/ui/sounds/9.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/alarm.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/alarm2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/alarm3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/buzz.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/compute_ack.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/compute_ack_long.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/ping.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/ping2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/retro_beep1.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/retro_beep2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/super_ping.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/alien_comm.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/alien_comm2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/radio_noise.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/radio_signal.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/radio_tune.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/cloaking_device.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/computing.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/drop_item.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/engine.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/lightning1.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/lost_in_time.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/low_bass_note.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/low_flange_rez.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/low_hum.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/onimous_echo.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/quasar.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/scanner.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/war_drum.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion6.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion7.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion8.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/low_explosion.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/boss_transform.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/boup.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/brain_fry.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/deploy_mine.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/deploy_radio.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/deploy_web.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/electric_drop.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/final_boss_die.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/get_item.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/get_item2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/item_appear.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/item_appear2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/lock_on.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/materialize.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/power_up.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/robot_error.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/robot_no.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/whiplash.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/wobble.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/wobble2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot1.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot6.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot7.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/clash_ricochet.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/hit2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/hit3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/hit4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/hit5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ion_cannon.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ion_cannon_light.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/laser.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/missile.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/pea_shooter.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/photon.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/quantum_missile.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet6.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/scatter_shot.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/scatter_shot2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/super_missile.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/super_missile2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/black_hole.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/cosmic_string.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/enemy_launch_warmup.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/enemy_swoop_down.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/enemy_wake_up.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/engine_damage.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/engine_warmup.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/flush_garbage.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/hyperdrive_abort.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/hyperdrive_abort2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/hyperdrive_warmup.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/pressurize_airlock.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/shield_activate.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/shields_recharged.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/shields_recharged2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/ship_dock.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/ships_collide.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_bug_scream.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_clank.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_dog_bark.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_drip.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_glug.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_ribbit.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_vacuum.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_wind.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/super_web_active.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/blurn.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/blurn_shhh.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/notify.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/shunt.mp3
/ko/svc/effectgames/ht/sounds/shutter.mp3
/ko/svc/js/effectgm/htdocs/sounds/shutter.mp3
/ko/svc/js/kojs/kojs_3js_stemkoski/7DFPS/audio/deep-solar-wind.mp3
/ko/svc/js/kojs/kojs_threejs/examples/sounds/358232_j_s_song.mp3
/ko/svc/js/kojs/kojs_threejs/examples/sounds/376737_Skullbeatz___Bad_Cat_Maste.mp3
/ko/svc/js/stemkoskijs/7DFPS/audio/deep-solar-wind.mp3
/ko/svc/js/threejs/examples/sounds/358232_j_s_song.mp3
/ko/svc/js/threejs/examples/sounds/376737_Skullbeatz___Bad_Cat_Maste.mp3
/ko/svc/js/threejs-tetris/music/cash.mp3
/ko/svc/js/threejs-tetris/music/collision.mp3
/ko/svc/js/threejs-tetris/music/gameover.mp3
/ko/svc/js/threejs-tetris/music/move.mp3
/ko/svc/jsdoit/preload/_assets/audio/Thunder.mp3
/ko/svc/jsdoit/preload/_assets/static/CabinBoy.mp3
/ko/svc/tests/easeljs/_assets/audio/bionic.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/break.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/death.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/music.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/shot.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/spawn.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/BodySlam.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/DirtSlide.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/EnemyHit.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/garywalk_chill.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/HitHard4.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/jump4.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/LaserGunShot.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/PressPlay.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/TunnelCollision.mp3
/ko/svc/tests/sandbox/ToolkitBannerAd/sounds/EnemyHit.mp3
/ko/svc/tests/sandbox/ToolkitBannerAd/sounds/LaserGunShot.mp3
/ko/svc/tests/soundjs/_assets/audio/05-Binrpilot-Underground.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-AudioSprite.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-Break.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-Death.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-Shot.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-Spawn.mp3
/ko/svc/tests/soundjs/_assets/audio/GU-StealDaisy.mp3
/ko/svc/tests/soundjs/_assets/audio/Humm.mp3
/ko/svc/tests/soundjs/_assets/audio/M-GameBG.mp3
/ko/svc/tests/soundjs/_assets/audio/R-Damage.mp3
/ko/svc/tests/soundjs/_assets/audio/S-Damage.mp3
/ko/svc/tests/soundjs/_assets/audio/Thunder1.mp3
/ko/svc/tests/soundjs/_assets/audio/ToneWobble.mp3
/ko/svc/tests/soundjs/_assets/audio/U-CabinBoy3.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/break.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/death.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/music.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/shot.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/spawn.mp3
/us0/2007/konet.ka5/httpdocs/mp3/net/silent.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND104.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND105.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND108.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND111.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND112.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND12.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND13.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND131.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND136.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND14.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND16.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND17.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND18.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND181.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND19.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND20.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND21.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND22.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND24.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND240.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND243.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND25.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND26.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND27.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND28.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND29.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND30.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND34.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND35.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND36.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND38.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND39.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND42.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND43.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND45.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND49.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND49D.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND5.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND50.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND528.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND53.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND54.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND55.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND560.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND563.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND57.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND58.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND6.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND65.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND68.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND7.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND713.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND735.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND8.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND827.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND9.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND999.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_space1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_space2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_tek1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_tek2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_tek3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_tek4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qabitem.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qabmenu.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qclick.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qmem.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qmem2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qmem3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qmem4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen10.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen5.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen6.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen7.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen8.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen9.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_2000.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_99.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_bell.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_birds.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_chimes.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_IPO.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_newsbreak.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_rickety_mineshaft_of_riches.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qrecord.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qrecord1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/alarm.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/beep.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/bell.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/bells.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/blip.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/bubbles.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/busy.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/chord.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/click.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/click2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/click3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/clink.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/clonk.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/cork.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/crumpling.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/cymbal.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/doorbell.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/exclamation.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/fall.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/flipflop.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/gong.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/metalcling.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/metalclonk.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/phaser.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/ping.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/sissors.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/slip.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/taps.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/toilet.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/BEAM.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/BIRDS.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/CRICKET.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/KNOCK.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/MACHINE.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/PUTER.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_001.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_002.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_003.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_004.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_005.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_006.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_007.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_008.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_009.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_010.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_011.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_012.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_013.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_014.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_015.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_016.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_017.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_018.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_019.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_020.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_021.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_022.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_023.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_024.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_025.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_026.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_027.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_028.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_029.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_030.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_031.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_032.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_033.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_034.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_035.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_036.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_037.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_038.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_039.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_040.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_041.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_042.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_043.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_044.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_045.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_046.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_047.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_048.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_049.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_050.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_051.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_052.mp3
/vhosts1/chapel.ka6/httpdocs/ko/shoutcast/Start_Today_Again.mp3
/vhosts1/ka5/httpdocs/doctorjoe/docjoe_dan_Tori_Amos_-_Yes,_Anastasia.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/A Hard Day's Night.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Always On My Mind.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Andrew Sisters- Bei Mir Bist du Schon.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Auctioneer.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Banana Boat Song.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Benny Goodman - Bei Mir Bist Du Schon.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Big girls don't cry.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Bless The Beasts And Children.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Cab Calloway - Minnie The Moocher.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Can't Help Falling In Love.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Cherry Pink & Apple Blossom White.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/CherryCherry.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Connie Frances - Who's Sorry Now.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Connie Frances Where the boys ARE.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Connie Francis - Mama.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Crazy.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_bach_-_air_for_g_string.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_bach_-_brandenburg_concerto_3_allegro.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_canon_in_d.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_chopin_-_nocturne_in_e_flat.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_eugene_ormandy_-_grande_valse.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_humoresque.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_hungarian_dance_no_16_-_con_moto.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_hungarian_dance_no_5.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_hungarian_dance_no_7_in_a_-_brahms.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_monti-csardas.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_mozart-variation.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_mozart_-_moonlight_sonata.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_offenbach_-_tales_of_hoffmann,_barcarolle.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_rhapsody_on_a_theme_of_paganini.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_andrew_sisters-_bei_mir_bist_du_schon.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_a_byssele.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_bei_mir_bistu_shain.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_chiribim_chiribom.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_fargess_mich_nit.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_ich_hob_dich_zifeel_lieb.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_main_glick.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_ochy_chernye.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_papirossen.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_rumeine.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_shabes_lich.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_tum_balalaika.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_vie_a_heen_zol_ich_gayn.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_chassidic_melody__-_netania_davrath.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_chieu_matxcova.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_ein_keloheinu.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_eli_eli.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_eretz_eretz.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_exodus-havah-nagilah_-_connie-francis.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_inzenyrska.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_theodore_bikel_-_mayn_shtetele_belz.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_tumalalaika_-_herschel_bernardi.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_yome,_yome_-_shoshana_damari.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_andrea_bocelli_&_celine_dion_-_the_prayer.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_andrea_bocelli_&_sarah_brightman_-_time_to_say_goodbye.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_andrea_bocelli_-_puccini_-_nessun_dorma.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_beverly_sills_-_richard_strauss_-_breit_uber_mein_haupt.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_carreras_domingo_pavarotti_-_nessun_dorma.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_libiamo-libiamo-carlo-de-monte-victoria-de-los-angeles.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_luciano-pavarotti-una-furtiva-lagrima.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_mario_lanza_-_arriverderci_roma.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_rodgers_&_hammerstein_-_the_sound_of_music_-_edelweiss.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_sarah_brightman_&_andrea_bocelli_-_time_to_say_goodbye.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_sarah_brightman_-_hijo_de_la_luna.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Doris Day - Que Sera Sera.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Doris Day - Secret Love.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Doris Day - You Are My Sunshine.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Ella Fitzgerald - Heart and Soul.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Frank Sinatra - One for my baby (and one more for the road) .mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Frank Sinatra - The Way You Look Tonight.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Frankie Lane - Cry of the wild goose.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Girl, You[ll Be a WomanSoon.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Good Night Irene.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Great Pretender (Platters).mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Green Green Grass Of Home.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/High Noon - Frankie Lane.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Honeycomb.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/I Want To Hold Your Hand.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/If you love me-BrendaLee.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/In The Good Old Summertime.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Kay Kyser,with Ish Kabibble, Harry Babbitt, Sally Mason - Three little Fishies.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/King of the Road.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/la-paloma - connie-francis.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Lili Marlene - Marlene Dietrich.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Little Sir Echo - Horace Heidt.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Louie Armstrong - What a Wonderful World.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Louie Louie - Kingsmen.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Love Me Tender.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Memories Are Made Of This.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Mister Sandman - The Chordettes .mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/mockin_bird_hill_patti_page.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Mona Lisa.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/My Heart Belongs To DaddyK.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Norwegian Wood.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/oh_lonesome_me_connie_francis.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Pattie Page - How Much Is That Doggie In The Window.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Pattie Page - Tennessee Waltz.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Quando, Quando, Quando-EngelbertHumperdinck.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Ramblin'_Rose.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Rosemary Clooney - This Ole House.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Scatterbrain - Freddy Martin Orch.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/September Morn.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/sherry.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Sons of The Pioneers _ Cool Water.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Springtime in the Rockies - Will Carter .mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Standing On The Corner.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Sukiyaki.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Tennessee  Waltz.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/That's Amore.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/The Platters  The Great Pretender.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/The Platters - Unchained Melody.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/They Can't Take That Away From Me.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Tiny Bubbles & Pearly shells.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/topsy.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Volare.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/What's new pussycat.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Why_Dont_You_Do_Right_.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/winchester_cathedral_petula_clark.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/windy.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Yellow Bird.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Yesterday.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/You Can't Hurry Love.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/You've lost That Lovin' Feeling .mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/you-send-me.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/YouDon'tBringMeFlowers.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/young_love.mp3
/vhosts1/ka5/httpdocs/zencart/media/thehunter.mp3
/vhosts1/ka5/inbox/brell77_snip22_carousel.mp3
/vhosts1/ka5/ko/shoutcast/scpromo.mp3
/vhosts1/ka5/ko/shoutcast/Start_Today_Again.mp3
/vhosts1/ka5/ko/shoutcast/test1.mp3
/vhosts1/konet.org/public_html/ko/shoutcast/scpromo.mp3
/vhosts1/konet.org/public_html/ko/shoutcast/Start_Today_Again.mp3
/vhosts1/konet.org/public_html/ko/shoutcast/test1.mp3
/vhosts1/konet.org/public_html/zencart/media/thehunter.mp3
`;







kolists['av'] = 
`/index1_avril.mp4
/index0.mp4
/index1.mp4
/index2.mp4
/index3.mp4
/index4.mp4
/index5.mp4
/index6.mp4
/index7.mp4
/index8.mp4
/index9.mp4
/index10.mp4
/index11.mp4
/av.mp4
/index.mp4
/index1.mp4
/index2.mp4
/index3.mp4
/index4.mp4
/kb/vid/youb/tech_petdrone_skydio_r1_review.mp4
/kb/vid/youb/tech_unboxing_led_500.mp4
/kb/vid/youb/tech_thermoelectric_cooler_pelier.mp4
/kb/vid/youb/dance_rtsf2019_dietmar_n_nellia?never_stop_jiving.mp4
/kb/vid/youb/ dance_butoh_japan.mp4
/kb/vid/youb/dance_peeping_tom_le_salon.mp4
/kb/jtfdc/vid/jtfdc_20190124_1350_stalkaround_lwhitesuv_jtf30in_jkwii.mp4
/kb/jtfdc/vid/jtfdc_20190122_2200_stalkaround_jtf28in_drivewaytraffic.mp4
/kb/vid/youb/01_sixto_rodriguez_sandrevan_lullabylifestyles_[coming_from_.mp4
/kb/vid/youb/02_sixto_rodriguez_i_think_of_you.mp4
/kb/vid/youb/48_roses_mariachi_el_bronx_jay_leno_2011.mp4
/kb/vid/youb/bonnie_raitt_aaron_neville_gregg_allman_tell_it_like_it.mp4
/kb/vid/youb/eva_cassidyaint_no_sunshine.mp4
/kb/vid/youb/eva_cassidyfields_of_gold.mp4
/kb/vid/youb/faithfullworking_class_hero-live.mp4
/kb/vid/youb/official_chrysler_and_bob_dylan_super_bowl_commercial_2017.mp4
/kb/vid/youb/richie_havens_i_was_educated_by_myself_with_lyrics.mp4
/kb/vid/youb/river_run_file24160428.mp4
/kb/vid/youb/steal_away_by_the_fureys.mp4
/kb/vid/youb/the_last_farewell_lyrics_roger_whittaker.mp4
/kb/vid/youb/we_believe_in_happy_ending_emmylou_harris_earl_thomas_co.mp4
/kb/vid/youb/yogis_Tibetan_Buddhism__Secrets_of_the_Yogis_of_Tibet_-_Part_5.mp4
/ko/svc/jsdoit/preload/_assets/static/video.mp4
/ko/svc/js/threejs/examples/textures/sintel.mp4
/3.mp4
/konet/index6.mp4
/konet/index2.mp4
/konet/index.mp4
/konet/index1.mp4
/konet/index3.mp4
/jkwii/jkwii.mp4
/jkwii/js/threejs/examples/textures/sintel.mp4
/index4.mp4
/ka1.mp4
/index8.mp4
/kb/byrdpuckers/vid/jtfdc_20171214_1215_jtf32out_jtf32_lyinglawerin.mp4
/kb/byrdpuckers/vid/huckleberry_hound_17_barbeque_hound.mp4
/kb/byrdpuckers/vid/jtfdc_201802261524_fiona_freeroam.mp4
/kb/byrdpuckers/vid/jtfdc_20180605_0500_jtf31_fiona_roam_go_home_doberwoofs_jkwiiabout.mp4
/kb/byrdpuckers/vid/roy_rogers_dont_fence_me_in.mp4
/kb/byrdpuckers/vid/jtf31.mp4
/kb/byrdpuckers/vid/jtfdc_20180604_1015_jtf31_fiona_qualitytime_unexpected_jkwii.mp4
/kb/byrdpuckers/vid/jtfdc_20180605_1956_bigtruck_n_cabletrailer_stalkback.mp4
/kb/byrdpuckers/vid/doghead_video.mp4
/kb/byrdpuckers/vid/jtfdc_20180607_1813_jtf31_fiona_freeroom_inyourface.mp4
/kb/byrdpuckers/vid/jtfdc_20180530_2034_jkwii_meet_househunters_nice.mp4
/kb/byrdpuckers/vid/jtfdc_20180505_1944_jkwiinkids_center_court.mp4
/kb/byrdpuckers/vid/jtfdc_20180605_1130_jkwii_lost_cable_truck.mp4
/kb/byrdpuckers/vid/jtf30.mp4
/kb/byrdpuckers/vid/jtfdc_20180226_1524_jtf31_fiona_freeroam.mp4
/kb/byrdpuckers/vid/jtfdc_20180605_1130_jkwii_lost_cabletrailer.mp4
/kb/byrdpuckers/vid/jtfdc_20171216_0610_woof.mp4
/kb/byrdpuckers/vid/jtfdc_20180606_1145_jtf40_driveway_byrdpucker_theft_threadt.mp4
/kb/byrdpuckers/vid/jtfdc_20180604_0630_jtf31_fiona_courttime_jkwii.mp4
/kb/byrdpuckers/vid/roy_rogers_dale_evans_sons_of_pioneers_medley.mp4
/kb/byrdpuckers/vid/jtfdc_20180605_1956_cabletrailer_backnice.mp4
/kb/byrdpuckers/vid/index1.mp4
/kb/vid/dutch/dutch_jacksonnocout_get_my_weight_up.mp4
/kb/vid/dutch/dutch_jackson_feat_jibbscity_on_fire_off_then.mp4
/kb/vid/dutch/dutch_jackson_39_new_single.mp4
/kb/vid/youb/Luciano Pavarotti & James Brown - It_s a man_s world (1080pHD).mp4
/kb/vid/youb/REAL_Men_Who_Stare_At_Goats.mp4
/kb/vid/youb/REAL_MEN_WHO_STARE_AT_GOATS_part_2.mp4
/kb/vid/youb/The_Magus_of_Denver.mp4
/kb/vid/youb/PAPA-OOM-MOW-MOW!.mp4
/kb/vid/youb/romania_lalala.mp4
/kb/vid/youb/Willem_de_Thouars,_Kun_Tao_Silat,_1996_Gulfport_School_of_Ta-0.mp4
/kb/vid/youb/Zappa_Plays_Zappa_-_Joe_s_Garage.mp4
/kb/vid/youb/dietric_coffee_ifile-164376962.mp4
/kb/vid/youb/Perhaps_Love_-_John_Denver_Placido_Domingo_legendado.mp4
/kb/vid/youb/Big_Data_-_Tim_Smith.mp4
/kb/vid/youb/OFFICIAL_Chrysler_and_Bob_Dylan_Super_Bowl_Commercial_2014.mp4
/kb/vid/youb/02_Sixto_Rodriguez_-_I_Think_Of_You_.wmv.mp4
/kb/vid/youb/waits-lullaby-1.mp4
/kb/vid/youb/Maria_Muldaur_-_Don_t_You_Feel_My_Leg.mp4
/kb/vid/youb/REAL_MEN_WHO_STARE_AT_GOATS_part_3.mp4
/kb/vid/youb/sharon_jones_100_days.mp4
/kb/vid/youb/Willem_de_Thouars,_Kun_Tao_Silat,_1996_Gulfport_School_of_Ta-1.mp4
/kb/vid/youb/dori_caymmi-o_bem_do_mar.mp4
/kb/vid/youb/01_Sixto_Rodriguez_-_Sandrevan_Lullaby-Lifestyles_[Coming_From_.mp4
/kb/vid/youb/Eleni_Mandell_-__quot_my_twin_quot__-_Live_at_The_EARL.mp4
/kb/vid/youb/Nat_King_Cole_All_Over_The_World.mp4
/kb/vid/youb/shania_tTwain_forever_and_for_always-world.mp4
/kb/vid/youb/harris_together_again_file-249732345.mp4
/kb/vid/youb/doghead_video.mp4
/kb/vid/youb/03_Rodriguez_-_I_ll_Slip_Away.mp4
/kb/vid/youb/Maria_Muldaur_-_My_Tennessee_Mountain_Home__Live_Recording_.mp4
/kb/vid/youb/Trio_-_Sabine.mp4
/kb/vid/youb/WHENEVER GOD SHINES HIS LIGHT - VAN MORRISON.mp4
/kb/vid/youb/eva_cassidy-aint_no_sunshine.mp4
/kb/vid/youb/Maria_Muldaur_-_A_Good_Man_is_Hard_To_Find.mp4
/kb/vid/youb/Eleni_Mandell_-__quot_makeout_king_quot_.mp4
/kb/vid/youb/put_the_lime_in_the_coconut.mp4
/kb/vid/youb/amywinehouse_love_losing_game_file-235773700.mp4
/kb/vid/youb/romania_hat.mp4
/kb/vid/youb/freddy_dreamers_telling_you_now_file-570139451.mp4
/kb/vid/youb/Rodriguez_-_I_Wonder.mp4
/kb/vid/youb/Dreaming As One - Richie Havens.mp4
/kb/vid/youb/trio_Vogel_der_Nacht.mp4
/kb/vid/youb/zara_leander_psycadeylic_file-252228034.mp4
/kb/vid/youb/waits-time3.mp4
/kb/vid/youb/lovers_concerto_file-380426037.mp4
/kb/vid/youb/mclean_starry_nights_file-805110482.mp4
/kb/vid/youb/harris_wheels_of_love_file-54997698.mp4
/kb/vid/youb/Nat_King_Cole_-_Je_Vous_Aime_Beaucoup.mp4
/kb/vid/youb/Master_Guy_Savelli_s_Kun_Tao__U.S._Special_Forces_SERE_Train.mp4
/kb/vid/youb/Rodriguez_cf11_Rich_Folks_Hoax.mp4
/kb/vid/youb/48_Roses_-_Mariachi_El_Bronx_(Jay_Leno,_2011).mp4
/kb/vid/youb/TRIO_-_Du_ich_w_r_so_gern_bei_dir.mp4
/kb/vid/youb/YouTube_-_Amy_Winehouse_-_You_Know_I_m_No_Good.mp4
/kb/vid/youb/waits-come_on_up_to_the_house.mp4
/kb/vid/youb/Maria_Muldaur_-_Handy_Man.mp4
/kb/vid/youb/nina_simone-dont_let_me_be_misunderstood.mp4
/kb/vid/youb/_Firedoglake_sen_byrd_fiddle.mp4
/kb/vid/youb/Trio_-_Turaluraluralu.mp4
/kb/vid/youb/yogis_Tibetan_Buddhism__Secrets_of_the_Yogis_of_Tibet_-_Part_5.mp4
/kb/vid/youb/eva_cassidy-fields_of_gold.mp4
/kb/vid/youb/Paul_Simon_-_You_Can_Call_Me_Al.mp4
/kb/vid/youb/river_run_file-24160428.mp4
/kb/vid/youb/The_Large_Hadron_Rap.mp4
/kb/vid/youb/Petula Clark-Windmills Of Your Mind (lyrics).mp4
/kb/vid/youb/waits-time_full.mp4
/kb/vid/youb/joe_south_want_to_go_home.mp4
/kb/vid/youb/you_dont_own_me.mp4
/kb/vid/youb/iris_sweet_is_thr_melody.mp4
/kb/vid/youb/thai_bowie.mp4
/kb/vid/youb/femme_pencak silat.mp4
/kb/vid/youb/Huckleberry_Hound_17_Barbeque_Hound_-_YouTube.mp4
/kb/vid/youb/harris_nobodys_darlin_file-996617010.mp4
/kb/vid/youb/buckingham_nicks-say_goodbye-live.mp4
/kb/vid/deepmind/ka1.mp4
/kb/vid/deepmind/eva_cassidy-aint_no_sunshine.mp4
/kb/kt/Muhammad_ali_freddy_starr.mp4
/kb/kt/000_Pakua_master_of_94_year_s_old.mp4
/kb/kt/willem_de_thouars_kuntao_silat_1996_gulfport_School_of_ta.mp4
/kb/kt/Grand_Master_TRAN_TIEN_-_Vietnam_Kung_Fu.mp4
/kb/kt/yogis_Of_Tibet_-_Rare_Documentary.mp4
/kb/kt/6_Magic_Moves_-_To_Win_a_STREET_FIGHT.mp4
/kb/kt/kt_000229_037.mp4
/kb/kt/Push_Hands_-_Tui_Shou.mp4
/kb/kt/muhammad_ali funny moments.mp4
/kb/kt/GOATS_DECLASSIFIED__The_True_Story_Behind_The_Men_Who_Stare_.mp4
/kb/kt/master_ken_Seminar_uk_2013.mp4
/kb/kt/funny_monkeys_vs_dogs_cats_compilation_2017.mp4
/kb/kt/kt_000229_033.mp4
/kb/kt/THE_DAY_THE_EARTH_STOOD_STILL_-_1951_KLAATU_S_FINAL_SPEECH.mp4
/kb/kt/kt_000229_013.mp4
/kb/kt/muhammad_ali_beutiful_interview_rip.mp4
/kb/kt/femme_pencak_silat.mp4
/kb/kt/kt_000229_019.mp4
/kb/kt/wudang_vibrating_palm.mp4
/kb/kt/kt_000229_014.mp4
/kb/kt/baguazhang_turning_the_circle_tree.mp4
/kb/kt/S01E23_the_testament_of_arkadia.mp4
/kb/kt/dethouars_willem_de_thouars_uncle_bill_in_Verona_NJ_1-11-18.mp4
/kb/kt/Willem_de_Thouars,_Kun_Tao_Silat,_1996_Gulfport_School_of_Ta-2.mp4
/kb/kt/Aikido_-_Demo_by_founder_-_Moriteru_Uesiba.mp4
/kb/kt/kt_000229_007.mp4
/kb/kt/Shaolin_Monk_Master_Super_Speed.mp4
/kb/kt/Jim Channon Natural Security Future First Earth Battalion.mp4
/kb/kt/cgi_quantum_jump_hayk_sahakyants.mp4
/kb/kt/kt_000229_022.mp4
/kb/jtfdc/vid/jtfdc_20181226_1215_jtf31_teachyourdogsnothere_jkwii.mp4
/kb/jtfdc/vid/jtfdc_20180104_1113_fedexexpress_blackchallenger_meetgreet.mp4
/kb/jtfdc/vid/jtfdc_20181222_0945_jtf31_fiona_plumber_threats_n_stones.mp4
/kb/jtfdc/vid/jtfdc_20170609_1810_burgess_assessmen.mp4
/kb/jtfdc/vid/jtdfinc_2013mmdd_jtf39_trustee_byrd_threats.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1639_jtf31_darkpickup_backupout.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1641_police2_pierce_pickup_jak3in.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1551_jtf31_tresspas.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1634_jtf31_plannin.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1637_jtf31_meeting_hahah.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1540_jtf31_jkwii_threat.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1638_jtf26_upmail.mp4
/kb/jtfdc/vid/jtfdc_20181210_1641_police2_pierce_pickup_jak3in/jtfdc_20181210_1542_wofffren.mp4
/kb/jtfdc/vid/jtfdc_20181224_2307_jkwii_whyuhere_your_scaringus.mp4
/kb/jtfdc/vid/jtfdc_20181120_1519_jtf30_doogy_jkwii_romppatro.mp4
/kb/jtfdc/vid/jtfdc_20181225_1352_jkwii_kids_jtf31_andy_dog.mp4
/kb/jtfdc/vid/jtfdc_20180411_1436_segrist_dog_fedex_stalk.mp4
/kb/jtfdc/vid/jtfdc_20181225_1951_jsk2in_maverics_santaride.mp4
/kb/jtfdc/vid/jtfdc_20181225_1936_jtf31_thanks4sign_meryxmas_woofs.mp4
/kb/jtfdc/vid/jtfdc_20181225_2250_200yr_stillenact_merryxmas.mp4
/kb/jtfdc/vid/jtfdc_20181224_2349_jkwii_jtf31in_fiona_unleashe_street_charge.mp4
/kb/jtfdc/vid/jtfdc_20181223_1821_jtf30_woofs_allnightling.mp4
/kb/jtfdc/vid/jtfdc_20181121_1123_jtf31_fiona_hadly_jkwii_romppatrol.mp4
/kb/jtfdc/vid/jtfdc_20171216_1520_skkids_jtf31rake_jtf27fedex.mp4
/kb/jtfdc/vid/jtfdc_20181210_1530_fiiretruck_xmaslight/jtfdc_20181210_1533_jtf31in_newblu.mp4
/kb/jtfdc/vid/jtfdc_20181210_1530_fiiretruck_xmaslight/jtfdc_20181210_1525_jtf30in.mp4
/kb/jtfdc/vid/jtfdc_20181210_1530_fiiretruck_xmaslight/jtfdc_20181210_1530_ffiretruck_xmaslight.mp4
/kb/jtfdc/vid/jtfdc_20181210_1530_fiiretruck_xmaslight/jtfdc_20181210_1533_fireatruck_suvdonw.mp4
/kb/jtfdc/vid/jtfdc_20181226_1200_jtf31_2xfiona_streetchargn_dogwalkeers.mp4
/kb/jtfdc/vid/jtfdc_20180308_2034_fedexs_flatbed_courtstalking.mp4
/kb/jtfdc/vid/jtfdc_20181226_1236_byrds_up_quiet .mp4
/kb/jtfdc/vid/jtfdc_20181222_1357_jtf31_trespass_jkwii_liveyouronwlives.mp4
/kb/jtfdc/vid/jtfdc_20181226_1205_jtf31_oureasment_dogtraing.mp4
/kb/jtfdc/vid/jtfdc_20160702_1641_jtf31_josh_4asshole_gobackinside.mp4
/kb/jtfdc/vid/jtfdc_20181225_1345_kids_jtf31_freeroam_dogs.mp4
/kb/jtfdc/vid/jtfdc_20181210_1540_jtf31_jkwii_threats_n_stones.mp4
/kb/jtfdc/vid/jtfdc_20181226_1235_bigtruck_byrds_damage_assessmen.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04051_20150716_0643.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04044_20150716_0634.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04057_20150716_0701.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04059_20150716_0709.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04045_20150716_0635.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04064_20150716_0813.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04052_20150716_0644.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04046_20150716_0640_jackie_yelling_at_josh.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04053_20150716_0644.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04043_20150716_0616.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04066_20150716_0816.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04056_20150716_0646_josh_jackie_yelling.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04048_20150716_0641.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04063_20150716_0812.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04054_20150716_0644.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04055_20150716_0644.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04049_20150716_0642.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04050_20150716_0642.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04062_20150716_0738.mp4
/kb/kb_ko_jtf/sd_20150720/mp4_20150716/04065_20150716_0815.mp4
/1.mp4
/index7.mp4
/4.mp4
/2.mp4
/index6.mp4
/index2.mp4
/index.mp4
/koh5.mp4
/index1.mp4
/iperms/doghead_video.mp4
/iperms/Huckleberry_Hound_17_Barbeque_Hound.mp4
/iperms/index2.mp4
/iperms/index1.mp4
/iperms/index3.mp4
/ko_jtf/jtf30/mov/Clip14.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent2/04055_20150716_0644.mp4
/ko_jtf/wg/mp4_20150716/04051_20150716_0643.mp4
/ko_jtf/wg/mp4_20150716/04046_20150716_0640_Jackie_yelling_at_Josh.mp4
/ko_jtf/wg/mp4_20150716/04044_20150716_0634.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent1/04052_20150716_0644.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent1/04054_20150716_0644.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent1/04050_20150716_0642.mp4
/ko_jtf/wg/mp4_20150716/04053_20150716_0644.mp4
/ko_jtf/wg/mp4_20150716/04048_20150716_0641.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent1 2/04052_20150716_0644.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent1 2/04054_20150716_0644.mp4
/ko_jtf/wg/mp4_20150716/mp4_email_sent1 2/04050_20150716_0642.mp4
/ko_jtf/wg/mp4_20150716/04049_20150716_0642.mp4
/ko_jtf/wg/mp4_20150716/04056_20150716_0646_Josh_Jackie_yelling.mp4
/ko_jtf/wg/videos_to_lighten_the_mood/Huckleberry_Hound_17_Barbeque_Hound.mp4
/ko_jtf/wg/videos_to_lighten_the_mood/executive_summary_doghead_video 3-23-16738 PM1.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150806/mt4_20150806/3637_car_drivein_lights_off_20150807.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150806/mt4_20150806/3638_josh_walkin_house_20150807.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150928/mp4_20150928/0475_20150928_0747.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150928/mp4_20150928/0471_20150928_0737.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150928/mp4_20150928/0472_20150928_0737.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04051_20150716_0643.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04046_20150716_0640_Jackie_yelling_at_Josh.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04044_20150716_0634.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04057_20150716_0701.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04059_20150716_0709.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04045_20150716_0635.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04064_20150716_0813.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04052_20150716_0644.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04053_20150716_0644.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04043_20150716_0616.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04066_20150716_0816.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04048_20150716_0641.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04063_20150716_0812.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04054_20150716_0644.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04055_20150716_0644.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04049_20150716_0642.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04050_20150716_0642.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04062_20150716_0738.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04056_20150716_0646_Josh_Jackie_yelling.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150720/mp4_20150716/04065_20150716_0815.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919pm/mp4_20150919pm/00027_20150919_2205_josh_walking.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919pm/mp4_20150919pm/00026_20150919_2102.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919pm/mp4_20150919pm/00025_20150919_1947.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919pm/mp4_20150919pm/00028_20150919_2230.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919pm/mp4_20150919pm/00023_20150919_1910.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919am/mp4_20150919am/00045_20150919_1601.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919am/mp4_20150919am/00041_20150919_1311.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919am/mp4_20150919am/00043_20150919_1530.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919am/mp4_20150919am/00037_20150919_1235.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919am/mp4_20150919am/00036_20150919_1235.mp4
/ko_jtf/wg/pictures_for_court_20160602/court_pics_videos_20160602/sd_20150919am/mp4_20150919am/00042_20150919_1520.mp4
/ko_jtf/wg/pictures_for_court_20160602/videos_to_lighten_the_mood/Huckleberry_Hound_17_Barbeque_Hound.mp4
/ko_jtf/wg/pictures_for_court_20160602/videos_to_lighten_the_mood/executive_summary_doghead_video 3-23-16738 PM1.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04051_20150716_0643.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04046_20150716_0640_Jackie_yelling_at_Josh.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04044_20150716_0634.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04057_20150716_0701.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04059_20150716_0709.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04045_20150716_0635.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04064_20150716_0813.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04052_20150716_0644.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04053_20150716_0644.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04043_20150716_0616.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04066_20150716_0816.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04048_20150716_0641.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04063_20150716_0812.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04054_20150716_0644.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04055_20150716_0644.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04049_20150716_0642.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04050_20150716_0642.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04062_20150716_0738.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04056_20150716_0646_Josh_Jackie_yelling.mp4
/ko_jtf/kb/sd_20150720/mp4_20150716/04065_20150716_0815.mp4
/ko_jtf/kb/v/jtfinc_9558_byrd_trustee_threat_201505.mp4
/ko_jtf/kb/v/9557_fiona_runs_201506.mp4
/ko_jtf/kb/v/index5.mp4
/ko_jtf/kb/v/index4.mp4
/ko_jtf/kb/v/ka1.mp4
/ko_jtf/kb/v/doghead_video.mp4
/ko_jtf/kb/v/Huckleberry_Hound_17_Barbeque_Hound.mp4
/ko_jtf/kb/v/9559_byrd_trustee_threat_201505.mp4
/ko_jtf/kb/v/jtdfinc_byrd2013.mp4
/ko_jtf/kb/v/index6.mp4
/ko_jtf/kb/v/index2.mp4
/ko_jtf/kb/v/jtf31_fiona_runs_201506.mp4
/ko_jtf/kb/v/9558_byrd_trustee_threat_201505.mp4
/ko_jtf/kb/v/index.mp4
/ko_jtf/kb/v/jtfinc_9559_byrd_trustee_threat_201505.mp4
/ko_jtf/kb/v/index1.mp4
/ko_jtf/kb/v/ko_jtf.mp4
`;

kolists['fb'] = 
`pages/1.jpg
pages/2.jpg
pages/3.jpg
pages/4.jpg
pages/5.jpg
pages/6.jpg
pages/7.jpg
pages/8.jpg
pages/9.jpg
/imgs/gif/alien_tek/a11_flipbook.gif
/imgs/gif/alien_tek/afda.gif
/imgs/gif/alien_tek/applewait.gif
/imgs/gif/alien_tek/asdfadfad.gif
/imgs/gif/alien_tek/cityspiral.gif
/imgs/gif/alien_tek/cobe4.gif
/imgs/gif/alien_tek/donujt.gif
/imgs/gif/alien_tek/drip1.gif
/imgs/gif/alien_tek/floaters.gif
/imgs/gif/alien_tek/icepalace.gif
/imgs/gif/alien_tek/lit2.gif
/imgs/gif/alien_tek/lite1.gif
/imgs/gif/alien_tek/litecrystle.gif
/imgs/gif/alien_tek/med1.gif
/imgs/gif/alien_tek/med19.gif
/imgs/gif/alien_tek/med3.gif
/imgs/gif/alien_tek/med5.gif
/imgs/gif/alien_tek/med6.gif
/imgs/gif/alien_tek/medpump.gif
/imgs/gif/alien_tek/medskin.gif
/imgs/gif/alien_tek/mek1.gif
/imgs/gif/alien_tek/mek12.gif
/imgs/gif/alien_tek/mek17.gif
/imgs/gif/alien_tek/mek2.gif
/imgs/gif/alien_tek/mek3.gif
/imgs/gif/alien_tek/mek5.gif
/imgs/gif/alien_tek/mek7.gif
/imgs/gif/alien_tek/mek8.gif
/imgs/gif/alien_tek/mek9.gif
/imgs/gif/alien_tek/memcore.gif
/imgs/gif/alien_tek/merd2.gif
/imgs/gif/alien_tek/octopus.gif
/imgs/gif/alien_tek/org1.gif
/imgs/gif/alien_tek/photons.gif
/imgs/gif/alien_tek/pip2.gif
/imgs/gif/alien_tek/pulsehelix.gif
/imgs/gif/alien_tek/smoke.gif
/imgs/gif/alien_tek/static4.gif
/imgs/gif/alien_tek/su5_67_h_1340.gif
/imgs/gif/alien_tek/tesla.gif
/imgs/gif/alien_tek/wave.gif
/imgs/gif/byrdpucker/giph_horse_distotiony.gif
/imgs/gif/byrdpucker/giph_horse_smerky.gif
/imgs/gif/byrdpucker/giphy._horse_glittergif.gif
/imgs/gif/byrdpucker/giphy._horse_koballsgif.gif
/imgs/gif/byrdpucker/giphy_bugs_boundry.gif
/imgs/gif/byrdpucker/giphy_bugs_jaildoors.gif
/imgs/gif/byrdpucker/giphy_bugs_pase.gif
/imgs/gif/byrdpucker/giphy_bugs_sstop.gif
/imgs/gif/byrdpucker/giphy_bugs_takaway.gif
/imgs/gif/byrdpucker/giphy_bugs_wakeup.gif
/imgs/gif/byrdpucker/giphy_byrdpucker_dog_n_pony_show.gif
/imgs/gif/byrdpucker/giphy_cruella_1.gif
/imgs/gif/byrdpucker/giphy_cruella_2.gif
/imgs/gif/byrdpucker/giphy_cubemembrain.gif
/imgs/gif/byrdpucker/giphy_cycle.gif
/imgs/gif/byrdpucker/giphy_cycle_circle.gif
/imgs/gif/byrdpucker/giphy_cycle_dog.gif
/imgs/gif/byrdpucker/giphy_cycle_jtf39.gif
/imgs/gif/byrdpucker/giphy_cycle_legs.gif
/imgs/gif/byrdpucker/giphy_cycle_rodent.gif
/imgs/gif/byrdpucker/giphy_dogpaddle.gif
/imgs/gif/byrdpucker/giphy_dogs1.gif
/imgs/gif/byrdpucker/giphy_dogygym.gif
/imgs/gif/byrdpucker/giphy_horse_soccor.gif
/imgs/gif/byrdpucker/giphy_horse_views.gif
/imgs/gif/byrdpucker/giphy_horsefish.gif
/imgs/gif/byrdpucker/giphy_horseg_girl_vintage.gif
/imgs/gif/byrdpucker/giphy_horseguy_pranser.gif
/imgs/gif/byrdpucker/giphy_horserun_pencil.gif
/imgs/gif/byrdpucker/giphy_horserun_vintage.gif
/imgs/gif/byrdpucker/giphy_koponies.gif
/imgs/gif/byrdpucker/giphy_magicdoors2.gif
/imgs/gif/byrdpucker/giphy_magicscary_shadows.gif
/imgs/gif/byrdpucker/giphy_magicspecter2.gif
/imgs/gif/byrdpucker/giphy_mrevil.gif
/imgs/gif/byrdpucker/giphy_mtfail.gif
/imgs/gif/byrdpucker/giphy_pinocio_1.gif
/imgs/gif/byrdpucker/giphy_pinocioa_2.gif
/imgs/gif/byrdpucker/giphy_pinocioa_4.gif
/imgs/gif/byrdpucker/giphy_wicked_curtains_closel_.gif
/imgs/gif/crazy/giph_imnotcrazyy.gif
/imgs/gif/crazy/giphy_containment.gif
/imgs/gif/crazy/giphy_crazy3.gif
/imgs/gif/crazy/giphy_crazy5.gif
/imgs/gif/crazy/giphy_crazy_blond.gif
/imgs/gif/crazy/giphy_crazy_mickey.gif
/imgs/gif/crazy/giphy_crazy_princess.gif
/imgs/gif/crazy/giphy_crazy_simsoncalass.gif
/imgs/gif/crazy/giphy_crazy_smilyface.gif
/imgs/gif/crazy/giphy_crazyguy.gif
/imgs/gif/crazy/giphy_crazylady.gif
/imgs/gif/crazy/giphy_crazyorb.gif
/imgs/gif/crazy/giphy_crazytoon.gif
/imgs/gif/crazy/giphy_derbyguy.gif
/imgs/gif/crazy/giphy_dracual_onoff.gif
/imgs/gif/crazy/giphy_duck_crazy.gif
/imgs/gif/crazy/giphy_duckcrash.gif
/imgs/gif/crazy/giphy_einstein.gif
/imgs/gif/crazy/giphy_einstein_wabblehead.gif
/imgs/gif/crazy/giphy_expression_dancer.gif
/imgs/gif/crazy/giphy_fingerwave.gif
/imgs/gif/crazy/giphy_ladyscarey.gif
/imgs/gif/crazy/giphy_magicorb_laddle.gif
/imgs/gif/crazy/giphy_nerdy.gif
/imgs/gif/crazy/giphy_rumshower.gif
/imgs/gif/crazy/giphy_science_frank.gif
/imgs/gif/crazy/giphy_screamer.gif
/imgs/gif/crazy/giphy_showergirl.gif
/imgs/gif/crazy/giphy_smile.gif
/imgs/gif/crazy/giphy_smileyshark.gif
/imgs/gif/crazy/giphy_time_waites.gif
/imgs/gif/crazy/giphy_timeguy_late.gif
/imgs/gif/crazy/giphy_zoom_crazyguy.gif
/imgs/gif/cute/bee.gif
/imgs/gif/cute/boop.gif
/imgs/gif/cute/CA 4th 027 copy.gif
/imgs/gif/cute/CA 4th 027.gif
/imgs/gif/cute/catas.gif
/imgs/gif/cute/cats.gif
/imgs/gif/cute/cd81506101b9407dec74b5635a70fb16.gif
/imgs/gif/cute/crayons.gif
/imgs/gif/cute/disb.gif
/imgs/gif/cute/dogconfusion.gif
/imgs/gif/cute/fireworks.gif
/imgs/gif/cute/fireworks13.gif
/imgs/gif/cute/fireworks3.gif
/imgs/gif/cute/fireworks4.gif
/imgs/gif/cute/fish-swimming.gif
/imgs/gif/cute/fish.gif
/imgs/gif/cute/gipdicehy.gif
/imgs/gif/cute/gipdisneyhy.gif
/imgs/gif/cute/gipfadfahy.gif
/imgs/gif/cute/giphy.gif
/imgs/gif/cute/kid.gif
/imgs/gif/cute/party.gif
/imgs/gif/cute/photonorb.gif
/imgs/gif/cute/sfg.gif
/imgs/gif/cute/spinning-arrow-right.gif
/imgs/gif/firebubbles.gif
/imgs/gif/firebubblesb.gif
/imgs/gif/firebubblesd.gif
/imgs/gif/firebubblesp.gif
/imgs/gif/firebubblesq.gif
/imgs/gif/focus/giph_focus_kidy.gif
/imgs/gif/focus/giph_focus_simpson.gif
/imgs/gif/focus/giph_watchery.gif
/imgs/gif/focus/giphy._eyeball_glossygif.gif
/imgs/gif/focus/giphy_eye_1.gif
/imgs/gif/focus/giphy_eye_owl.gif
/imgs/gif/focus/giphy_eyes2mouth.gif
/imgs/gif/focus/giphy_eyes_linedraw.gif
/imgs/gif/focus/giphy_facemasks.gif
/imgs/gif/focus/giphy_focus_3dglasses.gif
/imgs/gif/focus/giphy_focus_dali.gif
/imgs/gif/focus/giphy_focus_goggles.gif
/imgs/gif/focus/giphy_focus_iris.gif
/imgs/gif/focus/giphy_focus_koglasses.gif
/imgs/gif/focus/giphy_focus_sleuth.gif
/imgs/gif/gif_bugs/giph_bugs_bellydancery.gif
/imgs/gif/gif_bugs/giph_bugs_monster_outy.gif
/imgs/gif/gif_bugs/giph_bugs_peppy_heartsy.gif
/imgs/gif/gif_bugs/giph_kiti_earthrise.gif
/imgs/gif/gif_bugs/giph_kiti_flyingsaucersy.gif
/imgs/gif/gif_bugs/giph_kiti_unicorn.gif
/imgs/gif/gif_bugs/giph_the_end1y.gif
/imgs/gif/gif_bugs/giphy.=_bugs_beepbeep_cliff.gif
/imgs/gif/gif_bugs/giphy._bugs_apple_androidgif.gif
/imgs/gif/gif_bugs/giphy4.gif
/imgs/gif/gif_bugs/giphy_alien_tek0721.gif
/imgs/gif/gif_bugs/giphy_anthead.gif
/imgs/gif/gif_bugs/giphy_beepbeep_ropebride.gif
/imgs/gif/gif_bugs/giphy_box_conveyor.gif
/imgs/gif/gif_bugs/giphy_box_spinners.gif
/imgs/gif/gif_bugs/giphy_boxhop.gif
/imgs/gif/gif_bugs/giphy_boxopen.gif
/imgs/gif/gif_bugs/giphy_boxs_amazon.gif
/imgs/gif/gif_bugs/giphy_boxtoon.gif
/imgs/gif/gif_bugs/giphy_bugs_alian_upskirt.gif
/imgs/gif/gif_bugs/giphy_bugs_alien.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_bodyscan.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_digits.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_dog.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_flagplan.gif
/imgs/gif/gif_bugs/giphy_bugs_alien_judge.gif
/imgs/gif/gif_bugs/giphy_bugs_attention.gif
/imgs/gif/gif_bugs/giphy_bugs_beepbeep_bizcard.gif
/imgs/gif/gif_bugs/giphy_bugs_beepbeep_byrdman.gif
/imgs/gif/gif_bugs/giphy_bugs_beepbeep_dont_have_the_heart.gif
/imgs/gif/gif_bugs/giphy_bugs_beepbeep_fallin.gif
/imgs/gif/gif_bugs/giphy_bugs_birdcat.gif
/imgs/gif/gif_bugs/giphy_bugs_bow.gif
/imgs/gif/gif_bugs/giphy_bugs_brunhilda.gif
/imgs/gif/gif_bugs/giphy_bugs_bugattack.gif
/imgs/gif/gif_bugs/giphy_bugs_bull.gif
/imgs/gif/gif_bugs/giphy_bugs_deal_with_it.gif
/imgs/gif/gif_bugs/giphy_bugs_ducklightergif.gif
/imgs/gif/gif_bugs/giphy_bugs_evil_castle.gif
/imgs/gif/gif_bugs/giphy_bugs_excuse_me.gif
/imgs/gif/gif_bugs/giphy_bugs_eyeroll.gif
/imgs/gif/gif_bugs/giphy_bugs_fire.gif
/imgs/gif/gif_bugs/giphy_bugs_heart_skipping.gif
/imgs/gif/gif_bugs/giphy_bugs_heaven_fall.gif
/imgs/gif/gif_bugs/giphy_bugs_hencook.gif
/imgs/gif/gif_bugs/giphy_bugs_heyyou.gif
/imgs/gif/gif_bugs/giphy_bugs_inspiration.gif
/imgs/gif/gif_bugs/giphy_bugs_jailbuny.gif
/imgs/gif/gif_bugs/giphy_bugs_jailsam.gif
/imgs/gif/gif_bugs/giphy_bugs_jitters_sip.gif
/imgs/gif/gif_bugs/giphy_bugs_kiti_jitters.gif
/imgs/gif/gif_bugs/giphy_bugs_mess.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_conon.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_contained.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_doorbar.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_flee.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_grab.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_scare.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_stalk.gif
/imgs/gif/gif_bugs/giphy_bugs_monster_stalk2.gif
/imgs/gif/gif_bugs/giphy_bugs_now_we_dance.gif
/imgs/gif/gif_bugs/giphy_bugs_one_more_time.gif
/imgs/gif/gif_bugs/giphy_bugs_pagecut.gif
/imgs/gif/gif_bugs/giphy_bugs_peppy_kiss.gif
/imgs/gif/gif_bugs/giphy_bugs_piano.gif
/imgs/gif/gif_bugs/giphy_bugs_play_this_game.gif
/imgs/gif/gif_bugs/giphy_bugs_pot.gif
/imgs/gif/gif_bugs/giphy_bugs_rockette.gif
/imgs/gif/gif_bugs/giphy_bugs_rocky.gif
/imgs/gif/gif_bugs/giphy_bugs_season.gif
/imgs/gif/gif_bugs/giphy_bugs_shave.gif
/imgs/gif/gif_bugs/giphy_bugs_slots.gif
/imgs/gif/gif_bugs/giphy_bugs_start.gif
/imgs/gif/gif_bugs/giphy_bugs_target.gif
/imgs/gif/gif_bugs/giphy_bugs_thats_all_folks.gif
/imgs/gif/gif_bugs/giphy_bugs_tooth.gif
/imgs/gif/gif_bugs/giphy_bugs_tv_western.gif
/imgs/gif/gif_bugs/giphy_bugs_tweetybird.gif
/imgs/gif/gif_bugs/giphy_bugs_wanted.gif
/imgs/gif/gif_bugs/giphy_bugs_what_a_maroon.gif
/imgs/gif/gif_bugs/giphy_bugs_whitehorse.gif
/imgs/gif/gif_bugs/giphy_bugs_yipe.gif
/imgs/gif/gif_bugs/giphy_chain_n_torus.gif
/imgs/gif/gif_bugs/giphy_chaos.gif
/imgs/gif/gif_bugs/giphy_checkerboard.gif
/imgs/gif/gif_bugs/giphy_choc_girl_tomuch.gif
/imgs/gif/gif_bugs/giphy_choc_kid.gif
/imgs/gif/gif_bugs/giphy_choc_kid2.gif
/imgs/gif/gif_bugs/giphy_choc_lucy.gif
/imgs/gif/gif_bugs/giphy_choc_pour1.gif
/imgs/gif/gif_bugs/giphy_choc_princess.gif
/imgs/gif/gif_bugs/giphy_choc_selfmed.gif
/imgs/gif/gif_bugs/giphy_clapguy.gif
/imgs/gif/gif_bugs/giphy_corners.gif
/imgs/gif/gif_bugs/giphy_corners2.gif
/imgs/gif/gif_bugs/giphy_crown.gif
/imgs/gif/gif_bugs/giphy_diamond_tubing.gif
/imgs/gif/gif_bugs/giphy_digit_copypaste.gif
/imgs/gif/gif_bugs/giphy_dog_fan.gif
/imgs/gif/gif_bugs/giphy_dogewaves.gif
/imgs/gif/gif_bugs/giphy_escalator.gif
/imgs/gif/gif_bugs/giphy_eyebug_hover.gif
/imgs/gif/gif_bugs/giphy_eyefly.gif
/imgs/gif/gif_bugs/giphy_fantube.gif
/imgs/gif/gif_bugs/giphy_gillligan.gif
/imgs/gif/gif_bugs/giphy_go__barbells.gif
/imgs/gif/gif_bugs/giphy_godtwiddle.gif
/imgs/gif/gif_bugs/giphy_kali_0721_a.gif
/imgs/gif/gif_bugs/giphy_kali_boxs.gif
/imgs/gif/gif_bugs/giphy_kali_cirles.gif
/imgs/gif/gif_bugs/giphy_kiti_boxclose.gif
/imgs/gif/gif_bugs/giphy_kiti_boxlid.gif
/imgs/gif/gif_bugs/giphy_kiti_boxthru.gif
/imgs/gif/gif_bugs/giphy_kiti_inabox.gif
/imgs/gif/gif_bugs/giphy_kiti_lightning.gif
/imgs/gif/gif_bugs/giphy_kitisews.gif
/imgs/gif/gif_bugs/giphy_kity_wings.gif
/imgs/gif/gif_bugs/giphy_konabus_loosewheels.gif
/imgs/gif/gif_bugs/giphy_kt_baseball.gif
/imgs/gif/gif_bugs/giphy_lineart.gif
/imgs/gif/gif_bugs/giphy_lineart2.gif
/imgs/gif/gif_bugs/giphy_mouthballs.gif
/imgs/gif/gif_bugs/giphy_mouthtube.gif
/imgs/gif/gif_bugs/giphy_orb_stamper.gif
/imgs/gif/gif_bugs/giphy_orb_stars_.gif
/imgs/gif/gif_bugs/giphy_orb_wave.gif
/imgs/gif/gif_bugs/giphy_orbs_0721b.gif
/imgs/gif/gif_bugs/giphy_orbs_bubbles.gif
/imgs/gif/gif_bugs/giphy_orbs_pods.gif
/imgs/gif/gif_bugs/giphy_org0721a.gif
/imgs/gif/gif_bugs/giphy_ringman.gif
/imgs/gif/gif_bugs/giphy_skateboard_torus.gif
/imgs/gif/gif_bugs/giphy_sketch_laps.gif
/imgs/gif/gif_bugs/giphy_spinner_white.gif
/imgs/gif/gif_bugs/giphy_star_bounce.gif
/imgs/gif/gif_bugs/giphy_tanklite.gif
/imgs/gif/gif_bugs/giphy_thats_all_folks_porky.gif
/imgs/gif/gif_bugs/giphy_the_end2.gif
/imgs/gif/gif_bugs/giphy_the_end_shade.gif
/imgs/gif/gif_bugs/giphy_thinkguy.gif
/imgs/gif/gif_bugs/giphy_triangles.gif
/imgs/gif/gif_bugs/giphy_undulator.gif
/imgs/gif/gif_bugs/giphy_wrap_it_up.gif
/imgs/gif/gif_spinners/giph_headsy.gif
/imgs/gif/gif_spinners/giphy_0rbs21.gif
/imgs/gif/gif_spinners/giphy_ali_ropeadope.gif
/imgs/gif/gif_spinners/giphy_ball_in_box.gif
/imgs/gif/gif_spinners/giphy_barcoede.gif
/imgs/gif/gif_spinners/giphy_blow_the_house_down.gif
/imgs/gif/gif_spinners/giphy_bookdeamon.gif
/imgs/gif/gif_spinners/giphy_box_dancing.gif
/imgs/gif/gif_spinners/giphy_box_of_shame.gif
/imgs/gif/gif_spinners/giphy_box_of_shane2.gif
/imgs/gif/gif_spinners/giphy_boxes_in_boxes.gif
/imgs/gif/gif_spinners/giphy_boxes_up.gif
/imgs/gif/gif_spinners/giphy_bugout.gif
/imgs/gif/gif_spinners/giphy_bugs_alien_hothead.gif
/imgs/gif/gif_spinners/giphy_bugs_beepbeep_cliffdoor.gif
/imgs/gif/gif_spinners/giphy_bugs_beepbeep_crusin.gif
/imgs/gif/gif_spinners/giphy_bugs_beepbeep_crusin_sketch.gif
/imgs/gif/gif_spinners/giphy_bugs_piano_finger.gif
/imgs/gif/gif_spinners/giphy_bugwalker.gif
/imgs/gif/gif_spinners/giphy_cinderella_shoe_not4u.gif
/imgs/gif/gif_spinners/giphy_control_panel.gif
/imgs/gif/gif_spinners/giphy_crosses.gif
/imgs/gif/gif_spinners/giphy_cube_undulate.gif
/imgs/gif/gif_spinners/giphy_cubefalls.gif
/imgs/gif/gif_spinners/giphy_cubeline.gif
/imgs/gif/gif_spinners/giphy_evenplaning.gif
/imgs/gif/gif_spinners/giphy_eyet_ears.gif
/imgs/gif/gif_spinners/giphy_finders_eye_heart.gif
/imgs/gif/gif_spinners/giphy_fixit.gif
/imgs/gif/gif_spinners/giphy_fractals.gif
/imgs/gif/gif_spinners/giphy_fuzzy_orb.gif
/imgs/gif/gif_spinners/giphy_fuzzyv.gif
/imgs/gif/gif_spinners/giphy_girl_pokadots.gif
/imgs/gif/gif_spinners/giphy_go_gridwaves.gif
/imgs/gif/gif_spinners/giphy_go_lites_around.gif
/imgs/gif/gif_spinners/giphy_go_square_crosses.gif
/imgs/gif/gif_spinners/giphy_go_squares.gif
/imgs/gif/gif_spinners/giphy_go_squares_3d.gif
/imgs/gif/gif_spinners/giphy_go_wobbles.gif
/imgs/gif/gif_spinners/giphy_gorays.gif
/imgs/gif/gif_spinners/giphy_gradient.gif
/imgs/gif/gif_spinners/giphy_gush.gif
/imgs/gif/gif_spinners/giphy_gushpipes.gif
/imgs/gif/gif_spinners/giphy_guy_fingertalk.gif
/imgs/gif/gif_spinners/giphy_guy_salute.gif
/imgs/gif/gif_spinners/giphy_guy_stand_proud.gif
/imgs/gif/gif_spinners/giphy_guy_thumbs_down.gif
/imgs/gif/gif_spinners/giphy_hallway_wiggle.gif
/imgs/gif/gif_spinners/giphy_hand2sand.gif
/imgs/gif/gif_spinners/giphy_head_androidspin.gif
/imgs/gif/gif_spinners/giphy_head_dog.gif
/imgs/gif/gif_spinners/giphy_head_milkbob.gif
/imgs/gif/gif_spinners/giphy_head_oz.gif
/imgs/gif/gif_spinners/giphy_head_rings.gif
/imgs/gif/gif_spinners/giphy_head_running.gif
/imgs/gif/gif_spinners/giphy_head_spin.gif
/imgs/gif/gif_spinners/giphy_head_thinker.gif
/imgs/gif/gif_spinners/giphy_head_trippy.gif
/imgs/gif/gif_spinners/giphy_head_trippy_suit.gif
/imgs/gif/gif_spinners/giphy_headtoo.gif
/imgs/gif/gif_spinners/giphy_heart.gif
/imgs/gif/gif_spinners/giphy_heart_sunny.gif
/imgs/gif/gif_spinners/giphy_hex_mnaggots.gif
/imgs/gif/gif_spinners/giphy_hockey_snoopy.gif
/imgs/gif/gif_spinners/giphy_js.gif
/imgs/gif/gif_spinners/giphy_jumpher.gif
/imgs/gif/gif_spinners/giphy_kali22.gif
/imgs/gif/gif_spinners/giphy_kali_eyeball.gif
/imgs/gif/gif_spinners/giphy_kids_out_of_boxes.gif
/imgs/gif/gif_spinners/giphy_ko_ali.gif
/imgs/gif/gif_spinners/giphy_konabus_catpillar.gif
/imgs/gif/gif_spinners/giphy_kt_circlemovie.gif
/imgs/gif/gif_spinners/giphy_kt_orb_boxers.gif
/imgs/gif/gif_spinners/giphy_kt_wooky.gif
/imgs/gif/gif_spinners/giphy_laptops.gif
/imgs/gif/gif_spinners/giphy_latern.gif
/imgs/gif/gif_spinners/giphy_layers.gif
/imgs/gif/gif_spinners/giphy_litedisplay.gif
/imgs/gif/gif_spinners/giphy_litehouse_pyramid.gif
/imgs/gif/gif_spinners/giphy_longdress.gif
/imgs/gif/gif_spinners/giphy_man_siluet.gif
/imgs/gif/gif_spinners/giphy_manlaser.gif
/imgs/gif/gif_spinners/giphy_mesh_popcorn.gif
/imgs/gif/gif_spinners/giphy_meshwrap.gif
/imgs/gif/gif_spinners/giphy_network_grid.gif
/imgs/gif/gif_spinners/giphy_network_wiggle.gif
/imgs/gif/gif_spinners/giphy_noise3.gif
/imgs/gif/gif_spinners/giphy_orb_cicle.gif
/imgs/gif/gif_spinners/giphy_orb_drips.gif
/imgs/gif/gif_spinners/giphy_orb_fuzzy.gif
/imgs/gif/gif_spinners/giphy_orb_hary.gif
/imgs/gif/gif_spinners/giphy_orb_in_cube.gif
/imgs/gif/gif_spinners/giphy_orb_jar.gif
/imgs/gif/gif_spinners/giphy_orb_layers.gif
/imgs/gif/gif_spinners/giphy_orb_noise1.gif
/imgs/gif/gif_spinners/giphy_orb_noise2.gif
/imgs/gif/gif_spinners/giphy_orb_noise3.gif
/imgs/gif/gif_spinners/giphy_orb_slow.gif
/imgs/gif/gif_spinners/giphy_orb_spiral.gif
/imgs/gif/gif_spinners/giphy_orb_torus.gif
/imgs/gif/gif_spinners/giphy_orb_tubemesh.gif
/imgs/gif/gif_spinners/giphy_orb_undulate.gif
/imgs/gif/gif_spinners/giphy_orbnois4.gif
/imgs/gif/gif_spinners/giphy_orbtubes.gif
/imgs/gif/gif_spinners/giphy_pagedown.gif
/imgs/gif/gif_spinners/giphy_pastryroad_dunes.gif
/imgs/gif/gif_spinners/giphy_pdf.gif
/imgs/gif/gif_spinners/giphy_pyramid_spirals.gif
/imgs/gif/gif_spinners/giphy_radar.gif
/imgs/gif/gif_spinners/giphy_rectanges.gif
/imgs/gif/gif_spinners/giphy_runningman2.gif
/imgs/gif/gif_spinners/giphy_runningman_atyou.gif
/imgs/gif/gif_spinners/giphy_shades.gif
/imgs/gif/gif_spinners/giphy_spinner2.gif
/imgs/gif/gif_spinners/giphy_spinner3.gif
/imgs/gif/gif_spinners/giphy_spinner8.gif
/imgs/gif/gif_spinners/giphy_spinner9.gif
/imgs/gif/gif_spinners/giphy_spinner_disk.gif
/imgs/gif/gif_spinners/giphy_spinner_orb.gif
/imgs/gif/gif_spinners/giphy_spinner_sumi.gif
/imgs/gif/gif_spinners/giphy_spinners.gif
/imgs/gif/gif_spinners/giphy_spinners_cubes.gif
/imgs/gif/gif_spinners/giphy_spiral.gif
/imgs/gif/gif_spinners/giphy_spiraltwists.gif
/imgs/gif/gif_spinners/giphy_spotlite.gif
/imgs/gif/gif_spinners/giphy_sprial_ripples.gif
/imgs/gif/gif_spinners/giphy_stickynotes.gif
/imgs/gif/gif_spinners/giphy_tetertotter.gif
/imgs/gif/gif_spinners/giphy_toiletpaper.gif
/imgs/gif/gif_spinners/giphy_torusstripes.gif
/imgs/gif/gif_spinners/giphy_tvwatcher.gif
/imgs/gif/gif_spinners/giphy_undulate2.gif
/imgs/gif/gif_spinners/giphy_waveup.gif
/imgs/gif/gif_spinners/giphy_wirebouncer.gif
/imgs/gif/gif_spinners/tumblr_nbuxxtxV3w1tre1zbo1_500.gif
/imgs/gif/gifset_b/apple.gif
/imgs/gif/gifset_b/appleb.gif
/imgs/gif/gifset_b/appleb_1.gif
/imgs/gif/gifset_b/appleb_10.gif
/imgs/gif/gifset_b/appleb_100.gif
/imgs/gif/gifset_b/appleb_2.gif
/imgs/gif/gifset_b/appleb_20.gif
/imgs/gif/gifset_b/appleb_3.gif
/imgs/gif/gifset_b/appleb_30.gif
/imgs/gif/gifset_b/appleb_4.gif
/imgs/gif/gifset_b/appleb_40.gif
/imgs/gif/gifset_b/appleb_5.gif
/imgs/gif/gifset_b/appleb_50.gif
/imgs/gif/gifset_b/appleb_6.gif
/imgs/gif/gifset_b/appleb_7.gif
/imgs/gif/gifset_b/appleb_70.gif
/imgs/gif/gifset_b/appleb_8.gif
/imgs/gif/gifset_b/appleb_80.gif
/imgs/gif/gifset_b/appleb_9.gif
/imgs/gif/gifset_b/appleb_90.gif
/imgs/gif/gifset_b/appled.gif
/imgs/gif/gifset_b/appled_1.gif
/imgs/gif/gifset_b/appled_10.gif
/imgs/gif/gifset_b/appled_100.gif
/imgs/gif/gifset_b/appled_2.gif
/imgs/gif/gifset_b/appled_20.gif
/imgs/gif/gifset_b/appled_3.gif
/imgs/gif/gifset_b/appled_30.gif
/imgs/gif/gifset_b/appled_4.gif
/imgs/gif/gifset_b/appled_40.gif
/imgs/gif/gifset_b/appled_5.gif
/imgs/gif/gifset_b/appled_50.gif
/imgs/gif/gifset_b/appled_6.gif
/imgs/gif/gifset_b/appled_7.gif
/imgs/gif/gifset_b/appled_70.gif
/imgs/gif/gifset_b/appled_8.gif
/imgs/gif/gifset_b/appled_80.gif
/imgs/gif/gifset_b/appled_9.gif
/imgs/gif/gifset_b/appled_90.gif
/imgs/gif/gifset_b/applep.gif
/imgs/gif/gifset_b/applep_1.gif
/imgs/gif/gifset_b/applep_10.gif
/imgs/gif/gifset_b/applep_100.gif
/imgs/gif/gifset_b/applep_2.gif
/imgs/gif/gifset_b/applep_20.gif
/imgs/gif/gifset_b/applep_3.gif
/imgs/gif/gifset_b/applep_30.gif
/imgs/gif/gifset_b/applep_4.gif
/imgs/gif/gifset_b/applep_40.gif
/imgs/gif/gifset_b/applep_5.gif
/imgs/gif/gifset_b/applep_50.gif
/imgs/gif/gifset_b/applep_6.gif
/imgs/gif/gifset_b/applep_7.gif
/imgs/gif/gifset_b/applep_70.gif
/imgs/gif/gifset_b/applep_8.gif
/imgs/gif/gifset_b/applep_80.gif
/imgs/gif/gifset_b/applep_9.gif
/imgs/gif/gifset_b/applep_90.gif
/imgs/gif/gifset_b/appleq.gif
/imgs/gif/gifset_b/appleq_1.gif
/imgs/gif/gifset_b/appleq_10.gif
/imgs/gif/gifset_b/appleq_100.gif
/imgs/gif/gifset_b/appleq_2.gif
/imgs/gif/gifset_b/appleq_20.gif
/imgs/gif/gifset_b/appleq_3.gif
/imgs/gif/gifset_b/appleq_30.gif
/imgs/gif/gifset_b/appleq_4.gif
/imgs/gif/gifset_b/appleq_40.gif
/imgs/gif/gifset_b/appleq_5.gif
/imgs/gif/gifset_b/appleq_50.gif
/imgs/gif/gifset_b/appleq_6.gif
/imgs/gif/gifset_b/appleq_7.gif
/imgs/gif/gifset_b/appleq_70.gif
/imgs/gif/gifset_b/appleq_8.gif
/imgs/gif/gifset_b/appleq_80.gif
/imgs/gif/gifset_b/appleq_9.gif
/imgs/gif/gifset_b/appleq_90.gif
/imgs/gif/gifset_b/awards.gif
/imgs/gif/gifset_b/bh.gif
/imgs/gif/gifset_b/bhb.gif
/imgs/gif/gifset_b/bhb_1.gif
/imgs/gif/gifset_b/bhb_10.gif
/imgs/gif/gifset_b/bhb_100.gif
/imgs/gif/gifset_b/bhb_2.gif
/imgs/gif/gifset_b/bhb_20.gif
/imgs/gif/gifset_b/bhb_3.gif
/imgs/gif/gifset_b/bhb_30.gif
/imgs/gif/gifset_b/bhb_4.gif
/imgs/gif/gifset_b/bhb_40.gif
/imgs/gif/gifset_b/bhb_5.gif
/imgs/gif/gifset_b/bhb_50.gif
/imgs/gif/gifset_b/bhb_6.gif
/imgs/gif/gifset_b/bhb_7.gif
/imgs/gif/gifset_b/bhb_70.gif
/imgs/gif/gifset_b/bhb_8.gif
/imgs/gif/gifset_b/bhb_80.gif
/imgs/gif/gifset_b/bhb_9.gif
/imgs/gif/gifset_b/bhb_90.gif
/imgs/gif/gifset_b/bhd.gif
/imgs/gif/gifset_b/bhd_1.gif
/imgs/gif/gifset_b/bhd_10.gif
/imgs/gif/gifset_b/bhd_100.gif
/imgs/gif/gifset_b/bhd_2.gif
/imgs/gif/gifset_b/bhd_20.gif
/imgs/gif/gifset_b/bhd_3.gif
/imgs/gif/gifset_b/bhd_30.gif
/imgs/gif/gifset_b/bhd_4.gif
/imgs/gif/gifset_b/bhd_40.gif
/imgs/gif/gifset_b/bhd_5.gif
/imgs/gif/gifset_b/bhd_50.gif
/imgs/gif/gifset_b/bhd_6.gif
/imgs/gif/gifset_b/bhd_7.gif
/imgs/gif/gifset_b/bhd_70.gif
/imgs/gif/gifset_b/bhd_8.gif
/imgs/gif/gifset_b/bhd_80.gif
/imgs/gif/gifset_b/bhd_9.gif
/imgs/gif/gifset_b/bhd_90.gif
/imgs/gif/gifset_b/bhp.gif
/imgs/gif/gifset_b/bhp_1.gif
/imgs/gif/gifset_b/bhp_10.gif
/imgs/gif/gifset_b/bhp_100.gif
/imgs/gif/gifset_b/bhp_2.gif
/imgs/gif/gifset_b/bhp_20.gif
/imgs/gif/gifset_b/bhp_3.gif
/imgs/gif/gifset_b/bhp_30.gif
/imgs/gif/gifset_b/bhp_4.gif
/imgs/gif/gifset_b/bhp_40.gif
/imgs/gif/gifset_b/bhp_5.gif
/imgs/gif/gifset_b/bhp_50.gif
/imgs/gif/gifset_b/bhp_6.gif
/imgs/gif/gifset_b/bhp_7.gif
/imgs/gif/gifset_b/bhp_70.gif
/imgs/gif/gifset_b/bhp_8.gif
/imgs/gif/gifset_b/bhp_80.gif
/imgs/gif/gifset_b/bhp_9.gif
/imgs/gif/gifset_b/bhp_90.gif
/imgs/gif/gifset_b/bhq.gif
/imgs/gif/gifset_b/bhq_1.gif
/imgs/gif/gifset_b/bhq_10.gif
/imgs/gif/gifset_b/bhq_100.gif
/imgs/gif/gifset_b/bhq_2.gif
/imgs/gif/gifset_b/bhq_20.gif
/imgs/gif/gifset_b/bhq_3.gif
/imgs/gif/gifset_b/bhq_30.gif
/imgs/gif/gifset_b/bhq_4.gif
/imgs/gif/gifset_b/bhq_40.gif
/imgs/gif/gifset_b/bhq_5.gif
/imgs/gif/gifset_b/bhq_50.gif
/imgs/gif/gifset_b/bhq_6.gif
/imgs/gif/gifset_b/bhq_7.gif
/imgs/gif/gifset_b/bhq_70.gif
/imgs/gif/gifset_b/bhq_8.gif
/imgs/gif/gifset_b/bhq_80.gif
/imgs/gif/gifset_b/bhq_9.gif
/imgs/gif/gifset_b/bhq_90.gif
/imgs/gif/gifset_f/dollars.gif
/imgs/gif/gifset_f/dollarsb.gif
/imgs/gif/gifset_f/dollarsb_1.gif
/imgs/gif/gifset_f/dollarsb_10.gif
/imgs/gif/gifset_f/dollarsb_100.gif
/imgs/gif/gifset_f/dollarsb_2.gif
/imgs/gif/gifset_f/dollarsb_20.gif
/imgs/gif/gifset_f/dollarsb_3.gif
/imgs/gif/gifset_f/dollarsb_30.gif
/imgs/gif/gifset_f/dollarsb_4.gif
/imgs/gif/gifset_f/dollarsb_40.gif
/imgs/gif/gifset_f/dollarsb_5.gif
/imgs/gif/gifset_f/dollarsb_50.gif
/imgs/gif/gifset_f/dollarsb_6.gif
/imgs/gif/gifset_f/dollarsb_7.gif
/imgs/gif/gifset_f/dollarsb_70.gif
/imgs/gif/gifset_f/dollarsb_8.gif
/imgs/gif/gifset_f/dollarsb_80.gif
/imgs/gif/gifset_f/dollarsb_9.gif
/imgs/gif/gifset_f/dollarsb_90.gif
/imgs/gif/gifset_f/dollarsd.gif
/imgs/gif/gifset_f/dollarsd_1.gif
/imgs/gif/gifset_f/dollarsd_10.gif
/imgs/gif/gifset_f/dollarsd_100.gif
/imgs/gif/gifset_f/dollarsd_2.gif
/imgs/gif/gifset_f/dollarsd_20.gif
/imgs/gif/gifset_f/dollarsd_3.gif
/imgs/gif/gifset_f/dollarsd_30.gif
/imgs/gif/gifset_f/dollarsd_4.gif
/imgs/gif/gifset_f/dollarsd_40.gif
/imgs/gif/gifset_f/dollarsd_5.gif
/imgs/gif/gifset_f/dollarsd_50.gif
/imgs/gif/gifset_f/dollarsd_6.gif
/imgs/gif/gifset_f/dollarsd_7.gif
/imgs/gif/gifset_f/dollarsd_70.gif
/imgs/gif/gifset_f/dollarsd_8.gif
/imgs/gif/gifset_f/dollarsd_80.gif
/imgs/gif/gifset_f/dollarsd_9.gif
/imgs/gif/gifset_f/dollarsd_90.gif
/imgs/gif/gifset_f/dollarsp.gif
/imgs/gif/gifset_f/dollarsp_1.gif
/imgs/gif/gifset_f/dollarsp_10.gif
/imgs/gif/gifset_f/dollarsp_100.gif
/imgs/gif/gifset_f/dollarsp_2.gif
/imgs/gif/gifset_f/dollarsp_20.gif
/imgs/gif/gifset_f/dollarsp_3.gif
/imgs/gif/gifset_f/dollarsp_30.gif
/imgs/gif/gifset_f/dollarsp_4.gif
/imgs/gif/gifset_f/dollarsp_40.gif
/imgs/gif/gifset_f/dollarsp_5.gif
/imgs/gif/gifset_f/dollarsp_50.gif
/imgs/gif/gifset_f/dollarsp_6.gif
/imgs/gif/gifset_f/dollarsp_7.gif
/imgs/gif/gifset_f/dollarsp_70.gif
/imgs/gif/gifset_f/dollarsp_8.gif
/imgs/gif/gifset_f/dollarsp_80.gif
/imgs/gif/gifset_f/dollarsp_9.gif
/imgs/gif/gifset_f/dollarsp_90.gif
/imgs/gif/gifset_f/dollarsq.gif
/imgs/gif/gifset_f/dollarsq_1.gif
/imgs/gif/gifset_f/dollarsq_10.gif
/imgs/gif/gifset_f/dollarsq_100.gif
/imgs/gif/gifset_f/dollarsq_2.gif
/imgs/gif/gifset_f/dollarsq_20.gif
/imgs/gif/gifset_f/dollarsq_3.gif
/imgs/gif/gifset_f/dollarsq_30.gif
/imgs/gif/gifset_f/dollarsq_4.gif
/imgs/gif/gifset_f/dollarsq_40.gif
/imgs/gif/gifset_f/dollarsq_5.gif
/imgs/gif/gifset_f/dollarsq_50.gif
/imgs/gif/gifset_f/dollarsq_6.gif
/imgs/gif/gifset_f/dollarsq_7.gif
/imgs/gif/gifset_f/dollarsq_70.gif
/imgs/gif/gifset_f/dollarsq_8.gif
/imgs/gif/gifset_f/dollarsq_80.gif
/imgs/gif/gifset_f/dollarsq_9.gif
/imgs/gif/gifset_f/dollarsq_90.gif
/imgs/gif/gifset_f/eye1.gif
/imgs/gif/gifset_f/eye1b.gif
/imgs/gif/gifset_f/eye1b_1.gif
/imgs/gif/gifset_f/eye1b_10.gif
/imgs/gif/gifset_f/eye1b_100.gif
/imgs/gif/gifset_f/eye1b_2.gif
/imgs/gif/gifset_f/eye1b_20.gif
/imgs/gif/gifset_f/eye1b_3.gif
/imgs/gif/gifset_f/eye1b_30.gif
/imgs/gif/gifset_f/eye1b_4.gif
/imgs/gif/gifset_f/eye1b_40.gif
/imgs/gif/gifset_f/eye1b_5.gif
/imgs/gif/gifset_f/eye1b_50.gif
/imgs/gif/gifset_f/eye1b_6.gif
/imgs/gif/gifset_f/eye1b_7.gif
/imgs/gif/gifset_f/eye1b_70.gif
/imgs/gif/gifset_f/eye1b_8.gif
/imgs/gif/gifset_f/eye1b_80.gif
/imgs/gif/gifset_f/eye1b_9.gif
/imgs/gif/gifset_f/eye1b_90.gif
/imgs/gif/gifset_f/eye1d.gif
/imgs/gif/gifset_f/eye1d_1.gif
/imgs/gif/gifset_f/eye1d_10.gif
/imgs/gif/gifset_f/eye1d_100.gif
/imgs/gif/gifset_f/eye1d_2.gif
/imgs/gif/gifset_f/eye1d_20.gif
/imgs/gif/gifset_f/eye1d_3.gif
/imgs/gif/gifset_f/eye1d_30.gif
/imgs/gif/gifset_f/eye1d_4.gif
/imgs/gif/gifset_f/eye1d_40.gif
/imgs/gif/gifset_f/eye1d_5.gif
/imgs/gif/gifset_f/eye1d_50.gif
/imgs/gif/gifset_f/eye1d_6.gif
/imgs/gif/gifset_f/eye1d_7.gif
/imgs/gif/gifset_f/eye1d_70.gif
/imgs/gif/gifset_f/eye1d_8.gif
/imgs/gif/gifset_f/eye1d_80.gif
/imgs/gif/gifset_f/eye1d_9.gif
/imgs/gif/gifset_f/eye1d_90.gif
/imgs/gif/gifset_f/eye1p.gif
/imgs/gif/gifset_f/eye1p_1.gif
/imgs/gif/gifset_f/eye1p_10.gif
/imgs/gif/gifset_f/eye1p_100.gif
/imgs/gif/gifset_f/eye1p_2.gif
/imgs/gif/gifset_f/eye1p_20.gif
/imgs/gif/gifset_f/eye1p_3.gif
/imgs/gif/gifset_f/eye1p_30.gif
/imgs/gif/gifset_f/eye1p_4.gif
/imgs/gif/gifset_f/eye1p_40.gif
/imgs/gif/gifset_f/eye1p_5.gif
/imgs/gif/gifset_f/eye1p_50.gif
/imgs/gif/gifset_f/eye1p_6.gif
/imgs/gif/gifset_f/eye1p_7.gif
/imgs/gif/gifset_f/eye1p_70.gif
/imgs/gif/gifset_f/eye1p_8.gif
/imgs/gif/gifset_f/eye1p_80.gif
/imgs/gif/gifset_f/eye1p_9.gif
/imgs/gif/gifset_f/eye1p_90.gif
/imgs/gif/gifset_f/eye1q.gif
/imgs/gif/gifset_f/eye1q_1.gif
/imgs/gif/gifset_f/eye1q_10.gif
/imgs/gif/gifset_f/eye1q_100.gif
/imgs/gif/gifset_f/eye1q_2.gif
/imgs/gif/gifset_f/eye1q_20.gif
/imgs/gif/gifset_f/eye1q_3.gif
/imgs/gif/gifset_f/eye1q_30.gif
/imgs/gif/gifset_f/eye1q_4.gif
/imgs/gif/gifset_f/eye1q_40.gif
/imgs/gif/gifset_f/eye1q_5.gif
/imgs/gif/gifset_f/eye1q_50.gif
/imgs/gif/gifset_f/eye1q_6.gif
/imgs/gif/gifset_f/eye1q_7.gif
/imgs/gif/gifset_f/eye1q_70.gif
/imgs/gif/gifset_f/eye1q_8.gif
/imgs/gif/gifset_f/eye1q_80.gif
/imgs/gif/gifset_f/eye1q_9.gif
/imgs/gif/gifset_f/eye1q_90.gif
/imgs/gif/gifset_f/eye2.gif
/imgs/gif/gifset_f/eye2b.gif
/imgs/gif/gifset_f/eye2b_1.gif
/imgs/gif/gifset_f/eye2b_10.gif
/imgs/gif/gifset_f/eye2b_100.gif
/imgs/gif/gifset_f/eye2b_2.gif
/imgs/gif/gifset_f/eye2b_20.gif
/imgs/gif/gifset_f/eye2b_3.gif
/imgs/gif/gifset_f/eye2b_30.gif
/imgs/gif/gifset_f/eye2b_4.gif
/imgs/gif/gifset_f/eye2b_40.gif
/imgs/gif/gifset_f/eye2b_5.gif
/imgs/gif/gifset_f/eye2b_50.gif
/imgs/gif/gifset_f/eye2b_6.gif
/imgs/gif/gifset_f/eye2b_7.gif
/imgs/gif/gifset_f/eye2b_70.gif
/imgs/gif/gifset_f/eye2b_8.gif
/imgs/gif/gifset_f/eye2b_80.gif
/imgs/gif/gifset_f/eye2b_9.gif
/imgs/gif/gifset_f/eye2b_90.gif
/imgs/gif/gifset_f/eye2d.gif
/imgs/gif/gifset_f/eye2d_1.gif
/imgs/gif/gifset_f/eye2d_10.gif
/imgs/gif/gifset_f/eye2d_100.gif
/imgs/gif/gifset_f/eye2d_2.gif
/imgs/gif/gifset_f/eye2d_20.gif
/imgs/gif/gifset_f/eye2d_3.gif
/imgs/gif/gifset_f/eye2d_30.gif
/imgs/gif/gifset_f/eye2d_4.gif
/imgs/gif/gifset_f/eye2d_40.gif
/imgs/gif/gifset_f/eye2d_5.gif
/imgs/gif/gifset_f/eye2d_50.gif
/imgs/gif/gifset_f/eye2d_6.gif
/imgs/gif/gifset_f/eye2d_7.gif
/imgs/gif/gifset_f/eye2d_70.gif
/imgs/gif/gifset_f/eye2d_8.gif
/imgs/gif/gifset_f/eye2d_80.gif
/imgs/gif/gifset_f/eye2d_9.gif
/imgs/gif/gifset_f/eye2d_90.gif
/imgs/gif/gifset_f/eye2p.gif
/imgs/gif/gifset_f/eye2p_1.gif
/imgs/gif/gifset_f/eye2p_10.gif
/imgs/gif/gifset_f/eye2p_100.gif
/imgs/gif/gifset_f/eye2p_2.gif
/imgs/gif/gifset_f/eye2p_20.gif
/imgs/gif/gifset_f/eye2p_3.gif
/imgs/gif/gifset_f/eye2p_30.gif
/imgs/gif/gifset_f/eye2p_4.gif
/imgs/gif/gifset_f/eye2p_40.gif
/imgs/gif/gifset_f/eye2p_5.gif
/imgs/gif/gifset_f/eye2p_50.gif
/imgs/gif/gifset_f/eye2p_6.gif
/imgs/gif/gifset_f/eye2p_7.gif
/imgs/gif/gifset_f/eye2p_70.gif
/imgs/gif/gifset_f/eye2p_8.gif
/imgs/gif/gifset_f/eye2p_80.gif
/imgs/gif/gifset_f/eye2p_9.gif
/imgs/gif/gifset_f/eye2p_90.gif
/imgs/gif/gifset_f/eye2q.gif
/imgs/gif/gifset_f/eye2q_1.gif
/imgs/gif/gifset_f/eye2q_10.gif
/imgs/gif/gifset_f/eye2q_100.gif
/imgs/gif/gifset_f/eye2q_2.gif
/imgs/gif/gifset_f/eye2q_20.gif
/imgs/gif/gifset_f/eye2q_3.gif
/imgs/gif/gifset_f/eye2q_30.gif
/imgs/gif/gifset_f/eye2q_4.gif
/imgs/gif/gifset_f/eye2q_40.gif
/imgs/gif/gifset_f/eye2q_5.gif
/imgs/gif/gifset_f/eye2q_50.gif
/imgs/gif/gifset_f/eye2q_6.gif
/imgs/gif/gifset_f/eye2q_7.gif
/imgs/gif/gifset_f/eye2q_70.gif
/imgs/gif/gifset_f/eye2q_8.gif
/imgs/gif/gifset_f/eye2q_80.gif
/imgs/gif/gifset_f/eye2q_9.gif
/imgs/gif/gifset_f/eye2q_90.gif
/imgs/gif/gifset_f/eye3.gif
/imgs/gif/gifset_f/eye3b.gif
/imgs/gif/gifset_f/eye3b_1.gif
/imgs/gif/gifset_f/eye3b_10.gif
/imgs/gif/gifset_f/eye3b_100.gif
/imgs/gif/gifset_f/eye3b_2.gif
/imgs/gif/gifset_f/eye3b_20.gif
/imgs/gif/gifset_f/eye3b_3.gif
/imgs/gif/gifset_f/eye3b_30.gif
/imgs/gif/gifset_f/eye3b_4.gif
/imgs/gif/gifset_f/eye3b_40.gif
/imgs/gif/gifset_f/eye3b_5.gif
/imgs/gif/gifset_f/eye3b_50.gif
/imgs/gif/gifset_f/eye3b_6.gif
/imgs/gif/gifset_f/eye3b_7.gif
/imgs/gif/gifset_f/eye3b_70.gif
/imgs/gif/gifset_f/eye3b_8.gif
/imgs/gif/gifset_f/eye3b_80.gif
/imgs/gif/gifset_f/eye3b_9.gif
/imgs/gif/gifset_f/eye3b_90.gif
/imgs/gif/gifset_f/eye3d.gif
/imgs/gif/gifset_f/eye3d_1.gif
/imgs/gif/gifset_f/eye3d_10.gif
/imgs/gif/gifset_f/eye3d_100.gif
/imgs/gif/gifset_f/eye3d_2.gif
/imgs/gif/gifset_f/eye3d_20.gif
/imgs/gif/gifset_f/eye3d_3.gif
/imgs/gif/gifset_f/eye3d_30.gif
/imgs/gif/gifset_f/eye3d_4.gif
/imgs/gif/gifset_f/eye3d_40.gif
/imgs/gif/gifset_f/eye3d_5.gif
/imgs/gif/gifset_f/eye3d_50.gif
/imgs/gif/gifset_f/eye3d_6.gif
/imgs/gif/gifset_f/eye3d_7.gif
/imgs/gif/gifset_f/eye3d_70.gif
/imgs/gif/gifset_f/eye3d_8.gif
/imgs/gif/gifset_f/eye3d_80.gif
/imgs/gif/gifset_f/eye3d_9.gif
/imgs/gif/gifset_f/eye3d_90.gif
/imgs/gif/gifset_f/eye3p.gif
/imgs/gif/gifset_f/eye3p_1.gif
/imgs/gif/gifset_f/eye3p_10.gif
/imgs/gif/gifset_f/eye3p_100.gif
/imgs/gif/gifset_f/eye3p_2.gif
/imgs/gif/gifset_f/eye3p_20.gif
/imgs/gif/gifset_f/eye3p_3.gif
/imgs/gif/gifset_f/eye3p_30.gif
/imgs/gif/gifset_f/eye3p_4.gif
/imgs/gif/gifset_f/eye3p_40.gif
/imgs/gif/gifset_f/eye3p_5.gif
/imgs/gif/gifset_f/eye3p_50.gif
/imgs/gif/gifset_f/eye3p_6.gif
/imgs/gif/gifset_f/eye3p_7.gif
/imgs/gif/gifset_f/eye3p_70.gif
/imgs/gif/gifset_f/eye3p_8.gif
/imgs/gif/gifset_f/eye3p_80.gif
/imgs/gif/gifset_f/eye3p_9.gif
/imgs/gif/gifset_f/eye3p_90.gif
/imgs/gif/gifset_f/eye3q.gif
/imgs/gif/gifset_f/eye3q_1.gif
/imgs/gif/gifset_f/eye3q_10.gif
/imgs/gif/gifset_f/eye3q_100.gif
/imgs/gif/gifset_f/eye3q_2.gif
/imgs/gif/gifset_f/eye3q_20.gif
/imgs/gif/gifset_f/eye3q_3.gif
/imgs/gif/gifset_f/eye3q_30.gif
/imgs/gif/gifset_f/eye3q_4.gif
/imgs/gif/gifset_f/eye3q_40.gif
/imgs/gif/gifset_f/eye3q_5.gif
/imgs/gif/gifset_f/eye3q_50.gif
/imgs/gif/gifset_f/eye3q_6.gif
/imgs/gif/gifset_f/eye3q_7.gif
/imgs/gif/gifset_f/eye3q_70.gif
/imgs/gif/gifset_f/eye3q_8.gif
/imgs/gif/gifset_f/eye3q_80.gif
/imgs/gif/gifset_f/eye3q_9.gif
/imgs/gif/gifset_f/eye3q_90.gif
/imgs/gif/gifset_f/film.gif
/imgs/gif/gifset_f/filmb.gif
/imgs/gif/gifset_f/filmb_1.gif
/imgs/gif/gifset_f/filmb_10.gif
/imgs/gif/gifset_f/filmb_100.gif
/imgs/gif/gifset_f/filmb_2.gif
/imgs/gif/gifset_f/filmb_20.gif
/imgs/gif/gifset_f/filmb_3.gif
/imgs/gif/gifset_f/filmb_30.gif
/imgs/gif/gifset_f/filmb_4.gif
/imgs/gif/gifset_f/filmb_40.gif
/imgs/gif/gifset_f/filmb_5.gif
/imgs/gif/gifset_f/filmb_50.gif
/imgs/gif/gifset_f/filmb_6.gif
/imgs/gif/gifset_f/filmb_7.gif
/imgs/gif/gifset_f/filmb_70.gif
/imgs/gif/gifset_f/filmb_8.gif
/imgs/gif/gifset_f/filmb_80.gif
/imgs/gif/gifset_f/filmb_9.gif
/imgs/gif/gifset_f/filmb_90.gif
/imgs/gif/gifset_f/filmd.gif
/imgs/gif/gifset_f/filmd_1.gif
/imgs/gif/gifset_f/filmd_10.gif
/imgs/gif/gifset_f/filmd_100.gif
/imgs/gif/gifset_f/filmd_2.gif
/imgs/gif/gifset_f/filmd_20.gif
/imgs/gif/gifset_f/filmd_3.gif
/imgs/gif/gifset_f/filmd_30.gif
/imgs/gif/gifset_f/filmd_4.gif
/imgs/gif/gifset_f/filmd_40.gif
/imgs/gif/gifset_f/filmd_5.gif
/imgs/gif/gifset_f/filmd_50.gif
/imgs/gif/gifset_f/filmd_6.gif
/imgs/gif/gifset_f/filmd_7.gif
/imgs/gif/gifset_f/filmd_70.gif
/imgs/gif/gifset_f/filmd_8.gif
/imgs/gif/gifset_f/filmd_80.gif
/imgs/gif/gifset_f/filmd_9.gif
/imgs/gif/gifset_f/filmd_90.gif
/imgs/gif/gifset_f/filmp.gif
/imgs/gif/gifset_f/filmp_1.gif
/imgs/gif/gifset_f/filmp_10.gif
/imgs/gif/gifset_f/filmp_100.gif
/imgs/gif/gifset_f/filmp_2.gif
/imgs/gif/gifset_f/filmp_20.gif
/imgs/gif/gifset_f/filmp_3.gif
/imgs/gif/gifset_f/filmp_30.gif
/imgs/gif/gifset_f/filmp_4.gif
/imgs/gif/gifset_f/filmp_40.gif
/imgs/gif/gifset_f/filmp_5.gif
/imgs/gif/gifset_f/filmp_50.gif
/imgs/gif/gifset_f/filmp_6.gif
/imgs/gif/gifset_f/filmp_7.gif
/imgs/gif/gifset_f/filmp_70.gif
/imgs/gif/gifset_f/filmp_8.gif
/imgs/gif/gifset_f/filmp_80.gif
/imgs/gif/gifset_f/filmp_9.gif
/imgs/gif/gifset_f/filmp_90.gif
/imgs/gif/gifset_f/filmq.gif
/imgs/gif/gifset_f/filmq_1.gif
/imgs/gif/gifset_f/filmq_10.gif
/imgs/gif/gifset_f/filmq_100.gif
/imgs/gif/gifset_f/filmq_2.gif
/imgs/gif/gifset_f/filmq_20.gif
/imgs/gif/gifset_f/filmq_3.gif
/imgs/gif/gifset_f/filmq_30.gif
/imgs/gif/gifset_f/filmq_4.gif
/imgs/gif/gifset_f/filmq_40.gif
/imgs/gif/gifset_f/filmq_5.gif
/imgs/gif/gifset_f/filmq_50.gif
/imgs/gif/gifset_f/filmq_6.gif
/imgs/gif/gifset_f/filmq_7.gif
/imgs/gif/gifset_f/filmq_70.gif
/imgs/gif/gifset_f/filmq_8.gif
/imgs/gif/gifset_f/filmq_80.gif
/imgs/gif/gifset_f/filmq_9.gif
/imgs/gif/gifset_f/filmq_90.gif
/imgs/gif/gifset_f/firebubblesb_1.gif
/imgs/gif/gifset_f/firebubblesb_10.gif
/imgs/gif/gifset_f/firebubblesb_100.gif
/imgs/gif/gifset_f/firebubblesb_2.gif
/imgs/gif/gifset_f/firebubblesb_20.gif
/imgs/gif/gifset_f/firebubblesb_3.gif
/imgs/gif/gifset_f/firebubblesb_30.gif
/imgs/gif/gifset_f/firebubblesb_4.gif
/imgs/gif/gifset_f/firebubblesb_40.gif
/imgs/gif/gifset_f/firebubblesb_5.gif
/imgs/gif/gifset_f/firebubblesb_50.gif
/imgs/gif/gifset_f/firebubblesb_6.gif
/imgs/gif/gifset_f/firebubblesb_7.gif
/imgs/gif/gifset_f/firebubblesb_70.gif
/imgs/gif/gifset_f/firebubblesb_8.gif
/imgs/gif/gifset_f/firebubblesb_80.gif
/imgs/gif/gifset_f/firebubblesb_9.gif
/imgs/gif/gifset_f/firebubblesb_90.gif
/imgs/gif/gifset_f/firebubblesd_1.gif
/imgs/gif/gifset_f/firebubblesd_10.gif
/imgs/gif/gifset_f/firebubblesd_100.gif
/imgs/gif/gifset_f/firebubblesd_2.gif
/imgs/gif/gifset_f/firebubblesd_20.gif
/imgs/gif/gifset_f/firebubblesd_3.gif
/imgs/gif/gifset_f/firebubblesd_30.gif
/imgs/gif/gifset_f/firebubblesd_4.gif
/imgs/gif/gifset_f/firebubblesd_40.gif
/imgs/gif/gifset_f/firebubblesd_5.gif
/imgs/gif/gifset_f/firebubblesd_50.gif
/imgs/gif/gifset_f/firebubblesd_6.gif
/imgs/gif/gifset_f/firebubblesd_7.gif
/imgs/gif/gifset_f/firebubblesd_70.gif
/imgs/gif/gifset_f/firebubblesd_8.gif
/imgs/gif/gifset_f/firebubblesd_80.gif
/imgs/gif/gifset_f/firebubblesd_9.gif
/imgs/gif/gifset_f/firebubblesd_90.gif
/imgs/gif/gifset_f/firebubblesp_1.gif
/imgs/gif/gifset_f/firebubblesp_10.gif
/imgs/gif/gifset_f/firebubblesp_100.gif
/imgs/gif/gifset_f/firebubblesp_2.gif
/imgs/gif/gifset_f/firebubblesp_20.gif
/imgs/gif/gifset_f/firebubblesp_3.gif
/imgs/gif/gifset_f/firebubblesp_30.gif
/imgs/gif/gifset_f/firebubblesp_4.gif
/imgs/gif/gifset_f/firebubblesp_40.gif
/imgs/gif/gifset_f/firebubblesp_5.gif
/imgs/gif/gifset_f/firebubblesp_50.gif
/imgs/gif/gifset_f/firebubblesp_6.gif
/imgs/gif/gifset_f/firebubblesp_7.gif
/imgs/gif/gifset_f/firebubblesp_70.gif
/imgs/gif/gifset_f/firebubblesp_8.gif
/imgs/gif/gifset_f/firebubblesp_80.gif
/imgs/gif/gifset_f/firebubblesp_9.gif
/imgs/gif/gifset_f/firebubblesp_90.gif
/imgs/gif/gifset_firebubbles/firework.gif
/imgs/gif/gifset_firebubbles/fireworkb.gif
/imgs/gif/gifset_firebubbles/fireworkb_1.gif
/imgs/gif/gifset_firebubbles/fireworkb_10.gif
/imgs/gif/gifset_firebubbles/fireworkb_100.gif
/imgs/gif/gifset_firebubbles/fireworkb_2.gif
/imgs/gif/gifset_firebubbles/fireworkb_20.gif
/imgs/gif/gifset_firebubbles/fireworkb_3.gif
/imgs/gif/gifset_firebubbles/fireworkb_30.gif
/imgs/gif/gifset_firebubbles/fireworkb_4.gif
/imgs/gif/gifset_firebubbles/fireworkb_40.gif
/imgs/gif/gifset_firebubbles/fireworkb_5.gif
/imgs/gif/gifset_firebubbles/fireworkb_50.gif
/imgs/gif/gifset_firebubbles/fireworkb_6.gif
/imgs/gif/gifset_firebubbles/fireworkb_7.gif
/imgs/gif/gifset_firebubbles/fireworkb_70.gif
/imgs/gif/gifset_firebubbles/fireworkb_8.gif
/imgs/gif/gifset_firebubbles/fireworkb_80.gif
/imgs/gif/gifset_firebubbles/fireworkb_9.gif
/imgs/gif/gifset_firebubbles/fireworkb_90.gif
/imgs/gif/gifset_firebubbles/fireworkd.gif
/imgs/gif/gifset_firebubbles/fireworkd_1.gif
/imgs/gif/gifset_firebubbles/fireworkd_10.gif
/imgs/gif/gifset_firebubbles/fireworkd_100.gif
/imgs/gif/gifset_firebubbles/fireworkd_2.gif
/imgs/gif/gifset_firebubbles/fireworkd_20.gif
/imgs/gif/gifset_firebubbles/fireworkd_3.gif
/imgs/gif/gifset_firebubbles/fireworkd_30.gif
/imgs/gif/gifset_firebubbles/fireworkd_4.gif
/imgs/gif/gifset_firebubbles/fireworkd_40.gif
/imgs/gif/gifset_firebubbles/fireworkd_5.gif
/imgs/gif/gifset_firebubbles/fireworkd_50.gif
/imgs/gif/gifset_firebubbles/fireworkd_6.gif
/imgs/gif/gifset_firebubbles/fireworkd_7.gif
/imgs/gif/gifset_firebubbles/fireworkd_70.gif
/imgs/gif/gifset_firebubbles/fireworkd_8.gif
/imgs/gif/gifset_firebubbles/fireworkd_80.gif
/imgs/gif/gifset_firebubbles/fireworkd_9.gif
/imgs/gif/gifset_firebubbles/fireworkd_90.gif
/imgs/gif/gifset_firebubbles/fireworkp.gif
/imgs/gif/gifset_firebubbles/fireworkp_1.gif
/imgs/gif/gifset_firebubbles/fireworkp_10.gif
/imgs/gif/gifset_firebubbles/fireworkp_100.gif
/imgs/gif/gifset_firebubbles/fireworkp_2.gif
/imgs/gif/gifset_firebubbles/fireworkp_20.gif
/imgs/gif/gifset_firebubbles/fireworkp_3.gif
/imgs/gif/gifset_firebubbles/fireworkp_30.gif
/imgs/gif/gifset_firebubbles/fireworkp_4.gif
/imgs/gif/gifset_firebubbles/fireworkp_40.gif
/imgs/gif/gifset_firebubbles/fireworkp_5.gif
/imgs/gif/gifset_firebubbles/fireworkp_50.gif
/imgs/gif/gifset_firebubbles/fireworkp_6.gif
/imgs/gif/gifset_firebubbles/fireworkp_7.gif
/imgs/gif/gifset_firebubbles/fireworkp_70.gif
/imgs/gif/gifset_firebubbles/fireworkp_8.gif
/imgs/gif/gifset_firebubbles/fireworkp_80.gif
/imgs/gif/gifset_firebubbles/fireworkp_9.gif
/imgs/gif/gifset_firebubbles/fireworkp_90.gif
/imgs/gif/gifset_firebubbles/fireworkq.gif
/imgs/gif/gifset_firebubbles/fireworkq_1.gif
/imgs/gif/gifset_firebubbles/fireworkq_10.gif
/imgs/gif/gifset_firebubbles/fireworkq_100.gif
/imgs/gif/gifset_firebubbles/fireworkq_2.gif
/imgs/gif/gifset_firebubbles/fireworkq_20.gif
/imgs/gif/gifset_firebubbles/fireworkq_3.gif
/imgs/gif/gifset_firebubbles/fireworkq_30.gif
/imgs/gif/gifset_firebubbles/fireworkq_4.gif
/imgs/gif/gifset_firebubbles/fireworkq_40.gif
/imgs/gif/gifset_firebubbles/fireworkq_5.gif
/imgs/gif/gifset_firebubbles/fireworkq_50.gif
/imgs/gif/gifset_firebubbles/fireworkq_6.gif
/imgs/gif/gifset_firebubbles/fireworkq_7.gif
/imgs/gif/gifset_firebubbles/fireworkq_70.gif
/imgs/gif/gifset_firebubbles/fireworkq_8.gif
/imgs/gif/gifset_firebubbles/fireworkq_80.gif
/imgs/gif/gifset_firebubbles/fireworkq_9.gif
/imgs/gif/gifset_firebubbles/fireworkq_90.gif
/imgs/gif/gifset_h/geard2.gif
/imgs/gif/gifset_h/geard2b.gif
/imgs/gif/gifset_h/geard2b_1.gif
/imgs/gif/gifset_h/geard2b_10.gif
/imgs/gif/gifset_h/geard2b_100.gif
/imgs/gif/gifset_h/geard2b_2.gif
/imgs/gif/gifset_h/geard2b_20.gif
/imgs/gif/gifset_h/geard2b_3.gif
/imgs/gif/gifset_h/geard2b_30.gif
/imgs/gif/gifset_h/geard2b_4.gif
/imgs/gif/gifset_h/geard2b_40.gif
/imgs/gif/gifset_h/geard2b_5.gif
/imgs/gif/gifset_h/geard2b_50.gif
/imgs/gif/gifset_h/geard2b_6.gif
/imgs/gif/gifset_h/geard2b_7.gif
/imgs/gif/gifset_h/geard2b_70.gif
/imgs/gif/gifset_h/geard2b_8.gif
/imgs/gif/gifset_h/geard2b_80.gif
/imgs/gif/gifset_h/geard2b_9.gif
/imgs/gif/gifset_h/geard2b_90.gif
/imgs/gif/gifset_h/geard2d.gif
/imgs/gif/gifset_h/geard2d_1.gif
/imgs/gif/gifset_h/geard2d_10.gif
/imgs/gif/gifset_h/geard2d_100.gif
/imgs/gif/gifset_h/geard2d_2.gif
/imgs/gif/gifset_h/geard2d_20.gif
/imgs/gif/gifset_h/geard2d_3.gif
/imgs/gif/gifset_h/geard2d_30.gif
/imgs/gif/gifset_h/geard2d_4.gif
/imgs/gif/gifset_h/geard2d_40.gif
/imgs/gif/gifset_h/geard2d_5.gif
/imgs/gif/gifset_h/geard2d_50.gif
/imgs/gif/gifset_h/geard2d_6.gif
/imgs/gif/gifset_h/geard2d_7.gif
/imgs/gif/gifset_h/geard2d_70.gif
/imgs/gif/gifset_h/geard2d_8.gif
/imgs/gif/gifset_h/geard2d_80.gif
/imgs/gif/gifset_h/geard2d_9.gif
/imgs/gif/gifset_h/geard2d_90.gif
/imgs/gif/gifset_h/geard2p.gif
/imgs/gif/gifset_h/geard2p_1.gif
/imgs/gif/gifset_h/geard2p_10.gif
/imgs/gif/gifset_h/geard2p_100.gif
/imgs/gif/gifset_h/geard2p_2.gif
/imgs/gif/gifset_h/geard2p_20.gif
/imgs/gif/gifset_h/geard2p_3.gif
/imgs/gif/gifset_h/geard2p_30.gif
/imgs/gif/gifset_h/geard2p_4.gif
/imgs/gif/gifset_h/geard2p_40.gif
/imgs/gif/gifset_h/geard2p_5.gif
/imgs/gif/gifset_h/geard2p_50.gif
/imgs/gif/gifset_h/geard2p_6.gif
/imgs/gif/gifset_h/geard2p_7.gif
/imgs/gif/gifset_h/geard2p_70.gif
/imgs/gif/gifset_h/geard2p_8.gif
/imgs/gif/gifset_h/geard2p_80.gif
/imgs/gif/gifset_h/geard2p_9.gif
/imgs/gif/gifset_h/geard2p_90.gif
/imgs/gif/gifset_h/geard2q.gif
/imgs/gif/gifset_h/geard2q_1.gif
/imgs/gif/gifset_h/geard2q_10.gif
/imgs/gif/gifset_h/geard2q_100.gif
/imgs/gif/gifset_h/geard2q_2.gif
/imgs/gif/gifset_h/geard2q_20.gif
/imgs/gif/gifset_h/geard2q_3.gif
/imgs/gif/gifset_h/geard2q_30.gif
/imgs/gif/gifset_h/geard2q_4.gif
/imgs/gif/gifset_h/geard2q_40.gif
/imgs/gif/gifset_h/geard2q_5.gif
/imgs/gif/gifset_h/geard2q_50.gif
/imgs/gif/gifset_h/geard2q_6.gif
/imgs/gif/gifset_h/geard2q_7.gif
/imgs/gif/gifset_h/geard2q_70.gif
/imgs/gif/gifset_h/geard2q_8.gif
/imgs/gif/gifset_h/geard2q_80.gif
/imgs/gif/gifset_h/geard2q_9.gif
/imgs/gif/gifset_h/geard2q_90.gif
/imgs/gif/gifset_h/gears2.gif
/imgs/gif/gifset_h/gears2b.gif
/imgs/gif/gifset_h/gears2b_1.gif
/imgs/gif/gifset_h/gears2b_10.gif
/imgs/gif/gifset_h/gears2b_100.gif
/imgs/gif/gifset_h/gears2b_2.gif
/imgs/gif/gifset_h/gears2b_20.gif
/imgs/gif/gifset_h/gears2b_3.gif
/imgs/gif/gifset_h/gears2b_30.gif
/imgs/gif/gifset_h/gears2b_4.gif
/imgs/gif/gifset_h/gears2b_40.gif
/imgs/gif/gifset_h/gears2b_5.gif
/imgs/gif/gifset_h/gears2b_50.gif
/imgs/gif/gifset_h/gears2b_6.gif
/imgs/gif/gifset_h/gears2b_7.gif
/imgs/gif/gifset_h/gears2b_70.gif
/imgs/gif/gifset_h/gears2b_8.gif
/imgs/gif/gifset_h/gears2b_80.gif
/imgs/gif/gifset_h/gears2b_9.gif
/imgs/gif/gifset_h/gears2b_90.gif
/imgs/gif/gifset_h/gears2d.gif
/imgs/gif/gifset_h/gears2d_1.gif
/imgs/gif/gifset_h/gears2d_10.gif
/imgs/gif/gifset_h/gears2d_100.gif
/imgs/gif/gifset_h/gears2d_2.gif
/imgs/gif/gifset_h/gears2d_20.gif
/imgs/gif/gifset_h/gears2d_3.gif
/imgs/gif/gifset_h/gears2d_30.gif
/imgs/gif/gifset_h/gears2d_4.gif
/imgs/gif/gifset_h/gears2d_40.gif
/imgs/gif/gifset_h/gears2d_5.gif
/imgs/gif/gifset_h/gears2d_50.gif
/imgs/gif/gifset_h/gears2d_6.gif
/imgs/gif/gifset_h/gears2d_7.gif
/imgs/gif/gifset_h/gears2d_70.gif
/imgs/gif/gifset_h/gears2d_8.gif
/imgs/gif/gifset_h/gears2d_80.gif
/imgs/gif/gifset_h/gears2d_9.gif
/imgs/gif/gifset_h/gears2d_90.gif
/imgs/gif/gifset_h/gears2p.gif
/imgs/gif/gifset_h/gears2p_1.gif
/imgs/gif/gifset_h/gears2p_10.gif
/imgs/gif/gifset_h/gears2p_100.gif
/imgs/gif/gifset_h/gears2p_2.gif
/imgs/gif/gifset_h/gears2p_20.gif
/imgs/gif/gifset_h/gears2p_3.gif
/imgs/gif/gifset_h/gears2p_30.gif
/imgs/gif/gifset_h/gears2p_4.gif
/imgs/gif/gifset_h/gears2p_40.gif
/imgs/gif/gifset_h/gears2p_5.gif
/imgs/gif/gifset_h/gears2p_50.gif
/imgs/gif/gifset_h/gears2p_6.gif
/imgs/gif/gifset_h/gears2p_7.gif
/imgs/gif/gifset_h/gears2p_70.gif
/imgs/gif/gifset_h/gears2p_8.gif
/imgs/gif/gifset_h/gears2p_80.gif
/imgs/gif/gifset_h/gears2p_9.gif
/imgs/gif/gifset_h/gears2p_90.gif
/imgs/gif/gifset_h/gears2q.gif
/imgs/gif/gifset_h/gears2q_1.gif
/imgs/gif/gifset_h/gears2q_10.gif
/imgs/gif/gifset_h/gears2q_100.gif
/imgs/gif/gifset_h/gears2q_2.gif
/imgs/gif/gifset_h/gears2q_20.gif
/imgs/gif/gifset_h/gears2q_3.gif
/imgs/gif/gifset_h/gears2q_30.gif
/imgs/gif/gifset_h/gears2q_4.gif
/imgs/gif/gifset_h/gears2q_40.gif
/imgs/gif/gifset_h/gears2q_5.gif
/imgs/gif/gifset_h/gears2q_50.gif
/imgs/gif/gifset_h/gears2q_6.gif
/imgs/gif/gifset_h/gears2q_7.gif
/imgs/gif/gifset_h/gears2q_70.gif
/imgs/gif/gifset_h/gears2q_8.gif
/imgs/gif/gifset_h/gears2q_80.gif
/imgs/gif/gifset_h/gears2q_9.gif
/imgs/gif/gifset_h/gears2q_90.gif
/imgs/gif/gifset_h/header.gif
/imgs/gif/gifset_h/headerb.gif
/imgs/gif/gifset_h/headerb_1.gif
/imgs/gif/gifset_h/headerb_10.gif
/imgs/gif/gifset_h/headerb_100.gif
/imgs/gif/gifset_h/headerb_2.gif
/imgs/gif/gifset_h/headerb_20.gif
/imgs/gif/gifset_h/headerb_3.gif
/imgs/gif/gifset_h/headerb_30.gif
/imgs/gif/gifset_h/headerb_4.gif
/imgs/gif/gifset_h/headerb_40.gif
/imgs/gif/gifset_h/headerb_5.gif
/imgs/gif/gifset_h/headerb_50.gif
/imgs/gif/gifset_h/headerb_6.gif
/imgs/gif/gifset_h/headerb_7.gif
/imgs/gif/gifset_h/headerb_70.gif
/imgs/gif/gifset_h/headerb_8.gif
/imgs/gif/gifset_h/headerb_80.gif
/imgs/gif/gifset_h/headerb_9.gif
/imgs/gif/gifset_h/headerb_90.gif
/imgs/gif/gifset_h/headerd.gif
/imgs/gif/gifset_h/headerd_1.gif
/imgs/gif/gifset_h/headerd_10.gif
/imgs/gif/gifset_h/headerd_100.gif
/imgs/gif/gifset_h/headerd_2.gif
/imgs/gif/gifset_h/headerd_20.gif
/imgs/gif/gifset_h/headerd_3.gif
/imgs/gif/gifset_h/headerd_30.gif
/imgs/gif/gifset_h/headerd_4.gif
/imgs/gif/gifset_h/headerd_40.gif
/imgs/gif/gifset_h/headerd_5.gif
/imgs/gif/gifset_h/headerd_50.gif
/imgs/gif/gifset_h/headerd_6.gif
/imgs/gif/gifset_h/headerd_7.gif
/imgs/gif/gifset_h/headerd_70.gif
/imgs/gif/gifset_h/headerd_8.gif
/imgs/gif/gifset_h/headerd_80.gif
/imgs/gif/gifset_h/headerd_9.gif
/imgs/gif/gifset_h/headerd_90.gif
/imgs/gif/gifset_h/headerp.gif
/imgs/gif/gifset_h/headerp_1.gif
/imgs/gif/gifset_h/headerp_10.gif
/imgs/gif/gifset_h/headerp_100.gif
/imgs/gif/gifset_h/headerp_2.gif
/imgs/gif/gifset_h/headerp_20.gif
/imgs/gif/gifset_h/headerp_3.gif
/imgs/gif/gifset_h/headerp_30.gif
/imgs/gif/gifset_h/headerp_4.gif
/imgs/gif/gifset_h/headerp_40.gif
/imgs/gif/gifset_h/headerp_5.gif
/imgs/gif/gifset_h/headerp_50.gif
/imgs/gif/gifset_h/headerp_6.gif
/imgs/gif/gifset_h/headerp_7.gif
/imgs/gif/gifset_h/headerp_70.gif
/imgs/gif/gifset_h/headerp_8.gif
/imgs/gif/gifset_h/headerp_80.gif
/imgs/gif/gifset_h/headerp_9.gif
/imgs/gif/gifset_h/headerp_90.gif
/imgs/gif/gifset_h/headerq.gif
/imgs/gif/gifset_h/headerq_1.gif
/imgs/gif/gifset_h/headerq_10.gif
/imgs/gif/gifset_h/headerq_100.gif
/imgs/gif/gifset_h/headerq_2.gif
/imgs/gif/gifset_h/headerq_20.gif
/imgs/gif/gifset_h/headerq_3.gif
/imgs/gif/gifset_h/headerq_30.gif
/imgs/gif/gifset_h/headerq_4.gif
/imgs/gif/gifset_h/headerq_40.gif
/imgs/gif/gifset_h/headerq_5.gif
/imgs/gif/gifset_h/headerq_50.gif
/imgs/gif/gifset_h/headerq_6.gif
/imgs/gif/gifset_h/headerq_7.gif
/imgs/gif/gifset_h/headerq_70.gif
/imgs/gif/gifset_h/headerq_8.gif
/imgs/gif/gifset_h/headerq_80.gif
/imgs/gif/gifset_h/headerq_9.gif
/imgs/gif/gifset_h/headerq_90.gif
/imgs/gif/gifset_h/heart.gif
/imgs/gif/gifset_h/heartb.gif
/imgs/gif/gifset_h/heartb_1.gif
/imgs/gif/gifset_h/heartb_10.gif
/imgs/gif/gifset_h/heartb_100.gif
/imgs/gif/gifset_h/heartb_2.gif
/imgs/gif/gifset_h/heartb_20.gif
/imgs/gif/gifset_h/heartb_3.gif
/imgs/gif/gifset_h/heartb_30.gif
/imgs/gif/gifset_h/heartb_4.gif
/imgs/gif/gifset_h/heartb_40.gif
/imgs/gif/gifset_h/heartb_5.gif
/imgs/gif/gifset_h/heartb_50.gif
/imgs/gif/gifset_h/heartb_6.gif
/imgs/gif/gifset_h/heartb_7.gif
/imgs/gif/gifset_h/heartb_70.gif
/imgs/gif/gifset_h/heartb_8.gif
/imgs/gif/gifset_h/heartb_80.gif
/imgs/gif/gifset_h/heartb_9.gif
/imgs/gif/gifset_h/heartb_90.gif
/imgs/gif/gifset_h/heartd.gif
/imgs/gif/gifset_h/heartd_1.gif
/imgs/gif/gifset_h/heartd_10.gif
/imgs/gif/gifset_h/heartd_100.gif
/imgs/gif/gifset_h/heartd_2.gif
/imgs/gif/gifset_h/heartd_20.gif
/imgs/gif/gifset_h/heartd_3.gif
/imgs/gif/gifset_h/heartd_30.gif
/imgs/gif/gifset_h/heartd_4.gif
/imgs/gif/gifset_h/heartd_40.gif
/imgs/gif/gifset_h/heartd_5.gif
/imgs/gif/gifset_h/heartd_50.gif
/imgs/gif/gifset_h/heartd_6.gif
/imgs/gif/gifset_h/heartd_7.gif
/imgs/gif/gifset_h/heartd_70.gif
/imgs/gif/gifset_h/heartd_8.gif
/imgs/gif/gifset_h/heartd_80.gif
/imgs/gif/gifset_h/heartd_9.gif
/imgs/gif/gifset_h/heartd_90.gif
/imgs/gif/gifset_h/heartp.gif
/imgs/gif/gifset_h/heartp_1.gif
/imgs/gif/gifset_h/heartp_10.gif
/imgs/gif/gifset_h/heartp_100.gif
/imgs/gif/gifset_h/heartp_2.gif
/imgs/gif/gifset_h/heartp_20.gif
/imgs/gif/gifset_h/heartp_3.gif
/imgs/gif/gifset_h/heartp_30.gif
/imgs/gif/gifset_h/heartp_4.gif
/imgs/gif/gifset_h/heartp_40.gif
/imgs/gif/gifset_h/heartp_5.gif
/imgs/gif/gifset_h/heartp_50.gif
/imgs/gif/gifset_h/heartp_6.gif
/imgs/gif/gifset_h/heartp_7.gif
/imgs/gif/gifset_h/heartp_70.gif
/imgs/gif/gifset_h/heartp_8.gif
/imgs/gif/gifset_h/heartp_80.gif
/imgs/gif/gifset_h/heartp_9.gif
/imgs/gif/gifset_h/heartp_90.gif
/imgs/gif/gifset_h/heartq.gif
/imgs/gif/gifset_h/heartq_1.gif
/imgs/gif/gifset_h/heartq_10.gif
/imgs/gif/gifset_h/heartq_100.gif
/imgs/gif/gifset_h/heartq_2.gif
/imgs/gif/gifset_h/heartq_20.gif
/imgs/gif/gifset_h/heartq_3.gif
/imgs/gif/gifset_h/heartq_30.gif
/imgs/gif/gifset_h/heartq_4.gif
/imgs/gif/gifset_h/heartq_40.gif
/imgs/gif/gifset_h/heartq_5.gif
/imgs/gif/gifset_h/heartq_50.gif
/imgs/gif/gifset_h/heartq_6.gif
/imgs/gif/gifset_h/heartq_7.gif
/imgs/gif/gifset_h/heartq_70.gif
/imgs/gif/gifset_h/heartq_8.gif
/imgs/gif/gifset_h/heartq_80.gif
/imgs/gif/gifset_h/heartq_9.gif
/imgs/gif/gifset_h/heartq_90.gif
/imgs/gif/gifset_h/helpbean.gif
/imgs/gif/gifset_knots/knot.gif
/imgs/gif/gifset_knots/knot_koeye.gif
/imgs/gif/gifset_knots/knotb.gif
/imgs/gif/gifset_knots/knotb_1.gif
/imgs/gif/gifset_knots/knotb_10.gif
/imgs/gif/gifset_knots/knotb_100.gif
/imgs/gif/gifset_knots/knotb_2.gif
/imgs/gif/gifset_knots/knotb_20.gif
/imgs/gif/gifset_knots/knotb_3.gif
/imgs/gif/gifset_knots/knotb_30.gif
/imgs/gif/gifset_knots/knotb_4.gif
/imgs/gif/gifset_knots/knotb_40.gif
/imgs/gif/gifset_knots/knotb_5.gif
/imgs/gif/gifset_knots/knotb_50.gif
/imgs/gif/gifset_knots/knotb_6.gif
/imgs/gif/gifset_knots/knotb_7.gif
/imgs/gif/gifset_knots/knotb_70.gif
/imgs/gif/gifset_knots/knotb_8.gif
/imgs/gif/gifset_knots/knotb_80.gif
/imgs/gif/gifset_knots/knotb_9.gif
/imgs/gif/gifset_knots/knotb_90.gif
/imgs/gif/gifset_knots/knotd.gif
/imgs/gif/gifset_knots/knotd_1.gif
/imgs/gif/gifset_knots/knotd_10.gif
/imgs/gif/gifset_knots/knotd_100.gif
/imgs/gif/gifset_knots/knotd_2.gif
/imgs/gif/gifset_knots/knotd_20.gif
/imgs/gif/gifset_knots/knotd_3.gif
/imgs/gif/gifset_knots/knotd_30.gif
/imgs/gif/gifset_knots/knotd_4.gif
/imgs/gif/gifset_knots/knotd_40.gif
/imgs/gif/gifset_knots/knotd_5.gif
/imgs/gif/gifset_knots/knotd_50.gif
/imgs/gif/gifset_knots/knotd_6.gif
/imgs/gif/gifset_knots/knotd_7.gif
/imgs/gif/gifset_knots/knotd_70.gif
/imgs/gif/gifset_knots/knotd_8.gif
/imgs/gif/gifset_knots/knotd_80.gif
/imgs/gif/gifset_knots/knotd_9.gif
/imgs/gif/gifset_knots/knotd_90.gif
/imgs/gif/gifset_knots/knotl.gif
/imgs/gif/gifset_knots/knotp.gif
/imgs/gif/gifset_knots/knotp_1.gif
/imgs/gif/gifset_knots/knotp_10.gif
/imgs/gif/gifset_knots/knotp_100.gif
/imgs/gif/gifset_knots/knotp_2.gif
/imgs/gif/gifset_knots/knotp_20.gif
/imgs/gif/gifset_knots/knotp_3.gif
/imgs/gif/gifset_knots/knotp_30.gif
/imgs/gif/gifset_knots/knotp_4.gif
/imgs/gif/gifset_knots/knotp_40.gif
/imgs/gif/gifset_knots/knotp_5.gif
/imgs/gif/gifset_knots/knotp_50.gif
/imgs/gif/gifset_knots/knotp_6.gif
/imgs/gif/gifset_knots/knotp_7.gif
/imgs/gif/gifset_knots/knotp_70.gif
/imgs/gif/gifset_knots/knotp_8.gif
/imgs/gif/gifset_knots/knotp_80.gif
/imgs/gif/gifset_knots/knotp_9.gif
/imgs/gif/gifset_knots/knotp_90.gif
/imgs/gif/gifset_knots/knotq.gif
/imgs/gif/gifset_knots/knotq_1.gif
/imgs/gif/gifset_knots/knotq_10.gif
/imgs/gif/gifset_knots/knotq_100.gif
/imgs/gif/gifset_knots/knotq_2.gif
/imgs/gif/gifset_knots/knotq_20.gif
/imgs/gif/gifset_knots/knotq_3.gif
/imgs/gif/gifset_knots/knotq_30.gif
/imgs/gif/gifset_knots/knotq_4.gif
/imgs/gif/gifset_knots/knotq_40.gif
/imgs/gif/gifset_knots/knotq_5.gif
/imgs/gif/gifset_knots/knotq_50.gif
/imgs/gif/gifset_knots/knotq_6.gif
/imgs/gif/gifset_knots/knotq_7.gif
/imgs/gif/gifset_knots/knotq_70.gif
/imgs/gif/gifset_knots/knotq_8.gif
/imgs/gif/gifset_knots/knotq_80.gif
/imgs/gif/gifset_knots/knotq_9.gif
/imgs/gif/gifset_knots/knotq_90.gif
/imgs/gif/gifset_knots/koeye_knot.gif
/imgs/gif/gifset_knots/koeye_knot_100x40.gif
/imgs/gif/gifset_knots/koeye_knot_200x80.gif
/imgs/gif/gifset_knots/koeye_knot_400x160.gif
/imgs/gif/gifset_knots/koeye_rings.gif
/imgs/gif/gifset_m/laser1.gif
/imgs/gif/gifset_m/laser1b.gif
/imgs/gif/gifset_m/laser1b_1.gif
/imgs/gif/gifset_m/laser1b_10.gif
/imgs/gif/gifset_m/laser1b_100.gif
/imgs/gif/gifset_m/laser1b_2.gif
/imgs/gif/gifset_m/laser1b_20.gif
/imgs/gif/gifset_m/laser1b_3.gif
/imgs/gif/gifset_m/laser1b_30.gif
/imgs/gif/gifset_m/laser1b_4.gif
/imgs/gif/gifset_m/laser1b_40.gif
/imgs/gif/gifset_m/laser1b_5.gif
/imgs/gif/gifset_m/laser1b_50.gif
/imgs/gif/gifset_m/laser1b_6.gif
/imgs/gif/gifset_m/laser1b_7.gif
/imgs/gif/gifset_m/laser1b_70.gif
/imgs/gif/gifset_m/laser1b_8.gif
/imgs/gif/gifset_m/laser1b_80.gif
/imgs/gif/gifset_m/laser1b_9.gif
/imgs/gif/gifset_m/laser1b_90.gif
/imgs/gif/gifset_m/laser1d.gif
/imgs/gif/gifset_m/laser1d_1.gif
/imgs/gif/gifset_m/laser1d_10.gif
/imgs/gif/gifset_m/laser1d_100.gif
/imgs/gif/gifset_m/laser1d_2.gif
/imgs/gif/gifset_m/laser1d_20.gif
/imgs/gif/gifset_m/laser1d_3.gif
/imgs/gif/gifset_m/laser1d_30.gif
/imgs/gif/gifset_m/laser1d_4.gif
/imgs/gif/gifset_m/laser1d_40.gif
/imgs/gif/gifset_m/laser1d_5.gif
/imgs/gif/gifset_m/laser1d_50.gif
/imgs/gif/gifset_m/laser1d_6.gif
/imgs/gif/gifset_m/laser1d_7.gif
/imgs/gif/gifset_m/laser1d_70.gif
/imgs/gif/gifset_m/laser1d_8.gif
/imgs/gif/gifset_m/laser1d_80.gif
/imgs/gif/gifset_m/laser1d_9.gif
/imgs/gif/gifset_m/laser1d_90.gif
/imgs/gif/gifset_m/laser1p.gif
/imgs/gif/gifset_m/laser1p_1.gif
/imgs/gif/gifset_m/laser1p_10.gif
/imgs/gif/gifset_m/laser1p_100.gif
/imgs/gif/gifset_m/laser1p_2.gif
/imgs/gif/gifset_m/laser1p_20.gif
/imgs/gif/gifset_m/laser1p_3.gif
/imgs/gif/gifset_m/laser1p_30.gif
/imgs/gif/gifset_m/laser1p_4.gif
/imgs/gif/gifset_m/laser1p_40.gif
/imgs/gif/gifset_m/laser1p_5.gif
/imgs/gif/gifset_m/laser1p_50.gif
/imgs/gif/gifset_m/laser1p_6.gif
/imgs/gif/gifset_m/laser1p_7.gif
/imgs/gif/gifset_m/laser1p_70.gif
/imgs/gif/gifset_m/laser1p_8.gif
/imgs/gif/gifset_m/laser1p_80.gif
/imgs/gif/gifset_m/laser1p_9.gif
/imgs/gif/gifset_m/laser1p_90.gif
/imgs/gif/gifset_m/laser1q.gif
/imgs/gif/gifset_m/laser1q_1.gif
/imgs/gif/gifset_m/laser1q_10.gif
/imgs/gif/gifset_m/laser1q_100.gif
/imgs/gif/gifset_m/laser1q_2.gif
/imgs/gif/gifset_m/laser1q_20.gif
/imgs/gif/gifset_m/laser1q_3.gif
/imgs/gif/gifset_m/laser1q_30.gif
/imgs/gif/gifset_m/laser1q_4.gif
/imgs/gif/gifset_m/laser1q_40.gif
/imgs/gif/gifset_m/laser1q_5.gif
/imgs/gif/gifset_m/laser1q_50.gif
/imgs/gif/gifset_m/laser1q_6.gif
/imgs/gif/gifset_m/laser1q_7.gif
/imgs/gif/gifset_m/laser1q_70.gif
/imgs/gif/gifset_m/laser1q_8.gif
/imgs/gif/gifset_m/laser1q_80.gif
/imgs/gif/gifset_m/laser1q_9.gif
/imgs/gif/gifset_m/laser1q_90.gif
/imgs/gif/gifset_m/laser2.gif
/imgs/gif/gifset_m/laser2b.gif
/imgs/gif/gifset_m/laser2b_1.gif
/imgs/gif/gifset_m/laser2b_10.gif
/imgs/gif/gifset_m/laser2b_100.gif
/imgs/gif/gifset_m/laser2b_2.gif
/imgs/gif/gifset_m/laser2b_20.gif
/imgs/gif/gifset_m/laser2b_3.gif
/imgs/gif/gifset_m/laser2b_30.gif
/imgs/gif/gifset_m/laser2b_4.gif
/imgs/gif/gifset_m/laser2b_40.gif
/imgs/gif/gifset_m/laser2b_5.gif
/imgs/gif/gifset_m/laser2b_50.gif
/imgs/gif/gifset_m/laser2b_6.gif
/imgs/gif/gifset_m/laser2b_7.gif
/imgs/gif/gifset_m/laser2b_70.gif
/imgs/gif/gifset_m/laser2b_8.gif
/imgs/gif/gifset_m/laser2b_80.gif
/imgs/gif/gifset_m/laser2b_9.gif
/imgs/gif/gifset_m/laser2b_90.gif
/imgs/gif/gifset_m/laser2d.gif
/imgs/gif/gifset_m/laser2d_1.gif
/imgs/gif/gifset_m/laser2d_10.gif
/imgs/gif/gifset_m/laser2d_100.gif
/imgs/gif/gifset_m/laser2d_2.gif
/imgs/gif/gifset_m/laser2d_20.gif
/imgs/gif/gifset_m/laser2d_3.gif
/imgs/gif/gifset_m/laser2d_30.gif
/imgs/gif/gifset_m/laser2d_4.gif
/imgs/gif/gifset_m/laser2d_40.gif
/imgs/gif/gifset_m/laser2d_5.gif
/imgs/gif/gifset_m/laser2d_50.gif
/imgs/gif/gifset_m/laser2d_6.gif
/imgs/gif/gifset_m/laser2d_7.gif
/imgs/gif/gifset_m/laser2d_70.gif
/imgs/gif/gifset_m/laser2d_8.gif
/imgs/gif/gifset_m/laser2d_80.gif
/imgs/gif/gifset_m/laser2d_9.gif
/imgs/gif/gifset_m/laser2d_90.gif
/imgs/gif/gifset_m/laser2p.gif
/imgs/gif/gifset_m/laser2p_1.gif
/imgs/gif/gifset_m/laser2p_10.gif
/imgs/gif/gifset_m/laser2p_100.gif
/imgs/gif/gifset_m/laser2p_2.gif
/imgs/gif/gifset_m/laser2p_20.gif
/imgs/gif/gifset_m/laser2p_3.gif
/imgs/gif/gifset_m/laser2p_30.gif
/imgs/gif/gifset_m/laser2p_4.gif
/imgs/gif/gifset_m/laser2p_40.gif
/imgs/gif/gifset_m/laser2p_5.gif
/imgs/gif/gifset_m/laser2p_50.gif
/imgs/gif/gifset_m/laser2p_6.gif
/imgs/gif/gifset_m/laser2p_7.gif
/imgs/gif/gifset_m/laser2p_70.gif
/imgs/gif/gifset_m/laser2p_8.gif
/imgs/gif/gifset_m/laser2p_80.gif
/imgs/gif/gifset_m/laser2p_9.gif
/imgs/gif/gifset_m/laser2p_90.gif
/imgs/gif/gifset_m/laser2q.gif
/imgs/gif/gifset_m/laser2q_1.gif
/imgs/gif/gifset_m/laser2q_10.gif
/imgs/gif/gifset_m/laser2q_100.gif
/imgs/gif/gifset_m/laser2q_2.gif
/imgs/gif/gifset_m/laser2q_20.gif
/imgs/gif/gifset_m/laser2q_3.gif
/imgs/gif/gifset_m/laser2q_30.gif
/imgs/gif/gifset_m/laser2q_4.gif
/imgs/gif/gifset_m/laser2q_40.gif
/imgs/gif/gifset_m/laser2q_5.gif
/imgs/gif/gifset_m/laser2q_50.gif
/imgs/gif/gifset_m/laser2q_6.gif
/imgs/gif/gifset_m/laser2q_7.gif
/imgs/gif/gifset_m/laser2q_70.gif
/imgs/gif/gifset_m/laser2q_8.gif
/imgs/gif/gifset_m/laser2q_80.gif
/imgs/gif/gifset_m/laser2q_9.gif
/imgs/gif/gifset_m/laser2q_90.gif
/imgs/gif/gifset_m/laser3.gif
/imgs/gif/gifset_m/laser3b.gif
/imgs/gif/gifset_m/laser3b_1.gif
/imgs/gif/gifset_m/laser3b_10.gif
/imgs/gif/gifset_m/laser3b_100.gif
/imgs/gif/gifset_m/laser3b_2.gif
/imgs/gif/gifset_m/laser3b_20.gif
/imgs/gif/gifset_m/laser3b_3.gif
/imgs/gif/gifset_m/laser3b_30.gif
/imgs/gif/gifset_m/laser3b_4.gif
/imgs/gif/gifset_m/laser3b_40.gif
/imgs/gif/gifset_m/laser3b_5.gif
/imgs/gif/gifset_m/laser3b_50.gif
/imgs/gif/gifset_m/laser3b_6.gif
/imgs/gif/gifset_m/laser3b_7.gif
/imgs/gif/gifset_m/laser3b_70.gif
/imgs/gif/gifset_m/laser3b_8.gif
/imgs/gif/gifset_m/laser3b_80.gif
/imgs/gif/gifset_m/laser3b_9.gif
/imgs/gif/gifset_m/laser3b_90.gif
/imgs/gif/gifset_m/laser3d.gif
/imgs/gif/gifset_m/laser3d_1.gif
/imgs/gif/gifset_m/laser3d_10.gif
/imgs/gif/gifset_m/laser3d_100.gif
/imgs/gif/gifset_m/laser3d_2.gif
/imgs/gif/gifset_m/laser3d_20.gif
/imgs/gif/gifset_m/laser3d_3.gif
/imgs/gif/gifset_m/laser3d_30.gif
/imgs/gif/gifset_m/laser3d_4.gif
/imgs/gif/gifset_m/laser3d_40.gif
/imgs/gif/gifset_m/laser3d_5.gif
/imgs/gif/gifset_m/laser3d_50.gif
/imgs/gif/gifset_m/laser3d_6.gif
/imgs/gif/gifset_m/laser3d_7.gif
/imgs/gif/gifset_m/laser3d_70.gif
/imgs/gif/gifset_m/laser3d_8.gif
/imgs/gif/gifset_m/laser3d_80.gif
/imgs/gif/gifset_m/laser3d_9.gif
/imgs/gif/gifset_m/laser3d_90.gif
/imgs/gif/gifset_m/laser3p.gif
/imgs/gif/gifset_m/laser3p_1.gif
/imgs/gif/gifset_m/laser3p_10.gif
/imgs/gif/gifset_m/laser3p_100.gif
/imgs/gif/gifset_m/laser3p_2.gif
/imgs/gif/gifset_m/laser3p_20.gif
/imgs/gif/gifset_m/laser3p_3.gif
/imgs/gif/gifset_m/laser3p_30.gif
/imgs/gif/gifset_m/laser3p_4.gif
/imgs/gif/gifset_m/laser3p_40.gif
/imgs/gif/gifset_m/laser3p_5.gif
/imgs/gif/gifset_m/laser3p_50.gif
/imgs/gif/gifset_m/laser3p_6.gif
/imgs/gif/gifset_m/laser3p_7.gif
/imgs/gif/gifset_m/laser3p_70.gif
/imgs/gif/gifset_m/laser3p_8.gif
/imgs/gif/gifset_m/laser3p_80.gif
/imgs/gif/gifset_m/laser3p_9.gif
/imgs/gif/gifset_m/laser3p_90.gif
/imgs/gif/gifset_m/laser3q.gif
/imgs/gif/gifset_m/laser3q_1.gif
/imgs/gif/gifset_m/laser3q_10.gif
/imgs/gif/gifset_m/laser3q_100.gif
/imgs/gif/gifset_m/laser3q_2.gif
/imgs/gif/gifset_m/laser3q_20.gif
/imgs/gif/gifset_m/laser3q_3.gif
/imgs/gif/gifset_m/laser3q_30.gif
/imgs/gif/gifset_m/laser3q_4.gif
/imgs/gif/gifset_m/laser3q_40.gif
/imgs/gif/gifset_m/laser3q_5.gif
/imgs/gif/gifset_m/laser3q_50.gif
/imgs/gif/gifset_m/laser3q_6.gif
/imgs/gif/gifset_m/laser3q_7.gif
/imgs/gif/gifset_m/laser3q_70.gif
/imgs/gif/gifset_m/laser3q_8.gif
/imgs/gif/gifset_m/laser3q_80.gif
/imgs/gif/gifset_m/laser3q_9.gif
/imgs/gif/gifset_m/laser3q_90.gif
/imgs/gif/gifset_m/meterbars.gif
/imgs/gif/gifset_m/meterbarsb.gif
/imgs/gif/gifset_m/meterbarsb_1.gif
/imgs/gif/gifset_m/meterbarsb_10.gif
/imgs/gif/gifset_m/meterbarsb_100.gif
/imgs/gif/gifset_m/meterbarsb_2.gif
/imgs/gif/gifset_m/meterbarsb_20.gif
/imgs/gif/gifset_m/meterbarsb_3.gif
/imgs/gif/gifset_m/meterbarsb_30.gif
/imgs/gif/gifset_m/meterbarsb_4.gif
/imgs/gif/gifset_m/meterbarsb_40.gif
/imgs/gif/gifset_m/meterbarsb_5.gif
/imgs/gif/gifset_m/meterbarsb_50.gif
/imgs/gif/gifset_m/meterbarsb_6.gif
/imgs/gif/gifset_m/meterbarsb_7.gif
/imgs/gif/gifset_m/meterbarsb_70.gif
/imgs/gif/gifset_m/meterbarsb_8.gif
/imgs/gif/gifset_m/meterbarsb_80.gif
/imgs/gif/gifset_m/meterbarsb_9.gif
/imgs/gif/gifset_m/meterbarsb_90.gif
/imgs/gif/gifset_m/meterbarsd.gif
/imgs/gif/gifset_m/meterbarsd_1.gif
/imgs/gif/gifset_m/meterbarsd_10.gif
/imgs/gif/gifset_m/meterbarsd_100.gif
/imgs/gif/gifset_m/meterbarsd_2.gif
/imgs/gif/gifset_m/meterbarsd_20.gif
/imgs/gif/gifset_m/meterbarsd_3.gif
/imgs/gif/gifset_m/meterbarsd_30.gif
/imgs/gif/gifset_m/meterbarsd_4.gif
/imgs/gif/gifset_m/meterbarsd_40.gif
/imgs/gif/gifset_m/meterbarsd_5.gif
/imgs/gif/gifset_m/meterbarsd_50.gif
/imgs/gif/gifset_m/meterbarsd_6.gif
/imgs/gif/gifset_m/meterbarsd_7.gif
/imgs/gif/gifset_m/meterbarsd_70.gif
/imgs/gif/gifset_m/meterbarsd_8.gif
/imgs/gif/gifset_m/meterbarsd_80.gif
/imgs/gif/gifset_m/meterbarsd_9.gif
/imgs/gif/gifset_m/meterbarsd_90.gif
/imgs/gif/gifset_m/meterbarsp.gif
/imgs/gif/gifset_m/meterbarsp_1.gif
/imgs/gif/gifset_m/meterbarsp_10.gif
/imgs/gif/gifset_m/meterbarsp_100.gif
/imgs/gif/gifset_m/meterbarsp_2.gif
/imgs/gif/gifset_m/meterbarsp_20.gif
/imgs/gif/gifset_m/meterbarsp_3.gif
/imgs/gif/gifset_m/meterbarsp_30.gif
/imgs/gif/gifset_m/meterbarsp_4.gif
/imgs/gif/gifset_m/meterbarsp_40.gif
/imgs/gif/gifset_m/meterbarsp_5.gif
/imgs/gif/gifset_m/meterbarsp_50.gif
/imgs/gif/gifset_m/meterbarsp_6.gif
/imgs/gif/gifset_m/meterbarsp_7.gif
/imgs/gif/gifset_m/meterbarsp_70.gif
/imgs/gif/gifset_m/meterbarsp_8.gif
/imgs/gif/gifset_m/meterbarsp_80.gif
/imgs/gif/gifset_m/meterbarsp_9.gif
/imgs/gif/gifset_m/meterbarsp_90.gif
/imgs/gif/gifset_m/meterbarsq.gif
/imgs/gif/gifset_m/meterbarsq_1.gif
/imgs/gif/gifset_m/meterbarsq_10.gif
/imgs/gif/gifset_m/meterbarsq_100.gif
/imgs/gif/gifset_m/meterbarsq_2.gif
/imgs/gif/gifset_m/meterbarsq_20.gif
/imgs/gif/gifset_m/meterbarsq_3.gif
/imgs/gif/gifset_m/meterbarsq_30.gif
/imgs/gif/gifset_m/meterbarsq_4.gif
/imgs/gif/gifset_m/meterbarsq_40.gif
/imgs/gif/gifset_m/meterbarsq_5.gif
/imgs/gif/gifset_m/meterbarsq_50.gif
/imgs/gif/gifset_m/meterbarsq_6.gif
/imgs/gif/gifset_m/meterbarsq_7.gif
/imgs/gif/gifset_m/meterbarsq_70.gif
/imgs/gif/gifset_m/meterbarsq_8.gif
/imgs/gif/gifset_m/meterbarsq_80.gif
/imgs/gif/gifset_m/meterbarsq_9.gif
/imgs/gif/gifset_m/meterbarsq_90.gif
/imgs/gif/gifset_m/meterdots.gif
/imgs/gif/gifset_m/meterdotsb.gif
/imgs/gif/gifset_m/meterdotsb_1.gif
/imgs/gif/gifset_m/meterdotsb_10.gif
/imgs/gif/gifset_m/meterdotsb_100.gif
/imgs/gif/gifset_m/meterdotsb_2.gif
/imgs/gif/gifset_m/meterdotsb_20.gif
/imgs/gif/gifset_m/meterdotsb_3.gif
/imgs/gif/gifset_m/meterdotsb_30.gif
/imgs/gif/gifset_m/meterdotsb_4.gif
/imgs/gif/gifset_m/meterdotsb_40.gif
/imgs/gif/gifset_m/meterdotsb_5.gif
/imgs/gif/gifset_m/meterdotsb_50.gif
/imgs/gif/gifset_m/meterdotsb_6.gif
/imgs/gif/gifset_m/meterdotsb_7.gif
/imgs/gif/gifset_m/meterdotsb_70.gif
/imgs/gif/gifset_m/meterdotsb_8.gif
/imgs/gif/gifset_m/meterdotsb_80.gif
/imgs/gif/gifset_m/meterdotsb_9.gif
/imgs/gif/gifset_m/meterdotsb_90.gif
/imgs/gif/gifset_m/meterdotsd.gif
/imgs/gif/gifset_m/meterdotsd_1.gif
/imgs/gif/gifset_m/meterdotsd_10.gif
/imgs/gif/gifset_m/meterdotsd_100.gif
/imgs/gif/gifset_m/meterdotsd_2.gif
/imgs/gif/gifset_m/meterdotsd_20.gif
/imgs/gif/gifset_m/meterdotsd_3.gif
/imgs/gif/gifset_m/meterdotsd_30.gif
/imgs/gif/gifset_m/meterdotsd_4.gif
/imgs/gif/gifset_m/meterdotsd_40.gif
/imgs/gif/gifset_m/meterdotsd_5.gif
/imgs/gif/gifset_m/meterdotsd_50.gif
/imgs/gif/gifset_m/meterdotsd_6.gif
/imgs/gif/gifset_m/meterdotsd_7.gif
/imgs/gif/gifset_m/meterdotsd_70.gif
/imgs/gif/gifset_m/meterdotsd_8.gif
/imgs/gif/gifset_m/meterdotsd_80.gif
/imgs/gif/gifset_m/meterdotsd_9.gif
/imgs/gif/gifset_m/meterdotsd_90.gif
/imgs/gif/gifset_m/meterdotsp.gif
/imgs/gif/gifset_m/meterdotsp_1.gif
/imgs/gif/gifset_m/meterdotsp_10.gif
/imgs/gif/gifset_m/meterdotsp_100.gif
/imgs/gif/gifset_m/meterdotsp_2.gif
/imgs/gif/gifset_m/meterdotsp_20.gif
/imgs/gif/gifset_m/meterdotsp_3.gif
/imgs/gif/gifset_m/meterdotsp_30.gif
/imgs/gif/gifset_m/meterdotsp_4.gif
/imgs/gif/gifset_m/meterdotsp_40.gif
/imgs/gif/gifset_m/meterdotsp_5.gif
/imgs/gif/gifset_m/meterdotsp_50.gif
/imgs/gif/gifset_m/meterdotsp_6.gif
/imgs/gif/gifset_m/meterdotsp_7.gif
/imgs/gif/gifset_m/meterdotsp_70.gif
/imgs/gif/gifset_m/meterdotsp_8.gif
/imgs/gif/gifset_m/meterdotsp_80.gif
/imgs/gif/gifset_m/meterdotsp_9.gif
/imgs/gif/gifset_m/meterdotsp_90.gif
/imgs/gif/gifset_m/meterdotsq.gif
/imgs/gif/gifset_m/meterdotsq_1.gif
/imgs/gif/gifset_m/meterdotsq_10.gif
/imgs/gif/gifset_m/meterdotsq_100.gif
/imgs/gif/gifset_m/meterdotsq_2.gif
/imgs/gif/gifset_m/meterdotsq_20.gif
/imgs/gif/gifset_m/meterdotsq_3.gif
/imgs/gif/gifset_m/meterdotsq_30.gif
/imgs/gif/gifset_m/meterdotsq_4.gif
/imgs/gif/gifset_m/meterdotsq_40.gif
/imgs/gif/gifset_m/meterdotsq_5.gif
/imgs/gif/gifset_m/meterdotsq_50.gif
/imgs/gif/gifset_m/meterdotsq_6.gif
/imgs/gif/gifset_m/meterdotsq_7.gif
/imgs/gif/gifset_m/meterdotsq_70.gif
/imgs/gif/gifset_m/meterdotsq_8.gif
/imgs/gif/gifset_m/meterdotsq_80.gif
/imgs/gif/gifset_m/meterdotsq_9.gif
/imgs/gif/gifset_m/meterdotsq_90.gif
/imgs/gif/gifset_r/firebubblesq_1.gif
/imgs/gif/gifset_r/firebubblesq_10.gif
/imgs/gif/gifset_r/firebubblesq_100.gif
/imgs/gif/gifset_r/firebubblesq_2.gif
/imgs/gif/gifset_r/firebubblesq_20.gif
/imgs/gif/gifset_r/firebubblesq_3.gif
/imgs/gif/gifset_r/firebubblesq_30.gif
/imgs/gif/gifset_r/firebubblesq_4.gif
/imgs/gif/gifset_r/firebubblesq_40.gif
/imgs/gif/gifset_r/firebubblesq_5.gif
/imgs/gif/gifset_r/firebubblesq_50.gif
/imgs/gif/gifset_r/firebubblesq_6.gif
/imgs/gif/gifset_r/firebubblesq_7.gif
/imgs/gif/gifset_r/firebubblesq_70.gif
/imgs/gif/gifset_r/firebubblesq_8.gif
/imgs/gif/gifset_r/firebubblesq_80.gif
/imgs/gif/gifset_r/firebubblesq_9.gif
/imgs/gif/gifset_r/firebubblesq_90.gif
/imgs/gif/gifset_r/penny.gif
/imgs/gif/gifset_r/pennyb.gif
/imgs/gif/gifset_r/pennyb_1.gif
/imgs/gif/gifset_r/pennyb_10.gif
/imgs/gif/gifset_r/pennyb_100.gif
/imgs/gif/gifset_r/pennyb_2.gif
/imgs/gif/gifset_r/pennyb_20.gif
/imgs/gif/gifset_r/pennyb_3.gif
/imgs/gif/gifset_r/pennyb_30.gif
/imgs/gif/gifset_r/pennyb_4.gif
/imgs/gif/gifset_r/pennyb_40.gif
/imgs/gif/gifset_r/pennyb_5.gif
/imgs/gif/gifset_r/pennyb_50.gif
/imgs/gif/gifset_r/pennyb_6.gif
/imgs/gif/gifset_r/pennyb_7.gif
/imgs/gif/gifset_r/pennyb_70.gif
/imgs/gif/gifset_r/pennyb_8.gif
/imgs/gif/gifset_r/pennyb_80.gif
/imgs/gif/gifset_r/pennyb_9.gif
/imgs/gif/gifset_r/pennyb_90.gif
/imgs/gif/gifset_r/pennyd.gif
/imgs/gif/gifset_r/pennyd_1.gif
/imgs/gif/gifset_r/pennyd_10.gif
/imgs/gif/gifset_r/pennyd_100.gif
/imgs/gif/gifset_r/pennyd_2.gif
/imgs/gif/gifset_r/pennyd_20.gif
/imgs/gif/gifset_r/pennyd_3.gif
/imgs/gif/gifset_r/pennyd_30.gif
/imgs/gif/gifset_r/pennyd_4.gif
/imgs/gif/gifset_r/pennyd_40.gif
/imgs/gif/gifset_r/pennyd_5.gif
/imgs/gif/gifset_r/pennyd_50.gif
/imgs/gif/gifset_r/pennyd_6.gif
/imgs/gif/gifset_r/pennyd_7.gif
/imgs/gif/gifset_r/pennyd_70.gif
/imgs/gif/gifset_r/pennyd_8.gif
/imgs/gif/gifset_r/pennyd_80.gif
/imgs/gif/gifset_r/pennyd_9.gif
/imgs/gif/gifset_r/pennyd_90.gif
/imgs/gif/gifset_r/pennyp.gif
/imgs/gif/gifset_r/pennyp_1.gif
/imgs/gif/gifset_r/pennyp_10.gif
/imgs/gif/gifset_r/pennyp_100.gif
/imgs/gif/gifset_r/pennyp_2.gif
/imgs/gif/gifset_r/pennyp_20.gif
/imgs/gif/gifset_r/pennyp_3.gif
/imgs/gif/gifset_r/pennyp_30.gif
/imgs/gif/gifset_r/pennyp_4.gif
/imgs/gif/gifset_r/pennyp_40.gif
/imgs/gif/gifset_r/pennyp_5.gif
/imgs/gif/gifset_r/pennyp_50.gif
/imgs/gif/gifset_r/pennyp_6.gif
/imgs/gif/gifset_r/pennyp_7.gif
/imgs/gif/gifset_r/pennyp_70.gif
/imgs/gif/gifset_r/pennyp_8.gif
/imgs/gif/gifset_r/pennyp_80.gif
/imgs/gif/gifset_r/pennyp_9.gif
/imgs/gif/gifset_r/pennyp_90.gif
/imgs/gif/gifset_r/pennyq.gif
/imgs/gif/gifset_r/pennyq_1.gif
/imgs/gif/gifset_r/pennyq_10.gif
/imgs/gif/gifset_r/pennyq_100.gif
/imgs/gif/gifset_r/pennyq_2.gif
/imgs/gif/gifset_r/pennyq_20.gif
/imgs/gif/gifset_r/pennyq_3.gif
/imgs/gif/gifset_r/pennyq_30.gif
/imgs/gif/gifset_r/pennyq_4.gif
/imgs/gif/gifset_r/pennyq_40.gif
/imgs/gif/gifset_r/pennyq_5.gif
/imgs/gif/gifset_r/pennyq_50.gif
/imgs/gif/gifset_r/pennyq_6.gif
/imgs/gif/gifset_r/pennyq_7.gif
/imgs/gif/gifset_r/pennyq_70.gif
/imgs/gif/gifset_r/pennyq_8.gif
/imgs/gif/gifset_r/pennyq_80.gif
/imgs/gif/gifset_r/pennyq_9.gif
/imgs/gif/gifset_r/pennyq_90.gif
/imgs/gif/gifset_r/ringsb_1.gif
/imgs/gif/gifset_r/ringsb_10.gif
/imgs/gif/gifset_r/ringsb_100.gif
/imgs/gif/gifset_r/ringsb_2.gif
/imgs/gif/gifset_r/ringsb_20.gif
/imgs/gif/gifset_r/ringsb_3.gif
/imgs/gif/gifset_r/ringsb_30.gif
/imgs/gif/gifset_r/ringsb_4.gif
/imgs/gif/gifset_r/ringsb_40.gif
/imgs/gif/gifset_r/ringsb_5.gif
/imgs/gif/gifset_r/ringsb_50.gif
/imgs/gif/gifset_r/ringsb_6.gif
/imgs/gif/gifset_r/ringsb_7.gif
/imgs/gif/gifset_r/ringsb_70.gif
/imgs/gif/gifset_r/ringsb_8.gif
/imgs/gif/gifset_r/ringsb_80.gif
/imgs/gif/gifset_r/ringsb_9.gif
/imgs/gif/gifset_r/ringsb_90.gif
/imgs/gif/gifset_r/ringsd_1.gif
/imgs/gif/gifset_r/ringsd_10.gif
/imgs/gif/gifset_r/ringsd_100.gif
/imgs/gif/gifset_r/ringsd_2.gif
/imgs/gif/gifset_r/ringsd_20.gif
/imgs/gif/gifset_r/ringsd_3.gif
/imgs/gif/gifset_r/ringsd_30.gif
/imgs/gif/gifset_r/ringsd_4.gif
/imgs/gif/gifset_r/ringsd_40.gif
/imgs/gif/gifset_r/ringsd_5.gif
/imgs/gif/gifset_r/ringsd_50.gif
/imgs/gif/gifset_r/ringsd_6.gif
/imgs/gif/gifset_r/ringsd_7.gif
/imgs/gif/gifset_r/ringsd_70.gif
/imgs/gif/gifset_r/ringsd_8.gif
/imgs/gif/gifset_r/ringsd_80.gif
/imgs/gif/gifset_r/ringsd_9.gif
/imgs/gif/gifset_r/ringsd_90.gif
/imgs/gif/gifset_r/ringsp_1.gif
/imgs/gif/gifset_r/ringsp_10.gif
/imgs/gif/gifset_r/ringsp_100.gif
/imgs/gif/gifset_r/ringsp_2.gif
/imgs/gif/gifset_r/ringsp_20.gif
/imgs/gif/gifset_r/ringsp_3.gif
/imgs/gif/gifset_r/ringsp_30.gif
/imgs/gif/gifset_r/ringsp_4.gif
/imgs/gif/gifset_r/ringsp_40.gif
/imgs/gif/gifset_r/ringsp_5.gif
/imgs/gif/gifset_r/ringsp_50.gif
/imgs/gif/gifset_r/ringsp_6.gif
/imgs/gif/gifset_r/ringsp_7.gif
/imgs/gif/gifset_r/ringsp_70.gif
/imgs/gif/gifset_r/ringsp_8.gif
/imgs/gif/gifset_r/ringsp_80.gif
/imgs/gif/gifset_r/ringsp_9.gif
/imgs/gif/gifset_r/ringsp_90.gif
/imgs/gif/gifset_r/ringsq_1.gif
/imgs/gif/gifset_r/ringsq_10.gif
/imgs/gif/gifset_r/ringsq_100.gif
/imgs/gif/gifset_r/ringsq_2.gif
/imgs/gif/gifset_r/ringsq_20.gif
/imgs/gif/gifset_r/ringsq_3.gif
/imgs/gif/gifset_r/ringsq_30.gif
/imgs/gif/gifset_r/ringsq_4.gif
/imgs/gif/gifset_r/ringsq_40.gif
/imgs/gif/gifset_r/ringsq_5.gif
/imgs/gif/gifset_r/ringsq_50.gif
/imgs/gif/gifset_r/ringsq_6.gif
/imgs/gif/gifset_r/ringsq_7.gif
/imgs/gif/gifset_r/ringsq_70.gif
/imgs/gif/gifset_r/ringsq_8.gif
/imgs/gif/gifset_r/ringsq_80.gif
/imgs/gif/gifset_r/ringsq_9.gif
/imgs/gif/gifset_r/ringsq_90.gif
/imgs/gif/gifset_r/rotate.gif
/imgs/gif/gifset_r/rotateb.gif
/imgs/gif/gifset_r/rotateb_1.gif
/imgs/gif/gifset_r/rotateb_10.gif
/imgs/gif/gifset_r/rotateb_100.gif
/imgs/gif/gifset_r/rotateb_2.gif
/imgs/gif/gifset_r/rotateb_20.gif
/imgs/gif/gifset_r/rotateb_3.gif
/imgs/gif/gifset_r/rotateb_30.gif
/imgs/gif/gifset_r/rotateb_4.gif
/imgs/gif/gifset_r/rotateb_40.gif
/imgs/gif/gifset_r/rotateb_5.gif
/imgs/gif/gifset_r/rotateb_50.gif
/imgs/gif/gifset_r/rotateb_6.gif
/imgs/gif/gifset_r/rotateb_7.gif
/imgs/gif/gifset_r/rotateb_70.gif
/imgs/gif/gifset_r/rotateb_8.gif
/imgs/gif/gifset_r/rotateb_80.gif
/imgs/gif/gifset_r/rotateb_9.gif
/imgs/gif/gifset_r/rotateb_90.gif
/imgs/gif/gifset_r/rotated.gif
/imgs/gif/gifset_r/rotated_1.gif
/imgs/gif/gifset_r/rotated_10.gif
/imgs/gif/gifset_r/rotated_100.gif
/imgs/gif/gifset_r/rotated_2.gif
/imgs/gif/gifset_r/rotated_20.gif
/imgs/gif/gifset_r/rotated_3.gif
/imgs/gif/gifset_r/rotated_30.gif
/imgs/gif/gifset_r/rotated_4.gif
/imgs/gif/gifset_r/rotated_40.gif
/imgs/gif/gifset_r/rotated_5.gif
/imgs/gif/gifset_r/rotated_50.gif
/imgs/gif/gifset_r/rotated_6.gif
/imgs/gif/gifset_r/rotated_7.gif
/imgs/gif/gifset_r/rotated_70.gif
/imgs/gif/gifset_r/rotated_8.gif
/imgs/gif/gifset_r/rotated_80.gif
/imgs/gif/gifset_r/rotated_9.gif
/imgs/gif/gifset_r/rotated_90.gif
/imgs/gif/gifset_r/rotatep.gif
/imgs/gif/gifset_r/rotatep_1.gif
/imgs/gif/gifset_r/rotatep_10.gif
/imgs/gif/gifset_r/rotatep_100.gif
/imgs/gif/gifset_r/rotatep_2.gif
/imgs/gif/gifset_r/rotatep_20.gif
/imgs/gif/gifset_r/rotatep_3.gif
/imgs/gif/gifset_r/rotatep_30.gif
/imgs/gif/gifset_r/rotatep_4.gif
/imgs/gif/gifset_r/rotatep_40.gif
/imgs/gif/gifset_r/rotatep_5.gif
/imgs/gif/gifset_r/rotatep_50.gif
/imgs/gif/gifset_r/rotatep_6.gif
/imgs/gif/gifset_r/rotatep_7.gif
/imgs/gif/gifset_r/rotatep_70.gif
/imgs/gif/gifset_r/rotatep_8.gif
/imgs/gif/gifset_r/rotatep_80.gif
/imgs/gif/gifset_r/rotatep_9.gif
/imgs/gif/gifset_r/rotatep_90.gif
/imgs/gif/gifset_r/rotateq.gif
/imgs/gif/gifset_r/rotateq_1.gif
/imgs/gif/gifset_r/rotateq_10.gif
/imgs/gif/gifset_r/rotateq_100.gif
/imgs/gif/gifset_r/rotateq_2.gif
/imgs/gif/gifset_r/rotateq_20.gif
/imgs/gif/gifset_r/rotateq_3.gif
/imgs/gif/gifset_r/rotateq_30.gif
/imgs/gif/gifset_r/rotateq_4.gif
/imgs/gif/gifset_r/rotateq_40.gif
/imgs/gif/gifset_r/rotateq_5.gif
/imgs/gif/gifset_r/rotateq_50.gif
/imgs/gif/gifset_r/rotateq_6.gif
/imgs/gif/gifset_r/rotateq_7.gif
/imgs/gif/gifset_r/rotateq_70.gif
/imgs/gif/gifset_r/rotateq_8.gif
/imgs/gif/gifset_r/rotateq_80.gif
/imgs/gif/gifset_r/rotateq_9.gif
/imgs/gif/gifset_r/rotateq_90.gif
/imgs/gif/gifset_t/soccorball.gif
/imgs/gif/gifset_t/soccorballb.gif
/imgs/gif/gifset_t/soccorballb_1.gif
/imgs/gif/gifset_t/soccorballb_10.gif
/imgs/gif/gifset_t/soccorballb_100.gif
/imgs/gif/gifset_t/soccorballb_2.gif
/imgs/gif/gifset_t/soccorballb_20.gif
/imgs/gif/gifset_t/soccorballb_3.gif
/imgs/gif/gifset_t/soccorballb_30.gif
/imgs/gif/gifset_t/soccorballb_4.gif
/imgs/gif/gifset_t/soccorballb_40.gif
/imgs/gif/gifset_t/soccorballb_5.gif
/imgs/gif/gifset_t/soccorballb_50.gif
/imgs/gif/gifset_t/soccorballb_6.gif
/imgs/gif/gifset_t/soccorballb_7.gif
/imgs/gif/gifset_t/soccorballb_70.gif
/imgs/gif/gifset_t/soccorballb_8.gif
/imgs/gif/gifset_t/soccorballb_80.gif
/imgs/gif/gifset_t/soccorballb_9.gif
/imgs/gif/gifset_t/soccorballb_90.gif
/imgs/gif/gifset_t/soccorballd.gif
/imgs/gif/gifset_t/soccorballd_1.gif
/imgs/gif/gifset_t/soccorballd_10.gif
/imgs/gif/gifset_t/soccorballd_100.gif
/imgs/gif/gifset_t/soccorballd_2.gif
/imgs/gif/gifset_t/soccorballd_20.gif
/imgs/gif/gifset_t/soccorballd_3.gif
/imgs/gif/gifset_t/soccorballd_30.gif
/imgs/gif/gifset_t/soccorballd_4.gif
/imgs/gif/gifset_t/soccorballd_40.gif
/imgs/gif/gifset_t/soccorballd_5.gif
/imgs/gif/gifset_t/soccorballd_50.gif
/imgs/gif/gifset_t/soccorballd_6.gif
/imgs/gif/gifset_t/soccorballd_7.gif
/imgs/gif/gifset_t/soccorballd_70.gif
/imgs/gif/gifset_t/soccorballd_8.gif
/imgs/gif/gifset_t/soccorballd_80.gif
/imgs/gif/gifset_t/soccorballd_9.gif
/imgs/gif/gifset_t/soccorballd_90.gif
/imgs/gif/gifset_t/soccorballp.gif
/imgs/gif/gifset_t/soccorballp_1.gif
/imgs/gif/gifset_t/soccorballp_10.gif
/imgs/gif/gifset_t/soccorballp_100.gif
/imgs/gif/gifset_t/soccorballp_2.gif
/imgs/gif/gifset_t/soccorballp_20.gif
/imgs/gif/gifset_t/soccorballp_3.gif
/imgs/gif/gifset_t/soccorballp_30.gif
/imgs/gif/gifset_t/soccorballp_4.gif
/imgs/gif/gifset_t/soccorballp_40.gif
/imgs/gif/gifset_t/soccorballp_5.gif
/imgs/gif/gifset_t/soccorballp_50.gif
/imgs/gif/gifset_t/soccorballp_6.gif
/imgs/gif/gifset_t/soccorballp_7.gif
/imgs/gif/gifset_t/soccorballp_70.gif
/imgs/gif/gifset_t/soccorballp_8.gif
/imgs/gif/gifset_t/soccorballp_80.gif
/imgs/gif/gifset_t/soccorballp_9.gif
/imgs/gif/gifset_t/soccorballp_90.gif
/imgs/gif/gifset_t/soccorballq.gif
/imgs/gif/gifset_t/soccorballq_1.gif
/imgs/gif/gifset_t/soccorballq_10.gif
/imgs/gif/gifset_t/soccorballq_100.gif
/imgs/gif/gifset_t/soccorballq_2.gif
/imgs/gif/gifset_t/soccorballq_20.gif
/imgs/gif/gifset_t/soccorballq_3.gif
/imgs/gif/gifset_t/soccorballq_30.gif
/imgs/gif/gifset_t/soccorballq_4.gif
/imgs/gif/gifset_t/soccorballq_40.gif
/imgs/gif/gifset_t/soccorballq_5.gif
/imgs/gif/gifset_t/soccorballq_50.gif
/imgs/gif/gifset_t/soccorballq_6.gif
/imgs/gif/gifset_t/soccorballq_7.gif
/imgs/gif/gifset_t/soccorballq_70.gif
/imgs/gif/gifset_t/soccorballq_8.gif
/imgs/gif/gifset_t/soccorballq_80.gif
/imgs/gif/gifset_t/soccorballq_9.gif
/imgs/gif/gifset_t/soccorballq_90.gif
/imgs/gif/gifset_t/sun.gif
/imgs/gif/gifset_t/sunb.gif
/imgs/gif/gifset_t/sunb_1.gif
/imgs/gif/gifset_t/sunb_10.gif
/imgs/gif/gifset_t/sunb_100.gif
/imgs/gif/gifset_t/sunb_2.gif
/imgs/gif/gifset_t/sunb_20.gif
/imgs/gif/gifset_t/sunb_3.gif
/imgs/gif/gifset_t/sunb_30.gif
/imgs/gif/gifset_t/sunb_4.gif
/imgs/gif/gifset_t/sunb_40.gif
/imgs/gif/gifset_t/sunb_5.gif
/imgs/gif/gifset_t/sunb_50.gif
/imgs/gif/gifset_t/sunb_6.gif
/imgs/gif/gifset_t/sunb_7.gif
/imgs/gif/gifset_t/sunb_70.gif
/imgs/gif/gifset_t/sunb_8.gif
/imgs/gif/gifset_t/sunb_80.gif
/imgs/gif/gifset_t/sunb_9.gif
/imgs/gif/gifset_t/sunb_90.gif
/imgs/gif/gifset_t/sund.gif
/imgs/gif/gifset_t/sund_1.gif
/imgs/gif/gifset_t/sund_10.gif
/imgs/gif/gifset_t/sund_100.gif
/imgs/gif/gifset_t/sund_2.gif
/imgs/gif/gifset_t/sund_20.gif
/imgs/gif/gifset_t/sund_3.gif
/imgs/gif/gifset_t/sund_30.gif
/imgs/gif/gifset_t/sund_4.gif
/imgs/gif/gifset_t/sund_40.gif
/imgs/gif/gifset_t/sund_5.gif
/imgs/gif/gifset_t/sund_50.gif
/imgs/gif/gifset_t/sund_6.gif
/imgs/gif/gifset_t/sund_7.gif
/imgs/gif/gifset_t/sund_70.gif
/imgs/gif/gifset_t/sund_8.gif
/imgs/gif/gifset_t/sund_80.gif
/imgs/gif/gifset_t/sund_9.gif
/imgs/gif/gifset_t/sund_90.gif
/imgs/gif/gifset_t/sunp.gif
/imgs/gif/gifset_t/sunp_1.gif
/imgs/gif/gifset_t/sunp_10.gif
/imgs/gif/gifset_t/sunp_100.gif
/imgs/gif/gifset_t/sunp_2.gif
/imgs/gif/gifset_t/sunp_20.gif
/imgs/gif/gifset_t/sunp_3.gif
/imgs/gif/gifset_t/sunp_30.gif
/imgs/gif/gifset_t/sunp_4.gif
/imgs/gif/gifset_t/sunp_40.gif
/imgs/gif/gifset_t/sunp_5.gif
/imgs/gif/gifset_t/sunp_50.gif
/imgs/gif/gifset_t/sunp_6.gif
/imgs/gif/gifset_t/sunp_7.gif
/imgs/gif/gifset_t/sunp_70.gif
/imgs/gif/gifset_t/sunp_8.gif
/imgs/gif/gifset_t/sunp_80.gif
/imgs/gif/gifset_t/sunp_9.gif
/imgs/gif/gifset_t/sunp_90.gif
/imgs/gif/gifset_t/sunq.gif
/imgs/gif/gifset_t/sunq_1.gif
/imgs/gif/gifset_t/sunq_10.gif
/imgs/gif/gifset_t/sunq_100.gif
/imgs/gif/gifset_t/sunq_2.gif
/imgs/gif/gifset_t/sunq_20.gif
/imgs/gif/gifset_t/sunq_3.gif
/imgs/gif/gifset_t/sunq_30.gif
/imgs/gif/gifset_t/sunq_4.gif
/imgs/gif/gifset_t/sunq_40.gif
/imgs/gif/gifset_t/sunq_5.gif
/imgs/gif/gifset_t/sunq_50.gif
/imgs/gif/gifset_t/sunq_6.gif
/imgs/gif/gifset_t/sunq_7.gif
/imgs/gif/gifset_t/sunq_70.gif
/imgs/gif/gifset_t/sunq_8.gif
/imgs/gif/gifset_t/sunq_80.gif
/imgs/gif/gifset_t/sunq_9.gif
/imgs/gif/gifset_t/sunq_90.gif
/imgs/gif/gifset_t/taz.gif
/imgs/gif/gifset_t/tazb.gif
/imgs/gif/gifset_t/tazb_1.gif
/imgs/gif/gifset_t/tazb_10.gif
/imgs/gif/gifset_t/tazb_100.gif
/imgs/gif/gifset_t/tazb_2.gif
/imgs/gif/gifset_t/tazb_20.gif
/imgs/gif/gifset_t/tazb_3.gif
/imgs/gif/gifset_t/tazb_30.gif
/imgs/gif/gifset_t/tazb_4.gif
/imgs/gif/gifset_t/tazb_40.gif
/imgs/gif/gifset_t/tazb_5.gif
/imgs/gif/gifset_t/tazb_50.gif
/imgs/gif/gifset_t/tazb_6.gif
/imgs/gif/gifset_t/tazb_7.gif
/imgs/gif/gifset_t/tazb_70.gif
/imgs/gif/gifset_t/tazb_8.gif
/imgs/gif/gifset_t/tazb_80.gif
/imgs/gif/gifset_t/tazb_9.gif
/imgs/gif/gifset_t/tazb_90.gif
/imgs/gif/gifset_t/tazd.gif
/imgs/gif/gifset_t/tazd_1.gif
/imgs/gif/gifset_t/tazd_10.gif
/imgs/gif/gifset_t/tazd_100.gif
/imgs/gif/gifset_t/tazd_2.gif
/imgs/gif/gifset_t/tazd_20.gif
/imgs/gif/gifset_t/tazd_3.gif
/imgs/gif/gifset_t/tazd_30.gif
/imgs/gif/gifset_t/tazd_4.gif
/imgs/gif/gifset_t/tazd_40.gif
/imgs/gif/gifset_t/tazd_5.gif
/imgs/gif/gifset_t/tazd_50.gif
/imgs/gif/gifset_t/tazd_6.gif
/imgs/gif/gifset_t/tazd_7.gif
/imgs/gif/gifset_t/tazd_70.gif
/imgs/gif/gifset_t/tazd_8.gif
/imgs/gif/gifset_t/tazd_80.gif
/imgs/gif/gifset_t/tazd_9.gif
/imgs/gif/gifset_t/tazd_90.gif
/imgs/gif/gifset_t/tazp.gif
/imgs/gif/gifset_t/tazp_1.gif
/imgs/gif/gifset_t/tazp_10.gif
/imgs/gif/gifset_t/tazp_100.gif
/imgs/gif/gifset_t/tazp_2.gif
/imgs/gif/gifset_t/tazp_20.gif
/imgs/gif/gifset_t/tazp_3.gif
/imgs/gif/gifset_t/tazp_30.gif
/imgs/gif/gifset_t/tazp_4.gif
/imgs/gif/gifset_t/tazp_40.gif
/imgs/gif/gifset_t/tazp_5.gif
/imgs/gif/gifset_t/tazp_50.gif
/imgs/gif/gifset_t/tazp_6.gif
/imgs/gif/gifset_t/tazp_7.gif
/imgs/gif/gifset_t/tazp_70.gif
/imgs/gif/gifset_t/tazp_8.gif
/imgs/gif/gifset_t/tazp_80.gif
/imgs/gif/gifset_t/tazp_9.gif
/imgs/gif/gifset_t/tazp_90.gif
/imgs/gif/gifset_t/tazq.gif
/imgs/gif/gifset_t/tazq_1.gif
/imgs/gif/gifset_t/tazq_10.gif
/imgs/gif/gifset_t/tazq_100.gif
/imgs/gif/gifset_t/tazq_2.gif
/imgs/gif/gifset_t/tazq_20.gif
/imgs/gif/gifset_t/tazq_3.gif
/imgs/gif/gifset_t/tazq_30.gif
/imgs/gif/gifset_t/tazq_4.gif
/imgs/gif/gifset_t/tazq_40.gif
/imgs/gif/gifset_t/tazq_5.gif
/imgs/gif/gifset_t/tazq_50.gif
/imgs/gif/gifset_t/tazq_6.gif
/imgs/gif/gifset_t/tazq_7.gif
/imgs/gif/gifset_t/tazq_70.gif
/imgs/gif/gifset_t/tazq_8.gif
/imgs/gif/gifset_t/tazq_80.gif
/imgs/gif/gifset_t/tazq_9.gif
/imgs/gif/gifset_t/tazq_90.gif
/imgs/gif/gifset_w/trophy.gif
/imgs/gif/gifset_w/trophyb.gif
/imgs/gif/gifset_w/trophyb_1.gif
/imgs/gif/gifset_w/trophyb_10.gif
/imgs/gif/gifset_w/trophyb_100.gif
/imgs/gif/gifset_w/trophyb_2.gif
/imgs/gif/gifset_w/trophyb_20.gif
/imgs/gif/gifset_w/trophyb_3.gif
/imgs/gif/gifset_w/trophyb_30.gif
/imgs/gif/gifset_w/trophyb_4.gif
/imgs/gif/gifset_w/trophyb_40.gif
/imgs/gif/gifset_w/trophyb_5.gif
/imgs/gif/gifset_w/trophyb_50.gif
/imgs/gif/gifset_w/trophyb_6.gif
/imgs/gif/gifset_w/trophyb_7.gif
/imgs/gif/gifset_w/trophyb_70.gif
/imgs/gif/gifset_w/trophyb_8.gif
/imgs/gif/gifset_w/trophyb_80.gif
/imgs/gif/gifset_w/trophyb_9.gif
/imgs/gif/gifset_w/trophyb_90.gif
/imgs/gif/gifset_w/trophyd.gif
/imgs/gif/gifset_w/trophyd_1.gif
/imgs/gif/gifset_w/trophyd_10.gif
/imgs/gif/gifset_w/trophyd_100.gif
/imgs/gif/gifset_w/trophyd_2.gif
/imgs/gif/gifset_w/trophyd_20.gif
/imgs/gif/gifset_w/trophyd_3.gif
/imgs/gif/gifset_w/trophyd_30.gif
/imgs/gif/gifset_w/trophyd_4.gif
/imgs/gif/gifset_w/trophyd_40.gif
/imgs/gif/gifset_w/trophyd_5.gif
/imgs/gif/gifset_w/trophyd_50.gif
/imgs/gif/gifset_w/trophyd_6.gif
/imgs/gif/gifset_w/trophyd_7.gif
/imgs/gif/gifset_w/trophyd_70.gif
/imgs/gif/gifset_w/trophyd_8.gif
/imgs/gif/gifset_w/trophyd_80.gif
/imgs/gif/gifset_w/trophyd_9.gif
/imgs/gif/gifset_w/trophyd_90.gif
/imgs/gif/gifset_w/trophyp.gif
/imgs/gif/gifset_w/trophyp_1.gif
/imgs/gif/gifset_w/trophyp_10.gif
/imgs/gif/gifset_w/trophyp_100.gif
/imgs/gif/gifset_w/trophyp_2.gif
/imgs/gif/gifset_w/trophyp_20.gif
/imgs/gif/gifset_w/trophyp_3.gif
/imgs/gif/gifset_w/trophyp_30.gif
/imgs/gif/gifset_w/trophyp_4.gif
/imgs/gif/gifset_w/trophyp_40.gif
/imgs/gif/gifset_w/trophyp_5.gif
/imgs/gif/gifset_w/trophyp_50.gif
/imgs/gif/gifset_w/trophyp_6.gif
/imgs/gif/gifset_w/trophyp_7.gif
/imgs/gif/gifset_w/trophyp_70.gif
/imgs/gif/gifset_w/trophyp_8.gif
/imgs/gif/gifset_w/trophyp_80.gif
/imgs/gif/gifset_w/trophyp_9.gif
/imgs/gif/gifset_w/trophyp_90.gif
/imgs/gif/gifset_w/trophyq.gif
/imgs/gif/gifset_w/trophyq_1.gif
/imgs/gif/gifset_w/trophyq_10.gif
/imgs/gif/gifset_w/trophyq_100.gif
/imgs/gif/gifset_w/trophyq_2.gif
/imgs/gif/gifset_w/trophyq_20.gif
/imgs/gif/gifset_w/trophyq_3.gif
/imgs/gif/gifset_w/trophyq_30.gif
/imgs/gif/gifset_w/trophyq_4.gif
/imgs/gif/gifset_w/trophyq_40.gif
/imgs/gif/gifset_w/trophyq_5.gif
/imgs/gif/gifset_w/trophyq_50.gif
/imgs/gif/gifset_w/trophyq_6.gif
/imgs/gif/gifset_w/trophyq_7.gif
/imgs/gif/gifset_w/trophyq_70.gif
/imgs/gif/gifset_w/trophyq_8.gif
/imgs/gif/gifset_w/trophyq_80.gif
/imgs/gif/gifset_w/trophyq_9.gif
/imgs/gif/gifset_w/trophyq_90.gif
/imgs/gif/gifset_w/warning.gif
/imgs/gif/gifset_w/warningb.gif
/imgs/gif/gifset_w/warningb_1.gif
/imgs/gif/gifset_w/warningb_10.gif
/imgs/gif/gifset_w/warningb_100.gif
/imgs/gif/gifset_w/warningb_2.gif
/imgs/gif/gifset_w/warningb_20.gif
/imgs/gif/gifset_w/warningb_3.gif
/imgs/gif/gifset_w/warningb_30.gif
/imgs/gif/gifset_w/warningb_4.gif
/imgs/gif/gifset_w/warningb_40.gif
/imgs/gif/gifset_w/warningb_5.gif
/imgs/gif/gifset_w/warningb_50.gif
/imgs/gif/gifset_w/warningb_6.gif
/imgs/gif/gifset_w/warningb_7.gif
/imgs/gif/gifset_w/warningb_70.gif
/imgs/gif/gifset_w/warningb_8.gif
/imgs/gif/gifset_w/warningb_80.gif
/imgs/gif/gifset_w/warningb_9.gif
/imgs/gif/gifset_w/warningb_90.gif
/imgs/gif/gifset_w/warningd.gif
/imgs/gif/gifset_w/warningd_1.gif
/imgs/gif/gifset_w/warningd_10.gif
/imgs/gif/gifset_w/warningd_100.gif
/imgs/gif/gifset_w/warningd_2.gif
/imgs/gif/gifset_w/warningd_20.gif
/imgs/gif/gifset_w/warningd_3.gif
/imgs/gif/gifset_w/warningd_30.gif
/imgs/gif/gifset_w/warningd_4.gif
/imgs/gif/gifset_w/warningd_40.gif
/imgs/gif/gifset_w/warningd_5.gif
/imgs/gif/gifset_w/warningd_50.gif
/imgs/gif/gifset_w/warningd_6.gif
/imgs/gif/gifset_w/warningd_7.gif
/imgs/gif/gifset_w/warningd_70.gif
/imgs/gif/gifset_w/warningd_8.gif
/imgs/gif/gifset_w/warningd_80.gif
/imgs/gif/gifset_w/warningd_9.gif
/imgs/gif/gifset_w/warningd_90.gif
/imgs/gif/gifset_w/warningp.gif
/imgs/gif/gifset_w/warningp_1.gif
/imgs/gif/gifset_w/warningp_10.gif
/imgs/gif/gifset_w/warningp_100.gif
/imgs/gif/gifset_w/warningp_2.gif
/imgs/gif/gifset_w/warningp_20.gif
/imgs/gif/gifset_w/warningp_3.gif
/imgs/gif/gifset_w/warningp_30.gif
/imgs/gif/gifset_w/warningp_4.gif
/imgs/gif/gifset_w/warningp_40.gif
/imgs/gif/gifset_w/warningp_5.gif
/imgs/gif/gifset_w/warningp_50.gif
/imgs/gif/gifset_w/warningp_6.gif
/imgs/gif/gifset_w/warningp_7.gif
/imgs/gif/gifset_w/warningp_70.gif
/imgs/gif/gifset_w/warningp_8.gif
/imgs/gif/gifset_w/warningp_80.gif
/imgs/gif/gifset_w/warningp_9.gif
/imgs/gif/gifset_w/warningp_90.gif
/imgs/gif/gifset_w/warningq.gif
/imgs/gif/gifset_w/warningq_1.gif
/imgs/gif/gifset_w/warningq_10.gif
/imgs/gif/gifset_w/warningq_100.gif
/imgs/gif/gifset_w/warningq_2.gif
/imgs/gif/gifset_w/warningq_20.gif
/imgs/gif/gifset_w/warningq_3.gif
/imgs/gif/gifset_w/warningq_30.gif
/imgs/gif/gifset_w/warningq_4.gif
/imgs/gif/gifset_w/warningq_40.gif
/imgs/gif/gifset_w/warningq_5.gif
/imgs/gif/gifset_w/warningq_50.gif
/imgs/gif/gifset_w/warningq_6.gif
/imgs/gif/gifset_w/warningq_7.gif
/imgs/gif/gifset_w/warningq_70.gif
/imgs/gif/gifset_w/warningq_8.gif
/imgs/gif/gifset_w/warningq_80.gif
/imgs/gif/gifset_w/warningq_9.gif
/imgs/gif/gifset_w/warningq_90.gif
/imgs/gif/gifset_w/welcome.gif
/imgs/gif/gifset_w/welcomeb.gif
/imgs/gif/gifset_w/welcomeb_1.gif
/imgs/gif/gifset_w/welcomeb_10.gif
/imgs/gif/gifset_w/welcomeb_100.gif
/imgs/gif/gifset_w/welcomeb_2.gif
/imgs/gif/gifset_w/welcomeb_20.gif
/imgs/gif/gifset_w/welcomeb_3.gif
/imgs/gif/gifset_w/welcomeb_30.gif
/imgs/gif/gifset_w/welcomeb_4.gif
/imgs/gif/gifset_w/welcomeb_40.gif
/imgs/gif/gifset_w/welcomeb_5.gif
/imgs/gif/gifset_w/welcomeb_50.gif
/imgs/gif/gifset_w/welcomeb_6.gif
/imgs/gif/gifset_w/welcomeb_7.gif
/imgs/gif/gifset_w/welcomeb_70.gif
/imgs/gif/gifset_w/welcomeb_8.gif
/imgs/gif/gifset_w/welcomeb_80.gif
/imgs/gif/gifset_w/welcomeb_9.gif
/imgs/gif/gifset_w/welcomeb_90.gif
/imgs/gif/gifset_w/welcomed.gif
/imgs/gif/gifset_w/welcomed_1.gif
/imgs/gif/gifset_w/welcomed_10.gif
/imgs/gif/gifset_w/welcomed_100.gif
/imgs/gif/gifset_w/welcomed_2.gif
/imgs/gif/gifset_w/welcomed_20.gif
/imgs/gif/gifset_w/welcomed_3.gif
/imgs/gif/gifset_w/welcomed_30.gif
/imgs/gif/gifset_w/welcomed_4.gif
/imgs/gif/gifset_w/welcomed_40.gif
/imgs/gif/gifset_w/welcomed_5.gif
/imgs/gif/gifset_w/welcomed_50.gif
/imgs/gif/gifset_w/welcomed_6.gif
/imgs/gif/gifset_w/welcomed_7.gif
/imgs/gif/gifset_w/welcomed_70.gif
/imgs/gif/gifset_w/welcomed_8.gif
/imgs/gif/gifset_w/welcomed_80.gif
/imgs/gif/gifset_w/welcomed_9.gif
/imgs/gif/gifset_w/welcomed_90.gif
/imgs/gif/gifset_w/welcomep.gif
/imgs/gif/gifset_w/welcomep_1.gif
/imgs/gif/gifset_w/welcomep_10.gif
/imgs/gif/gifset_w/welcomep_100.gif
/imgs/gif/gifset_w/welcomep_2.gif
/imgs/gif/gifset_w/welcomep_20.gif
/imgs/gif/gifset_w/welcomep_3.gif
/imgs/gif/gifset_w/welcomep_30.gif
/imgs/gif/gifset_w/welcomep_4.gif
/imgs/gif/gifset_w/welcomep_40.gif
/imgs/gif/gifset_w/welcomep_5.gif
/imgs/gif/gifset_w/welcomep_50.gif
/imgs/gif/gifset_w/welcomep_6.gif
/imgs/gif/gifset_w/welcomep_7.gif
/imgs/gif/gifset_w/welcomep_70.gif
/imgs/gif/gifset_w/welcomep_8.gif
/imgs/gif/gifset_w/welcomep_80.gif
/imgs/gif/gifset_w/welcomep_9.gif
/imgs/gif/gifset_w/welcomep_90.gif
/imgs/gif/gifset_w/welcomeq.gif
/imgs/gif/gifset_w/welcomeq_1.gif
/imgs/gif/gifset_w/welcomeq_10.gif
/imgs/gif/gifset_w/welcomeq_100.gif
/imgs/gif/gifset_w/welcomeq_2.gif
/imgs/gif/gifset_w/welcomeq_20.gif
/imgs/gif/gifset_w/welcomeq_3.gif
/imgs/gif/gifset_w/welcomeq_30.gif
/imgs/gif/gifset_w/welcomeq_4.gif
/imgs/gif/gifset_w/welcomeq_40.gif
/imgs/gif/gifset_w/welcomeq_5.gif
/imgs/gif/gifset_w/welcomeq_50.gif
/imgs/gif/gifset_w/welcomeq_6.gif
/imgs/gif/gifset_w/welcomeq_7.gif
/imgs/gif/gifset_w/welcomeq_70.gif
/imgs/gif/gifset_w/welcomeq_8.gif
/imgs/gif/gifset_w/welcomeq_80.gif
/imgs/gif/gifset_w/welcomeq_9.gif
/imgs/gif/gifset_w/welcomeq_90.gif
/imgs/gif/gifset_w/worksign.gif
/imgs/gif/gifset_w/worksignb.gif
/imgs/gif/gifset_w/worksignb_1.gif
/imgs/gif/gifset_w/worksignb_10.gif
/imgs/gif/gifset_w/worksignb_100.gif
/imgs/gif/gifset_w/worksignb_2.gif
/imgs/gif/gifset_w/worksignb_20.gif
/imgs/gif/gifset_w/worksignb_3.gif
/imgs/gif/gifset_w/worksignb_30.gif
/imgs/gif/gifset_w/worksignb_4.gif
/imgs/gif/gifset_w/worksignb_40.gif
/imgs/gif/gifset_w/worksignb_5.gif
/imgs/gif/gifset_w/worksignb_50.gif
/imgs/gif/gifset_w/worksignb_6.gif
/imgs/gif/gifset_w/worksignb_7.gif
/imgs/gif/gifset_w/worksignb_70.gif
/imgs/gif/gifset_w/worksignb_8.gif
/imgs/gif/gifset_w/worksignb_80.gif
/imgs/gif/gifset_w/worksignb_9.gif
/imgs/gif/gifset_w/worksignb_90.gif
/imgs/gif/gifset_w/worksignd.gif
/imgs/gif/gifset_w/worksignd_1.gif
/imgs/gif/gifset_w/worksignd_10.gif
/imgs/gif/gifset_w/worksignd_100.gif
/imgs/gif/gifset_w/worksignd_2.gif
/imgs/gif/gifset_w/worksignd_20.gif
/imgs/gif/gifset_w/worksignd_3.gif
/imgs/gif/gifset_w/worksignd_30.gif
/imgs/gif/gifset_w/worksignd_4.gif
/imgs/gif/gifset_w/worksignd_40.gif
/imgs/gif/gifset_w/worksignd_5.gif
/imgs/gif/gifset_w/worksignd_50.gif
/imgs/gif/gifset_w/worksignd_6.gif
/imgs/gif/gifset_w/worksignd_7.gif
/imgs/gif/gifset_w/worksignd_70.gif
/imgs/gif/gifset_w/worksignd_8.gif
/imgs/gif/gifset_w/worksignd_80.gif
/imgs/gif/gifset_w/worksignd_9.gif
/imgs/gif/gifset_w/worksignd_90.gif
/imgs/gif/gifset_w/worksignp.gif
/imgs/gif/gifset_w/worksignp_1.gif
/imgs/gif/gifset_w/worksignp_10.gif
/imgs/gif/gifset_w/worksignp_100.gif
/imgs/gif/gifset_w/worksignp_2.gif
/imgs/gif/gifset_w/worksignp_20.gif
/imgs/gif/gifset_w/worksignp_3.gif
/imgs/gif/gifset_w/worksignp_30.gif
/imgs/gif/gifset_w/worksignp_4.gif
/imgs/gif/gifset_w/worksignp_40.gif
/imgs/gif/gifset_w/worksignp_5.gif
/imgs/gif/gifset_w/worksignp_50.gif
/imgs/gif/gifset_w/worksignp_6.gif
/imgs/gif/gifset_w/worksignp_7.gif
/imgs/gif/gifset_w/worksignp_70.gif
/imgs/gif/gifset_w/worksignp_8.gif
/imgs/gif/gifset_w/worksignp_80.gif
/imgs/gif/gifset_w/worksignp_9.gif
/imgs/gif/gifset_w/worksignp_90.gif
/imgs/gif/gifset_w/worksignq.gif
/imgs/gif/gifset_w/worksignq_1.gif
/imgs/gif/gifset_w/worksignq_10.gif
/imgs/gif/gifset_w/worksignq_100.gif
/imgs/gif/gifset_w/worksignq_2.gif
/imgs/gif/gifset_w/worksignq_20.gif
/imgs/gif/gifset_w/worksignq_3.gif
/imgs/gif/gifset_w/worksignq_30.gif
/imgs/gif/gifset_w/worksignq_4.gif
/imgs/gif/gifset_w/worksignq_40.gif
/imgs/gif/gifset_w/worksignq_5.gif
/imgs/gif/gifset_w/worksignq_50.gif
/imgs/gif/gifset_w/worksignq_6.gif
/imgs/gif/gifset_w/worksignq_7.gif
/imgs/gif/gifset_w/worksignq_70.gif
/imgs/gif/gifset_w/worksignq_8.gif
/imgs/gif/gifset_w/worksignq_80.gif
/imgs/gif/gifset_w/worksignq_9.gif
/imgs/gif/gifset_w/worksignq_90.gif
/imgs/gif/giphy_dollars/giph_weight.gif
/imgs/gif/giphy_dollars/giphy._hands2gif.gif
/imgs/gif/giphy_dollars/giphy.gif
/imgs/gif/giphy_dollars/giphy001.gif
/imgs/gif/giphy_dollars/giphy002.gif
/imgs/gif/giphy_dollars/giphy003.gif
/imgs/gif/giphy_dollars/giphy006.gif
/imgs/gif/giphy_dollars/giphy_005.gif
/imgs/gif/giphy_dollars/giphy_armodillo.gif
/imgs/gif/giphy_dollars/giphy_arrors.gif
/imgs/gif/giphy_dollars/giphy_bitcoikn.gif
/imgs/gif/giphy_dollars/giphy_bounce.gif
/imgs/gif/giphy_dollars/giphy_circl30.gif
/imgs/gif/giphy_dollars/giphy_compassion.gif
/imgs/gif/giphy_dollars/giphy_dolla.gif
/imgs/gif/giphy_dollars/giphy_dollar.gif
/imgs/gif/giphy_dollars/giphy_dollar11.gif
/imgs/gif/giphy_dollars/giphy_dolrpool.gif
/imgs/gif/giphy_dollars/giphy_droll_wimsy.gif
/imgs/gif/giphy_dollars/giphy_expression.gif
/imgs/gif/giphy_dollars/giphy_getalawyer_horns.gif
/imgs/gif/giphy_dollars/giphy_go20.gif
/imgs/gif/giphy_dollars/giphy_go3.gif
/imgs/gif/giphy_dollars/giphy_gold.gif
/imgs/gif/giphy_dollars/giphy_gov.gif
/imgs/gif/giphy_dollars/giphy_graph2.gif
/imgs/gif/giphy_dollars/giphy_hallway.gif
/imgs/gif/giphy_dollars/giphy_hands.gif
/imgs/gif/giphy_dollars/giphy_hands2.gif
/imgs/gif/giphy_dollars/giphy_hugs.gif
/imgs/gif/giphy_dollars/giphy_kalidis.gif
/imgs/gif/giphy_dollars/giphy_kinetic.gif
/imgs/gif/giphy_dollars/giphy_konabus.gif
/imgs/gif/giphy_dollars/giphy_konabus_stickr.gif
/imgs/gif/giphy_dollars/giphy_kt30.gif
/imgs/gif/giphy_dollars/giphy_law.gif
/imgs/gif/giphy_dollars/giphy_law01.gif
/imgs/gif/giphy_dollars/giphy_law02.gif
/imgs/gif/giphy_dollars/giphy_letter.gif
/imgs/gif/giphy_dollars/giphy_littletipper.gif
/imgs/gif/giphy_dollars/giphy_makechange.gif
/imgs/gif/giphy_dollars/giphy_moneyclap.gif
/imgs/gif/giphy_dollars/giphy_moneyeye.gif
/imgs/gif/giphy_dollars/giphy_moneymachine.gif
/imgs/gif/giphy_dollars/giphy_moneymonkey.gif
/imgs/gif/giphy_dollars/giphy_moneyspiral.gif
/imgs/gif/giphy_dollars/giphy_monydog.gif
/imgs/gif/giphy_dollars/giphy_mouse/giph_phone04y.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy._nophonegif.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy.gif_construction06.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_constrion20.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction01.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction02.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction03.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction04.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction08.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction09.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction11.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction12.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction15.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction21.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction25.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction_10.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_construction_dogs.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling01.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling02.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling03.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling04.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling06.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling07.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling08.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_falling09.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_filecabinat.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_focus10.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse01.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse02.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse03.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse06.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_mouse_konabus.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_phone05.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_phone06.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphy_snap.gif
/imgs/gif/giphy_dollars/giphy_mouse/giphyfu.gif
/imgs/gif/giphy_dollars/giphy_pano.gif
/imgs/gif/giphy_dollars/giphy_pencil.gif
/imgs/gif/giphy_dollars/giphy_phonepage.gif
/imgs/gif/giphy_dollars/giphy_presentermedia.gif
/imgs/gif/giphy_dollars/giphy_presentermedia2.gif
/imgs/gif/giphy_dollars/giphy_ropeup.gif
/imgs/gif/giphy_dollars/giphy_scrollstats.gif
/imgs/gif/giphy_dollars/giphy_trsansform.gif
/imgs/gif/giphy_dollars/giphy_typer.gif
/imgs/gif/giphy_dollars/giphy_verified.gif
/imgs/gif/giphy_dollars/giphy_water.gif
/imgs/gif/giphy_dollars/giphy_weaigh5.gif
/imgs/gif/giphy_dollars/giphy_weight3.gif
/imgs/gif/giphy_dollars/giphyarrowfire.gif
/imgs/gif/giphy_dollars/giphybuslt.gif
/imgs/gif/giphy_dollars/giphyfocuseyes.gif
/imgs/gif/giphy_dollars/giphygowave'.gif
/imgs/gif/giphy_dollars/giphygraph.gif
/imgs/gif/giphy_dollars/giphymoney_smerf.gif
/imgs/gif/giphy_dollars/giphytwist.gif
/imgs/gif/giphy_dollars/giphyvortex.gif
/imgs/gif/giphy_dollars/giphyweaight2.gif
/imgs/gif/giphy_us_news_focus/5kYpl7hIHEKwNOhjgU1_gV84APypkdg-yYH09H0fkS0.gif
/imgs/gif/giphy_us_news_focus/gip_falls3hy.gif
/imgs/gif/giphy_us_news_focus/giph_applebitesy.gif
/imgs/gif/giphy_us_news_focus/giph_armymovie_dancing.gif
/imgs/gif/giphy_us_news_focus/giph_auroa1y.gif
/imgs/gif/giphy_us_news_focus/giph_cloudlipsy.gif
/imgs/gif/giphy_us_news_focus/giph_crazy_chipndale.gif
/imgs/gif/giphy_us_news_focus/giph_cuberolly.gif
/imgs/gif/giphy_us_news_focus/giph_droopywalkery.gif
/imgs/gif/giphy_us_news_focus/giph_ducks_hatchety.gif
/imgs/gif/giphy_us_news_focus/giph_fallsy.gif
/imgs/gif/giphy_us_news_focus/giph_fradykaty.gif
/imgs/gif/giphy_us_news_focus/giph_hand6y.gif
/imgs/gif/giphy_us_news_focus/giph_handsignxy.gif
/imgs/gif/giphy_us_news_focus/giph_homer_skippingy.gif
/imgs/gif/giphy_us_news_focus/giph_kiti_dancey.gif
/imgs/gif/giphy_us_news_focus/giph_labthinker_startle.gif
/imgs/gif/giphy_us_news_focus/giph_mouthorbsy.gif
/imgs/gif/giphy_us_news_focus/giph_mrrogers_fingersy.gif
/imgs/gif/giphy_us_news_focus/giph_officer_byrdbelly.gif
/imgs/gif/giphy_us_news_focus/giph_pastryroad_food_strollersy.gif
/imgs/gif/giphy_us_news_focus/giph_portalguyy.gif
/imgs/gif/giphy_us_news_focus/giph_roullett2y.gif
/imgs/gif/giphy_us_news_focus/giph_tinkerbell_sity.gif
/imgs/gif/giphy_us_news_focus/giph_tinkerbell_wavey.gif
/imgs/gif/giphy_us_news_focus/giph_yoga_gloey.gif
/imgs/gif/giphy_us_news_focus/giphroullettey.gif
/imgs/gif/giphy_us_news_focus/giphy._andy_pilllession.gif
/imgs/gif/giphy_us_news_focus/giphy._astricgif.gif
/imgs/gif/giphy_us_news_focus/giphy._bigcombgif.gif
/imgs/gif/giphy_us_news_focus/giphy._bugs_blueprintgif.gif
/imgs/gif/giphy_us_news_focus/giphy._bugs_survalgif.gif
/imgs/gif/giphy_us_news_focus/giphy._byrdpucker_newsgif.gif
/imgs/gif/giphy_us_news_focus/giphy._crazy_belegosygif.gif
/imgs/gif/giphy_us_news_focus/giphy._hallwaygif.gif
/imgs/gif/giphy_us_news_focus/giphy._handripplesgif.gif
/imgs/gif/giphy_us_news_focus/giphy._headnhandsgif.gif
/imgs/gif/giphy_us_news_focus/giphy._horse_dancygif.gif
/imgs/gif/giphy_us_news_focus/giphy._horsegirl_toongif.gif
/imgs/gif/giphy_us_news_focus/giphy._jak1gif.gif
/imgs/gif/giphy_us_news_focus/giphy._jumpropegif.gif
/imgs/gif/giphy_us_news_focus/giphy._kitihahagif.gif
/imgs/gif/giphy_us_news_focus/giphy._musicgif.gif
/imgs/gif/giphy_us_news_focus/giphy._oldknobegif.gif
/imgs/gif/giphy_us_news_focus/giphy._orbcube2gif.gif
/imgs/gif/giphy_us_news_focus/giphy._orbsgif.gif
/imgs/gif/giphy_us_news_focus/giphy._ponygirl_runninggif.gif
/imgs/gif/giphy_us_news_focus/giphy._sniffergif.gif
/imgs/gif/giphy_us_news_focus/giphy._timefacegif.gif
/imgs/gif/giphy_us_news_focus/giphy._zoom_creepygif.gif
/imgs/gif/giphy_us_news_focus/giphy._zoom_microgif.gif
/imgs/gif/giphy_us_news_focus/giphy.gif
/imgs/gif/giphy_us_news_focus/giphy.gif_duckbottom.gif
/imgs/gif/giphy_us_news_focus/giphy_321run.gif
/imgs/gif/giphy_us_news_focus/giphy_al_ankovick_handflail.gif
/imgs/gif/giphy_us_news_focus/giphy_alien_bio2.gif
/imgs/gif/giphy_us_news_focus/giphy_alien_dancer.gif
/imgs/gif/giphy_us_news_focus/giphy_alien_handflal.gif
/imgs/gif/giphy_us_news_focus/giphy_alien_heads.gif
/imgs/gif/giphy_us_news_focus/giphy_alien_pause.gif
/imgs/gif/giphy_us_news_focus/giphy_android_breath.gif
/imgs/gif/giphy_us_news_focus/giphy_arm_n_hand.gif
/imgs/gif/giphy_us_news_focus/giphy_army_dancehands.gif
/imgs/gif/giphy_us_news_focus/giphy_armydance_rusia.gif
/imgs/gif/giphy_us_news_focus/giphy_bananahat.gif
/imgs/gif/giphy_us_news_focus/giphy_bettyboop_accounting.gif
/imgs/gif/giphy_us_news_focus/giphy_bigjoger.gif
/imgs/gif/giphy_us_news_focus/giphy_bird_jogger.gif
/imgs/gif/giphy_us_news_focus/giphy_birdgirl_vinage.gif
/imgs/gif/giphy_us_news_focus/giphy_blocks.gif
/imgs/gif/giphy_us_news_focus/giphy_bluecircle.gif
/imgs/gif/giphy_us_news_focus/giphy_bugs_mirror.gif
/imgs/gif/giphy_us_news_focus/giphy_buzznduck.gif
/imgs/gif/giphy_us_news_focus/giphy_byrdpucker_cowgirl_yodkle.gif
/imgs/gif/giphy_us_news_focus/giphy_calwheel.gif
/imgs/gif/giphy_us_news_focus/giphy_carterwalk.gif
/imgs/gif/giphy_us_news_focus/giphy_catglasses.gif
/imgs/gif/giphy_us_news_focus/giphy_chain.gif
/imgs/gif/giphy_us_news_focus/giphy_chap2act.gif
/imgs/gif/giphy_us_news_focus/giphy_charleybrown_depressesd.gif
/imgs/gif/giphy_us_news_focus/giphy_circlecircle.gif
/imgs/gif/giphy_us_news_focus/giphy_clouds.gif
/imgs/gif/giphy_us_news_focus/giphy_clubbing.gif
/imgs/gif/giphy_us_news_focus/giphy_connect.gif
/imgs/gif/giphy_us_news_focus/giphy_cowgirl_hat.gif
/imgs/gif/giphy_us_news_focus/giphy_cowgirl_hips.gif
/imgs/gif/giphy_us_news_focus/giphy_crazy_flowergirl.gif
/imgs/gif/giphy_us_news_focus/giphy_crazy_manson.gif
/imgs/gif/giphy_us_news_focus/giphy_crazy_simson1.gif
/imgs/gif/giphy_us_news_focus/giphy_crazycats.gif
/imgs/gif/giphy_us_news_focus/giphy_crazydanc1.gif
/imgs/gif/giphy_us_news_focus/giphy_crazydanse2.gif
/imgs/gif/giphy_us_news_focus/giphy_crazyeyes.gif
/imgs/gif/giphy_us_news_focus/giphy_crazyguy2.gif
/imgs/gif/giphy_us_news_focus/giphy_crazyhead3.gif
/imgs/gif/giphy_us_news_focus/giphy_curealla_doorflash.gif
/imgs/gif/giphy_us_news_focus/giphy_cute_ponygirl.gif
/imgs/gif/giphy_us_news_focus/giphy_cute_ponytoon.gif
/imgs/gif/giphy_us_news_focus/giphy_cutekiti3.gif
/imgs/gif/giphy_us_news_focus/giphy_cutekity.gif
/imgs/gif/giphy_us_news_focus/giphy_cycklebars.gif
/imgs/gif/giphy_us_news_focus/giphy_cycle2.gif
/imgs/gif/giphy_us_news_focus/giphy_dance_pinocio.gif
/imgs/gif/giphy_us_news_focus/giphy_dancerbears.gif
/imgs/gif/giphy_us_news_focus/giphy_daneworm2.gif
/imgs/gif/giphy_us_news_focus/giphy_derbys.gif
/imgs/gif/giphy_us_news_focus/giphy_dogdron.gif
/imgs/gif/giphy_us_news_focus/giphy_dresswalking.gif
/imgs/gif/giphy_us_news_focus/giphy_drummerboy.gif
/imgs/gif/giphy_us_news_focus/giphy_duck_hotpic.gif
/imgs/gif/giphy_us_news_focus/giphy_duck_refusal.gif
/imgs/gif/giphy_us_news_focus/giphy_duckdance.gif
/imgs/gif/giphy_us_news_focus/giphy_duckdance_1.gif
/imgs/gif/giphy_us_news_focus/giphy_duckwalking.gif
/imgs/gif/giphy_us_news_focus/giphy_dwaf_.gif
/imgs/gif/giphy_us_news_focus/giphy_eyes_cat.gif
/imgs/gif/giphy_us_news_focus/giphy_faint.gif
/imgs/gif/giphy_us_news_focus/giphy_falls2.gif
/imgs/gif/giphy_us_news_focus/giphy_fasttalker.gif
/imgs/gif/giphy_us_news_focus/giphy_feet_aquarium.gif
/imgs/gif/giphy_us_news_focus/giphy_fileburn.gif
/imgs/gif/giphy_us_news_focus/giphy_floatorbe_n_alien.gif
/imgs/gif/giphy_us_news_focus/giphy_focus_pendulum.gif
/imgs/gif/giphy_us_news_focus/giphy_funnwalker.gif
/imgs/gif/giphy_us_news_focus/giphy_gear1.gif
/imgs/gif/giphy_us_news_focus/giphy_goathead.gif
/imgs/gif/giphy_us_news_focus/giphy_goflow.gif
/imgs/gif/giphy_us_news_focus/giphy_gonoard_water.gif
/imgs/gif/giphy_us_news_focus/giphy_handeyes.gif
/imgs/gif/giphy_us_news_focus/giphy_handshadows.gif
/imgs/gif/giphy_us_news_focus/giphy_head3.gif
/imgs/gif/giphy_us_news_focus/giphy_headbank.gif
/imgs/gif/giphy_us_news_focus/giphy_headinhead.gif
/imgs/gif/giphy_us_news_focus/giphy_holloween_waited2long.gif
/imgs/gif/giphy_us_news_focus/giphy_horse_champ.gif
/imgs/gif/giphy_us_news_focus/giphy_horse_circle.gif
/imgs/gif/giphy_us_news_focus/giphy_horse_connelly.gif
/imgs/gif/giphy_us_news_focus/giphy_horseguy.gif
/imgs/gif/giphy_us_news_focus/giphy_horseguy_dancer.gif
/imgs/gif/giphy_us_news_focus/giphy_horseguy_greekdance.gif
/imgs/gif/giphy_us_news_focus/giphy_horsehead2head.gif
/imgs/gif/giphy_us_news_focus/giphy_hotdogs_woof.gif
/imgs/gif/giphy_us_news_focus/giphy_hummingbird.gif
/imgs/gif/giphy_us_news_focus/giphy_icecreamman.gif
/imgs/gif/giphy_us_news_focus/giphy_jkwiitree.gif
/imgs/gif/giphy_us_news_focus/giphy_jtf30_sinkhole.gif
/imgs/gif/giphy_us_news_focus/giphy_jumproap.gif
/imgs/gif/giphy_us_news_focus/giphy_kids_teatertater.gif
/imgs/gif/giphy_us_news_focus/giphy_kiti_piano1.gif
/imgs/gif/giphy_us_news_focus/giphy_kitisocks.gif
/imgs/gif/giphy_us_news_focus/giphy_klatu_visor.gif
/imgs/gif/giphy_us_news_focus/giphy_ko_air_gituar.gif
/imgs/gif/giphy_us_news_focus/giphy_konabus_bigroll.gif
/imgs/gif/giphy_us_news_focus/giphy_kt_closereflex.gif
/imgs/gif/giphy_us_news_focus/giphy_kt_dance.gif
/imgs/gif/giphy_us_news_focus/giphy_kt_warmup.gif
/imgs/gif/giphy_us_news_focus/giphy_kt_wip.gif
/imgs/gif/giphy_us_news_focus/giphy_lab_thinker.gif
/imgs/gif/giphy_us_news_focus/giphy_labthinker_gotit.gif
/imgs/gif/giphy_us_news_focus/giphy_labthinker_happydance.gif
/imgs/gif/giphy_us_news_focus/giphy_labthinker_nod.gif
/imgs/gif/giphy_us_news_focus/giphy_labthinker_poof.gif
/imgs/gif/giphy_us_news_focus/giphy_labthinker_v.gif
/imgs/gif/giphy_us_news_focus/giphy_lawguy_crazy.gif
/imgs/gif/giphy_us_news_focus/giphy_lawguy_doublecrazy.gif
/imgs/gif/giphy_us_news_focus/giphy_lawguy_doublefinders.gif
/imgs/gif/giphy_us_news_focus/giphy_lawguy_singlefinger.gif
/imgs/gif/giphy_us_news_focus/giphy_loopdeloop.gif
/imgs/gif/giphy_us_news_focus/giphy_lovegyro.gif
/imgs/gif/giphy_us_news_focus/giphy_magicdress1.gif
/imgs/gif/giphy_us_news_focus/giphy_magicdress_1.gif
/imgs/gif/giphy_us_news_focus/giphy_magicdress_2.gif
/imgs/gif/giphy_us_news_focus/giphy_magicdress_carage.gif
/imgs/gif/giphy_us_news_focus/giphy_magicfingers.gif
/imgs/gif/giphy_us_news_focus/giphy_magicgeometry.gif
/imgs/gif/giphy_us_news_focus/giphy_mcclown.gif
/imgs/gif/giphy_us_news_focus/giphy_mickey_boatwistle.gif
/imgs/gif/giphy_us_news_focus/giphy_mickey_devildance.gif
/imgs/gif/giphy_us_news_focus/giphy_mickey_magic.gif
/imgs/gif/giphy_us_news_focus/giphy_mickeymagic_hands1.gif
/imgs/gif/giphy_us_news_focus/giphy_mickeymagic_hands2.gif
/imgs/gif/giphy_us_news_focus/giphy_mickeypiano2.gif
/imgs/gif/giphy_us_news_focus/giphy_mickeypiano_32.gif
/imgs/gif/giphy_us_news_focus/giphy_mickymagic_hat1.gif
/imgs/gif/giphy_us_news_focus/giphy_mickymagic_haton.gif
/imgs/gif/giphy_us_news_focus/giphy_mikey_piano.gif
/imgs/gif/giphy_us_news_focus/giphy_miky_magic_stars.gif
/imgs/gif/giphy_us_news_focus/giphy_monkeytrap_release.gif
/imgs/gif/giphy_us_news_focus/giphy_mousedance_1.gif
/imgs/gif/giphy_us_news_focus/giphy_mousedance_2.gif
/imgs/gif/giphy_us_news_focus/giphy_mouth_wavy.gif
/imgs/gif/giphy_us_news_focus/giphy_nosign.gif
/imgs/gif/giphy_us_news_focus/giphy_oragatang_hairblower.gif
/imgs/gif/giphy_us_news_focus/giphy_orbs_n_arcs.gif
/imgs/gif/giphy_us_news_focus/giphy_ozcouple.gif
/imgs/gif/giphy_us_news_focus/giphy_peterpan_closecall.gif
/imgs/gif/giphy_us_news_focus/giphy_piano_mouses.gif
/imgs/gif/giphy_us_news_focus/giphy_pills.gif
/imgs/gif/giphy_us_news_focus/giphy_pinocia_danc2.gif
/imgs/gif/giphy_us_news_focus/giphy_pinup_barbq.gif
/imgs/gif/giphy_us_news_focus/giphy_ponyride.gif
/imgs/gif/giphy_us_news_focus/giphy_potion_head.gif
/imgs/gif/giphy_us_news_focus/giphy_potterywheel.gif
/imgs/gif/giphy_us_news_focus/giphy_powerwoamn.gif
/imgs/gif/giphy_us_news_focus/giphy_pperms_stars_stripes.gif
/imgs/gif/giphy_us_news_focus/giphy_ripples.gif
/imgs/gif/giphy_us_news_focus/giphy_simpsons_takemeaway.gif
/imgs/gif/giphy_us_news_focus/giphy_sitter.gif
/imgs/gif/giphy_us_news_focus/giphy_sitter_pondeyes.gif
/imgs/gif/giphy_us_news_focus/giphy_sloop.gif
/imgs/gif/giphy_us_news_focus/giphy_slots.gif
/imgs/gif/giphy_us_news_focus/giphy_slowwalker.gif
/imgs/gif/giphy_us_news_focus/giphy_soupstorm.gif
/imgs/gif/giphy_us_news_focus/giphy_spion_walker.gif
/imgs/gif/giphy_us_news_focus/giphy_spiral.gif
/imgs/gif/giphy_us_news_focus/giphy_spiralss.gif
/imgs/gif/giphy_us_news_focus/giphy_sprialss.gif
/imgs/gif/giphy_us_news_focus/giphy_starwar_evilhood.gif
/imgs/gif/giphy_us_news_focus/giphy_sumi_gospinner.gif
/imgs/gif/giphy_us_news_focus/giphy_sumo_bodyhead.gif
/imgs/gif/giphy_us_news_focus/giphy_swinggirls.gif
/imgs/gif/giphy_us_news_focus/giphy_tetertater_gus2.gif
/imgs/gif/giphy_us_news_focus/giphy_tetertater_spiners.gif
/imgs/gif/giphy_us_news_focus/giphy_time_bugs.gif
/imgs/gif/giphy_us_news_focus/giphy_time_clockhands.gif
/imgs/gif/giphy_us_news_focus/giphy_timeguy2.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_.kickgif.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_2.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_4.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_crazy.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_mad.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_mapout.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_riverdance.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_starstreamers.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_surprise.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_thimble.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_turnn.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_wall.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_waterfall.gif
/imgs/gif/giphy_us_news_focus/giphy_tinkerbell_woops.gif
/imgs/gif/giphy_us_news_focus/giphy_tinrtbell_turm.gif
/imgs/gif/giphy_us_news_focus/giphy_toiletpaper.gif
/imgs/gif/giphy_us_news_focus/giphy_toothout.gif
/imgs/gif/giphy_us_news_focus/giphy_train_justintime.gif
/imgs/gif/giphy_us_news_focus/giphy_trainview.gif
/imgs/gif/giphy_us_news_focus/giphy_trcx_horsewip.gif
/imgs/gif/giphy_us_news_focus/giphy_tvstatic_drips.gif
/imgs/gif/giphy_us_news_focus/giphy_uphill.gif
/imgs/gif/giphy_us_news_focus/giphy_us_chatter.gif
# /imgs/gif/giphy_view30.gif
/imgs/gif/iperms/giphy_army_cleanfun.gif
/imgs/gif/iperms/giphy_army_kiti.gif
/imgs/gif/iperms/giphy_army_marksync.gif
/imgs/gif/iperms/giphy_army_pushups_nohands.gif
/imgs/gif/iperms/giphy_army_seal_sparkle.gif
/imgs/gif/iperms/giphy_army_shake_salure.gif
/imgs/gif/iperms/giphy_army_tankroll.gif
/imgs/gif/iperms/giphy_armydance1.gif
/imgs/gif/iperms/giphy_armymarchn.gif
/imgs/gif/iperms/giphy_armytoon_late.gif
/imgs/gif/iperms/giphy_armywave.gif
/imgs/gif/iperms/giphy_armywave_barrel.gif
/imgs/gif/iperms/giphy_iperms.gif
/imgs/gif/iperms/giphy_iperms_bell.gif
/imgs/gif/iperms/giphy_iperms_strips.gif
/imgs/gif/kali/adfaf.gif
/imgs/gif/kali/kali16.gif
/imgs/gif/kali/kali2.gif
/imgs/gif/kali/kali25.gif
/imgs/gif/kali/kali3.gif
/imgs/gif/kali/kali4.gif
/imgs/gif/kali/kali5.gif
/imgs/gif/kali/kali8].gif
/imgs/gif/kali/kalid1.gif
/imgs/gif/kali/maskflash.gif
/imgs/gif/kali/staic20.gif
/imgs/gif/kali/static1.gif
/imgs/gif/kali/static3.gif
/imgs/gif/kali/static6.gif
/imgs/gif/kitiworks/giphy._kitiworks_read.gif
/imgs/gif/kitiworks/giphy_kiti_ipadfish.gif
/imgs/gif/kitiworks/giphy_kiti_purfect.gif
/imgs/gif/kitiworks/giphy_kitimail.gif
/imgs/gif/kitiworks/giphy_kitionline.gif
/imgs/gif/kitiworks/giphy_kitirunning.gif
/imgs/gif/kitiworks/giphy_kitiwork_bounce.gif
/imgs/gif/kitiworks/giphy_kitiworks_trail.gif
/imgs/gif/kitiworks/giphy_kitiwrites.gif
/imgs/gif/kitiworks/giphy_kocats.gif
/imgs/gif/kitiworks/giphy_news_kitiworks.gif
/imgs/gif/konabus/giphy_konabus10.gif
/imgs/gif/konabus/giphy_konabus11.gif
/imgs/gif/konabus/giphy_konabus13.gif
/imgs/gif/konabus/giphy_konabus14.gif
/imgs/gif/konabus/giphy_konabus20.gif
/imgs/gif/konabus/giphy_skullflowers.gif
/imgs/gif/konabus/giphy_vkonabus03.gif
/imgs/gif/konet/giphy_weave.gif
/imgs/gif/kt/giphy_finger_arat.gif
/imgs/gif/kt/giphy_funnywalking.gif
/imgs/gif/kt/giphy_gymtoss.gif
/imgs/gif/kt/giphy_hand2s.gif
/imgs/gif/kt/giphy_handhither_gloves.gif
/imgs/gif/kt/giphy_hands1.gif
/imgs/gif/kt/giphy_headwaves.gif
/imgs/gif/kt/giphy_homerhandflaling.gif
/imgs/gif/kt/giphy_kt01.gif
/imgs/gif/kt/giphy_kt02.gif
/imgs/gif/kt/giphy_kt03.gif
/imgs/gif/kt/giphy_notes20.gif
/imgs/gif/med/giphy_eyeline.gif
/imgs/gif/med/giphy_eyes_line.gif
/imgs/gif/med/giphy_eyeworms.gif
/imgs/gif/med/giphy_heart01.gif
/imgs/gif/med/giphy_heart02.gif
/imgs/gif/med/giphy_heart04.gif
/imgs/gif/med/giphy_heart06.gif
/imgs/gif/med/giphy_heart10.gif
/imgs/gif/med/giphy_heart11.gif
/imgs/gif/med/giphy_heart12.gif
/imgs/gif/med/giphy_heart13.gif
/imgs/gif/med/giphy_heart15.gif
/imgs/gif/med/giphy_heart16.gif
/imgs/gif/med/giphy_heart17.gif
/imgs/gif/med/giphy_heart18.gif
/imgs/gif/med/giphy_heart19.gif
/imgs/gif/med/giphy_heart20.gif
/imgs/gif/med/giphy_heart21.gif
/imgs/gif/med/giphy_heart22.gif
/imgs/gif/med/giphy_heart23.gif
/imgs/gif/med/giphy_heart24.gif
/imgs/gif/med/giphy_heart25.gif
/imgs/gif/med/giphy_heart26.gif
/imgs/gif/med/giphy_heart27.gif
/imgs/gif/med/giphy_heart28.gif
/imgs/gif/med/giphy_heart29.gif
/imgs/gif/mouse/giphy.gif
/imgs/gif/mouse/giphy_construction01.gif
/imgs/gif/mouse/giphy_construction02.gif
/imgs/gif/mouse/giphy_construction03.gif
/imgs/gif/mouse/giphy_construction04.gif
/imgs/gif/mouse/giphy_construction05.gif
/imgs/gif/mouse/giphy_construction06.gif
/imgs/gif/mouse/giphy_construction07.gif
/imgs/gif/mouse/giphy_construction08.gif
/imgs/gif/mouse/giphy_construction09.gif
/imgs/gif/mouse/giphy_construction10.gif
/imgs/gif/mouse/giphy_construction11.gif
/imgs/gif/mouse/giphy_construction12.gif
/imgs/gif/mouse/giphy_construction13.gif
/imgs/gif/mouse/giphy_construction14.gif
/imgs/gif/mouse/giphy_construction15.gif
/imgs/gif/mouse/giphy_falling01.gif
/imgs/gif/mouse/giphy_falling02.gif
/imgs/gif/mouse/giphy_falling03.gif
/imgs/gif/mouse/giphy_falling04.gif
/imgs/gif/mouse/giphy_falling06.gif
/imgs/gif/mouse/giphy_falling07.gif
/imgs/gif/mouse/giphy_falling08.gif
/imgs/gif/mouse/giphy_falling09.gif
/imgs/gif/mouse/giphy_filecabinat.gif
/imgs/gif/mouse/giphy_focus10.gif
/imgs/gif/mouse/giphy_fu.gif
/imgs/gif/mouse/giphy_mouse01.gif
/imgs/gif/mouse/giphy_mouse02.gif
/imgs/gif/mouse/giphy_mouse03.gif
/imgs/gif/mouse/giphy_mouse06.gif
/imgs/gif/mouse/giphy_mouse_konabus.gif
/imgs/gif/mouse/giphy_phone01.gif
/imgs/gif/mouse/giphy_phone04.gif
/imgs/gif/mouse/giphy_phone05.gif
/imgs/gif/mouse/giphy_phone06.gif
/imgs/gif/mouse/giphy_snap.gif
/imgs/gif/new.gif
/imgs/gif/notes/giphy_konabus16.gif
/imgs/gif/notes/giphy_kt10.gif
/imgs/gif/notes/giphy_notes00.gif
/imgs/gif/notes/giphy_notes01.gif
/imgs/gif/notes/giphy_notes02.gif
/imgs/gif/notes/giphy_notes03.gif
/imgs/gif/notes/giphy_notes04.gif
/imgs/gif/notes/giphy_notes05.gif
/imgs/gif/notes/giphy_notes06.gif
/imgs/gif/notes/giphy_notes07.gif
/imgs/gif/notes/giphy_notes08.gif
/imgs/gif/notes/giphy_notes09.gif
/imgs/gif/notes/giphy_notes10.gif
/imgs/gif/notes/giphy_notes11.gif
/imgs/gif/notes/giphy_notes13.gif
/imgs/gif/notes/giphy_notes15.gif
/imgs/gif/notes/giphy_notes16.gif
/imgs/gif/notes/giphy_notes18.gif
/imgs/gif/notes/giphy_notes19.gif
/imgs/gif/notes/giphy_notes19b.gif
/imgs/gif/notes/giphy_notes23.gif
/imgs/gif/notes/giphy_notes24.gif
/imgs/gif/notes/giphy_notes25.gif
/imgs/gif/notes/giphy_notes26.gif
/imgs/gif/notes/giphy_notes27.gif
/imgs/gif/orbs/balls3.gif
/imgs/gif/orbs/balls4.gif
/imgs/gif/orbs/ballsrainbow.gif
/imgs/gif/orbs/cub1.gif
/imgs/gif/orbs/dia3.gif
/imgs/gif/orbs/diam1.gif
/imgs/gif/orbs/godots.gif
/imgs/gif/orbs/godotss.gif
/imgs/gif/orbs/goripple.gif
/imgs/gif/orbs/helix1.gif
/imgs/gif/orbs/jellyfish.gif
/imgs/gif/orbs/kali11.gif
/imgs/gif/orbs/kali15.gif
/imgs/gif/orbs/kali20.gif
/imgs/gif/orbs/laki21.gif
/imgs/gif/orbs/orb1.gif
/imgs/gif/orbs/orb10.gif
/imgs/gif/orbs/orb11.gif
/imgs/gif/orbs/orb3.gif
/imgs/gif/orbs/orb43.gif
/imgs/gif/orbs/orb6.gif
/imgs/gif/orbs/orb8.gif
/imgs/gif/orbs/orbcryst_alpulse.gif
/imgs/gif/orbs/orbdrip.gif
/imgs/gif/orbs/orbrainbow.gif
/imgs/gif/orbs/orbring.gif
/imgs/gif/orbs/orbspiral.gif
/imgs/gif/orbs/ringcube.gif
/imgs/gif/orbs/rings.gif
/imgs/gif/orbs/rings2.gif
/imgs/gif/orbs/ringworm.gif
/imgs/gif/orbs/rubix.gif
/imgs/gif/orbs/soccorball.gif
/imgs/gif/orbs/sprayfountain.gif
/imgs/gif/orbs/sssfg.gif
/imgs/gif/pastryroad/cakelite.gif
/imgs/gif/pastryroad/giphy._crazycookgif.gif
/imgs/gif/pastryroad/giphy_canydrops.gif
/imgs/gif/pastryroad/giphy_honeydrip.gif
/imgs/gif/pastryroad/giphy_pastryroad_frosting.gif
/imgs/gif/pastryroad/giphy_pastryroad_mixer.gif
/imgs/gif/pastryroad/giphy_woohoo.gif
/imgs/gif/ring.gif
/imgs/gif/ringb.gif
/imgs/gif/ringd.gif
/imgs/gif/ringp.gif
/imgs/gif/ringq.gif
/imgs/gif/rings.gif
/imgs/gif/ringsb.gif
/imgs/gif/ringsd.gif
/imgs/gif/ringsp.gif
/imgs/gif/ringsq.gif
/imgs/gif/spacers/giphy_handkither.gif
/imgs/gif/spacers/giphy_jkwii_head.gif
/imgs/gif/spacers/giphy_jkwii_head2.gif
/imgs/gif/spacers/giphy_spacer_01.gif
/imgs/gif/spacers/giphy_spacer_02.gif
/imgs/gif/spacers/giphy_spacer_03.gif
/imgs/gif/spacers/giphy_spacer_04.gif
/imgs/gif/spacers/giphy_spacer_05.gif
/imgs/gif/spacers/giphy_spacer_07.gif
/imgs/gif/spacers/giphy_spacer_08.gif
/imgs/gif/spacers/giphy_spacer_09.gif
/imgs/gif/spacers/giphy_spacer_10.gif
/imgs/gif/spacers/giphy_spacer_11.gif
/imgs/gif/spacers/giphy_spacer_12.gif
/imgs/gif/spacers/giphy_spacer_13.gif
/imgs/gif/spacers/giphy_spacer_15.gif
/imgs/gif/spacers/giphy_spacer_17.gif
/imgs/gif/spacers/giphy_spacer_19.gif
/imgs/gif/spacers/giphy_spacer_20.gif
/imgs/gif/spacers/giphy_spacer_21.gif
/imgs/gif/spacers/giphy_spacer_22.gif
/imgs/gif/spacers/tn/tn_giphy_handkither.gif
/imgs/gif/spacers/tn/tn_giphy_jkwii_head.gif
/imgs/gif/spacers/tn/tn_giphy_jkwii_head2.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_01.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_02.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_03.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_04.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_05.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_07.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_08.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_09.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_10.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_11.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_12.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_13.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_15.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_17.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_19.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_20.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_21.gif
/imgs/gif/spacers/tn/tn_giphy_spacer_22.gif
/imgs/gif/time/giph_time_ticktocky.gif
/imgs/gif/time/giphy+flag_fireworks.gif
/imgs/gif/time/giphy_circlenumbers.gif
/imgs/gif/time/giphy_kititail.gif
/imgs/gif/time/giphy_konabus_kitibong.gif
/imgs/gif/time/giphy_paperhandling.gif
/imgs/gif/time/giphy_recordtime.gif
/imgs/gif/time/giphy_time1.gif
/imgs/gif/time/giphy_time_1213.gif
/imgs/gif/time/giphy_time_clockrays.gif
/imgs/gif/time/giphy_time_clocks.gif
/imgs/gif/time/giphy_time_cubist.gif
/imgs/gif/time/giphy_time_cycle.gif
/imgs/gif/time/giphy_time_flywheel.gif
/imgs/gif/time/giphy_time_gears.gif
/imgs/gif/time/giphy_time_goo.gif
/imgs/gif/time/giphy_time_hotsand.gif
/imgs/gif/time/giphy_time_kiti_ticktail.gif
/imgs/gif/time/giphy_time_numbers.gif
/imgs/gif/time/giphy_time_running.gif
/imgs/gif/time/giphy_time_schedule.gif
/imgs/gif/time/giphy_time_silouette.gif
/imgs/gif/time/giphy_time_spinn.gif
/imgs/gif/time/giphy_time_spiral.gif
/imgs/gif/time/giphy_time_spiral_up.gif
/imgs/gif/time/giphy_time_strobe.gif
/imgs/gif/time/giphy_time_swingers.gif
/imgs/gif/time/giphy_time_toons.gif
/imgs/gif/time/giphy_time_up.gif
/imgs/gif/time/giphy_timebench.gif
/imgs/gif/time/giphy_timeferro.gif
/imgs/gif/time/giphy_timegirls.gif
/imgs/gif/time/giphy_timeguy.gif
/imgs/gif/time/giphy_timegym.gif
/imgs/gif/time/giphy_timeinky.gif
/imgs/gif/time/giphy_timerunning.gif
/imgs/gif/time/giphy_timespinner.gif
/imgs/gif/time/giphy_timespiral_gold.gif
/imgs/gif/time/giphy_yellowbird_lookin.gif
/imgs/gif/time/stoptheclock.gif
/imgs/gif/time/tn/tn_giph_time_ticktocky.gif
/imgs/gif/time/tn/tn_giphy+flag_fireworks.gif
/imgs/gif/time/tn/tn_giphy_circlenumbers.gif
/imgs/gif/time/tn/tn_giphy_kititail.gif
/imgs/gif/time/tn/tn_giphy_konabus_kitibong.gif
/imgs/gif/time/tn/tn_giphy_paperhandling.gif
/imgs/gif/time/tn/tn_giphy_recordtime.gif
/imgs/gif/time/tn/tn_giphy_time1.gif
/imgs/gif/time/tn/tn_giphy_time_1213.gif
/imgs/gif/time/tn/tn_giphy_time_clockrays.gif
/imgs/gif/time/tn/tn_giphy_time_clocks.gif
/imgs/gif/time/tn/tn_giphy_time_cubist.gif
/imgs/gif/time/tn/tn_giphy_time_cycle.gif
/imgs/gif/time/tn/tn_giphy_time_flywheel.gif
/imgs/gif/time/tn/tn_giphy_time_gears.gif
/imgs/gif/time/tn/tn_giphy_time_goo.gif
/imgs/gif/time/tn/tn_giphy_time_hotsand.gif
/imgs/gif/time/tn/tn_giphy_time_kiti_ticktail.gif
/imgs/gif/time/tn/tn_giphy_time_numbers.gif
/imgs/gif/time/tn/tn_giphy_time_running.gif
/imgs/gif/time/tn/tn_giphy_time_schedule.gif
/imgs/gif/time/tn/tn_giphy_time_silouette.gif
/imgs/gif/time/tn/tn_giphy_time_spinn.gif
/imgs/gif/time/tn/tn_giphy_time_spiral.gif
/imgs/gif/time/tn/tn_giphy_time_spiral_up.gif
/imgs/gif/time/tn/tn_giphy_time_strobe.gif
/imgs/gif/time/tn/tn_giphy_time_swingers.gif
/imgs/gif/time/tn/tn_giphy_time_toons.gif
/imgs/gif/time/tn/tn_giphy_time_up.gif
/imgs/gif/time/tn/tn_giphy_timebench.gif
/imgs/gif/time/tn/tn_giphy_timeferro.gif
/imgs/gif/time/tn/tn_giphy_timegirls.gif
/imgs/gif/time/tn/tn_giphy_timeguy.gif
/imgs/gif/time/tn/tn_giphy_timegym.gif
/imgs/gif/time/tn/tn_giphy_timeinky.gif
/imgs/gif/time/tn/tn_giphy_timerunning.gif
/imgs/gif/time/tn/tn_giphy_timespinner.gif
/imgs/gif/time/tn/tn_giphy_timespiral_gold.gif
/imgs/gif/time/tn/tn_giphy_yellowbird_lookin.gif
/imgs/gif/time/tn/tn_stoptheclock.gif
/imgs/gif/us/giph_jkwii_handglowy.gif
/imgs/gif/us/giph_jkwii_popcorny.gif
/imgs/gif/us/giph_us_snapshot.gif
/imgs/gif/us/giphy_alien_bio3.gif
/imgs/gif/us/giphy_alien_worms.gif
/imgs/gif/us/giphy_book_flipblank.gif
/imgs/gif/us/giphy_book_flipedge.gif
/imgs/gif/us/giphy_book_flipfast.gif
/imgs/gif/us/giphy_book_flipflat.gif
/imgs/gif/us/giphy_book_flipold.gif
/imgs/gif/us/giphy_books_shelf.gif
/imgs/gif/us/giphy_bugs_jaildoorsgif.gif
/imgs/gif/us/giphy_bugs_paper.gif
/imgs/gif/us/giphy_bugs_typer.gif
/imgs/gif/us/giphy_bugs_umbrellagif.gif
/imgs/gif/us/giphy_bugsmugs.gif
/imgs/gif/us/giphy_bulbfire.gif
/imgs/gif/us/giphy_byrdpucker_donutlaw_simpsons.gif
/imgs/gif/us/giphy_byrdpucker_hatgirls.gif
/imgs/gif/us/giphy_byrdpucker_horseheadsgif.gif
/imgs/gif/us/giphy_byrdpucker_scan.gif
/imgs/gif/us/giphy_circles_n_bbs.gif
/imgs/gif/us/giphy_coffee_drip.gif
/imgs/gif/us/giphy_coffee_steam.gif
/imgs/gif/us/giphy_demonhorns.gif
/imgs/gif/us/giphy_flagybanner.gif
/imgs/gif/us/giphy_flipbook.gif
/imgs/gif/us/giphy_flipbook2.gif
/imgs/gif/us/giphy_flipbook_glow.gif
/imgs/gif/us/giphy_flipbooks.gif
/imgs/gif/us/giphy_focus_eyeball_hivey.gif
/imgs/gif/us/giphy_g.gif
/imgs/gif/us/giphy_go_crystalcube.gif
/imgs/gif/us/giphy_gridpart.gif
/imgs/gif/us/giphy_jkwii_glance.gif
/imgs/gif/us/giphy_jkwii_handorb.gif
/imgs/gif/us/giphy_jkwii_headwave2.gif
/imgs/gif/us/giphy_k.gif
/imgs/gif/us/giphy_keyboard_onoff_handtoggle.gif
/imgs/gif/us/giphy_keyboard_round.gif
/imgs/gif/us/giphy_kids_arcstrollers.gif
/imgs/gif/us/giphy_kids_tinkerbel_block.gif
/imgs/gif/us/giphy_kids_tinkerbell_laughblock.gif
/imgs/gif/us/giphy_kids_tinkerbell_leafdoor.gif
/imgs/gif/us/giphy_kids_tinkerbell_stare.gif
/imgs/gif/us/giphy_konabus_bugs_rolln.gif
/imgs/gif/us/giphy_konabus_headsmokn.gif
/imgs/gif/us/giphy_konabus_mushrooms.gif
/imgs/gif/us/giphy_konabus_schrooms.gif
/imgs/gif/us/giphy_koswell50.gif
/imgs/gif/us/giphy_kou_elbowpipes.gif
/imgs/gif/us/giphy_kou_magnets1.gif
/imgs/gif/us/giphy_kou_mercury_steps.gif
/imgs/gif/us/giphy_kou_newschool100.gif
/imgs/gif/us/giphy_kou_science_pour.gif
/imgs/gif/us/giphy_med_headknock1.gif
/imgs/gif/us/giphy_med_heart.gif
/imgs/gif/us/giphy_med_teethgif.gif
/imgs/gif/us/giphy_mistspray.gif
/imgs/gif/us/giphy_news_bookworm.gif
/imgs/gif/us/giphy_news_phone.gif
/imgs/gif/us/giphy_news_presses.gif
/imgs/gif/us/giphy_news_slow.gif
/imgs/gif/us/giphy_news_toon.gif
/imgs/gif/us/giphy_orb7.gif
/imgs/gif/us/giphy_orb_caravan.gif
/imgs/gif/us/giphy_orb_coat.gif
/imgs/gif/us/giphy_orb_crystal.gif
/imgs/gif/us/giphy_orb_cubepulse.gif
/imgs/gif/us/giphy_orb_forward.gif
/imgs/gif/us/giphy_orb_glow.gif
/imgs/gif/us/giphy_orb_linear.gif
/imgs/gif/us/giphy_orb_outgif.gif
/imgs/gif/us/giphy_orb_particles.gif
/imgs/gif/us/giphy_orb_plasmagif.gif
/imgs/gif/us/giphy_orb_spirorbgif.gif
/imgs/gif/us/giphy_orb_static.gif
/imgs/gif/us/giphy_orb_wave.gif
/imgs/gif/us/giphy_orbs_birdseye.gif
/imgs/gif/us/giphy_pastryroad_layersgif.gif
/imgs/gif/us/giphy_pulse.gif
/imgs/gif/us/giphy_pulse_big.gif
/imgs/gif/us/giphy_pulse_cube.gif
/imgs/gif/us/giphy_ringshadows.gif
/imgs/gif/us/giphy_runningman_draw.gif
/imgs/gif/us/giphy_scene_medow_butterfly.gif
/imgs/gif/us/giphy_scene_medow_sky.gif
/imgs/gif/us/giphy_scene_moonpond.gif
/imgs/gif/us/giphy_scene_motiongallery.gif
/imgs/gif/us/giphy_slinky_treadmill.gif
/imgs/gif/us/giphy_spinner1.gif
/imgs/gif/us/giphy_spinner_dark.gif
/imgs/gif/us/giphy_time_platters.gif
/imgs/gif/us/giphy_us_alien_dancers.gif
/imgs/gif/us/giphy_us_babyheads.gif
/imgs/gif/us/giphy_us_ballhead2.gif
/imgs/gif/us/giphy_us_ballheads.gif
/imgs/gif/us/giphy_us_flirty1.gif
/imgs/gif/us/giphy_us_flirty2.gif
/imgs/gif/us/giphy_us_headblinkers.gif
/imgs/gif/us/giphy_us_headline.gif
/imgs/gif/us/giphy_us_headwave.gif
/imgs/gif/us/giphy_us_hive.gif
/imgs/gif/us/giphy_us_hive_walkers.gif
/imgs/gif/us/giphy_us_joggers.gif
/imgs/gif/us/giphy_us_pacer.gif
/imgs/gif/us/giphy_us_toons2.gif
/imgs/gif/us/giphy_us_touch1.gif
/imgs/gif/us/giphy_us_walkers.gif
/imgs/gif/us/giphy_woohoo_mickey.gif
/imgs/gif/us/giphy_xmastrees.gif
/imgs/gif/us/giphy_zensitter.gif
/imgs/gif/us/giphy_zoom_earth.gif
/imgs/gif/us/giphy_zoom_typos_fold.gif
/imgs/gif/us/tn/tn_giph_jkwii_handglowy.gif
/imgs/gif/us/tn/tn_giph_jkwii_popcorny.gif
/imgs/gif/us/tn/tn_giph_us_snapshot.gif
/imgs/gif/us/tn/tn_giphy_alien_bio3.gif
/imgs/gif/us/tn/tn_giphy_alien_worms.gif
/imgs/gif/us/tn/tn_giphy_book_flipblank.gif
/imgs/gif/us/tn/tn_giphy_book_flipedge.gif
/imgs/gif/us/tn/tn_giphy_book_flipfast.gif
/imgs/gif/us/tn/tn_giphy_book_flipflat.gif
/imgs/gif/us/tn/tn_giphy_book_flipold.gif
/imgs/gif/us/tn/tn_giphy_books_shelf.gif
/imgs/gif/us/tn/tn_giphy_bugs_jaildoorsgif.gif
/imgs/gif/us/tn/tn_giphy_bugs_paper.gif
/imgs/gif/us/tn/tn_giphy_bugs_typer.gif
/imgs/gif/us/tn/tn_giphy_bugs_umbrellagif.gif
/imgs/gif/us/tn/tn_giphy_bugsmugs.gif
/imgs/gif/us/tn/tn_giphy_bulbfire.gif
/imgs/gif/us/tn/tn_giphy_byrdpucker_donutlaw_simpsons.gif
/imgs/gif/us/tn/tn_giphy_byrdpucker_hatgirls.gif
/imgs/gif/us/tn/tn_giphy_byrdpucker_horseheadsgif.gif
/imgs/gif/us/tn/tn_giphy_byrdpucker_scan.gif
/imgs/gif/us/tn/tn_giphy_circles_n_bbs.gif
/imgs/gif/us/tn/tn_giphy_coffee_drip.gif
/imgs/gif/us/tn/tn_giphy_coffee_steam.gif
/imgs/gif/us/tn/tn_giphy_demonhorns.gif
/imgs/gif/us/tn/tn_giphy_flagybanner.gif
/imgs/gif/us/tn/tn_giphy_flipbook.gif
/imgs/gif/us/tn/tn_giphy_flipbook2.gif
/imgs/gif/us/tn/tn_giphy_flipbook_glow.gif
/imgs/gif/us/tn/tn_giphy_flipbooks.gif
/imgs/gif/us/tn/tn_giphy_focus_eyeball_hivey.gif
/imgs/gif/us/tn/tn_giphy_g.gif
/imgs/gif/us/tn/tn_giphy_go_crystalcube.gif
/imgs/gif/us/tn/tn_giphy_gridpart.gif
/imgs/gif/us/tn/tn_giphy_jkwii_glance.gif
/imgs/gif/us/tn/tn_giphy_jkwii_handorb.gif
/imgs/gif/us/tn/tn_giphy_jkwii_headwave2.gif
/imgs/gif/us/tn/tn_giphy_k.gif
/imgs/gif/us/tn/tn_giphy_keyboard_onoff_handtoggle.gif
/imgs/gif/us/tn/tn_giphy_keyboard_round.gif
/imgs/gif/us/tn/tn_giphy_kids_arcstrollers.gif
/imgs/gif/us/tn/tn_giphy_kids_tinkerbel_block.gif
/imgs/gif/us/tn/tn_giphy_kids_tinkerbell_laughblock.gif
/imgs/gif/us/tn/tn_giphy_kids_tinkerbell_leafdoor.gif
/imgs/gif/us/tn/tn_giphy_kids_tinkerbell_stare.gif
/imgs/gif/us/tn/tn_giphy_konabus_bugs_rolln.gif
/imgs/gif/us/tn/tn_giphy_konabus_headsmokn.gif
/imgs/gif/us/tn/tn_giphy_konabus_mushrooms.gif
/imgs/gif/us/tn/tn_giphy_konabus_schrooms.gif
/imgs/gif/us/tn/tn_giphy_koswell50.gif
/imgs/gif/us/tn/tn_giphy_kou_elbowpipes.gif
/imgs/gif/us/tn/tn_giphy_kou_magnets1.gif
/imgs/gif/us/tn/tn_giphy_kou_mercury_steps.gif
/imgs/gif/us/tn/tn_giphy_kou_newschool100.gif
/imgs/gif/us/tn/tn_giphy_kou_science_pour.gif
/imgs/gif/us/tn/tn_giphy_med_headknock1.gif
/imgs/gif/us/tn/tn_giphy_med_heart.gif
/imgs/gif/us/tn/tn_giphy_med_teethgif.gif
/imgs/gif/us/tn/tn_giphy_mistspray.gif
/imgs/gif/us/tn/tn_giphy_news_bookworm.gif
/imgs/gif/us/tn/tn_giphy_news_phone.gif
/imgs/gif/us/tn/tn_giphy_news_presses.gif
/imgs/gif/us/tn/tn_giphy_news_slow.gif
/imgs/gif/us/tn/tn_giphy_news_toon.gif
/imgs/gif/us/tn/tn_giphy_orb7.gif
/imgs/gif/us/tn/tn_giphy_orb_caravan.gif
/imgs/gif/us/tn/tn_giphy_orb_coat.gif
/imgs/gif/us/tn/tn_giphy_orb_crystal.gif
/imgs/gif/us/tn/tn_giphy_orb_cubepulse.gif
/imgs/gif/us/tn/tn_giphy_orb_forward.gif
/imgs/gif/us/tn/tn_giphy_orb_glow.gif
/imgs/gif/us/tn/tn_giphy_orb_linear.gif
/imgs/gif/us/tn/tn_giphy_orb_outgif.gif
/imgs/gif/us/tn/tn_giphy_orb_particles.gif
/imgs/gif/us/tn/tn_giphy_orb_plasmagif.gif
/imgs/gif/us/tn/tn_giphy_orb_spirorbgif.gif
/imgs/gif/us/tn/tn_giphy_orb_static.gif
/imgs/gif/us/tn/tn_giphy_orb_wave.gif
/imgs/gif/us/tn/tn_giphy_orbs_birdseye.gif
/imgs/gif/us/tn/tn_giphy_pastryroad_layersgif.gif
/imgs/gif/us/tn/tn_giphy_pulse.gif
/imgs/gif/us/tn/tn_giphy_pulse_big.gif
/imgs/gif/us/tn/tn_giphy_pulse_cube.gif
/imgs/gif/us/tn/tn_giphy_ringshadows.gif
/imgs/gif/us/tn/tn_giphy_runningman_draw.gif
/imgs/gif/us/tn/tn_giphy_scene_medow_butterfly.gif
/imgs/gif/us/tn/tn_giphy_scene_medow_sky.gif
/imgs/gif/us/tn/tn_giphy_scene_moonpond.gif
/imgs/gif/us/tn/tn_giphy_scene_motiongallery.gif
/imgs/gif/us/tn/tn_giphy_slinky_treadmill.gif
/imgs/gif/us/tn/tn_giphy_spinner1.gif
/imgs/gif/us/tn/tn_giphy_spinner_dark.gif
/imgs/gif/us/tn/tn_giphy_time_platters.gif
/imgs/gif/us/tn/tn_giphy_us_alien_dancers.gif
/imgs/gif/us/tn/tn_giphy_us_babyheads.gif
/imgs/gif/us/tn/tn_giphy_us_ballhead2.gif
/imgs/gif/us/tn/tn_giphy_us_ballheads.gif
/imgs/gif/us/tn/tn_giphy_us_flirty1.gif
/imgs/gif/us/tn/tn_giphy_us_flirty2.gif
/imgs/gif/us/tn/tn_giphy_us_headblinkers.gif
/imgs/gif/us/tn/tn_giphy_us_headline.gif
/imgs/gif/us/tn/tn_giphy_us_headwave.gif
/imgs/gif/us/tn/tn_giphy_us_hive.gif
/imgs/gif/us/tn/tn_giphy_us_hive_walkers.gif
/imgs/gif/us/tn/tn_giphy_us_joggers.gif
/imgs/gif/us/tn/tn_giphy_us_pacer.gif
/imgs/gif/us/tn/tn_giphy_us_toons2.gif
/imgs/gif/us/tn/tn_giphy_us_touch1.gif
/imgs/gif/us/tn/tn_giphy_us_walkers.gif
/imgs/gif/us/tn/tn_giphy_woohoo_mickey.gif
/imgs/gif/us/tn/tn_giphy_xmastrees.gif
/imgs/gif/us/tn/tn_giphy_zensitter.gif
/imgs/gif/us/tn/tn_giphy_zoom_earth.gif
/imgs/gif/us/tn/tn_giphy_zoom_typos_fold.gif
/imgs/gif/us_big/giph_us_touch_arms.gif
/imgs/gif/us_big/giphy_alien_bigdancer1.gif
/imgs/gif/us_big/giphy_alien_bigdancer2.gif
/imgs/gif/us_big/giphy_android_anatomy.gif
/imgs/gif/us_big/giphy_boxinbox.gif
/imgs/gif/us_big/giphy_faces2.gif
/imgs/gif/us_big/giphy_finger_team.gif
/imgs/gif/us_big/giphy_focus_android.gif
/imgs/gif/us_big/giphy_jkwii_finger.gif
/imgs/gif/us_big/giphy_jkwii_headwaves2.gif
/imgs/gif/us_big/giphy_keyboard_wavepanel.gif
/imgs/gif/us_big/giphy_kids_bouncedown.gif
/imgs/gif/us_big/giphy_konabus_exhale.gif
/imgs/gif/us_big/giphy_kou_magnet_arc.gif
/imgs/gif/us_big/giphy_kou_magnet_ring.gif
/imgs/gif/us_big/giphy_magnet_link.gif
/imgs/gif/us_big/giphy_med_alien_bio.gif
/imgs/gif/us_big/giphy_med_heart3.gif
/imgs/gif/us_big/giphy_med_implosion.gif
/imgs/gif/us_big/giphy_news_keaton_bignews.gif
/imgs/gif/us_big/giphy_orb_sandripple.gif
/imgs/gif/us_big/giphy_orb_square.gif
/imgs/gif/us_big/giphy_orb_static2.gif
/imgs/gif/us_big/giphy_orbs_concavering.gif
/imgs/gif/us_big/giphy_pastryroad_flipn.gif
/imgs/gif/us_big/giphy_spinner_copper.gif
/imgs/gif/us_big/giphy_us_ballhead_bouncers.gif
/imgs/gif/us_big/giphy_us_gooddeed.gif
/imgs/gif/us_big/giphy_us_hatshake.gif
/imgs/gif/us_big/giphy_us_meet_latex_portal.gif
/imgs/gif/us_big/giphy_us_morph1.gif
/imgs/gif/us_big/giphy_us_morph2.gif
/imgs/gif/us_big/giphy_us_sarandancer.gif
/imgs/gif/us_big/giphy_us_toons1.gif
/imgs/gif/us_big/giphy_zoom_bug.gif
/imgs/gif/view/giphy_us01.gif
/imgs/gif/view/giphy_view00.gif
/imgs/gif/view/giphy_view01.gif
/imgs/gif/view/giphy_view02.gif
/imgs/gif/view/giphy_view03.gif
/imgs/gif/view/giphy_view04.gif
/imgs/gif/view/giphy_view05.gif
/imgs/gif/view/giphy_view06.gif
/imgs/gif/view/giphy_view08.gif
/imgs/gif/view/giphy_view09.gif
/imgs/gif/view/giphy_view10.gif
/imgs/gif/view/giphy_view11.gif
/imgs/gif/view/giphy_view12.gif
/imgs/gif/view/giphy_view13.gif
/imgs/gif/view/giphy_view14.gif
/imgs/gif/view/giphy_view15y.gif
/imgs/gif/view/giphy_view16.gif
/imgs/gif/view/giphy_view17.gif
/imgs/gif/view/giphy_view19.gif
/imgs/gif/view/giphy_view20.gif
/imgs/gif/view/giphy_view21.gif
/imgs/gif/view/giphy_view22.gif
/imgs/gif/view/giphy_view25.gif
/imgs/gif/view/giphy_view26.gif
/imgs/gif/view/giphy_view27.gif
/imgs/gif/view/giphy_view28.gif
/imgs/gif/view/giphy_view29.gif
/imgs/gif/view/giphy_view30.gif
/imgs/gif/view/giphy_view31.gif
/imgs/gif/view/giphy_view32.gif
/imgs/gif/view/giphy_view33.gif
/imgs/gif/view/giphy_view34.gif
/imgs/gif/view/giphy_view35.gif
`;

kolists['bb'] = ``;
kolists['dd'] = ``;

kolists['pn'] = 
`/pn/imgs/pano_creek5.jpg
/pn/imgs/pano_burmuda.jpg
/pn/imgs/PIA22313_pano.jpg
/pn/imgs/Sol83-PremiersGivres-pano.jpg
/pn/imgs/Taipo_pano.jpg
/pn/imgs/Opportunity-Mars-Rover-Lander-pia19112.jpg
/pn/imgs/mars-rover-opportunity-pia19111_Sol3902B_Cape_Tribulation_L2R2ana.jpg
/pn/imgs/mars-rover-opportunity-pia19110_Sol3902B_Cape_Tribulation_L257F.jpg
/pn/imgs/mars-gale-crater-panorama-pia11241-full.jpg
/pn/imgs/opportunity-panorama-warton-ridge-enhanced-pia20850-full.jpg
/pn/imgs/mars-panoramic-mt-sharp-rover-curiosity-pia19662.jpg
/pn/imgs/pano_jtf_entrance_jtf.jpg
/pn/imgs/pano_jtf_entrance.jpg
/pn/imgs/pano_fork_grass.jpg
/pn/imgs/pano_jtfarms_entrance_9700x100.jpg
/pn/imgs/pano_backyard_all.jpg
/pn/imgs/pano_jtfarms_enter_hi.jpg
/pn/imgs/pano_falls.jpg
/pn/imgs/pano_falls1_4000.jpg
/pn/imgs/pano_courtyard2.jpg
/pn/imgs/pano_courtyard1.jpg
/pn/imgs/pano_closeline.jpg
/pn/imgs/pano_falls_south.jpg
/pn/imgs/pano_falls_north.jpg
/pn/imgs/pano_falls_015-285.jpg
/pn/imgs/pano_creek.jpg
/pn/imgs/yard.jpg
/pn/imgs/veneer.jpg
/pn/imgs/sphere.jpg
/pn/imgs/pano.jpg
/pn/imgs/mars-gale-crater-panorama-pia11241-full.jpg,.
/pn/imgs,mars-gale-crater-panorama-pia11241-full.jpg,mars-gale-crater-panorama-pia11241-full,.jpg,18009851,2017-07-17_07:37:49,
/pn/imgs/yard.jpg,.
/pn/imgs,yard.jpg,yard,.jpg,100790,2007-05-10_20:35:18,
/pn/imgs/pano_creek5.jpg
/pn/imgs/pano_burmuda.jpg
/pn/imgs/PIA22313_pano.jpg
/pn/imgs/Sol83-PremiersGivres-pano.jpg
/pn/imgs/Taipo_pano.jpg
/pn/imgs/Opportunity-Mars-Rover-Lander-pia19112.jpg
/pn/imgs/mars-rover-opportunity-pia19111_Sol3902B_Cape_Tribulation_L2R2ana.jpg
/pn/imgs/mars-rover-opportunity-pia19110_Sol3902B_Cape_Tribulation_L257F.jpg
/pn/imgs/mars-gale-crater-panorama-pia11241-full.jpg
/pn/imgs/opportunity-panorama-warton-ridge-enhanced-pia20850-full.jpg
/pn/imgs/mars-panoramic-mt-sharp-rover-curiosity-pia19662.jpg
/pn/imgs/pano_jtf_entrance_jtf.jpg
/pn/imgs/pano_jtf_entrance.jpg
/pn/imgs/pano_fork_grass.jpg
/pn/imgs/pano_jtfarms_entrance_9700x100.jpg
/pn/imgs/pano_backyard_all.jpg
/pn/imgs/pano_jtfarms_enter_hi.jpg
/pn/imgs/pano_falls.jpg
/pn/imgs/pano_falls1_4000.jpg
/pn/imgs/pano_courtyard2.jpg
/pn/imgs/pano_courtyard1.jpg
/pn/imgs/pano_closeline.jpg
/pn/imgs/pano_falls_south.jpg
/pn/imgs/pano_falls_north.jpg
/pn/imgs/pano_falls_015-285.jpg
/pn/imgs/pano_creek.jpg
/pn/imgs/yard.jpg
/pn/imgs/veneer.jpg
/pn/imgs/sphere.jpg
/pn/imgs/pano.jpg
// img.src = '
/pn/imgs/pano_falls.jpg';
// img.src = '
/pn/imgs/pano_jtf_sky.jpg';
// img.src = '
/pn/imgs/pano_falls1_4000.jpg';
// img.src = '
/pn/imgs/pano_falls_north.jpg';
// img.src = '
/pn/imgs/pano_falls_south.jpg';
// img.src = '
/pn/imgs/pano_jtf_entrance.jpg';
// img.src = '
/pn/imgs/pano_courtyard1_12b.jpg';
//img.src = '
/pn/imgs/pano_falls1_4000.jpg';
<img name="pano" src=
/pn/imgs/tn/tn_pano.png border=0>
<img name="pano" src=
/pn/imgs/tn/tn_pano_closeline.png border=0>
<img name="pano" src=
/pn/imgs/tn/tn_pano_courtyard1.png border=0>
/pn/imgs/pano_creek5.jpg
/pn/imgs/pano_burmuda.jpg
/pn/imgs/PIA22313_pano.jpg
/pn/imgs/Sol83-PremiersGivres-pano.jpg
/pn/imgs/Taipo_pano.jpg
/pn/imgs/Opportunity-Mars-Rover-Lander-pia19112.jpg
/pn/imgs/mars-rover-opportunity-pia19111_Sol3902B_Cape_Tribulation_L2R2ana.jpg
/pn/imgs/mars-rover-opportunity-pia19110_Sol3902B_Cape_Tribulation_L257F.jpg
/pn/imgs/mars-gale-crater-panorama-pia11241-full.jpg
/pn/imgs/opportunity-panorama-warton-ridge-enhanced-pia20850-full.jpg
/pn/imgs/mars-panoramic-mt-sharp-rover-curiosity-pia19662.jpg
/pn/imgs/pano_jtf_entrance_jtf.jpg
/pn/imgs/pano_jtf_entrance.jpg
/pn/imgs/pano_fork_grass.jpg
/pn/imgs/pano_jtfarms_entrance_9700x100.jpg
/pn/imgs/pano_backyard_all.jpg
/pn/imgs/pano_jtfarms_enter_hi.jpg
/pn/imgs/pano_falls.jpg
/pn/imgs/pano_falls1_4000.jpg
/pn/imgs/pano_courtyard2.jpg
/pn/imgs/pano_courtyard1.jpg
/pn/imgs/pano_closeline.jpg
/pn/imgs/pano_falls_south.jpg
/pn/imgs/pano_falls_north.jpg
/pn/imgs/pano_falls_015-285.jpg
/pn/imgs/yard.jpg
/pn/imgs/veneer.jpg
/pn/imgs/sphere.jpg
/pn/imgs/pano.jpg

`;
kolists['sl'] = 
`/sl/html/index_sl.html
/sl/html/index_sl_20180509.html
/sl/html/index_sl_20180514.html
/sl/html/index_sl_20180515_2000.html
/sl/html/index_sl_20180516_0145.html
/sl/html/index_sl_20180516_0330.html
/sl/html/index_sl_20180517.html
/sl/html/index_sl_20180518.html
/sl/html/index_sl_20180520_2000_debugs.html
/sl/html/index_sl_20180521_1200.html
/sl/html/index_sl_20180701.html
/sl/html/index_sl_i.html
/sl/html/index_sl_imgs-anim.html
/sl/html/index_sl_imgs-bg.html
/sl/html/index_sl_imgs-btn.html
/sl/html/index_sl_imgs-links.html
/sl/html/index_sl_jtfdc-kb-animal_control.html
/sl/html/index_sl_jtfdc-kb-court-jpg_eagles_theft.html
/sl/html/index_sl_jtfdc-kb-court-pdf2jpg_20151215_acd.html
/sl/html/index_sl_jtfdc-kb-jpg_20161007_jtflaw_alexander.html
/sl/html/index_sl_jtfdc-kb-jtf_takes.html
/sl/html/index_sl_jtfdc-kb-jtfdc_v_jtfinc.html
/sl/html/index_sl_jtfdc-kb-ka_jtf29_title.html
/sl/html/index_sl_jtfdc-kb-restraining.html
/sl/html/index_sl_jtfdc.html
/sl/html/index_sl_kb-books-go-200807.html
/sl/html/index_sl_kb-books-go-200808.html
/sl/html/index_sl_kb-books-go-20130726.html
/sl/html/index_sl_kb-books-jmh-cleveland copy.html
/sl/html/index_sl_kb-books-jmh-cleveland.html
/sl/html/index_sl_kb-books-jmh-jmh2015 copy.html
/sl/html/index_sl_kb-books-jmh-jmh2015.html
/sl/html/index_sl_kb-books-jmh-jmh71-jmh71a copy.html
/sl/html/index_sl_kb-books-jmh-jmh71-jmh71a.html
/sl/html/index_sl_kb-books-jmh-jmh71-jmh71b copy.html
/sl/html/index_sl_kb-books-jmh-jmh71-jmh71b.html
/sl/html/index_sl_kb-books-jmh-userguide_80_bw copy.html
/sl/html/index_sl_kb-books-jmh-userguide_80_bw.html
/sl/html/index_sl_kb-books-kids-rumplestiltskin.html
/sl/html/index_sl_kb-books-kids-schruvelpeter.html
/sl/html/index_sl_kb-books-mil-iperms.html
/sl/html/index_sl_kb-books-mil-korea74.html
/sl/html/index_sl_kb-books-mil-leonardwood90.html
/sl/html/index_sl_kb-books-mil-saic.html
/sl/html/index_sl_kb-books-tech-astronomy_lacross_menschic.html
/sl/html/index_sl_kb-books-tech-calculus.html
/sl/html/index_sl_kb-books-tech-digitalmag.html
/sl/html/index_sl_kb-books-tech-duden.html
/sl/html/index_sl_kb-books-tech-physics.html
/sl/html/index_sl_kb-books-tech-time.html
/sl/html/index_sl_kb-intl-deutsche_memories.html
/sl/html/index_sl_kb-intl-ein_hundes_leben.html
/sl/html/index_sl_kb-intl-romanian_bocc.html
/sl/html/index_sl_kb-jmh71.html
/sl/html/index_sl_kb-kt-aikido_dynamic_sphere.html
/sl/html/index_sl_kb-kt-asian_fighting_arats_dragger.html
/sl/html/index_sl_kb-kt-chinesemed.html
/sl/html/index_sl_kb-kt-masters.html
/sl/html/index_sl_kb-kt-muschi_five_rings.html
/sl/html/index_sl_links.html
/sl/html/index_sl_medcan_bible.html
`;

kolists['tm'] = ``;

kolists['tl'] = 
`/tl/avg.json
/tl/avg_kt.json
/tl/codekit-config.json
/tl/example_json.json
/tl/iperms.json
/tl/jtfdc.json
/tl/jtfinc.json
/tl/ka.json
/tl/ko_json.json
/tl/ko_json_orig.json
/tl/konet.json
/tl/model.json
/tl/saic.json
/tl/t.json
/tl/tl.json
/tl/tl00.json
/tl/tl1.json
/tl/tl1_json.json
/tl/tl2.json
/tl/tl2_json.json
/tl/tl3.json
/tl/tl3_json.json
/tl/tl4_json.json
/tl/tl_best.json
/tl/tl_best1.json
/tl/tl_db.json
/tl/tl_db_cli.json
/tl/tl_db_jpg.json
/tl/tl_db_mp4.json
/tl/tl_fb_law.json
/tl/tl_fb_law_jkwiiv_byrdbell.json
/tl/tl_jenna_json.json
/tl/tl_jpg.json
/tl/tl_jtfdc_kids.json
/tl/tl_jtfdc_stalkarounds.json
/tl/tl_jtfinc_neighbors.json
/tl/tl_mp4.json
/tl/tl_ne.json
/tl/tl_st.json
/tl/tl_templet.json
/tl/tldb.json
/tl/tldb1.json
/tl/tldb2.json
/tl/tli.json
/tl/tll.json
/tl/tlphp.json
`;

kolists['yt'] = 
`yt_20200408_mcduff|https://www.youtube.com/watch?v=baK-7kr-zoo
yt_20200408_webb|https://www.youtube.com/watch?v=QdZ-vfJSE9U
yt_20200407_webb|https://www.youtube.com/watch?v=R4dLXs0PIrI
yt_20200406_webb|https://www.youtube.com/watch?v=xgtAHyssRmo
yt_20150625_chrisrea_somewhere_between_stars_santo_spirito|https://www.youtube.com/watch?v=0RF1mXxAhys
yt_20200331_carlin_germs|https://www.youtube.com/watch?v=l_L6AS1Huno
yt_20190311_bob_dylan_gotta_serve_somebody_audio|https://www.youtube.com/watch?v=wC10VWDTzmU
yt_20200407_stroppyme|https://www.youtube.com/watch?v=unNuvGJ3ses
yt_20200406_autodidactic_chinese_tartate_1729|https://www.youtube.com/watch?v=bwoF1MlckRw
yt_20190905_quinn_timothy_oneil_band_let_it_rain_official|https://www.youtube.com/watch?v=CHedk8yAF_g
yt_20200407_housitonic|https://www.youtube.com/watch?v=_pBsL0qW2Vs
yt_20200407_amazingpolly|https://www.youtube.com/watch?v=zoK6h4Mg7E8
yt_20200406_vlad9vt_sicily_polygonal_ancient_masonry|https://www.youtube.com/watch?v=sVMjRmpdUIw
yt_20200404_vlad9vt_malta_magalith|https://www.youtube.com/watch?v=zpHy1Q-fqCU
yt_20200326_borealusforum_wal_thornhil_this_is_our_electric_univers_p1of2|https://www.youtube.com/watch?v=u7peR-2m8XI
yt_szigetfestival_20120811_caro_emerald_mistaken_identiy|https://www.youtube.com/watch?v=qV8CV475WHw
yt_szigetfestival_20120811_caro_emerald_night_like_this|https://www.youtube.com/watch?v=Fc6izYdLhNE
yt_caroemerald_20130826_caro_emerald_paris_acoustic|https://www.youtube.com/watch?v=B3aWlt81EwU
yt_caroemerald_20100715_caro_emerald_back_it_up|https://www.youtube.com/watch?v=jo1cyl0QbWo
yt_caroemerald_20100701_caro_emerald_that_man|https://www.youtube.com/watch?v=CFA6dEwWOb4
yt_hotsardines_20160616_when_i_get_low_i_get_high_alan_cumming|https://www.youtube.com/watch?v=rPnXCPmrV3Y
yt_bigbadvoodoodaddy_20121016_diga_diga_doo_official|https://www.youtube.com/watch?v=ufvmD9s76X0
yt_hartandbonamassa_20130707_strange_fruit_official_beht_n_joe|https://www.youtube.com/watch?v=3Qf_aytrlpQ
yt_doristunes_20191201_twelve_bar_blues_band_you_gonna_need_my_help_someday|https://www.youtube.com/watch?v=x1dBWRybOxc
yt_postmodernjukebos_2081115_purple_rain_prince_cover_miche_braden|https://www.youtube.com/watch?v=LT8dW7bGuuM
yt_sanbornsessions_20200129_michael_mcdonald_find_it_in_your_heard_brian_owens|https://www.youtube.com/watch?v=yt4zhbE07Cg
yt_bjork_20200210_ociania_bjork|https://www.youtube.com/watch?v=thnTE2e341g
yt_webb 20200210_streaming_to_joe_biden_water_island_with_sub_base|https://www.youtube.com/watch?v=3wAy4lMjpVU
yt_mcduff_20200210_mindfields_ep5_vatican_assassins|https://www.youtube.com/watch?v=YX2HWrnPZQ4
yt_quinn_20200210_see_ya_later_twitter_deleting_app|https://www.youtube.com/watch?v=p2RkhTBAyG0
yt_newsbud_20200207_turkey_russia_marriage_convenience_nearing_end|https://www.youtube.com/watch?v=XkiOgnu4Ifs
yt_munder_20200210_china_burning_bright_signatures_from_space|https://www.youtube.com/watch?v=LEcj3cBagCQ
yt_dahboo7_20200120_germany_reports_outbreak_h5n8_bird_flu|https://www.youtube.com/watch?v=4tSZN7r6g5U
yt_dahboo7_20200120_20200210_brazil_virus_unknown_origin_genes|https://www.youtube.com/watch?v=pd6oqf-lzNE
yt_vlad9vt_20200210_yonaguni_underwater_structure|https://www.youtube.com/watch?v=S-UGC-gkyCU
yt_instituetofnoeticsciences_20160707_experiments_consciousness_affects_matter_dean_radin_phd|https://www.youtube.com/watch?v=nRSBaq3vAeY
yt_zachstar_20200210_calculus_optimization_beyond|https://www.youtube.com/watch?v=6O8Jyrr9LRc
yt_vipertv_20200210_olmec_orgins_odd_conclusion|https://www.youtube.com/watch?v=pSE9m9jQKpk
yt_liziqi_20190906_liziqi_channel_corn_chinese|https://www.youtube.com/watch?v=bZsfEwr9i6I
yt_ted_20120312_david_gallo_deep_ocean_mysteries_n_wonders|https://www.youtube.com/watch?v=Uqly8ERIkHM
yt_foodwishes_20150422_greek_lemon_chicken_potatoes|https://www.youtube.com/watch?v=h6OSMbfhIao
`;

kolists['zm'] = 
`/zm/space_2019/thule/TileGroup0/0-0-0.jpg
/zm/space_2019/thule1/TileGroup0/0-0-0.jpg
/zm/space_2019/thule2/TileGroup0/0-0-0.jpg
/zm/space_2018/bennu/TileGroup0/0-0-0.jpg
/zm/space_2018/bennu_face/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_barcode_circuitboard/TileGroup0/0-0-0.jpg
/zm/space_2019/mars_barcode10000/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12364080-6929643-An_interior_view_of_the_dpi600_Notre_Dame_Cathedral_in_Paris_in_the_aft-a-88_1555453712194/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12375020-6929643-image-a-1_1555482644826/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12375022-6929643-image-a-4_1555482679561/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12375026-6929643-image-a-8_1555482902378/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12375032-6929643-image-a-14_1555482936340/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12375036-6929643-One_of_the_cathedral_s_many_intricate_fdpi_acades_around_where_the_t-a-1_1555486099469/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12381954-6929643-image-m-20_1555496529559/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12358952-6929643-Pictured_the_blaze_at_Notre_Dame_yesterday_Much_of_the_roof_was_-/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_a-91_1555453712206/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12361102-6929643-How_did_it_escape_the_flames_The_gdpi_olden_crucifix_standing_above_-a-2_1555486099472/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12354988-6928937-Plumes_of_smoke_quickly_billowed_from_the_cathedral_and_could_be-a-22_1555440231597/TileGroup0/0-0-0.jpg
/heart/notre_dame_easter_2019/imgs/zm/big_12356584-6928937-The_fire_swiftly_ripped_through_the_cathedral_s_oak_roof_support-a-35_1555440231801/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_rebar_mouldings/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_pouch_rings/TileGroup0/0-0-0.jpg
/zm/space_2018/pano_mars_mtsharp/TileGroup0/0-0-0.jpg
/zm/space_2018/pano_caralperu/TileGroup0/0-0-0.jpg
/zm/space_2018/pano_jtfinc/TileGroup0/0-0-0.jpg
/zm/space_2018/pano_jtfdc/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_barcode_circuitboard/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_barcode_circuitboard/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_barcode_circuitboard/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_barcode_circuitboard/TileGroup0/0-0-0.jpg
/zm/space_2018/mars_barcode_circuitboard/TileGroup0/0-0-0.jpg
/zm/zm_nasa/mars_zigzag_panels2400/TileGroup0/0-0-0.jpg
/zm/zm_nasa/nasa/1-scientistsfl/TileGroup0/0-0-0.jpg
/zm/zm_nasa/nasa/Echus-Chasma-On-Mars/TileGroup0/0-0-0.jpg
/zm/zm_nasa/nasa/mars_zigzag_panels/TileGroup0/0-0-0.jpg
/zm/zm_nasa/zm/Curiosity-Murray-Buttes/TileGroup0/0-0-0.jpg
/zm/zm_nasa/venus_400/TileGroup0/0-0-0.jpg
/zm/zm_nasa/zm5_planets/1-scientistsfl/TileGroup0/0-0-0.jpg
/zm/zm_nasa/zm5_planets/1-scientistsfl/TileGroup0/0-0-0.jpg
/zm/hrc2009stl/TileGroup0/0-0-0.jpg
/zm/hrc2011/TileGroup0/0-0-0.jpg
/zm/komap/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/070214_val_marineris_02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/071010-msl-site1-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/071127-venus-surface-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/080409-phobos-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/081016-crater-mound-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/081103-mars-ripples-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/081204-rock-layers-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/090331-mars-starburst-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/090813-mars-crater-02.jpg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/100113-mars-illusion-02/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/20070507_185501_1010108/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/365430main_nacl000000fd_middle_540x540/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/367307main_cracked_hahn_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/369230main_apollolandinglocator_full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/388038main_milichius_full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/393992main_ejecta_20091014_full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/400202main_lroc_apollo11_20091109_full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/403330main_cabeus_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/414923main_wrinkle-ridge-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/416286main_new-images-1-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/417415main_tychocloseup-20100115-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/417417main_tychofull-20100115-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/417869main_arist_bands321-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/417873main_M111918050R_thumb-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/419421main_AS16-M-0891-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/419425main_M106088433R-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/421320main_hadley_rille/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/421615main_plato_2_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/421619main_plato_crater_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/422349main_byrgius-a-20100203-full/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/422590-mars-taber-ansigt-/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/424828main_LunarOrbiterIII_3085_med/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/433446main_20100311_crisium_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/445016main_anax3600_500/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/445021main_anax_wac_500/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/449172main_WAC_crop_context/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/449174main_M104376385_thumb/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/450800main_tsiol_2_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/450994main_full_moon_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/453514main_meteor_crater2_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/453516main_meteor_crater_az_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/455939main_holeinone_far_lg/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/463365main_M128202846LE/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/503670main_120210a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/521685main_022111a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/521691main_022111b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/524173main_022511a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/524220main_030211b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/528087main_031110a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/529214main_031611a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/529221main_031611c/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/531407main_031811b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/533097main_033111b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/534165main_040511a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/536801main_041311aa/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/539777main_042111b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/541041main_042711a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/555516main_053111a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/558017main_060211a/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/561423main_060811b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/576849main_062811b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/576883main_062911b/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/58-pluto-3-large/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap11_landinJSC2007e045375/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap12_landsitea_JSC2011e118358/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap15_9aa_JSC2007e045378/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap15_lmnortha_JSC2007e045379/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap15_s2a_JSC2011e118359/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_lmviewa_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_lmwesat_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_s10a_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_s11a_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_s13_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_s13a_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_s1a_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_s1ba_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap16_slandsitea_JSC2007e045380/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_alsepa_JSC2004e52772/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_eva1a_JSC2007e045384/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_evaalsepa_JSC2007e045385/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s1easta_JSC2004e52773/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s1westa_JSC2004e52776/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s2a_JSC2004e52777/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s2eva2a_JSC2004e52774/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s3a_JSC2004e52778/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s3a_JSC2007e045386/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s4a_JSC2007e045388/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s5_JSC2004e20304/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s5a_JSC2004e20304/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s6a_JSC2007e045387/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s6southa_JSC2004e52779/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/ap17_s7a_JSC2004e52775/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/apll-5_JSC2008e040725/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/AS14-68-9450HR/TileGroup0/0-0-0.jpg
/zm/zm_nasa/apollo/lunar-recon-orbiter-apollo-12-surveyor-3-sites-1/TileGroup0/0-0-0.jpg
/zm/zm_nasa/appollo17_4800/TileGroup0/0-0-0.jpg
/zm/zm_nasa/Curiosity-Murray-Buttes/TileGroup0/0-0-0.jpg
/zm/zm_nasa/zm5_planets/2MASS-Redshift-Survey/TileGroup0/0-0-0.jpg
/us/realtor/ky/zoom/map_doevalley/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf01/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf02/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf03/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf04/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf05/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf06/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf07/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf08/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf09/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf10/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf11/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf12/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf14/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf15/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf16/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf17510/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf17570/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf21/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf22/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf23/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf24/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf26/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf27/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf28/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf29/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf29 copy/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf30/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf31/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf32/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf34/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf35/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf36/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf38/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf40/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf41/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf42/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf43/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf44/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf_n/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtf_ne/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_012/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_e/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_greater/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_inc/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_n/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_s/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_theater/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfdc_w/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfinc/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jtfinc_proper/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jttf37/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/jyf44/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/souixp/TileGroup0/0-0-0.jpg
/ko_jtf/zm/jtf_parcels/souixp_boat/TileGroup0/0-0-0.jpg
`;

// kolists['default'] = "neuz konet iperms kids kitiworks pastryroad konabus jtfdc jtfdcr jtfinc jtfdcr dogs memes";
			kolists['divs'] = "av bb fb gm pn sl tl yt zm";
			kolists['kovs'] = "neuz konet iperms kids kitiworks pastryroad konabus jtfdc jtfdcr jtfinc jtfdcr dogs memes";
			kolists['kov'] = "neuz konet iperms kids kitiworks pastryroad konabus jtfdc jtfdcr jtfinc jtfdcr dogs memes";
//			kolists['av'] = jax('/av.txt','');
//			kolists['fb'] = jax('/fb.txt','');
//			kolists['pn'] = jax('/pn.txt','');
//			kolists['sl'] = jax('/sl.txt','');
//			kolists['tl'] = jax('/tl.txt','');
//			kolists['zm'] = jax('/zm.txt','');
			</script>












	<script id="script_load_kolists">
kolists['listids'] = 
`av|/txt/avlist.txt
fb|/txt/fblist.txt
pn|/txt/pnlist.txt
sl|/txt/sllist.txt
tl|/txt/tllist.txt
yt|/txt/ytlist_today.txt
zm|/txt/zmlist.txt
`;
		function load_kolists(args) {
//			args='txt/ytlist_todays.txt';
//			alert( "BUGS_19541 load_kolists args="+args);
//			var ytlist_url='ytlist.txt';
//			if( args ) {ytlist_url=args; }
//			alert( "BUGS_19550 load_kolists ytlist_url="+ytlist_url);
//			alert( "BUGS_19550 show_kolists kolists_ytlist="+kolists['ytlist']);

			var listids=kolists['listids'].split("\n");
			for( j=0; j< listids.length; j++ ) {
				if( /^#/.test(listids[j])) { continue; }
				var len = listids[j].split("|").length;
				var id=listids[j].split("|")[0];
				if( id == undefined ) { continue; }
				if( id == "" ) { continue; }

				var url=listids[j].split("|")[len-1];
				if(! filecheck(url)) { 
//					alert( "BUGS_19573 NOTFOUND j="+j+" id="+id+" url="+url );
					continue; 
					}

				
				var listid=id+"list";
				kolists[listid] = '';
				kolists[listid] = "HEAD listid="+listid;
//				alert( "BUGS_19591 j="+j+" id="+id+" url="+url );
				jax(url,'');
				kolists[listid] = jax(url,'');
// alert( "BUGS_19601 load_kolists j="+j+" ID="+id+" URL="+url+"\n\nLIST="+kolists[listid] );
				kolists[listid] = kolists['jax'];
// alert( "BUGS_19602 load_kolists j="+j+" ID="+id+" URL="+url+"\n\nLIST="+kolists[listid] );

//				jax(url,''); kolists[listid]=kolists['jax'];
//				alert( "BUGS_19603 load_kolists FOUND LEN="+kolists[listid].length+"  listid="+listid+" url="+url );
//				len = kolists[listid].split("\n").length;
//				alert( "BUGS_19604 load_kolists FOUND j="+j+" URL="+url+" LEN="+len+"\n\n LIST="+kolists[listid].split("\n"));
				}
//			alert( "BUGS_19611 jaxbak="+jaxbak );
//			alert( "BUGS_19612 kolists_jax="+kolists['jax'] );
//			alert( "BUGS_19613 kolists_fblist="+kolists['fblist'] );
//			alert( "BUGS_19614 kolists_ytlist="+kolists['ytlist'] );
//			alert( "BUGS_19615 kolists_pnlist="+kolists['pnlist'] );
			return(args);
			}
		</script>

	<script id="script_show_kolists">
		function show_kolists(args) {
//			alert( "BUGS_1961 show_kolists args="+args);
//			alert( "BUGS_1961 show_kolists kolists_listids="+kolists['listids']);
//			alert( "BUGS_1961 show_kolists kolists_fblist="+kolists['fblist']);
//			alert( "BUGS_1962 show_kolists kolists_ytlist="+kolists['ytlist']);
//			alert( "BUGS_1963 show_kolists kolists_avlist="+kolists['avlist']);
//			alert( "BUGS_1963 show_kolists args="+args);
			return(args);
			}
		</script>




	<script id="script_startup">
//		if( filecheck(url_yt)) { 
//			alert( "BUGS_12111 ___FOUND url_yt="+url_yt);
//			kolists['yt'] = jax(url_yt,''); 
//			alert( "BUGS_11982 kolists="+kolists['yt'];
//			}
//		else {
//			alert( "BUGS_11983 NOTFOUND url_yt="+url_yt );
//			}

		function kludge(args) {
			alert( "BUGS_19850 kludge args="+args );
			}
		
		function blob_sound(args) {
//			alert( "BUGS_19900 blob_sound args="+args );

			if( document.getElementById('img_blob_sound')) {
//				alert( "BUGS_19900 blob_sound args="+args );
//				document.getElementById('audio_sound').src=sound;
//				document.getElementById('audio_sound').play();
//				alert( "BUGS_19900 blob_sound args="+args );

//				document.getElementById('img_blob_sound').src="/imgs/sound/btn_sound13.png";
//				document.getElementById('img_blob_sound').src="/imgs/gif/spacers/giphy_spacer_21.gif";
				document.getElementById('img_blob_sound').src=random_gif;
				if( args != "" ) { sound=args; }
				var sound = "/gm/sounds/bubbles.mp3";
				var sounds = kolists['sounds'];
				sounds += kolists['mp3'];
				sounds += kolists['mp3_bavaria']; 
				sounds += kolists['mp3_jkwii'];

				sounds = sounds.split("\n");
//				var sounds = kolists['sounds'].split("\n");
//				var sounds = kolists['mp3'].split("\n");
				
				sound_max = sounds.length;
//					alert( "BUGS_501 blob_sound sound_max="+sound_max );
				soundid = random_int(sound_max,0);
//					alert( "BUGS_502 blob_sound soundid="+soundid );
				var sound = sounds[soundid];
//					alert( "BUGS_503 blob_sound sound="+sound );

				if(filecheck(sound)) {
//					alert( "BUGS_504 blob_sound FOUND sound="+sound );
					if( document.getElementById('audio_sound')) {
//						alert( "BUGS_505 blob_sound SRC sound="+sound );
						document.getElementById('audio_sound').src=sound;
						document.getElementById('audio_sound').play();
//						alert( "BUGS_506 blob_sound PLAY sound="+sound );
						}
					if( document.getElementById('div_blob_playlist')) {
						var htout = "";
						htout += '<div id="div_blob_playlist">';
						var sound=document.getElementById('audio_sound').src;
						htout += '<h2>'+sound+'</h2>';
						htout += '<h3>'+random_gif+'</h3>';
						htout += '	</div>';
						document.getElementById('div_blob_playlist').innerHTML=htout;
						document.getElementById('div_blob_playlist').style.display="inline";
						}




					}
				}
			else {
//				document.getElementById('img_blob_sound').src="/imgs/sound/btn_sound2.png";
//				document.getElementById('img_blob_sound').src="/imgs/sound/btn_sound10.png";
//				document.getElementById('img_blob_sound').src="/imgs/gif/spacers/giphy_spacer_21.gif";
				if( filecheck(random_gif)) {
					document.getElementById('img_blob_sound').src=random_gif;
					}
				else {
					document.getElementById('img_blob_sound').src="/imgs/gif/notfound.gif";
					}
				}
			}
		</script>

	<br>
	<hr color=black>
	<img id=img_links src=/imgs/btn/koeye.png onclick="toggle('div_links',''); return false;" height=20 border=0>links
	<div id=div_links hidden>
		<h1>div_links</h1>

		<br>
		<h2>hosts: ko2.us konet.org iperms.com ko1.us </h2>
		<img id=img_ko2 title="          ko2.us" src=/imgs/btn/brdb.png onclick="window.open('https://ko2.us');return false;" height=20>
		<img id=img_ko1 title="          ko1.us" src=/imgs/btn/brdb.png onclick="window.open('https://ko1.us'); return false;" height=20>
		<img id=img_konet title="          konet.org" src=/imgs/btn/brdb.png onclick="window.open('https://konet.org'); return false;" height=20>
		<img id=img_iperms title="          iperms.com" src=/imgs/btn/brdb.png onclick="window.open('https://iperms.com'); return false;" height=20>
		<br>
		<h2>categories: ka kt go sw law med</h2>
		<img id=img_ka title="          ka" src=/imgs/btn/brdb.png onclick="window.open('/ka'); return false;" height=20>
		<img id=img_law title="          law" src=/imgs/btn/brdb.png onclick="window.open('/law'); return false;" height=20>
		<img id=img_med title="          med" src=/imgs/btn/brdb.png onclick="window.open('/med'); return false;" height=20>
		<img id=img_kids title="          kids" src=/imgs/btn/brdb.png onclick="window.open('/kids'); return false;" height=20>
		<img id=img_kou title="          kou" src=/imgs/btn/brdb.png onclick="window.open('/kou'); return false;" height=20>
		<img id=img_kt title="          kt" src=/imgs/btn/brdb.png onclick="window.open('/kt'); return false;" height=20>
		<img id=img_go title="          go" src=/imgs/btn/brdb.png onclick="window.open('/go'); return false;" height=20>
		<img id=img_sw title="          sw" src=/imgs/btn/brdb.png onclick="window.open('/sw'); return false;" height=20>
		
		<br>
		<h2>jtfdc jtfdcr jtfinc</h2>
		<img id=img_jtfdc title="          jtfdc" src=/imgs/btn/brdb.png onclick="window.open('/jtfdc'); return false;" height=20>
		<img id=img_jtfdcr title="          jtfdcr" src=/imgs/btn/brdb.png onclick="window.open('/jtfdcr'); return false;" height=20>
		<img id=img_byrdbellvjk title="          byrdbellvjk" src=/imgs/btn/brdb.png onclick="window.open('/byrdbellvjk'); return false;" height=20>
		<img id=img_jtdinc title="          jtfinc" src=/imgs/btn/brdb.png onclick="window.open('/jtfinc'); return false;" height=20>
		<br>
		<h2>views: fb pdf av pn tm tl sl yt zm</h2>
		<img id=img_views_fb1 title="          fb" src=/imgs/btn/brdb.png onclick="window.open('/fb'); return false;" height=20>
		<img id=img_views_pdf1 title="          pdf" src=/imgs/btn/brdb.png onclick="window.open('/pdf'); return false;" height=20>
		<img id=img_views_av1 title="          av" src=/imgs/btn/brdb.png onclick="window.open('/av'); return false;" height=20>
		<img id=img_views_pn1 title="          pn" src=/imgs/btn/brdb.png onclick="window.open('/pn'); return false;" height=20>
		<img id=img_views_tm1 title="          tm" src=/imgs/btn/brdb.png onclick="window.open('/tm'); return false;" height=20>
		<img id=img_views_tl1 title="          tl" src=/imgs/btn/brdb.png onclick="window.open('/tl'); return false;" height=20>
		<img id=img_views_sl1 title="          sl" src=/imgs/btn/brdb.png onclick="window.open('/sl'); return false;" height=20>
		<img id=img_views_yt1 title="          yt" src=/imgs/btn/brdb.png onclick="window.open('/yt'); return false;" height=20>
		<img id=img_views_zm1 title="          zm" src=/imgs/btn/brdb.png onclick="window.open('/zm'); return false;" height=20>
		
		<br>
		<h2>kofe newz neuz</h2>
		<img id=kofe title="          kofe" src=/imgs/btn/brdb.png onclick="window.open('/kofe'); return false;" height=20>
		<img id=newz title="          newz" src=/imgs/btn/brdb.png onclick="window.open('/newz'); return false;" height=20>
		<img id=neuz title="          neuz" src=/imgs/btn/brdb.png onclick="window.open('/neuz'); return false;" height=20>
		<br>
		<img id=turnjs title="          turnjs" src=/imgs/btn/brdb.png onclick="window.open('/js/turnjs/demos'); return false;" height=20>
		<img id=sql title="          sql" src=/imgs/btn/brdb.png onclick="window.open('/js/sql'); return false;" height=20>

		<img id=tablesorter title="          tablesorter" src=/imgs/btn/brdb.png onclick="window.open('/js/tablesorter/tests'); return false;" height=20>

		<img id=ol title="          ol" src=/imgs/btn/brdb.png onclick="window.open('/js/ol/ht'); return false;" height=20>
		<img id=doit title="          doit" src=/imgs/btn/brdb.png onclick="window.open('/js/doit'); return false;" height=20>
		<img id=svc_effectgames title="          svc_effectgames" src=/imgs/btn/brdb.png onclick="window.open('/svc/effectgames'); return false;" height=20>
		<img id=svc_emchat title="          svc_emchat" src=/imgs/btn/brdb.png onclick="window.open('/svc/emchat'); return false;" height=20>
		<img id=svc_grid3 title="          svc_grid3" src=/imgs/btn/brdb.png onclick="window.open('/svc/grid3'); return false;" height=20>
		<img id=svc_jqgrid title="          svc_jqgrid" src=/imgs/btn/brdb.png onclick="window.open('/svc/jqgrid'); return false;" height=20>
		<img id=svc_jsLabel2PDF title="          svc_jsLabel2PDF" src=/imgs/btn/brdb.png onclick="window.open('/svc/jsLabel2PDF'); return false;" height=20>
		<img id=svc_jslibs title="          svc_jslibs" src=/imgs/btn/brdb.png onclick="window.open('/svc/jslibs'); return false;" height=20>
		<img id=svc_jssql title="          svc_jssql" src=/imgs/btn/brdb.png onclick="window.open('/svc/jssql'); return false;" height=20>
	<br>
		<img id=svc_emchat title="          svc_emchat" src=/imgs/btn/brdb.png onclick="window.open('/svc/emchat'); return false;" height=20>
		<img id=srvchat_a title="          srvchat_a" src=/imgs/btn/brdb.png onclick="window.open('/srv/chat/a'); return false;" height=20>
		<img id=srvchat_a title="          srvchat_a_achat" src=/imgs/btn/brdb.png onclick="window.open('/srv/chat/a/achat'); return false;" height=20>
		<img id=srvchat_e title="          srvchat_e" src=/imgs/btn/brdb.png onclick="window.open('/srv/chat/e'); return false;" height=20>
		<img id=srvchat_echat title="          srvchat_e_echat" src=/imgs/btn/brdb.png onclick="window.open('/srv/chat/e/echat'); return false;" height=20>
		<img id=srvchat_f title="          srvchat_f" src=/imgs/btn/brdb.png onclick="window.open('/srv/chat/f'); return false;" height=20>
		<img id=srvchat_j title="          srvchat_j" src=/imgs/btn/brdb.png onclick="window.open('/srv/chat/j'); return false;" height=20>
		<img id=srvchat_j_ajaxhat1 title="          srvchat_j_ajaxhat1" src=/imgs/btn/brdb.png onclick="window.open('/srv/chat/j/ajaxchat1'); return false;" height=20>
		<img id=srvchat_a title="          srvchat_l" src=/imgs/btn/brdb.png onclick="window.open('/srv/chat/l'); return false;" height=20>
		<img id=srvchat_a title="          srvchat_s" src=/imgs/btn/brdb.png onclick="window.open('/srv/chat/s'); return false;" height=20>
		<img id=srvchat_x title="          srvchat_x" src=/imgs/btn/brdb.png onclick="window.open('/srv/chat/x'); return false;" height=20>
		<hr color=white>
		<hr color=black>
		</div id=div_links_end>
	<br>
	<hr color=black>
	<hr color=white>

	<img id=img_kojax src=/imgs/btn/koeye.png onclick="toggle('div_kojax',''); return false;" height=20 border=0>kojax
	<hr color=goldenrod>
	<div id=div_kojax hidden >
		<hr color=black>

	<div id=div_leds_psv><h1>div_leds_psv</h1></div id=div_leds_psv_end>
	<br>
	<div id=div_leds_json><h1>div_leds_json</h1></div id=div_leds_json_end>
	<br>
	<div id=div_leds_phppsv><h1>div_leds_phppsv</h1></div id=div_leds_phppsv_end>
	<br>
	<div id=div_leds_phpjson><h1>div_leds_phpjson</h1></div id=div_leds_phpjson_end>



		<hr color=black>
<script id=script_kolists>
kolists['leds']=`leds leds1 leds2 leds3`;
kolists['contacts']=`contacts contacts1 contacts2 contacts3`;
kolists['items']=`items1 items1 items1 items1`;
kolists['kov']=`kov1 kov1 kov1 kov1`;
kolists['letter']=`letter letter letter letter`;
kolists['postturtles']=`postturtles1 postturtles1 postturtles1 postturtles1`;
kolists['monkeytraps']=`monkeytraps monkeytraps monkeytraps monkeytraps`;
kolists['floods']=`floods1 floods1 floods1 floods1`;
kolists['coffee']=`coffee1 coffee1 coffee1 coffee1`;
kolists['iframes']=`iframes1 iframes1 iframes1 iframes1`;
kolists['grps']=`konet iperms ka jtfdc jtfdcr jtfinc law med kids go kt jak1 jak2 jak3 jh gjw jsk2 jsk jk sk jkwii skwii kitiworks kofe newz neuz`;
	</script id=script_kolists_end>
<br>
<hr color=black>
<div id=div_pres>
<h1>div_pres</h1>
<div id=div_leds><h1>div_leds<h1><pre id=pre_leds><h2>pre_leds</h2></pre_leds_end></div id=div_leds_end>
<div id=div_contacts><h1>div_contacts<h1><pre id=pre_contacts><h2>pre_contacts</h2></pre_contacts_end></div id=div_contacts_end>
<div id=div_items><h1>div_items<h1><pre id=pre_items><h2>pre_items</h2></pre_items></div id=div_items_end>
<div id=div_kov><h1>div_kov<h1><pre id=pre_kov><h2>pre_kov</h2></pre_kov_end></div id=div_kov_end>
<div id=div_letter><h1>div_letter<h1><pre id=pre_letter><h2>pre_letter</h2></pre_letter_end></div id=div_letter_end>
<div id=div_postturtles><h1>div_postturtles<h1><pre id=pre_postturtles><h2>pre_postturtles_end</h2></pre_postturtles></div id=div_postturtles_end>
<div id=div_monkeytraps><h1>div_monkeytraps<h1><pre id=pre_monkeytraps><h2>pre_monkeytraps_end</h2></pre_monkeytraps></div id=div_monkeytraps_end>
<div id=div_floods><h1>div_floods<h1><pre id=pre_floods><h2>pre_floods</h2></pre_floods_end></div id=div_floods_end>
<div id=div_coffee><h1>div_coffee<h1><pre id=pre_coffee><h2>pre_coffee</h2></pre_coffee_end></div id=div_coffee_end>
<div id=div_iframes><h1>div_iframes<h1><pre id=pre_iframes><h2>pre_iframes</h2></pre_iframes_end></div id=div_iframes_end>
<div id=div_grps><h1>div_grps<h1><pre id=pre_grps><h2>pre_grps</h2></pre_grps_end></div id=div_grps_end>
<hr color=black>
	</div id=div_pres>

<img id=img_kojax src=/imgs/btn/koeye.png onclick="toggle('div_kojax',''); return false;" height=20 border=0>kojax
<hr color=black>
	<br>

		<table id=table_datasrcs>
<tr></td>tbl</td><td>var</td><td>div</td><td>htm</td><td>psv</td><td>json</td><td>phppsv</td><td>phjpson</td><tr>
<tr>
<td>leds</td>
<td><img id=img_var src=/imgs/btn/brdb.png onclick="onclicks('leds','var');return false;" height=40 border=0><td>";
<td><img id=img_htm src=/imgs/btn/brdb.png onclick="onclicks('leds','htm');return false;" height=40 border=0><td>";
<td><img id=img_div src=/imgs/btn/brdb.png onclick="onclicks('leds','div');return false;" height=40 border=0><td>";
<td><img id=img_psv src=/imgs/btn/brdb.png onclick="onclicks('leds','psv');return false;" height=40 border=0><td>";
<td><img id=img_json src=/imgs/btn/brdb.png onclick="onclicks('leds','json');return false;" height=40 border=0><td>";
<td><img id=img_phphtm src=/imgs/btn/brdb.png onclick="onclicks('leds','phphtm');return false;" height=40 border=0><td>";
<td><img id=img_phppsv src=/imgs/btn/brdb.png onclick="onclicks('leds','phppsv');return false;" height=40 border=0><td>";
<td><img id=img_phpjson src=/imgs/btn/brdb.png onclick="onclicks('leds','phpjson');return false;" height=40 border=0><td>";
	</tr>

<tr>
<td>items</td>
<td><img id=img_var src=/imgs/btn/brdb.png onclick="onclicks('items','var');return false;" height=40 border=0><td>";
<td><img id=img_htm src=/imgs/btn/brdb.png onclick="onclicks('items','htm');return false;" height=40 border=0><td>";
<td><img id=img_div src=/imgs/btn/brdb.png onclick="onclicks('items','div');return false;" height=40 border=0><td>";
<td><img id=img_psv src=/imgs/btn/brdb.png onclick="onclicks('items','psv');return false;" height=40 border=0><td>";
<td><img id=img_json src=/imgs/btn/brdb.png onclick="onclicks('items','json');return false;" height=40 border=0><td>";
<td><img id=img_phphtm src=/imgs/btn/brdb.png onclick="onclicks('items','phphtm');return false;" height=40 border=0><td>";
<td><img id=img_phppsv src=/imgs/btn/brdb.png onclick="onclicks('items','phppsv');return false;" height=40 border=0><td>";
<td><img id=img_phpjson src=/imgs/btn/brdb.png onclick="onclicks('items','phpjson');return false;" height=40 border=0><td>";
	</tr>

<tr>
<td>contacts</td>
<td><img id=img_var src=/imgs/btn/brdb.png onclick="onclicks('contacts','var');return false;" height=40 border=0><td>";
<td><img id=img_htm src=/imgs/btn/brdb.png onclick="onclicks('contacts','htm');return false;" height=40 border=0><td>";
<td><img id=img_div src=/imgs/btn/brdb.png onclick="onclicks('contacts','div');return false;" height=40 border=0><td>";
<td><img id=img_psv src=/imgs/btn/brdb.png onclick="onclicks('contacts','psv');return false;" height=40 border=0><td>";
<td><img id=img_json src=/imgs/btn/brdb.png onclick="onclicks('contacts','json');return false;" height=40 border=0><td>";
<td><img id=img_phphtm src=/imgs/btn/brdb.png onclick="onclicks('contacts','phphtm');return false;" height=40 border=0><td>";
<td><img id=img_phppsv src=/imgs/btn/brdb.png onclick="onclicks('contacts','phppsv');return false;" height=40 border=0><td>";
<td><img id=img_phpjson src=/imgs/btn/brdb.png onclick="onclicks('contacts','phpjson');return false;" height=40 border=0><td>";
	</tr>

<tr>
<td>letter</td>
<td><img id=img_var src=/imgs/btn/brdb.png onclick="onclicks('letter','var');return false;" height=40 border=0><td>";
<td><img id=img_htm src=/imgs/btn/brdb.png onclick="onclicks('letter','htm');return false;" height=40 border=0><td>";
<td><img id=img_div src=/imgs/btn/brdb.png onclick="onclicks('letter','div');return false;" height=40 border=0><td>";
<td><img id=img_psv src=/imgs/btn/brdb.png onclick="onclicks('letter','psv');return false;" height=40 border=0><td>";
<td><img id=img_json src=/imgs/btn/brdb.png onclick="onclicks('letter','json');return false;" height=40 border=0><td>";
<td><img id=img_phphtm src=/imgs/btn/brdb.png onclick="onclicks('letter','phphtm');return false;" height=40 border=0><td>";
<td><img id=img_phppsv src=/imgs/btn/brdb.png onclick="onclicks('letter','phppsv');return false;" height=40 border=0><td>";
<td><img id=img_phpjson src=/imgs/btn/brdb.png onclick="onclicks('letter','phpjson');return false;" height=40 border=0><td>";
	</tr>

<tr>
<td>kov</td>
<td><img id=img_var src=/imgs/btn/brdb.png onclick="onclicks('kov','var');return false;" height=40 border=0><td>";
<td><img id=img_htm src=/imgs/btn/brdb.png onclick="onclicks('kov','htm');return false;" height=40 border=0><td>";
<td><img id=img_div src=/imgs/btn/brdb.png onclick="onclicks('kov','div');return false;" height=40 border=0><td>";
<td><img id=img_psv src=/imgs/btn/brdb.png onclick="onclicks('kov','psv');return false;" height=40 border=0><td>";
<td><img id=img_json src=/imgs/btn/brdb.png onclick="onclicks('kov','json');return false;" height=40 border=0><td>";
<td><img id=img_phphtm src=/imgs/btn/brdb.png onclick="onclicks('kov','phphtm');return false;" height=40 border=0><td>";
<td><img id=img_phppsv src=/imgs/btn/brdb.png onclick="onclicks('kov','phppsv');return false;" height=40 border=0><td>";
<td><img id=img_phpjson src=/imgs/btn/brdb.png onclick="onclicks('kov','phpjson');return false;" height=40 border=0><td>";
	</tr>

<tr>
<td>postturtles</td>
<td><img id=img_var src=/imgs/btn/brdb.png onclick="onclicks('postturtles','var');return false;" height=40 border=0><td>";
<td><img id=img_htm src=/imgs/btn/brdb.png onclick="onclicks('postturtles','htm');return false;" height=40 border=0><td>";
<td><img id=img_div src=/imgs/btn/brdb.png onclick="onclicks('postturtles','div');return false;" height=40 border=0><td>";
<td><img id=img_psv src=/imgs/btn/brdb.png onclick="onclicks('postturtles','psv');return false;" height=40 border=0><td>";
<td><img id=img_json src=/imgs/btn/brdb.png onclick="onclicks('postturtles','json');return false;" height=40 border=0><td>";
<td><img id=img_phphtm src=/imgs/btn/brdb.png onclick="onclicks('postturtles','phphtm');return false;" height=40 border=0><td>";
<td><img id=img_phppsv src=/imgs/btn/brdb.png onclick="onclicks('postturtles','phppsv');return false;" height=40 border=0><td>";
<td><img id=img_phpjson src=/imgs/btn/brdb.png onclick="onclicks('postturtles','phpjson');return false;" height=40 border=0><td>";
	</tr>

<tr>
<td>monkeytraps</td>
<td><img id=img_var src=/imgs/btn/brdb.png onclick="onclicks('monkeytraps','var');return false;" height=40 border=0><td>";
<td><img id=img_htm src=/imgs/btn/brdb.png onclick="onclicks('monkeytraps','htm');return false;" height=40 border=0><td>";
<td><img id=img_div src=/imgs/btn/brdb.png onclick="onclicks('monkeytraps','div');return false;" height=40 border=0><td>";
<td><img id=img_psv src=/imgs/btn/brdb.png onclick="onclicks('monkeytraps','psv');return false;" height=40 border=0><td>";
<td><img id=img_json src=/imgs/btn/brdb.png onclick="onclicks('monkeytraps','json');return false;" height=40 border=0><td>";
<td><img id=img_phphtm src=/imgs/btn/brdb.png onclick="onclicks('monkeytraps','phphtm');return false;" height=40 border=0><td>";
<td><img id=img_phppsv src=/imgs/btn/brdb.png onclick="onclicks('monkeytraps','phppsv');return false;" height=40 border=0><td>";
<td><img id=img_phpjson src=/imgs/btn/brdb.png onclick="onclicks('monkeytraps','phpjson');return false;" height=40 border=0><td>";
	</tr>

<tr>
<td>floods</td>
<td><img id=img_var src=/imgs/btn/brdb.png onclick="onclicks('floods','var');return false;" height=40 border=0><td>";
<td><img id=img_htm src=/imgs/btn/brdb.png onclick="onclicks('floods','htm');return false;" height=40 border=0><td>";
<td><img id=img_div src=/imgs/btn/brdb.png onclick="onclicks('floods','div');return false;" height=40 border=0><td>";
<td><img id=img_psv src=/imgs/btn/brdb.png onclick="onclicks('floods','psv');return false;" height=40 border=0><td>";
<td><img id=img_json src=/imgs/btn/brdb.png onclick="onclicks('floods','json');return false;" height=40 border=0><td>";
<td><img id=img_phphtm src=/imgs/btn/brdb.png onclick="onclicks('floods','phphtm');return false;" height=40 border=0><td>";
<td><img id=img_phppsv src=/imgs/btn/brdb.png onclick="onclicks('floods','phppsv');return false;" height=40 border=0><td>";
<td><img id=img_phpjson src=/imgs/btn/brdb.png onclick="onclicks('floods','phpjson');return false;" height=40 border=0><td>";
	</tr>

<tr>
<td>coffee</td>
<td><img id=img_var src=/imgs/btn/brdb.png onclick="onclicks('floods','var');return false;" height=40 border=0><td>";
<td><img id=img_htm src=/imgs/btn/brdb.png onclick="onclicks('floods','htm');return false;" height=40 border=0><td>";
<td><img id=img_div src=/imgs/btn/brdb.png onclick="onclicks('floods','div');return false;" height=40 border=0><td>";
<td><img id=img_psv src=/imgs/btn/brdb.png onclick="onclicks('floods','psv');return false;" height=40 border=0><td>";
<td><img id=img_json src=/imgs/btn/brdb.png onclick="onclicks('floods','json');return false;" height=40 border=0><td>";
<td><img id=img_phphtm src=/imgs/btn/brdb.png onclick="onclicks('floods','phphtm');return false;" height=40 border=0><td>";
<td><img id=img_phppsv src=/imgs/btn/brdb.png onclick="onclicks('floods','phppsv');return false;" height=40 border=0><td>";
<td><img id=img_phpjson src=/imgs/btn/brdb.png onclick="onclicks('floods','phpjson');return false;" height=40 border=0><td>";
	</tr>


	</table id=table_datasrcs_end>

<script id=script_onclicks>
	function onclicks(tbl,src) {
		alert( "BUGS_11700 onclicks tbl="+tbl+" src="+src+"<br>\n" );
		tbldta="";
		if(( src == "var" ) || ( src == "" )) { tbl_var=kolists['leds']; tbldta=tbl_var; }
		if(( src == "div"  || ( src == "" )) { tbl_div=document.getElementById('pre_leds').innerHTML;  tbldta=tbl_var; }
		if(( src == "psv" ) || ( src == "" )) { tbl_psv=kojax('leds.psv','pre_kojax',''); tbldta=tbl_div; }
		if(( src == "htm" ) || ( src == "" )) { tbl_htm=kojax('leds.html','pre_kojax',''); tbldta=tbl_psv; }
		if(( src == "json" ) || ( src == "" )) { tbl_json=kojaxj('leds.json','pre_kojaxj',''); tbldta=tbl_htm; }
		if(( src == "phphtm" ) || ( src == "" )) { tbl_phphtm=kojax('ko.php?leds&fmt=htm&save','pre_kojax',''); tbldta=tbl_phphtm; }
		if(( src == "phppsv" ) || ( src == "" )) { tbl_phppsv=kojax('ko.php?leds&fmt=psv&save','pre_kojax',''); tbldta=tbl_phppsv; }
		if(( src == "phpjson" ) || ( src == "" )) { tbl_phpjson=kojaxj('ko.php?leds&fmt=json&save','pre_kojaxj',''); tbldta=tbl_phpjson; }
		alert( "BUGS_11720 tbl="+tbl+" src="+src+" tbldta="+tbldta+"<br>\n" );	
		return(tbldta);
		}
	</script id=script_onclicks_end>



		<hr color=black>
		<pre id=pre_kojax>
			<h3>pre_kojax</h3>
			</pre id=pre_kojax_end >
		<pre id=pre_kojaxj>
			<h3>pre_kojaxj</h3>
			</pre id=pre_kojaxj_end >
		<hr color=black>
		<hr color=white>
		<h2>ko.php?leds kov contacts</h2>
		<button onclick="kojax('ko.php?leds','','');" >kojax kophp_leds</button>
		<button onclick="kojax('ko.php?kov','','');" >kojax kophp_kov</button>
		<button onclick="kojax('ko.php?contacts','','');" >kojax kophp_contacts</button>
		<h2>ko.php? &fmt=json</h2>
		<button onclick="kojaxj('ko.php?leds&fmt=json','pre_kojaxj','');" >kojaxj kophp_leds_json</button>
		<button onclick="kojax('ko.php?leds&fmt=json','pre_kojax','');" >kojax kophp_leds_json</button>
		<button onclick="window.open('ko.php?leds&fmt=json');" >php_leds_json</button>
		<button onclick="kojax('ko.php?kov&fmt=json','pre_kojax','');" >kophp_kov_json</button>
		<button onclick="window.open('ko.php?kov&fmt=json');" >php_leds_json</button>
		<button onclick="kojax('ko.php?contacts&fmt=json','pre_kojax','');" >kophp_contacts_json</button>
		<button onclick="window.open('ko.php?contacts&fmt=json');" >php_leds_json</button>
		<h2>ko.php? &fmt=psv</h2>
		<button onclick="kojax('ko.php?leds&fmt=psv','','');" >kophp_leds_psv</button>
		<button onclick="kojax('ko.php?kov&fmt=psv','','');" >kophp_kov_psv</button>
		<button onclick="kojax('ko.php?contacts&fmt=psv','','');" >kophp_contacts_psv</button>


		<br>
		<br>
		<button onclick="kojax('help_items.txt','','');" >items</button>
		<button onclick="kojax('help_contacts.txt','','');" >contacts</button>
		<button onclick="kojax('help_letter.txt','','');" >letter</button>
		<button onclick="kojax('pages/imgs.txt','','');" >pages</button>
		<button onclick="kojax('imgs/imgs.txt','','');" >imgs</button>
		<br>
		<button onclick="kojax('./ko.php?lists=items','','');" >ko.php?lists=items</button>
		<button onclick="kojax('./ko.php?lists=contacts','','');" >ko.php?lists=contacts</button>
		<button onclick="kojax('./ko.php?lists=letter','','');" >ko.php?lists=letter</button>
		<button onclick="kojax('./ko.php?lists=postturtles','','');" >ko.php?lists=postturtles</button>
		<button onclick="kojax('./ko.php?lists=monkeytraps','','');" >ko.php?lists=monkeytraps</button>
		<button onclick="kojax('./ko.php?lists=floods','','');" >ko.php?lists=floods</button>
		<button onclick="kojax('./ko.php?lists=coffee','','');" >ko.php?lists=coffee</button>
		<br>
		<button onclick="kojax('./ko.php?lists=leds&db3=/ko/ko.db3','','');" >ko.php?lists=leds&db3=/ko/ko.db3</button>
		<button onclick="kojax('./ko.php?lists=items&db3=/ko/ko.db3','','');" >ko.php?lists=items&db3=/ko/ko.db3</button>
		<button onclick="kojax('./ko.php?lists=contacts&db3=/ko/ko.db3','','');" >ko.php?lists=contacts&db3=/ko/ko.db3</button>
		<button onclick="kojax('./ko.php?lists=letter&db3=/ko/ko.db3','','');" >ko.php?lists=letter&db3=/ko/ko.db3</button>
		<button onclick="kojax('./ko.php?lists=postturtles&db3=/ko/ko.db3','','');" >ko.php?lists=postturtles&db3=/ko/ko.db3</button>
		<button onclick="kojax('./ko.php?lists=monkeytraps&db3=/ko/ko.db3','','');" >ko.php?lists=monkeytraps&db3=/ko/ko.db3</button>
		<button onclick="kojax('./ko.php?lists=floods&db3=/ko/ko.db3','','');" >ko.php?lists=floods&db3=/ko/ko.db3</button>
		<button onclick="kojax('./ko.php?lists=coffee&db3=/ko/ko.db3','','');" >ko.php?lists=coffee&db3=/ko/ko.db3</button>
		<br>
		<button onclick="kojax('lists_letter.txt','','');" >lists_letter.txt</button>
		<button onclick="kojax('lists_contacts.txt','','');" >lists_contactx.txt</button>
		<button onclick="kojax('lists_items.txt','','');" >lists_items.txt</button>
		<br>
		<button onclick="kojax('lists_postturtles.txt','','');" >lists_postturtles.txt</button>
		<button onclick="kojax('lists_monkeytraps.txt','','');" >lists_monkeytraps.txt</button>
		<button onclick="kojax('lists_floods.txt','','');" >lists_floods.txt</button>
		<button onclick="kojax('lists_coffee.txt','','');" >lists_coffee.txt</button>
		<hr color=white>
		<button onclick="kojax('main.txt','','');" >main.txt</button>
		<button onclick="kojax('main_ka.txt','','');" >main_ka.txt</button>

<hr color=white> 
<button onclick="kojax('main_law.txt','','');" >main_law.txt</button>
<button onclick="kojax('main_jtfdcr.txt','','');" >main_jtfdcr.txt</button>
<button onclick="kojax('main_byrdbellvj.txt','','');" >main_byrdbellvj.txt</button>
<button onclick="kojax('main_jtfinc.txt','','');" >main_jtfinc.txt</button>

<hr color=white>
<button onclick="kojax('main_med.txt','','');" >main_med.txt</button>
<button onclick="kojax('main_jtfdc.txt','','');" >main_jtfdc.txt</button>
<button onclick="kojax('main_konet.txt','','');" >main_konet.txt</button>
<button onclick="kojax('main_iperms.txt','','');" >main_iperms.txt</button>

<hr color=white>
<button onclick="kojax('main_kofe.txt','','');" >main_kofe.txt</button>
<button onclick="kojax('main_neuz.txt','','');" >main_neuz.txt</button>
<button onclick="kojax('main_newz.txt','','');" >main_newz.txt</button>
<hr color=white>
<button onclick="kojax('main_fb.txt','','');" >main_fb.txt</button>
<button onclick="kojax('main_pdf.txt','','');" >main_pdf.txt</button>
<button onclick="kojax('main_go.txt','','');" >main_go.txt</button>
<button onclick="kojax('main_tl.txt','','');" >main_tl.txt</button>
<button onclick="kojax('main_zm.txt','','');" >main_zm.txt</button>

<pre id=pre_kojax></pre id=pre_kojax_end>
<hr color=white>
<button onclick="window.open('/ko.php?todo');" >ko.php?todo</button>
<button onclick="window.open('/ko.php?todo=mp3s');" >ko.php?todo=mp3s</button>
<button onclick="window.open('/ko.php?todo=mp4s');" >ko.php?todo=mp4s</button>
<button onclick="window.open('/ko.php?todo=pdfs');" >ko.php?todo=pdfs</button>
<button onclick="window.open('/ko.php?todo=fbs');" >ko.php?todo=fbs</button>
<button onclick="window.open('/ko.php?todo=yts');" >ko.php?todo=yts</button>
<h3>ko_</h3>
<button onclick="window.open('ko_fb.html');" >ko_fb.html</button>
<button onclick="window.open('ko_form.html');" >ko_form.html</button>
<button onclick="window.open('ko_graphgame.html');" >ko_graphgame.html</button>
<button onclick="window.open('ko_k9.html');" >ko_k9.html</button>
<button onclick="window.open('ko_vi.html');" >ko_vi.html</button>
<button onclick="window.open('ko_tm.html');" >ko_tm.html</button>
<button onclick="window.open('ko_tl.html');" >ko_tl.html</button>
<button onclick="window.open('ko_style.html');" >ko_style.html</button>
<button onclick="window.open('ko_slots.html');" >ko_slots.html</button>
<button onclick="window.open('ko_canvas.html');" >ko_canvas.html</button>
<br>
<hr color=white>
<h3>walter zorn dhtml</h3>
<button onclick="window.open('/js/wz/index.html');" >/js/wz/index.html</button>
<button onclick="window.open('/index_sailboat.html');" >/index_sailboat.html</button>
<button onclick="window.open('/ko_sailboat.html');" >/ko_sailboat.html</button>
<button onclick="window.open('/koblobs.html');" >/koblobs.html</button>
<button onclick="window.open('/index_blob.html');" >/index_blob.html</button>
<button onclick="window.open('/js/wz/wz_anim.html');" >/js/wz/wz_anim.html</button>
<button onclick="window.open('/js/wz/wz_sailboat.html');" >/js/wz/wz_sailboat.html</button>
<button onclick="window.open('/js/wz/wz_blob.html');" >/js/wz/wz_blob.html</button>
&nbsp &nbsp





		<hr color=white>
		<hr color=black>

		<div id=div_jax> <h1>div_jax</h1> </div id=div_jax_end>
		</div id=div_kojax_end>

	<div id=div_kojaxj>
		<pre id=pre_kojaxj>
			<h1>kojaxj</h1>
			</pre id=pre_kojaxj_end>
		</div id=div_kojax_end>
	<br>
	<hr color=goldenrod>

	<img id=img_files src=/imgs/btn/koeye.png onclick="toggle('div_files',''); return false;" height=20 border=0>files
	<hr color=goldenrod>
	<div id=div_files hidden>
		<hr color=white>
		<a href=./plupload.html target=_blank>
			<img id=img_plupload title="          plupload" src=/imgs/btn/btn_plupload.png
>
			</a>
		<br>
		<hr color=white>
		<output id="zonelist"></output>
		<div id="dropzone">
			dropzone
			<div id="div_canvas" style="position:relative; width:400px; height:200px background:white">
				<canvas id="canvas_dropzone" style="z-index: 1;
					position:absolute;
					left:0px;
					top:0px;
					" height="100px" width="200" background-color="darkSlategrey" color="ivory">
					WARN_1387 unauthorized access has been logged
					</canvas>
				</div id=div_canvas_end>
			</div id=dropzone_end>

		<script name="script_fileselect">
			function handleFileSelect(evt) {
				evt.stopPropagation();
				evt.preventDefault();

				var files = evt.dataTransfer.files; // FileList object.

// files is a FileList of File objects. List some properties.
    var output = [];
    for (var i = 0, f; f = files[i]; i++) {
      output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
                  f.size, ' bytes, last modified: ',
                  f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
                  '</li>');
    }
    document.getElementById('zonelist').innerHTML = '<ul>' + output.join('') + '</ul>';
  }

  function handleDragOver(evt) {
    evt.stopPropagation();
    evt.preventDefault();
    evt.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy.
  }

  // Setup the dnd listeners.
  var dropZone = document.getElementById('dropzone');
  dropZone.addEventListener('dragover', handleDragOver, false);
  dropZone.addEventListener('drop', handleFileSelect, false);
</script>

<hr><hr><hr>
	<label class="fileContainer">
		files
		<input id="files" name="files[]" multiple="" type="file">
		</label>


<output id="zonelist"></output>

<script>
  function handleFileSelect(evt) {
    var files = evt.target.files; // FileList object

    // files is a FileList of File objects. List some properties.
    var output = [];
    for (var i = 0, f; f = files[i]; i++) {
      output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
                  f.size, ' bytes, last modified: ',
                  f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
                  '</li>');
    }
    document.getElementById('zonelist').innerHTML = '<ul>' + output.join('') + '</ul>';
  }

	  document.getElementById('files').addEventListener('change', handleFileSelect, false);
	</script>


	<div id=div_files2 hidden >
		<label class="fileContainer">
			files2
			<input id="files" name="files[]" multiple="" type="file">
			</label>
		<output id="zonelist"></output>
		</div id=div_files2_end>

<script>
  function handleFileSelect(evt) {
    var files = evt.target.files; // FileList object

    // Loop through the FileList and render image files as thumbnails.
    for (var i = 0, f; f = files[i]; i++) {

// Only process image files.
	if (!f.type.match('image.*')) { continue; }

      var reader = new FileReader();

      // Closure to capture the file information.
      reader.onload = (function(theFile) {
        return function(e) {
          // Render thumbnail.
          var span = document.createElement('span');
          span.innerHTML = ['<img class="thumb" src="', e.target.result,
                            '" title="', escape(theFile.name), '"/>'].join('');
          document.getElementById('zonelist').insertBefore(span, null);
        };
      })(f);

      // Read in the image file as a data URL.
      reader.readAsDataURL(f);
    }
  }

  document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>

	<script id="script_previewfile">
			function previewfile(file) {
				if (tests.filereader === true && acceptedTypes[file.type] === true) {
					var reader = new FileReader();
					reader.onload = function (event) {
						var image = new Image();
						image.src = event.target.result;
						image.width = 250; // a fake resize
						holder.appendChild(image);
						};

					reader.readAsDataURL(file);
					}  
				else {
					holder.innerHTML += 
						'<p>done:  koupload' 
							+ file.name 
							+ ' ' 
							+ (file.size ? (file.size/1024|0) + 'K' : ''); 
						console.log(file);
					}
				}

			function readfiles(files) {
				debugger;
				var formData = tests.formdata ? new FormData() : null;
				for (var i = 0; i < files.length; i++) {
					if (tests.formdata) formData.append('file', files[i]);
					previewfile(files[i]);
					}

// now post a new XHR request
				if (tests.formdata) {
					var xhr = new XMLHttpRequest();
					xhr.open('POST', 'http://ka6/ko/bin/php/ko.php?ko=ajax,upload,filenames,phpi,ok');
//					xhr.open('POST', 'ka6/ko/bin/php/index.php?q=upload,filenames');
					xhr.onload = function() {
						progress.value = progress.innerHTML = 100;
						};

				if (tests.progress) {
					xhr.upload.onprogress = function (event) {
						if (event.lengthComputable) {
							var complete = (event.loaded / event.total * 100 | 0);
							progress.value = progress.innerHTML = complete;
							}
						}
					}

				xhr.send(formData);
				}
			}

<!--
			if (tests.dnd) { 
				holder.ondragover = function () { this.className = 'hover'; return false; };
				holder.ondragend = function () { this.className = ''; return false; };
				holder.ondrop = function (e) {
					this.className = '';
					e.preventDefault();
					readfiles(e.dataTransfer.files);
					}
				} 
			else {
				fileupload.className = 'hidden';
				fileupload.querySelector('input').onchange = function () {
				readfiles(this.files);
				};
	-->
			}
		</script>

	<script id="script_myfilework>

		funtion myfilework( j, file ) {

			alert( j+" file="+file );
			}

		</script>





		<script id="script_upload_input">>
			var upload = document.getElementsByTagName('input')[0],
			holder2 = document.getElementById('holder2'),
			state = document.getElementById('status');

			if (typeof window.FileReader === 'undefined') {
				state.className = 'fail';
				} 
			else {
				state.className = 'success';
				state.innerHTML = 'File API & FileReader available';
				}
 
			upload.onchange = function (e) {
				e.preventDefault();

				var file = upload.files[0],
				reader = new FileReader();
				reader.onload = function (event) {
					var img = new Image();
					img.src = event.target.result;
// note: no onload required since we've got the dataurl...I think! :)
					if (img.width > 560) { // holder width
						img.width = 560;
						}
					holder2.innerHTML = '';
					holder.appendChild(img);
					};
				reader.readAsDataURL(file);

				return false;
				};

//			var formData = new FormData();
//			formData.append("part_num", "123ABC"); 
//			formData.append("part_price", 7.95);
//				formData.append("part_image", somefile)
//
//			var xhr = new XMLHttpRequest();
//			xhr.open("POST", "http://ka6/ko/bin/php/ko.php?ko=ajax,upload/");  
//			xhr.send(formData);
			</script>

	<canvas color="darkSlategrey" height="100" width="400"></canvas>
	<script>
		var canvas = document.getElementsByTagName('canvas')[0],
    ctx = null,
    grad = null,
    body = document.getElementsByTagName('body')[0],
    color = 255;
//    color = lightblue;
    
if (canvas.getContext('2d')) {
  ctx = canvas.getContext('2d');
  ctx.clearRect(0, 0, 600, 600);
  ctx.save();

// Create radial gradient
//  grad = ctx.createRadialGradient(0,0,0,0,0,600); 
//  grad.addColorStop(0, '#000');
//  grad.addColorStop(1, 'rgb(' + color + ', ' + color + ', ' + color + ')');

  // assign gradients to fill
//  ctx.fillStyle = grad;
	ctx.fillstyle = "lightblue";

  // draw 600x600 fill
  ctx.fillRect(0,0,600,600);
  ctx.save();
  
  body.onmousemove = function (event) {
    var width = window.innerWidth, 
        height = window.innerHeight, 
        x = event.clientX, 
        y = event.clientY,
        rx = 600 * x / width,
        ry = 600 * y / height;
        
    var xc = ~~(256 * x / width);
    var yc = ~~(256 * y / height);

    grad = ctx.createRadialGradient(rx, ry, 0, rx, ry, 600); 
    grad.addColorStop(0, '#000');
    grad.addColorStop(1, ['rgb(', xc, ', ', (255 - xc), ', ', yc, ')'].join(''));
    // ctx.restore();
//    ctx.fillStyle = grad;
	ctx.fillstyle="lightblue";
    ctx.fillRect(0,0,600,600);
    // ctx.save();
  };
}
	</script>

	<div id="div_csv"><h3>div_csv 300</h3></div>
	
	<script id="script_upload"  type="text/javascript">
//		function upload_csv() {
		function Upload() {
//			var files = evt.dataTransfer.files; // FileList object.
//			var fileUpload = document.getElementById("upload_files");
			var fileUpload = document.getElementById("fileUpload");
			var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt|.psv|.py|.htm|.html|.php)$/;
//			if (regex.test(fileUpload.value.toLowerCase())) {
			if (regex.test(fileUpload.value.toLowerCase())) {
				if (typeof (FileReader) != "undefined") {
					var reader = new FileReader();
					reader.onload = function (e) {
						var table = document.createElement("table");
						var rows = e.target.result.split("\n");
						for (var i = 0; i < rows.length; i++) {
							var row = table.insertRow(-1);
					
//							var cells = rows[i].split("|");
							var cells = rows[i].split(",");
							for (var j = 0; j < cells.length; j++) {
								var cell = row.insertCell(-1);
								cell.innerHTML = cells[j];
								}
							}
						var csv2tbl = document.getElementById("csv2tbl");
						csv2tbl.innerHTML = "";
						csv2tbl.appendChild(table);
						}
					reader.readAsText(fileUpload.files[0]);
					file_csv=fileUpload.files[0];
					file_csvlen = fileUpload.files.length;
					alert( "BUGS_4390 CSV file_csvlen="+file_csvlen+" file_csv="+file_csv );
					load_file_csv(file_csv);
					} 
				else {
					alert("csv2tbl warn:  unauthorized access noted");
					}
				} 
			else {
				alert("csv2tbl fail:  unsuppoted format");
				}
			}
		</script>

	<script id="script_load_file_csv">
		function load_file_csv(file_csv) {
			alert( "BUGS_4400 load_file_csv file_csv="+file_csv" );
			file_psv=file_csv;
			return(file_psv);
			}
		</script>

	<label class="fileContainer">
		files.csv.psv.txt
		<input id="fileUpload" type="file"></input>
		</label>

	&nbsp &nbsp &nbsp
	<label class="fileContainer">
		parse.csv.psv.txt
		<input id="upload" value="Upload" onclick="Upload()" type="button"></input>
		</label>



	<div id="csv2tbl"><h3>csv2tbl MSG_367</h3></div>



		<script id=script_files type="text/javascript">
			$(function() {
// grab the file input and bind a change event onto it
				$('#file').bind("change", function() {
// new html5 formdata object.
					var formData = new FormData();
// for each entry, add to formdata to later access via $_FILES["file" + i]
					for (var i = 0, len = document.getElementById('file').files.length; i < len; i++) {
						formData.append("file" + i, document.getElementById('file').files[i]);
						}
 
//send formdata to server-side
					$.ajax({
//						url: "file-upload.php", // our php file
//						url: "ka1_fileupload.php", // our php file
//						nurl: "http://ka1/ka1.php?q=up", // our php file
//						url: "/kup.php", // our php file
//						url: "/ka1_up.php", // our php file
//						url: "/ka1.php?q=kup", // our php file
//						url: "/ko0.php?q=kup", // our php file
//						url: "/ko1.php?q=kup", // our php file
						url: "/ko.php?todo=mp3s", // our php file
// bugs						url: "10.0.0.112:/ka1.php?q=up", // our php file
						type: 'post',
						data: formData,
						dataType: 'html', // we return html from our php file
						async: true,
						processData: false,  // tell jQuery not to process the data
						contentType: false,   // tell jQuery not to set contentType
						success : function(data) {
							$('#upload-result').append('<div class="alert alert-success"><p>File(s) uploaded successfully!</p><br />');
							$('#upload-result .alert').append(data);
							},
						error : function(request) {
							console.log(request.responseText);
							}
						});
					});
				});
			</script id=script_files_end>




	<hr color=white>
	<hr color=black>
	<div id='editableDiv' contenteditable='true'>paste</div>
	<hr color=black>
	<hr color=white>
	<hr color=black>
	<div id='div' contenteditable='true'>ffpaste</div>
	<hr color=black>
	<hr color=white>

	<script id="script_clipboard" >
		function handlePaste (e) {
			var clipboardData, pastedData;

// Stop data actually being pasted into div
			e.stopPropagation();
			e.preventDefault();

// Get pasted data via clipboard API
			clipboardData = e.clipboardData || window.clipboardData;
			pastedData = clipboardData.getData('Text');

// Do whatever with pasteddata
			alert(pastedData);
			}

		document.getElementById('editableDiv').addEventListener('paste', handlePaste);
		</script>


	<script id="script_clipboard_ff" >
		function handlepaste_ff (e) {
			var types, pastedData, savedContent;

// Browsers that support the 'text/html' type in the Clipboard API (Chrome, Firefox 22+)
			if (e && e.clipboardData && e.clipboardData.types && e.clipboardData.getData) {

// Check for 'text/html' in types list. See abligh's answer below for deatils on
// why the DOMStringList bit is needed. We cannot fall back to 'text/plain' as
// Safari/Edge don't advertise HTML data even if it is available
				types = e.clipboardData.types;
				if (((types instanceof DOMStringList) && types.contains("text/html")) || (types.indexOf && types.indexOf('text/html') !== -1)) {

// Extract data and pass it to callback
					pastedData = e.clipboardData.getData('text/html');
//					processPaste(editableDiv, pastedData);
					processPaste_ff(editableDiv, pastedData);

// Stop the data from actually being pasted
					e.stopPropagation();
					e.preventDefault();
					return false;
					}
				}

// Everything else: Move existing element contents to a DocumentFragment for safekeeping
			savedContent = document.createDocumentFragment();
			while(editableDiv.childNodes.length > 0) {
				savedContent.appendChild(editableDiv.childNodes[0]);
				}

// Then wait for browser to paste content into it and cleanup
			waitForPastedData(editableDiv, savedContent);
			return true;
			}

		function waitForPastedData (elem, savedContent) {

// If data has been processes by browser, process it
			if (elem.childNodes && elem.childNodes.length > 0) {

// Retrieve pasted content via innerHTML
// (Alternatively loop through elem.childNodes or elem.getElementsByTagName here)
				var pastedData = elem.innerHTML;

// Restore saved content
				elem.innerHTML = "";
				elem.appendChild(savedContent);

// Call callback
				processPaste_ff(elem, pastedData);
				}

// Else wait 20ms and try again
			else {
				setTimeout(function () {
					waitForPastedData(elem, savedContent)
					}, 20);
				}
			}

		function processPaste_ff (elem, pastedData) {
// Do whatever with gathered data;
			alert(pastedData);
			elem.focus();
			}

// Modern browsers. Note: 3rd argument is required for Firefox <= 6
		if (editableDiv.addEventListener) {
			editableDiv.addEventListener('paste', handlepaste, false);
			}
// IE <= 8
		else {
			editableDiv.attachEvent('onpaste', handlepaste);
			}

		$(document).on('paste','[contenteditable]',function(e) {
			e.preventDefault();
			var text = (e.originalEvent || e).clipboardData.getData('text/plain');
			window.document.execCommand('insertText', false, text);
			});
		</script>

	<script id="script_clipboard_jskit" >
		function getSelectionText(){
			var selectedText = ""
			if (window.getSelection){ // all modern browsers and IE9+
				selectedText = window.getSelection().toString()
				}
			return selectedText
			}


		document.addEventListener('mouseup', function(){
			var thetext = getSelectionText()
			if (thetext.length > 0){ // check there's some text selected
				console.log(thetext) // logs whatever textual content the user has selected on the page
				}
			}, false)

		function copySelectionText(){
			var copysuccess // var to check whether execCommand successfully executed
			try{
				copysuccess = document.execCommand("copy") // run command to copy selected text to clipboard
    				} 
			catch(e){
				copysuccess = false
				}
			return copysuccess
			}

		</script id=script_ffpaste_end>
		</div id=div_files>

	<script id="script_parse_ext">
		function parse_ext(path) {
			var filename = path.split('\\').pop().split('/').pop();
			var lastIndex = filename.lastIndexOf(".");
			if (lastIndex < 1) return "";
			return filename.substr(lastIndex + 1);
			}
		function getFilePathExtension(path) {
			var filename = path.split('\\').pop().split('/').pop();
			return filename.substr(( Math.max(0, filename.lastIndexOf(".")) || Infinity) + 1);
			}
		</script id=script_parse_ext_end>


	<script id="script_parse">
		var jklists = new Array();
		var jkid="";
		function parse(args) {
//			alert( "BUGS_20 parse args="+args);
			var parser = document.createElement('a');
//			parser.href = "/";
//			parser.href = "http://example.com:3000/pathname/?search=test#hash";
			parser.href=document.location;
			
//			parser.protocol; // => "http:"
//			parser.hostname; // => "example.com"
//			parser.port;     // => "3000"
//			parser.pathname; // => "/pathname/"
//			parser.search;   // => "?search=test"
//			parser.hash;     // => "#hash"
//			parser.host;     // => "example.com:3000"

			protocol=parser.protocol; // => "http:"
			hostname=parser.hostname; // => "example.com"
			port=parser.port;     // => "3000"
			pathname=parser.pathname; // => "/pathname/"
			search=parser.search;   // => "?search=test"
			hash=parser.hash;     // => "#hash"
			host=parser.host;     // => "example.com:3000"

			htmout += "<br>\n";
			htmout += "<hr color=black>\n";
			htmout += "<hr color=white>\n";
			htmout += "protocol="+protocol+"<br>\n"
			htmout += "hostname="+hostname+"<br>\n"
			htmout += "port="+port+"<br>\n"
			htmout += "pathname="+pathname+"<br>\n"
			htmout += "search="+search+"<br>\n"
			htmout += "hash="+hash+"<br>\n"
			htmout += "host="+host+"<br>\n"
			if ( document.getElementById('div_parsed')) {
				document.getElementById('div_parsed').innerHTML=htmout;
				}
//			alert( "BUGS_60 parser htmout="+htmout );
			psvrec=protocol+"|"+hostname+"|"+port+"|"+pathname+"|"+search+"|"+hash+"|"+host+"|"+dttm+"|";
			return(psvrec);
//			return(htmout);



//			if( parser.search != "" ) {
//				var jkid = parser.search.split("=")[1];
//				var jklist = new Array();
//				jklist = jkload(jkid);
//				var htmout = "";
//				for( j=0; j< jklist.length; j++ ) {
//					if( jklist[j] == "" ) { continue; }
//					if( jklist[j] == "#" ) { continue; }
//					htmout += jklist[j]+"<br>\n";
//					}
//				document.write( htmout );
//				return;
//				}

//			var str = "jkwii is me"
			var regx = /is/g;
			var result = regx.test(str);
//			alert( "BUGS_80 str="+str+" regx="+regx+" result="+result );
			id=geturlparameter('id');
			}
		</script id=script_parse_end>


       <script id="script_geturlvars" >
//              var number = geturlvars()["x"];
//              var mytext = geturlvars()["text"];
//              var mytext = geturlparam('text','Empty');
                function geturlvars() {
                        var vars = {};
                        var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
                                vars[key] = value;
                                });
                        return vars;
                        }
		</script id=script_geturlvars_end>

               <script id=script_geturlparam >
                        function geturlparam(parameter, defaultvalue){
                                var urlparameter = defaultvalue;
                                if(window.location.href.indexOf(parameter) > -1) {
                                        urlparameter = getUrlVars()[parameter];
                                        }
                                return urlparameter;
                                }
//                      var mytext = getUrlParam('text','Empty');
                        </script id=script_geturlparam_end>

        <script id=script_keypress >
                function keypress(e) {
// Ensure event is not null
                        e = e || window.event;
                        if ((e.which == 90 || e.keyCode == 90) && e.ctrlKey) {alert( "MSG_090 keypress  ctrl-z" );
                                return('ctrl-z');
                                }
                        if ((e.which == 89 || e.keyCode == 89) && e.ctrlKey) {alert( "MSG_089 keypress  ctrl-y" );
                                return('ctrl-y');
                                }
                        if ((e.which == 54 || e.keyCode == 54) && e.ctrlKey) {
                                alert( "MSG_054 keypress  ctrl-hat" );
                                return('ctrl-hat');
                                }
                        if ((e.which == 54 || e.keyCode == 54) && e.shiftKey) {
                                alert( "MSG_054 keypress  shift-hat" );
                                return('shift-hat');
                                }
                        if ((e.which == 60 || e.keyCode == 60) && e.shiftKey) {
                                alert( "MSG_090 keypress dollar shift-4" );
                                }

// case 59: alert( "MSG_191 colon keycode="+keyCode ); break;
// case 54: alert( "MSG_54 hat keycode="+keyCode ); break;
// case 52: alert( "MSG_191 dollar keycode="+keyCode ); break;
// case 107: alert( "MSG_107 plus keycode="+keyCode ); break;
// case 109: alert( "MSG_109 minus keycode="+keyCode ); break;
                        }
        	</script id=script_keypress >

        <script id="script_trigger" >
// A handler called preventDefault.
// None of the handlers called preventDefault.

                function trigger_mouse(args) {
                        alert( "BUGS_901 trigger _mouse args="+args );
                        var event = new MouseEvent('click', {
                                view: window,
                                bubbles: true,
                                cancelable: true
                                });

                        if(document.getElementById('checkbox')) {
                                var cb = document.getElementById('checkbox');
                                var cancelled = !cb.dispatchEvent(event);
                                if (cancelled) {alert("cancelled");}
                                else {alert("not cancelled");}
                                }
                        }
                </script>
	<script id="script_replace_key" type="text/javascript">
                function replace(e) {
                        if (e.keyCode==13) e.keyCode=9
                        }
                </script>

	<script id="script_geturlparameter" >
                function geturlparameter(name) {
//			alert( "BUGS_170 geturlparameter name="+name );
                        return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [null, ''])[1].replace(/\+/g, '%20')) || null;
                        }
		</script id=script_geturlparameter_end >


		</script id=script_geturlparameter_end>





	<script id=script_startup_parse>
		function startup_parse(args) {
			htmout=""; j=0; k=0;
			parsed=parse('');	
			a=""; a1=""; a2=""; cmd=""; cmd1=""; cmd2="";
			id="", file=""; dir=""; 
			if( geturlparameter('a')) { a=geturlparameter('a'); }
			if( geturlparameter('a1')) { a=geturlparameter('a1'); }
			if( geturlparameter('a2')) { a=geturlparameter('a2'); }
			if( geturlparameter('cmd')) { a=geturlparameter('cmd'); }
			if( geturlparameter('cmd1')) { a=geturlparameter('cmd1'); }
			if( geturlparameter('cmd2')) { a=geturlparameter('cmd2'); }
			if( geturlparameter('id')) { a=geturlparameter('id'); }
			if( geturlparameter('file')) { a=geturlparameter('file'); }
			if( geturlparameter('dir')) { a=geturlparameter('dir'); }

			htmout += "<hr color=goldenrod>";
//			if( a != "" ) 
			htmout += "a="+a+"<br>\n"; 
//			if( a1 != "" ) 
			htmout += "a1="+a1+"<br>\n"; 
//			if( a2 != "" ) 
			htmout += "a2="+a2+"<br>\n"; 
//			if( cmd != "" ) 
			htmout += "cmd="+cmd+"<br>\n"; 
//			if( cmd1 != "" ) 
			htmout += "cmd1="+cmd1+"<br>\n"; 
//			if( cmd2 != "" ) 
			htmout += "cmd2="+cmd2+"<br>\n"; 
//			if( id != "" ) 
			htmout += "id="+id+"<br>\n"; 
//			if( file != "" ) 
			htmout += "file="+file+"<br>\n"; 
//			if( dir != "" ) 
			htmout += "dir="+dir+"<br>\n"; 
			htmout += "<hr color=goldenrod>";

			if( document.getElementById('div_parsed')) {
//				document.getElementById('div_parsed').insertAdjacentHTML('afterend',htmout);
				document.getElementById('div_parsed').insertAdjacentHTML('afterbegin',htmout);
//				document.getElementById('div_parsed').insertAdjacentHTML('beforeend',htmout);
//				document.getElementById('div_parsed').insertAdjacentHTML('beforebegin',htmout);

				document.getElementById('div_parsed').innerHTML=htmout;
				}
//			alert( "BUGS_9020 STARTUP parsed="+parsed+" args="+args );
			return("");
			}
		</script id=script_startup_parse_end>


	<hr color=black>
	<hr color=white>
	<img id=img_parse src=/imgs/btn/koeye.png onclick="toggle('div_parse','');return false;" height=20 border=0>parse
	<div id=div_parse hidden>
		<h1>ko_parse</h1>
		<a href=./help.html?cmd target=_blank><img src=/imgs/btn/kobrd.png height=20 title=./help.html?cmd ></a>
		<a href=./help.html?cmd1 target=_blank><img src=/imgs/btn/kobrd.png height=20 title=./help.html?cmd1></a>
		<a href=./help.html?cmd2 target=_blank><img src=/imgs/btn/kobrd.png height=20 title=./help.html?cmd2></a>
		<br>
		<a href=./help.html?q=q target=_blank><img src=/imgs/btn/kobrd.png height=20 title=helhelp.html?q=q></a>
		<a href=./help.html?q=q1 target=_blank><img src=/imgs/btn/kobrd.png height=20 title=help.html?q=q1></a>
		<a href=./help.html?q=q1&a=arg&a1=arg1&a2=arg2&a3=arg3 target=_blank><img src=/imgs/btn/kobrd.png height=20 title=help.html?q=q1&a=arg></a>
		<br>
		<br>
		<a href=./help.html?cmd&a=arg&a1=arg1 target=_blank><img src=/imgs/btn/kobrd.png height=20 title=help.html?cmd&a=arg&a1=arg1></a>
		<a href=./help.html?cmd1&a=arg&a1=arg1 target=_blank><img src=/imgs/btn/kobrd.png height=20 title=help.html?cmd1&a=arg&a1=arg1></a>
		<a href=./help.html?cmd2&a=arg&a1=arg1 target=_blank><img src=/imgs/btn/kobrd.png height=20 title=help.html?cmd2&a=arg&a1=arg1></a>
		<br>
		<a href=./help.html?q=q&a=arg&a1=arg1&a2=arg2 target=_blank><img src=/imgs/btn/kobrd.png height=20 title=q=q&a=arg&a1=arg1&a2=arg2></a>
		<a href=./help.html?q=q1&arg target=_blank><img src=/imgs/btn/kobrd.png height=20 title=q=q&a=arg&a1=arg1&a2=arg2></a>
		<a href=./help.html?q=q2&arg target=_blank><img src=/imgs/btn/kobrd.png height=20 title=q=q2&arg></a>

		<hr color=goldenrod>
		<div id=div_parsed >	
			<h2>div_parsed</h2>
			</div id=div_parsed_end>	
		</div id=div_parse>
	<br>
	<hr color=black>

	<img id=img_cfg title="          cfg" src=/imgs/btn/koeye.png onclick="toggle('div_cfg',''); return false;" height=20 border=0>cfg
	<hr color=white>
	<div id=div_cfg hidden >
		<h1>div_cfg</h1>

<!--
<img id=img_head title="          head" src=/imgs/btn/brdb.png onclick="head('click'); return false;" height=20 border=0>head
<img id=img_banner title="          banner" src=/imgs/btn/brdb.png onclick="banner('click'); return false;" height=20 border=0>banner
&nbsp &nbsp &nbsp &nbsp

<img id=img_startup title="          startup" src=/imgs/btn/brdb.png onclick="startup('click'); return false;" height=20 border=0>startup
<img id=img_startup1 title="          startup1" src=/imgs/btn/brdb.png onclick="startup1('click'); return false;" height=20 border=0>startup1
<img id=img_startup2 title="          startup2" src=/imgs/btn/brdb.png onclick="startup2('click'); return false;" height=20 border=0>startup2
<img id=img_startup3 title="          startup3" src=/imgs/btn/brdb.png onclick="startup3('click'); return false;" height=20 border=0>startup3
&nbsp &nbsp &nbsp &nbsp
<img id=img_tail title="          tail" src=/imgs/btn/brdb.png onclick="tail('click'); return false;" height=20 border=0>tail
<br>
<img id=img_letter title="          letter" src=/imgs/btn/brdb.png onclick="letter('click'); return false;" height=20 border=0>letter
<img id=img_contacts title="          contacts" src=/imgs/btn/brdb.png onclick="contacts('click'); return false;" height=20 border=0>contacts
<img id=img_items title="          items" src=/imgs/btn/brdb.png onclick="items('click'); return false;" height=20 border=0>items

	-->


		<hr color=black>
		<hr color=white>
		<img id=img_font title="          font" src=/imgs/btn/koeye.png onclick="toggle('div_font',''); return false;" height=20 border=0>font
		<hr color=white>
		<div id=div_font hidden >
			<h1>div_cfg</h1>
			ABCDEFGHIJKLMNOPQRSTUVWXYZ
			<br>
			01234567890
			<br>
			abcdefghijklmnopqrstuvwxyz
			</div id=div_font_end >


		<img id=img_cfg_font title="          cfg_font" src=/imgs/btn/koeye.png onclick="toggle('div_cfg_font',''); return false;" height=20 border=0>cfg_font
		<div id=div_cfg_font>
			<h1>div_cfg_fong</h1>
	                <select onchange="set_font(this);" size="13">
                        <option>yokkmokkOT</option>
	                        <option>PAPYRUS</option>
	                        <option>Papyrus</option>
	                        <option>papyrus</option>
	                        <option>montserrat</option>
	                        <option>Georgia</option>
	                        <option>Palatino Linotype</option>
	                        <option>Book Antiqua</option>
	                        <option>Times New Roman</option>
	                        <option>Arial</option>
	                        <option>Helvetica</option>
	                        <option>Arial Black</option>
	                        <option>Impact</option>
	                        <option>Lucida Sans Unicode</option>
	                        <option>Tahoma</option>
	                        <option>Verdana</option>
	                        <option>Courier New</option>
	                        <option>Lucida Console</option>
	                        </select>
	                </div id=div_cfg_font_end>


		<hr color=white>
		<hr color=black>
			<img id=img_qsall title="          qsall" src=/imgs/btn/koeyeb.png onclick="toggle('div_qsall',''); return false;" height=15 border=0>qsall
			<br>
			<hr color=white>
			<div id=div_qsall hidden>
				<h1>div_qsall</h1>
			<img id=img_qsall_div title="          leds" src=/imgs/btn/kobrd.png onclick="qsall('div'); return false;" height=15 border=0>qsall_div_go
			<br>
			<img id=img_qsall_script title="          leds" src=/imgs/btn/kobrd.png onclick="qsall('script'); return false;" height=15 border=0>qsall_script_go
			<br>
			<img id=img_qsall_img title="          leds" src=/imgs/btn/kobrd.png onclick="qsall('img'); return false;" height=15 border=0>qsall_img_go
			<br>
				<hr color=white>
				<div id=div_qsall_out> </div id=div_qsall_out_end>
				<hr color=white>
				</div id=div_qsall_end>
					<script id=script_qsall>
		                function qsall(args) {
		                        qsmatch=args;
		                        if( qsmatch == "" ) { qsmatch="div"; }
		                        if( qsmatch == "" ) { qsmatch="img"; }
		                        if( qsmatch == "" ) { qsmatch="script"; }
//					alert( "BUGS_1010 qsall qsmatch="+qsmatch );
		                        htmout=""; j=0; k=0;
//					var arrFiltered = document.querySelectorAll('input[value=F2][type=submit][class=c1]');
//					arrFiltered.forEach(function (el) {
		                        qss=document.querySelectorAll(qsmatch);
//					qss.forEach( item => {
//						item.style = "background-color: yellow";
//						item.style = "font-size: 24";
//						}
		
//					qss.forEach(function (el) {
//						var node = document.createElement("p");
//						node.innerHTML = el.getAttribute('id');
//						node.id = el.getAttribute('id');
//						window.document.body.appendChild(node);
//						});
//

//     		                 alert( "BUGS_1011 qsall qss.length="+qss.length );
				htmout+="<div id=div_"+qsmatch+">\n";
				htmout+="       <table id=table_"+qsmatch+">\n";
				htmout+="               <tr><td>num</td><td>match</td></tr>\n";
				for( j=0; j< qss.length; j++ ) {
//                              qs=qss[j].innerHTML;
                                qs=qss[j].id;
//                              alert( "BUGS_1020 qsall j="+j+" qs="+qs );
                                htmout+="               <tr><td>"+j+"</td><td>"+qs+"</td></tr>\n";
                                if( qs == "pre_item2href" ) { htmout+=qss[j].innerHTML; }
//				if( qs == "" ) { htmout+=qss[j].innerHTML; }
                                }

                        htmout+="               </table id=table_"+qsmatch+">\n";
                        htmout+="       </div id=div_"+qsmatch+">\n";
                        if( document.getElementById("div_qsall_out")) {
                                document.getElementById("div_qsall_out").innerHTML=htmout;
                                }
			return(htmout);
			}
		</script id=script_qssall_end>





		</div id=div_cfg_end>
	
        <script id=script_set_font>
                function set_font(selectTag) {
			divid="div_font";
//			alert( "BUGS_701 set_font selectTag="+selectTag+" divid="+divid );
                        var listValue = selectTag.options[selectTag.selectedIndex].text;
//                      document.getElementById("div_fonts").style.fontFamily = listValue;
			if ( document.getElementById(divid)) {
//				alert( "BUGS_702 FOUND set_font selectTag="+selectTag+" divid="+divid );
                        	document.getElementById(divid).style.fontFamily = listValue;
				}
			else {
				alert( "BUGS_703 ___FOUND set_font selectTag="+selectTag+" divid="+divid );
				}
                        }
                </script id=script_set_font_end>


	<br>
	<hr color=white>
	<hr color=black>
	<hr color=white>

	<img id=img_kludge title="          kludge" src=/imgs/btn/koeye.png onclick="toggle('div_kludge',''); return false;" height=20 border=0>kludge
	<div id=div_kludge hidden>
		<h1>div_kludge</h1>
		</div id=div_kludge_end>
	<br>
	<hr color=black>

	<img id=img_lists title="          lists" src=/imgs/btn/koeye.png onclick="toggle('div_lists',''); return false;" height=20 border=0>lists
	<br>
	<hr color=white>
	<div id=div_lists hidden>
		<h2>div_lists</h2>


		<img id=img_lists_letter title="          lists_letter" src=/imgs/btn/koeyeb.png onclick="toggle('div_lists_letter',''); return false;" height=15 border=0>lists_letter
		<div id=div_lists_letter hidden>
			<h3>div_lists_letter</h3>
			<pre id=pre_lists_letter_end>
letter_body=`
we need time

- new grandaughter born 20230227 is in ICU with oxigen problems
- doctor requested medical tests for me
- internet cable problems too

can you reschedule/dismiss out Feb 9 summons court date?
ko2.us/law

- jtfdc_20190516_0880_policereport.pdf (summons and police report)
- jtfdc_20190516_1700_sk_protect.pdf (wifes order of protection from G. Byrd)
- videos of my police calls for help and the police tazor response


the case is about a 20190516 alleged "chestbump" assault against
Gary Byrd and a "door" assault against a "special person" (stlc police)

the allegation are unsupported by the actual
videos of my police calls for help, police tazor response and Mr Byrds pattern and practice
of threats, bullying and trespass over the last 10 years.

our situation is really all about a 10 year dispute over
big dogs, property and safety of small children

We have been targeted by
Ms Joan Donovan Family Law and her a handful of recruited client neighbors
attempts to force us from our home in a private 3 house court .

Ms Donovans legal strategy involving
false police reports, endless legal fees, 
thier 9 freeroaming big dogs and redirected traffic thru our driveway,
has disrupted our lives and business for 10 year.

all documentation, summons, police report, sk order of protection from G. Byrd,
videos, maps, photos are available somewhere online at:

ko2.us/law

Due to the scope and volume of the documentation
the site is evolving into a general
knowledgebase/case managment system portal
that could eventually include aggregated local law news.

you are invited to explore and imagine the potential of this work in progress.

If you are unable to help us,
can you provide a referal for someone to simply 
reschedule/dismiss the Feb 9 court date.

thank you again for your time and consideration

jsk
ko2.us/law
`;
				</pre id=pre_lists_letter_end>
			</div id=div_lists_letter_end>

		<img id=img_lists_contacts title="          lists_contacts" src=/imgs/btn/koeye.png onclick="toggle('div_lists_contacts',''); return false;" height=15 border=0>lists_contacts
		<div id=div_lists_contacts hidden>
			<pre id=pre_lists_contacts_end>
id|name|phn|firm|url|email|note|action
jak3|jenna|314-123-456|konet|konet.org|admin@konet.org|note|action
huschblackwell|gregoroy r smith|314-480-1720|huschblack|huschblackwell.com|gregory.smith@huschblackwell.com|note|action
smithj|melvin j smith|314-726-2141|melvinjsmith|www.melvinjsmithlaw.com|@melvinjsmithlaw.com|note|action
smithr|rudman smith|phn|rudmansmith|www.rudmansmithlaw.com|@rudmansmithlaw.com|note|action
fleddermann|fleddermann|636-947-4343|fleddermann|www.fleddermannlawoffice.com|fleddermann@.fleddermannlawoffice.com|note|action
smithmeuler|smith meuler|314-266-6515|smithmeuller|smithmeuller.com|mgoodman@smithmeuller.com|note|action
goldenhersh|ben goldenhershlaw|314-707-7789|goldenhersh|http://goldenhershlaw.com|ben@goldenhershlaw.com|personal injury|action
<br>|<br>|phn|url|email|note|action
tc|thompson coburn|314-552-6000|thompsoncoburn|thompsoncoburn.com|email|note|action
archcity|archcitydefenders|855-724-2489|archcitydefenders|www.archcitydefenders.org|mail@archcitydefenters.org|savannah downs|action
bb|brown brown|314-333-333|brown|brownlawoffice.com|@brownlawoffice.com|note|action
bc|brown crouppen|314-501-9510|brownandcrouppen|https://www.brownandcrouppen.com/st-louis/|https://www.brownandcrouppen.com/st-louis/|note|action
<br>|
<br>|<br>|phn|url|email|note|action
<br>|<hr>|phn|url|email|note|action
keyhlig|alexander keuhlig|314-726-6868|rosenblumgoldenhersh|rosenblumgoldenhersh.com|@rosenblumgoldenhersh.com|note|20160826
walters|alan p walters|314-227-1943|url|email|note|action
donovan|joann c donovan|314-921-6600|donovan|lawdonovan.com|jdonovan@lawdonovan.com|note|action
cohena|alan cohen|314-|firm|url|email|retired|action
cohenn|nathan cohen|314-|firm|url|email|note|action
luber|greg luber|636-947-1122|501law|https://501law.com|email|debtlaw|action|
elster|henry elster|314-|elster|https://elsterlaw.com|email|note|action|
diemer|dan diemer|314-863-8833|diemer|https://diemerlawfirm.com/|email|note|action|
whitner|joe whitner|314-354-8484|https://rsblawfirm.com|email|note|action|
<br>|todo|phn|url|email|note|action||
mccloskey|mccloskey|314-721-4000|mccloskey|https://www.mccloskeylaw.com/|email|note|action|
woolf|richard woolf|314-345-5030|bakersterchi|https://bakersterchi.com|rwoolf@bakersterchi.com|email|note|action|
dolley|keven dolley|314-293-4884|dolley|https://www.missouriemploymentlawattorney.com|email|note|action|
sindel|richard sindel|314-721-6040|sindel|https://sindellaw.com|email|note|action|
id|evelyn lewis|314-721-6040|evelynlewis|https://evelynlewislawllc.com|email|note|action|
				</pre id=pre_lists_contacts_end>
			</div id=div_lists_contacts_end>

		<img id=img_lists_items title="          lists_items" src=/imgs/btn/koeye.png onclick="toggle('div_lists_items',''); return false;" height=15 border=0>lists_items
		<div id=div_lists_items hidden>
			<pre id=pre_lists_items>
/imgs/btn/koeye_handhither.gif|koeye_handhither
/byrdbellvjk/imgs/01.jpg|/imgs/01
/byrdbellvjk/imgs/100.jpg|/imgs/100
/byrdbellvjk/imgs/100_jtfdcr_2013_byrd_threat.jpg|/imgs/100_jtfdcr_2013_byrd_threat
/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespas.jpg|/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespas
/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespass2.jpg|/imgs/100_jtfdcr_byrd_seigrist_2dogs_trespass2
/byrdbellvjk/imgs/100_jtfdcr_byrd_seigrist_3dogs_after_heartrequest.jpg|/imgs/100_jtfdcr_byrd_seigrist_3dogs_after_heartrequest
/byrdbellvjk/imgs/100_jtfdcr_byrds_theft_sawhorse.jpg|/imgs/100_jtfdcr_byrds_theft_sawhorse
/byrdbellvjk/imgs/100_zn_16.jpg|/imgs/100_zn_16
/byrdbellvjk/imgs/100_zn_21.jpg|/imgs/100_zn_21
/byrdbellvjk/imgs/113.jpg|/imgs/113
/byrdbellvjk/imgs/115.jpg|/imgs/115
/byrdbellvjk/imgs/116.jpg|/imgs/116
/byrdbellvjk/imgs/124.jpg|/imgs/124
/byrdbellvjk/imgs/170.jpg|/imgs/170
/byrdbellvjk/imgs/171.jpg|/imgs/171
/byrdbellvjk/imgs/202.jpg|/imgs/202
/byrdbellvjk/imgs/203.jpg|/imgs/203
/byrdbellvjk/imgs/204.jpg|/imgs/204
/byrdbellvjk/imgs/205.jpg|/imgs/205
/byrdbellvjk/imgs/206.jpg|/imgs/206
/byrdbellvjk/imgs/207.jpg|/imgs/207
/byrdbellvjk/imgs/208.jpg|/imgs/208
/byrdbellvjk/imgs/209.jpg|/imgs/209
/byrdbellvjk/imgs/210.jpg|/imgs/210
/byrdbellvjk/imgs/211.jpg|/imgs/211
/byrdbellvjk/imgs/212.jpg|/imgs/212
/byrdbellvjk/imgs/22.jpg|/imgs/22
/byrdbellvjk/imgs/222.jpg|/imgs/222
/byrdbellvjk/imgs/229.jpg|/imgs/229
/byrdbellvjk/imgs/232.jpg|/imgs/232
/byrdbellvjk/imgs/233.jpg|/imgs/233
/byrdbellvjk/imgs/26.jpg|/imgs/26
/byrdbellvjk/imgs/27.jpg|/imgs/27
/byrdbellvjk/imgs/28.jpg|/imgs/28
/byrdbellvjk/imgs/29.jpg|/imgs/29
/byrdbellvjk/imgs/30.jpg|/imgs/30
/byrdbellvjk/imgs/31.jpg|/imgs/31
/byrdbellvjk/imgs/32.jpg|/imgs/32
/byrdbellvjk/imgs/33.jpg|/imgs/33
/byrdbellvjk/imgs/34.jpg|/imgs/34
/byrdbellvjk/imgs/36.jpg|/imgs/36
/byrdbellvjk/imgs/42.jpg|/imgs/42
/byrdbellvjk/imgs/43.jpg|/imgs/43
/byrdbellvjk/imgs/44.jpg|/imgs/44
/byrdbellvjk/imgs/46.jpg|/imgs/46
/byrdbellvjk/imgs/550_head_jtfdcr_police_neiborhood.jpg|/imgs/550_head_jtfdcr_police_neiborhood
/byrdbellvjk/imgs/63.jpg|/imgs/63
/byrdbellvjk/imgs/66.jpg|/imgs/66
/byrdbellvjk/imgs/71.jpg|/imgs/71
/byrdbellvjk/imgs/900_136.jpg|/imgs/900_136
/byrdbellvjk/imgs/900_68.jpg|/imgs/900_68
/byrdbellvjk/imgs/900_byrdbell_20200916.jpg|/imgs/900_byrdbell_20200916
/byrdbellvjk/imgs/900_byrdbell_20200916_1.jpg|/imgs/900_byrdbell_20200916_1
/byrdbellvjk/imgs/900_emh_20160911_056.jpg|/imgs/900_emh_20160911_056
/byrdbellvjk/imgs/900_emh_20160911_058.jpg|/imgs/900_emh_20160911_058
/byrdbellvjk/imgs/900_emh_20160911_059.jpg|/imgs/900_emh_20160911_059
/byrdbellvjk/imgs/900_IMG_0574.jpg|/imgs/900_IMG_0574
/byrdbellvjk/imgs/900_IMG_0577.jpg|/imgs/900_IMG_0577
/byrdbellvjk/imgs/900_jtfdc_private_court_since_1979_viewin.jpg|/imgs/900_jtfdc_private_court_since_1979_viewin
/byrdbellvjk/imgs/900_jtfinc.jpg|/imgs/900_jtfinc
/byrdbellvjk/imgs/900_snap_20170123_187559_jtfdc_kids_cycle_laps.jpg|/imgs/900_snap_20170123_187559_jtfdc_kids_cycle_laps
/byrdbellvjk/imgs/900_snap_20170123_187576_jtf32_preservation_police_yellowsticker_frenzy.jpg|/imgs/900_snap_20170123_187576_jtf32_preservation_police_yellowsticker_frenzy
/byrdbellvjk/imgs/900_snap_20170123_197616_law_donovan_joann1.jpg|/imgs/900_snap_20170123_197616_law_donovan_joann1
/byrdbellvjk/imgs/900_stlcounty_kassil_bench_probaton_20170918-1818_001.jpg|/imgs/900_stlcounty_kassil_bench_probaton_20170918-1818_001
/byrdbellvjk/imgs/900_topos.jpg|/imgs/900_topos
/byrdbellvjk/imgs/900_topos_20160505_031.jpg|/imgs/900_topos_20160505_031
/byrdbellvjk/imgs/900_zn_4.jpg|/imgs/900_zn_4
/byrdbellvjk/imgs/jtfdc_sawhorse_2020.jpg|/imgs/jtfdc_sawhorse_2020
/byrdbellvjk/imgs/snap_202209156950.png|/imgs/snap_202209156950
/byrdbellvjk/imgs/snap_202209156951.png|/imgs/snap_202209156951
/byrdbellvjk/imgs/snap_202209156952.png|/imgs/snap_202209156952
/byrdbellvjk/imgs/snap_202209156953.png|/imgs/snap_202209156953
/byrdbellvjk/imgs/snap_202209156954.png|/imgs/snap_202209156954
/byrdbellvjk/imgs/snap_202209156955.png|/imgs/snap_202209156955
/byrdbellvjk/imgs/snap_202209156956.png|/imgs/snap_202209156956
/byrdbellvjk/imgs/snap_202209156957.png|/imgs/snap_202209156957
/byrdbellvjk/imgs/snap_202209156958.png|/imgs/snap_202209156958
/byrdbellvjk/imgs/snap_202209156959.png|/imgs/snap_202209156959
/byrdbellvjk/imgs/snap_202209156960.png|/imgs/snap_202209156960
/byrdbellvjk/imgs/snap_202209156961.png|/imgs/snap_202209156961
/byrdbellvjk/imgs/snap_202209156962.png|/imgs/snap_202209156962
/byrdbellvjk/imgs/snap_202209156963.png|/imgs/snap_202209156963
/byrdbellvjk/imgs/snap_202209156964.png|/imgs/snap_202209156964
/byrdbellvjk/imgs/snap_202209156965.png|/imgs/snap_202209156965
/byrdbellvjk/imgs/snap_202209156966.png|/imgs/snap_202209156966
/byrdbellvjk/imgs/snap_202209156967.png|/imgs/snap_202209156967
/byrdbellvjk/imgs/snap_202209156968.png|/imgs/snap_202209156968
/byrdbellvjk/imgs/snap_202209156969.png|/imgs/snap_202209156969
				</pre id=pre_lists_items_end>
			</div id=div_lists_items_end>

		<div id=div_lists_pre hidden>
			<pre id=pre_lists_pre>
pre_lists_pre_line1
pre_lists_pre_line2
pre_lists_pre_line3
				</pre id=pre_lists_pre_end>
			</div id=div_lists_pre_end>



		<img id=img_lists_postturtles title="          lists_postturtles" src=/imgs/btn/koeye.png onclick="toggle('div_lists_postturtles',''); return false;" height=15 border=0>lists_postturtles
		<div id=div_lists_postturtles hidden>
			<pre id=pre_lists_postturtles>
/imgs/postturtle_moneytrap/postturtl10.jpg
/imgs/postturtle_moneytrap/postturtl11.jpg
/imgs/postturtle_moneytrap/postturtl12.jpg
/imgs/postturtle_moneytrap/postturtl13.jpg
/imgs/postturtle_moneytrap/postturtl14.jpg
/imgs/postturtle_moneytrap/postturtl15.png
/imgs/postturtle_moneytrap/postturtl16.jpg
/imgs/postturtle_moneytrap/postturtl17.gif
/imgs/postturtle_moneytrap/postturtl18.jpg
/imgs/postturtle_moneytrap/postturtl2.jpg
/imgs/postturtle_moneytrap/postturtl20.jpg
/imgs/postturtle_moneytrap/postturtl21.jpg
/imgs/postturtle_moneytrap/postturtl22.jpg
/imgs/postturtle_moneytrap/postturtl23.jpg
/imgs/postturtle_moneytrap/postturtl24.jpg
/imgs/postturtle_moneytrap/postturtl25.png
/imgs/postturtle_moneytrap/postturtl26.gif
/imgs/postturtle_moneytrap/postturtl27.jpg
/imgs/postturtle_moneytrap/postturtl3.jpg
/imgs/postturtle_moneytrap/postturtl31.png
/imgs/postturtle_moneytrap/postturtl4.jpg
/imgs/postturtle_moneytrap/postturtl5.jpg
/imgs/postturtle_moneytrap/postturtl6.jpg
/imgs/postturtle_moneytrap/postturtl7.jpg
/imgs/postturtle_moneytrap/postturtl8.jpg
/imgs/postturtle_moneytrap/postturtl9.jpg
/imgs/postturtle_moneytrap/postturtle_caption.jpg
/imgs/postturtle_moneytrap/rose.jpg
				</pre id=pre_lists_postturtles_pre_end>
			</div id=div_lists_postturtles_end>

		<img id=img_lists_monkeytraps title="          lists_monkeytraps" src=/imgs/btn/koeye.png onclick="toggle('div_lists_monkeytraps',''); return false;" height=15 border=0>lists_monkeytraps
		<div id=div_lists_monkeytraps hidden>
			<pre id=pre_lists_monkeytraps>
/fb/bh/pages/1.jpg|/fb/bh
/fb/birthday/pages/1.jpg|/fb/birthday
/fb/bookmarkusb/pages/1.jpg|/ffb/bookmarkusb
/fb/books/pages/1.jpg|/fb/books
/fb/byrdpucker/pages/1.jpg|/fb/byrdpucker
/fb/cards/pages/1.jpg|/fb/cards
/fb/che/pages/1.jpg|/fb/che
/fb/comics/pages/1.jpg|/fb/comics
/fb/cpa/pages/1.jpg|/fb/cpa
/fb/donutvanlaw/pages/1.jpg|/fb/donutvanlaw
/fb/edu/pages/1.jpg|/fb/edu
/fb/focus/pages/1.jpg|/fb/focus
/fb/gifs/pages/1.jpg|/fb/gifs
/fb/gnome/pages/1.jpg|/fb/gnome
/fb/go/pages/1.jpg|/fb/go
/fb/gofunwii/pages/1.jpg|//fb/gofunwii
/fb/gov/pages/1.jpg|//fb/gov
/fb/heart/pages/1.jpg|//fb/heart
/fb/hl/pages/1.jpg|//fb/hl
/fb/hoa/pages/1.jpg|//fb/hoa
/fb/hydro/pages/1.jpg|//fb/hydro
/fb/iperms/pages/1.jpg|/fb/iperms
//fb/jak1/pages/1.jpg|/fb/jak1
/fb/jak2/pages/1.jpg|/fb/jak2
/fb/jak3/pages/1.jpg|/fb/jak3
/fb/jhf/pages/1.jpg|/fb/jhf
/fb/jk/pages/1.jpg|/fb/jk
/fb/jkwii/pages/1.jpg|/fb/jkwii
/fb/jmh/pages/1.jpg|/fb/jmh
/fb/jtfdc/pages/1.jpg|/fb/jtfdc
/fb/jtfdcr/pages/1.jpg|/fb/jtfdcr
/imgs/btn/btn_fb.png|/fb/jtfdcr
/fb/jtfinc/pages/1.jpg|/fb/jtfinc
/fb/ka/pages/1.jpg|/fb/ka
/fb/kids/pages/1.jpg|/fb/kids
/fb/kitiworks/pages/1.jpg|/fb/kitiworks
/fb/konabus/pages/1.jpg|/fb/konabus
/fb/konet/pages/1.jpg|/fb/konet
/fb/kou/pages/1.jpg|/fb/kou
/fb/kowebb/pages/1.jpg|/fb/kowebb
/fb/kt/pages/1.jpg|/fb/kt
/fb/law/pages/1.jpg|/fb/law
/fb/mars/pages/1.jpg|/fb/mars
/fb/mars_2022/pages/1.jpg|/fb/mars_2022
/fb/med/pages/1.jpg|/fb/med
/fb/myco/pages/1.jpg|/fb/myco
/fb/netpix/pages/1.jpg|/fb/netpix
/fb/neuz/pages/1.jpg|/fb/neuz
/fb/miniraptors/pages/1.jpg|/fb/miniraptors
/fb/nwm/pages/1.jpg|/fb/nwm
/fb/operation/pages/1.jpg|/fb/operation
/fb/pastryroad/pages/1.jpg|/fb/pastryroad
/fb/royal1/pages/1.jpg|/fb/royal1
/fb/sk/pages/1.jpg|/fb/sk
/fb/skwii/pages/1.jpg|/fb/skwii
/fb/smileworthy/pages/1.jpg|/fb/smileworthy
/fb/soul/pages/1.jpg|/fb/soul
/fb/space/pages/1.jpg|/fb/space
/fb/ssstl/pages/1.jpg|/fb/ssstl
/fb/stlc/pages/1.jpg|/fb/stlc
/fb/us/pages/1.jpg|/fb/us
/fb/weds/pages/1.jpg|/fb/weds
/fb/who2jail/pages/1.jpg|/fb/who2jail
/fb/zc/pages/1.jpg|/fb/zc
/fb/zines/pages/1.jpg|/fb/zines
/imgs/postturtle_moneytrap/monkeytrap1.png
/imgs/postturtle_moneytrap/monkeytrap2.jpg
/imgs/postturtle_moneytrap/monkeytrap3.jpg
/imgs/postturtle_moneytrap/monkeytrap10.jpg
/imgs/postturtle_moneytrap/monkeytrap11.jpg
/imgs/postturtle_moneytrap/monkeytrap12.jpg
/imgs/postturtle_moneytrap/monkeytrap13.jpg
/imgs/postturtle_moneytrap/monkeytrap14.jpg
/imgs/postturtle_moneytrap/monkeytrap17.jpg
/imgs/postturtle_moneytrap/monkeytrap18.jpg
/imgs/postturtle_moneytrap/monkeytrap20.jpg
/imgs/postturtle_moneytrap/monkeytrap21.png
/imgs/postturtle_moneytrap/monkeytrap22.png
/imgs/postturtle_moneytrap/monkeytrap24.jpg
/imgs/postturtle_moneytrap/monkeytrap28.jpg
/imgs/postturtle_moneytrap/monkeytrap29.jpg
/imgs/postturtle_moneytrap/monkeytrap30.jpg
/imgs/postturtle_moneytrap/monkeytrap31.jpg
/imgs/postturtle_moneytrap/monkeytrap34.png
/imgs/postturtle_moneytrap/monkeytrap36.jpg
/imgs/postturtle_moneytrap/monkeytrap37.jpg
/imgs/postturtle_moneytrap/monkeytrap37.png
/imgs/postturtle_moneytrap/monkeytrap4.png
/imgs/postturtle_moneytrap/monkeytrap5.jpg
/imgs/postturtle_moneytrap/monkeytrap54.jpg
/imgs/postturtle_moneytrap/monkeytrap6.jpg
/imgs/postturtle_moneytrap/monkeytrap7.png
/imgs/postturtle_moneytrap/monkeytrap8.jpg
/imgs/postturtle_moneytrap/monkeytrap9.jpg
				</pre id=pre_lists_monkeytraps_end>
			</div id=div_lists_monkeytraps_end>


		<img id=img_lists_floods title="          lists_floods" src=/imgs/btn/koeye.png onclick="toggle('div_lists_floods',''); return false;" height=15 border=0>lists_floods
		<div id=div_lists_floods hidden>
			<pre id=pre_lists_floods>
/fb/bh/pages/1.jpg|/pdf/bh.pdf
/fb/birthday/pages/1.jpg|/pdf/birthday.pdf
/fb/bookmarkusb/pages/1.jpg|/pdf/bookmarkusb.pdf
/fb/books/pages/1.jpg|/pdf/books.pdf
/fb/byrdpucker/pages/1.jpg|/pdf/byrdpucker.pdf
/fb/cards/pages/1.jpg|/pdf/cards.pdf
/fb/che/pages/1.jpg|/pdf/che.pdf
/fb/comics/pages/1.jpg|/pdf/comics.pdf
/fb/cpa/pages/1.jpg|/pdf/cpa.pdf
/fb/donutvanlaw/pages/1.jpg|/pdf/donutvanlaw.pdf
/fb/edu/pages/1.jpg|/pdf/edu.pdf
/fb/focus/pages/1.jpg|/pdf/focus.pdf
/fb/gifs/pages/1.jpg|/pdf/gifs.pdf
/fb/gnome/pages/1.jpg|/pdf/gnome.pdf
/fb/go/pages/1.jpg|/pdf/go.pdf
/fb/gofunwii/pages/1.jpg|//pdf/gofunwii.pdf
/fb/gov/pages/1.jpg|//pdf/gov.pdf
/fb/heart/pages/1.jpg|//pdf/heart.pdf
/fb/hl/pages/1.jpg|//pdf/hl.pdf
/fb/hoa/pages/1.jpg|//pdf/hoa.pdf
/fb/hydro/pages/1.jpg|//pdf/hydro.pdf
/fb/iperms/pages/1.jpg|/pdf/iperms.pdf
//fb/jak1/pages/1.jpg|/pdf/jak1.pdf
/fb/jak2/pages/1.jpg|/pdf/jak2.pdf
/fb/jak3/pages/1.jpg|/pdf/jak3.pdf
/fb/jhf/pages/1.jpg|/pdf/jhf.pdf
/fb/jk/pages/1.jpg|/pdf/jk.pdf
/fb/jkwii/pages/1.jpg|/pdf/jkwii.pdf
/fb/jmh/pages/1.jpg|/pdf/jmh.pdf
/fb/jtfdc/pages/1.jpg|/pdf/jtfdc.pdf
/fb/jtfdcr/pages/1.jpg|/pdf/jtfdcr.pdf
/imgs/btn/btn_pdf1.png|/pdf/jtfdcr.pdf.pdf
/fb/jtfinc/pages/1.jpg|/pdf/jtfinc.pdf
/fb/ka/pages/1.jpg|/pdf/ka.pdf
/fb/kids/pages/1.jpg|/pdf/kids.pdf
/fb/kitiworks/pages/1.jpg|/pdf/kitiworks.pdf
/fb/konabus/pages/1.jpg|/pdf/konabus.pdf
/fb/konet/pages/1.jpg|/pdf/konet.pdf
/fb/kou/pages/1.jpg|/pdf/kou.pdf
/fb/kowebb/pages/1.jpg|/pdf/kowebb.pdf
/fb/kt/pages/1.jpg|/pdf/kt.pdf
/fb/law/pages/1.jpg|/pdf/law.pdf
/fb/mars/pages/1.jpg|/pdf/mars.pdf
/fb/mars_2022/pages/1.jpg|/pdf/mars_2022.pdf
/fb/med/pages/1.jpg|/pdf/med.pdf
/fb/myco/pages/1.jpg|/pdf/myco.pdf
/fb/netpix/pages/1.jpg|/fb/netpix.pdf
/fb/neuz/pages/1.jpg|/fb/neuz.pdf
/fb/miniraptors/pages/1.jpg|/fb/miniraptors.pdf
/fb/nwm/pages/1.jpg|/fb/nwm.pdf
/fb/operation/pages/1.jpg|/fb/operation.pdf
/fb/pastryroad/pages/1.jpg|/fb/pastryroad.pdf
/fb/royal1/pages/1.jpg|/fb/royal1.pdf
/fb/sk/pages/1.jpg|/fb/sk.pdf
/fb/skwii/pages/1.jpg|/fb/skwii.pdf
/fb/smileworthy/pages/1.jpg|/fb/smileworthy.pdf
/fb/soul/pages/1.jpg|/fb/soul.pdf
/fb/space/pages/1.jpg|/fb/space.pdf
/fb/ssstl/pages/1.jpg|/fb/ssstl.pdf
/fb/stlc/pages/1.jpg|/fb/stlc.pdf
/fb/us/pages/1.jpg|/fb/us.pdf
/fb/weds/pages/1.jpg|/fb/weds.pdf
/fb/who2jail/pages/1.jpg|/fb/who2jail.pdf
/fb/zc/pages/1.jpg|/fb/zc.pdf
/fb/zines/pages/1.jpg|/fb/zines.pdf
/fb/zpid/pages/1.jpg|/fb/zpid.pdf
/imgs/postturtle_moneytrap//floop_rooftop.jpg
/imgs/postturtle_moneytrap//floop_rooftop1.jpg
/imgs/postturtle_moneytrap//floop_rooftop11.jpg
/imgs/postturtle_moneytrap//floop_rooftop12.jpg
/imgs/postturtle_moneytrap//floop_rooftop13.jpg
/imgs/postturtle_moneytrap//floop_rooftop14.jpg
/imgs/postturtle_moneytrap//floop_rooftop15.jpg
/imgs/postturtle_moneytrap//floop_rooftop2.jpg
/imgs/postturtle_moneytrap//floop_rooftop20.jpg
/imgs/postturtle_moneytrap//floop_rooftop21.jpg
/imgs/postturtle_moneytrap//floop_rooftop3.jpg
/imgs/postturtle_moneytrap//floop_rooftop5.jpg
/imgs/postturtle_moneytrap//floop_rooftop6.jpg
/imgs/postturtle_moneytrap//floop_rooftop7.jpg
/imgs/postturtle_moneytrap//floop_rooftop8.jpg
/imgs/postturtle_moneytrap//floop_rooftop9.jpg
				</pre id=pre_lists_floods_end>
			</div id=div_lists_floods_end>

		<img id=img_lists_coffee title="          lists_coffee" src=/imgs/btn/koeye.png onclick="toggle('div_lists_coffee',''); return false;" height=15 border=0>lists_coffee
		<div id=div_lists_coffee hidden>
			<pre id=pre_lists_coffee>
/imgs/coffee/jpeg/391824b4b09012ae.jpeg
/imgs/coffee/jpeg/9580e63428b6f77a.jpeg
/imgs/coffee/jpeg/pexels-photo-10003711.jpeg
/imgs/coffee/jpeg/pexels-photo-11071354.jpeg
/imgs/coffee/jpeg/pexels-photo-11110090.jpeg
/imgs/coffee/jpeg/pexels-photo-11175664.jpeg
/imgs/coffee/jpeg/pexels-photo-11175665.jpeg
/imgs/coffee/jpeg/pexels-photo-11175667.jpeg
/imgs/coffee/jpeg/pexels-photo-11278370.jpeg
/imgs/coffee/jpeg/pexels-photo-11417203.jpeg
/imgs/coffee/jpeg/pexels-photo-11556062.jpeg
/imgs/coffee/jpeg/pexels-photo-1239399.jpeg
/imgs/coffee/jpeg/pexels-photo-1252194.jpeg
/imgs/coffee/jpeg/pexels-photo-1422286.jpeg
/imgs/coffee/jpeg/pexels-photo-1443384.jpeg
/imgs/coffee/jpeg/pexels-photo-1526049.jpeg
/imgs/coffee/jpeg/pexels-photo-1541216.jpeg
/imgs/coffee/jpeg/pexels-photo-1550648.jpeg
/imgs/coffee/jpeg/pexels-photo-1627933.jpeg
/imgs/coffee/jpeg/pexels-photo-1827548.jpeg
/imgs/coffee/jpeg/pexels-photo-2074130.jpeg
/imgs/coffee/jpeg/pexels-photo-2092557.jpeg
/imgs/coffee/jpeg/pexels-photo-2102818.jpeg
/imgs/coffee/jpeg/pexels-photo-2228889.jpeg
/imgs/coffee/jpeg/pexels-photo-2318005.jpeg
/imgs/coffee/jpeg/pexels-photo-2386687.jpeg
/imgs/coffee/jpeg/pexels-photo-2659387.jpeg
/imgs/coffee/jpeg/pexels-photo-2662180.jpeg
/imgs/coffee/jpeg/pexels-photo-2678301.jpeg
/imgs/coffee/jpeg/pexels-photo-2878709.jpeg
/imgs/coffee/jpeg/pexels-photo-2878710.jpeg
/imgs/coffee/jpeg/pexels-photo-2910874.jpeg
/imgs/coffee/jpeg/pexels-photo-3178767.jpeg
/imgs/coffee/jpeg/pexels-photo-3278765.jpeg
/imgs/coffee/jpeg/pexels-photo-3309949.jpeg
/imgs/coffee/jpeg/pexels-photo-3389608.jpeg
/imgs/coffee/jpeg/pexels-photo-3472693.jpeg
/imgs/coffee/jpeg/pexels-photo-3473488.jpeg
/imgs/coffee/jpeg/pexels-photo-3563636.jpeg
/imgs/coffee/jpeg/pexels-photo-359991.jpeg
/imgs/coffee/jpeg/pexels-photo-3617078.jpeg
/imgs/coffee/jpeg/pexels-photo-3640930.jpeg
/imgs/coffee/jpeg/pexels-photo-3695401.jpeg
/imgs/coffee/jpeg/pexels-photo-3704614.jpeg
/imgs/coffee/jpeg/pexels-photo-3749174.jpeg
/imgs/coffee/jpeg/pexels-photo-3820688.jpeg
/imgs/coffee/jpeg/pexels-photo-3944418.jpeg
/imgs/coffee/jpeg/pexels-photo-3944425.jpeg
/imgs/coffee/jpeg/pexels-photo-3944426.jpeg
/imgs/coffee/jpeg/pexels-photo-4066041.jpeg
/imgs/coffee/jpeg/pexels-photo-414551.jpeg
/imgs/coffee/jpeg/pexels-photo-414565.jpeg
/imgs/coffee/jpeg/pexels-photo-4257118.jpeg
/imgs/coffee/jpeg/pexels-photo-5357428.jpeg
/imgs/coffee/jpeg/pexels-photo-539432.jpeg
/imgs/coffee/jpeg/pexels-photo-5554704.jpeg
/imgs/coffee/jpeg/pexels-photo-585752.jpeg
/imgs/coffee/jpeg/pexels-photo-6682875.jpeg
/imgs/coffee/jpeg/pexels-photo-6763897.jpeg
/imgs/coffee/jpeg/pexels-photo-6763900.jpeg
/imgs/coffee/jpeg/pexels-photo-6968356.jpeg
/imgs/coffee/jpeg/pexels-photo-7304961.jpeg
/imgs/coffee/jpeg/pexels-photo-754958.jpeg
/imgs/coffee/jpeg/pexels-photo-850384.jpeg
/imgs/coffee/jpeg/pexels-photo-8554317.jpeg
/imgs/coffee/jpeg/pexels-photo-9430774.jpeg
/imgs/coffee/jpeg/pexels-photo-9430779.jpeg
/imgs/coffee/jpeg/pexels-photo-9532643.jpeg
/imgs/coffee/jpeg/pexels-photo-9532644.jpeg
/imgs/coffee/jpeg/pexels-photo-9944529.jpeg
/imgs/coffee/jpg/coffee-cup-802757__340.jpg
/imgs/coffee/jpg/istockphoto-1022148452-612x612.jpg
/imgs/coffee/jpg/istockphoto-1045444176-612x612.jpg
/imgs/coffee/jpg/istockphoto-1126871442-612x612.jpg
/imgs/coffee/jpg/istockphoto-1148733827-612x612.jpg
/imgs/coffee/jpg/istockphoto-1150907214-612x612.jpg
/imgs/coffee/jpg/istockphoto-1163941624-612x612.jpg
/imgs/coffee/jpg/istockphoto-1163942162-612x612.jpg
/imgs/coffee/jpg/istockphoto-1169132256-612x612.jpg
/imgs/coffee/jpg/istockphoto-1169132284-612x612.jpg
/imgs/coffee/jpg/istockphoto-1217152011-612x612.jpg
/imgs/coffee/jpg/istockphoto-1227354066-612x612.jpg
/imgs/coffee/jpg/istockphoto-1256489412-612x612.jpg
/imgs/coffee/jpg/istockphoto-1262293120-612x612.jpg
/imgs/coffee/jpg/istockphoto-1277354169-612x612.jpg
/imgs/coffee/jpg/istockphoto-1280138901-612x612.jpg
/imgs/coffee/jpg/istockphoto-1280953401-612x612.jpg
/imgs/coffee/jpg/istockphoto-1286808993-612x612.jpg
/imgs/coffee/jpg/istockphoto-1297456339-612x612.jpg
/imgs/coffee/jpg/istockphoto-1362522234-612x612.jpg
/imgs/coffee/jpg/istockphoto-144287394-612x612.jpg
/imgs/coffee/jpg/istockphoto-454323299-612x612.jpg
/imgs/coffee/jpg/istockphoto-472338869-612x612.jpg
/imgs/coffee/jpg/istockphoto-664587996-612x612.jpg
/imgs/coffee/jpg/istockphoto-674493404-612x612.jpg
/imgs/coffee/jpg/istockphoto-681239620-612x612.jpg
/imgs/coffee/jpg/istockphoto-685135578-612x612.jpg
/imgs/coffee/jpg/istockphoto-694274558-612x612.jpg
/imgs/coffee/jpg/istockphoto-821282266-612x612.jpg
/imgs/coffee/jpg/istockphoto-825154518-612x612.jpg
/imgs/coffee/jpg/istockphoto-840443226-612x612.jpg
/imgs/coffee/jpg/istockphoto-843178108-612x612.jpg
/imgs/coffee/jpg/istockphoto-910619624-612x612.jpg
/imgs/coffee/jpg/istockphoto-923127406-612x612.jpg
/imgs/coffee/jpg/istockphoto-928414210-612x612.jpg
/imgs/coffee/png/coffee-tea-4849436_960_720.png
/imgs/coffee/png/cup-of-coffee-5017443__340.png
/imgs/coffee/webp/black-2024946__340.webp
/imgs/coffee/webp/blue-coffee-cups-4221856__340.webp
/imgs/coffee/webp/coffee-1390800__340.webp
/imgs/coffee/webp/coffee-155311__340.webp
/imgs/coffee/webp/cup-153171__340.webp
/imgs/coffee/webp/depositphotos_173485988-free-stock-photo-woman-drinking-coffee-on-windowsill.webp
/imgs/coffee/webp/depositphotos_19027659-stock-photo-colorful-coffee-cups.webp
/imgs/coffee/webp/depositphotos_254821360-stock-photo-top-view-coffee-cup-jug.webp
/imgs/coffee/webp/depositphotos_79241836-stock-photo-woman-hands-holding-mug-of.webp
/imgs/coffee/webp/pexels-photo-10080409.webp
/imgs/coffee/webp/pexels-photo-1011292.webp
/imgs/coffee/webp/pexels-photo-10466456.webp
/imgs/coffee/webp/pexels-photo-1092392.webp
/imgs/coffee/webp/pexels-photo-1177510.webp
/imgs/coffee/webp/pexels-photo-1235706.webp
/imgs/coffee/webp/pexels-photo-1239422.webp
/imgs/coffee/webp/pexels-photo-1239470.webp
/imgs/coffee/webp/pexels-photo-12733904.webp
/imgs/coffee/webp/pexels-photo-1309778.webp
/imgs/coffee/webp/pexels-photo-131893.webp
/imgs/coffee/webp/pexels-photo-1656025.webp
/imgs/coffee/webp/pexels-photo-1684149.webp
/imgs/coffee/webp/pexels-photo-1749303.webp
/imgs/coffee/webp/pexels-photo-1752806.webp
/imgs/coffee/webp/pexels-photo-1793042.webp
/imgs/coffee/webp/pexels-photo-1809127.webp
/imgs/coffee/webp/pexels-photo-1967535.webp
/imgs/coffee/webp/pexels-photo-1974875.webp
/imgs/coffee/webp/pexels-photo-2008140.webp
/imgs/coffee/webp/pexels-photo-2013701.webp
/imgs/coffee/webp/pexels-photo-2067432.webp
/imgs/coffee/webp/pexels-photo-2067628.webp
/imgs/coffee/webp/pexels-photo-2092551.webp
/imgs/coffee/webp/pexels-photo-2092558.webp
/imgs/coffee/webp/pexels-photo-2128023.webp
/imgs/coffee/webp/pexels-photo-2249342.webp
/imgs/coffee/webp/pexels-photo-2255355.webp
/imgs/coffee/webp/pexels-photo-2299028.webp
/imgs/coffee/webp/pexels-photo-2312369.webp
/imgs/coffee/webp/pexels-photo-2316543.webp
/imgs/coffee/webp/pexels-photo-236699.webp
/imgs/coffee/webp/pexels-photo-2456429.webp
/imgs/coffee/webp/pexels-photo-2478349.webp
/imgs/coffee/webp/pexels-photo-2616175.webp
/imgs/coffee/webp/pexels-photo-266755.webp
/imgs/coffee/webp/pexels-photo-2672859.webp
/imgs/coffee/webp/pexels-photo-302888.webp
/imgs/coffee/webp/pexels-photo-312418.webp
/imgs/coffee/webp/pexels-photo-3124422.webp
/imgs/coffee/webp/pexels-photo-3151775.webp
/imgs/coffee/webp/pexels-photo-3571947.webp
/imgs/coffee/webp/pexels-photo-3680186.webp
/imgs/coffee/webp/pexels-photo-3709090.webp
/imgs/coffee/webp/pexels-photo-3709094.webp
/imgs/coffee/webp/pexels-photo-3714960.webp
/imgs/coffee/webp/pexels-photo-4012966.webp
/imgs/coffee/webp/pexels-photo-4046148.webp
/imgs/coffee/webp/pexels-photo-4065616.webp
/imgs/coffee/webp/pexels-photo-4065905.webp
/imgs/coffee/webp/pexels-photo-4065910.webp
/imgs/coffee/webp/pexels-photo-4079289.webp
/imgs/coffee/webp/pexels-photo-414630.webp
/imgs/coffee/webp/pexels-photo-4264049.webp
/imgs/coffee/webp/pexels-photo-5357424.webp
/imgs/coffee/webp/pexels-photo-593334.webp
/imgs/coffee/webp/pexels-photo-6193131.webp
/imgs/coffee/webp/pexels-photo-6193649.webp
/imgs/coffee/webp/pexels-photo-6312156.webp
/imgs/coffee/webp/pexels-photo-6894105.webp
/imgs/coffee/webp/pexels-photo-7660561.webp
/imgs/coffee/webp/pexels-photo-830912.webp
/imgs/coffee/webp/pexels-photo-851555.webp
/imgs/coffee/webp/pexels-photo-885021.webp
/imgs/coffee/webp/pexels-photo-894608.webp
/imgs/coffee/webp/pexels-photo-923368.webp
/imgs/coffee/webp/pexels-photo-9478157.webp
/imgs/coffee/webp/pexels-photo-999305.webp
				</pre id=pre_lists_coffee_end>
			</div id=div_lists_coffee_end>




		<img id=img_lists_json title="          lists_json" src=/imgs/btn/koeye.png onclick="toggle('div_lists_json',''); return false;" height=15 border=0>lists_json
		<div id=div_lists_json hidden>
			<pre id=pre_lists_json_end>
{ "timeline": {
"headline":"jtfdc_20210917_1627_mail_speedy_notime2talk.mp4",
"type":"default",
"text":"<a href='/fb/usps/mp4/jtfdc_20210917_1627_mail_speedy_notime2talk.mp4' target=_blank><img src='/imgs/btn/btn_mp4.png' height=200></a>",
"startDate":"1900,1,1",
"endDate":"1900,1,1",
"date": [ 
	{
	"startDate":"1900,1,1",
	"endDate":"1900,1,1",
	"headline":"jtfdc_20210917_1609_jtf30_bigups_stalkaroundout.mp4",
	"text":"<a href='/fb/usps/mp4/jtfdc_20210917_1609_jtf30_bigups_stalkaroundout.mp4' target=_blank><img src='/imgs/btn/btn_mp4.png' height=200></a>",
	"asset": {
		"media":"/fb/usps/mp4/jtfdc_20210917_1609_jtf30_bigups_stalkaroundout.mp4",
		"credit":" credit 4",
		"caption":"caption"
		} },
	{
	"startDate":"1900,1,1",
	"endDate":"1900,1,1",
	"headline":"jtfdc_20210917_1607_jtf30_bigups.mp4",
	"text":"<a href='/fb/usps/mp4/jtfdc_20210917_1607_jtf30_bigups.mp4' target=_blank><img src='/imgs/btn/btn_mp4.png' height=200></a>",
	"asset": {
		"media":"/fb/usps/mp4/jtfdc_20210917_1607_jtf30_bigups.mp4",
		"credit":" credit 4",
		"caption":"caption"
		} },
	{
	"startDate":"1900,1,1",
	"endDate":"1900,1,1",
	"headline":"jtfdc_20210917_1606_jtf31_bigups.mp4",
	"text":"<a href='/fb/usps/mp4/jtfdc_20210917_1606_jtf31_bigups.mp4' target=_blank><img src='/imgs/btn/btn_mp4.png' height=200></a>",
	"asset": {
		"media":"/fb/usps/mp4/jtfdc_20210917_1606_jtf31_bigups.mp4",
		"credit":" credit 4",
		"caption":"caption"
		} },
	{
	"startDate":"1900,1,1",
	"endDate":"1900,1,1",
	"headline":"jtfdc_20210918_1508_mail_driveway_buckerplowing.mp4",
	"text":"<a href='/fb/usps/mp4/jtfdc_20210918_1508_mail_driveway_buckerplowing.mp4' target=_blank><img src='/imgs/btn/btn_mp4.png' height=200></a>",
	"asset": {
		"media":"/fb/usps/mp4/jtfdc_20210918_1508_mail_driveway_buckerplowing.mp4",
		"credit":" credit 4",
		"caption":"caption"
		} },
	{
	"startDate":"1900,1,1",
	"endDate":"1900,1,1",
	"headline":"jtfdc_20210918_1413_jtf30_bigamazon_outnice.mp4",
	"text":"<a href='/fb/usps/mp4/jtfdc_20210918_1413_jtf30_bigamazon_outnice.mp4' target=_blank><img src='/imgs/btn/btn_mp4.png' height=200></a>",
	"asset": {
		"media":"/fb/usps/mp4/jtfdc_20210918_1413_jtf30_bigamazon_outnice.mp4",
		"credit":" credit 4",
		"caption":"caption"
		} },
	{
	"startDate":"1900,1,1",
	"endDate":"1900,1,1",
	"headline":"jtfdc_20210918_1413_jtf30_bigamazon_outnice.mp4",
	"text":"<a href='/fb/usps/mp4/jtfdc_20210918_1413_jtf30_bigamazon_outnice.mp4' target=_blank><img src='/imgs/btn/btn_mp4.png' height=200></a>",
	"asset": {
		"media":"/fb/usps/mp4/jtfdc_20210918_1413_jtf30_bigamazon_outnice.mp4",
		"credit":" credit 4",
		"caption":"caption"
		} } ] } }
				</pre id=pre_lists_json_end>
			</div id=div_lists_json_end>




		<img id=img_lists_pages title="          lists_pages" src=/imgs/btn/koeye.png onclick="toggle('div_lists_pages',''); return false;" height=15 border=0>lists_pages
		<div id=div_lists_pages hidden>
			<h3>div_lists_pages</h3>
			<pre id=pre_lists_pages>
/fb/konet/pages/1.jpg
/fb/iperms/pages/1.jpg
/fb/anniversary/pages/1.jpg
/fb/bh/pages/1.jpg
/fb/birthday/pages/1.jpg
/fb/bookmarkusb/pages/1.jpg
/fb/books/pages/1.jpg
/fb/byrdbellvjk/pages/1.jpg
/fb/byrdpucker/pages/1.jpg
/fb/cards/pages/1.jpg
/fb/comics/pages/1.jpg
/fb/cpa/pages/1.jpg
/fb/donutvanlaw/pages/1.jpg
/fb/edu/pages/1.jpg
/fb/fahtersday/pages/1.jpg
/fb/gifs/pages/1.jpg
/fb/gnome/pages/1.jpg
/fb/go/pages/1.jpg
/fb/gofunwii/pages/1.jpg
/fb/gov/pages/1.jpg
/fb/hl/pages/1.jpg
/fb/hoa/pages/1.jpg
/fb/hydro/pages/1.jpg
/fb/ipad/pages/1.jpg
/fb/jak1/pages/1.jpg
/fb/jak2/pages/1.jpg
/fb/jak3/pages/1.jpg
/fb/jhf/pages/1.jpg
/fb/jk/pages/1.jpg
/fb/jkwii/pages/1.jpg
/fb/jmh/pages/1.jpg
/fb/jtfdc/pages/1.jpg
/fb/jtfdcr/pages/1.jpg
/fb/jtfinc/pages/1.jpg
/fb/ka/pages/1.jpg
/fb/kassil/pages/1.jpg
/fb/kids/pages/1.jpg
/fb/kitiworks/pages/1.jpg
/fb/konabus/pages/1.jpg
/fb/konet/pages/1.jpg
/fb/kou/pages/1.jpg
/fb/kowebb/pages/1.jpg
/fb/kt/pages/1.jpg
/fb/law/pages/1.jpg
/fb/mars/pages/1.jpg
/fb/mars_2022/pages/1.jpg
/fb/med/pages/1.jpg
/fb/miniraptors/pages/1.jpg
/fb/mothersday/pages/1.jpg
/fb/myco/pages/1.jpg
/fb/netpix/pages/1.jpg
/fb/neuz/pages/1.jpg
/fb/nwm/pages/1.jpg
/fb/operation/pages/1.jpg
/fb/pastryroad/pages/1.jpg
/fb/royal1/pages/1.jpg
/fb/sk/pages/1.jpg
/fb/skwii/pages/1.jpg
/fb/smileworthy/pages/1.jpg
/fb/ssstl/pages/1.jpg
/fb/stlc/pages/1.jpg
/fb/usps/pages/1.jpg
/fb/weds/pages/1.jpg
/fb/who2jail/pages/1.jpg
/fb/zc/pages/1.jpg
/fb/zpid/pages/1.jpg
/fb/kt/pages/1.jpg
/fb/go/pages/1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
1.jpg
1.jpg
1.jpg
1.jpg
1.jpg
1.jpg
1.jpg
1.jpg
1.jpg
1.jpg
				</pre id=pre_lists_pages_end>
			</div id=div_lists_pages_end>


		</div id=div_lists_end>
		<br>
		<hr color=white>
		<hr color=black>
		<hr color=white>

		<img id=img_koslots title="          koslots" src=/imgs/btn/koeyeb.png onclick="toggle('div_koslots',''); return false;" height=20 border=0>koslots
		<div id=div_koslots hidden>
			<h3>div_koslots</h3>
<a href=#div_kogrids class=ko_popover target=_blank>
	<img id=img_kogrid0 src=/imgs/btn/kop1.png height=75>
	<span><img id=img_kogrid0s src=/imgs/btn/kop2.png height=75 border=0></span>
	</a>
<a href=./ class=ko_thumbnail target=_blank>
	<img id=img_kogrid1 src=/imgs/kogrids/tn/tn_koeyeb_grid5.png height=75>
	<span><img id=img_kogrid1s src=/imgs/kogrids/links_ko2us.png height=400 border=0></span>
	</a>
<a href=/ko_center/ko_center.php?q=login class=ko_thumbnail target=_blank>
	<img id=img_kogrid2 src=/imgs/kogrids/tn/tn_koeyeb_grid5.png height=75>
	<span><img id=img_kogrid2s src=/imgs/kogrids/links_kologin.png height=400 border=0></span>
	</a>
<a href=/cfaa.html class=ko_thumbnail target=_blank>
	<img id=img_kogrid3  src=/imgs/kogrids/tn/tn_koeyeb_grid5.png height=75>
	<span><img img_kogrid3s src=/imgs/kogrids/links_cfaa.png height=400 border=0></span>
	</a>
<a href=/bluehost.com?utm_campaign_konet_notype&utm_medium-affiliate.html class=ko_thumbnail target=_blank>
	<img id=img_kogrid4 src=/imgs/kogrids/tn/tn_koeyeb_grid5.png height=75>
	<span><img id=img_kogrid4s src=/imgs/kogrids/links_bluehost.png height=400 border=0></span>
	</a>



	<br> <br> <br> <br> <br> <br>
	<hr color=white>
	<br>
	<hr color=white>

<a href=/index.html target=_blank>
	<img src=/imgs/btn/kop1.png alt=/imgs/btn/kop1.png onMouseover="changetext(content_kogrid[0]); return false;" onMouseout="tipout(); return false;" onclick="koslots(''); return false;" height=50 border=0>
	</a>


<a href=./ target=_blank>
	<img src=/imgs/kogrids/tn/tn_koeyeb_grid5.png 
		alt=/imgs/kogrids/links_ko2us.png
		onMouseover="changetext(content_kogrid[1]); return false;"
		onMouseout="tipout(); return false;"
		onclick="window.open('/cfaa.html'); return false;"
		height=50 border=0>
	</a>

<a href=/ko_center/kocenter.php?q=login target=_blank>
	<img src=/imgs/kogrids/tn/tn_koeyeb_grid5.png 
		alt=/imgs/kogrids/links_kologin.png
		onMouseover="changetext(content_kogrid[2]); return false;"
		onMouseout="tipout(); return false;"
		onclick="window.open('/ko_center/ko_center.php?q=login'); return false;"
		height=50 border=0>
	</a>

<a href=/cfaa.html target=_blank>
	<img src=/imgs/kogrids/tn/tn_koeyeb_grid5.png 
		alt=/imgs/kogrids/links_cfaa.png
		onMouseover="changetext(content_kogrid[3]); return false;"
		onMouseout="tipout(); return false;"
		onclick="window.open('/cfaa.html'); return false;"
		height=50 border=0>
	</a>

<a href=https://bluehost.com/&utm_source=%28direct%29&utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype target=_blank>
	<img src=/imgs/kogrids/tn/tn_koeyeb_grid5.png 
		alt=/imgs/kogrids/links_bluehost.png
		onMouseover="changetext(content_kogrid[4]); return false;"
		onMouseout="tipout(); return false;"
		onclick="window.open('https://bluehost.com/&utm_source=%28direct%20&utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype'); return false;"
		height=50 border=0>
	</a>

<!--
	content_kogrid[0]='<img src='+kogrid_url[1]+;' height=200>';
	content_kogrid[1]='<img src='+kogrid_url[1]+;' height=200>';
	content_kogrid[2]='<img src='+kogrid_url[2]+;' height=200>';
	content_kogrid[3]='<img src='+kogrid_url[3]+;' height=200>';
	content_kogrid[4]='<img src='+kogrid_url[3]+;' height=200>';
	-->
	<br>
	<hr color=white>
	<div id=div_postturtles>
		<img id=img_postturtles title="          postturtles"
			src=/imgs/postturtle_moneytrap/postturtl23.jpg
			onMouseover="changetext(content_kogrid[5]); return false;"
			onMouseout="tipout(); return false;"
			onclick="window.open('/imgs/postturtles/postturtle1.png'); return false;"
			height=100 border=0>
		<img id=img_monkeytraps title="          postturtles"
			src=/imgs/postturtle_moneytrap/monkeytrap8.jpg
			onMouseover="changetext(content[5]); return false;"
			onMouseout="tipout(); return false;"
			onclick="window.open('/imgs/postturtle_moneytrap/monkeytrap1.png'); return false;"
			height=100 border=0>
		<img id=img_floods title="          floods"
			src=/imgs/postturtle_moneytrap/floop_rooftop.jpg
			onMouseover="changetext(content_kogrid[5]); return false;"
			onMouseout="tipout(); return false;"
			onclick="window.open('/imgs/floods/flood1.png'); return false;"
			height=100 border=0>
		<img id=img_coffee title="          coffee"
			src=/imgs/coffee/jpg/coffee-cup-802757__340.jpg
			onMouseover="changetext(content[4]); return false;"
			onMouseout="tipout(); return false;"
			onclick="window.open('/kofe'); return false;"
			height=100 border=0>
		<hr color=white>
		<img id=img_iframes title="          iframes"
			src=/index_neave_wobble.png
			onMouseover="changetext(content_kogrid[5]); return false;"
			onMouseout="tipout(); return false;"
			onclick="window.open('/index_neave_wobble.html'); return false;"
			height=50 width=400 border=0>
		</div id=div_postturtles>


		</div id=div_koslots_end>
	<br>
	<hr color=white>
	<br>

	<img id=img_js title="          js" src=/imgs/btn/koeye.png onclick="toggle('div_js',''); return false;" height=20 border=0>js
	<br>
	<hr color=white>
	<div id=div_js hidden>
		<h1>div_js</h1>

	<img id=img_gojs title="          gojs" src=/imgs/btn/koeye.png onclick="toggle('div_gojs',''); return false;" height=15 border=0>gojs
	<br>
	<hr color=white>
	<div id=div_gojs hidden>
		<h1>div_gojs</h1>
		<h2>jtfdcr</h2>
		<a href=/ko/gojs/orgChartEditor.html target=_blank> <img id=img_orgcharteditor /ko/gojs/orgChartEditor.png height=100 border=0></a>
		<a href=/ko/gojs/dogy_monitor.html target=_blank> <img id=img_dogy_monitor /ko/gojs/dogy_monitor.pnpng height=100 border=0></a>
		<br>
		<h2>orgmaps</h2>
		<a href=/js/gojs/samples/orgChartEditor.html target=_blank> <img id=img_gojs_orgChartEditor src=/js/gojs/samples/orgChartEditor.png height=100 border=0></a>
		<a href=/js/gojs/samples/localView.html target=_blank> <img id=img_localView src=/js/gojs/samples/localView.png height=100 border=0></a>
		<a href=/js/gojs/samples/kittenMonitoTreeMap.html target=_blank> <img id=img_gojs_kittenMonitorTreeMap src=/js/gojs/samples/kittenMonitoTreeMap.png height=100 border=0></a>
		<a href=/js/gojs/extensions/TablTreeMap.html target=_blank> <img id=img_gojs_TableTreeMap src=/js/gojs/extensions/TablTreeMap.png height=100 border=0></a>
		<a href=/js/gojs/extensions/TreeMap.html target=_blank> <img id=img_gojs_TreeMap /js/gojs/extensions/TreeMap.png height=100 border=0></a>
		<a href=/js/gojs/samples/orgChartStatic.html target=_blank> <img id=img_gojf_orgChartStatic src=/js/gojs/samples/orgChartStatic.png height=100 border=0></a>
		<br>
		<h2>fun</h2> 
		<a href=/js/gojs/samples/pipeTreeMap.html target=_blank> <img id=img_gojs_pipTreeMap src=/js/gojs/samples/pipeTreeMap.png height=100 border=0></a>
		<a href=/js/gojs/samples/gameOfLife.html target=_blank> <img id=img-gojs_gamoeOfLife src=/js/gojs/samples/gameOfLife.png height=100 border=0></a>
		<a href=/js/gojs/samples/controlGaugeTreeMap.html target=_blank> <img id=img_gojs_controlGaugeTreeMap src=/js/gojs/samples/controlGaugeTreeMap.png height=100 border=0></a>
		<a href=/js/gojs/samples/controlGauges.html target=_blank> <img id=img_gojs_controlGauges src=/js/gojs/samples/controlGauges.png height=100 border=0></a>
		<a href=/js/gojs/samples/planogram.html target=_blank> <img id=img_gojs_panogram src=/js/gojs/samples/planogram.png height=100 border=0></a>
		<a href=/js/gojs/samples/seatingChart.html target=_blank> <img id=img_gojs_seatingCart src=/js/gojs/samples/seatingChart.png height=100 border=0></a>
		<a href=/js/gojs/samples/leaflet.html target=_blank> <img id=img_gojs_leflet src=/js/gojs/samples/leaflet.png height=100 border=0></a>
		<a href=/js/gojs/samples/timeline.html target=_blank> <img id=img_gojs_timeline /js/gojs/samples/timeline.png height=100 border=0></a>
		<a href=/js/gojs/samples/belts.html target=_blank> <img id=img_gojs_belts src=/js/gojs/samples/belts.png height=100 border=0></a>
		
		<a href=/js/gojs/samples/kanban.html target=_blanks> <img id=img_gojs_kanban title="          gojs_kanban" src=/js/gojs/samples/kanban.png height=100></a>

		</div id=div_gojs>
		<br>
	<hr color=white>
	<img id=img_threejs title="          threejs" src=/imgs/btn/koeye.png onclick="toggle('div_threejs',''); return false;" height=15 border=0>threejs
	<br>
	<hr color=white>
	<div id=div_threejs hidden>
		<h1>div_threejs</h1>
<a href=/js/threejs/examples/#webgl_animation_keyframes target=_blank> <img id=img_threejs_animation src=/js/threejs/webgl_animation_keyframes.png height=100 border=0></a>
<a href=/js/threejs/examples/#webgl_animation_skinning_blending target=_blank> <img id=img_threejs_animation src=/js/threejs/webgl_animation_skinning_blending.png height=100 border=0></a>
<a href=/js/threejs/examples/#webgl_animation_skinning_additive_blending target=_blank> <img id=img_threejs_animation src=/js/threejs/webgl_animation_skinning_additive_blending.png height=100 border=0></a>
<a href=/js/threejs/examples/#webgl_decals target=_blank> <img id=img_threejs_decals src=/js/threejs/webgl_decals.png height=100 border=0></a>
<a href=/js/threejs/examples/#webgl_effects_anaglyph target=_blank> <img id=img_threejs_effects_anaglyph src=/js/threejs/webgl_effects_anaglyph.png height=100 border=0></a>
<a href=/js/threejs/examples/#webgl_effects_stereo target=_blank> <img id=img_threejs_effects_stereo src=/js/threejs/webgl_effects_stereo.png height=100 border=0></a>
<a href=/js/threejs/examples/#webgl_decals target=_blank> <img id=img_threejs_decals src=/js/threejs/webgl_decals.png height=100 border=0></a>

<a href=/js/threejs/examples/#webgl_interactive_voxelpainter target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_geometry_teapot target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_geometry_text target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_lights_pointlights target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_lights_spotlight target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_loader_bvh target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_geometry_text target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_loader_gltf_compressed target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_loader_md2 target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_loader_mmd_pose target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_marchingcubes target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_geometry_text target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_buffergeometry_drawrange target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_gpgpu_birds target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_geometry_text target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_geometry_text target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_geometry_text target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_shadowmap_csm target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#css3d_sprites target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/#css3d_periodictable target=_blank><img src=/imgs/btn/kob.png height=25></a>
<a href=/js/threejs/examples/#webgl_shadowmap_csm target=_blank><img src=/imgs/btn/kob.png height=25></a>


			</div id=div_threejs_end>
		</div id=div_js hidden>
	<br>
	<br>
	<hr color=black>
	<hr color=white>
	<img id=img_views title="          views" src=/imgs/btn/koeye.png onclick="toggle('div_views',''); return false;" height=20 border=0>views
	<div id=div_views hidden>
		<h1>div_views</h1>
		<br>
		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_fb title="          div_fb" src=/imgs/btn/koeye.png onclick="toggle('div_fb',''); return false;" height=20 border=0>div_fb
		<div id=div_fb hidden>
			<h1>div_fb</h1>


<!--	<script src='/fb/extras/jquery.min.1.7.js'></script>	-->
<!--	<script src='/fb/extras/modnizr.2.5.3.min.js'></script>	-->
<!--	<script src='/fb/lib/hash.js'></script>	-->
<!--	<script src='/fb/lib/turn_html4.js'></script> -->
<!--	<script src='/fb/lib/zoom.js'></script>	-->
<!--	<script src='/fb/html/magazine/js/magazine.js'></script>	-->
<!--	<script src='data:/text/plain;base64,LyoKICogTWFnYXppbmUgc2FtcGxlCiovCgpmdW5jdGlvbiBhZGRQYWdlKHBhZ2UsIGJvb2spIHsKCgl2YXIgaWQsIHBhZ2VzID0gYm9vay50dXJuKCdwYWdlcycpOwoKCS8vIENyZWF0ZSBhIG5ldyBlbGVtZW50IGZvciB0aGlzIHBhZ2UKCXZhciBlbGVtZW50ID0gJCgnPGRpdiAvPicsIHt9KTsKCgkvLyBBZGQgdGhlIHBhZ2UgdG8gdGhlIGZsaXBib29rCglpZiAoYm9vay50dXJuKCdhZGRQYWdlJywgZWxlbWVudCwgcGFnZSkpIHsKCgkJLy8gQWRkIHRoZSBpbml0aWFsIEhUTUwKCQkvLyBJdCB3aWxsIGNvbnRhaW4gYSBsb2FkZXIgaW5kaWNhdG9yIGFuZCBhIGdyYWRpZW50CgkJZWxlbWVudC5odG1sKCc8ZGl2IGNsYXNzPSJncmFkaWVudCI+PC9kaXY+PGRpdiBjbGFzcz0ibG9hZGVyIj48L2Rpdj4nKTsKCgkJLy8gTG9hZCB0aGUgcGFnZQoJCWxvYWRQYWdlKHBhZ2UsIGVsZW1lbnQpOwoJfQoKfQoKZnVuY3Rpb24gbG9hZFBhZ2UocGFnZSwgcGFnZUVsZW1lbnQpIHsKCgkvLyBDcmVhdGUgYW4gaW1hZ2UgZWxlbWVudAoKCXZhciBpbWcgPSAkKCc8aW1nIC8+Jyk7CgoJaW1nLm1vdXNlZG93bihmdW5jdGlvbihlKSB7CgkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJfSk7CgoJaW1nLmxvYWQoZnVuY3Rpb24oKSB7CgkJCgkJLy8gU2V0IHRoZSBzaXplCgkJJCh0aGlzKS5jc3Moe3dpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnfSk7CgoJCS8vIEFkZCB0aGUgaW1hZ2UgdG8gdGhlIHBhZ2UgYWZ0ZXIgbG9hZGVkCgoJCSQodGhpcykuYXBwZW5kVG8ocGFnZUVsZW1lbnQpOwoKCQkvLyBSZW1vdmUgdGhlIGxvYWRlciBpbmRpY2F0b3IKCQkKCQlwYWdlRWxlbWVudC5maW5kKCcubG9hZGVyJykucmVtb3ZlKCk7Cgl9KTsKCgkvLyBMb2FkIHRoZSBwYWdlCgoJaW1nLmF0dHIoJ3NyYycsICdwYWdlcy8nICsgIHBhZ2UgKyAnLmpwZycpOwoKCWxvYWRSZWdpb25zKHBhZ2UsIHBhZ2VFbGVtZW50KTsKCn0KCi8vIFpvb20gaW4gLyBab29tIG91dAoKZnVuY3Rpb24gem9vbVRvKGV2ZW50KSB7CgoJCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJCWlmICgkKCcubWFnYXppbmUtdmlld3BvcnQnKS5kYXRhKCkucmVnaW9uQ2xpY2tlZCkgewoJCQkJJCgnLm1hZ2F6aW5lLXZpZXdwb3J0JykuZGF0YSgpLnJlZ2lvbkNsaWNrZWQgPSBmYWxzZTsKCQkJfSBlbHNlIHsKCQkJCWlmICgkKCcubWFnYXppbmUtdmlld3BvcnQnKS56b29tKCd2YWx1ZScpPT0xKSB7CgkJCQkJJCgnLm1hZ2F6aW5lLXZpZXdwb3J0Jykuem9vbSgnem9vbUluJywgZXZlbnQpOwoJCQkJfSBlbHNlIHsKCQkJCQkkKCcubWFnYXppbmUtdmlld3BvcnQnKS56b29tKCd6b29tT3V0Jyk7CgkJCQl9CgkJCX0KCQl9LCAxKTsKCn0KCgoKLy8gTG9hZCByZWdpb25zCgpmdW5jdGlvbiBsb2FkUmVnaW9ucyhwYWdlLCBlbGVtZW50KSB7CgoJJC5nZXRKU09OKCdwYWdlcy8nK3BhZ2UrJy1yZWdpb25zLmpzb24nKS4KCQlkb25lKGZ1bmN0aW9uKGRhdGEpIHsKCgkJCSQuZWFjaChkYXRhLCBmdW5jdGlvbihrZXksIHJlZ2lvbikgewoJCQkJYWRkUmVnaW9uKHJlZ2lvbiwgZWxlbWVudCk7CgkJCX0pOwoJCX0pOwp9CgovLyBBZGQgcmVnaW9uCgpmdW5jdGlvbiBhZGRSZWdpb24ocmVnaW9uLCBwYWdlRWxlbWVudCkgewoJCgl2YXIgcmVnID0gJCgnPGRpdiAvPicsIHsnY2xhc3MnOiAncmVnaW9uICAnICsgcmVnaW9uWydjbGFzcyddfSksCgkJb3B0aW9ucyA9ICQoJy5tYWdhemluZScpLnR1cm4oJ29wdGlvbnMnKSwKCQlwYWdlV2lkdGggPSBvcHRpb25zLndpZHRoLzIsCgkJcGFnZUhlaWdodCA9IG9wdGlvbnMuaGVpZ2h0OwoKCXJlZy5jc3MoewoJCXRvcDogTWF0aC5yb3VuZChyZWdpb24ueS9wYWdlSGVpZ2h0KjEwMCkrJyUnLAoJCWxlZnQ6IE1hdGgucm91bmQocmVnaW9uLngvcGFnZVdpZHRoKjEwMCkrJyUnLAoJCXdpZHRoOiBNYXRoLnJvdW5kKHJlZ2lvbi53aWR0aC9wYWdlV2lkdGgqMTAwKSsnJScsCgkJaGVpZ2h0OiBNYXRoLnJvdW5kKHJlZ2lvbi5oZWlnaHQvcGFnZUhlaWdodCoxMDApKyclJwoJfSkuYXR0cigncmVnaW9uLWRhdGEnLCAkLnBhcmFtKHJlZ2lvbi5kYXRhfHwnJykpOwoKCglyZWcuYXBwZW5kVG8ocGFnZUVsZW1lbnQpOwp9CgovLyBQcm9jZXNzIGNsaWNrIG9uIGEgcmVnaW9uCgpmdW5jdGlvbiByZWdpb25DbGljayhldmVudCkgewoKCXZhciByZWdpb24gPSAkKGV2ZW50LnRhcmdldCk7CgoJaWYgKHJlZ2lvbi5oYXNDbGFzcygncmVnaW9uJykpIHsKCgkJJCgnLm1hZ2F6aW5lLXZpZXdwb3J0JykuZGF0YSgpLnJlZ2lvbkNsaWNrZWQgPSB0cnVlOwoJCQoJCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJCSQoJy5tYWdhemluZS12aWV3cG9ydCcpLmRhdGEoKS5yZWdpb25DbGlja2VkID0gZmFsc2U7CgkJfSwgMTAwKTsKCQkKCQl2YXIgcmVnaW9uVHlwZSA9ICQudHJpbShyZWdpb24uYXR0cignY2xhc3MnKS5yZXBsYWNlKCdyZWdpb24nLCAnJykpOwoKCQlyZXR1cm4gcHJvY2Vzc1JlZ2lvbihyZWdpb24sIHJlZ2lvblR5cGUpOwoKCX0KCn0KCi8vIFByb2Nlc3MgdGhlIGRhdGEgb2YgZXZlcnkgcmVnaW9uCgpmdW5jdGlvbiBwcm9jZXNzUmVnaW9uKHJlZ2lvbiwgcmVnaW9uVHlwZSkgewoKCWRhdGEgPSBkZWNvZGVQYXJhbXMocmVnaW9uLmF0dHIoJ3JlZ2lvbi1kYXRhJykpOwoKCXN3aXRjaCAocmVnaW9uVHlwZSkgewoJCWNhc2UgJ2xpbmsnIDoKCgkJCXdpbmRvdy5vcGVuKGRhdGEudXJsKTsKCgkJYnJlYWs7CgkJY2FzZSAnem9vbScgOgoKCQkJdmFyIHJlZ2lvbk9mZnNldCA9IHJlZ2lvbi5vZmZzZXQoKSwKCQkJCXZpZXdwb3J0T2Zmc2V0ID0gJCgnLm1hZ2F6aW5lLXZpZXdwb3J0Jykub2Zmc2V0KCksCgkJCQlwb3MgPSB7CgkJCQkJeDogcmVnaW9uT2Zmc2V0LmxlZnQtdmlld3BvcnRPZmZzZXQubGVmdCwKCQkJCQl5OiByZWdpb25PZmZzZXQudG9wLXZpZXdwb3J0T2Zmc2V0LnRvcAoJCQkJfTsKCgkJCSQoJy5tYWdhemluZS12aWV3cG9ydCcpLnpvb20oJ3pvb21JbicsIHBvcyk7CgoJCWJyZWFrOwoJCWNhc2UgJ3RvLXBhZ2UnIDoKCgkJCSQoJy5tYWdhemluZScpLnR1cm4oJ3BhZ2UnLCBkYXRhLnBhZ2UpOwoKCQlicmVhazsKCX0KCn0KCi8vIExvYWQgbGFyZ2UgcGFnZQoKZnVuY3Rpb24gbG9hZExhcmdlUGFnZShwYWdlLCBwYWdlRWxlbWVudCkgewoJCgl2YXIgaW1nID0gJCgnPGltZyAvPicpOwoKCWltZy5sb2FkKGZ1bmN0aW9uKCkgewoKCQl2YXIgcHJldkltZyA9IHBhZ2VFbGVtZW50LmZpbmQoJ2ltZycpOwoJCSQodGhpcykuY3NzKHt3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJ30pOwoJCSQodGhpcykuYXBwZW5kVG8ocGFnZUVsZW1lbnQpOwoJCXByZXZJbWcucmVtb3ZlKCk7CgkJCgl9KTsKCgkvLyBMb2FkbmV3IHBhZ2UKCQoJaW1nLmF0dHIoJ3NyYycsICdwYWdlcy8nICsgIHBhZ2UgKyAnLWxhcmdlLmpwZycpOwp9CgovLyBMb2FkIHNtYWxsIHBhZ2UKCmZ1bmN0aW9uIGxvYWRTbWFsbFBhZ2UocGFnZSwgcGFnZUVsZW1lbnQpIHsKCQoJdmFyIGltZyA9IHBhZ2VFbGVtZW50LmZpbmQoJ2ltZycpOwoKCWltZy5jc3Moe3dpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnfSk7CgoJaW1nLnVuYmluZCgnbG9hZCcpOwoJLy8gTG9hZG5ldyBwYWdlCgoJaW1nLmF0dHIoJ3NyYycsICdwYWdlcy8nICsgIHBhZ2UgKyAnLmpwZycpOwp9CgovLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMjg0ODgKCmZ1bmN0aW9uIGlzQ2hyb21lKCkgewoKCXJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0Nocm9tZScpIT0tMTsKCn0KCmZ1bmN0aW9uIGRpc2FibGVDb250cm9scyhwYWdlKSB7CgkJaWYgKHBhZ2U9PTEpCgkJCSQoJy5wcmV2aW91cy1idXR0b24nKS5oaWRlKCk7CgkJZWxzZQoJCQkkKCcucHJldmlvdXMtYnV0dG9uJykuc2hvdygpOwoJCQkJCQoJCWlmIChwYWdlPT0kKCcubWFnYXppbmUnKS50dXJuKCdwYWdlcycpKQoJCQkkKCcubmV4dC1idXR0b24nKS5oaWRlKCk7CgkJZWxzZQoJCQkkKCcubmV4dC1idXR0b24nKS5zaG93KCk7Cn0KCi8vIFNldCB0aGUgd2lkdGggYW5kIGhlaWdodCBmb3IgdGhlIHZpZXdwb3J0CgpmdW5jdGlvbiByZXNpemVWaWV3cG9ydCgpIHsKCgl2YXIgd2lkdGggPSAkKHdpbmRvdykud2lkdGgoKSwKCQloZWlnaHQgPSAkKHdpbmRvdykuaGVpZ2h0KCksCgkJb3B0aW9ucyA9ICQoJy5tYWdhemluZScpLnR1cm4oJ29wdGlvbnMnKTsKCgkkKCcubWFnYXppbmUnKS5yZW1vdmVDbGFzcygnYW5pbWF0ZWQnKTsKCgkkKCcubWFnYXppbmUtdmlld3BvcnQnKS5jc3MoewoJCXdpZHRoOiB3aWR0aCwKCQloZWlnaHQ6IGhlaWdodAoJfSkuCgl6b29tKCdyZXNpemUnKTsKCgoJaWYgKCQoJy5tYWdhemluZScpLnR1cm4oJ3pvb20nKT09MSkgewoJCXZhciBib3VuZCA9IGNhbGN1bGF0ZUJvdW5kKHsKCQkJd2lkdGg6IG9wdGlvbnMud2lkdGgsCgkJCWhlaWdodDogb3B0aW9ucy5oZWlnaHQsCgkJCWJvdW5kV2lkdGg6IE1hdGgubWluKG9wdGlvbnMud2lkdGgsIHdpZHRoKSwKCQkJYm91bmRIZWlnaHQ6IE1hdGgubWluKG9wdGlvbnMuaGVpZ2h0LCBoZWlnaHQpCgkJfSk7CgoJCWlmIChib3VuZC53aWR0aCUyIT09MCkKCQkJYm91bmQud2lkdGgtPTE7CgoJCQkKCQlpZiAoYm91bmQud2lkdGghPSQoJy5tYWdhemluZScpLndpZHRoKCkgfHwgYm91bmQuaGVpZ2h0IT0kKCcubWFnYXppbmUnKS5oZWlnaHQoKSkgewoKCQkJJCgnLm1hZ2F6aW5lJykudHVybignc2l6ZScsIGJvdW5kLndpZHRoLCBib3VuZC5oZWlnaHQpOwoKCQkJaWYgKCQoJy5tYWdhemluZScpLnR1cm4oJ3BhZ2UnKT09MSkKCQkJCSQoJy5tYWdhemluZScpLnR1cm4oJ3BlZWwnLCAnYnInKTsKCgkJCSQoJy5uZXh0LWJ1dHRvbicpLmNzcyh7aGVpZ2h0OiBib3VuZC5oZWlnaHQsIGJhY2tncm91bmRQb3NpdGlvbjogJy0zOHB4ICcrKGJvdW5kLmhlaWdodC8yLTMyLzIpKydweCd9KTsKCQkJJCgnLnByZXZpb3VzLWJ1dHRvbicpLmNzcyh7aGVpZ2h0OiBib3VuZC5oZWlnaHQsIGJhY2tncm91bmRQb3NpdGlvbjogJy00cHggJysoYm91bmQuaGVpZ2h0LzItMzIvMikrJ3B4J30pOwoJCX0KCgkJJCgnLm1hZ2F6aW5lJykuY3NzKHt0b3A6IC1ib3VuZC5oZWlnaHQvMiwgbGVmdDogLWJvdW5kLndpZHRoLzJ9KTsKCX0KCgl2YXIgbWFnYXppbmVPZmZzZXQgPSAkKCcubWFnYXppbmUnKS5vZmZzZXQoKSwKCQlib3VuZEggPSBoZWlnaHQgLSBtYWdhemluZU9mZnNldC50b3AgLSAkKCcubWFnYXppbmUnKS5oZWlnaHQoKSwKCQltYXJnaW5Ub3AgPSAoYm91bmRIIC0gJCgnLnRodW1ibmFpbHMgPiBkaXYnKS5oZWlnaHQoKSkgLyAyOwoKCWlmIChtYXJnaW5Ub3A8MCkgewoJCSQoJy50aHVtYm5haWxzJykuY3NzKHtoZWlnaHQ6MX0pOwoJfSBlbHNlIHsKCQkkKCcudGh1bWJuYWlscycpLmNzcyh7aGVpZ2h0OiBib3VuZEh9KTsKCQkkKCcudGh1bWJuYWlscyA+IGRpdicpLmNzcyh7bWFyZ2luVG9wOiBtYXJnaW5Ub3B9KTsKCX0KCglpZiAobWFnYXppbmVPZmZzZXQudG9wPCQoJy5tYWRlJykuaGVpZ2h0KCkpCgkJJCgnLm1hZGUnKS5oaWRlKCk7CgllbHNlCgkJJCgnLm1hZGUnKS5zaG93KCk7CgoJJCgnLm1hZ2F6aW5lJykuYWRkQ2xhc3MoJ2FuaW1hdGVkJyk7CgkKfQoKCi8vIE51bWJlciBvZiB2aWV3cyBpbiBhIGZsaXBib29rCgpmdW5jdGlvbiBudW1iZXJPZlZpZXdzKGJvb2spIHsKCXJldHVybiBib29rLnR1cm4oJ3BhZ2VzJykgLyAyICsgMTsKfQoKLy8gQ3VycmVudCB2aWV3IGluIGEgZmxpcGJvb2sKCmZ1bmN0aW9uIGdldFZpZXdOdW1iZXIoYm9vaywgcGFnZSkgewoJcmV0dXJuIHBhcnNlSW50KChwYWdlIHx8IGJvb2sudHVybigncGFnZScpKS8yICsgMSwgMTApOwp9CgpmdW5jdGlvbiBtb3ZlQmFyKHllcykgewoJaWYgKE1vZGVybml6ciAmJiBNb2Rlcm5penIuY3NzdHJhbnNmb3JtcykgewoJCSQoJyNzbGlkZXIgLnVpLXNsaWRlci1oYW5kbGUnKS5jc3Moe3pJbmRleDogeWVzID8gLTEgOiAxMDAwMH0pOwoJfQp9CgpmdW5jdGlvbiBzZXRQcmV2aWV3KHZpZXcpIHsKCgl2YXIgcHJldmlld1dpZHRoID0gMTEyLAoJCXByZXZpZXdIZWlnaHQgPSA3MywKCQlwcmV2aWV3U3JjID0gJ3BhZ2VzL3ByZXZpZXcuanBnJywKCQlwcmV2aWV3ID0gJChfdGh1bWJQcmV2aWV3LmNoaWxkcmVuKCc6Zmlyc3QnKSksCgkJbnVtUGFnZXMgPSAodmlldz09MSB8fCB2aWV3PT0kKCcjc2xpZGVyJykuc2xpZGVyKCdvcHRpb24nLCAnbWF4JykpID8gMSA6IDIsCgkJd2lkdGggPSAobnVtUGFnZXM9PTEpID8gcHJldmlld1dpZHRoLzIgOiBwcmV2aWV3V2lkdGg7CgoJX3RodW1iUHJldmlldy4KCQlhZGRDbGFzcygnbm8tdHJhbnNpdGlvbicpLgoJCWNzcyh7d2lkdGg6IHdpZHRoICsgMTUsCgkJCWhlaWdodDogcHJldmlld0hlaWdodCArIDE1LAoJCQl0b3A6IC1wcmV2aWV3SGVpZ2h0IC0gMzAsCgkJCWxlZnQ6ICgkKCQoJyNzbGlkZXInKS5jaGlsZHJlbignOmZpcnN0JykpLndpZHRoKCkgLSB3aWR0aCAtIDE1KS8yCgkJfSk7CgoJcHJldmlldy5jc3MoewoJCXdpZHRoOiB3aWR0aCwKCQloZWlnaHQ6IHByZXZpZXdIZWlnaHQKCX0pOwoKCWlmIChwcmV2aWV3LmNzcygnYmFja2dyb3VuZC1pbWFnZScpPT09JycgfHwKCQlwcmV2aWV3LmNzcygnYmFja2dyb3VuZC1pbWFnZScpPT0nbm9uZScpIHsKCgkJcHJldmlldy5jc3Moe2JhY2tncm91bmRJbWFnZTogJ3VybCgnICsgcHJldmlld1NyYyArICcpJ30pOwoKCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CgkJCV90aHVtYlByZXZpZXcucmVtb3ZlQ2xhc3MoJ25vLXRyYW5zaXRpb24nKTsKCQl9LCAwKTsKCgl9CgoJcHJldmlldy5jc3Moe2JhY2tncm91bmRQb3NpdGlvbjoKCQknMHB4IC0nKygodmlldy0xKSpwcmV2aWV3SGVpZ2h0KSsncHgnCgl9KTsKfQoKLy8gV2lkdGggb2YgdGhlIGZsaXBib29rIHdoZW4gem9vbWVkIGluCgpmdW5jdGlvbiBsYXJnZU1hZ2F6aW5lV2lkdGgoKSB7CgkKCXJldHVybiAyMjE0OwoKfQoKLy8gZGVjb2RlIFVSTCBQYXJhbWV0ZXJzCgpmdW5jdGlvbiBkZWNvZGVQYXJhbXMoZGF0YSkgewoKCXZhciBwYXJ0cyA9IGRhdGEuc3BsaXQoJyYnKSwgZCwgb2JqID0ge307CgoJZm9yICh2YXIgaSA9MDsgaTxwYXJ0cy5sZW5ndGg7IGkrKykgewoJCWQgPSBwYXJ0c1tpXS5zcGxpdCgnPScpOwoJCW9ialtkZWNvZGVVUklDb21wb25lbnQoZFswXSldID0gZGVjb2RlVVJJQ29tcG9uZW50KGRbMV0pOwoJfQoKCXJldHVybiBvYmo7Cn0KCi8vIENhbGN1bGF0ZSB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiBhIHNxdWFyZSB3aXRoaW4gYW5vdGhlciBzcXVhcmUKCmZ1bmN0aW9uIGNhbGN1bGF0ZUJvdW5kKGQpIHsKCQoJdmFyIGJvdW5kID0ge3dpZHRoOiBkLndpZHRoLCBoZWlnaHQ6IGQuaGVpZ2h0fTsKCglpZiAoYm91bmQud2lkdGg+ZC5ib3VuZFdpZHRoIHx8IGJvdW5kLmhlaWdodD5kLmJvdW5kSGVpZ2h0KSB7CgkJCgkJdmFyIHJlbCA9IGJvdW5kLndpZHRoL2JvdW5kLmhlaWdodDsKCgkJaWYgKGQuYm91bmRXaWR0aC9yZWw+ZC5ib3VuZEhlaWdodCAmJiBkLmJvdW5kSGVpZ2h0KnJlbDw9ZC5ib3VuZFdpZHRoKSB7CgkJCQoJCQlib3VuZC53aWR0aCA9IE1hdGgucm91bmQoZC5ib3VuZEhlaWdodCpyZWwpOwoJCQlib3VuZC5oZWlnaHQgPSBkLmJvdW5kSGVpZ2h0OwoKCQl9IGVsc2UgewoJCQkKCQkJYm91bmQud2lkdGggPSBkLmJvdW5kV2lkdGg7CgkJCWJvdW5kLmhlaWdodCA9IE1hdGgucm91bmQoZC5ib3VuZFdpZHRoL3JlbCk7CgkJCgkJfQoJfQoJCQoJcmV0dXJuIGJvdW5kOwp9'></script> -->

	<script id="fb_extras_jquery_min_17_js" src='data:/text/plain;base64,LyohIGpRdWVyeSB2MS43IGpxdWVyeS5jb20gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KKGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gY0EoYSl7cmV0dXJuIGYuaXNXaW5kb3coYSk/YTphLm5vZGVUeXBlPT09OT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1mdW5jdGlvbiBjeChhKXtpZighY21bYV0pe3ZhciBiPWMuYm9keSxkPWYoIjwiK2ErIj4iKS5hcHBlbmRUbyhiKSxlPWQuY3NzKCJkaXNwbGF5Iik7ZC5yZW1vdmUoKTtpZihlPT09Im5vbmUifHxlPT09IiIpe2NufHwoY249Yy5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxjbi5mcmFtZUJvcmRlcj1jbi53aWR0aD1jbi5oZWlnaHQ9MCksYi5hcHBlbmRDaGlsZChjbik7aWYoIWNvfHwhY24uY3JlYXRlRWxlbWVudCljbz0oY24uY29udGVudFdpbmRvd3x8Y24uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxjby53cml0ZSgoYy5jb21wYXRNb2RlPT09IkNTUzFDb21wYXQiPyI8IWRvY3R5cGUgaHRtbD4iOiIiKSsiPGh0bWw+PGJvZHk+IiksY28uY2xvc2UoKTtkPWNvLmNyZWF0ZUVsZW1lbnQoYSksY28uYm9keS5hcHBlbmRDaGlsZChkKSxlPWYuY3NzKGQsImRpc3BsYXkiKSxiLnJlbW92ZUNoaWxkKGNuKX1jbVthXT1lfXJldHVybiBjbVthXX1mdW5jdGlvbiBjdyhhLGIpe3ZhciBjPXt9O2YuZWFjaChjcy5jb25jYXQuYXBwbHkoW10sY3Muc2xpY2UoMCxiKSksZnVuY3Rpb24oKXtjW3RoaXNdPWF9KTtyZXR1cm4gY31mdW5jdGlvbiBjdigpe2N0PWJ9ZnVuY3Rpb24gY3UoKXtzZXRUaW1lb3V0KGN2LDApO3JldHVybiBjdD1mLm5vdygpfWZ1bmN0aW9uIGNsKCl7dHJ5e3JldHVybiBuZXcgYS5BY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpfWNhdGNoKGIpe319ZnVuY3Rpb24gY2soKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gY2UoYSxjKXthLmRhdGFGaWx0ZXImJihjPWEuZGF0YUZpbHRlcihjLGEuZGF0YVR5cGUpKTt2YXIgZD1hLmRhdGFUeXBlcyxlPXt9LGcsaCxpPWQubGVuZ3RoLGosaz1kWzBdLGwsbSxuLG8scDtmb3IoZz0xO2c8aTtnKyspe2lmKGc9PT0xKWZvcihoIGluIGEuY29udmVydGVycyl0eXBlb2YgaD09InN0cmluZyImJihlW2gudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2hdKTtsPWssaz1kW2ddO2lmKGs9PT0iKiIpaz1sO2Vsc2UgaWYobCE9PSIqIiYmbCE9PWspe209bCsiICIrayxuPWVbbV18fGVbIiogIitrXTtpZighbil7cD1iO2ZvcihvIGluIGUpe2o9by5zcGxpdCgiICIpO2lmKGpbMF09PT1sfHxqWzBdPT09IioiKXtwPWVbalsxXSsiICIra107aWYocCl7bz1lW29dLG89PT0hMD9uPXA6cD09PSEwJiYobj1vKTticmVha319fX0hbiYmIXAmJmYuZXJyb3IoIk5vIGNvbnZlcnNpb24gZnJvbSAiK20ucmVwbGFjZSgiICIsIiB0byAiKSksbiE9PSEwJiYoYz1uP24oYyk6cChvKGMpKSl9fXJldHVybiBjfWZ1bmN0aW9uIGNkKGEsYyxkKXt2YXIgZT1hLmNvbnRlbnRzLGY9YS5kYXRhVHlwZXMsZz1hLnJlc3BvbnNlRmllbGRzLGgsaSxqLGs7Zm9yKGkgaW4gZylpIGluIGQmJihjW2dbaV1dPWRbaV0pO3doaWxlKGZbMF09PT0iKiIpZi5zaGlmdCgpLGg9PT1iJiYoaD1hLm1pbWVUeXBlfHxjLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSk7aWYoaClmb3IoaSBpbiBlKWlmKGVbaV0mJmVbaV0udGVzdChoKSl7Zi51bnNoaWZ0KGkpO2JyZWFrfWlmKGZbMF1pbiBkKWo9ZlswXTtlbHNle2ZvcihpIGluIGQpe2lmKCFmWzBdfHxhLmNvbnZlcnRlcnNbaSsiICIrZlswXV0pe2o9aTticmVha31rfHwoaz1pKX1qPWp8fGt9aWYoail7aiE9PWZbMF0mJmYudW5zaGlmdChqKTtyZXR1cm4gZFtqXX19ZnVuY3Rpb24gY2MoYSxiLGMsZCl7aWYoZi5pc0FycmF5KGIpKWYuZWFjaChiLGZ1bmN0aW9uKGIsZSl7Y3x8YkcudGVzdChhKT9kKGEsZSk6Y2MoYSsiWyIrKHR5cGVvZiBlPT0ib2JqZWN0Inx8Zi5pc0FycmF5KGUpP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlmKCFjJiZiIT1udWxsJiZ0eXBlb2YgYj09Im9iamVjdCIpZm9yKHZhciBlIGluIGIpY2MoYSsiWyIrZSsiXSIsYltlXSxjLGQpO2Vsc2UgZChhLGIpfWZ1bmN0aW9uIGNiKGEsYyl7dmFyIGQsZSxnPWYuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoZCBpbiBjKWNbZF0hPT1iJiYoKGdbZF0/YTplfHwoZT17fSkpW2RdPWNbZF0pO2UmJmYuZXh0ZW5kKCEwLGEsZSl9ZnVuY3Rpb24gY2EoYSxjLGQsZSxmLGcpe2Y9Znx8Yy5kYXRhVHlwZXNbMF0sZz1nfHx7fSxnW2ZdPSEwO3ZhciBoPWFbZl0saT0wLGo9aD9oLmxlbmd0aDowLGs9YT09PWJWLGw7Zm9yKDtpPGomJihrfHwhbCk7aSsrKWw9aFtpXShjLGQsZSksdHlwZW9mIGw9PSJzdHJpbmciJiYoIWt8fGdbbF0/bD1iOihjLmRhdGFUeXBlcy51bnNoaWZ0KGwpLGw9Y2EoYSxjLGQsZSxsLGcpKSk7KGt8fCFsKSYmIWdbIioiXSYmKGw9Y2EoYSxjLGQsZSwiKiIsZykpO3JldHVybiBsfWZ1bmN0aW9uIGJfKGEpe3JldHVybiBmdW5jdGlvbihiLGMpe3R5cGVvZiBiIT0ic3RyaW5nIiYmKGM9YixiPSIqIik7aWYoZi5pc0Z1bmN0aW9uKGMpKXt2YXIgZD1iLnRvTG93ZXJDYXNlKCkuc3BsaXQoYlIpLGU9MCxnPWQubGVuZ3RoLGgsaSxqO2Zvcig7ZTxnO2UrKyloPWRbZV0saj0vXlwrLy50ZXN0KGgpLGomJihoPWguc3Vic3RyKDEpfHwiKiIpLGk9YVtoXT1hW2hdfHxbXSxpW2o/InVuc2hpZnQiOiJwdXNoIl0oYyl9fX1mdW5jdGlvbiBiRShhLGIsYyl7dmFyIGQ9Yj09PSJ3aWR0aCI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxlPWI9PT0id2lkdGgiP2J6OmJBO2lmKGQ+MCl7YyE9PSJib3JkZXIiJiZmLmVhY2goZSxmdW5jdGlvbigpe2N8fChkLT1wYXJzZUZsb2F0KGYuY3NzKGEsInBhZGRpbmciK3RoaXMpKXx8MCksYz09PSJtYXJnaW4iP2QrPXBhcnNlRmxvYXQoZi5jc3MoYSxjK3RoaXMpKXx8MDpkLT1wYXJzZUZsb2F0KGYuY3NzKGEsImJvcmRlciIrdGhpcysiV2lkdGgiKSl8fDB9KTtyZXR1cm4gZCsicHgifWQ9YkIoYSxiLGIpO2lmKGQ8MHx8ZD09bnVsbClkPWEuc3R5bGVbYl18fDA7ZD1wYXJzZUZsb2F0KGQpfHwwLGMmJmYuZWFjaChlLGZ1bmN0aW9uKCl7ZCs9cGFyc2VGbG9hdChmLmNzcyhhLCJwYWRkaW5nIit0aGlzKSl8fDAsYyE9PSJwYWRkaW5nIiYmKGQrPXBhcnNlRmxvYXQoZi5jc3MoYSwiYm9yZGVyIit0aGlzKyJXaWR0aCIpKXx8MCksYz09PSJtYXJnaW4iJiYoZCs9cGFyc2VGbG9hdChmLmNzcyhhLGMrdGhpcykpfHwwKX0pO3JldHVybiBkKyJweCJ9ZnVuY3Rpb24gYnIoYSxiKXtiLnNyYz9mLmFqYXgoe3VybDpiLnNyYyxhc3luYzohMSxkYXRhVHlwZToic2NyaXB0In0pOmYuZ2xvYmFsRXZhbCgoYi50ZXh0fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoYmksIi8qJDAqLyIpKSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX1mdW5jdGlvbiBicShhKXt2YXIgYj0oYS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk7Yj09PSJpbnB1dCI/YnAoYSk6YiE9PSJzY3JpcHQiJiZ0eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCImJmYuZ3JlcChhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLGJwKX1mdW5jdGlvbiBicChhKXtpZihhLnR5cGU9PT0iY2hlY2tib3gifHxhLnR5cGU9PT0icmFkaW8iKWEuZGVmYXVsdENoZWNrZWQ9YS5jaGVja2VkfWZ1bmN0aW9uIGJvKGEpe3JldHVybiB0eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOnR5cGVvZiBhLnF1ZXJ5U2VsZWN0b3JBbGwhPSJ1bmRlZmluZWQiP2EucXVlcnlTZWxlY3RvckFsbCgiKiIpOltdfWZ1bmN0aW9uIGJuKGEsYil7dmFyIGM7aWYoYi5ub2RlVHlwZT09PTEpe2IuY2xlYXJBdHRyaWJ1dGVzJiZiLmNsZWFyQXR0cmlidXRlcygpLGIubWVyZ2VBdHRyaWJ1dGVzJiZiLm1lcmdlQXR0cmlidXRlcyhhKSxjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihjPT09Im9iamVjdCIpYi5vdXRlckhUTUw9YS5vdXRlckhUTUw7ZWxzZSBpZihjIT09ImlucHV0Inx8YS50eXBlIT09ImNoZWNrYm94IiYmYS50eXBlIT09InJhZGlvIil7aWYoYz09PSJvcHRpb24iKWIuc2VsZWN0ZWQ9YS5kZWZhdWx0U2VsZWN0ZWQ7ZWxzZSBpZihjPT09ImlucHV0Inx8Yz09PSJ0ZXh0YXJlYSIpYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWV9ZWxzZSBhLmNoZWNrZWQmJihiLmRlZmF1bHRDaGVja2VkPWIuY2hlY2tlZD1hLmNoZWNrZWQpLGIudmFsdWUhPT1hLnZhbHVlJiYoYi52YWx1ZT1hLnZhbHVlKTtiLnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pfX1mdW5jdGlvbiBibShhLGIpe2lmKGIubm9kZVR5cGU9PT0xJiYhIWYuaGFzRGF0YShhKSl7dmFyIGMsZCxlLGc9Zi5fZGF0YShhKSxoPWYuX2RhdGEoYixnKSxpPWcuZXZlbnRzO2lmKGkpe2RlbGV0ZSBoLmhhbmRsZSxoLmV2ZW50cz17fTtmb3IoYyBpbiBpKWZvcihkPTAsZT1pW2NdLmxlbmd0aDtkPGU7ZCsrKWYuZXZlbnQuYWRkKGIsYysoaVtjXVtkXS5uYW1lc3BhY2U/Ii4iOiIiKStpW2NdW2RdLm5hbWVzcGFjZSxpW2NdW2RdLGlbY11bZF0uZGF0YSl9aC5kYXRhJiYoaC5kYXRhPWYuZXh0ZW5kKHt9LGguZGF0YSkpfX1mdW5jdGlvbiBibChhLGIpe3JldHVybiBmLm5vZGVOYW1lKGEsInRhYmxlIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiBYKGEpe3ZhciBiPVkuc3BsaXQoIiAiKSxjPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKGMuY3JlYXRlRWxlbWVudCl3aGlsZShiLmxlbmd0aCljLmNyZWF0ZUVsZW1lbnQoYi5wb3AoKSk7cmV0dXJuIGN9ZnVuY3Rpb24gVyhhLGIsYyl7Yj1ifHwwO2lmKGYuaXNGdW5jdGlvbihiKSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXt2YXIgZT0hIWIuY2FsbChhLGQsYSk7cmV0dXJuIGU9PT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gYT09PWI9PT1jfSk7aWYodHlwZW9mIGI9PSJzdHJpbmciKXt2YXIgZD1mLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlVHlwZT09PTF9KTtpZihSLnRlc3QoYikpcmV0dXJuIGYuZmlsdGVyKGIsZCwhYyk7Yj1mLmZpbHRlcihiLGQpfXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiBmLmluQXJyYXkoYSxiKT49MD09PWN9KX1mdW5jdGlvbiBWKGEpe3JldHVybiFhfHwhYS5wYXJlbnROb2RlfHxhLnBhcmVudE5vZGUubm9kZVR5cGU9PT0xMX1mdW5jdGlvbiBOKCl7cmV0dXJuITB9ZnVuY3Rpb24gTSgpe3JldHVybiExfWZ1bmN0aW9uIG4oYSxiLGMpe3ZhciBkPWIrImRlZmVyIixlPWIrInF1ZXVlIixnPWIrIm1hcmsiLGg9Zi5fZGF0YShhLGQpO2gmJihjPT09InF1ZXVlInx8IWYuX2RhdGEoYSxlKSkmJihjPT09Im1hcmsifHwhZi5fZGF0YShhLGcpKSYmc2V0VGltZW91dChmdW5jdGlvbigpeyFmLl9kYXRhKGEsZSkmJiFmLl9kYXRhKGEsZykmJihmLnJlbW92ZURhdGEoYSxkLCEwKSxoLmZpcmUoKSl9LDApfWZ1bmN0aW9uIG0oYSl7Zm9yKHZhciBiIGluIGEpe2lmKGI9PT0iZGF0YSImJmYuaXNFbXB0eU9iamVjdChhW2JdKSljb250aW51ZTtpZihiIT09InRvSlNPTiIpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gbChhLGMsZCl7aWYoZD09PWImJmEubm9kZVR5cGU9PT0xKXt2YXIgZT0iZGF0YS0iK2MucmVwbGFjZShrLCItJDEiKS50b0xvd2VyQ2FzZSgpO2Q9YS5nZXRBdHRyaWJ1dGUoZSk7aWYodHlwZW9mIGQ9PSJzdHJpbmciKXt0cnl7ZD1kPT09InRydWUiPyEwOmQ9PT0iZmFsc2UiPyExOmQ9PT0ibnVsbCI/bnVsbDpmLmlzTnVtZXJpYyhkKT9wYXJzZUZsb2F0KGQpOmoudGVzdChkKT9mLnBhcnNlSlNPTihkKTpkfWNhdGNoKGcpe31mLmRhdGEoYSxjLGQpfWVsc2UgZD1ifXJldHVybiBkfWZ1bmN0aW9uIGgoYSl7dmFyIGI9Z1thXT17fSxjLGQ7YT1hLnNwbGl0KC9ccysvKTtmb3IoYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyliW2FbY11dPSEwO3JldHVybiBifXZhciBjPWEuZG9jdW1lbnQsZD1hLm5hdmlnYXRvcixlPWEubG9jYXRpb24sZj1mdW5jdGlvbigpe2Z1bmN0aW9uIEsoKXtpZighZS5pc1JlYWR5KXt0cnl7Yy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChhKXtzZXRUaW1lb3V0KEssMSk7cmV0dXJufWUucmVhZHkoKX19dmFyIGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGUuZm4uaW5pdChhLGIsaCl9LGY9YS5qUXVlcnksZz1hLiQsaCxpPS9eKD86W14jPF0qKDxbXHdcV10rPilbXj5dKiR8IyhbXHdcLV0qKSQpLyxqPS9cUy8saz0vXlxzKy8sbD0vXHMrJC8sbT0vXGQvLG49L148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLyxvPS9eW1xdLDp7fVxzXSokLyxwPS9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2cscT0vIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2cscj0vKD86Xnw6fCwpKD86XHMqXFspKy9nLHM9Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8sdD0vKG9wZXJhKSg/Oi4qdmVyc2lvbik/WyBcL10oW1x3Ll0rKS8sdT0vKG1zaWUpIChbXHcuXSspLyx2PS8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKykpPy8sdz0vLShbYS16XXxbMC05XSkvaWcseD0vXi1tcy0vLHk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYisiIikudG9VcHBlckNhc2UoKX0sej1kLnVzZXJBZ2VudCxBLEIsQyxEPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEY9QXJyYXkucHJvdG90eXBlLnB1c2gsRz1BcnJheS5wcm90b3R5cGUuc2xpY2UsSD1TdHJpbmcucHJvdG90eXBlLnRyaW0sST1BcnJheS5wcm90b3R5cGUuaW5kZXhPZixKPXt9O2UuZm49ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmUsaW5pdDpmdW5jdGlvbihhLGQsZil7dmFyIGcsaCxqLGs7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYS5ub2RlVHlwZSl7dGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKGE9PT0iYm9keSImJiFkJiZjLmJvZHkpe3RoaXMuY29udGV4dD1jLHRoaXNbMF09Yy5ib2R5LHRoaXMuc2VsZWN0b3I9YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKHR5cGVvZiBhPT0ic3RyaW5nIil7YS5jaGFyQXQoMCkhPT0iPCJ8fGEuY2hhckF0KGEubGVuZ3RoLTEpIT09Ij4ifHxhLmxlbmd0aDwzP2c9aS5leGVjKGEpOmc9W251bGwsYSxudWxsXTtpZihnJiYoZ1sxXXx8IWQpKXtpZihnWzFdKXtkPWQgaW5zdGFuY2VvZiBlP2RbMF06ZCxrPWQ/ZC5vd25lckRvY3VtZW50fHxkOmMsaj1uLmV4ZWMoYSksaj9lLmlzUGxhaW5PYmplY3QoZCk/KGE9W2MuY3JlYXRlRWxlbWVudChqWzFdKV0sZS5mbi5hdHRyLmNhbGwoYSxkLCEwKSk6YT1bay5jcmVhdGVFbGVtZW50KGpbMV0pXTooaj1lLmJ1aWxkRnJhZ21lbnQoW2dbMV1dLFtrXSksYT0oai5jYWNoZWFibGU/ZS5jbG9uZShqLmZyYWdtZW50KTpqLmZyYWdtZW50KS5jaGlsZE5vZGVzKTtyZXR1cm4gZS5tZXJnZSh0aGlzLGEpfWg9Yy5nZXRFbGVtZW50QnlJZChnWzJdKTtpZihoJiZoLnBhcmVudE5vZGUpe2lmKGguaWQhPT1nWzJdKXJldHVybiBmLmZpbmQoYSk7dGhpcy5sZW5ndGg9MSx0aGlzWzBdPWh9dGhpcy5jb250ZXh0PWMsdGhpcy5zZWxlY3Rvcj1hO3JldHVybiB0aGlzfXJldHVybiFkfHxkLmpxdWVyeT8oZHx8ZikuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGQpLmZpbmQoYSl9aWYoZS5pc0Z1bmN0aW9uKGEpKXJldHVybiBmLnJlYWR5KGEpO2Euc2VsZWN0b3IhPT1iJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpO3JldHVybiBlLm1ha2VBcnJheShhLHRoaXMpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuNyIsbGVuZ3RoOjAsc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBHLmNhbGwodGhpcywwKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP3RoaXMudG9BcnJheSgpOmE8MD90aGlzW3RoaXMubGVuZ3RoK2FdOnRoaXNbYV19LHB1c2hTdGFjazpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5jb25zdHJ1Y3RvcigpO2UuaXNBcnJheShhKT9GLmFwcGx5KGQsYSk6ZS5tZXJnZShkLGEpLGQucHJldk9iamVjdD10aGlzLGQuY29udGV4dD10aGlzLmNvbnRleHQsYj09PSJmaW5kIj9kLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrKHRoaXMuc2VsZWN0b3I/IiAiOiIiKStjOmImJihkLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK2IrIigiK2MrIikiKTtyZXR1cm4gZH0sZWFjaDpmdW5jdGlvbihhLGIpe3JldHVybiBlLmVhY2godGhpcyxhLGIpfSxyZWFkeTpmdW5jdGlvbihhKXtlLmJpbmRSZWFkeSgpLEIuYWRkKGEpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbihhKXtyZXR1cm4gYT09PS0xP3RoaXMuc2xpY2UoYSk6dGhpcy5zbGljZShhLCthKzEpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhHLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwic2xpY2UiLEcuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOkYsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9LGUuZm4uaW5pdC5wcm90b3R5cGU9ZS5mbixlLmV4dGVuZD1lLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGMsZCxmLGcsaCxpPWFyZ3VtZW50c1swXXx8e30saj0xLGs9YXJndW1lbnRzLmxlbmd0aCxsPSExO3R5cGVvZiBpPT0iYm9vbGVhbiImJihsPWksaT1hcmd1bWVudHNbMV18fHt9LGo9MiksdHlwZW9mIGkhPSJvYmplY3QiJiYhZS5pc0Z1bmN0aW9uKGkpJiYoaT17fSksaz09PWomJihpPXRoaXMsLS1qKTtmb3IoO2o8aztqKyspaWYoKGE9YXJndW1lbnRzW2pdKSE9bnVsbClmb3IoYyBpbiBhKXtkPWlbY10sZj1hW2NdO2lmKGk9PT1mKWNvbnRpbnVlO2wmJmYmJihlLmlzUGxhaW5PYmplY3QoZil8fChnPWUuaXNBcnJheShmKSkpPyhnPyhnPSExLGg9ZCYmZS5pc0FycmF5KGQpP2Q6W10pOmg9ZCYmZS5pc1BsYWluT2JqZWN0KGQpP2Q6e30saVtjXT1lLmV4dGVuZChsLGgsZikpOmYhPT1iJiYoaVtjXT1mKX1yZXR1cm4gaX0sZS5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oYil7YS4kPT09ZSYmKGEuJD1nKSxiJiZhLmpRdWVyeT09PWUmJihhLmpRdWVyeT1mKTtyZXR1cm4gZX0saXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9lLnJlYWR5V2FpdCsrOmUucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITAmJiEtLWUucmVhZHlXYWl0fHxhIT09ITAmJiFlLmlzUmVhZHkpe2lmKCFjLmJvZHkpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtlLmlzUmVhZHk9ITA7aWYoYSE9PSEwJiYtLWUucmVhZHlXYWl0PjApcmV0dXJuO0IuZmlyZVdpdGgoYyxbZV0pLGUuZm4udHJpZ2dlciYmZShjKS50cmlnZ2VyKCJyZWFkeSIpLnVuYmluZCgicmVhZHkiKX19LGJpbmRSZWFkeTpmdW5jdGlvbigpe2lmKCFCKXtCPWUuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpO2lmKGMucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtpZihjLmFkZEV2ZW50TGlzdGVuZXIpYy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixDLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGUucmVhZHksITEpO2Vsc2UgaWYoYy5hdHRhY2hFdmVudCl7Yy5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixDKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLGUucmVhZHkpO3ZhciBiPSExO3RyeXtiPWEuZnJhbWVFbGVtZW50PT1udWxsfWNhdGNoKGQpe31jLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCYmYiYmSygpfX19LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJmdW5jdGlvbiJ9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJhcnJheSJ9LGlzV2luZG93OmZ1bmN0aW9uKGEpe3JldHVybiBhJiZ0eXBlb2YgYT09Im9iamVjdCImJiJzZXRJbnRlcnZhbCJpbiBhfSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPW51bGwmJm0udGVzdChhKSYmIWlzTmFOKGEpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP1N0cmluZyhhKTpKW0QuY2FsbChhKV18fCJvYmplY3QifSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe2lmKCFhfHxlLnR5cGUoYSkhPT0ib2JqZWN0Inx8YS5ub2RlVHlwZXx8ZS5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIUUuY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhRS5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9dmFyIGQ7Zm9yKGQgaW4gYSk7cmV0dXJuIGQ9PT1ifHxFLmNhbGwoYSxkKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0sZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgYX0scGFyc2VKU09OOmZ1bmN0aW9uKGIpe2lmKHR5cGVvZiBiIT0ic3RyaW5nInx8IWIpcmV0dXJuIG51bGw7Yj1lLnRyaW0oYik7aWYoYS5KU09OJiZhLkpTT04ucGFyc2UpcmV0dXJuIGEuSlNPTi5wYXJzZShiKTtpZihvLnRlc3QoYi5yZXBsYWNlKHAsIkAiKS5yZXBsYWNlKHEsIl0iKS5yZXBsYWNlKHIsIiIpKSlyZXR1cm4obmV3IEZ1bmN0aW9uKCJyZXR1cm4gIitiKSkoKTtlLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LHBhcnNlWE1MOmZ1bmN0aW9uKGMpe3ZhciBkLGY7dHJ5e2EuRE9NUGFyc2VyPyhmPW5ldyBET01QYXJzZXIsZD1mLnBhcnNlRnJvbVN0cmluZyhjLCJ0ZXh0L3htbCIpKTooZD1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpLGQuYXN5bmM9ImZhbHNlIixkLmxvYWRYTUwoYykpfWNhdGNoKGcpe2Q9Yn0oIWR8fCFkLmRvY3VtZW50RWxlbWVudHx8ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGgpJiZlLmVycm9yKCJJbnZhbGlkIFhNTDogIitjKTtyZXR1cm4gZH0sbm9vcDpmdW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZqLnRlc3QoYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoeCwibXMtIikucmVwbGFjZSh3LHkpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT1iLnRvVXBwZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxjLGQpe3ZhciBmLGc9MCxoPWEubGVuZ3RoLGk9aD09PWJ8fGUuaXNGdW5jdGlvbihhKTtpZihkKXtpZihpKXtmb3IoZiBpbiBhKWlmKGMuYXBwbHkoYVtmXSxkKT09PSExKWJyZWFrfWVsc2UgZm9yKDtnPGg7KWlmKGMuYXBwbHkoYVtnKytdLGQpPT09ITEpYnJlYWt9ZWxzZSBpZihpKXtmb3IoZiBpbiBhKWlmKGMuY2FsbChhW2ZdLGYsYVtmXSk9PT0hMSlicmVha31lbHNlIGZvcig7ZzxoOylpZihjLmNhbGwoYVtnXSxnLGFbZysrXSk9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpIP2Z1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOkguY2FsbChhKX06ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6KGErIiIpLnJlcGxhY2UoaywiIikucmVwbGFjZShsLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107aWYoYSE9bnVsbCl7dmFyIGQ9ZS50eXBlKGEpO2EubGVuZ3RoPT1udWxsfHxkPT09InN0cmluZyJ8fGQ9PT0iZnVuY3Rpb24ifHxkPT09InJlZ2V4cCJ8fGUuaXNXaW5kb3coYSk/Ri5jYWxsKGMsYSk6ZS5tZXJnZShjLGEpfXJldHVybiBjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihiKXtpZihJKXJldHVybiBJLmNhbGwoYixhLGMpO2Q9Yi5sZW5ndGgsYz1jP2M8MD9NYXRoLm1heCgwLGQrYyk6YzowO2Zvcig7YzxkO2MrKylpZihjIGluIGImJmJbY109PT1hKXJldHVybiBjfXJldHVybi0xfSxtZXJnZTpmdW5jdGlvbihhLGMpe3ZhciBkPWEubGVuZ3RoLGU9MDtpZih0eXBlb2YgYy5sZW5ndGg9PSJudW1iZXIiKWZvcih2YXIgZj1jLmxlbmd0aDtlPGY7ZSsrKWFbZCsrXT1jW2VdO2Vsc2Ugd2hpbGUoY1tlXSE9PWIpYVtkKytdPWNbZSsrXTthLmxlbmd0aD1kO3JldHVybiBhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlO2M9ISFjO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGg7ZjxnO2YrKyllPSEhYihhW2ZdLGYpLGMhPT1lJiZkLnB1c2goYVtmXSk7cmV0dXJuIGR9LG1hcDpmdW5jdGlvbihhLGMsZCl7dmFyIGYsZyxoPVtdLGk9MCxqPWEubGVuZ3RoLGs9YSBpbnN0YW5jZW9mIGV8fGohPT1iJiZ0eXBlb2Ygaj09Im51bWJlciImJihqPjAmJmFbMF0mJmFbai0xXXx8aj09PTB8fGUuaXNBcnJheShhKSk7aWYoaylmb3IoO2k8ajtpKyspZj1jKGFbaV0saSxkKSxmIT1udWxsJiYoaFtoLmxlbmd0aF09Zik7ZWxzZSBmb3IoZyBpbiBhKWY9YyhhW2ddLGcsZCksZiE9bnVsbCYmKGhbaC5sZW5ndGhdPWYpO3JldHVybiBoLmNvbmNhdC5hcHBseShbXSxoKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYyl7aWYodHlwZW9mIGM9PSJzdHJpbmciKXt2YXIgZD1hW2NdO2M9YSxhPWR9aWYoIWUuaXNGdW5jdGlvbihhKSlyZXR1cm4gYjt2YXIgZj1HLmNhbGwoYXJndW1lbnRzLDIpLGc9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShjLGYuY29uY2F0KEcuY2FsbChhcmd1bWVudHMpKSl9O2cuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxnLmd1aWR8fGUuZ3VpZCsrO3JldHVybiBnfSxhY2Nlc3M6ZnVuY3Rpb24oYSxjLGQsZixnLGgpe3ZhciBpPWEubGVuZ3RoO2lmKHR5cGVvZiBjPT0ib2JqZWN0Iil7Zm9yKHZhciBqIGluIGMpZS5hY2Nlc3MoYSxqLGNbal0sZixnLGQpO3JldHVybiBhfWlmKGQhPT1iKXtmPSFoJiZmJiZlLmlzRnVuY3Rpb24oZCk7Zm9yKHZhciBrPTA7azxpO2srKylnKGFba10sYyxmP2QuY2FsbChhW2tdLGssZyhhW2tdLGMpKTpkLGgpO3JldHVybiBhfXJldHVybiBpP2coYVswXSxjKTpifSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0sdWFNYXRjaDpmdW5jdGlvbihhKXthPWEudG9Mb3dlckNhc2UoKTt2YXIgYj1zLmV4ZWMoYSl8fHQuZXhlYyhhKXx8dS5leGVjKGEpfHxhLmluZGV4T2YoImNvbXBhdGlibGUiKTwwJiZ2LmV4ZWMoYSl8fFtdO3JldHVybnticm93c2VyOmJbMV18fCIiLHZlcnNpb246YlsyXXx8IjAifX0sc3ViOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMpe3JldHVybiBuZXcgYS5mbi5pbml0KGIsYyl9ZS5leHRlbmQoITAsYSx0aGlzKSxhLnN1cGVyY2xhc3M9dGhpcyxhLmZuPWEucHJvdG90eXBlPXRoaXMoKSxhLmZuLmNvbnN0cnVjdG9yPWEsYS5zdWI9dGhpcy5zdWIsYS5mbi5pbml0PWZ1bmN0aW9uKGQsZil7ZiYmZiBpbnN0YW5jZW9mIGUmJiEoZiBpbnN0YW5jZW9mIGEpJiYoZj1hKGYpKTtyZXR1cm4gZS5mbi5pbml0LmNhbGwodGhpcyxkLGYsYil9LGEuZm4uaW5pdC5wcm90b3R5cGU9YS5mbjt2YXIgYj1hKGMpO3JldHVybiBhfSxicm93c2VyOnt9fSksZS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7SlsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KSxBPWUudWFNYXRjaCh6KSxBLmJyb3dzZXImJihlLmJyb3dzZXJbQS5icm93c2VyXT0hMCxlLmJyb3dzZXIudmVyc2lvbj1BLnZlcnNpb24pLGUuYnJvd3Nlci53ZWJraXQmJihlLmJyb3dzZXIuc2FmYXJpPSEwKSxqLnRlc3QoIsKgIikmJihrPS9eW1xzXHhBMF0rLyxsPS9bXHNceEEwXSskLyksaD1lKGMpLGMuYWRkRXZlbnRMaXN0ZW5lcj9DPWZ1bmN0aW9uKCl7Yy5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixDLCExKSxlLnJlYWR5KCl9OmMuYXR0YWNoRXZlbnQmJihDPWZ1bmN0aW9uKCl7Yy5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIiYmKGMuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsQyksZS5yZWFkeSgpKX0pLHR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQmJmRlZmluZS5hbWQualF1ZXJ5JiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gZX0pO3JldHVybiBlfSgpLGc9e307Zi5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT1hP2dbYV18fGgoYSk6e307dmFyIGM9W10sZD1bXSxlLGksaixrLGwsbT1mdW5jdGlvbihiKXt2YXIgZCxlLGcsaCxpO2ZvcihkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWc9YltkXSxoPWYudHlwZShnKSxoPT09ImFycmF5Ij9tKGcpOmg9PT0iZnVuY3Rpb24iJiYoIWEudW5pcXVlfHwhby5oYXMoZykpJiZjLnB1c2goZyl9LG49ZnVuY3Rpb24oYixmKXtmPWZ8fFtdLGU9IWEubWVtb3J5fHxbYixmXSxpPSEwLGw9anx8MCxqPTAsaz1jLmxlbmd0aDtmb3IoO2MmJmw8aztsKyspaWYoY1tsXS5hcHBseShiLGYpPT09ITEmJmEuc3RvcE9uRmFsc2Upe2U9ITA7YnJlYWt9aT0hMSxjJiYoYS5vbmNlP2U9PT0hMD9vLmRpc2FibGUoKTpjPVtdOmQmJmQubGVuZ3RoJiYoZT1kLnNoaWZ0KCksby5maXJlV2l0aChlWzBdLGVbMV0pKSl9LG89e2FkZDpmdW5jdGlvbigpe2lmKGMpe3ZhciBhPWMubGVuZ3RoO20oYXJndW1lbnRzKSxpP2s9Yy5sZW5ndGg6ZSYmZSE9PSEwJiYoaj1hLG4oZVswXSxlWzFdKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe2lmKGMpe3ZhciBiPWFyZ3VtZW50cyxkPTAsZT1iLmxlbmd0aDtmb3IoO2Q8ZTtkKyspZm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspaWYoYltkXT09PWNbZl0pe2kmJmY8PWsmJihrLS0sZjw9bCYmbC0tKSxjLnNwbGljZShmLS0sMSk7aWYoYS51bmlxdWUpYnJlYWt9fXJldHVybiB0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7aWYoYyl7dmFyIGI9MCxkPWMubGVuZ3RoO2Zvcig7YjxkO2IrKylpZihhPT09Y1tiXSlyZXR1cm4hMH1yZXR1cm4hMX0sZW1wdHk6ZnVuY3Rpb24oKXtjPVtdO3JldHVybiB0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7Yz1kPWU9YjtyZXR1cm4gdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hY30sbG9jazpmdW5jdGlvbigpe2Q9YiwoIWV8fGU9PT0hMCkmJm8uZGlzYWJsZSgpO3JldHVybiB0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hZH0sZmlyZVdpdGg6ZnVuY3Rpb24oYixjKXtkJiYoaT9hLm9uY2V8fGQucHVzaChbYixjXSk6KCFhLm9uY2V8fCFlKSYmbihiLGMpKTtyZXR1cm4gdGhpc30sZmlyZTpmdW5jdGlvbigpe28uZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZX19O3JldHVybiBvfTt2YXIgaT1bXS5zbGljZTtmLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksYz1mLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxkPWYuQ2FsbGJhY2tzKCJtZW1vcnkiKSxlPSJwZW5kaW5nIixnPXtyZXNvbHZlOmIscmVqZWN0OmMsbm90aWZ5OmR9LGg9e2RvbmU6Yi5hZGQsZmFpbDpjLmFkZCxwcm9ncmVzczpkLmFkZCxzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBlfSxpc1Jlc29sdmVkOmIuZmlyZWQsaXNSZWplY3RlZDpjLmZpcmVkLHRoZW46ZnVuY3Rpb24oYSxiLGMpe2kuZG9uZShhKS5mYWlsKGIpLnByb2dyZXNzKGMpO3JldHVybiB0aGlzfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gaS5kb25lLmFwcGx5KGksYXJndW1lbnRzKS5mYWlsLmFwcGx5KGksYXJndW1lbnRzKX0scGlwZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuRGVmZXJyZWQoZnVuY3Rpb24oZCl7Zi5lYWNoKHtkb25lOlthLCJyZXNvbHZlIl0sZmFpbDpbYiwicmVqZWN0Il0scHJvZ3Jlc3M6W2MsIm5vdGlmeSJdfSxmdW5jdGlvbihhLGIpe3ZhciBjPWJbMF0sZT1iWzFdLGc7Zi5pc0Z1bmN0aW9uKGMpP2lbYV0oZnVuY3Rpb24oKXtnPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpLGcmJmYuaXNGdW5jdGlvbihnLnByb21pc2UpP2cucHJvbWlzZSgpLnRoZW4oZC5yZXNvbHZlLGQucmVqZWN0LGQubm90aWZ5KTpkW2UrIldpdGgiXSh0aGlzPT09aT9kOnRoaXMsW2ddKX0pOmlbYV0oZFtlXSl9KX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtpZihhPT1udWxsKWE9aDtlbHNlIGZvcih2YXIgYiBpbiBoKWFbYl09aFtiXTtyZXR1cm4gYX19LGk9aC5wcm9taXNlKHt9KSxqO2ZvcihqIGluIGcpaVtqXT1nW2pdLmZpcmUsaVtqKyJXaXRoIl09Z1tqXS5maXJlV2l0aDtpLmRvbmUoZnVuY3Rpb24oKXtlPSJyZXNvbHZlZCJ9LGMuZGlzYWJsZSxkLmxvY2spLmZhaWwoZnVuY3Rpb24oKXtlPSJyZWplY3RlZCJ9LGIuZGlzYWJsZSxkLmxvY2spLGEmJmEuY2FsbChpLGkpO3JldHVybiBpfSx3aGVuOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIG0oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe2VbYV09YXJndW1lbnRzLmxlbmd0aD4xP2kuY2FsbChhcmd1bWVudHMsMCk6YixqLm5vdGlmeVdpdGgoayxlKX19ZnVuY3Rpb24gbChhKXtyZXR1cm4gZnVuY3Rpb24oYyl7YlthXT1hcmd1bWVudHMubGVuZ3RoPjE/aS5jYWxsKGFyZ3VtZW50cywwKTpjLC0tZ3x8ai5yZXNvbHZlV2l0aChqLGIpfX12YXIgYj1pLmNhbGwoYXJndW1lbnRzLDApLGM9MCxkPWIubGVuZ3RoLGU9QXJyYXkoZCksZz1kLGg9ZCxqPWQ8PTEmJmEmJmYuaXNGdW5jdGlvbihhLnByb21pc2UpP2E6Zi5EZWZlcnJlZCgpLGs9ai5wcm9taXNlKCk7aWYoZD4xKXtmb3IoO2M8ZDtjKyspYltjXSYmYltjXS5wcm9taXNlJiZmLmlzRnVuY3Rpb24oYltjXS5wcm9taXNlKT9iW2NdLnByb21pc2UoKS50aGVuKGwoYyksai5yZWplY3QsbShjKSk6LS1nO2d8fGoucmVzb2x2ZVdpdGgoaixiKX1lbHNlIGohPT1hJiZqLnJlc29sdmVXaXRoKGosZD9bYV06W10pO3JldHVybiBrfX0pLGYuc3VwcG9ydD1mdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksYj1jLmRvY3VtZW50RWxlbWVudCxkLGUsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU7YS5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxhLmlubmVySFRNTD0iICAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJyBzdHlsZT0ndG9wOjFweDtmbG9hdDpsZWZ0O29wYWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz48bmF2PjwvbmF2PiIsZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIiksZT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF07aWYoIWR8fCFkLmxlbmd0aHx8IWUpcmV0dXJue307Zz1jLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGg9Zy5hcHBlbmRDaGlsZChjLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKSxpPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0saz17bGVhZGluZ1doaXRlc3BhY2U6YS5maXJzdENoaWxkLm5vZGVUeXBlPT09Myx0Ym9keTohYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsaHRtbFNlcmlhbGl6ZTohIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGgsc3R5bGU6L3RvcC8udGVzdChlLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksaHJlZk5vcm1hbGl6ZWQ6ZS5nZXRBdHRyaWJ1dGUoImhyZWYiKT09PSIvYSIsb3BhY2l0eTovXjAuNTUvLnRlc3QoZS5zdHlsZS5vcGFjaXR5KSxjc3NGbG9hdDohIWUuc3R5bGUuY3NzRmxvYXQsdW5rbm93bkVsZW1zOiEhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibmF2IikubGVuZ3RoLGNoZWNrT246aS52YWx1ZT09PSJvbiIsb3B0U2VsZWN0ZWQ6aC5zZWxlY3RlZCxnZXRTZXRBdHRyaWJ1dGU6YS5jbGFzc05hbWUhPT0idCIsZW5jdHlwZTohIWMuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsc3VibWl0QnViYmxlczohMCxjaGFuZ2VCdWJibGVzOiEwLGZvY3VzaW5CdWJibGVzOiExLGRlbGV0ZUV4cGFuZG86ITAsbm9DbG9uZUV2ZW50OiEwLGlubGluZUJsb2NrTmVlZHNMYXlvdXQ6ITEsc2hyaW5rV3JhcEJsb2NrczohMSxyZWxpYWJsZU1hcmdpblJpZ2h0OiEwfSxpLmNoZWNrZWQ9ITAsay5ub0Nsb25lQ2hlY2tlZD1pLmNsb25lTm9kZSghMCkuY2hlY2tlZCxnLmRpc2FibGVkPSEwLGsub3B0RGlzYWJsZWQ9IWguZGlzYWJsZWQ7dHJ5e2RlbGV0ZSBhLnRlc3R9Y2F0Y2godil7ay5kZWxldGVFeHBhbmRvPSExfSFhLmFkZEV2ZW50TGlzdGVuZXImJmEuYXR0YWNoRXZlbnQmJmEuZmlyZUV2ZW50JiYoYS5hdHRhY2hFdmVudCgib25jbGljayIsZnVuY3Rpb24oKXtrLm5vQ2xvbmVFdmVudD0hMX0pLGEuY2xvbmVOb2RlKCEwKS5maXJlRXZlbnQoIm9uY2xpY2siKSksaT1jLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksaS52YWx1ZT0idCIsaS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGsucmFkaW9WYWx1ZT1pLnZhbHVlPT09InQiLGkuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpLGEuYXBwZW5kQ2hpbGQoaSksbD1jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxsLmFwcGVuZENoaWxkKGEubGFzdENoaWxkKSxrLmNoZWNrQ2xvbmU9bC5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsYS5pbm5lckhUTUw9IiIsYS5zdHlsZS53aWR0aD1hLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiLG09Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLG89Yy5jcmVhdGVFbGVtZW50KG0/ImRpdiI6ImJvZHkiKSxwPXt2aXNpYmlsaXR5OiJoaWRkZW4iLHdpZHRoOjAsaGVpZ2h0OjAsYm9yZGVyOjAsbWFyZ2luOjAsYmFja2dyb3VuZDoibm9uZSJ9LG0mJmYuZXh0ZW5kKHAse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiLTk5OXB4Iix0b3A6Ii05OTlweCJ9KTtmb3IodCBpbiBwKW8uc3R5bGVbdF09cFt0XTtvLmFwcGVuZENoaWxkKGEpLG49bXx8YixuLmluc2VydEJlZm9yZShvLG4uZmlyc3RDaGlsZCksay5hcHBlbmRDaGVja2VkPWkuY2hlY2tlZCxrLmJveE1vZGVsPWEub2Zmc2V0V2lkdGg9PT0yLCJ6b29tImluIGEuc3R5bGUmJihhLnN0eWxlLmRpc3BsYXk9ImlubGluZSIsYS5zdHlsZS56b29tPTEsay5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PWEub2Zmc2V0V2lkdGg9PT0yLGEuc3R5bGUuZGlzcGxheT0iIixhLmlubmVySFRNTD0iPGRpdiBzdHlsZT0nd2lkdGg6NHB4Oyc+PC9kaXY+IixrLnNocmlua1dyYXBCbG9ja3M9YS5vZmZzZXRXaWR0aCE9PTIpLGEuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZCBzdHlsZT0ncGFkZGluZzowO2JvcmRlcjowO2Rpc3BsYXk6bm9uZSc+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIscT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLHU9cVswXS5vZmZzZXRIZWlnaHQ9PT0wLHFbMF0uc3R5bGUuZGlzcGxheT0iIixxWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGsucmVsaWFibGVIaWRkZW5PZmZzZXRzPXUmJnFbMF0ub2Zmc2V0SGVpZ2h0PT09MCxhLmlubmVySFRNTD0iIixjLmRlZmF1bHRWaWV3JiZjLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihqPWMuY3JlYXRlRWxlbWVudCgiZGl2Iiksai5zdHlsZS53aWR0aD0iMCIsai5zdHlsZS5tYXJnaW5SaWdodD0iMCIsYS5hcHBlbmRDaGlsZChqKSxrLnJlbGlhYmxlTWFyZ2luUmlnaHQ9KHBhcnNlSW50KChjLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoaixudWxsKXx8e21hcmdpblJpZ2h0OjB9KS5tYXJnaW5SaWdodCwxMCl8fDApPT09MCk7aWYoYS5hdHRhY2hFdmVudClmb3IodCBpbntzdWJtaXQ6MSxjaGFuZ2U6MSxmb2N1c2luOjF9KXM9Im9uIit0LHU9cyBpbiBhLHV8fChhLnNldEF0dHJpYnV0ZShzLCJyZXR1cm47IiksdT10eXBlb2YgYVtzXT09ImZ1bmN0aW9uIiksa1t0KyJCdWJibGVzIl09dTtmKGZ1bmN0aW9uKCl7dmFyIGEsYixkLGUsZyxoLGk9MSxqPSJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7bWFyZ2luOjA7IixsPSJ2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXI6MDsiLG49InN0eWxlPSciK2orImJvcmRlcjo1cHggc29saWQgIzAwMDtwYWRkaW5nOjA7JyIscD0iPGRpdiAiK24rIj48ZGl2PjwvZGl2PjwvZGl2PiIrIjx0YWJsZSAiK24rIiBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPiIrIjx0cj48dGQ+PC90ZD48L3RyPjwvdGFibGU+IjttPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTshbXx8KGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxhLnN0eWxlLmNzc1RleHQ9bCsid2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjpzdGF0aWM7dG9wOjA7bWFyZ2luLXRvcDoiK2krInB4IixtLmluc2VydEJlZm9yZShhLG0uZmlyc3RDaGlsZCksbz1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG8uc3R5bGUuY3NzVGV4dD1qK2wsby5pbm5lckhUTUw9cCxhLmFwcGVuZENoaWxkKG8pLGI9by5maXJzdENoaWxkLGQ9Yi5maXJzdENoaWxkLGc9Yi5uZXh0U2libGluZy5maXJzdENoaWxkLmZpcnN0Q2hpbGQsaD17ZG9lc05vdEFkZEJvcmRlcjpkLm9mZnNldFRvcCE9PTUsZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHM6Zy5vZmZzZXRUb3A9PT01fSxkLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsZC5zdHlsZS50b3A9IjIwcHgiLGguZml4ZWRQb3NpdGlvbj1kLm9mZnNldFRvcD09PTIwfHxkLm9mZnNldFRvcD09PTE1LGQuc3R5bGUucG9zaXRpb249ZC5zdHlsZS50b3A9IiIsYi5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixiLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsaC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGU9ZC5vZmZzZXRUb3A9PT0tNSxoLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PW0ub2Zmc2V0VG9wIT09aSxtLnJlbW92ZUNoaWxkKGEpLG89YT1udWxsLGYuZXh0ZW5kKGssaCkpfSksby5pbm5lckhUTUw9IiIsbi5yZW1vdmVDaGlsZChvKSxvPWw9Zz1oPW09aj1hPWk9bnVsbDtyZXR1cm4ga30oKSxmLmJveE1vZGVsPWYuc3VwcG9ydC5ib3hNb2RlbDt2YXIgaj0vXig/Olx7LipcfXxcWy4qXF0pJC8saz0vKFtBLVpdKS9nO2YuZXh0ZW5kKHtjYWNoZTp7fSx1dWlkOjAsZXhwYW5kbzoialF1ZXJ5IisoZi5mbi5qcXVlcnkrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksbm9EYXRhOntlbWJlZDohMCxvYmplY3Q6ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIsYXBwbGV0OiEwfSxoYXNEYXRhOmZ1bmN0aW9uKGEpe2E9YS5ub2RlVHlwZT9mLmNhY2hlW2FbZi5leHBhbmRvXV06YVtmLmV4cGFuZG9dO3JldHVybiEhYSYmIW0oYSl9LGRhdGE6ZnVuY3Rpb24oYSxjLGQsZSl7aWYoISFmLmFjY2VwdERhdGEoYSkpe3ZhciBnLGgsaSxqPWYuZXhwYW5kbyxrPXR5cGVvZiBjPT0ic3RyaW5nIixsPWEubm9kZVR5cGUsbT1sP2YuY2FjaGU6YSxuPWw/YVtmLmV4cGFuZG9dOmFbZi5leHBhbmRvXSYmZi5leHBhbmRvLG89Yz09PSJldmVudHMiO2lmKCghbnx8IW1bbl18fCFvJiYhZSYmIW1bbl0uZGF0YSkmJmsmJmQ9PT1iKXJldHVybjtufHwobD9hW2YuZXhwYW5kb109bj0rK2YudXVpZDpuPWYuZXhwYW5kbyksbVtuXXx8KG1bbl09e30sbHx8KG1bbl0udG9KU09OPWYubm9vcCkpO2lmKHR5cGVvZiBjPT0ib2JqZWN0Inx8dHlwZW9mIGM9PSJmdW5jdGlvbiIpZT9tW25dPWYuZXh0ZW5kKG1bbl0sYyk6bVtuXS5kYXRhPWYuZXh0ZW5kKG1bbl0uZGF0YSxjKTtnPWg9bVtuXSxlfHwoaC5kYXRhfHwoaC5kYXRhPXt9KSxoPWguZGF0YSksZCE9PWImJihoW2YuY2FtZWxDYXNlKGMpXT1kKTtpZihvJiYhaFtjXSlyZXR1cm4gZy5ldmVudHM7az8oaT1oW2NdLGk9PW51bGwmJihpPWhbZi5jYW1lbENhc2UoYyldKSk6aT1oO3JldHVybiBpfX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIsYyl7aWYoISFmLmFjY2VwdERhdGEoYSkpe3ZhciBkLGUsZyxoPWYuZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP2YuY2FjaGU6YSxrPWk/YVtmLmV4cGFuZG9dOmYuZXhwYW5kbztpZighaltrXSlyZXR1cm47aWYoYil7ZD1jP2pba106altrXS5kYXRhO2lmKGQpe2YuaXNBcnJheShiKT9iPWI6YiBpbiBkP2I9W2JdOihiPWYuY2FtZWxDYXNlKGIpLGIgaW4gZD9iPVtiXTpiPWIuc3BsaXQoIiAiKSk7Zm9yKGU9MCxnPWIubGVuZ3RoO2U8ZztlKyspZGVsZXRlIGRbYltlXV07aWYoIShjP206Zi5pc0VtcHR5T2JqZWN0KShkKSlyZXR1cm59fWlmKCFjKXtkZWxldGUgaltrXS5kYXRhO2lmKCFtKGpba10pKXJldHVybn1mLnN1cHBvcnQuZGVsZXRlRXhwYW5kb3x8IWouc2V0SW50ZXJ2YWw/ZGVsZXRlIGpba106altrXT1udWxsLGkmJihmLnN1cHBvcnQuZGVsZXRlRXhwYW5kbz9kZWxldGUgYVtmLmV4cGFuZG9dOmEucmVtb3ZlQXR0cmlidXRlP2EucmVtb3ZlQXR0cmlidXRlKGYuZXhwYW5kbyk6YVtmLmV4cGFuZG9dPW51bGwpfX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRhdGEoYSxiLGMsITApfSxhY2NlcHREYXRhOmZ1bmN0aW9uKGEpe2lmKGEubm9kZU5hbWUpe3ZhciBiPWYubm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKV07aWYoYilyZXR1cm4gYiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn1yZXR1cm4hMH19KSxmLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihhLGMpe3ZhciBkLGUsZyxoPW51bGw7aWYodHlwZW9mIGE9PSJ1bmRlZmluZWQiKXtpZih0aGlzLmxlbmd0aCl7aD1mLmRhdGEodGhpc1swXSk7aWYodGhpc1swXS5ub2RlVHlwZT09PTEmJiFmLl9kYXRhKHRoaXNbMF0sInBhcnNlZEF0dHJzIikpe2U9dGhpc1swXS5hdHRyaWJ1dGVzO2Zvcih2YXIgaT0wLGo9ZS5sZW5ndGg7aTxqO2krKylnPWVbaV0ubmFtZSxnLmluZGV4T2YoImRhdGEtIik9PT0wJiYoZz1mLmNhbWVsQ2FzZShnLnN1YnN0cmluZyg1KSksbCh0aGlzWzBdLGcsaFtnXSkpO2YuX2RhdGEodGhpc1swXSwicGFyc2VkQXR0cnMiLCEwKX19cmV0dXJuIGh9aWYodHlwZW9mIGE9PSJvYmplY3QiKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmRhdGEodGhpcyxhKX0pO2Q9YS5zcGxpdCgiLiIpLGRbMV09ZFsxXT8iLiIrZFsxXToiIjtpZihjPT09Yil7aD10aGlzLnRyaWdnZXJIYW5kbGVyKCJnZXREYXRhIitkWzFdKyIhIixbZFswXV0pLGg9PT1iJiZ0aGlzLmxlbmd0aCYmKGg9Zi5kYXRhKHRoaXNbMF0sYSksaD1sKHRoaXNbMF0sYSxoKSk7cmV0dXJuIGg9PT1iJiZkWzFdP3RoaXMuZGF0YShkWzBdKTpofXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1mKHRoaXMpLGU9W2RbMF0sY107Yi50cmlnZ2VySGFuZGxlcigic2V0RGF0YSIrZFsxXSsiISIsZSksZi5kYXRhKHRoaXMsYSxjKSxiLnRyaWdnZXJIYW5kbGVyKCJjaGFuZ2VEYXRhIitkWzFdKyIhIixlKX0pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLGYuZXh0ZW5kKHtfbWFyazpmdW5jdGlvbihhLGIpe2EmJihiPShifHwiZngiKSsibWFyayIsZi5fZGF0YShhLGIsKGYuX2RhdGEoYSxiKXx8MCkrMSkpfSxfdW5tYXJrOmZ1bmN0aW9uKGEsYixjKXthIT09ITAmJihjPWIsYj1hLGE9ITEpO2lmKGIpe2M9Y3x8ImZ4Ijt2YXIgZD1jKyJtYXJrIixlPWE/MDooZi5fZGF0YShiLGQpfHwxKS0xO2U/Zi5fZGF0YShiLGQsZSk6KGYucmVtb3ZlRGF0YShiLGQsITApLG4oYixjLCJtYXJrIikpfX0scXVldWU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGEpe2I9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1mLl9kYXRhKGEsYiksYyYmKCFkfHxmLmlzQXJyYXkoYyk/ZD1mLl9kYXRhKGEsYixmLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKTtyZXR1cm4gZHx8W119fSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPWYucXVldWUoYSxiKSxkPWMuc2hpZnQoKSxlPXt9O2Q9PT0iaW5wcm9ncmVzcyImJihkPWMuc2hpZnQoKSksZCYmKGI9PT0iZngiJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxmLl9kYXRhKGEsYisiLnJ1biIsZSksZC5jYWxsKGEsZnVuY3Rpb24oKXtmLmRlcXVldWUoYSxiKX0sZSkpLGMubGVuZ3RofHwoZi5yZW1vdmVEYXRhKGEsYisicXVldWUgIitiKyIucnVuIiwhMCksbihhLGIsInF1ZXVlIikpfX0pLGYuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGMpe3R5cGVvZiBhIT0ic3RyaW5nIiYmKGM9YSxhPSJmeCIpO2lmKGM9PT1iKXJldHVybiBmLnF1ZXVlKHRoaXNbMF0sYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYucXVldWUodGhpcyxhLGMpO2E9PT0iZngiJiZiWzBdIT09ImlucHJvZ3Jlc3MiJiZmLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmRlcXVldWUodGhpcyxhKX0pfSxkZWxheTpmdW5jdGlvbihhLGIpe2E9Zi5meD9mLmZ4LnNwZWVkc1thXXx8YTphLGI9Ynx8ImZ4IjtyZXR1cm4gdGhpcy5xdWV1ZShiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9c2V0VGltZW91dChiLGEpO2Muc3RvcD1mdW5jdGlvbigpe2NsZWFyVGltZW91dChkKX19KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGMpe2Z1bmN0aW9uIG0oKXstLWh8fGQucmVzb2x2ZVdpdGgoZSxbZV0pfXR5cGVvZiBhIT0ic3RyaW5nIiYmKGM9YSxhPWIpLGE9YXx8ImZ4Ijt2YXIgZD1mLkRlZmVycmVkKCksZT10aGlzLGc9ZS5sZW5ndGgsaD0xLGk9YSsiZGVmZXIiLGo9YSsicXVldWUiLGs9YSsibWFyayIsbDt3aGlsZShnLS0paWYobD1mLmRhdGEoZVtnXSxpLGIsITApfHwoZi5kYXRhKGVbZ10saixiLCEwKXx8Zi5kYXRhKGVbZ10sayxiLCEwKSkmJmYuZGF0YShlW2ddLGksZi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksITApKWgrKyxsLmFkZChtKTttKCk7cmV0dXJuIGQucHJvbWlzZSgpfX0pO3ZhciBvPS9bXG5cdFxyXS9nLHA9L1xzKy8scT0vXHIvZyxyPS9eKD86YnV0dG9ufGlucHV0KSQvaSxzPS9eKD86YnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8dGV4dGFyZWEpJC9pLHQ9L15hKD86cmVhKT8kL2ksdT0vXig/OmF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjaGVja2VkfGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkfHNlbGVjdGVkKSQvaSx2PWYuc3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGUsdyx4LHk7Zi5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxhLGIsITAsZi5hdHRyKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5yZW1vdmVBdHRyKHRoaXMsYSl9KX0scHJvcDpmdW5jdGlvbihhLGIpe3JldHVybiBmLmFjY2Vzcyh0aGlzLGEsYiwhMCxmLnByb3ApfSxyZW1vdmVQcm9wOmZ1bmN0aW9uKGEpe2E9Zi5wcm9wRml4W2FdfHxhO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0cnl7dGhpc1thXT1iLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGMpe319KX0sYWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZyxoLGk7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcyxiLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihhJiZ0eXBlb2YgYT09InN0cmluZyIpe2I9YS5zcGxpdChwKTtmb3IoYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKyl7ZT10aGlzW2NdO2lmKGUubm9kZVR5cGU9PT0xKWlmKCFlLmNsYXNzTmFtZSYmYi5sZW5ndGg9PT0xKWUuY2xhc3NOYW1lPWE7ZWxzZXtnPSIgIitlLmNsYXNzTmFtZSsiICI7Zm9yKGg9MCxpPWIubGVuZ3RoO2g8aTtoKyspfmcuaW5kZXhPZigiICIrYltoXSsiICIpfHwoZys9YltoXSsiICIpO2UuY2xhc3NOYW1lPWYudHJpbShnKX19fXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYyxkLGUsZyxoLGksajtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGEmJnR5cGVvZiBhPT0ic3RyaW5nInx8YT09PWIpe2M9KGF8fCIiKS5zcGxpdChwKTtmb3IoZD0wLGU9dGhpcy5sZW5ndGg7ZDxlO2QrKyl7Zz10aGlzW2RdO2lmKGcubm9kZVR5cGU9PT0xJiZnLmNsYXNzTmFtZSlpZihhKXtoPSgiICIrZy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKG8sIiAiKTtmb3IoaT0wLGo9Yy5sZW5ndGg7aTxqO2krKyloPWgucmVwbGFjZSgiICIrY1tpXSsiICIsIiAiKTtnLmNsYXNzTmFtZT1mLnRyaW0oaCl9ZWxzZSBnLmNsYXNzTmFtZT0iIn19cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGEsZD10eXBlb2YgYj09ImJvb2xlYW4iO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe2YodGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyx0aGlzLmNsYXNzTmFtZSxiKSxiKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihjPT09InN0cmluZyIpe3ZhciBlLGc9MCxoPWYodGhpcyksaT1iLGo9YS5zcGxpdChwKTt3aGlsZShlPWpbZysrXSlpPWQ/aTohaC5oYXNDbGFzcyhlKSxoW2k/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXShlKX1lbHNlIGlmKGM9PT0idW5kZWZpbmVkInx8Yz09PSJib29sZWFuIil0aGlzLmNsYXNzTmFtZSYmZi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjpmLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiJ9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGI9IiAiK2ErIiAiLGM9MCxkPXRoaXMubGVuZ3RoO2Zvcig7YzxkO2MrKylpZih0aGlzW2NdLm5vZGVUeXBlPT09MSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UobywiICIpLmluZGV4T2YoYik+LTEpcmV0dXJuITA7cmV0dXJuITF9LHZhbDpmdW5jdGlvbihhKXt2YXIgYyxkLGUsZz10aGlzWzBdO2lmKCFhcmd1bWVudHMubGVuZ3RoKXtpZihnKXtjPWYudmFsSG9va3NbZy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXXx8Zi52YWxIb29rc1tnLnR5cGVdO2lmKGMmJiJnZXQiaW4gYyYmKGQ9Yy5nZXQoZywidmFsdWUiKSkhPT1iKXJldHVybiBkO2Q9Zy52YWx1ZTtyZXR1cm4gdHlwZW9mIGQ9PSJzdHJpbmciP2QucmVwbGFjZShxLCIiKTpkPT1udWxsPyIiOmR9cmV0dXJuIGJ9ZT1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihkKXt2YXIgZz1mKHRoaXMpLGg7aWYodGhpcy5ub2RlVHlwZT09PTEpe2U/aD1hLmNhbGwodGhpcyxkLGcudmFsKCkpOmg9YSxoPT1udWxsP2g9IiI6dHlwZW9mIGg9PSJudW1iZXIiP2grPSIiOmYuaXNBcnJheShoKSYmKGg9Zi5tYXAoaCxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpLGM9Zi52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxmLnZhbEhvb2tzW3RoaXMudHlwZV07aWYoIWN8fCEoInNldCJpbiBjKXx8Yy5zZXQodGhpcyxoLCJ2YWx1ZSIpPT09Yil0aGlzLnZhbHVlPWh9fSl9fSksZi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZz1hLnNlbGVjdGVkSW5kZXgsaD1bXSxpPWEub3B0aW9ucyxqPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihnPDApcmV0dXJuIG51bGw7Yz1qP2c6MCxkPWo/ZysxOmkubGVuZ3RoO2Zvcig7YzxkO2MrKyl7ZT1pW2NdO2lmKGUuc2VsZWN0ZWQmJihmLnN1cHBvcnQub3B0RGlzYWJsZWQ/IWUuZGlzYWJsZWQ6ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIik9PT1udWxsKSYmKCFlLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFmLm5vZGVOYW1lKGUucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2I9ZihlKS52YWwoKTtpZihqKXJldHVybiBiO2gucHVzaChiKX19aWYoaiYmIWgubGVuZ3RoJiZpLmxlbmd0aClyZXR1cm4gZihpW2ddKS52YWwoKTtyZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9Zi5tYWtlQXJyYXkoYik7ZihhKS5maW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1mLmluQXJyYXkoZih0aGlzKS52YWwoKSxjKT49MH0pLGMubGVuZ3RofHwoYS5zZWxlY3RlZEluZGV4PS0xKTtyZXR1cm4gY319fSxhdHRyRm46e3ZhbDohMCxjc3M6ITAsaHRtbDohMCx0ZXh0OiEwLGRhdGE6ITAsd2lkdGg6ITAsaGVpZ2h0OiEwLG9mZnNldDohMH0sYXR0cjpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZyxoLGksaj1hLm5vZGVUeXBlO2lmKCFhfHxqPT09M3x8aj09PTh8fGo9PT0yKXJldHVybiBiO2lmKGUmJmMgaW4gZi5hdHRyRm4pcmV0dXJuIGYoYSlbY10oZCk7aWYoISgiZ2V0QXR0cmlidXRlImluIGEpKXJldHVybiBmLnByb3AoYSxjLGQpO2k9aiE9PTF8fCFmLmlzWE1MRG9jKGEpLGkmJihjPWMudG9Mb3dlckNhc2UoKSxoPWYuYXR0ckhvb2tzW2NdfHwodS50ZXN0KGMpP3g6dykpO2lmKGQhPT1iKXtpZihkPT09bnVsbCl7Zi5yZW1vdmVBdHRyKGEsYyk7cmV0dXJuIGJ9aWYoaCYmInNldCJpbiBoJiZpJiYoZz1oLnNldChhLGQsYykpIT09YilyZXR1cm4gZzthLnNldEF0dHJpYnV0ZShjLCIiK2QpO3JldHVybiBkfWlmKGgmJiJnZXQiaW4gaCYmaSYmKGc9aC5nZXQoYSxjKSkhPT1udWxsKXJldHVybiBnO2c9YS5nZXRBdHRyaWJ1dGUoYyk7cmV0dXJuIGc9PT1udWxsP2I6Z30scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxnLGg9MDtpZihhLm5vZGVUeXBlPT09MSl7ZD0oYnx8IiIpLnNwbGl0KHApLGc9ZC5sZW5ndGg7Zm9yKDtoPGc7aCsrKWU9ZFtoXS50b0xvd2VyQ2FzZSgpLGM9Zi5wcm9wRml4W2VdfHxlLGYuYXR0cihhLGUsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHY/ZTpjKSx1LnRlc3QoZSkmJmMgaW4gYSYmKGFbY109ITEpfX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxiKXtpZihyLnRlc3QoYS5ub2RlTmFtZSkmJmEucGFyZW50Tm9kZSlmLmVycm9yKCJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQiKTtlbHNlIGlmKCFmLnN1cHBvcnQucmFkaW9WYWx1ZSYmYj09PSJyYWRpbyImJmYubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTthLnNldEF0dHJpYnV0ZSgidHlwZSIsYiksYyYmKGEudmFsdWU9Yyk7cmV0dXJuIGJ9fX0sdmFsdWU6e2dldDpmdW5jdGlvbihhLGIpe2lmKHcmJmYubm9kZU5hbWUoYSwiYnV0dG9uIikpcmV0dXJuIHcuZ2V0KGEsYik7cmV0dXJuIGIgaW4gYT9hLnZhbHVlOm51bGx9LHNldDpmdW5jdGlvbihhLGIsYyl7aWYodyYmZi5ub2RlTmFtZShhLCJidXR0b24iKSlyZXR1cm4gdy5zZXQoYSxiLGMpO2EudmFsdWU9Yn19fSxwcm9wRml4Ont0YWJpbmRleDoidGFiSW5kZXgiLHJlYWRvbmx5OiJyZWFkT25seSIsImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIsY2VsbHBhZGRpbmc6ImNlbGxQYWRkaW5nIixyb3dzcGFuOiJyb3dTcGFuIixjb2xzcGFuOiJjb2xTcGFuIix1c2VtYXA6InVzZU1hcCIsZnJhbWVib3JkZXI6ImZyYW1lQm9yZGVyIixjb250ZW50ZWRpdGFibGU6ImNvbnRlbnRFZGl0YWJsZSJ9LHByb3A6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGcsaCxpPWEubm9kZVR5cGU7aWYoIWF8fGk9PT0zfHxpPT09OHx8aT09PTIpcmV0dXJuIGI7aD1pIT09MXx8IWYuaXNYTUxEb2MoYSksaCYmKGM9Zi5wcm9wRml4W2NdfHxjLGc9Zi5wcm9wSG9va3NbY10pO3JldHVybiBkIT09Yj9nJiYic2V0ImluIGcmJihlPWcuc2V0KGEsZCxjKSkhPT1iP2U6YVtjXT1kOmcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSxjKSkhPT1udWxsP2U6YVtjXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBjPWEuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTtyZXR1cm4gYyYmYy5zcGVjaWZpZWQ/cGFyc2VJbnQoYy52YWx1ZSwxMCk6cy50ZXN0KGEubm9kZU5hbWUpfHx0LnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOmJ9fX19KSxmLmF0dHJIb29rcy50YWJpbmRleD1mLnByb3BIb29rcy50YWJJbmRleCx4PXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZCxlPWYucHJvcChhLGMpO3JldHVybiBlPT09ITB8fHR5cGVvZiBlIT0iYm9vbGVhbiImJihkPWEuZ2V0QXR0cmlidXRlTm9kZShjKSkmJmQubm9kZVZhbHVlIT09ITE/Yy50b0xvd2VyQ2FzZSgpOmJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7Yj09PSExP2YucmVtb3ZlQXR0cihhLGMpOihkPWYucHJvcEZpeFtjXXx8YyxkIGluIGEmJihhW2RdPSEwKSxhLnNldEF0dHJpYnV0ZShjLGMudG9Mb3dlckNhc2UoKSkpO3JldHVybiBjfX0sdnx8KHk9e25hbWU6ITAsaWQ6ITB9LHc9Zi52YWxIb29rcy5idXR0b249e2dldDpmdW5jdGlvbihhLGMpe3ZhciBkO2Q9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkJiYoeVtjXT9kLm5vZGVWYWx1ZSE9PSIiOmQuc3BlY2lmaWVkKT9kLm5vZGVWYWx1ZTpifSxzZXQ6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWEuZ2V0QXR0cmlidXRlTm9kZShkKTtlfHwoZT1jLmNyZWF0ZUF0dHJpYnV0ZShkKSxhLnNldEF0dHJpYnV0ZU5vZGUoZSkpO3JldHVybiBlLm5vZGVWYWx1ZT1iKyIifX0sZi5hdHRySG9va3MudGFiaW5kZXguc2V0PXcuc2V0LGYuZWFjaChbIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxiKXtmLmF0dHJIb29rc1tiXT1mLmV4dGVuZChmLmF0dHJIb29rc1tiXSx7c2V0OmZ1bmN0aW9uKGEsYyl7aWYoYz09PSIiKXthLnNldEF0dHJpYnV0ZShiLCJhdXRvIik7cmV0dXJuIGN9fX0pfSksZi5hdHRySG9va3MuY29udGVudGVkaXRhYmxlPXtnZXQ6dy5nZXQsc2V0OmZ1bmN0aW9uKGEsYixjKXtiPT09IiImJihiPSJmYWxzZSIpLHcuc2V0KGEsYixjKX19KSxmLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWR8fGYuZWFjaChbImhyZWYiLCJzcmMiLCJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYyl7Zi5hdHRySG9va3NbY109Zi5leHRlbmQoZi5hdHRySG9va3NbY10se2dldDpmdW5jdGlvbihhKXt2YXIgZD1hLmdldEF0dHJpYnV0ZShjLDIpO3JldHVybiBkPT09bnVsbD9iOmR9fSl9KSxmLnN1cHBvcnQuc3R5bGV8fChmLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHQudG9Mb3dlckNhc2UoKXx8Yn0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD0iIitifX0pLGYuc3VwcG9ydC5vcHRTZWxlY3RlZHx8KGYucHJvcEhvb2tzLnNlbGVjdGVkPWYuZXh0ZW5kKGYucHJvcEhvb2tzLnNlbGVjdGVkLHtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO2ImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCk7cmV0dXJuIG51bGx9fSkpLGYuc3VwcG9ydC5lbmN0eXBlfHwoZi5wcm9wRml4LmVuY3R5cGU9ImVuY29kaW5nIiksZi5zdXBwb3J0LmNoZWNrT258fGYuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2YudmFsSG9va3NbdGhpc109e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInZhbHVlIik9PT1udWxsPyJvbiI6YS52YWx1ZX19fSksZi5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Zi52YWxIb29rc1t0aGlzXT1mLmV4dGVuZChmLnZhbEhvb2tzW3RoaXNdLHtzZXQ6ZnVuY3Rpb24oYSxiKXtpZihmLmlzQXJyYXkoYikpcmV0dXJuIGEuY2hlY2tlZD1mLmluQXJyYXkoZihhKS52YWwoKSxiKT49MH19KX0pO3ZhciB6PS9cLiguKikkLyxBPS9eKD86dGV4dGFyZWF8aW5wdXR8c2VsZWN0KSQvaSxCPS9cLi9nLEM9LyAvZyxEPS9bXlx3XHMufGBdL2csRT0vXihbXlwuXSopPyg/OlwuKC4rKSk/JC8sRj0vXGJob3ZlcihcLlxTKyk/LyxHPS9ea2V5LyxIPS9eKD86bW91c2V8Y29udGV4dG1lbnUpfGNsaWNrLyxJPS9eKFx3KikoPzojKFtcd1wtXSspKT8oPzpcLihbXHdcLV0rKSk/JC8sSj1mdW5jdGlvbihhKXt2YXIgYj1JLmV4ZWMoYSk7YiYmCihiWzFdPShiWzFdfHwiIikudG9Mb3dlckNhc2UoKSxiWzNdPWJbM10mJm5ldyBSZWdFeHAoIig/Ol58XFxzKSIrYlszXSsiKD86XFxzfCQpIikpO3JldHVybiBifSxLPWZ1bmN0aW9uKGEsYil7cmV0dXJuKCFiWzFdfHxhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iWzFdKSYmKCFiWzJdfHxhLmlkPT09YlsyXSkmJighYlszXXx8YlszXS50ZXN0KGEuY2xhc3NOYW1lKSl9LEw9ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZXZlbnQuc3BlY2lhbC5ob3Zlcj9hOmEucmVwbGFjZShGLCJtb3VzZWVudGVyJDEgbW91c2VsZWF2ZSQxIil9O2YuZXZlbnQ9e2FkZDpmdW5jdGlvbihhLGMsZCxlLGcpe3ZhciBoLGksaixrLGwsbSxuLG8scCxxLHIscztpZighKGEubm9kZVR5cGU9PT0zfHxhLm5vZGVUeXBlPT09OHx8IWN8fCFkfHwhKGg9Zi5fZGF0YShhKSkpKXtkLmhhbmRsZXImJihwPWQsZD1wLmhhbmRsZXIpLGQuZ3VpZHx8KGQuZ3VpZD1mLmd1aWQrKyksaj1oLmV2ZW50cyxqfHwoaC5ldmVudHM9aj17fSksaT1oLmhhbmRsZSxpfHwoaC5oYW5kbGU9aT1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGYhPSJ1bmRlZmluZWQiJiYoIWF8fGYuZXZlbnQudHJpZ2dlcmVkIT09YS50eXBlKT9mLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGkuZWxlbSxhcmd1bWVudHMpOmJ9LGkuZWxlbT1hKSxjPUwoYykuc3BsaXQoIiAiKTtmb3Ioaz0wO2s8Yy5sZW5ndGg7aysrKXtsPUUuZXhlYyhjW2tdKXx8W10sbT1sWzFdLG49KGxbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbT0oZz9zLmRlbGVnYXRlVHlwZTpzLmJpbmRUeXBlKXx8bSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbz1mLmV4dGVuZCh7dHlwZTptLG9yaWdUeXBlOmxbMV0sZGF0YTplLGhhbmRsZXI6ZCxndWlkOmQuZ3VpZCxzZWxlY3RvcjpnLG5hbWVzcGFjZTpuLmpvaW4oIi4iKX0scCksZyYmKG8ucXVpY2s9SihnKSwhby5xdWljayYmZi5leHByLm1hdGNoLlBPUy50ZXN0KGcpJiYoby5pc1Bvc2l0aW9uYWw9ITApKSxyPWpbbV07aWYoIXIpe3I9alttXT1bXSxyLmRlbGVnYXRlQ291bnQ9MDtpZighcy5zZXR1cHx8cy5zZXR1cC5jYWxsKGEsZSxuLGkpPT09ITEpYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihtLGksITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIittLGkpfXMuYWRkJiYocy5hZGQuY2FsbChhLG8pLG8uaGFuZGxlci5ndWlkfHwoby5oYW5kbGVyLmd1aWQ9ZC5ndWlkKSksZz9yLnNwbGljZShyLmRlbGVnYXRlQ291bnQrKywwLG8pOnIucHVzaChvKSxmLmV2ZW50Lmdsb2JhbFttXT0hMH1hPW51bGx9fSxnbG9iYWw6e30scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWYuaGFzRGF0YShhKSYmZi5fZGF0YShhKSxnLGgsaSxqLGssbCxtLG4sbyxwLHE7aWYoISFlJiYhIShtPWUuZXZlbnRzKSl7Yj1MKGJ8fCIiKS5zcGxpdCgiICIpO2ZvcihnPTA7ZzxiLmxlbmd0aDtnKyspe2g9RS5leGVjKGJbZ10pfHxbXSxpPWhbMV0saj1oWzJdO2lmKCFpKXtqPWo/Ii4iK2o6IiI7Zm9yKGwgaW4gbSlmLmV2ZW50LnJlbW92ZShhLGwraixjLGQpO3JldHVybn1uPWYuZXZlbnQuc3BlY2lhbFtpXXx8e30saT0oZD9uLmRlbGVnYXRlVHlwZTpuLmJpbmRUeXBlKXx8aSxwPW1baV18fFtdLGs9cC5sZW5ndGgsaj1qP25ldyBSZWdFeHAoIihefFxcLikiK2ouc3BsaXQoIi4iKS5zb3J0KCkuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik6bnVsbDtpZihjfHxqfHxkfHxuLnJlbW92ZSlmb3IobD0wO2w8cC5sZW5ndGg7bCsrKXtxPXBbbF07aWYoIWN8fGMuZ3VpZD09PXEuZ3VpZClpZighanx8ai50ZXN0KHEubmFtZXNwYWNlKSlpZighZHx8ZD09PXEuc2VsZWN0b3J8fGQ9PT0iKioiJiZxLnNlbGVjdG9yKXAuc3BsaWNlKGwtLSwxKSxxLnNlbGVjdG9yJiZwLmRlbGVnYXRlQ291bnQtLSxuLnJlbW92ZSYmbi5yZW1vdmUuY2FsbChhLHEpfWVsc2UgcC5sZW5ndGg9MDtwLmxlbmd0aD09PTAmJmshPT1wLmxlbmd0aCYmKCghbi50ZWFyZG93bnx8bi50ZWFyZG93bi5jYWxsKGEsaik9PT0hMSkmJmYucmVtb3ZlRXZlbnQoYSxpLGUuaGFuZGxlKSxkZWxldGUgbVtpXSl9Zi5pc0VtcHR5T2JqZWN0KG0pJiYobz1lLmhhbmRsZSxvJiYoby5lbGVtPW51bGwpLGYucmVtb3ZlRGF0YShhLFsiZXZlbnRzIiwiaGFuZGxlIl0sITApKX19LGN1c3RvbUV2ZW50OntnZXREYXRhOiEwLHNldERhdGE6ITAsY2hhbmdlRGF0YTohMH0sdHJpZ2dlcjpmdW5jdGlvbihjLGQsZSxnKXtpZighZXx8ZS5ub2RlVHlwZSE9PTMmJmUubm9kZVR5cGUhPT04KXt2YXIgaD1jLnR5cGV8fGMsaT1bXSxqLGssbCxtLG4sbyxwLHEscixzO2guaW5kZXhPZigiISIpPj0wJiYoaD1oLnNsaWNlKDAsLTEpLGs9ITApLGguaW5kZXhPZigiLiIpPj0wJiYoaT1oLnNwbGl0KCIuIiksaD1pLnNoaWZ0KCksaS5zb3J0KCkpO2lmKCghZXx8Zi5ldmVudC5jdXN0b21FdmVudFtoXSkmJiFmLmV2ZW50Lmdsb2JhbFtoXSlyZXR1cm47Yz10eXBlb2YgYz09Im9iamVjdCI/Y1tmLmV4cGFuZG9dP2M6bmV3IGYuRXZlbnQoaCxjKTpuZXcgZi5FdmVudChoKSxjLnR5cGU9aCxjLmlzVHJpZ2dlcj0hMCxjLmV4Y2x1c2l2ZT1rLGMubmFtZXNwYWNlPWkuam9pbigiLiIpLGMubmFtZXNwYWNlX3JlPWMubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK2kuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik6bnVsbCxvPWguaW5kZXhPZigiOiIpPDA/Im9uIitoOiIiLChnfHwhZSkmJmMucHJldmVudERlZmF1bHQoKTtpZighZSl7aj1mLmNhY2hlO2ZvcihsIGluIGopaltsXS5ldmVudHMmJmpbbF0uZXZlbnRzW2hdJiZmLmV2ZW50LnRyaWdnZXIoYyxkLGpbbF0uaGFuZGxlLmVsZW0sITApO3JldHVybn1jLnJlc3VsdD1iLGMudGFyZ2V0fHwoYy50YXJnZXQ9ZSksZD1kIT1udWxsP2YubWFrZUFycmF5KGQpOltdLGQudW5zaGlmdChjKSxwPWYuZXZlbnQuc3BlY2lhbFtoXXx8e307aWYocC50cmlnZ2VyJiZwLnRyaWdnZXIuYXBwbHkoZSxkKT09PSExKXJldHVybjtyPVtbZSxwLmJpbmRUeXBlfHxoXV07aWYoIWcmJiFwLm5vQnViYmxlJiYhZi5pc1dpbmRvdyhlKSl7cz1wLmRlbGVnYXRlVHlwZXx8aCxuPW51bGw7Zm9yKG09ZS5wYXJlbnROb2RlO207bT1tLnBhcmVudE5vZGUpci5wdXNoKFttLHNdKSxuPW07biYmbj09PWUub3duZXJEb2N1bWVudCYmci5wdXNoKFtuLmRlZmF1bHRWaWV3fHxuLnBhcmVudFdpbmRvd3x8YSxzXSl9Zm9yKGw9MDtsPHIubGVuZ3RoO2wrKyl7bT1yW2xdWzBdLGMudHlwZT1yW2xdWzFdLHE9KGYuX2RhdGEobSwiZXZlbnRzIil8fHt9KVtjLnR5cGVdJiZmLl9kYXRhKG0sImhhbmRsZSIpLHEmJnEuYXBwbHkobSxkKSxxPW8mJm1bb10scSYmZi5hY2NlcHREYXRhKG0pJiZxLmFwcGx5KG0sZCk7aWYoYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfWMudHlwZT1oLGMuaXNEZWZhdWx0UHJldmVudGVkKCl8fCghcC5fZGVmYXVsdHx8cC5fZGVmYXVsdC5hcHBseShlLm93bmVyRG9jdW1lbnQsZCk9PT0hMSkmJihoIT09ImNsaWNrInx8IWYubm9kZU5hbWUoZSwiYSIpKSYmZi5hY2NlcHREYXRhKGUpJiZvJiZlW2hdJiYoaCE9PSJmb2N1cyImJmghPT0iYmx1ciJ8fGMudGFyZ2V0Lm9mZnNldFdpZHRoIT09MCkmJiFmLmlzV2luZG93KGUpJiYobj1lW29dLG4mJihlW29dPW51bGwpLGYuZXZlbnQudHJpZ2dlcmVkPWgsZVtoXSgpLGYuZXZlbnQudHJpZ2dlcmVkPWIsbiYmKGVbb109bikpO3JldHVybiBjLnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGMpe2M9Zi5ldmVudC5maXgoY3x8YS5ldmVudCk7dmFyIGQ9KGYuX2RhdGEodGhpcywiZXZlbnRzIil8fHt9KVtjLnR5cGVdfHxbXSxlPWQuZGVsZWdhdGVDb3VudCxnPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApLGg9IWMuZXhjbHVzaXZlJiYhYy5uYW1lc3BhY2UsaT0oZi5ldmVudC5zcGVjaWFsW2MudHlwZV18fHt9KS5oYW5kbGUsaj1bXSxrLGwsbSxuLG8scCxxLHIscyx0LHU7Z1swXT1jLGMuZGVsZWdhdGVUYXJnZXQ9dGhpcztpZihlJiYhYy50YXJnZXQuZGlzYWJsZWQmJighYy5idXR0b258fGMudHlwZSE9PSJjbGljayIpKWZvcihtPWMudGFyZ2V0O20hPXRoaXM7bT1tLnBhcmVudE5vZGV8fHRoaXMpe289e30scT1bXTtmb3Ioaz0wO2s8ZTtrKyspcj1kW2tdLHM9ci5zZWxlY3Rvcix0PW9bc10sci5pc1Bvc2l0aW9uYWw/dD0odHx8KG9bc109ZihzKSkpLmluZGV4KG0pPj0wOnQ9PT1iJiYodD1vW3NdPXIucXVpY2s/SyhtLHIucXVpY2spOmYobSkuaXMocykpLHQmJnEucHVzaChyKTtxLmxlbmd0aCYmai5wdXNoKHtlbGVtOm0sbWF0Y2hlczpxfSl9ZC5sZW5ndGg+ZSYmai5wdXNoKHtlbGVtOnRoaXMsbWF0Y2hlczpkLnNsaWNlKGUpfSk7Zm9yKGs9MDtrPGoubGVuZ3RoJiYhYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO2srKyl7cD1qW2tdLGMuY3VycmVudFRhcmdldD1wLmVsZW07Zm9yKGw9MDtsPHAubWF0Y2hlcy5sZW5ndGgmJiFjLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7bCsrKXtyPXAubWF0Y2hlc1tsXTtpZihofHwhYy5uYW1lc3BhY2UmJiFyLm5hbWVzcGFjZXx8Yy5uYW1lc3BhY2VfcmUmJmMubmFtZXNwYWNlX3JlLnRlc3Qoci5uYW1lc3BhY2UpKWMuZGF0YT1yLmRhdGEsYy5oYW5kbGVPYmo9cixuPShpfHxyLmhhbmRsZXIpLmFwcGx5KHAuZWxlbSxnKSxuIT09YiYmKGMucmVzdWx0PW4sbj09PSExJiYoYy5wcmV2ZW50RGVmYXVsdCgpLGMuc3RvcFByb3BhZ2F0aW9uKCkpKX19cmV0dXJuIGMucmVzdWx0fSxwcm9wczoiYXR0ckNoYW5nZSBhdHRyTmFtZSByZWxhdGVkTm9kZSBzcmNFbGVtZW50IGFsdEtleSBidWJibGVzIGNhbmNlbGFibGUgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIuc3BsaXQoIiAiKSxmaXhIb29rczp7fSxrZXlIb29rczp7cHJvcHM6ImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGUiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7YS53aGljaD09bnVsbCYmKGEud2hpY2g9Yi5jaGFyQ29kZSE9bnVsbD9iLmNoYXJDb2RlOmIua2V5Q29kZSk7cmV0dXJuIGF9fSxtb3VzZUhvb2tzOntwcm9wczoiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIGZyb21FbGVtZW50IG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50IHdoZWVsRGVsdGEiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsZCl7dmFyIGUsZixnLGg9ZC5idXR0b24saT1kLmZyb21FbGVtZW50O2EucGFnZVg9PW51bGwmJmQuY2xpZW50WCE9bnVsbCYmKGU9YS50YXJnZXQub3duZXJEb2N1bWVudHx8YyxmPWUuZG9jdW1lbnRFbGVtZW50LGc9ZS5ib2R5LGEucGFnZVg9ZC5jbGllbnRYKyhmJiZmLnNjcm9sbExlZnR8fGcmJmcuc2Nyb2xsTGVmdHx8MCktKGYmJmYuY2xpZW50TGVmdHx8ZyYmZy5jbGllbnRMZWZ0fHwwKSxhLnBhZ2VZPWQuY2xpZW50WSsoZiYmZi5zY3JvbGxUb3B8fGcmJmcuc2Nyb2xsVG9wfHwwKS0oZiYmZi5jbGllbnRUb3B8fGcmJmcuY2xpZW50VG9wfHwwKSksIWEucmVsYXRlZFRhcmdldCYmaSYmKGEucmVsYXRlZFRhcmdldD1pPT09YS50YXJnZXQ/ZC50b0VsZW1lbnQ6aSksIWEud2hpY2gmJmghPT1iJiYoYS53aGljaD1oJjE/MTpoJjI/MzpoJjQ/MjowKTtyZXR1cm4gYX19LGZpeDpmdW5jdGlvbihhKXtpZihhW2YuZXhwYW5kb10pcmV0dXJuIGE7dmFyIGQsZSxnPWEsaD1mLmV2ZW50LmZpeEhvb2tzW2EudHlwZV18fHt9LGk9aC5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChoLnByb3BzKTp0aGlzLnByb3BzO2E9Zi5FdmVudChnKTtmb3IoZD1pLmxlbmd0aDtkOyllPWlbLS1kXSxhW2VdPWdbZV07YS50YXJnZXR8fChhLnRhcmdldD1nLnNyY0VsZW1lbnR8fGMpLGEudGFyZ2V0Lm5vZGVUeXBlPT09MyYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGEubWV0YUtleT09PWImJihhLm1ldGFLZXk9YS5jdHJsS2V5KTtyZXR1cm4gaC5maWx0ZXI/aC5maWx0ZXIoYSxnKTphfSxzcGVjaWFsOntyZWFkeTp7c2V0dXA6Zi5iaW5kUmVhZHl9LGZvY3VzOntkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4iLG5vQnViYmxlOiEwfSxibHVyOntkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0Iixub0J1YmJsZTohMH0sYmVmb3JldW5sb2FkOntzZXR1cDpmdW5jdGlvbihhLGIsYyl7Zi5pc1dpbmRvdyh0aGlzKSYmKHRoaXMub25iZWZvcmV1bmxvYWQ9Yyl9LHRlYXJkb3duOmZ1bmN0aW9uKGEsYil7dGhpcy5vbmJlZm9yZXVubG9hZD09PWImJih0aGlzLm9uYmVmb3JldW5sb2FkPW51bGwpfX19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWYuZXh0ZW5kKG5ldyBmLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMCxvcmlnaW5hbEV2ZW50Ont9fSk7ZD9mLmV2ZW50LnRyaWdnZXIoZSxudWxsLGIpOmYuZXZlbnQuZGlzcGF0Y2guY2FsbChiLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmMucHJldmVudERlZmF1bHQoKX19LGYuZXZlbnQuaGFuZGxlPWYuZXZlbnQuZGlzcGF0Y2gsZi5yZW1vdmVFdmVudD1jLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXthLmRldGFjaEV2ZW50JiZhLmRldGFjaEV2ZW50KCJvbiIrYixjKX0sZi5FdmVudD1mdW5jdGlvbihhLGIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGYuRXZlbnQpKXJldHVybiBuZXcgZi5FdmVudChhLGIpO2EmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fGEucmV0dXJuVmFsdWU9PT0hMXx8YS5nZXRQcmV2ZW50RGVmYXVsdCYmYS5nZXRQcmV2ZW50RGVmYXVsdCgpP046TSk6dGhpcy50eXBlPWEsYiYmZi5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8Zi5ub3coKSx0aGlzW2YuZXhwYW5kb109ITB9LGYuRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPU47dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50OyFhfHwoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9Tjt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7IWF8fChhLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9Tix0aGlzLnN0b3BQcm9wYWdhdGlvbigpfSxpc0RlZmF1bHRQcmV2ZW50ZWQ6TSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpNLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOk19LGYuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7Zi5ldmVudC5zcGVjaWFsW2FdPWYuZXZlbnQuc3BlY2lhbFtiXT17ZGVsZWdhdGVUeXBlOmIsYmluZFR5cGU6YixoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPWEucmVsYXRlZFRhcmdldCxkPWEuaGFuZGxlT2JqLGU9ZC5zZWxlY3RvcixnLGg7aWYoIWN8fGQub3JpZ1R5cGU9PT1hLnR5cGV8fGMhPT1iJiYhZi5jb250YWlucyhiLGMpKWc9YS50eXBlLGEudHlwZT1kLm9yaWdUeXBlLGg9ZC5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9ZztyZXR1cm4gaH19fSksZi5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fChmLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe2lmKGYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO2YuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGM9YS50YXJnZXQsZD1mLm5vZGVOYW1lKGMsImlucHV0Iil8fGYubm9kZU5hbWUoYywiYnV0dG9uIik/Yy5mb3JtOmI7ZCYmIWQuX3N1Ym1pdF9hdHRhY2hlZCYmKGYuZXZlbnQuYWRkKGQsInN1Ym1pdC5fc3VibWl0IixmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJmYuZXZlbnQuc2ltdWxhdGUoInN1Ym1pdCIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksZC5fc3VibWl0X2F0dGFjaGVkPSEwKX0pfSx0ZWFyZG93bjpmdW5jdGlvbigpe2lmKGYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO2YuZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSksZi5zdXBwb3J0LmNoYW5nZUJ1YmJsZXN8fChmLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe2lmKEEudGVzdCh0aGlzLm5vZGVOYW1lKSl7aWYodGhpcy50eXBlPT09ImNoZWNrYm94Inx8dGhpcy50eXBlPT09InJhZGlvIilmLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXthLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lPT09ImNoZWNrZWQiJiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLGYuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMuX2p1c3RfY2hhbmdlZCYmKHRoaXMuX2p1c3RfY2hhbmdlZD0hMSxmLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCkpfSk7cmV0dXJuITF9Zi5ldmVudC5hZGQodGhpcywiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7QS50ZXN0KGIubm9kZU5hbWUpJiYhYi5fY2hhbmdlX2F0dGFjaGVkJiYoZi5ldmVudC5hZGQoYiwiY2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmIWEuaXNTaW11bGF0ZWQmJmYuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksYi5fY2hhbmdlX2F0dGFjaGVkPSEwKX0pfSxoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7aWYodGhpcyE9PWJ8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHxiLnR5cGUhPT0icmFkaW8iJiZiLnR5cGUhPT0iY2hlY2tib3giKXJldHVybiBhLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtmLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpO3JldHVybiBBLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksZi5zdXBwb3J0LmZvY3VzaW5CdWJibGVzfHxmLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGQ9MCxlPWZ1bmN0aW9uKGEpe2YuZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxmLmV2ZW50LmZpeChhKSwhMCl9O2YuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXtkKys9PT0wJiZjLmFkZEV2ZW50TGlzdGVuZXIoYSxlLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXstLWQ9PT0wJiZjLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxlLCEwKX19fSksZi5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYyxkLGUsZyl7dmFyIGgsaTtpZih0eXBlb2YgYT09Im9iamVjdCIpe3R5cGVvZiBjIT0ic3RyaW5nIiYmKGQ9YyxjPWIpO2ZvcihpIGluIGEpdGhpcy5vbihpLGMsZCxhW2ldLGcpO3JldHVybiB0aGlzfWQ9PW51bGwmJmU9PW51bGw/KGU9YyxkPWM9Yik6ZT09bnVsbCYmKHR5cGVvZiBjPT0ic3RyaW5nIj8oZT1kLGQ9Yik6KGU9ZCxkPWMsYz1iKSk7aWYoZT09PSExKWU9TTtlbHNlIGlmKCFlKXJldHVybiB0aGlzO2c9PT0xJiYoaD1lLGU9ZnVuY3Rpb24oYSl7ZigpLm9mZihhKTtyZXR1cm4gaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUuZ3VpZD1oLmd1aWR8fChoLmd1aWQ9Zi5ndWlkKyspKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5hZGQodGhpcyxhLGUsZCxjKX0pfSxvbmU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24uY2FsbCh0aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGMsZCl7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmope3ZhciBlPWEuaGFuZGxlT2JqO2YoYS5kZWxlZ2F0ZVRhcmdldCkub2ZmKGUubmFtZXNwYWNlP2UudHlwZSsiLiIrZS5uYW1lc3BhY2U6ZS50eXBlLGUuc2VsZWN0b3IsZS5oYW5kbGVyKTtyZXR1cm4gdGhpc31pZih0eXBlb2YgYT09Im9iamVjdCIpe2Zvcih2YXIgZyBpbiBhKXRoaXMub2ZmKGcsYyxhW2ddKTtyZXR1cm4gdGhpc31pZihjPT09ITF8fHR5cGVvZiBjPT0iZnVuY3Rpb24iKWQ9YyxjPWI7ZD09PSExJiYoZD1NKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5yZW1vdmUodGhpcyxhLGQsYyl9KX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGxpdmU6ZnVuY3Rpb24oYSxiLGMpe2YodGhpcy5jb250ZXh0KS5vbihhLHRoaXMuc2VsZWN0b3IsYixjKTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKGEsYil7Zih0aGlzLmNvbnRleHQpLm9mZihhLHRoaXMuc2VsZWN0b3J8fCIqKiIsYik7cmV0dXJuIHRoaXN9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09MT90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYSxjKX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7aWYodGhpc1swXSlyZXR1cm4gZi5ldmVudC50cmlnZ2VyKGEsYix0aGlzWzBdLCEwKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cyxjPWEuZ3VpZHx8Zi5ndWlkKyssZD0wLGU9ZnVuY3Rpb24oYyl7dmFyIGU9KGYuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkKXx8MCklZDtmLl9kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2EuZ3VpZCxlKzEpLGMucHJldmVudERlZmF1bHQoKTtyZXR1cm4gYltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfTtlLmd1aWQ9Yzt3aGlsZShkPGIubGVuZ3RoKWJbZCsrXS5ndWlkPWM7cmV0dXJuIHRoaXMuY2xpY2soZSl9LGhvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pLGYuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2YuZm5bYl09ZnVuY3Rpb24oYSxjKXtjPT1udWxsJiYoYz1hLGE9bnVsbCk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLmJpbmQoYixhLGMpOnRoaXMudHJpZ2dlcihiKX0sZi5hdHRyRm4mJihmLmF0dHJGbltiXT0hMCksRy50ZXN0KGIpJiYoZi5ldmVudC5maXhIb29rc1tiXT1mLmV2ZW50LmtleUhvb2tzKSxILnRlc3QoYikmJihmLmV2ZW50LmZpeEhvb2tzW2JdPWYuZXZlbnQubW91c2VIb29rcyl9KSxmdW5jdGlvbigpe2Z1bmN0aW9uIHgoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9aWYoai5ub2RlVHlwZT09PTEpe2d8fChqW2RdPWMsai5zaXpzZXQ9aCk7aWYodHlwZW9mIGIhPSJzdHJpbmciKXtpZihqPT09Yil7az0hMDticmVha319ZWxzZSBpZihtLmZpbHRlcihiLFtqXSkubGVuZ3RoPjApe2s9ajticmVha319aj1qW2FdfWVbaF09a319fWZ1bmN0aW9uIHcoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9ai5ub2RlVHlwZT09PTEmJiFnJiYoaltkXT1jLGouc2l6c2V0PWgpO2lmKGoubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIpe2s9ajticmVha31qPWpbYV19ZVtoXT1rfX19dmFyIGE9LygoPzpcKCg/OlwoW14oKV0rXCl8W14oKV0rKStcKXxcWyg/OlxbW15cW1xdXSpcXXxbJyJdW14nIl0qWyciXXxbXlxbXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8XG4pKikvZyxkPSJzaXpjYWNoZSIrKE1hdGgucmFuZG9tKCkrIiIpLnJlcGxhY2UoIi4iLCIiKSxlPTAsZz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGg9ITEsaT0hMCxqPS9cXC9nLGs9L1xyXG4vZyxsPS9cVy87WzAsMF0uc29ydChmdW5jdGlvbigpe2k9ITE7cmV0dXJuIDB9KTt2YXIgbT1mdW5jdGlvbihiLGQsZSxmKXtlPWV8fFtdLGQ9ZHx8Yzt2YXIgaD1kO2lmKGQubm9kZVR5cGUhPT0xJiZkLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZighYnx8dHlwZW9mIGIhPSJzdHJpbmciKXJldHVybiBlO3ZhciBpLGosayxsLG4scSxyLHQsdT0hMCx2PW0uaXNYTUwoZCksdz1bXSx4PWI7ZG97YS5leGVjKCIiKSxpPWEuZXhlYyh4KTtpZihpKXt4PWlbM10sdy5wdXNoKGlbMV0pO2lmKGlbMl0pe2w9aVszXTticmVha319fXdoaWxlKGkpO2lmKHcubGVuZ3RoPjEmJnAuZXhlYyhiKSlpZih3Lmxlbmd0aD09PTImJm8ucmVsYXRpdmVbd1swXV0paj15KHdbMF0rd1sxXSxkLGYpO2Vsc2V7aj1vLnJlbGF0aXZlW3dbMF1dP1tkXTptKHcuc2hpZnQoKSxkKTt3aGlsZSh3Lmxlbmd0aCliPXcuc2hpZnQoKSxvLnJlbGF0aXZlW2JdJiYoYis9dy5zaGlmdCgpKSxqPXkoYixqLGYpfWVsc2V7IWYmJncubGVuZ3RoPjEmJmQubm9kZVR5cGU9PT05JiYhdiYmby5tYXRjaC5JRC50ZXN0KHdbMF0pJiYhby5tYXRjaC5JRC50ZXN0KHdbdy5sZW5ndGgtMV0pJiYobj1tLmZpbmQody5zaGlmdCgpLGQsdiksZD1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KVswXTpuLnNldFswXSk7aWYoZCl7bj1mP3tleHByOncucG9wKCksc2V0OnMoZil9Om0uZmluZCh3LnBvcCgpLHcubGVuZ3RoPT09MSYmKHdbMF09PT0ifiJ8fHdbMF09PT0iKyIpJiZkLnBhcmVudE5vZGU/ZC5wYXJlbnROb2RlOmQsdiksaj1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KTpuLnNldCx3Lmxlbmd0aD4wP2s9cyhqKTp1PSExO3doaWxlKHcubGVuZ3RoKXE9dy5wb3AoKSxyPXEsby5yZWxhdGl2ZVtxXT9yPXcucG9wKCk6cT0iIixyPT1udWxsJiYocj1kKSxvLnJlbGF0aXZlW3FdKGsscix2KX1lbHNlIGs9dz1bXX1rfHwoaz1qKSxrfHxtLmVycm9yKHF8fGIpO2lmKGcuY2FsbChrKT09PSJbb2JqZWN0IEFycmF5XSIpaWYoIXUpZS5wdXNoLmFwcGx5KGUsayk7ZWxzZSBpZihkJiZkLm5vZGVUeXBlPT09MSlmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJihrW3RdPT09ITB8fGtbdF0ubm9kZVR5cGU9PT0xJiZtLmNvbnRhaW5zKGQsa1t0XSkpJiZlLnB1c2goalt0XSk7ZWxzZSBmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJmtbdF0ubm9kZVR5cGU9PT0xJiZlLnB1c2goalt0XSk7ZWxzZSBzKGssZSk7bCYmKG0obCxoLGUsZiksbS51bmlxdWVTb3J0KGUpKTtyZXR1cm4gZX07bS51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe2lmKHUpe2g9aSxhLnNvcnQodSk7aWYoaClmb3IodmFyIGI9MTtiPGEubGVuZ3RoO2IrKylhW2JdPT09YVtiLTFdJiZhLnNwbGljZShiLS0sMSl9cmV0dXJuIGF9LG0ubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBtKGEsbnVsbCxudWxsLGIpfSxtLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe3JldHVybiBtKGIsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9LG0uZmluZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2lmKCFhKXJldHVybltdO2ZvcihlPTAsZj1vLm9yZGVyLmxlbmd0aDtlPGY7ZSsrKXtoPW8ub3JkZXJbZV07aWYoZz1vLmxlZnRNYXRjaFtoXS5leGVjKGEpKXtpPWdbMV0sZy5zcGxpY2UoMSwxKTtpZihpLnN1YnN0cihpLmxlbmd0aC0xKSE9PSJcXCIpe2dbMV09KGdbMV18fCIiKS5yZXBsYWNlKGosIiIpLGQ9by5maW5kW2hdKGcsYixjKTtpZihkIT1udWxsKXthPWEucmVwbGFjZShvLm1hdGNoW2hdLCIiKTticmVha319fX1kfHwoZD10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOltdKTtyZXR1cm57c2V0OmQsZXhwcjphfX0sbS5maWx0ZXI9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixwLHE9YSxyPVtdLHM9Yyx0PWMmJmNbMF0mJm0uaXNYTUwoY1swXSk7d2hpbGUoYSYmYy5sZW5ndGgpe2ZvcihoIGluIG8uZmlsdGVyKWlmKChmPW8ubGVmdE1hdGNoW2hdLmV4ZWMoYSkpIT1udWxsJiZmWzJdKXtrPW8uZmlsdGVyW2hdLGw9ZlsxXSxnPSExLGYuc3BsaWNlKDEsMSk7aWYobC5zdWJzdHIobC5sZW5ndGgtMSk9PT0iXFwiKWNvbnRpbnVlO3M9PT1yJiYocj1bXSk7aWYoby5wcmVGaWx0ZXJbaF0pe2Y9by5wcmVGaWx0ZXJbaF0oZixzLGQscixlLHQpO2lmKCFmKWc9aT0hMDtlbHNlIGlmKGY9PT0hMCljb250aW51ZX1pZihmKWZvcihuPTA7KGo9c1tuXSkhPW51bGw7bisrKWomJihpPWsoaixmLG4scykscD1lXmksZCYmaSE9bnVsbD9wP2c9ITA6c1tuXT0hMTpwJiYoci5wdXNoKGopLGc9ITApKTtpZihpIT09Yil7ZHx8KHM9ciksYT1hLnJlcGxhY2Uoby5tYXRjaFtoXSwiIik7aWYoIWcpcmV0dXJuW107YnJlYWt9fWlmKGE9PT1xKWlmKGc9PW51bGwpbS5lcnJvcihhKTtlbHNlIGJyZWFrO3E9YX1yZXR1cm4gc30sbS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2F9O3ZhciBuPW0uZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIgYixjLGQ9YS5ub2RlVHlwZSxlPSIiO2lmKGQpe2lmKGQ9PT0xKXtpZih0eXBlb2YgYS50ZXh0Q29udGVudD09InN0cmluZyIpcmV0dXJuIGEudGV4dENvbnRlbnQ7aWYodHlwZW9mIGEuaW5uZXJUZXh0PT0ic3RyaW5nIilyZXR1cm4gYS5pbm5lclRleHQucmVwbGFjZShrLCIiKTtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpZSs9bihhKX1lbHNlIGlmKGQ9PT0zfHxkPT09NClyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSBmb3IoYj0wO2M9YVtiXTtiKyspYy5ub2RlVHlwZSE9PTgmJihlKz1uKGMpKTtyZXR1cm4gZX0sbz1tLnNlbGVjdG9ycz17b3JkZXI6WyJJRCIsIk5BTUUiLCJUQUciXSxtYXRjaDp7SUQ6LyMoKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLENMQVNTOi9cLigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKS8sTkFNRTovXFtuYW1lPVsnIl0qKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspWyciXSpcXS8sQVRUUjovXFtccyooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKylccyooPzooXFM/PSlccyooPzooWyciXSkoLio/KVwzfCgjPyg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSopfCl8KVxzKlxdLyxUQUc6L14oKD86W1x3XHUwMGMwLVx1RkZGRlwqXC1dfFxcLikrKS8sQ0hJTEQ6Lzoob25seXxudGh8bGFzdHxmaXJzdCktY2hpbGQoPzpcKFxzKihldmVufG9kZHwoPzpbK1wtXT9cZCt8KD86WytcLV0/XGQqKT9uXHMqKD86WytcLV1ccypcZCspPykpXHMqXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W15cLV18JCkvLFBTRVVETzovOigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/L30sbGVmdE1hdGNoOnt9LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgidHlwZSIpfX0scmVsYXRpdmU6eyIrIjpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBiPT0ic3RyaW5nIixkPWMmJiFsLnRlc3QoYiksZT1jJiYhZDtkJiYoYj1iLnRvTG93ZXJDYXNlKCkpO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGgsaDtmPGc7ZisrKWlmKGg9YVtmXSl7d2hpbGUoKGg9aC5wcmV2aW91c1NpYmxpbmcpJiZoLm5vZGVUeXBlIT09MSk7YVtmXT1lfHxoJiZoLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iP2h8fCExOmg9PT1ifWUmJm0uZmlsdGVyKGIsYSwhMCl9LCI+IjpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9dHlwZW9mIGI9PSJzdHJpbmciLGU9MCxmPWEubGVuZ3RoO2lmKGQmJiFsLnRlc3QoYikpe2I9Yi50b0xvd2VyQ2FzZSgpO2Zvcig7ZTxmO2UrKyl7Yz1hW2VdO2lmKGMpe3ZhciBnPWMucGFyZW50Tm9kZTthW2VdPWcubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWI/ZzohMX19fWVsc2V7Zm9yKDtlPGY7ZSsrKWM9YVtlXSxjJiYoYVtlXT1kP2MucGFyZW50Tm9kZTpjLnBhcmVudE5vZGU9PT1iKTtkJiZtLmZpbHRlcihiLGEsITApfX0sIiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwYXJlbnROb2RlIixiLGYsYSxkLGMpfSwifiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwcmV2aW91c1NpYmxpbmciLGIsZixhLGQsYyl9fSxmaW5kOntJRDpmdW5jdGlvbihhLGIsYyl7aWYodHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQhPSJ1bmRlZmluZWQiJiYhYyl7dmFyIGQ9Yi5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1cm4gZCYmZC5wYXJlbnROb2RlP1tkXTpbXX19LE5BTUU6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5TmFtZSE9InVuZGVmaW5lZCIpe3ZhciBjPVtdLGQ9Yi5nZXRFbGVtZW50c0J5TmFtZShhWzFdKTtmb3IodmFyIGU9MCxmPWQubGVuZ3RoO2U8ZjtlKyspZFtlXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKT09PWFbMV0mJmMucHVzaChkW2VdKTtyZXR1cm4gYy5sZW5ndGg9PT0wP251bGw6Y319LFRBRzpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIilyZXR1cm4gYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhWzFdKX19LHByZUZpbHRlcjp7Q0xBU1M6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2E9IiAiK2FbMV0ucmVwbGFjZShqLCIiKSsiICI7aWYoZilyZXR1cm4gYTtmb3IodmFyIGc9MCxoOyhoPWJbZ10pIT1udWxsO2crKyloJiYoZV4oaC5jbGFzc05hbWUmJigiICIraC5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKC9bXHRcblxyXS9nLCIgIikuaW5kZXhPZihhKT49MCk/Y3x8ZC5wdXNoKGgpOmMmJihiW2ddPSExKSk7cmV0dXJuITF9LElEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIil9LFRBRzpmdW5jdGlvbihhLGIpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIikudG9Mb3dlckNhc2UoKX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7aWYoYVsxXT09PSJudGgiKXthWzJdfHxtLmVycm9yKGFbMF0pLGFbMl09YVsyXS5yZXBsYWNlKC9eXCt8XHMqL2csIiIpO3ZhciBiPS8oLT8pKFxkKikoPzpuKFsrXC1dP1xkKikpPy8uZXhlYyhhWzJdPT09ImV2ZW4iJiYiMm4ifHxhWzJdPT09Im9kZCImJiIybisxInx8IS9cRC8udGVzdChhWzJdKSYmIjBuKyIrYVsyXXx8YVsyXSk7YVsyXT1iWzFdKyhiWzJdfHwxKS0wLGFbM109YlszXS0wfWVsc2UgYVsyXSYmbS5lcnJvcihhWzBdKTthWzBdPWUrKztyZXR1cm4gYX0sQVRUUjpmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YVsxXT1hWzFdLnJlcGxhY2UoaiwiIik7IWYmJm8uYXR0ck1hcFtnXSYmKGFbMV09by5hdHRyTWFwW2ddKSxhWzRdPShhWzRdfHxhWzVdfHwiIikucmVwbGFjZShqLCIiKSxhWzJdPT09In49IiYmKGFbNF09IiAiK2FbNF0rIiAiKTtyZXR1cm4gYX0sUFNFVURPOmZ1bmN0aW9uKGIsYyxkLGUsZil7aWYoYlsxXT09PSJub3QiKWlmKChhLmV4ZWMoYlszXSl8fCIiKS5sZW5ndGg+MXx8L15cdy8udGVzdChiWzNdKSliWzNdPW0oYlszXSxudWxsLG51bGwsYyk7ZWxzZXt2YXIgZz1tLmZpbHRlcihiWzNdLGMsZCwhMF5mKTtkfHxlLnB1c2guYXBwbHkoZSxnKTtyZXR1cm4hMX1lbHNlIGlmKG8ubWF0Y2guUE9TLnRlc3QoYlswXSl8fG8ubWF0Y2guQ0hJTEQudGVzdChiWzBdKSlyZXR1cm4hMDtyZXR1cm4gYn0sUE9TOmZ1bmN0aW9uKGEpe2EudW5zaGlmdCghMCk7cmV0dXJuIGF9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITEmJmEudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmNoZWNrZWQ9PT0hMH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7YS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtyZXR1cm4gYS5zZWxlY3RlZD09PSEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuISFhLmZpcnN0Q2hpbGR9LGVtcHR5OmZ1bmN0aW9uKGEpe3JldHVybiFhLmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihhLGIsYyl7cmV0dXJuISFtKGNbM10sYSkubGVuZ3RofSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuL2hcZC9pLnRlc3QoYS5ub2RlTmFtZSl9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSxjPWEudHlwZTtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInRleHQiPT09YyYmKGI9PT1jfHxiPT09bnVsbCl9LHJhZGlvOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYicmFkaW8iPT09YS50eXBlfSxjaGVja2JveDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImNoZWNrYm94Ij09PWEudHlwZX0sZmlsZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImZpbGUiPT09YS50eXBlfSxwYXNzd29yZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInBhc3N3b3JkIj09PWEudHlwZX0sc3VibWl0OmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oYj09PSJpbnB1dCJ8fGI9PT0iYnV0dG9uIikmJiJzdWJtaXQiPT09YS50eXBlfSxpbWFnZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImltYWdlIj09PWEudHlwZX0scmVzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybihiPT09ImlucHV0Inx8Yj09PSJidXR0b24iKSYmInJlc2V0Ij09PWEudHlwZX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gYj09PSJpbnB1dCImJiJidXR0b24iPT09YS50eXBlfHxiPT09ImJ1dHRvbiJ9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybi9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2kudGVzdChhLm5vZGVOYW1lKX0sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1hLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudH19LHNldEZpbHRlcnM6e2ZpcnN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0wfSxsYXN0OmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBiPT09ZC5sZW5ndGgtMX0sZXZlbjpmdW5jdGlvbihhLGIpe3JldHVybiBiJTI9PT0wfSxvZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUyPT09MX0sbHQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPGNbM10tMH0sZ3Q6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPmNbM10tMH0sbnRoOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY1szXS0wPT09Yn0sZXE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjWzNdLTA9PT1ifX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsxXSxmPW8uZmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpO2lmKGU9PT0iY29udGFpbnMiKXJldHVybihhLnRleHRDb250ZW50fHxhLmlubmVyVGV4dHx8bihbYV0pfHwiIikuaW5kZXhPZihiWzNdKT49MDtpZihlPT09Im5vdCIpe3ZhciBnPWJbM107Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKWlmKGdbaF09PT1hKXJldHVybiExO3JldHVybiEwfW0uZXJyb3IoZSl9LENISUxEOmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz1iWzFdLGw9YTtzd2l0Y2goayl7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShsPWwucHJldmlvdXNTaWJsaW5nKWlmKGwubm9kZVR5cGU9PT0xKXJldHVybiExO2lmKGs9PT0iZmlyc3QiKXJldHVybiEwO2w9YTtjYXNlImxhc3QiOndoaWxlKGw9bC5uZXh0U2libGluZylpZihsLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtyZXR1cm4hMDtjYXNlIm50aCI6Yz1iWzJdLGU9YlszXTtpZihjPT09MSYmZT09PTApcmV0dXJuITA7Zj1iWzBdLGc9YS5wYXJlbnROb2RlO2lmKGcmJihnW2RdIT09Znx8IWEubm9kZUluZGV4KSl7aT0wO2ZvcihsPWcuZmlyc3RDaGlsZDtsO2w9bC5uZXh0U2libGluZylsLm5vZGVUeXBlPT09MSYmKGwubm9kZUluZGV4PSsraSk7Z1tkXT1mfWo9YS5ub2RlSW5kZXgtZTtyZXR1cm4gYz09PTA/aj09PTA6aiVjPT09MCYmai9jPj0wfX0sSUQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlVHlwZT09PTEmJmEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn0sVEFHOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0iKiImJmEubm9kZVR5cGU9PT0xfHwhIWEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9LENMQVNTOmZ1bmN0aW9uKGEsYil7cmV0dXJuKCIgIisoYS5jbGFzc05hbWV8fGEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSsiICIpLmluZGV4T2YoYik+LTF9LEFUVFI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzFdLGQ9bS5hdHRyP20uYXR0cihhLGMpOm8uYXR0ckhhbmRsZVtjXT9vLmF0dHJIYW5kbGVbY10oYSk6YVtjXSE9bnVsbD9hW2NdOmEuZ2V0QXR0cmlidXRlKGMpLGU9ZCsiIixmPWJbMl0sZz1iWzRdO3JldHVybiBkPT1udWxsP2Y9PT0iIT0iOiFmJiZtLmF0dHI/ZCE9bnVsbDpmPT09Ij0iP2U9PT1nOmY9PT0iKj0iP2UuaW5kZXhPZihnKT49MDpmPT09In49Ij8oIiAiK2UrIiAiKS5pbmRleE9mKGcpPj0wOmc/Zj09PSIhPSI/ZSE9PWc6Zj09PSJePSI/ZS5pbmRleE9mKGcpPT09MDpmPT09IiQ9Ij9lLnN1YnN0cihlLmxlbmd0aC1nLmxlbmd0aCk9PT1nOmY9PT0ifD0iP2U9PT1nfHxlLnN1YnN0cigwLGcubGVuZ3RoKzEpPT09ZysiLSI6ITE6ZSYmZCE9PSExfSxQT1M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsyXSxmPW8uc2V0RmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpfX19LHA9by5tYXRjaC5QT1MscT1mdW5jdGlvbihhLGIpe3JldHVybiJcXCIrKGItMCsxKX07Zm9yKHZhciByIGluIG8ubWF0Y2gpby5tYXRjaFtyXT1uZXcgUmVnRXhwKG8ubWF0Y2hbcl0uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSksby5sZWZ0TWF0Y2hbcl09bmV3IFJlZ0V4cCgvKF4oPzoufFxyfFxuKSo/KS8uc291cmNlK28ubWF0Y2hbcl0uc291cmNlLnJlcGxhY2UoL1xcKFxkKykvZyxxKSk7dmFyIHM9ZnVuY3Rpb24oYSxiKXthPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsMCk7aWYoYil7Yi5wdXNoLmFwcGx5KGIsYSk7cmV0dXJuIGJ9cmV0dXJuIGF9O3RyeXtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjLmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLDApWzBdLm5vZGVUeXBlfWNhdGNoKHQpe3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9Ynx8W107aWYoZy5jYWxsKGEpPT09IltvYmplY3QgQXJyYXldIilBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLGEpO2Vsc2UgaWYodHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIilmb3IodmFyIGU9YS5sZW5ndGg7YzxlO2MrKylkLnB1c2goYVtjXSk7ZWxzZSBmb3IoO2FbY107YysrKWQucHVzaChhW2NdKTtyZXR1cm4gZH19dmFyIHUsdjtjLmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj91PWZ1bmN0aW9uKGEsYil7aWYoYT09PWIpe2g9ITA7cmV0dXJuIDB9aWYoIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb258fCFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXJldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPy0xOjE7cmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmND8tMToxfToodT1mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXtoPSEwO3JldHVybiAwfWlmKGEuc291cmNlSW5kZXgmJmIuc291cmNlSW5kZXgpcmV0dXJuIGEuc291cmNlSW5kZXgtYi5zb3VyY2VJbmRleDt2YXIgYyxkLGU9W10sZj1bXSxnPWEucGFyZW50Tm9kZSxpPWIucGFyZW50Tm9kZSxqPWc7aWYoZz09PWkpcmV0dXJuIHYoYSxiKTtpZighZylyZXR1cm4tMTtpZighaSlyZXR1cm4gMTt3aGlsZShqKWUudW5zaGlmdChqKSxqPWoucGFyZW50Tm9kZTtqPWk7d2hpbGUoailmLnVuc2hpZnQoaiksaj1qLnBhcmVudE5vZGU7Yz1lLmxlbmd0aCxkPWYubGVuZ3RoO2Zvcih2YXIgaz0wO2s8YyYmazxkO2srKylpZihlW2tdIT09ZltrXSlyZXR1cm4gdihlW2tdLGZba10pO3JldHVybiBrPT09Yz92KGEsZltrXSwtMSk6dihlW2tdLGIsMSl9LHY9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PT1iKXJldHVybiBjO3ZhciBkPWEubmV4dFNpYmxpbmc7d2hpbGUoZCl7aWYoZD09PWIpcmV0dXJuLTE7ZD1kLm5leHRTaWJsaW5nfXJldHVybiAxfSksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9InNjcmlwdCIrKG5ldyBEYXRlKS5nZXRUaW1lKCksZT1jLmRvY3VtZW50RWxlbWVudDthLmlubmVySFRNTD0iPGEgbmFtZT0nIitkKyInLz4iLGUuaW5zZXJ0QmVmb3JlKGEsZS5maXJzdENoaWxkKSxjLmdldEVsZW1lbnRCeUlkKGQpJiYoby5maW5kLklEPWZ1bmN0aW9uKGEsYyxkKXtpZih0eXBlb2YgYy5nZXRFbGVtZW50QnlJZCE9InVuZGVmaW5lZCImJiFkKXt2YXIgZT1jLmdldEVsZW1lbnRCeUlkKGFbMV0pO3JldHVybiBlP2UuaWQ9PT1hWzFdfHx0eXBlb2YgZS5nZXRBdHRyaWJ1dGVOb2RlIT0idW5kZWZpbmVkIiYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLm5vZGVWYWx1ZT09PWFbMV0/W2VdOmI6W119fSxvLmZpbHRlci5JRD1mdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUhPSJ1bmRlZmluZWQiJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGEubm9kZVR5cGU9PT0xJiZjJiZjLm5vZGVWYWx1ZT09PWJ9KSxlLnJlbW92ZUNoaWxkKGEpLGU9YT1udWxsfSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmFwcGVuZENoaWxkKGMuY3JlYXRlQ29tbWVudCgiIikpLGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg+MCYmKG8uZmluZC5UQUc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGFbMV0pO2lmKGFbMV09PT0iKiIpe3ZhciBkPVtdO2Zvcih2YXIgZT0wO2NbZV07ZSsrKWNbZV0ubm9kZVR5cGU9PT0xJiZkLnB1c2goY1tlXSk7Yz1kfXJldHVybiBjfSksYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLGEuZmlyc3RDaGlsZCYmdHlwZW9mIGEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPSJ1bmRlZmluZWQiJiZhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikhPT0iIyImJihvLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfSksYT1udWxsfSgpLGMucXVlcnlTZWxlY3RvckFsbCYmZnVuY3Rpb24oKXt2YXIgYT1tLGI9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPSJfX3NpenpsZV9fIjtiLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKCFiLnF1ZXJ5U2VsZWN0b3JBbGx8fGIucXVlcnlTZWxlY3RvckFsbCgiLlRFU1QiKS5sZW5ndGghPT0wKXttPWZ1bmN0aW9uKGIsZSxmLGcpe2U9ZXx8YztpZighZyYmIW0uaXNYTUwoZSkpe3ZhciBoPS9eKFx3KyQpfF5cLihbXHdcLV0rJCl8XiMoW1x3XC1dKyQpLy5leGVjKGIpO2lmKGgmJihlLm5vZGVUeXBlPT09MXx8ZS5ub2RlVHlwZT09PTkpKXtpZihoWzFdKXJldHVybiBzKGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYiksZik7aWYoaFsyXSYmby5maW5kLkNMQVNTJiZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIHMoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGhbMl0pLGYpfWlmKGUubm9kZVR5cGU9PT05KXtpZihiPT09ImJvZHkiJiZlLmJvZHkpcmV0dXJuIHMoW2UuYm9keV0sZik7aWYoaCYmaFszXSl7dmFyIGk9ZS5nZXRFbGVtZW50QnlJZChoWzNdKTtpZighaXx8IWkucGFyZW50Tm9kZSlyZXR1cm4gcyhbXSxmKTtpZihpLmlkPT09aFszXSlyZXR1cm4gcyhbaV0sZil9dHJ5e3JldHVybiBzKGUucXVlcnlTZWxlY3RvckFsbChiKSxmKX1jYXRjaChqKXt9fWVsc2UgaWYoZS5ub2RlVHlwZT09PTEmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJvYmplY3QiKXt2YXIgaz1lLGw9ZS5nZXRBdHRyaWJ1dGUoImlkIiksbj1sfHxkLHA9ZS5wYXJlbnROb2RlLHE9L15ccypbK35dLy50ZXN0KGIpO2w/bj1uLnJlcGxhY2UoLycvZywiXFwkJiIpOmUuc2V0QXR0cmlidXRlKCJpZCIsbikscSYmcCYmKGU9ZS5wYXJlbnROb2RlKTt0cnl7aWYoIXF8fHApcmV0dXJuIHMoZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWQ9JyIrbisiJ10gIitiKSxmKX1jYXRjaChyKXt9ZmluYWxseXtsfHxrLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBhKGIsZSxmLGcpfTtmb3IodmFyIGUgaW4gYSltW2VdPWFbZV07Yj1udWxsfX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuZG9jdW1lbnRFbGVtZW50LGI9YS5tYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3RvcjtpZihiKXt2YXIgZD0hYi5jYWxsKGMuY3JlYXRlRWxlbWVudCgiZGl2IiksImRpdiIpLGU9ITE7dHJ5e2IuY2FsbChjLmRvY3VtZW50RWxlbWVudCwiW3Rlc3QhPScnXTpzaXp6bGUiKX1jYXRjaChmKXtlPSEwfW0ubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYyl7Yz1jLnJlcGxhY2UoL1w9XHMqKFteJyJcXV0qKVxzKlxdL2csIj0nJDEnXSIpO2lmKCFtLmlzWE1MKGEpKXRyeXtpZihlfHwhby5tYXRjaC5QU0VVRE8udGVzdChjKSYmIS8hPS8udGVzdChjKSl7dmFyIGY9Yi5jYWxsKGEsYyk7aWYoZnx8IWR8fGEuZG9jdW1lbnQmJmEuZG9jdW1lbnQubm9kZVR5cGUhPT0xMSlyZXR1cm4gZn19Y2F0Y2goZyl7fXJldHVybiBtKGMsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9fX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5pbm5lckhUTUw9IjxkaXYgY2xhc3M9J3Rlc3QgZSc+PC9kaXY+PGRpdiBjbGFzcz0ndGVzdCc+PC9kaXY+IjtpZighIWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoIT09MCl7YS5sYXN0Q2hpbGQuY2xhc3NOYW1lPSJlIjtpZihhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGg9PT0xKXJldHVybjtvLm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIiksby5maW5kLkNMQVNTPWZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT0idW5kZWZpbmVkIiYmIWMpcmV0dXJuIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhWzFdKX0sYT1udWxsfX0oKSxjLmRvY3VtZW50RWxlbWVudC5jb250YWlucz9tLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEhPT1iJiYoYS5jb250YWlucz9hLmNvbnRhaW5zKGIpOiEwKX06Yy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/bS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpfTptLmNvbnRhaW5zPWZ1bmN0aW9uKCl7cmV0dXJuITF9LG0uaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9KGE/YS5vd25lckRvY3VtZW50fHxhOjApLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj9iLm5vZGVOYW1lIT09IkhUTUwiOiExfTt2YXIgeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZT1bXSxmPSIiLGc9Yi5ub2RlVHlwZT9bYl06Yjt3aGlsZShkPW8ubWF0Y2guUFNFVURPLmV4ZWMoYSkpZis9ZFswXSxhPWEucmVwbGFjZShvLm1hdGNoLlBTRVVETywiIik7YT1vLnJlbGF0aXZlW2FdP2ErIioiOmE7Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKW0oYSxnW2hdLGUsYyk7cmV0dXJuIG0uZmlsdGVyKGYsZSl9O20uYXR0cj1mLmF0dHIsbS5zZWxlY3RvcnMuYXR0ck1hcD17fSxmLmZpbmQ9bSxmLmV4cHI9bS5zZWxlY3RvcnMsZi5leHByWyI6Il09Zi5leHByLmZpbHRlcnMsZi51bmlxdWU9bS51bmlxdWVTb3J0LGYudGV4dD1tLmdldFRleHQsZi5pc1hNTERvYz1tLmlzWE1MLGYuY29udGFpbnM9bS5jb250YWluc30oKTt2YXIgTz0vVW50aWwkLyxQPS9eKD86cGFyZW50c3xwcmV2VW50aWx8cHJldkFsbCkvLFE9LywvLFI9L14uW146I1xbXC4sXSokLyxTPUFycmF5LnByb3RvdHlwZS5zbGljZSxUPWYuZXhwci5tYXRjaC5QT1MsVT17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGMsZDtpZih0eXBlb2YgYSE9InN0cmluZyIpcmV0dXJuIGYoYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspaWYoZi5jb250YWlucyhiW2NdLHRoaXMpKXJldHVybiEwfSk7dmFyIGU9dGhpcy5wdXNoU3RhY2soIiIsImZpbmQiLGEpLGcsaCxpO2ZvcihjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXtnPWUubGVuZ3RoLGYuZmluZChhLHRoaXNbY10sZSk7aWYoYz4wKWZvcihoPWc7aDxlLmxlbmd0aDtoKyspZm9yKGk9MDtpPGc7aSsrKWlmKGVbaV09PT1lW2hdKXtlLnNwbGljZShoLS0sMSk7YnJlYWt9fXJldHVybiBlfSxoYXM6ZnVuY3Rpb24oYSl7dmFyIGI9ZihhKTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxjPWIubGVuZ3RoO2E8YzthKyspaWYoZi5jb250YWlucyh0aGlzLGJbYV0pKXJldHVybiEwfSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVyh0aGlzLGEsITEpLCJub3QiLGEpfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFcodGhpcyxhLCEwKSwiZmlsdGVyIixhKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYodHlwZW9mIGE9PSJzdHJpbmciP1QudGVzdChhKT9mKGEsdGhpcy5jb250ZXh0KS5pbmRleCh0aGlzWzBdKT49MDpmLmZpbHRlcihhLHRoaXMpLmxlbmd0aD4wOnRoaXMuZmlsdGVyKGEpLmxlbmd0aD4wKX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQsZSxnPXRoaXNbMF07aWYoZi5pc0FycmF5KGEpKXt2YXIgaD0xO3doaWxlKGcmJmcub3duZXJEb2N1bWVudCYmZyE9PWIpe2ZvcihkPTA7ZDxhLmxlbmd0aDtkKyspZihnKS5pcyhhW2RdKSYmYy5wdXNoKHtzZWxlY3RvcjphW2RdLGVsZW06ZyxsZXZlbDpofSk7Zz1nLnBhcmVudE5vZGUsaCsrfXJldHVybiBjfXZhciBpPVQudGVzdChhKXx8dHlwZW9mIGEhPSJzdHJpbmciP2YoYSxifHx0aGlzLmNvbnRleHQpOjA7Zm9yKGQ9MCxlPXRoaXMubGVuZ3RoO2Q8ZTtkKyspe2c9dGhpc1tkXTt3aGlsZShnKXtpZihpP2kuaW5kZXgoZyk+LTE6Zi5maW5kLm1hdGNoZXNTZWxlY3RvcihnLGEpKXtjLnB1c2goZyk7YnJlYWt9Zz1nLnBhcmVudE5vZGU7aWYoIWd8fCFnLm93bmVyRG9jdW1lbnR8fGc9PT1ifHxnLm5vZGVUeXBlPT09MTEpYnJlYWt9fWM9Yy5sZW5ndGg+MT9mLnVuaXF1ZShjKTpjO3JldHVybiB0aGlzLnB1c2hTdGFjayhjLCJjbG9zZXN0IixhKX0saW5kZXg6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLnByZXZBbGwoKS5sZW5ndGg6LTE7aWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVybiBmLmluQXJyYXkodGhpc1swXSxmKGEpKTtyZXR1cm4gZi5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKX0sYWRkOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGE9PSJzdHJpbmciP2YoYSxiKTpmLm1ha2VBcnJheShhJiZhLm5vZGVUeXBlP1thXTphKSxkPWYubWVyZ2UodGhpcy5nZXQoKSxjKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVihjWzBdKXx8VihkWzBdKT9kOmYudW5pcXVlKGQpKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfX0pLGYuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmYi5ub2RlVHlwZSE9PTExP2I6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gZi5kaXIoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwYXJlbnROb2RlIixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gZi5udGgoYSwyLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBmLm50aChhLDIsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kaXIoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEucGFyZW50Tm9kZS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBmLm5vZGVOYW1lKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6Zi5tYWtlQXJyYXkoYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7Zi5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPWYubWFwKHRoaXMsYixjKSxnPVMuY2FsbChhcmd1bWVudHMpO08udGVzdChhKXx8KGQ9YyksZCYmdHlwZW9mIGQ9PSJzdHJpbmciJiYoZT1mLmZpbHRlcihkLGUpKSxlPXRoaXMubGVuZ3RoPjEmJiFVW2FdP2YudW5pcXVlKGUpOmUsKHRoaXMubGVuZ3RoPjF8fFEudGVzdChkKSkmJlAudGVzdChhKSYmKGU9ZS5yZXZlcnNlKCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhlLGEsZy5qb2luKCIsIikpfX0pLGYuZXh0ZW5kKHtmaWx0ZXI6ZnVuY3Rpb24oYSxiLGMpe2MmJihhPSI6bm90KCIrYSsiKSIpO3JldHVybiBiLmxlbmd0aD09PTE/Zi5maW5kLm1hdGNoZXNTZWxlY3RvcihiWzBdLGEpP1tiWzBdXTpbXTpmLmZpbmQubWF0Y2hlcyhhLGIpfSxkaXI6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPVtdLGc9YVtjXTt3aGlsZShnJiZnLm5vZGVUeXBlIT09OSYmKGQ9PT1ifHxnLm5vZGVUeXBlIT09MXx8IWYoZykuaXMoZCkpKWcubm9kZVR5cGU9PT0xJiZlLnB1c2goZyksZz1nW2NdO3JldHVybiBlfSxudGg6ZnVuY3Rpb24oYSxiLGMsZCl7Yj1ifHwxO3ZhciBlPTA7Zm9yKDthO2E9YVtjXSlpZihhLm5vZGVUeXBlPT09MSYmKytlPT09YilicmVhaztyZXR1cm4gYX0sc2libGluZzpmdW5jdGlvbihhLGIpe3ZhciBjPVtdO2Zvcig7YTthPWEubmV4dFNpYmxpbmcpYS5ub2RlVHlwZT09PTEmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSk7dmFyIFk9ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBjYW52YXMgZGF0YWxpc3QgZGV0YWlscyBmaWdjYXB0aW9uIGZpZ3VyZSBmb290ZXIgaGVhZGVyIGhncm91cCBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcHJvZ3Jlc3Mgc2VjdGlvbiBzdW1tYXJ5IHRpbWUgdmlkZW8iLFo9LyBqUXVlcnlcZCs9Iig/OlxkK3xudWxsKSIvZywkPS9eXHMrLyxfPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vaWcsYmE9LzwoW1x3Ol0rKS8sYmI9Lzx0Ym9keS9pLGJjPS88fCYjP1x3KzsvLGJkPS88KD86c2NyaXB0fHN0eWxlKS9pLGJlPS88KD86c2NyaXB0fG9iamVjdHxlbWJlZHxvcHRpb258c3R5bGUpL2ksYmY9bmV3IFJlZ0V4cCgiPCg/OiIrWS5yZXBsYWNlKCIgIiwifCIpKyIpIiwiaSIpLGJnPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLGJoPS9cLyhqYXZhfGVjbWEpc2NyaXB0L2ksYmk9L15ccyo8ISg/OlxbQ0RBVEFcW3xcLVwtKS8sYmo9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLF9kZWZhdWx0OlswLCIiLCIiXX0sYms9WChjKTtiai5vcHRncm91cD1iai5vcHRpb24sYmoudGJvZHk9YmoudGZvb3Q9YmouY29sZ3JvdXA9YmouY2FwdGlvbj1iai50aGVhZCxiai50aD1iai50ZCxmLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZXx8KGJqLl9kZWZhdWx0PVsxLCJkaXY8ZGl2PiIsIjwvZGl2PiJdKSxmLmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihhKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpO2MudGV4dChhLmNhbGwodGhpcyxiLGMudGV4dCgpKSl9KTtpZih0eXBlb2YgYSE9Im9iamVjdCImJmEhPT1iKXJldHVybiB0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0aGlzWzBdLm93bmVyRG9jdW1lbnR8fGMpLmNyZWF0ZVRleHROb2RlKGEpKTtyZXR1cm4gZi50ZXh0KHRoaXMpfSx3cmFwQWxsOmZ1bmN0aW9uKGEpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykud3JhcEFsbChhLmNhbGwodGhpcyxiKSl9KTtpZih0aGlzWzBdKXt2YXIgYj1mKGEsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCk7dGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKSxiLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXM7d2hpbGUoYS5maXJzdENoaWxkJiZhLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0xKWE9YS5maXJzdENoaWxkO3JldHVybiBhfSkuYXBwZW5kKHRoaXMpfXJldHVybiB0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS53cmFwSW5uZXIoYS5jYWxsKHRoaXMsYikpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YodGhpcykud3JhcEFsbChhKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7Zi5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fGYodGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuYXBwZW5kQ2hpbGQoYSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihhKXt0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5pbnNlcnRCZWZvcmUoYSx0aGlzLmZpcnN0Q2hpbGQpfSl9LGJlZm9yZTpmdW5jdGlvbigpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9Zihhcmd1bWVudHNbMF0pO2EucHVzaC5hcHBseShhLHRoaXMudG9BcnJheSgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYSwiYmVmb3JlIixhcmd1bWVudHMpfX0sYWZ0ZXI6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzLm5leHRTaWJsaW5nKX0pO2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBhPXRoaXMucHVzaFN0YWNrKHRoaXMsImFmdGVyIgosYXJndW1lbnRzKTthLnB1c2guYXBwbHkoYSxmKGFyZ3VtZW50c1swXSkudG9BcnJheSgpKTtyZXR1cm4gYX19LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ7KGQ9dGhpc1tjXSkhPW51bGw7YysrKWlmKCFhfHxmLmZpbHRlcihhLFtkXSkubGVuZ3RoKSFiJiZkLm5vZGVUeXBlPT09MSYmKGYuY2xlYW5EYXRhKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksZi5jbGVhbkRhdGEoW2RdKSksZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYjsoYj10aGlzW2FdKSE9bnVsbDthKyspe2Iubm9kZVR5cGU9PT0xJiZmLmNsZWFuRGF0YShiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3doaWxlKGIuZmlyc3RDaGlsZCliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7YT1hPT1udWxsPyExOmEsYj1iPT1udWxsP2E6YjtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZi5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtpZihhPT09YilyZXR1cm4gdGhpc1swXSYmdGhpc1swXS5ub2RlVHlwZT09PTE/dGhpc1swXS5pbm5lckhUTUwucmVwbGFjZShaLCIiKTpudWxsO2lmKHR5cGVvZiBhPT0ic3RyaW5nIiYmIWJkLnRlc3QoYSkmJihmLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2V8fCEkLnRlc3QoYSkpJiYhYmpbKGJhLmV4ZWMoYSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKXthPWEucmVwbGFjZShfLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKHZhciBjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXRoaXNbY10ubm9kZVR5cGU9PT0xJiYoZi5jbGVhbkRhdGEodGhpc1tjXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKSx0aGlzW2NdLmlubmVySFRNTD1hKX1jYXRjaChlKXt0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfX1lbHNlIGYuaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9Zih0aGlzKTtjLmh0bWwoYS5jYWxsKHRoaXMsYixjLmh0bWwoKSkpfSk6dGhpcy5lbXB0eSgpLmFwcGVuZChhKTtyZXR1cm4gdGhpc30scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpLGQ9Yy5odG1sKCk7Yy5yZXBsYWNlV2l0aChhLmNhbGwodGhpcyxiLGQpKX0pO3R5cGVvZiBhIT0ic3RyaW5nIiYmKGE9ZihhKS5kZXRhY2goKSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXRoaXMubmV4dFNpYmxpbmcsYz10aGlzLnBhcmVudE5vZGU7Zih0aGlzKS5yZW1vdmUoKSxiP2YoYikuYmVmb3JlKGEpOmYoYykuYXBwZW5kKGEpfSl9cmV0dXJuIHRoaXMubGVuZ3RoP3RoaXMucHVzaFN0YWNrKGYoZi5pc0Z1bmN0aW9uKGEpP2EoKTphKSwicmVwbGFjZVdpdGgiLGEpOnRoaXN9LGRldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnLGgsaSxqPWFbMF0saz1bXTtpZighZi5zdXBwb3J0LmNoZWNrQ2xvbmUmJmFyZ3VtZW50cy5sZW5ndGg9PT0zJiZ0eXBlb2Ygaj09InN0cmluZyImJmJnLnRlc3QoaikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YodGhpcykuZG9tTWFuaXAoYSxjLGQsITApfSk7aWYoZi5pc0Z1bmN0aW9uKGopKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7dmFyIGc9Zih0aGlzKTthWzBdPWouY2FsbCh0aGlzLGUsYz9nLmh0bWwoKTpiKSxnLmRvbU1hbmlwKGEsYyxkKX0pO2lmKHRoaXNbMF0pe2k9aiYmai5wYXJlbnROb2RlLGYuc3VwcG9ydC5wYXJlbnROb2RlJiZpJiZpLm5vZGVUeXBlPT09MTEmJmkuY2hpbGROb2Rlcy5sZW5ndGg9PT10aGlzLmxlbmd0aD9lPXtmcmFnbWVudDppfTplPWYuYnVpbGRGcmFnbWVudChhLHRoaXMsayksaD1lLmZyYWdtZW50LGguY2hpbGROb2Rlcy5sZW5ndGg9PT0xP2c9aD1oLmZpcnN0Q2hpbGQ6Zz1oLmZpcnN0Q2hpbGQ7aWYoZyl7Yz1jJiZmLm5vZGVOYW1lKGcsInRyIik7Zm9yKHZhciBsPTAsbT10aGlzLmxlbmd0aCxuPW0tMTtsPG07bCsrKWQuY2FsbChjP2JsKHRoaXNbbF0sZyk6dGhpc1tsXSxlLmNhY2hlYWJsZXx8bT4xJiZsPG4/Zi5jbG9uZShoLCEwLCEwKTpoKX1rLmxlbmd0aCYmZi5lYWNoKGssYnIpfXJldHVybiB0aGlzfX0pLGYuYnVpbGRGcmFnbWVudD1mdW5jdGlvbihhLGIsZCl7dmFyIGUsZyxoLGksaj1hWzBdO2ImJmJbMF0mJihpPWJbMF0ub3duZXJEb2N1bWVudHx8YlswXSksaS5jcmVhdGVEb2N1bWVudEZyYWdtZW50fHwoaT1jKSxhLmxlbmd0aD09PTEmJnR5cGVvZiBqPT0ic3RyaW5nIiYmai5sZW5ndGg8NTEyJiZpPT09YyYmai5jaGFyQXQoMCk9PT0iPCImJiFiZS50ZXN0KGopJiYoZi5zdXBwb3J0LmNoZWNrQ2xvbmV8fCFiZy50ZXN0KGopKSYmIWYuc3VwcG9ydC51bmtub3duRWxlbXMmJmJmLnRlc3QoaikmJihnPSEwLGg9Zi5mcmFnbWVudHNbal0saCYmaCE9PTEmJihlPWgpKSxlfHwoZT1pLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxmLmNsZWFuKGEsaSxlLGQpKSxnJiYoZi5mcmFnbWVudHNbal09aD9lOjEpO3JldHVybntmcmFnbWVudDplLGNhY2hlYWJsZTpnfX0sZi5mcmFnbWVudHM9e30sZi5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGMpe3ZhciBkPVtdLGU9ZihjKSxnPXRoaXMubGVuZ3RoPT09MSYmdGhpc1swXS5wYXJlbnROb2RlO2lmKGcmJmcubm9kZVR5cGU9PT0xMSYmZy5jaGlsZE5vZGVzLmxlbmd0aD09PTEmJmUubGVuZ3RoPT09MSl7ZVtiXSh0aGlzWzBdKTtyZXR1cm4gdGhpc31mb3IodmFyIGg9MCxpPWUubGVuZ3RoO2g8aTtoKyspe3ZhciBqPShoPjA/dGhpcy5jbG9uZSghMCk6dGhpcykuZ2V0KCk7ZihlW2hdKVtiXShqKSxkPWQuY29uY2F0KGopfXJldHVybiB0aGlzLnB1c2hTdGFjayhkLGEsZS5zZWxlY3Rvcil9fSksZi5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmNsb25lTm9kZSghMCksZSxnLGg7aWYoKCFmLnN1cHBvcnQubm9DbG9uZUV2ZW50fHwhZi5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkKSYmKGEubm9kZVR5cGU9PT0xfHxhLm5vZGVUeXBlPT09MTEpJiYhZi5pc1hNTERvYyhhKSl7Ym4oYSxkKSxlPWJvKGEpLGc9Ym8oZCk7Zm9yKGg9MDtlW2hdOysraClnW2hdJiZibihlW2hdLGdbaF0pfWlmKGIpe2JtKGEsZCk7aWYoYyl7ZT1ibyhhKSxnPWJvKGQpO2ZvcihoPTA7ZVtoXTsrK2gpYm0oZVtoXSxnW2hdKX19ZT1nPW51bGw7cmV0dXJuIGR9LGNsZWFuOmZ1bmN0aW9uKGEsYixkLGUpe3ZhciBnO2I9Ynx8Yyx0eXBlb2YgYi5jcmVhdGVFbGVtZW50PT0idW5kZWZpbmVkIiYmKGI9Yi5vd25lckRvY3VtZW50fHxiWzBdJiZiWzBdLm93bmVyRG9jdW1lbnR8fGMpO3ZhciBoPVtdLGk7Zm9yKHZhciBqPTAsazsoaz1hW2pdKSE9bnVsbDtqKyspe3R5cGVvZiBrPT0ibnVtYmVyIiYmKGsrPSIiKTtpZighayljb250aW51ZTtpZih0eXBlb2Ygaz09InN0cmluZyIpaWYoIWJjLnRlc3Qoaykpaz1iLmNyZWF0ZVRleHROb2RlKGspO2Vsc2V7az1rLnJlcGxhY2UoXywiPCQxPjwvJDI+Iik7dmFyIGw9KGJhLmV4ZWMoayl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksbT1ialtsXXx8YmouX2RlZmF1bHQsbj1tWzBdLG89Yi5jcmVhdGVFbGVtZW50KCJkaXYiKTtiPT09Yz9iay5hcHBlbmRDaGlsZChvKTpYKGIpLmFwcGVuZENoaWxkKG8pLG8uaW5uZXJIVE1MPW1bMV0rayttWzJdO3doaWxlKG4tLSlvPW8ubGFzdENoaWxkO2lmKCFmLnN1cHBvcnQudGJvZHkpe3ZhciBwPWJiLnRlc3QoaykscT1sPT09InRhYmxlIiYmIXA/by5maXJzdENoaWxkJiZvLmZpcnN0Q2hpbGQuY2hpbGROb2RlczptWzFdPT09Ijx0YWJsZT4iJiYhcD9vLmNoaWxkTm9kZXM6W107Zm9yKGk9cS5sZW5ndGgtMTtpPj0wOy0taSlmLm5vZGVOYW1lKHFbaV0sInRib2R5IikmJiFxW2ldLmNoaWxkTm9kZXMubGVuZ3RoJiZxW2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocVtpXSl9IWYuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmJC50ZXN0KGspJiZvLmluc2VydEJlZm9yZShiLmNyZWF0ZVRleHROb2RlKCQuZXhlYyhrKVswXSksby5maXJzdENoaWxkKSxrPW8uY2hpbGROb2Rlc312YXIgcjtpZighZi5zdXBwb3J0LmFwcGVuZENoZWNrZWQpaWYoa1swXSYmdHlwZW9mIChyPWsubGVuZ3RoKT09Im51bWJlciIpZm9yKGk9MDtpPHI7aSsrKWJxKGtbaV0pO2Vsc2UgYnEoayk7ay5ub2RlVHlwZT9oLnB1c2goayk6aD1mLm1lcmdlKGgsayl9aWYoZCl7Zz1mdW5jdGlvbihhKXtyZXR1cm4hYS50eXBlfHxiaC50ZXN0KGEudHlwZSl9O2ZvcihqPTA7aFtqXTtqKyspaWYoZSYmZi5ub2RlTmFtZShoW2pdLCJzY3JpcHQiKSYmKCFoW2pdLnR5cGV8fGhbal0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRleHQvamF2YXNjcmlwdCIpKWUucHVzaChoW2pdLnBhcmVudE5vZGU/aFtqXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGhbal0pOmhbal0pO2Vsc2V7aWYoaFtqXS5ub2RlVHlwZT09PTEpe3ZhciBzPWYuZ3JlcChoW2pdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxnKTtoLnNwbGljZS5hcHBseShoLFtqKzEsMF0uY29uY2F0KHMpKX1kLmFwcGVuZENoaWxkKGhbal0pfX1yZXR1cm4gaH0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1mLmNhY2hlLGU9Zi5ldmVudC5zcGVjaWFsLGc9Zi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG87Zm9yKHZhciBoPTAsaTsoaT1hW2hdKSE9bnVsbDtoKyspe2lmKGkubm9kZU5hbWUmJmYubm9EYXRhW2kubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pY29udGludWU7Yz1pW2YuZXhwYW5kb107aWYoYyl7Yj1kW2NdO2lmKGImJmIuZXZlbnRzKXtmb3IodmFyIGogaW4gYi5ldmVudHMpZVtqXT9mLmV2ZW50LnJlbW92ZShpLGopOmYucmVtb3ZlRXZlbnQoaSxqLGIuaGFuZGxlKTtiLmhhbmRsZSYmKGIuaGFuZGxlLmVsZW09bnVsbCl9Zz9kZWxldGUgaVtmLmV4cGFuZG9dOmkucmVtb3ZlQXR0cmlidXRlJiZpLnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pLGRlbGV0ZSBkW2NdfX19fSk7dmFyIGJzPS9hbHBoYVwoW14pXSpcKS9pLGJ0PS9vcGFjaXR5PShbXildKikvLGJ1PS8oW0EtWl18Xm1zKS9nLGJ2PS9eLT9cZCsoPzpweCk/JC9pLGJ3PS9eLT9cZC8sYng9L14oW1wtK10pPShbXC0rLlxkZV0rKS8sYnk9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LGJ6PVsiTGVmdCIsIlJpZ2h0Il0sYkE9WyJUb3AiLCJCb3R0b20iXSxiQixiQyxiRDtmLmZuLmNzcz1mdW5jdGlvbihhLGMpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0yJiZjPT09YilyZXR1cm4gdGhpcztyZXR1cm4gZi5hY2Nlc3ModGhpcyxhLGMsITAsZnVuY3Rpb24oYSxjLGQpe3JldHVybiBkIT09Yj9mLnN0eWxlKGEsYyxkKTpmLmNzcyhhLGMpfSl9LGYuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9YkIoYSwib3BhY2l0eSIsIm9wYWNpdHkiKTtyZXR1cm4gYz09PSIiPyIxIjpjfXJldHVybiBhLnN0eWxlLm9wYWNpdHl9fX0sY3NzTnVtYmVyOntmaWxsT3BhY2l0eTohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6Zi5zdXBwb3J0LmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGMsZCxlKXtpZighIWEmJmEubm9kZVR5cGUhPT0zJiZhLm5vZGVUeXBlIT09OCYmISFhLnN0eWxlKXt2YXIgZyxoLGk9Zi5jYW1lbENhc2UoYyksaj1hLnN0eWxlLGs9Zi5jc3NIb29rc1tpXTtjPWYuY3NzUHJvcHNbaV18fGk7aWYoZD09PWIpe2lmKGsmJiJnZXQiaW4gayYmKGc9ay5nZXQoYSwhMSxlKSkhPT1iKXJldHVybiBnO3JldHVybiBqW2NdfWg9dHlwZW9mIGQsaD09PSJzdHJpbmciJiYoZz1ieC5leGVjKGQpKSYmKGQ9KyhnWzFdKzEpKitnWzJdK3BhcnNlRmxvYXQoZi5jc3MoYSxjKSksaD0ibnVtYmVyIik7aWYoZD09bnVsbHx8aD09PSJudW1iZXIiJiZpc05hTihkKSlyZXR1cm47aD09PSJudW1iZXIiJiYhZi5jc3NOdW1iZXJbaV0mJihkKz0icHgiKTtpZigha3x8ISgic2V0ImluIGspfHwoZD1rLnNldChhLGQpKSE9PWIpdHJ5e2pbY109ZH1jYXRjaChsKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnO2M9Zi5jYW1lbENhc2UoYyksZz1mLmNzc0hvb2tzW2NdLGM9Zi5jc3NQcm9wc1tjXXx8YyxjPT09ImNzc0Zsb2F0IiYmKGM9ImZsb2F0Iik7aWYoZyYmImdldCJpbiBnJiYoZT1nLmdldChhLCEwLGQpKSE9PWIpcmV0dXJuIGU7aWYoYkIpcmV0dXJuIGJCKGEsYyl9LHN3YXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt9O2Zvcih2YXIgZSBpbiBiKWRbZV09YS5zdHlsZVtlXSxhLnN0eWxlW2VdPWJbZV07Yy5jYWxsKGEpO2ZvcihlIGluIGIpYS5zdHlsZVtlXT1kW2VdfX0pLGYuY3VyQ1NTPWYuY3NzLGYuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxiKXtmLmNzc0hvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlO2lmKGMpe2lmKGEub2Zmc2V0V2lkdGghPT0wKXJldHVybiBiRShhLGIsZCk7Zi5zd2FwKGEsYnksZnVuY3Rpb24oKXtlPWJFKGEsYixkKX0pO3JldHVybiBlfX0sc2V0OmZ1bmN0aW9uKGEsYil7aWYoIWJ2LnRlc3QoYikpcmV0dXJuIGI7Yj1wYXJzZUZsb2F0KGIpO2lmKGI+PTApcmV0dXJuIGIrInB4In19fSksZi5zdXBwb3J0Lm9wYWNpdHl8fChmLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBidC50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/cGFyc2VGbG9hdChSZWdFeHAuJDEpLzEwMCsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3VycmVudFN0eWxlLGU9Zi5pc051bWVyaWMoYik/ImFscGhhKG9wYWNpdHk9IitiKjEwMCsiKSI6IiIsZz1kJiZkLmZpbHRlcnx8Yy5maWx0ZXJ8fCIiO2Muem9vbT0xO2lmKGI+PTEmJmYudHJpbShnLnJlcGxhY2UoYnMsIiIpKT09PSIiKXtjLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIik7aWYoZCYmIWQuZmlsdGVyKXJldHVybn1jLmZpbHRlcj1icy50ZXN0KGcpP2cucmVwbGFjZShicyxlKTpnKyIgIitlfX0pLGYoZnVuY3Rpb24oKXtmLnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodHx8KGYuY3NzSG9va3MubWFyZ2luUmlnaHQ9e2dldDpmdW5jdGlvbihhLGIpe3ZhciBjO2Yuc3dhcChhLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxmdW5jdGlvbigpe2I/Yz1iQihhLCJtYXJnaW4tcmlnaHQiLCJtYXJnaW5SaWdodCIpOmM9YS5zdHlsZS5tYXJnaW5SaWdodH0pO3JldHVybiBjfX0pfSksYy5kZWZhdWx0VmlldyYmYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoYkM9ZnVuY3Rpb24oYSxjKXt2YXIgZCxlLGc7Yz1jLnJlcGxhY2UoYnUsIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoIShlPWEub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykpcmV0dXJuIGI7aWYoZz1lLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKSlkPWcuZ2V0UHJvcGVydHlWYWx1ZShjKSxkPT09IiImJiFmLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYSkmJihkPWYuc3R5bGUoYSxjKSk7cmV0dXJuIGR9KSxjLmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUmJihiRD1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPWEuY3VycmVudFN0eWxlJiZhLmN1cnJlbnRTdHlsZVtiXSxnPWEuc3R5bGU7Zj09PW51bGwmJmcmJihlPWdbYl0pJiYoZj1lKSwhYnYudGVzdChmKSYmYncudGVzdChmKSYmKGM9Zy5sZWZ0LGQ9YS5ydW50aW1lU3R5bGUmJmEucnVudGltZVN0eWxlLmxlZnQsZCYmKGEucnVudGltZVN0eWxlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksZy5sZWZ0PWI9PT0iZm9udFNpemUiPyIxZW0iOmZ8fDAsZj1nLnBpeGVsTGVmdCsicHgiLGcubGVmdD1jLGQmJihhLnJ1bnRpbWVTdHlsZS5sZWZ0PWQpKTtyZXR1cm4gZj09PSIiPyJhdXRvIjpmfSksYkI9YkN8fGJELGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRXaWR0aCxjPWEub2Zmc2V0SGVpZ2h0O3JldHVybiBiPT09MCYmYz09PTB8fCFmLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzJiYoYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxmLmNzcyhhLCJkaXNwbGF5IikpPT09Im5vbmUifSxmLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFmLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9KTt2YXIgYkY9LyUyMC9nLGJHPS9cW1xdJC8sYkg9L1xyP1xuL2csYkk9LyMuKiQvLGJKPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQvbWcsYks9L14oPzpjb2xvcnxkYXRlfGRhdGV0aW1lfGRhdGV0aW1lLWxvY2FsfGVtYWlsfGhpZGRlbnxtb250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2VhcmNofHRlbHx0ZXh0fHRpbWV8dXJsfHdlZWspJC9pLGJMPS9eKD86YWJvdXR8YXBwfGFwcFwtc3RvcmFnZXwuK1wtZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sYk09L14oPzpHRVR8SEVBRCkkLyxiTj0vXlwvXC8vLGJPPS9cPy8sYlA9LzxzY3JpcHRcYltePF0qKD86KD8hPFwvc2NyaXB0Pik8W148XSopKjxcL3NjcmlwdD4vZ2ksYlE9L14oPzpzZWxlY3R8dGV4dGFyZWEpL2ksYlI9L1xzKy8sYlM9LyhbPyZdKV89W14mXSovLGJUPS9eKFtcd1wrXC5cLV0rOikoPzpcL1wvKFteXC8/IzpdKikoPzo6KFxkKykpPyk/LyxiVT1mLmZuLmxvYWQsYlY9e30sYlc9e30sYlgsYlksYlo9WyIqLyJdK1siKiJdO3RyeXtiWD1lLmhyZWZ9Y2F0Y2goYiQpe2JYPWMuY3JlYXRlRWxlbWVudCgiYSIpLGJYLmhyZWY9IiIsYlg9YlguaHJlZn1iWT1iVC5leGVjKGJYLnRvTG93ZXJDYXNlKCkpfHxbXSxmLmZuLmV4dGVuZCh7bG9hZDpmdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGEhPSJzdHJpbmciJiZiVSlyZXR1cm4gYlUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2YXIgZT1hLmluZGV4T2YoIiAiKTtpZihlPj0wKXt2YXIgZz1hLnNsaWNlKGUsYS5sZW5ndGgpO2E9YS5zbGljZSgwLGUpfXZhciBoPSJHRVQiO2MmJihmLmlzRnVuY3Rpb24oYyk/KGQ9YyxjPWIpOnR5cGVvZiBjPT0ib2JqZWN0IiYmKGM9Zi5wYXJhbShjLGYuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxoPSJQT1NUIikpO3ZhciBpPXRoaXM7Zi5hamF4KHt1cmw6YSx0eXBlOmgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yyxjb21wbGV0ZTpmdW5jdGlvbihhLGIsYyl7Yz1hLnJlc3BvbnNlVGV4dCxhLmlzUmVzb2x2ZWQoKSYmKGEuZG9uZShmdW5jdGlvbihhKXtjPWF9KSxpLmh0bWwoZz9mKCI8ZGl2PiIpLmFwcGVuZChjLnJlcGxhY2UoYlAsIiIpKS5maW5kKGcpOmMpKSxkJiZpLmVhY2goZCxbYyxiLGFdKX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGYucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9mLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fGJRLnRlc3QodGhpcy5ub2RlTmFtZSl8fGJLLnRlc3QodGhpcy50eXBlKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1mKHRoaXMpLnZhbCgpO3JldHVybiBjPT1udWxsP251bGw6Zi5pc0FycmF5KGMpP2YubWFwKGMsZnVuY3Rpb24oYSxjKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKGJILCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZShiSCwiXHJcbiIpfX0pLmdldCgpfX0pLGYuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtmLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmJpbmQoYixhKX19KSxmLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oYSxjKXtmW2NdPWZ1bmN0aW9uKGEsZCxlLGcpe2YuaXNGdW5jdGlvbihkKSYmKGc9Z3x8ZSxlPWQsZD1iKTtyZXR1cm4gZi5hamF4KHt0eXBlOmMsdXJsOmEsZGF0YTpkLHN1Y2Nlc3M6ZSxkYXRhVHlwZTpnfSl9fSksZi5leHRlbmQoe2dldFNjcmlwdDpmdW5jdGlvbihhLGMpe3JldHVybiBmLmdldChhLGIsYywic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmdldChhLGIsYywianNvbiIpfSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtiP2NiKGEsZi5hamF4U2V0dGluZ3MpOihiPWEsYT1mLmFqYXhTZXR0aW5ncyksY2IoYSxiKTtyZXR1cm4gYX0sYWpheFNldHRpbmdzOnt1cmw6YlgsaXNMb2NhbDpiTC50ZXN0KGJZWzFdKSxnbG9iYWw6ITAsdHlwZToiR0VUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixwcm9jZXNzRGF0YTohMCxhc3luYzohMCxhY2NlcHRzOnt4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6InRleHQvaHRtbCIsdGV4dDoidGV4dC9wbGFpbiIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IiwiKiI6Ylp9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjphLlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpmLnBhcnNlSlNPTiwidGV4dCB4bWwiOmYucGFyc2VYTUx9LGZsYXRPcHRpb25zOntjb250ZXh0OiEwLHVybDohMH19LGFqYXhQcmVmaWx0ZXI6Yl8oYlYpLGFqYXhUcmFuc3BvcnQ6Yl8oYlcpLGFqYXg6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiB3KGEsYyxsLG0pe2lmKHMhPT0yKXtzPTIscSYmY2xlYXJUaW1lb3V0KHEpLHA9YixuPW18fCIiLHYucmVhZHlTdGF0ZT1hPjA/NDowO3ZhciBvLHIsdSx3PWMseD1sP2NkKGQsdixsKTpiLHksejtpZihhPj0yMDAmJmE8MzAwfHxhPT09MzA0KXtpZihkLmlmTW9kaWZpZWQpe2lmKHk9di5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKWYubGFzdE1vZGlmaWVkW2tdPXk7aWYoej12LmdldFJlc3BvbnNlSGVhZGVyKCJFdGFnIikpZi5ldGFnW2tdPXp9aWYoYT09PTMwNCl3PSJub3Rtb2RpZmllZCIsbz0hMDtlbHNlIHRyeXtyPWNlKGQseCksdz0ic3VjY2VzcyIsbz0hMH1jYXRjaChBKXt3PSJwYXJzZXJlcnJvciIsdT1BfX1lbHNle3U9dztpZighd3x8YSl3PSJlcnJvciIsYTwwJiYoYT0wKX12LnN0YXR1cz1hLHYuc3RhdHVzVGV4dD0iIisoY3x8dyksbz9oLnJlc29sdmVXaXRoKGUsW3Isdyx2XSk6aC5yZWplY3RXaXRoKGUsW3Ysdyx1XSksdi5zdGF0dXNDb2RlKGopLGo9Yix0JiZnLnRyaWdnZXIoImFqYXgiKyhvPyJTdWNjZXNzIjoiRXJyb3IiKSxbdixkLG8/cjp1XSksaS5maXJlV2l0aChlLFt2LHddKSx0JiYoZy50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFt2LGRdKSwtLWYuYWN0aXZlfHxmLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpfX10eXBlb2YgYT09Im9iamVjdCImJihjPWEsYT1iKSxjPWN8fHt9O3ZhciBkPWYuYWpheFNldHVwKHt9LGMpLGU9ZC5jb250ZXh0fHxkLGc9ZSE9PWQmJihlLm5vZGVUeXBlfHxlIGluc3RhbmNlb2YgZik/ZihlKTpmLmV2ZW50LGg9Zi5EZWZlcnJlZCgpLGk9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksaj1kLnN0YXR1c0NvZGV8fHt9LGssbD17fSxtPXt9LG4sbyxwLHEscixzPTAsdCx1LHY9e3JlYWR5U3RhdGU6MCxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7aWYoIXMpe3ZhciBjPWEudG9Mb3dlckNhc2UoKTthPW1bY109bVtjXXx8YSxsW2FdPWJ9cmV0dXJuIHRoaXN9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiBzPT09Mj9uOm51bGx9LGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBjO2lmKHM9PT0yKXtpZighbyl7bz17fTt3aGlsZShjPWJKLmV4ZWMobikpb1tjWzFdLnRvTG93ZXJDYXNlKCldPWNbMl19Yz1vW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIGM9PT1iP251bGw6Y30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihhKXtzfHwoZC5taW1lVHlwZT1hKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7YT1hfHwiYWJvcnQiLHAmJnAuYWJvcnQoYSksdygwLGEpO3JldHVybiB0aGlzfX07aC5wcm9taXNlKHYpLHYuc3VjY2Vzcz12LmRvbmUsdi5lcnJvcj12LmZhaWwsdi5jb21wbGV0ZT1pLmFkZCx2LnN0YXR1c0NvZGU9ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI7aWYoczwyKWZvcihiIGluIGEpaltiXT1baltiXSxhW2JdXTtlbHNlIGI9YVt2LnN0YXR1c10sdi50aGVuKGIsYil9cmV0dXJuIHRoaXN9LGQudXJsPSgoYXx8ZC51cmwpKyIiKS5yZXBsYWNlKGJJLCIiKS5yZXBsYWNlKGJOLGJZWzFdKyIvLyIpLGQuZGF0YVR5cGVzPWYudHJpbShkLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkuc3BsaXQoYlIpLGQuY3Jvc3NEb21haW49PW51bGwmJihyPWJULmV4ZWMoZC51cmwudG9Mb3dlckNhc2UoKSksZC5jcm9zc0RvbWFpbj0hKCFyfHxyWzFdPT1iWVsxXSYmclsyXT09YllbMl0mJihyWzNdfHwoclsxXT09PSJodHRwOiI/ODA6NDQzKSk9PShiWVszXXx8KGJZWzFdPT09Imh0dHA6Ij84MDo0NDMpKSkpLGQuZGF0YSYmZC5wcm9jZXNzRGF0YSYmdHlwZW9mIGQuZGF0YSE9InN0cmluZyImJihkLmRhdGE9Zi5wYXJhbShkLmRhdGEsZC50cmFkaXRpb25hbCkpLGNhKGJWLGQsYyx2KTtpZihzPT09MilyZXR1cm4hMTt0PWQuZ2xvYmFsLGQudHlwZT1kLnR5cGUudG9VcHBlckNhc2UoKSxkLmhhc0NvbnRlbnQ9IWJNLnRlc3QoZC50eXBlKSx0JiZmLmFjdGl2ZSsrPT09MCYmZi5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKTtpZighZC5oYXNDb250ZW50KXtkLmRhdGEmJihkLnVybCs9KGJPLnRlc3QoZC51cmwpPyImIjoiPyIpK2QuZGF0YSxkZWxldGUgZC5kYXRhKSxrPWQudXJsO2lmKGQuY2FjaGU9PT0hMSl7dmFyIHg9Zi5ub3coKSx5PWQudXJsLnJlcGxhY2UoYlMsIiQxXz0iK3gpO2QudXJsPXkrKHk9PT1kLnVybD8oYk8udGVzdChkLnVybCk/IiYiOiI/IikrIl89Iit4OiIiKX19KGQuZGF0YSYmZC5oYXNDb250ZW50JiZkLmNvbnRlbnRUeXBlIT09ITF8fGMuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsZC5jb250ZW50VHlwZSksZC5pZk1vZGlmaWVkJiYoaz1rfHxkLnVybCxmLmxhc3RNb2RpZmllZFtrXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsZi5sYXN0TW9kaWZpZWRba10pLGYuZXRhZ1trXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixmLmV0YWdba10pKSx2LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsZC5kYXRhVHlwZXNbMF0mJmQuYWNjZXB0c1tkLmRhdGFUeXBlc1swXV0/ZC5hY2NlcHRzW2QuZGF0YVR5cGVzWzBdXSsoZC5kYXRhVHlwZXNbMF0hPT0iKiI/IiwgIitiWisiOyBxPTAuMDEiOiIiKTpkLmFjY2VwdHNbIioiXSk7Zm9yKHUgaW4gZC5oZWFkZXJzKXYuc2V0UmVxdWVzdEhlYWRlcih1LGQuaGVhZGVyc1t1XSk7aWYoZC5iZWZvcmVTZW5kJiYoZC5iZWZvcmVTZW5kLmNhbGwoZSx2LGQpPT09ITF8fHM9PT0yKSl7di5hYm9ydCgpO3JldHVybiExfWZvcih1IGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbdV0oZFt1XSk7cD1jYShiVyxkLGMsdik7aWYoIXApdygtMSwiTm8gVHJhbnNwb3J0Iik7ZWxzZXt2LnJlYWR5U3RhdGU9MSx0JiZnLnRyaWdnZXIoImFqYXhTZW5kIixbdixkXSksZC5hc3luYyYmZC50aW1lb3V0PjAmJihxPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2LmFib3J0KCJ0aW1lb3V0Iil9LGQudGltZW91dCkpO3RyeXtzPTEscC5zZW5kKGwsdyl9Y2F0Y2goeil7czwyP3coLTEseik6Zi5lcnJvcih6KX19cmV0dXJuIHZ9LHBhcmFtOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9Zi5pc0Z1bmN0aW9uKGIpP2IoKTpiLGRbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGIpfTtjPT09YiYmKGM9Zi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpO2lmKGYuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFmLmlzUGxhaW5PYmplY3QoYSkpZi5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKHZhciBnIGluIGEpY2MoZyxhW2ddLGMsZSk7cmV0dXJuIGQuam9pbigiJiIpLnJlcGxhY2UoYkYsIisiKX19KSxmLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e319KTt2YXIgY2Y9Zi5ub3coKSxjZz0vKFw9KVw/KCZ8JCl8XD9cPy9pO2YuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZi5leHBhbmRvKyJfIitjZisrfX0pLGYuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlPWIuY29udGVudFR5cGU9PT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiYmdHlwZW9mIGIuZGF0YT09InN0cmluZyI7aWYoYi5kYXRhVHlwZXNbMF09PT0ianNvbnAifHxiLmpzb25wIT09ITEmJihjZy50ZXN0KGIudXJsKXx8ZSYmY2cudGVzdChiLmRhdGEpKSl7dmFyIGcsaD1iLmpzb25wQ2FsbGJhY2s9Zi5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGk9YVtoXSxqPWIudXJsLGs9Yi5kYXRhLGw9IiQxIitoKyIkMiI7Yi5qc29ucCE9PSExJiYoaj1qLnJlcGxhY2UoY2csbCksYi51cmw9PT1qJiYoZSYmKGs9ay5yZXBsYWNlKGNnLGwpKSxiLmRhdGE9PT1rJiYoais9KC9cPy8udGVzdChqKT8iJiI6Ij8iKStiLmpzb25wKyI9IitoKSkpLGIudXJsPWosYi5kYXRhPWssYVtoXT1mdW5jdGlvbihhKXtnPVthXX0sZC5hbHdheXMoZnVuY3Rpb24oKXthW2hdPWksZyYmZi5pc0Z1bmN0aW9uKGkpJiZhW2hdKGdbMF0pfSksYi5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7Z3x8Zi5lcnJvcihoKyIgd2FzIG5vdCBjYWxsZWQiKTtyZXR1cm4gZ1swXX0sYi5kYXRhVHlwZXNbMF09Impzb24iO3JldHVybiJzY3JpcHQifX0pLGYuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovamF2YXNjcmlwdHxlY21hc2NyaXB0L30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihhKXtmLmdsb2JhbEV2YWwoYSk7cmV0dXJuIGF9fX0pLGYuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihhKXthLmNhY2hlPT09YiYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIsYS5nbG9iYWw9ITEpfSksZi5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBkLGU9Yy5oZWFkfHxjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGMuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKGYsZyl7ZD1jLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGQuYXN5bmM9ImFzeW5jIixhLnNjcmlwdENoYXJzZXQmJihkLmNoYXJzZXQ9YS5zY3JpcHRDaGFyc2V0KSxkLnNyYz1hLnVybCxkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihhLGMpe2lmKGN8fCFkLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZC5yZWFkeVN0YXRlKSlkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGUmJmQucGFyZW50Tm9kZSYmZS5yZW1vdmVDaGlsZChkKSxkPWIsY3x8ZygyMDAsInN1Y2Nlc3MiKX0sZS5pbnNlcnRCZWZvcmUoZCxlLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2QmJmQub25sb2FkKDAsMSl9fX19KTt2YXIgY2g9YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7Zm9yKHZhciBhIGluIGNqKWNqW2FdKDAsMSl9OiExLGNpPTAsY2o7Zi5hamF4U2V0dGluZ3MueGhyPWEuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzTG9jYWwmJmNrKCl8fGNsKCl9OmNrLGZ1bmN0aW9uKGEpe2YuZXh0ZW5kKGYuc3VwcG9ydCx7YWpheDohIWEsY29yczohIWEmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gYX0pfShmLmFqYXhTZXR0aW5ncy54aHIoKSksZi5zdXBwb3J0LmFqYXgmJmYuYWpheFRyYW5zcG9ydChmdW5jdGlvbihjKXtpZighYy5jcm9zc0RvbWFpbnx8Zi5zdXBwb3J0LmNvcnMpe3ZhciBkO3JldHVybntzZW5kOmZ1bmN0aW9uKGUsZyl7dmFyIGg9Yy54aHIoKSxpLGo7Yy51c2VybmFtZT9oLm9wZW4oYy50eXBlLGMudXJsLGMuYXN5bmMsYy51c2VybmFtZSxjLnBhc3N3b3JkKTpoLm9wZW4oYy50eXBlLGMudXJsLGMuYXN5bmMpO2lmKGMueGhyRmllbGRzKWZvcihqIGluIGMueGhyRmllbGRzKWhbal09Yy54aHJGaWVsZHNbal07Yy5taW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUoYy5taW1lVHlwZSksIWMuY3Jvc3NEb21haW4mJiFlWyJYLVJlcXVlc3RlZC1XaXRoIl0mJihlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7dHJ5e2ZvcihqIGluIGUpaC5zZXRSZXF1ZXN0SGVhZGVyKGosZVtqXSl9Y2F0Y2goayl7fWguc2VuZChjLmhhc0NvbnRlbnQmJmMuZGF0YXx8bnVsbCksZD1mdW5jdGlvbihhLGUpe3ZhciBqLGssbCxtLG47dHJ5e2lmKGQmJihlfHxoLnJlYWR5U3RhdGU9PT00KSl7ZD1iLGkmJihoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mLm5vb3AsY2gmJmRlbGV0ZSBjaltpXSk7aWYoZSloLnJlYWR5U3RhdGUhPT00JiZoLmFib3J0KCk7ZWxzZXtqPWguc3RhdHVzLGw9aC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSxtPXt9LG49aC5yZXNwb25zZVhNTCxuJiZuLmRvY3VtZW50RWxlbWVudCYmKG0ueG1sPW4pLG0udGV4dD1oLnJlc3BvbnNlVGV4dDt0cnl7az1oLnN0YXR1c1RleHR9Y2F0Y2gobyl7az0iIn0haiYmYy5pc0xvY2FsJiYhYy5jcm9zc0RvbWFpbj9qPW0udGV4dD8yMDA6NDA0Omo9PT0xMjIzJiYoaj0yMDQpfX19Y2F0Y2gocCl7ZXx8ZygtMSxwKX1tJiZnKGosayxtLGwpfSwhYy5hc3luY3x8aC5yZWFkeVN0YXRlPT09ND9kKCk6KGk9KytjaSxjaCYmKGNqfHwoY2o9e30sZihhKS51bmxvYWQoY2gpKSxjaltpXT1kKSxoLm9ucmVhZHlzdGF0ZWNoYW5nZT1kKX0sYWJvcnQ6ZnVuY3Rpb24oKXtkJiZkKDAsMSl9fX19KTt2YXIgY209e30sY24sY28sY3A9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGNxPS9eKFsrXC1dPSk/KFtcZCsuXC1dKykoW2EteiVdKikkL2ksY3IsY3M9W1siaGVpZ2h0IiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSxbIndpZHRoIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiXSxbIm9wYWNpdHkiXV0sY3Q7Zi5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjdygic2hvdyIsMyksYSxiLGMpO2Zvcih2YXIgZz0wLGg9dGhpcy5sZW5ndGg7ZzxoO2crKylkPXRoaXNbZ10sZC5zdHlsZSYmKGU9ZC5zdHlsZS5kaXNwbGF5LCFmLl9kYXRhKGQsIm9sZGRpc3BsYXkiKSYmZT09PSJub25lIiYmKGU9ZC5zdHlsZS5kaXNwbGF5PSIiKSxlPT09IiImJmYuY3NzKGQsImRpc3BsYXkiKT09PSJub25lIiYmZi5fZGF0YShkLCJvbGRkaXNwbGF5IixjeChkLm5vZGVOYW1lKSkpO2ZvcihnPTA7ZzxoO2crKyl7ZD10aGlzW2ddO2lmKGQuc3R5bGUpe2U9ZC5zdHlsZS5kaXNwbGF5O2lmKGU9PT0iInx8ZT09PSJub25lIilkLnN0eWxlLmRpc3BsYXk9Zi5fZGF0YShkLCJvbGRkaXNwbGF5Iil8fCIifX1yZXR1cm4gdGhpc30saGlkZTpmdW5jdGlvbihhLGIsYyl7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjdygiaGlkZSIsMyksYSxiLGMpO3ZhciBkLGUsZz0wLGg9dGhpcy5sZW5ndGg7Zm9yKDtnPGg7ZysrKWQ9dGhpc1tnXSxkLnN0eWxlJiYoZT1mLmNzcyhkLCJkaXNwbGF5IiksZSE9PSJub25lIiYmIWYuX2RhdGEoZCwib2xkZGlzcGxheSIpJiZmLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGUpKTtmb3IoZz0wO2c8aDtnKyspdGhpc1tnXS5zdHlsZSYmKHRoaXNbZ10uc3R5bGUuZGlzcGxheT0ibm9uZSIpO3JldHVybiB0aGlzfSxfdG9nZ2xlOmYuZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dHlwZW9mIGE9PSJib29sZWFuIjtmLmlzRnVuY3Rpb24oYSkmJmYuaXNGdW5jdGlvbihiKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpOmE9PW51bGx8fGQ/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ZD9hOmYodGhpcykuaXMoIjpoaWRkZW4iKTtmKHRoaXMpW2I/InNob3ciOiJoaWRlIl0oKX0pOnRoaXMuYW5pbWF0ZShjdygidG9nZ2xlIiwzKSxhLGIsYyk7cmV0dXJuIHRoaXN9LGZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoIjpoaWRkZW4iKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmJ9LGEsYyxkKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxkKXtmdW5jdGlvbiBnKCl7ZS5xdWV1ZT09PSExJiZmLl9tYXJrKHRoaXMpO3ZhciBiPWYuZXh0ZW5kKHt9LGUpLGM9dGhpcy5ub2RlVHlwZT09PTEsZD1jJiZmKHRoaXMpLmlzKCI6aGlkZGVuIiksZyxoLGksaixrLGwsbSxuLG87Yi5hbmltYXRlZFByb3BlcnRpZXM9e307Zm9yKGkgaW4gYSl7Zz1mLmNhbWVsQ2FzZShpKSxpIT09ZyYmKGFbZ109YVtpXSxkZWxldGUgYVtpXSksaD1hW2ddLGYuaXNBcnJheShoKT8oYi5hbmltYXRlZFByb3BlcnRpZXNbZ109aFsxXSxoPWFbZ109aFswXSk6Yi5hbmltYXRlZFByb3BlcnRpZXNbZ109Yi5zcGVjaWFsRWFzaW5nJiZiLnNwZWNpYWxFYXNpbmdbZ118fGIuZWFzaW5nfHwic3dpbmciO2lmKGg9PT0iaGlkZSImJmR8fGg9PT0ic2hvdyImJiFkKXJldHVybiBiLmNvbXBsZXRlLmNhbGwodGhpcyk7YyYmKGc9PT0iaGVpZ2h0Inx8Zz09PSJ3aWR0aCIpJiYoYi5vdmVyZmxvdz1bdGhpcy5zdHlsZS5vdmVyZmxvdyx0aGlzLnN0eWxlLm92ZXJmbG93WCx0aGlzLnN0eWxlLm92ZXJmbG93WV0sZi5jc3ModGhpcywiZGlzcGxheSIpPT09ImlubGluZSImJmYuY3NzKHRoaXMsImZsb2F0Iik9PT0ibm9uZSImJighZi5zdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXR8fGN4KHRoaXMubm9kZU5hbWUpPT09ImlubGluZSI/dGhpcy5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siOnRoaXMuc3R5bGUuem9vbT0xKSl9Yi5vdmVyZmxvdyE9bnVsbCYmKHRoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpO2ZvcihpIGluIGEpaj1uZXcgZi5meCh0aGlzLGIsaSksaD1hW2ldLGNwLnRlc3QoaCk/KG89Zi5fZGF0YSh0aGlzLCJ0b2dnbGUiK2kpfHwoaD09PSJ0b2dnbGUiP2Q/InNob3ciOiJoaWRlIjowKSxvPyhmLl9kYXRhKHRoaXMsInRvZ2dsZSIraSxvPT09InNob3ciPyJoaWRlIjoic2hvdyIpLGpbb10oKSk6altoXSgpKTooaz1jcS5leGVjKGgpLGw9ai5jdXIoKSxrPyhtPXBhcnNlRmxvYXQoa1syXSksbj1rWzNdfHwoZi5jc3NOdW1iZXJbaV0/IiI6InB4IiksbiE9PSJweCImJihmLnN0eWxlKHRoaXMsaSwobXx8MSkrbiksbD0obXx8MSkvai5jdXIoKSpsLGYuc3R5bGUodGhpcyxpLGwrbikpLGtbMV0mJihtPShrWzFdPT09Ii09Ij8tMToxKSptK2wpLGouY3VzdG9tKGwsbSxuKSk6ai5jdXN0b20obCxoLCIiKSk7cmV0dXJuITB9dmFyIGU9Zi5zcGVlZChiLGMsZCk7aWYoZi5pc0VtcHR5T2JqZWN0KGEpKXJldHVybiB0aGlzLmVhY2goZS5jb21wbGV0ZSxbITFdKTthPWYuZXh0ZW5kKHt9LGEpO3JldHVybiBlLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZS5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGMsZCl7dHlwZW9mIGEhPSJzdHJpbmciJiYoZD1jLGM9YSxhPWIpLGMmJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gaChhLGIsYyl7dmFyIGU9YltjXTtmLnJlbW92ZURhdGEoYSxjLCEwKSxlLnN0b3AoZCl9dmFyIGIsYz0hMSxlPWYudGltZXJzLGc9Zi5fZGF0YSh0aGlzKTtkfHxmLl91bm1hcmsoITAsdGhpcyk7aWYoYT09bnVsbClmb3IoYiBpbiBnKWdbYl0uc3RvcCYmYi5pbmRleE9mKCIucnVuIik9PT1iLmxlbmd0aC00JiZoKHRoaXMsZyxiKTtlbHNlIGdbYj1hKyIucnVuIl0mJmdbYl0uc3RvcCYmaCh0aGlzLGcsYik7Zm9yKGI9ZS5sZW5ndGg7Yi0tOyllW2JdLmVsZW09PT10aGlzJiYoYT09bnVsbHx8ZVtiXS5xdWV1ZT09PWEpJiYoZD9lW2JdKCEwKTplW2JdLnNhdmVTdGF0ZSgpLGM9ITAsZS5zcGxpY2UoYiwxKSk7KCFkfHwhYykmJmYuZGVxdWV1ZSh0aGlzLGEpfSl9fSksZi5lYWNoKHtzbGlkZURvd246Y3coInNob3ciLDEpLHNsaWRlVXA6Y3coImhpZGUiLDEpLHNsaWRlVG9nZ2xlOmN3KCJ0b2dnbGUiLDEpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsYSxjLGQpfX0pLGYuZXh0ZW5kKHtzcGVlZDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmdHlwZW9mIGE9PSJvYmplY3QiP2YuZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8Zi5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFmLmlzRnVuY3Rpb24oYikmJmJ9O2QuZHVyYXRpb249Zi5meC5vZmY/MDp0eXBlb2YgZC5kdXJhdGlvbj09Im51bWJlciI/ZC5kdXJhdGlvbjpkLmR1cmF0aW9uIGluIGYuZnguc3BlZWRzP2YuZnguc3BlZWRzW2QuZHVyYXRpb25dOmYuZnguc3BlZWRzLl9kZWZhdWx0O2lmKGQucXVldWU9PW51bGx8fGQucXVldWU9PT0hMClkLnF1ZXVlPSJmeCI7ZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKGEpe2YuaXNGdW5jdGlvbihkLm9sZCkmJmQub2xkLmNhbGwodGhpcyksZC5xdWV1ZT9mLmRlcXVldWUodGhpcyxkLnF1ZXVlKTphIT09ITEmJmYuX3VubWFyayh0aGlzKX07cmV0dXJuIGR9LGVhc2luZzp7bGluZWFyOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBjK2QqYX0sc3dpbmc6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuKC1NYXRoLmNvcyhhKk1hdGguUEkpLzIrLjUpKmQrY319LHRpbWVyczpbXSxmeDpmdW5jdGlvbihhLGIsYyl7dGhpcy5vcHRpb25zPWIsdGhpcy5lbGVtPWEsdGhpcy5wcm9wPWMsYi5vcmlnPWIub3JpZ3x8e319fSksZi5meC5wcm90b3R5cGU9e3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSwoZi5meC5zdGVwW3RoaXMucHJvcF18fGYuZnguc3RlcC5fZGVmYXVsdCkodGhpcyl9LGN1cjpmdW5jdGlvbigpe2lmKHRoaXMuZWxlbVt0aGlzLnByb3BdIT1udWxsJiYoIXRoaXMuZWxlbS5zdHlsZXx8dGhpcy5lbGVtLnN0eWxlW3RoaXMucHJvcF09PW51bGwpKXJldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXTt2YXIgYSxiPWYuY3NzKHRoaXMuZWxlbSx0aGlzLnByb3ApO3JldHVybiBpc05hTihhPXBhcnNlRmxvYXQoYikpPyFifHxiPT09ImF1dG8iPzA6YjphfSxjdXN0b206ZnVuY3Rpb24oYSxjLGQpe2Z1bmN0aW9uIGgoYSl7cmV0dXJuIGUuc3RlcChhKX12YXIgZT10aGlzLGc9Zi5meDt0aGlzLnN0YXJ0VGltZT1jdHx8Y3UoKSx0aGlzLmVuZD1jLHRoaXMubm93PXRoaXMuc3RhcnQ9YSx0aGlzLnBvcz10aGlzLnN0YXRlPTAsdGhpcy51bml0PWR8fHRoaXMudW5pdHx8KGYuY3NzTnVtYmVyW3RoaXMucHJvcF0/IiI6InB4IiksaC5xdWV1ZT10aGlzLm9wdGlvbnMucXVldWUsaC5lbGVtPXRoaXMuZWxlbSxoLnNhdmVTdGF0ZT1mdW5jdGlvbigpe2Uub3B0aW9ucy5oaWRlJiZmLl9kYXRhKGUuZWxlbSwiZnhzaG93IitlLnByb3ApPT09YiYmZi5fZGF0YShlLmVsZW0sImZ4c2hvdyIrZS5wcm9wLGUuc3RhcnQpfSxoKCkmJmYudGltZXJzLnB1c2goaCkmJiFjciYmKGNyPXNldEludGVydmFsKGcudGljayxnLmludGVydmFsKSl9LHNob3c6ZnVuY3Rpb24oKXt2YXIgYT1mLl9kYXRhKHRoaXMuZWxlbSwiZnhzaG93Iit0aGlzLnByb3ApO3RoaXMub3B0aW9ucy5vcmlnW3RoaXMucHJvcF09YXx8Zi5zdHlsZSh0aGlzLmVsZW0sdGhpcy5wcm9wKSx0aGlzLm9wdGlvbnMuc2hvdz0hMCxhIT09Yj90aGlzLmN1c3RvbSh0aGlzLmN1cigpLGEpOnRoaXMuY3VzdG9tKHRoaXMucHJvcD09PSJ3aWR0aCJ8fHRoaXMucHJvcD09PSJoZWlnaHQiPzE6MCx0aGlzLmN1cigpKSxmKHRoaXMuZWxlbSkuc2hvdygpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1mLl9kYXRhKHRoaXMuZWxlbSwiZnhzaG93Iit0aGlzLnByb3ApfHxmLnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3ApLHRoaXMub3B0aW9ucy5oaWRlPSEwLHRoaXMuY3VzdG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9Y3R8fGN1KCksZz0hMCxoPXRoaXMuZWxlbSxpPXRoaXMub3B0aW9ucztpZihhfHxlPj1pLmR1cmF0aW9uK3RoaXMuc3RhcnRUaW1lKXt0aGlzLm5vdz10aGlzLmVuZCx0aGlzLnBvcz10aGlzLnN0YXRlPTEsdGhpcy51cGRhdGUoKSxpLmFuaW1hdGVkUHJvcGVydGllc1t0aGlzLnByb3BdPSEwO2ZvcihiIGluIGkuYW5pbWF0ZWRQcm9wZXJ0aWVzKWkuYW5pbWF0ZWRQcm9wZXJ0aWVzW2JdIT09ITAmJihnPSExKTtpZihnKXtpLm92ZXJmbG93IT1udWxsJiYhZi5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3MmJmYuZWFjaChbIiIsIlgiLCJZIl0sZnVuY3Rpb24oYSxiKXtoLnN0eWxlWyJvdmVyZmxvdyIrYl09aS5vdmVyZmxvd1thXX0pLGkuaGlkZSYmZihoKS5oaWRlKCk7aWYoaS5oaWRlfHxpLnNob3cpZm9yKGIgaW4gaS5hbmltYXRlZFByb3BlcnRpZXMpZi5zdHlsZShoLGIsaS5vcmlnW2JdKSxmLnJlbW92ZURhdGEoaCwiZnhzaG93IitiLCEwKSxmLnJlbW92ZURhdGEoaCwidG9nZ2xlIitiLCEwKTtkPWkuY29tcGxldGUsZCYmKGkuY29tcGxldGU9ITEsZC5jYWxsKGgpKX1yZXR1cm4hMX1pLmR1cmF0aW9uPT1JbmZpbml0eT90aGlzLm5vdz1lOihjPWUtdGhpcy5zdGFydFRpbWUsdGhpcy5zdGF0ZT1jL2kuZHVyYXRpb24sdGhpcy5wb3M9Zi5lYXNpbmdbaS5hbmltYXRlZFByb3BlcnRpZXNbdGhpcy5wcm9wXV0odGhpcy5zdGF0ZSxjLDAsMSxpLmR1cmF0aW9uKSx0aGlzLm5vdz10aGlzLnN0YXJ0Kyh0aGlzLmVuZC10aGlzLnN0YXJ0KSp0aGlzLnBvcyksdGhpcy51cGRhdGUoKTtyZXR1cm4hMH19LGYuZXh0ZW5kKGYuZngse3RpY2s6ZnVuY3Rpb24oKXt2YXIgYSxiPWYudGltZXJzLGM9MDtmb3IoO2M8Yi5sZW5ndGg7YysrKWE9YltjXSwhYSgpJiZiW2NdPT09YSYmYi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxmLmZ4LnN0b3AoKX0saW50ZXJ2YWw6MTMsc3RvcDpmdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoY3IpLGNyPW51bGx9LHNwZWVkczp7c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxzdGVwOntvcGFjaXR5OmZ1bmN0aW9uKGEpe2Yuc3R5bGUoYS5lbGVtLCJvcGFjaXR5IixhLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe2EuZWxlbS5zdHlsZSYmYS5lbGVtLnN0eWxlW2EucHJvcF0hPW51bGw/YS5lbGVtLnN0eWxlW2EucHJvcF09YS5ub3crYS51bml0OmEuZWxlbVthLnByb3BdPWEubm93fX19KSxmLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7Zi5meC5zdGVwW2JdPWZ1bmN0aW9uKGEpe2Yuc3R5bGUoYS5lbGVtLGIsTWF0aC5tYXgoMCxhLm5vdykpfX0pLGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gZi5ncmVwKGYudGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofSk7dmFyIGN5PS9edCg/OmFibGV8ZHxoKSQvaSxjej0vXig/OmJvZHl8aHRtbCkkL2k7ImdldEJvdW5kaW5nQ2xpZW50UmVjdCJpbiBjLmRvY3VtZW50RWxlbWVudD9mLmZuLm9mZnNldD1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdLGM7aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Yub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGYub2Zmc2V0LmJvZHlPZmZzZXQoYik7dHJ5e2M9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChkKXt9dmFyIGU9Yi5vd25lckRvY3VtZW50LGc9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoIWN8fCFmLmNvbnRhaW5zKGcsYikpcmV0dXJuIGM/e3RvcDpjLnRvcCxsZWZ0OmMubGVmdH06e3RvcDowLGxlZnQ6MH07dmFyIGg9ZS5ib2R5LGk9Y0EoZSksaj1nLmNsaWVudFRvcHx8aC5jbGllbnRUb3B8fDAsaz1nLmNsaWVudExlZnR8fGguY2xpZW50TGVmdHx8MCxsPWkucGFnZVlPZmZzZXR8fGYuc3VwcG9ydC5ib3hNb2RlbCYmZy5zY3JvbGxUb3B8fGguc2Nyb2xsVG9wLG09aS5wYWdlWE9mZnNldHx8Zi5zdXBwb3J0LmJveE1vZGVsJiZnLnNjcm9sbExlZnR8fGguc2Nyb2xsTGVmdCxuPWMudG9wK2wtaixvPWMubGVmdCttLWs7cmV0dXJue3RvcDpuLGxlZnQ6b319OmYuZm4ub2Zmc2V0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF07aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Yub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGYub2Zmc2V0LmJvZHlPZmZzZXQoYik7dmFyIGMsZD1iLm9mZnNldFBhcmVudCxlPWIsZz1iLm93bmVyRG9jdW1lbnQsaD1nLmRvY3VtZW50RWxlbWVudCxpPWcuYm9keSxqPWcuZGVmYXVsdFZpZXcsaz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGw9Yi5vZmZzZXRUb3AsbT1iLm9mZnNldExlZnQ7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYmYiE9PWkmJmIhPT1oKXtpZihmLnN1cHBvcnQuZml4ZWRQb3NpdGlvbiYmay5wb3NpdGlvbj09PSJmaXhlZCIpYnJlYWs7Yz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGwtPWIuc2Nyb2xsVG9wLG0tPWIuc2Nyb2xsTGVmdCxiPT09ZCYmKGwrPWIub2Zmc2V0VG9wLG0rPWIub2Zmc2V0TGVmdCxmLnN1cHBvcnQuZG9lc05vdEFkZEJvcmRlciYmKCFmLnN1cHBvcnQuZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHN8fCFjeS50ZXN0KGIubm9kZU5hbWUpKSYmKGwrPXBhcnNlRmxvYXQoYy5ib3JkZXJUb3BXaWR0aCl8fDAsbSs9cGFyc2VGbG9hdChjLmJvcmRlckxlZnRXaWR0aCl8fDApLGU9ZCxkPWIub2Zmc2V0UGFyZW50KSxmLnN1cHBvcnQuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlJiZjLm92ZXJmbG93IT09InZpc2libGUiJiYobCs9cGFyc2VGbG9hdChjLmJvcmRlclRvcFdpZHRoKXx8MCxtKz1wYXJzZUZsb2F0KGMuYm9yZGVyTGVmdFdpZHRoKXx8MCksaz1jfWlmKGsucG9zaXRpb249PT0icmVsYXRpdmUifHxrLnBvc2l0aW9uPT09InN0YXRpYyIpbCs9aS5vZmZzZXRUb3AsbSs9aS5vZmZzZXRMZWZ0O2Yuc3VwcG9ydC5maXhlZFBvc2l0aW9uJiZrLnBvc2l0aW9uPT09ImZpeGVkIiYmKGwrPU1hdGgubWF4KGguc2Nyb2xsVG9wLGkuc2Nyb2xsVG9wKSxtKz1NYXRoLm1heChoLnNjcm9sbExlZnQsaS5zY3JvbGxMZWZ0KSk7cmV0dXJue3RvcDpsLGxlZnQ6bX19LGYub2Zmc2V0PXtib2R5T2Zmc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEub2Zmc2V0VG9wLGM9YS5vZmZzZXRMZWZ0O2Yuc3VwcG9ydC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCYmKGIrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGMrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCk7cmV0dXJue3RvcDpiLGxlZnQ6Y319LHNldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Zi5jc3MoYSwicG9zaXRpb24iKTtkPT09InN0YXRpYyImJihhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciBlPWYoYSksZz1lLm9mZnNldCgpLGg9Zi5jc3MoYSwidG9wIiksaT1mLmNzcyhhLCJsZWZ0Iiksaj0oZD09PSJhYnNvbHV0ZSJ8fGQ9PT0iZml4ZWQiKSYmZi5pbkFycmF5KCJhdXRvIixbaCxpXSk+LTEsaz17fSxsPXt9LG0sbjtqPyhsPWUucG9zaXRpb24oKSxtPWwudG9wLG49bC5sZWZ0KToobT1wYXJzZUZsb2F0KGgpfHwwLG49cGFyc2VGbG9hdChpKXx8MCksZi5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGcpKSxiLnRvcCE9bnVsbCYmKGsudG9wPWIudG9wLWcudG9wK20pLGIubGVmdCE9bnVsbCYmKGsubGVmdD1iLmxlZnQtZy5sZWZ0K24pLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGspOmUuY3NzKGspfX0sZi5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pcmV0dXJuIG51bGw7dmFyIGE9dGhpc1swXSxiPXRoaXMub2Zmc2V0UGFyZW50KCksYz10aGlzLm9mZnNldCgpLGQ9Y3oudGVzdChiWzBdLm5vZGVOYW1lKT97dG9wOjAsbGVmdDowfTpiLm9mZnNldCgpO2MudG9wLT1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjLmxlZnQtPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCxkLnRvcCs9cGFyc2VGbG9hdChmLmNzcyhiWzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxkLmxlZnQrPXBhcnNlRmxvYXQoZi5jc3MoYlswXSwiYm9yZGVyTGVmdFdpZHRoIikpfHwwO3JldHVybnt0b3A6Yy50b3AtZC50b3AsbGVmdDpjLmxlZnQtZC5sZWZ0fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fGMuYm9keTt3aGlsZShhJiYhY3oudGVzdChhLm5vZGVOYW1lKSYmZi5jc3MoYSwicG9zaXRpb24iKT09PSJzdGF0aWMiKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF9KX19KSxmLmVhY2goWyJMZWZ0IiwiVG9wIl0sZnVuY3Rpb24oYSxjKXt2YXIgZD0ic2Nyb2xsIitjO2YuZm5bZF09ZnVuY3Rpb24oYyl7dmFyIGUsZztpZihjPT09Yil7ZT10aGlzWzBdO2lmKCFlKXJldHVybiBudWxsO2c9Y0EoZSk7cmV0dXJuIGc/InBhZ2VYT2Zmc2V0ImluIGc/Z1thPyJwYWdlWU9mZnNldCI6InBhZ2VYT2Zmc2V0Il06Zi5zdXBwb3J0LmJveE1vZGVsJiZnLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXXx8Zy5kb2N1bWVudC5ib2R5W2RdOmVbZF19cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2c9Y0EodGhpcyksZz9nLnNjcm9sbFRvKGE/ZihnKS5zY3JvbGxMZWZ0KCk6YyxhP2M6ZihnKS5zY3JvbGxUb3AoKSk6dGhpc1tkXT1jfSl9fSksZi5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihhLGMpe3ZhciBkPWMudG9Mb3dlckNhc2UoKTtmLmZuWyJpbm5lciIrY109ZnVuY3Rpb24oKXt2YXIgYT10aGlzWzBdO3JldHVybiBhP2Euc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhhLGQsInBhZGRpbmciKSk6dGhpc1tkXSgpOm51bGx9LGYuZm5bIm91dGVyIitjXT1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdO3JldHVybiBiP2Iuc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhiLGQsYT8ibWFyZ2luIjoiYm9yZGVyIikpOnRoaXNbZF0oKTpudWxsfSxmLmZuW2RdPWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXNbMF07aWYoIWUpcmV0dXJuIGE9PW51bGw/bnVsbDp0aGlzO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyk7Y1tkXShhLmNhbGwodGhpcyxiLGNbZF0oKSkpfSk7aWYoZi5pc1dpbmRvdyhlKSl7dmFyIGc9ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10saD1lLmRvY3VtZW50LmJvZHk7cmV0dXJuIGUuZG9jdW1lbnQuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IiYmZ3x8aCYmaFsiY2xpZW50IitjXXx8Z31pZihlLm5vZGVUeXBlPT09OSlyZXR1cm4gTWF0aC5tYXgoZS5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10sZS5ib2R5WyJzY3JvbGwiK2NdLGUuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK2NdLGUuYm9keVsib2Zmc2V0IitjXSxlLmRvY3VtZW50RWxlbWVudFsib2Zmc2V0IitjXSk7aWYoYT09PWIpe3ZhciBpPWYuY3NzKGUsZCksaj1wYXJzZUZsb2F0KGkpO3JldHVybiBmLmlzTnVtZXJpYyhqKT9qOml9cmV0dXJuIHRoaXMuY3NzKGQsdHlwZW9mIGE9PSJzdHJpbmciP2E6YSsicHgiKX19KSxhLmpRdWVyeT1hLiQ9Zn0pKHdpbmRvdyk7'></script>
	<script id="fb_extras_modnizr_253_min_js" src='data:/text/plain;base64,LyogTW9kZXJuaXpyIDIuNS4zIChDdXN0b20gQnVpbGQpIHwgTUlUICYgQlNECiAqIEJ1aWxkOiBodHRwOi8vd3d3Lm1vZGVybml6ci5jb20vZG93bmxvYWQvIy1jc3N0cmFuc2Zvcm1zLWNzc3RyYW5zZm9ybXMzZC1zaGl2LWNzc2NsYXNzZXMtdGVzdHN0eWxlcy10ZXN0cHJvcC10ZXN0YWxscHJvcHMtcHJlZml4ZXMtZG9tcHJlZml4ZXMtbG9hZAogKi8KO3dpbmRvdy5Nb2Rlcm5penI9ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIHooYSl7ai5jc3NUZXh0PWF9ZnVuY3Rpb24gQShhLGIpe3JldHVybiB6KG0uam9pbihhKyI7IikrKGJ8fCIiKSl9ZnVuY3Rpb24gQihhLGIpe3JldHVybiB0eXBlb2YgYT09PWJ9ZnVuY3Rpb24gQyhhLGIpe3JldHVybiEhfigiIithKS5pbmRleE9mKGIpfWZ1bmN0aW9uIEQoYSxiKXtmb3IodmFyIGQgaW4gYSlpZihqW2FbZF1dIT09YylyZXR1cm4gYj09InBmeCI/YVtkXTohMDtyZXR1cm4hMX1mdW5jdGlvbiBFKGEsYixkKXtmb3IodmFyIGUgaW4gYSl7dmFyIGY9YlthW2VdXTtpZihmIT09YylyZXR1cm4gZD09PSExP2FbZV06QihmLCJmdW5jdGlvbiIpP2YuYmluZChkfHxiKTpmfXJldHVybiExfWZ1bmN0aW9uIEYoYSxiLGMpe3ZhciBkPWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHIoMSksZT0oYSsiICIrby5qb2luKGQrIiAiKStkKS5zcGxpdCgiICIpO3JldHVybiBCKGIsInN0cmluZyIpfHxCKGIsInVuZGVmaW5lZCIpP0QoZSxiKTooZT0oYSsiICIrcC5qb2luKGQrIiAiKStkKS5zcGxpdCgiICIpLEUoZSxiLGMpKX12YXIgZD0iMi41LjMiLGU9e30sZj0hMCxnPWIuZG9jdW1lbnRFbGVtZW50LGg9Im1vZGVybml6ciIsaT1iLmNyZWF0ZUVsZW1lbnQoaCksaj1pLnN0eWxlLGssbD17fS50b1N0cmluZyxtPSIgLXdlYmtpdC0gLW1vei0gLW8tIC1tcy0gIi5zcGxpdCgiICIpLG49IldlYmtpdCBNb3ogTyBtcyIsbz1uLnNwbGl0KCIgIikscD1uLnRvTG93ZXJDYXNlKCkuc3BsaXQoIiAiKSxxPXt9LHI9e30scz17fSx0PVtdLHU9dC5zbGljZSx2LHc9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGYsaSxqLGs9Yi5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPWIuYm9keSxtPWw/bDpiLmNyZWF0ZUVsZW1lbnQoImJvZHkiKTtpZihwYXJzZUludChkLDEwKSl3aGlsZShkLS0paj1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGouaWQ9ZT9lW2RdOmgrKGQrMSksay5hcHBlbmRDaGlsZChqKTtyZXR1cm4gZj1bIiYjMTczOyIsIjxzdHlsZT4iLGEsIjwvc3R5bGU+Il0uam9pbigiIiksay5pZD1oLChsP2s6bSkuaW5uZXJIVE1MKz1mLG0uYXBwZW5kQ2hpbGQoayksbHx8KG0uc3R5bGUuYmFja2dyb3VuZD0iIixnLmFwcGVuZENoaWxkKG0pKSxpPWMoayxhKSxsP2sucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChrKTptLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobSksISFpfSx4PXt9Lmhhc093blByb3BlcnR5LHk7IUIoeCwidW5kZWZpbmVkIikmJiFCKHguY2FsbCwidW5kZWZpbmVkIik/eT1mdW5jdGlvbihhLGIpe3JldHVybiB4LmNhbGwoYSxiKX06eT1mdW5jdGlvbihhLGIpe3JldHVybiBiIGluIGEmJkIoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVbYl0sInVuZGVmaW5lZCIpfSxGdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXM7aWYodHlwZW9mIGMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgZD11LmNhbGwoYXJndW1lbnRzLDEpLGU9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgZSl7dmFyIGE9ZnVuY3Rpb24oKXt9O2EucHJvdG90eXBlPWMucHJvdG90eXBlO3ZhciBmPW5ldyBhLGc9Yy5hcHBseShmLGQuY29uY2F0KHUuY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIE9iamVjdChnKT09PWc/ZzpmfXJldHVybiBjLmFwcGx5KGIsZC5jb25jYXQodS5jYWxsKGFyZ3VtZW50cykpKX07cmV0dXJuIGV9KTt2YXIgRz1mdW5jdGlvbihhLGMpe3ZhciBkPWEuam9pbigiIiksZj1jLmxlbmd0aDt3KGQsZnVuY3Rpb24oYSxjKXt2YXIgZD1iLnN0eWxlU2hlZXRzW2Iuc3R5bGVTaGVldHMubGVuZ3RoLTFdLGc9ZD9kLmNzc1J1bGVzJiZkLmNzc1J1bGVzWzBdP2QuY3NzUnVsZXNbMF0uY3NzVGV4dDpkLmNzc1RleHR8fCIiOiIiLGg9YS5jaGlsZE5vZGVzLGk9e307d2hpbGUoZi0tKWlbaFtmXS5pZF09aFtmXTtlLmNzc3RyYW5zZm9ybXMzZD0oaS5jc3N0cmFuc2Zvcm1zM2QmJmkuY3NzdHJhbnNmb3JtczNkLm9mZnNldExlZnQpPT09OSYmaS5jc3N0cmFuc2Zvcm1zM2Qub2Zmc2V0SGVpZ2h0PT09M30sZixjKX0oWyxbIkBtZWRpYSAoIixtLmpvaW4oInRyYW5zZm9ybS0zZCksKCIpLGgsIikiLCJ7I2Nzc3RyYW5zZm9ybXMzZHtsZWZ0OjlweDtwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6M3B4O319Il0uam9pbigiIildLFssImNzc3RyYW5zZm9ybXMzZCJdKTtxLmNzc3RyYW5zZm9ybXM9ZnVuY3Rpb24oKXtyZXR1cm4hIUYoInRyYW5zZm9ybSIpfSxxLmNzc3RyYW5zZm9ybXMzZD1mdW5jdGlvbigpe3ZhciBhPSEhRigicGVyc3BlY3RpdmUiKTtyZXR1cm4gYSYmIndlYmtpdFBlcnNwZWN0aXZlImluIGcuc3R5bGUmJihhPWUuY3NzdHJhbnNmb3JtczNkKSxhfTtmb3IodmFyIEggaW4gcSl5KHEsSCkmJih2PUgudG9Mb3dlckNhc2UoKSxlW3ZdPXFbSF0oKSx0LnB1c2goKGVbdl0/IiI6Im5vLSIpK3YpKTtyZXR1cm4geigiIiksaT1rPW51bGwsZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBnKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KCJwIiksZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGEuZG9jdW1lbnRFbGVtZW50O3JldHVybiBjLmlubmVySFRNTD0ieDxzdHlsZT4iK2IrIjwvc3R5bGU+IixkLmluc2VydEJlZm9yZShjLmxhc3RDaGlsZCxkLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGgoKXt2YXIgYT1rLmVsZW1lbnRzO3JldHVybiB0eXBlb2YgYT09InN0cmluZyI/YS5zcGxpdCgiICIpOmF9ZnVuY3Rpb24gaShhKXt2YXIgYj17fSxjPWEuY3JlYXRlRWxlbWVudCxlPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxmPWUoKTthLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGU9KGJbYV18fChiW2FdPWMoYSkpKS5jbG9uZU5vZGUoKTtyZXR1cm4gay5zaGl2TWV0aG9kcyYmZS5jYW5IYXZlQ2hpbGRyZW4mJiFkLnRlc3QoYSk/Zi5hcHBlbmRDaGlsZChlKTplfSxhLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQ9RnVuY3Rpb24oImgsZiIsInJldHVybiBmdW5jdGlvbigpe3ZhciBuPWYuY2xvbmVOb2RlKCksYz1uLmNyZWF0ZUVsZW1lbnQ7aC5zaGl2TWV0aG9kcyYmKCIraCgpLmpvaW4oKS5yZXBsYWNlKC9cdysvZyxmdW5jdGlvbihhKXtyZXR1cm4gYlthXT1jKGEpLGYuY3JlYXRlRWxlbWVudChhKSwnYygiJythKyciKSd9KSsiKTtyZXR1cm4gbn0iKShrLGYpfWZ1bmN0aW9uIGooYSl7dmFyIGI7cmV0dXJuIGEuZG9jdW1lbnRTaGl2ZWQ/YTooay5zaGl2Q1NTJiYhZSYmKGI9ISFnKGEsImFydGljbGUsYXNpZGUsZGV0YWlscyxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsaGVhZGVyLGhncm91cCxuYXYsc2VjdGlvbntkaXNwbGF5OmJsb2NrfWF1ZGlve2Rpc3BsYXk6bm9uZX1jYW52YXMsdmlkZW97ZGlzcGxheTppbmxpbmUtYmxvY2s7KmRpc3BsYXk6aW5saW5lOyp6b29tOjF9W2hpZGRlbl17ZGlzcGxheTpub25lfWF1ZGlvW2NvbnRyb2xzXXtkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7Knpvb206MX1tYXJre2JhY2tncm91bmQ6I0ZGMDtjb2xvcjojMDAwfSIpKSxmfHwoYj0haShhKSksYiYmKGEuZG9jdW1lbnRTaGl2ZWQ9YiksYSl9dmFyIGM9YS5odG1sNXx8e30sZD0vXjx8Xig/OmJ1dHRvbnxmb3JtfG1hcHxzZWxlY3R8dGV4dGFyZWEpJC9pLGUsZjsoZnVuY3Rpb24oKXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImEiKTthLmlubmVySFRNTD0iPHh5ej48L3h5ej4iLGU9ImhpZGRlbiJpbiBhLGY9YS5jaGlsZE5vZGVzLmxlbmd0aD09MXx8ZnVuY3Rpb24oKXt0cnl7Yi5jcmVhdGVFbGVtZW50KCJhIil9Y2F0Y2goYSl7cmV0dXJuITB9dmFyIGM9Yi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7cmV0dXJuIHR5cGVvZiBjLmNsb25lTm9kZT09InVuZGVmaW5lZCJ8fHR5cGVvZiBjLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQ9PSJ1bmRlZmluZWQifHx0eXBlb2YgYy5jcmVhdGVFbGVtZW50PT0idW5kZWZpbmVkIn0oKX0pKCk7dmFyIGs9e2VsZW1lbnRzOmMuZWxlbWVudHN8fCJhYmJyIGFydGljbGUgYXNpZGUgYXVkaW8gYmRpIGNhbnZhcyBkYXRhIGRhdGFsaXN0IGRldGFpbHMgZmlnY2FwdGlvbiBmaWd1cmUgZm9vdGVyIGhlYWRlciBoZ3JvdXAgbWFyayBtZXRlciBuYXYgb3V0cHV0IHByb2dyZXNzIHNlY3Rpb24gc3VtbWFyeSB0aW1lIHZpZGVvIixzaGl2Q1NTOmMuc2hpdkNTUyE9PSExLHNoaXZNZXRob2RzOmMuc2hpdk1ldGhvZHMhPT0hMSx0eXBlOiJkZWZhdWx0IixzaGl2RG9jdW1lbnQ6an07YS5odG1sNT1rLGooYil9KHRoaXMsYiksZS5fdmVyc2lvbj1kLGUuX3ByZWZpeGVzPW0sZS5fZG9tUHJlZml4ZXM9cCxlLl9jc3NvbVByZWZpeGVzPW8sZS50ZXN0UHJvcD1mdW5jdGlvbihhKXtyZXR1cm4gRChbYV0pfSxlLnRlc3RBbGxQcm9wcz1GLGUudGVzdFN0eWxlcz13LGcuY2xhc3NOYW1lPWcuY2xhc3NOYW1lLnJlcGxhY2UoLyhefFxzKW5vLWpzKFxzfCQpLywiJDEkMiIpKyhmPyIganMgIit0LmpvaW4oIiAiKToiIiksZX0odGhpcyx0aGlzLmRvY3VtZW50KSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXtyZXR1cm4gby5jYWxsKGEpPT0iW29iamVjdCBGdW5jdGlvbl0ifWZ1bmN0aW9uIGUoYSl7cmV0dXJuIHR5cGVvZiBhPT0ic3RyaW5nIn1mdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGcoYSl7cmV0dXJuIWF8fGE9PSJsb2FkZWQifHxhPT0iY29tcGxldGUifHxhPT0idW5pbml0aWFsaXplZCJ9ZnVuY3Rpb24gaCgpe3ZhciBhPXAuc2hpZnQoKTtxPTEsYT9hLnQ/bShmdW5jdGlvbigpeyhhLnQ9PSJjIj9CLmluamVjdENzczpCLmluamVjdEpzKShhLnMsMCxhLmEsYS54LGEuZSwxKX0sMCk6KGEoKSxoKCkpOnE9MH1mdW5jdGlvbiBpKGEsYyxkLGUsZixpLGope2Z1bmN0aW9uIGsoYil7aWYoIW8mJmcobC5yZWFkeVN0YXRlKSYmKHUucj1vPTEsIXEmJmgoKSxsLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIpKXthIT0iaW1nIiYmbShmdW5jdGlvbigpe3QucmVtb3ZlQ2hpbGQobCl9LDUwKTtmb3IodmFyIGQgaW4geVtjXSl5W2NdLmhhc093blByb3BlcnR5KGQpJiZ5W2NdW2RdLm9ubG9hZCgpfX12YXIgaj1qfHxCLmVycm9yVGltZW91dCxsPXt9LG89MCxyPTAsdT17dDpkLHM6YyxlOmYsYTppLHg6an07eVtjXT09PTEmJihyPTEseVtjXT1bXSxsPWIuY3JlYXRlRWxlbWVudChhKSksYT09Im9iamVjdCI/bC5kYXRhPWM6KGwuc3JjPWMsbC50eXBlPWEpLGwud2lkdGg9bC5oZWlnaHQ9IjAiLGwub25lcnJvcj1sLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2suY2FsbCh0aGlzLHIpfSxwLnNwbGljZShlLDAsdSksYSE9ImltZyImJihyfHx5W2NdPT09Mj8odC5pbnNlcnRCZWZvcmUobCxzP251bGw6biksbShrLGopKTp5W2NdLnB1c2gobCkpfWZ1bmN0aW9uIGooYSxiLGMsZCxmKXtyZXR1cm4gcT0wLGI9Ynx8ImoiLGUoYSk/aShiPT0iYyI/djp1LGEsYix0aGlzLmkrKyxjLGQsZik6KHAuc3BsaWNlKHRoaXMuaSsrLDAsYSkscC5sZW5ndGg9PTEmJmgoKSksdGhpc31mdW5jdGlvbiBrKCl7dmFyIGE9QjtyZXR1cm4gYS5sb2FkZXI9e2xvYWQ6aixpOjB9LGF9dmFyIGw9Yi5kb2N1bWVudEVsZW1lbnQsbT1hLnNldFRpbWVvdXQsbj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXSxvPXt9LnRvU3RyaW5nLHA9W10scT0wLHI9Ik1vekFwcGVhcmFuY2UiaW4gbC5zdHlsZSxzPXImJiEhYi5jcmVhdGVSYW5nZSgpLmNvbXBhcmVOb2RlLHQ9cz9sOm4ucGFyZW50Tm9kZSxsPWEub3BlcmEmJm8uY2FsbChhLm9wZXJhKT09IltvYmplY3QgT3BlcmFdIixsPSEhYi5hdHRhY2hFdmVudCYmIWwsdT1yPyJvYmplY3QiOmw/InNjcmlwdCI6ImltZyIsdj1sPyJzY3JpcHQiOnUsdz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4gby5jYWxsKGEpPT0iW29iamVjdCBBcnJheV0ifSx4PVtdLHk9e30sej17dGltZW91dDpmdW5jdGlvbihhLGIpe3JldHVybiBiLmxlbmd0aCYmKGEudGltZW91dD1iWzBdKSxhfX0sQSxCO0I9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXt2YXIgYT1hLnNwbGl0KCIhIiksYj14Lmxlbmd0aCxjPWEucG9wKCksZD1hLmxlbmd0aCxjPXt1cmw6YyxvcmlnVXJsOmMscHJlZml4ZXM6YX0sZSxmLGc7Zm9yKGY9MDtmPGQ7ZisrKWc9YVtmXS5zcGxpdCgiPSIpLChlPXpbZy5zaGlmdCgpXSkmJihjPWUoYyxnKSk7Zm9yKGY9MDtmPGI7ZisrKWM9eFtmXShjKTtyZXR1cm4gY31mdW5jdGlvbiBnKGEsZSxmLGcsaSl7dmFyIGo9YihhKSxsPWouYXV0b0NhbGxiYWNrO2oudXJsLnNwbGl0KCIuIikucG9wKCkuc3BsaXQoIj8iKS5zaGlmdCgpLGouYnlwYXNzfHwoZSYmKGU9ZChlKT9lOmVbYV18fGVbZ118fGVbYS5zcGxpdCgiLyIpLnBvcCgpLnNwbGl0KCI/IilbMF1dfHxoKSxqLmluc3RlYWQ/ai5pbnN0ZWFkKGEsZSxmLGcsaSk6KHlbai51cmxdP2oubm9leGVjPSEwOnlbai51cmxdPTEsZi5sb2FkKGoudXJsLGouZm9yY2VDU1N8fCFqLmZvcmNlSlMmJiJjc3MiPT1qLnVybC5zcGxpdCgiLiIpLnBvcCgpLnNwbGl0KCI/Iikuc2hpZnQoKT8iYyI6YyxqLm5vZXhlYyxqLmF0dHJzLGoudGltZW91dCksKGQoZSl8fGQobCkpJiZmLmxvYWQoZnVuY3Rpb24oKXtrKCksZSYmZShqLm9yaWdVcmwsaSxnKSxsJiZsKGoub3JpZ1VybCxpLGcpLHlbai51cmxdPTJ9KSkpfWZ1bmN0aW9uIGkoYSxiKXtmdW5jdGlvbiBjKGEsYyl7aWYoYSl7aWYoZShhKSljfHwoaj1mdW5jdGlvbigpe3ZhciBhPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtrLmFwcGx5KHRoaXMsYSksbCgpfSksZyhhLGosYiwwLGgpO2Vsc2UgaWYoT2JqZWN0KGEpPT09YSlmb3IobiBpbiBtPWZ1bmN0aW9uKCl7dmFyIGI9MCxjO2ZvcihjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmYisrO3JldHVybiBifSgpLGEpYS5oYXNPd25Qcm9wZXJ0eShuKSYmKCFjJiYhLS1tJiYoZChqKT9qPWZ1bmN0aW9uKCl7dmFyIGE9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2suYXBwbHkodGhpcyxhKSxsKCl9Ompbbl09ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2EmJmEuYXBwbHkodGhpcyxiKSxsKCl9fShrW25dKSksZyhhW25dLGosYixuLGgpKX1lbHNlIWMmJmwoKX12YXIgaD0hIWEudGVzdCxpPWEubG9hZHx8YS5ib3RoLGo9YS5jYWxsYmFja3x8ZixrPWosbD1hLmNvbXBsZXRlfHxmLG0sbjtjKGg/YS55ZXA6YS5ub3BlLCEhaSksaSYmYyhpKX12YXIgaixsLG09dGhpcy55ZXBub3BlLmxvYWRlcjtpZihlKGEpKWcoYSwwLG0sMCk7ZWxzZSBpZih3KGEpKWZvcihqPTA7ajxhLmxlbmd0aDtqKyspbD1hW2pdLGUobCk/ZyhsLDAsbSwwKTp3KGwpP0IobCk6T2JqZWN0KGwpPT09bCYmaShsLG0pO2Vsc2UgT2JqZWN0KGEpPT09YSYmaShhLG0pfSxCLmFkZFByZWZpeD1mdW5jdGlvbihhLGIpe3pbYV09Yn0sQi5hZGRGaWx0ZXI9ZnVuY3Rpb24oYSl7eC5wdXNoKGEpfSxCLmVycm9yVGltZW91dD0xZTQsYi5yZWFkeVN0YXRlPT1udWxsJiZiLmFkZEV2ZW50TGlzdGVuZXImJihiLnJlYWR5U3RhdGU9ImxvYWRpbmciLGIuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQT1mdW5jdGlvbigpe2IucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQSwwKSxiLnJlYWR5U3RhdGU9ImNvbXBsZXRlIn0sMCkpLGEueWVwbm9wZT1rKCksYS55ZXBub3BlLmV4ZWN1dGVTdGFjaz1oLGEueWVwbm9wZS5pbmplY3RKcz1mdW5jdGlvbihhLGMsZCxlLGksail7dmFyIGs9Yi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxsLG8sZT1lfHxCLmVycm9yVGltZW91dDtrLnNyYz1hO2ZvcihvIGluIGQpay5zZXRBdHRyaWJ1dGUobyxkW29dKTtjPWo/aDpjfHxmLGsub25yZWFkeXN0YXRlY2hhbmdlPWsub25sb2FkPWZ1bmN0aW9uKCl7IWwmJmcoay5yZWFkeVN0YXRlKSYmKGw9MSxjKCksay5vbmxvYWQ9ay5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCl9LG0oZnVuY3Rpb24oKXtsfHwobD0xLGMoMSkpfSxlKSxpP2sub25sb2FkKCk6bi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShrLG4pfSxhLnllcG5vcGUuaW5qZWN0Q3NzPWZ1bmN0aW9uKGEsYyxkLGUsZyxpKXt2YXIgZT1iLmNyZWF0ZUVsZW1lbnQoImxpbmsiKSxqLGM9aT9oOmN8fGY7ZS5ocmVmPWEsZS5yZWw9InN0eWxlc2hlZXQiLGUudHlwZT0idGV4dC9jc3MiO2ZvcihqIGluIGQpZS5zZXRBdHRyaWJ1dGUoaixkW2pdKTtnfHwobi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLG4pLG0oYywwKSl9fSh0aGlzLGRvY3VtZW50KSxNb2Rlcm5penIubG9hZD1mdW5jdGlvbigpe3llcG5vcGUuYXBwbHkod2luZG93LFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKX07'></script>
	<script id="fb_lib_hash_js" src='data:/text/plain;base64,LyoqCiAqIGhhc2guanMKICoKICogQ29weXJpZ2h0IChDKSAyMDEyIEVtbWFudWVsIEdhcmNpYQogKiBNSVQgTGljZW5zZWQKICoKICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgogKiBIYXNoLnB1c2hTdGF0ZSh0cnVlKTsKICoKICogSGFzaC5vbignL3BhZ2UvKFswLTldKykkJywKICoJe3llcDogZnVuY3Rpb24ocGF0aCwgcGFydHMpIHsgfSwgbm9wOiBmdW5jdGlvbigpIHsgfX0sCiAqCSdQYWdlICQxJyk7CiAqCiAqIEhhc2guZ28oJy9wYWdlLzEnKTsKICoqLwoKKGZ1bmN0aW9uKCkgewoKJ3VzZSBzdHJpY3QnOwoKdmFyIGhhc2hlcyA9IHt9LAoJcmVnZXhwID0ge30sCgloaXN0b3J5ID0gW10sCglmcmVxID0gMTAwLAoJbnVtID0gMCwKCXB1c2hTdGF0ZSA9IGZhbHNlLAoJdGltZXIgPSBudWxsLAoJY3VycmVudFVybCA9IG51bGwsCgoJZnJlZXplID0gZnVuY3Rpb24ob2JqKSB7CgkJaWYgKE9iamVjdC5mcmVlemUpIHJldHVybiBPYmplY3QuZnJlZXplKG9iaik7CgkJcmV0dXJuIG9iajsKCX0sCgoJZ2V0SGFzaFBhcnRzID0gZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCcjJyk7Cgl9LAoKCXN0YXJ0VGltZXIgPSBmdW5jdGlvbigpIHsKCQkKCQlpZiAoIXRpbWVyKQoJCQl0aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewoJCQkJaWYgKG51bT4wICYmIGN1cnJlbnRVcmwhPXdpbmRvdy5sb2NhdGlvbi5ocmVmKSB7CgkJCQkJY3VycmVudFVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmOwoJCQkJCXdpbmRvdy5IYXNoLmNoZWNrKCk7CgkJCQl9CgkJCX0sIGZyZXEpOwoKCX0sCgoJc3RvcFRpbWVyID0gZnVuY3Rpb24oKSB7CgoJCWlmICh0aW1lcikgewoJCQljbGVhckludGVydmFsKHRpbWVyKTsKCQkJdGltZXIgPSBudWxsOwoJCX0KCgl9OwoKd2luZG93Lkhhc2ggPSBmcmVlemUoewoKCQlwdXNoU3RhdGU6IGZ1bmN0aW9uKHllcykgewoKCQkJaWYgKHdpbmRvdy5oaXN0b3J5ICYmIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSkKCQkJCXB1c2hTdGF0ZSA9IHllczsKCgkJCXJldHVybiB0aGlzOwoJCX0sCgoJCWZyYWdtZW50OiBmdW5jdGlvbigpIHsKCQkJCgkJCXZhciBoYXNoID0gZ2V0SGFzaFBhcnRzKCk7CgkJCXJldHVybiAocHVzaFN0YXRlKSA/CgkJCQl3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyAoKGhhc2hbMV0pID8gJyMnICsgaGFzaFsxXSA6ICcnKQoJCQkJOiBoYXNoWzFdIHx8ICcnOwoKCQl9LAoJCQoJCWdldDogZnVuY3Rpb24ocGF0aCwgcGFyYW1zKSB7CgkJCQoJCQl2YXIgcCwgZnJhZ21lbnQgPSAnJywgcGFyYW1ldGVycyA9IFtdOwoKCQkJZm9yKHAgaW4gcGFyYW1zKSB7CgkJCQlpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkocCkpCgkJCQkJY29udGludWU7CgkJCQlwYXJhbWV0ZXJzLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KHApICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtc1twXSkpOwoJCQl9CgoJCQlpZiAocGFyYW1ldGVycy5sZW5ndGg+MCkKCQkJCXBhcmFtZXRlcnMgPSAnPycgKyBwYXJhbWV0ZXJzLmpvaW4oJyYnKTsKCQkKCQkJcmV0dXJuIChwdXNoU3RhdGUpID8gcGF0aCArIHBhcmFtZXRlcnMgOgoJCQkJZ2V0SGFzaFBhcnRzKClbMF0gKyAnIycgKyBwYXRoICsgcGFyYW1ldGVyczsKCgkJfSwKCgkJZ286IGZ1bmN0aW9uKGhhc2gsIHBhcmFtcykgewoKCQkJaWYgKHRoaXMuZnJhZ21lbnQoKSE9aGFzaCkgewoJCQkJdmFyIHRvID0gdGhpcy5nZXQoaGFzaCwgcGFyYW1zKTsKCgkJCQlpZiAocHVzaFN0YXRlKQoJCQkJCXdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBkb2N1bWVudC50aXRsZSwgdG8pOwoJCQkJZWxzZQoJCQkJCXdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdG87CgkJCQl9CgkJCQoJCQlyZXR1cm4gdGhpczsKCQl9LAoKCQl1cGRhdGU6IGZ1bmN0aW9uICgpIHsKCQkJCgkJCWN1cnJlbnRVcmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsKCQkJcmV0dXJuIHRoaXM7CgoJCX0sCgoJCW9uOiBmdW5jdGlvbihoYXNoLCBjYWxsYmFjaywgdGl0bGUpIHsKCgkJCWlmICghaGFzaGVzW2hhc2hdKQoJCQkJaGFzaGVzW2hhc2hdID0ge3RpdGxlOiB0aXRsZSwgbGlzdGVuZXJzOiBbXX07CgkJCQoJCQloYXNoZXNbaGFzaF0ubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spOwoJCQludW0rKzsKCQkJc3RhcnRUaW1lcigpOwoKCQkJcmV0dXJuIHRoaXM7CgkJfSwKCgkJY2hlY2s6IGZ1bmN0aW9uKCkgewoKCQkJdmFyIGksCgkJCQloYXNoLAoJCQkJcGFydHMsCgkJCQlmcmFnbWVudCA9IHRoaXMuZnJhZ21lbnQoKTsKCgoJCQlmb3IgKGhhc2ggaW4gaGFzaGVzKSB7CgkJCQlpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoYXNoZXMsIGhhc2gpKQoJCQkJCWNvbnRpbnVlOwoKCQkJCWhhc2hlc1toYXNoXS5yZWdleHAgPSBoYXNoZXNbaGFzaF0ucmVnZXhwIHx8IG5ldyBSZWdFeHAoaGFzaCk7CgoJCQkJaWYgKChwYXJ0cyA9IGhhc2hlc1toYXNoXS5yZWdleHAuZXhlYyhmcmFnbWVudCkpKSB7CgkJCQkJaWYgKGhhc2hlc1toYXNoXS50aXRsZSkKCQkJCQkJZG9jdW1lbnQudGl0bGUgPSBoYXNoZXNbaGFzaF0udGl0bGU7CgoJCQkJCWZvciAoaSA9IDA7IGk8aGFzaGVzW2hhc2hdLmxpc3RlbmVycy5sZW5ndGg7IGkrKykKCQkJCQkJaWYgKGhhc2hlc1toYXNoXS5saXN0ZW5lcnNbaV0ueWVwKQoJCQkJCQkJaGFzaGVzW2hhc2hdLmxpc3RlbmVyc1tpXS55ZXAoZnJhZ21lbnQsIHBhcnRzKTsKCQkJCX0gZWxzZSB7CgkJCQkJZm9yIChpID0gMDsgaTxoYXNoZXNbaGFzaF0ubGlzdGVuZXJzLmxlbmd0aDsgaSsrKQoJCQkJCQlpZiAoaGFzaGVzW2hhc2hdLmxpc3RlbmVyc1tpXS5ub3ApCgkJCQkJCQloYXNoZXNbaGFzaF0ubGlzdGVuZXJzW2ldLm5vcChmcmFnbWVudCk7CgkJCQl9CgoJCQl9CgoJCQlyZXR1cm4gdGhpczsKCQl9Cn0pOwoKfSkoKTsK'></script>
	<script id="fb_lib_turn_html4_js" src='data:/text/plain;base64,LyoqCiAqIHR1cm4uanMgNHRoIHJlbGVhc2UgSFRNTDQgdmVyc2lvbgogKiB0dXJuanMuY29tCiAqIHR1cm5qcy5jb20vbGljZW5zZS50eHQKICoKICogQ29weXJpZ2h0IChDKSAyMDEyIEVtbWFudWVsIEdhcmNpYQogKiBBbGwgcmlnaHRzIHJlc2VydmVkCiAqKi8KCihmdW5jdGlvbigkKSB7CgondXNlIHN0cmljdCc7Cgp2YXIgaGFzM2QsCgogIHZlbmRvciA9ICcnLAogIAogIHZlcnNpb24gPSAnNC4xLjAnLAoKICBpc1RvdWNoID0gZmFsc2UsCgogIG1vdXNlRXZlbnRzID0KICAgIHsKICAgICAgZG93bjogJ21vdXNlZG93bicsCiAgICAgIG1vdmU6ICdtb3VzZW1vdmUnLAogICAgICB1cDogJ21vdXNldXAnLAogICAgICBvdmVyOiAnbW91c2VvdmVyJywKICAgICAgb3V0OiAnbW91c2VvdXQnCiAgICB9LAoKICBjb3JuZXJzID0gewogICAgYmFja3dhcmQ6IFsnbCddLAogICAgZm9yd2FyZDogWydyJ10sCiAgICBhbGw6IFsnbCcsICdyJ10KICB9LAoKICAvLyBEaXNwbGF5IHZhbHVlcwoKICBkaXNwbGF5cyA9IFsnc2luZ2xlJywgJ2RvdWJsZSddLAoKICAvLyBEaXJlY3Rpb24gdmFsdWVzCgogIGRpcmVjdGlvbnMgPSBbJ2x0cicsICdydGwnXSwKCiAgLy8gRGVmYXVsdCBvcHRpb25zCgogIHR1cm5PcHRpb25zID0gewoKICAgIC8vIEVuYWJsZXMgaGFyZHdhcmUgYWNjZWxlcmF0aW9uCgogICAgYWNjZWxlcmF0aW9uOiB0cnVlLAoKICAgIC8vIERpc3BsYXkKCiAgICBkaXNwbGF5OiAnZG91YmxlJywKCiAgICAvLyBEdXJhdGlvbiBvZiB0cmFuc2l0aW9uIGluIG1pbGxpc2Vjb25kcwoKICAgIGR1cmF0aW9uOiA2MDAsCgogICAgLy8gRmlyc3QgcGFnZQoKICAgIHBhZ2U6IDEsCiAgICAKICAgIC8vIEVuYWJsZXMgZ3JhZGllbnRzCgogICAgZ3JhZGllbnRzOiB0cnVlLAoKICAgIC8vIEV2ZW50cwoKICAgIHdoZW46IG51bGwKICB9LAoKICBmbGlwT3B0aW9ucyA9IHsKCiAgICAvLyBFbmFibGVzIGhhcmR3YXJlIGFjY2VsZXJhdGlvbgoKICAgIGFjY2VsZXJhdGlvbjogdHJ1ZSwKICAgIAogICAgLy8gQ29ybmVycwogICAgLy8gYmFja3dhcmQ6IEFjdGl2YXRlcyBib3RoIHRsIGFuZCBibCBjb3JuZXJzCiAgICAvLyBmb3J3YXJkOiBBY3RpdmF0ZXMgYm90aCB0ciBhbmQgYnIgY29ybmVycwogICAgLy8gYWxsOiBBY3RpdmF0ZXMgYWxsIHRoZSBjb3JuZXJzCgogICAgY29ybmVyczogJ2ZvcndhcmQnLAogICAgCiAgICAvLyBTaXplIG9mIHRoZSBhY3RpdmUgem9uZSBvZiBlYWNoIGNvcm5lcgoKICAgIGNvcm5lclNpemU6IDEwMCwKCgogICAgLy8gRHVyYXRpb24gb2YgdHJhbnNpdGlvbiBpbiBtaWxsaXNlY29uZHMKCiAgICBkdXJhdGlvbjogNjAwLAogICAgCiAgICAvLyBFbmFibGVzIGdyYWRpZW50cwoKICAgIGdyYWRpZW50czogdHJ1ZQoKICB9LAoKICAvLyBOdW1iZXIgb2YgcGFnZXMgaW4gdGhlIERPTSwgbWluaW11bSB2YWx1ZTogNgoKICBwYWdlc0luRE9NID0gNiwKICAKCnR1cm5NZXRob2RzID0gewoKICAvLyBTaW5nbGV0b24gY29uc3RydWN0b3IKICAvLyAkKCcjc2VsZWN0b3InKS50dXJuKFtvcHRpb25zXSk7CgogIGluaXQ6IGZ1bmN0aW9uKG9wdHMpIHsKCiAgICBpZiAodGhpcy5sZW5ndGg+MSkKICAgICAgdGhyb3cgdHVybkVycm9yKCdUaGlzIHNlbGVjdG9yIGhhcyBtb3JlIHRoYW4gMSBlbGVtZW50Jyk7CiAgICAKICAgIC8vIERlZmluZSBjb25zdGFudHMKICAgIAogICAgdmVuZG9yID0gZ2V0UHJlZml4KCk7CgogICAgdmFyIGksIHBhZ2VOdW0gPSAwLCBkYXRhID0gdGhpcy5kYXRhKCksIGNoID0gdGhpcy5jaGlsZHJlbigpOwoKICAgIC8vIFNldCBpbml0aWFsIGNvbmZpZ3VyYXRpb24KCiAgICBvcHRzID0gJC5leHRlbmQoewogICAgICB3aWR0aDogdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0KCksCiAgICAgIGRpcmVjdGlvbjogdGhpcy5hdHRyKCdkaXInKSB8fCB0aGlzLmNzcygnZGlyZWN0aW9uJykgfHwgJ2x0cicKICAgIH0sIHR1cm5PcHRpb25zLCBvcHRzKTsKCiAgICBkYXRhLm9wdHMgPSBvcHRzOwogICAgZGF0YS5wYWdlT2JqcyA9IHt9OwogICAgZGF0YS5wYWdlcyA9IHt9OwogICAgZGF0YS5wYWdlV3JhcCA9IHt9OwogICAgZGF0YS5wYWdlUGxhY2UgPSB7fTsKICAgIGRhdGEucGFnZU12ID0gW107CiAgICBkYXRhLnpvb20gPSAxOwogICAgZGF0YS50b3RhbFBhZ2VzID0gb3B0cy5wYWdlcyB8fCAwOwogICAgZGF0YS5kb2NFdmVudHMgPSB7CiAgICAgIG1vdXNlU3RhcnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpCiAgICAgICAgICBpZiAoaGFzKHBhZ2UsIGRhdGEucGFnZXMpICYmCiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9ldmVudFN0YXJ0LmNhbGwoZGF0YS5wYWdlc1twYWdlXSwgZSk9PT1mYWxzZSkKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0sCgogICAgICBtb3VzZU1vdmU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpCiAgICAgICAgICBpZiAoaGFzKHBhZ2UsIGRhdGEucGFnZXMpKQogICAgICAgICAgICBmbGlwTWV0aG9kcy5fZXZlbnRNb3ZlLmNhbGwoZGF0YS5wYWdlc1twYWdlXSwgZSk7CiAgICAgIH0sCgogICAgICBtb3VzZUVuZDogZnVuY3Rpb24oZSkgewogICAgICAgIGZvciAodmFyIHBhZ2UgaW4gZGF0YS5wYWdlcykKICAgICAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykpCiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9ldmVudEVuZC5jYWxsKGRhdGEucGFnZXNbcGFnZV0sIGUpOwogICAgICB9CiAgICB9OwoKICAgIC8vIEFkZCBldmVudCBsaXN0ZW5lcnMKCiAgICBpZiAob3B0cy53aGVuKQogICAgICBmb3IgKGkgaW4gb3B0cy53aGVuKQogICAgICAgIGlmIChoYXMoaSwgb3B0cy53aGVuKSkKICAgICAgICAgIHRoaXMuYmluZChpLCBvcHRzLndoZW5baV0pOwoKICAgIC8vIFNldCB0aGUgY3NzCgogICAgdGhpcy5jc3Moe3Bvc2l0aW9uOiAncmVsYXRpdmUnLCB3aWR0aDogb3B0cy53aWR0aCwgaGVpZ2h0OiBvcHRzLmhlaWdodH0pOwoKICAgIC8vIFNldCB0aGUgaW5pdGlhbCBkaXNwbGF5CgogICAgdGhpcy50dXJuKCdkaXNwbGF5Jywgb3B0cy5kaXNwbGF5KTsKCiAgICAvLyBTZXQgdGhlIGRpcmVjdGlvbgoKICAgIGlmIChvcHRzLmRpcmVjdGlvbiE9PScnKQogICAgICB0aGlzLnR1cm4oJ2RpcmVjdGlvbicsIG9wdHMuZGlyZWN0aW9uKTsKCgogICAgLy8gQWRkIHBhZ2VzIGZyb20gdGhlIERPTQoKICAgIGZvciAoaSA9IDA7IGk8Y2gubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKCQoY2hbaV0pLmF0dHIoJ2lnbm9yZScpIT0nMScpIHsKICAgICAgICB0aGlzLnR1cm4oJ2FkZFBhZ2UnLCBjaFtpXSwgKytwYWdlTnVtKTsKICAgICAgfQogICAgfQoKICAgIC8vIEV2ZW50IGxpc3RlbmVycwoKICAgICQodGhpcykuYmluZChtb3VzZUV2ZW50cy5kb3duLCBkYXRhLmRvY0V2ZW50cy5tb3VzZVN0YXJ0KS4KICAgICAgYmluZCgnc3RhcnQnLCB0dXJuTWV0aG9kcy5fc3RhcnQpLgogICAgICBiaW5kKCdlbmQnLCB0dXJuTWV0aG9kcy5fZW5kKS4KICAgICAgYmluZCgncHJlc3NlZCcsIHR1cm5NZXRob2RzLl9wcmVzc2VkKS4KICAgICAgYmluZCgncmVsZWFzZWQnLCB0dXJuTWV0aG9kcy5fcmVsZWFzZWQpLgogICAgICBiaW5kKCdmbGlwJywgdHVybk1ldGhvZHMuX2ZsaXApOwoKICAgICQoZG9jdW1lbnQpLmJpbmQobW91c2VFdmVudHMubW92ZSwgZGF0YS5kb2NFdmVudHMubW91c2VNb3ZlKS4KICAgICAgYmluZChtb3VzZUV2ZW50cy51cCwgZGF0YS5kb2NFdmVudHMubW91c2VFbmQpOwoKICAgIC8vIFNldCB0aGUgaW5pdGlhbCBwYWdlCgogICAgdGhpcy50dXJuKCdwYWdlJywgb3B0cy5wYWdlKTsKCiAgICBkYXRhLmRvbmUgPSB0cnVlOwoKICAgIHJldHVybiB0aGlzOwogIH0sCgogIC8vIEFkZHMgYSBwYWdlIGZyb20gZXh0ZXJuYWwgZGF0YQoKICBhZGRQYWdlOiBmdW5jdGlvbihlbGVtZW50LCBwYWdlKSB7CgogICAgdmFyIGN1cnJlbnRQYWdlLAogICAgICBjbGFzc05hbWUsCiAgICAgIGluY1BhZ2VzID0gZmFsc2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgbGFzdFBhZ2UgPSBkYXRhLnRvdGFsUGFnZXMrMTsKCiAgICBpZiAoZGF0YS5kZXN0cm95aW5nKQogICAgICByZXR1cm4gZmFsc2U7CgogICAgLy8gUmVhZCB0aGUgcGFnZSBudW1iZXIgZnJvbSB0aGUgY2xhc3NOYW1lIG9mIGBlbGVtZW50YCAtIGZvcm1hdDogcFswLTldKwoKICAgIGlmICgoY3VycmVudFBhZ2UgPSAvXGJwKFswLTldKylcYi8uZXhlYygkKGVsZW1lbnQpLmF0dHIoJ2NsYXNzJykpKSkKICAgICAgcGFnZSA9IHBhcnNlSW50KGN1cnJlbnRQYWdlWzFdLCAxMCk7CgogICAgaWYgKHBhZ2UpIHsKICAgICAgCiAgICAgIGlmIChwYWdlPT1sYXN0UGFnZSkKICAgICAgICBpbmNQYWdlcyA9IHRydWU7CiAgICAgIGVsc2UgaWYgKHBhZ2U+bGFzdFBhZ2UpCiAgICAgICAgdGhyb3cgdHVybkVycm9yKCdQYWdlICInK3BhZ2UrJyIgY2Fubm90IGJlIGluc2VydGVkJyk7CgogICAgfSBlbHNlIHsKICAgICAgCiAgICAgIHBhZ2UgPSBsYXN0UGFnZTsKICAgICAgaW5jUGFnZXMgPSB0cnVlOwoKICAgIH0KCiAgICBpZiAocGFnZT49MSAmJiBwYWdlPD1sYXN0UGFnZSkgewoKICAgICAgaWYgKGRhdGEuZGlzcGxheT09J2RvdWJsZScpCiAgICAgICAgY2xhc3NOYW1lID0gKHBhZ2UlMikgPyAnIG9kZCcgOiAnIGV2ZW4nOwogICAgICBlbHNlCiAgICAgICAgY2xhc3NOYW1lID0gJyc7CgogICAgICAvLyBTdG9wIGFuaW1hdGlvbnMKICAgICAgaWYgKGRhdGEuZG9uZSkKICAgICAgICB0aGlzLnR1cm4oJ3N0b3AnKTsKCiAgICAgIC8vIE1vdmUgcGFnZXMgaWYgaXQncyBuZWNlc3NhcnkKICAgICAgaWYgKHBhZ2UgaW4gZGF0YS5wYWdlT2JqcykKICAgICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgcGFnZSwgMSk7CgogICAgICAvLyBJbmNyZWFzZSB0aGUgbnVtYmVyIG9mIHBhZ2VzCiAgICAgIGlmIChpbmNQYWdlcykKICAgICAgICBkYXRhLnRvdGFsUGFnZXMgPSBsYXN0UGFnZTsKCiAgICAgIC8vIEFkZCBlbGVtZW50CiAgICAgIGRhdGEucGFnZU9ianNbcGFnZV0gPSAkKGVsZW1lbnQpLgogICAgICAgIGNzcyh7J2Zsb2F0JzogJ2xlZnQnfSkuCiAgICAgICAgYWRkQ2xhc3MoJ3BhZ2UgcCcgKyBwYWdlICsgY2xhc3NOYW1lKTsKCiAgICAgIC8vIEFkZCBwYWdlCiAgICAgIHR1cm5NZXRob2RzLl9hZGRQYWdlLmNhbGwodGhpcywgcGFnZSk7CgoKICAgICAgLy8gVXBkYXRlIHZpZXcKICAgICAgaWYgKGRhdGEuZG9uZSkKICAgICAgICB0aGlzLnR1cm4oJ3VwZGF0ZScpOwoKCiAgICAgIC8vIFJlbW92ZSBwYWdlcyBvdXQgb2YgcmFuZ2UKICAgICAgdHVybk1ldGhvZHMuX3JlbW92ZUZyb21ET00uY2FsbCh0aGlzKTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9LAoKICAvLyBBZGRzIGEgcGFnZQoKICBfYWRkUGFnZTogZnVuY3Rpb24ocGFnZSkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBlbGVtZW50ID0gZGF0YS5wYWdlT2Jqc1twYWdlXTsKCiAgICBpZiAoZWxlbWVudCkKICAgICAgaWYgKHR1cm5NZXRob2RzLl9uZWNlc3NQYWdlLmNhbGwodGhpcywgcGFnZSkpIHsKCiAgICAgICAgaWYgKCFkYXRhLnBhZ2VXcmFwW3BhZ2VdKSB7CgogICAgICAgICAgdmFyIHByb3AgPSB0dXJuTWV0aG9kcy5fcGFnZVNpemUuY2FsbCh0aGlzLCBwYWdlLCB0cnVlKTsKCiAgICAgICAgICBlbGVtZW50LmNzcyh7d2lkdGg6IHByb3Aud2lkdGgsIGhlaWdodDogcHJvcC5oZWlnaHR9KTsKCiAgICAgICAgICAvLyBQbGFjZQogICAgICAgICAgZGF0YS5wYWdlUGxhY2VbcGFnZV0gPSBwYWdlOwoKICAgICAgICAgIC8vIFdyYXBwZXIKICAgICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0gPSAkKCc8ZGl2Lz4nLAogICAgICAgICAgICB7J2NsYXNzJzogJ3R1cm4tcGFnZS13cmFwcGVyJywKICAgICAgICAgICAgICBwYWdlOiBwYWdlLAogICAgICAgICAgICAgIGNzczoge3Bvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ319KS4KICAgICAgICAgICAgY3NzKHByb3ApOwoKICAgICAgICAgIC8vIEFwcGVuZCB0byB0aGlzCiAgICAgICAgICB0aGlzLmFwcGVuZChkYXRhLnBhZ2VXcmFwW3BhZ2VdKTsKCiAgICAgICAgICAvLyBNb3ZlIGVsZW1lbnQgdG8gd3JhcHBlcgogICAgICAgICAgZGF0YS5wYWdlV3JhcFtwYWdlXS5wcmVwZW5kKGRhdGEucGFnZU9ianNbcGFnZV0pOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBwYWdlIGlzIGluIHRoZSBjdXJyZW50IHZpZXcsIGNyZWF0ZSB0aGUgZmxpcCBlZmZlY3QKICAgICAgICBpZiAoIXBhZ2UgfHwgdHVybk1ldGhvZHMuX3NldFBhZ2VMb2MuY2FsbCh0aGlzLCBwYWdlKT09MSkKICAgICAgICAgIHR1cm5NZXRob2RzLl9tYWtlRmxpcC5jYWxsKHRoaXMsIHBhZ2UpOwogICAgICAgIAogICAgICB9IGVsc2UgewoKICAgICAgICAvLyBQbGFjZQogICAgICAgIGRhdGEucGFnZVBsYWNlW3BhZ2VdID0gMDsKCiAgICAgICAgLy8gUmVtb3ZlIGVsZW1lbnQgZnJvbSB0aGUgRE9NCiAgICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0pCiAgICAgICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdLnJlbW92ZSgpOwoKICAgICAgfQoKICB9LAoKICAvLyBDaGVja3MgaWYgYSBwYWdlIGlzIGluIG1lbW9yeQogIAogIGhhc1BhZ2U6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICByZXR1cm4gaGFzKHBhZ2UsIHRoaXMuZGF0YSgpLnBhZ2VPYmpzKTsKICAKICB9LAoKICAvLyBDZW50ZXJzIHRoZSBmbGlwYm9vawoKICBjZW50ZXI6IGZ1bmN0aW9uKHBhZ2UpIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgc2l6ZSA9ICQodGhpcykudHVybignc2l6ZScpLAogICAgICBsZWZ0ID0gc2l6ZS53aWR0aC8oZGF0YS56b29tKjIpIC1zaXplLndpZHRoLzI7CgogICAgaWYgKGRhdGEuZGlzcGxheT09J2RvdWJsZScpIHsKICAgICAgdmFyIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnLCBwYWdlIHx8IGRhdGEudHBhZ2UgfHwgZGF0YS5wYWdlKTsKCiAgICAgIGlmIChkYXRhLmRpcmVjdGlvbj09J2x0cicpIHsKICAgICAgICBpZiAoIXZpZXdbMF0pCiAgICAgICAgICBsZWZ0IC09IHNpemUud2lkdGgvNDsKICAgICAgICBlbHNlIGlmICghdmlld1sxXSkKICAgICAgICAgIGxlZnQgKz0gc2l6ZS53aWR0aC80OwogICAgICB9IGVsc2UgewogICAgICAgIGlmICghdmlld1swXSkKICAgICAgICAgIGxlZnQgKz0gc2l6ZS53aWR0aC80OwogICAgICAgIGVsc2UgaWYgKCF2aWV3WzFdKQogICAgICAgICAgbGVmdCAtPSBzaXplLndpZHRoLzQ7CiAgICAgIH0KICAgIH0KCiAgICAkKHRoaXMpLmNzcyh7bWFyZ2luTGVmdDogbGVmdH0pOwoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEZXN0cm95cyB0aGUgZmxpcGJvb2sKCiAgZGVzdHJveTogZnVuY3Rpb24gKCkgewoKICAgIHZhciBwYWdlLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgZGF0YS5kZXN0cm95aW5nID0gdHJ1ZTsKCiAgICAkKHRoaXMpLnVuYmluZChtb3VzZUV2ZW50cy5kb3duKQogICAgICAudW5iaW5kKCdlbmQnKQogICAgICAudW5iaW5kKCdmaXJzdCcpCiAgICAgIC51bmJpbmQoJ2ZsaXAnKQogICAgICAudW5iaW5kKCdsYXN0JykKICAgICAgLnVuYmluZCgncHJlc3NlZCcpCiAgICAgIC51bmJpbmQoJ3JlbGVhc2VkJykKICAgICAgLnVuYmluZCgnc3RhcnQnKQogICAgICAudW5iaW5kKCd0dXJuaW5nJykKICAgICAgLnVuYmluZCgndHVybmVkJykKICAgICAgLnVuYmluZCgnem9vbWluZycpOwoKICAgICQoZG9jdW1lbnQpLnVuYmluZChtb3VzZUV2ZW50cy5tb3ZlLCBkYXRhLmRvY0V2ZW50cy5tb3VzZU1vdmUpLgogICAgICB1bmJpbmQobW91c2VFdmVudHMudXAsIGRhdGEuZG9jRXZlbnRzLm1vdXNlRW5kKTsKICAgIAogICAgd2hpbGUgKGRhdGEudG90YWxQYWdlcyE9PTApIHsKICAgICAgdGhpcy50dXJuKCdyZW1vdmVQYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgIH0KCiAgICBpZiAoZGF0YS5mcGFyZW50KQogICAgICBkYXRhLmZwYXJlbnQucmVtb3ZlKCk7CgogICAgaWYgKGRhdGEuc2hhZG93KQogICAgICBkYXRhLnNoYWRvdy5yZW1vdmUoKTsKCiAgICB0aGlzLnJlbW92ZURhdGEoKTsKICAgIGRhdGEgPSBudWxsOwoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBDaGVja3MgaWYgdGhpcyBlbGVtZW50IGlzIGEgZmxpcGJvb2sKCiAgaXM6IGZ1bmN0aW9uKCkgewoKICAgIHJldHVybiB0eXBlb2YodGhpcy5kYXRhKCkucGFnZXMpPT0nb2JqZWN0JzsKCiAgfSwKCiAgLy8gU2V0cyBhbmQgZ2V0cyB0aGUgem9vbSB2YWx1ZQoKICB6b29tOiBmdW5jdGlvbihuZXdab29tKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHR5cGVvZihuZXdab29tKT09J251bWJlcicpIHsKCiAgICAgIGlmIChuZXdab29tPDAuMDAxIHx8IG5ld1pvb20+MTAwKQogICAgICAgIHRocm93IHR1cm5FcnJvcihuZXdab29tKyAnIGlzIG5vdCBhIHZhbHVlIGZvciB6b29tJyk7CiAgICAKICAgICAgdmFyIGV2ZW50ID0gJC5FdmVudCgnem9vbWluZycpOwogICAgICB0aGlzLnRyaWdnZXIoZXZlbnQsIFtuZXdab29tLCBkYXRhLnpvb21dKTsKCiAgICAgIGlmIChldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAgICByZXR1cm4gdGhpczsKICAgICAgCiAgICAgIHZhciBzaXplID0gJCh0aGlzKS50dXJuKCdzaXplJyksCiAgICAgICAgaXogPSAxL2RhdGEuem9vbSwKICAgICAgICBuZXdXaWR0aCA9IE1hdGgucm91bmQoc2l6ZS53aWR0aCAqIGl6ICogbmV3Wm9vbSksCiAgICAgICAgbmV3SGVpZ2h0ID0gTWF0aC5yb3VuZChzaXplLmhlaWdodCAqIGl6ICogbmV3Wm9vbSk7CiAgICAKICAgICAgZGF0YS56b29tID0gbmV3Wm9vbTsKCiAgICAgICQodGhpcykudHVybignc3RvcCcpLgogICAgICAgIHR1cm4oJ3NpemUnLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KS4KICAgICAgICBjc3Moe21hcmdpblRvcDogc2l6ZS5oZWlnaHQgKiBpeiAvIDIgLSBuZXdIZWlnaHQgLyAyfSk7CgogICAgICBpZiAoZGF0YS5vcHRzLmF1dG9DZW50ZXIpCiAgICAgICAgdGhpcy50dXJuKCdjZW50ZXInKTsKICAgICAgZWxzZQogICAgICAgICQodGhpcykuY3NzKHttYXJnaW5MZWZ0OiBzaXplLndpZHRoICogaXogLyAyIC0gbmV3V2lkdGggLyAyfSk7CiAgICAgIAogICAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwodGhpcyk7CiAgCiAgICAgIHJldHVybiB0aGlzOwoKICAgIH0gZWxzZQogICAgICByZXR1cm4gZGF0YS56b29tOwoKICB9LAoKICAvLyBHZXRzIHRoZSBzaXplIG9mIGEgcGFnZQoKICBfcGFnZVNpemU6IGZ1bmN0aW9uKHBhZ2UsIHBvc2l0aW9uKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgcHJvcCA9IHt9OwoKICAgIGlmIChkYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICBwcm9wLndpZHRoID0gdGhpcy53aWR0aCgpOwogICAgICBwcm9wLmhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7CgogICAgICBpZiAocG9zaXRpb24pIHsKICAgICAgICBwcm9wLnRvcCA9IDA7CiAgICAgICAgcHJvcC5sZWZ0ID0gMDsKICAgICAgICBwcm9wLnJpZ2h0ID0gJ2F1dG8nOwogICAgICB9CgogICAgfSBlbHNlIHsKCiAgICAgIHZhciBwYWdlV2lkdGggPSB0aGlzLndpZHRoKCkvMiwKICAgICAgICBwYWdlSGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTsKCiAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdvd24tc2l6ZScpKSB7CiAgICAgICAgcHJvcC53aWR0aCA9IGRhdGEucGFnZU9ianNbcGFnZV0ud2lkdGgoKTsKICAgICAgICBwcm9wLmhlaWdodCA9IGRhdGEucGFnZU9ianNbcGFnZV0uaGVpZ2h0KCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcHJvcC53aWR0aCA9IHBhZ2VXaWR0aDsKICAgICAgICBwcm9wLmhlaWdodCA9IHBhZ2VIZWlnaHQ7CiAgICAgIH0KCiAgICAgIGlmIChwb3NpdGlvbikgewogICAgICAgIHZhciBvZGQgPSBwYWdlJTI7CiAgICAgICAgcHJvcC50b3AgPSAocGFnZUhlaWdodC1wcm9wLmhlaWdodCkvMjsKCiAgICAgICAgaWYgKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgewogICAgICAgICAgCiAgICAgICAgICBwcm9wWyhvZGQpID8gJ3JpZ2h0JyA6ICdsZWZ0J10gPSBwYWdlV2lkdGgtcHJvcC53aWR0aDsKICAgICAgICAgIHByb3BbKG9kZCkgPyAnbGVmdCcgOiAncmlnaHQnXSA9ICdhdXRvJzsKCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIAogICAgICAgICAgcHJvcFsob2RkKSA/ICdsZWZ0JyA6ICdyaWdodCddID0gcGFnZVdpZHRoLXByb3Aud2lkdGg7CiAgICAgICAgICBwcm9wWyhvZGQpID8gJ3JpZ2h0JyA6ICdsZWZ0J10gPSAnYXV0byc7CgogICAgICAgIH0KCiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcHJvcDsKCiAgfSwKCiAgLy8gUHJlcGFyZXMgdGhlIGZsaXAgZWZmZWN0IGZvciBhIHBhZ2UKCiAgX21ha2VGbGlwOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoIWRhdGEucGFnZXNbcGFnZV0gJiYgZGF0YS5wYWdlUGxhY2VbcGFnZV09PXBhZ2UpIHsKICAgICAgdmFyIGNvcm5lciwKICAgICAgICBzaW5nbGUgPSBkYXRhLmRpc3BsYXk9PSdzaW5nbGUnLAogICAgICAgIG9kZCA9IHBhZ2UlMjsKCiAgICAgIGRhdGEucGFnZXNbcGFnZV0gPSBkYXRhLnBhZ2VPYmpzW3BhZ2VdLgogICAgICAgIGNzcyh0dXJuTWV0aG9kcy5fcGFnZVNpemUuY2FsbCh0aGlzLCBwYWdlKSkuCiAgICAgICAgZmxpcCh7cGFnZTogcGFnZSwKICAgICAgICAgIG5leHQ6IChvZGQgfHwgc2luZ2xlKSA/IHBhZ2UrMSA6IHBhZ2UtMSwKICAgICAgICAgIHR1cm46IHRoaXMsCiAgICAgICAgICBkdXJhdGlvbjogZGF0YS5vcHRzLmR1cmF0aW9uLAogICAgICAgICAgYWNjZWxlcmF0aW9uIDogZGF0YS5vcHRzLmFjY2VsZXJhdGlvbiwKICAgICAgICAgIGdyYWRpZW50czogZGF0YS5vcHRzLmdyYWRpZW50cwogICAgICAgICAgfSkuCiAgICAgICAgICBmbGlwKCdkaXNhYmxlJywgZGF0YS5kaXNhYmxlZCk7CiAgICB9CgogICAgcmV0dXJuIGRhdGEucGFnZXNbcGFnZV07CiAgfSwKCiAgLy8gTWFrZXMgcGFnZXMgd2l0aGluIGEgcmFuZ2UKCiAgX21ha2VSYW5nZTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIHJhbmdlLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKGRhdGEudG90YWxQYWdlczwxKQogICAgICByZXR1cm47CgogICAgcmFuZ2UgPSB0aGlzLnR1cm4oJ3JhbmdlJyk7CgogICAgZm9yIChwYWdlID0gcmFuZ2VbMF07IHBhZ2U8PXJhbmdlWzFdOyBwYWdlKyspCiAgICAgIHR1cm5NZXRob2RzLl9hZGRQYWdlLmNhbGwodGhpcywgcGFnZSk7CgogIH0sCgogIC8vIFJldHVybnMgYSByYW5nZSBvZiBwYWdlcyB0aGF0IHNob3VsZCBiZSBpbiB0aGUgRE9NCiAgLy8gRXhhbXBsZToKICAvLyAtIHBhZ2UgaW4gdGhlIGN1cnJlbnQgdmlldywgcmV0dXJuIHRydWUKICAvLyAqIHBhZ2UgaXMgaW4gdGhlIHJhbmdlLCByZXR1cm4gdHJ1ZQogIC8vIE90aGVyd2lzZSwgcmV0dXJuIGZhbHNlCiAgLy8KICAvLyAxIDItMyA0LTUgNi03IDgtOSAxMC0xMSAxMi0xMwogIC8vICAgKiogICoqICAtLSAgICoqICAqKgoKICByYW5nZTogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciByZW1haW5pbmdQYWdlcywgbGVmdCwgcmlnaHQsIHZpZXcsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCgogICAgICBwYWdlID0gcGFnZSB8fCBkYXRhLnRwYWdlIHx8IGRhdGEucGFnZSB8fCAxOwogICAgICB2aWV3ID0gdHVybk1ldGhvZHMuX3ZpZXcuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgIGlmIChwYWdlPDEgfHwgcGFnZT5kYXRhLnRvdGFsUGFnZXMpCiAgICAgICAgdGhyb3cgdHVybkVycm9yKCciJytwYWdlKyciIGlzIG5vdCBhIHBhZ2UgZm9yIHJhbmdlJyk7CiAgICAKICAgICAgdmlld1sxXSA9IHZpZXdbMV0gfHwgdmlld1swXTsKICAgICAgCiAgICAgIGlmICh2aWV3WzBdPj0xICYmIHZpZXdbMV08PWRhdGEudG90YWxQYWdlcykgewoKICAgICAgICByZW1haW5pbmdQYWdlcyA9IE1hdGguZmxvb3IoKHBhZ2VzSW5ET00tMikvMik7CgogICAgICAgIGlmIChkYXRhLnRvdGFsUGFnZXMtdmlld1sxXSA+IHZpZXdbMF0pIHsKICAgICAgICAgIGxlZnQgPSBNYXRoLm1pbih2aWV3WzBdLTEsIHJlbWFpbmluZ1BhZ2VzKTsKICAgICAgICAgIHJpZ2h0ID0gMipyZW1haW5pbmdQYWdlcy1sZWZ0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByaWdodCA9IE1hdGgubWluKGRhdGEudG90YWxQYWdlcy12aWV3WzFdLCByZW1haW5pbmdQYWdlcyk7CiAgICAgICAgICBsZWZ0ID0gMipyZW1haW5pbmdQYWdlcy1yaWdodDsKICAgICAgICB9CgogICAgICB9IGVsc2UgewogICAgICAgIGxlZnQgPSBwYWdlc0luRE9NLTE7CiAgICAgICAgcmlnaHQgPSBwYWdlc0luRE9NLTE7CiAgICAgIH0KCiAgICAgIHJldHVybiBbTWF0aC5tYXgoMSwgdmlld1swXS1sZWZ0KSwKICAgICAgICAgIE1hdGgubWluKGRhdGEudG90YWxQYWdlcywgdmlld1sxXStyaWdodCldOwoKICB9LAoKICAvLyBEZXRlY3RzIGlmIGEgcGFnZSBpcyB3aXRoaW4gdGhlIHJhbmdlIG9mIGBwYWdlc0luRE9NYCBmcm9tIHRoZSBjdXJyZW50IHZpZXcKCiAgX25lY2Vzc1BhZ2U6IGZ1bmN0aW9uKHBhZ2UpIHsKICAgIAogICAgaWYgKHBhZ2U9PT0wKQogICAgICByZXR1cm4gdHJ1ZTsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICByYW5nZSA9IHRoaXMudHVybigncmFuZ2UnKTsKCiAgICByZXR1cm4gZGF0YS5wYWdlT2Jqc1twYWdlXS5oYXNDbGFzcygnZml4ZWQnKSB8fAogICAgICAocGFnZT49cmFuZ2VbMF0gJiYgcGFnZTw9cmFuZ2VbMV0pOwogICAgCiAgfSwKCiAgLy8gUmVsZWFzZXMgbWVtb3J5IGJ5IHJlbW92aW5nIHBhZ2VzIGZyb20gdGhlIERPTQoKICBfcmVtb3ZlRnJvbURPTTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VXcmFwKSAmJgogICAgICAgICF0dXJuTWV0aG9kcy5fbmVjZXNzUGFnZS5jYWxsKHRoaXMsIHBhZ2UpKQogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKICAgIAogIH0sCgogIC8vIFJlbW92ZXMgYSBwYWdlIGZyb20gRE9NIGFuZCBpdHMgaW50ZXJuYWwgcmVmZXJlbmNlcwoKICBfcmVtb3ZlUGFnZUZyb21ET006IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKSB7CiAgICAgIHZhciBkZCA9IGRhdGEucGFnZXNbcGFnZV0uZGF0YSgpOwoKICAgICAgZmxpcE1ldGhvZHMuX21vdmVGb2xkaW5nUGFnZS5jYWxsKGRhdGEucGFnZXNbcGFnZV0sIGZhbHNlKTsKCiAgICAgIGlmIChkZC5mICYmIGRkLmYuZndyYXBwZXIpCiAgICAgICAgZGQuZi5md3JhcHBlci5yZW1vdmUoKTsKCiAgICAgIGRhdGEucGFnZXNbcGFnZV0ucmVtb3ZlRGF0YSgpOwogICAgICBkYXRhLnBhZ2VzW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlc1twYWdlXTsKICAgIH0KCiAgICBpZiAoZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgZGF0YS5wYWdlT2Jqc1twYWdlXS5yZW1vdmUoKTsKCiAgICBpZiAoZGF0YS5wYWdlV3JhcFtwYWdlXSkgewogICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlV3JhcFtwYWdlXTsKICAgIH0KCiAgICBkZWxldGUgZGF0YS5wYWdlUGxhY2VbcGFnZV07CgogIH0sCgogIC8vIFJlbW92ZXMgYSBwYWdlCgogIHJlbW92ZVBhZ2U6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChwYWdlPDEgfHwgcGFnZT5kYXRhLnRvdGFsUGFnZXMpCiAgICAgIHRocm93IHR1cm5FcnJvcignVGhlIHBhZ2UgJysgcGFnZSArICcgZG9lc25cJ3QgZXhpc3QnKTsKICAgICAgCiAgICBpZiAoZGF0YS5wYWdlT2Jqc1twYWdlXSkgewoKICAgICAgLy8gU3RvcCBhbmltYXRpb25zCiAgICAgIHRoaXMudHVybignc3RvcCcpOwoKICAgICAgLy8gUmVtb3ZlIGBwYWdlYAogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKICAgICAgZGVsZXRlIGRhdGEucGFnZU9ianNbcGFnZV07CgogICAgfQoKICAgIC8vIE1vdmUgdGhlIHBhZ2VzIGJlaGluZCBgcGFnZWAKICAgIHR1cm5NZXRob2RzLl9tb3ZlUGFnZXMuY2FsbCh0aGlzLCBwYWdlLCAtMSk7CgogICAgLy8gUmVzaXplIHRoZSBzaXplIG9mIHRoaXMgZmxpcGJvb2sKICAgIGRhdGEudG90YWxQYWdlcyA9IGRhdGEudG90YWxQYWdlcy0xOwoKICAgIC8vIENoZWNrIHRoZSBjdXJyZW50IHZpZXcKCiAgICBpZiAoZGF0YS5wYWdlPmRhdGEudG90YWxQYWdlcykKICAgICAgdGhpcy50dXJuKCdwYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgIGVsc2UKICAgICAgdHVybk1ldGhvZHMuX21ha2VSYW5nZS5jYWxsKHRoaXMpOwoKICAgIHJldHVybiB0aGlzOwogIAogIH0sCgogIC8vIE1vdmVzIHBhZ2VzCgogIF9tb3ZlUGFnZXM6IGZ1bmN0aW9uKGZyb20sIGNoYW5nZSkgewoKICAgIHZhciBwYWdlLAogICAgICB0aGF0ID0gdGhpcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBzaW5nbGUgPSBkYXRhLmRpc3BsYXk9PSdzaW5nbGUnLAogICAgICBtb3ZlID0gZnVuY3Rpb24ocGFnZSkgewoKICAgICAgICB2YXIgbmV4dCA9IHBhZ2UgKyBjaGFuZ2UsCiAgICAgICAgICBvZGQgPSBuZXh0JTIsCiAgICAgICAgICBjbGFzc05hbWUgPSAob2RkKSA/ICcgb2RkICcgOiAnIGV2ZW4gJzsKCiAgICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0pCiAgICAgICAgICBkYXRhLnBhZ2VPYmpzW25leHRdID0gZGF0YS5wYWdlT2Jqc1twYWdlXQogICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3AnICsgcGFnZSArICcgb2RkIGV2ZW4nKQogICAgICAgICAgICAuYWRkQ2xhc3MoJ3AnICsgbmV4dCArIGNsYXNzTmFtZSk7CgogICAgICAgIGlmIChkYXRhLnBhZ2VQbGFjZVtwYWdlXSAmJiBkYXRhLnBhZ2VXcmFwW3BhZ2VdKSB7CiAgICAgICAgICBkYXRhLnBhZ2VQbGFjZVtuZXh0XSA9IG5leHQ7CiAgICAgICAgCiAgICAgICAgaWYgKGRhdGEucGFnZU9ianNbbmV4dF0uaGFzQ2xhc3MoJ2ZpeGVkJykpCiAgICAgICAgICBkYXRhLnBhZ2VXcmFwW25leHRdID0gZGF0YS5wYWdlV3JhcFtwYWdlXQogICAgICAgICAgICAuYXR0cigncGFnZScsIG5leHQpOwogICAgICAgIGVsc2UKICAgICAgICAgIGRhdGEucGFnZVdyYXBbbmV4dF0gPSBkYXRhLnBhZ2VXcmFwW3BhZ2VdLgogICAgICAgICAgICBjc3ModHVybk1ldGhvZHMuX3BhZ2VTaXplLmNhbGwodGhhdCwgbmV4dCwgdHJ1ZSkpLgogICAgICAgICAgICBhdHRyKCdwYWdlJywgbmV4dCk7CiAgICAKICAgICAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKQogICAgICAgICAgICBkYXRhLnBhZ2VzW25leHRdID0gZGF0YS5wYWdlc1twYWdlXQogICAgICAgICAgICAgIC5mbGlwKCdvcHRpb25zJywgewogICAgICAgICAgICAgICAgcGFnZTogbmV4dCwKICAgICAgICAgICAgICAgIG5leHQ6IChzaW5nbGUgfHwgb2RkKSA/IG5leHQrMSA6IG5leHQtMSwKICAgICAgICAgICAgICAgIGNvcm5lcnM6IChzaW5nbGUpID8gJ2FsbCcgOgogICAgICAgICAgICAgICAgICAoKG9kZCkgPyAnZm9yd2FyZCcgOiAnYmFja3dhcmQnKQogICAgICAgICAgICAgIH0pOwoKICAgICAgICAgIGlmIChjaGFuZ2UpIHsKICAgICAgICAgICAgZGVsZXRlIGRhdGEucGFnZXNbcGFnZV07CiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VQbGFjZVtwYWdlXTsKICAgICAgICAgICAgZGVsZXRlIGRhdGEucGFnZU9ianNbcGFnZV07CiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VXcmFwW3BhZ2VdOwogICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlT2Jqc1twYWdlXTsKICAgICAgICAgIH0KICAgICAgfQogICAgfTsKCiAgICBpZiAoY2hhbmdlPjApCiAgICAgIGZvciAocGFnZT1kYXRhLnRvdGFsUGFnZXM7IHBhZ2U+PWZyb207IHBhZ2UtLSkKICAgICAgICBtb3ZlKHBhZ2UpOwogICAgZWxzZQogICAgICBmb3IgKHBhZ2U9ZnJvbTsgcGFnZTw9ZGF0YS50b3RhbFBhZ2VzOyBwYWdlKyspCiAgICAgICAgbW92ZShwYWdlKTsKCiAgfSwKCiAgLy8gU2V0cyBvciBHZXRzIHRoZSBkaXNwbGF5IG1vZGUKCiAgZGlzcGxheTogZnVuY3Rpb24oZGlzcGxheSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIGN1cnJlbnREaXNwbGF5ID0gZGF0YS5kaXNwbGF5OwoKICAgIGlmIChkaXNwbGF5KSB7CgogICAgICBpZiAoJC5pbkFycmF5KGRpc3BsYXksIGRpc3BsYXlzKT09LTEpCiAgICAgICAgdGhyb3cgdHVybkVycm9yKCciJytkaXNwbGF5ICsgJyIgaXMgbm90IGEgdmFsdWUgZm9yIGRpc3BsYXknKTsKICAgICAgCiAgICAgIGlmIChkaXNwbGF5PT0nc2luZ2xlJykgewogICAgICAgIGlmICghZGF0YS5wYWdlT2Jqc1swXSkgewoKICAgICAgICAgIHRoaXMudHVybignc3RvcCcpLgogICAgICAgICAgICBjc3MoeydvdmVyZmxvdyc6ICdoaWRkZW4nfSk7CgogICAgICAgICAgZGF0YS5wYWdlT2Jqc1swXSA9ICQoJzxkaXYgLz4nLAogICAgICAgICAgICAgIHsnY2xhc3MnOiAncGFnZSBwLXRlbXBvcmFsJ30pLgogICAgICAgICAgICBjc3Moe3dpZHRoOiB0aGlzLndpZHRoKCksIGhlaWdodDogdGhpcy5oZWlnaHQoKX0pLgogICAgICAgICAgICBhcHBlbmRUbyh0aGlzKTsKCiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzWzBdKSB7CiAgICAgICAgICB0aGlzLnR1cm4oJ3N0b3AnKS5jc3MoeydvdmVyZmxvdyc6ICcnfSk7CiAgICAgICAgICBkYXRhLnBhZ2VPYmpzWzBdLnJlbW92ZSgpOwogICAgICAgICAgZGVsZXRlIGRhdGEucGFnZU9ianNbMF07CiAgICAgICAgfQogICAgICB9CgogICAgICBkYXRhLmRpc3BsYXkgPSBkaXNwbGF5OwoKICAgICAgaWYgKGN1cnJlbnREaXNwbGF5KSB7CiAgICAgICAgdmFyIHNpemUgPSB0aGlzLnR1cm4oJ3NpemUnKTsKICAgICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgMSwgMCk7CiAgICAgICAgdGhpcy50dXJuKCdzaXplJywgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpLgogICAgICAgICAgdHVybigndXBkYXRlJyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzOwoKICAgIH0gZWxzZQogICAgICByZXR1cm4gY3VycmVudERpc3BsYXk7CiAgCiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBmbGlwYm9vawoKICBkaXJlY3Rpb246IGZ1bmN0aW9uKGRpcikgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHR5cGVvZihkaXIpPT0ndW5kZWZpbmVkJykgewoKICAgICAgcmV0dXJuIGRhdGEuZGlyZWN0aW9uOwoKICAgIH0gZWxzZSB7CgogICAgICBkaXIgPSBkaXIudG9Mb3dlckNhc2UoKTsKCiAgICAgIGlmICgkLmluQXJyYXkoZGlyLCBkaXJlY3Rpb25zKT09LTEpCiAgICAgICAgdGhyb3cgdHVybkVycm9yKCciJyArIGRpciArICciIGlzIG5vdCBhIHZhbHVlIGZvciBkaXJlY3Rpb24nKTsKCiAgICAgIGlmIChkaXI9PSdydGwnKSB7CiAgICAgICAgJCh0aGlzKS5hdHRyKCdkaXInLCAnbHRyJykuCiAgICAgICAgICBjc3Moe2RpcmVjdGlvbjogJ2x0cid9KTsKICAgICAgfQoKICAgICAgZGF0YS5kaXJlY3Rpb24gPSBkaXI7CgogICAgICBpZiAoZGF0YS5kb25lKQogICAgICAgIHRoaXMudHVybignc2l6ZScsICQodGhpcykud2lkdGgoKSwgJCh0aGlzKS5oZWlnaHQoKSk7CgogICAgICByZXR1cm4gdGhpczsKICAgIH0KCiAgfSwKCiAgLy8gRGV0ZWN0cyBpZiB0aGUgcGFnZXMgYXJlIGJlaW5nIGFuaW1hdGVkCgogIGFuaW1hdGluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMuZGF0YSgpLnBhZ2VNdi5sZW5ndGg+MDsKCiAgfSwKCiAgLy8gRGlzYWJsZXMgYW5kIGVuYWJsZXMgdGhlIGVmZmVjdAoKICBkaXNhYmxlOiBmdW5jdGlvbihib29sKSB7CgogICAgdmFyIHBhZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgICAgZGF0YS5kaXNhYmxlZCA9IGJvb2w9PT11bmRlZmluZWQgfHwgYm9vbD09PXRydWU7CgogICAgZm9yIChwYWdlIGluIGRhdGEucGFnZXMpCiAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykpCiAgICAgICAgZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdkaXNhYmxlJywgKGJvb2wpID8gJC5pbkFycmF5KHBhZ2UsIHZpZXcpIDogZmFsc2UpOwoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEaXNhYmxlcyBhbmQgZW5hYmxlcyB0aGUgZWZmZWN0CgogIGRpc2FibGVkOiBmdW5jdGlvbihkaXNhYmxlKSB7CgogICAgaWYgKGRpc2FibGU9PT11bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIHRoaXMuZGF0YSgpLmRpc2FibGVkPT09dHJ1ZTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB0aGlzLnR1cm4oJ2Rpc2FibGUnLCBkaXNhYmxlKTsKICAgIH0KCiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgc2l6ZQoKICBzaXplOiBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7CgogICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewoKICAgICAgdmFyIHBhZ2UsIHByb3AsCiAgICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICAgIHBhZ2VXaWR0aCA9IChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKSA/IHdpZHRoLzIgOiB3aWR0aDsKCiAgICAgIHRoaXMuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CgogICAgICBpZiAoZGF0YS5wYWdlT2Jqc1swXSkKICAgICAgICBkYXRhLnBhZ2VPYmpzWzBdLmNzcyh7d2lkdGg6IHBhZ2VXaWR0aCwgaGVpZ2h0OiBoZWlnaHR9KTsKICAgICAgCiAgICAgIGZvciAocGFnZSBpbiBkYXRhLnBhZ2VXcmFwKSB7CiAgICAgICAgaWYgKCFoYXMocGFnZSwgZGF0YS5wYWdlV3JhcCkpIGNvbnRpbnVlOwoKICAgICAgICBwcm9wID0gdHVybk1ldGhvZHMuX3BhZ2VTaXplLmNhbGwodGhpcywgcGFnZSwgdHJ1ZSk7CgogICAgICAgIGRhdGEucGFnZU9ianNbcGFnZV0uY3NzKHt3aWR0aDogcHJvcC53aWR0aCwgaGVpZ2h0OiBwcm9wLmhlaWdodH0pOwogICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKHByb3ApOwoKICAgICAgICBpZiAoZGF0YS5wYWdlc1twYWdlXSkKICAgICAgICAgIGRhdGEucGFnZXNbcGFnZV0uY3NzKHt3aWR0aDogcHJvcC53aWR0aCwgaGVpZ2h0OiBwcm9wLmhlaWdodH0pOwogICAgICB9CgogICAgICB0aGlzLnR1cm4oJ3Jlc2l6ZScpOwoKICAgICAgcmV0dXJuIHRoaXM7CgogICAgfSBlbHNlIHsKICAgICAgCiAgICAgIHJldHVybiB7d2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpfTsKCiAgICB9CiAgfSwKCiAgLy8gUmVzaXplcyBlYWNoIHBhZ2UKCiAgcmVzaXplOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkYXRhLnBhZ2VzWzBdKSB7CiAgICAgIGRhdGEucGFnZVdyYXBbMF0uY3NzKHtsZWZ0OiAtdGhpcy53aWR0aCgpfSk7CiAgICAgIGRhdGEucGFnZXNbMF0uZmxpcCgncmVzaXplJywgdHJ1ZSk7CiAgICB9CgogICAgZm9yIChwYWdlID0gMTsgcGFnZSA8PSBkYXRhLnRvdGFsUGFnZXM7IHBhZ2UrKykKICAgICAgaWYgKGRhdGEucGFnZXNbcGFnZV0pCiAgICAgICAgZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdyZXNpemUnLCB0cnVlKTsKCgogIH0sCgogIC8vIFJlbW92ZXMgYW4gYW5pbWF0aW9uIGZyb20gdGhlIGNhY2hlCgogIF9yZW1vdmVNdjogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBpLCBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICAgIAogICAgZm9yIChpPTA7IGk8ZGF0YS5wYWdlTXYubGVuZ3RoOyBpKyspCiAgICAgIGlmIChkYXRhLnBhZ2VNdltpXT09cGFnZSkgewogICAgICAgIGRhdGEucGFnZU12LnNwbGljZShpLCAxKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQoKICAgIHJldHVybiBmYWxzZTsKCiAgfSwKCiAgLy8gQWRkcyBhbiBhbmltYXRpb24gdG8gdGhlIGNhY2hlCiAgCiAgX2FkZE12OiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlTXYuY2FsbCh0aGlzLCBwYWdlKTsKICAgIGRhdGEucGFnZU12LnB1c2gocGFnZSk7CgogIH0sCgogIC8vIEdldHMgaW5kZXhlcyBmb3IgYSB2aWV3CgogIF92aWV3OiBmdW5jdGlvbihwYWdlKSB7CiAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwogICAgCiAgICBwYWdlID0gcGFnZSB8fCBkYXRhLnBhZ2U7CgogICAgaWYgKGRhdGEuZGlzcGxheT09J2RvdWJsZScpCiAgICAgIHJldHVybiAocGFnZSUyKSA/IFtwYWdlLTEsIHBhZ2VdIDogW3BhZ2UsIHBhZ2UrMV07CiAgICBlbHNlCiAgICAgIHJldHVybiBbcGFnZV07CgogIH0sCgogIC8vIEdldHMgYSB2aWV3CgogIHZpZXc6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICB2aWV3ID0gdHVybk1ldGhvZHMuX3ZpZXcuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJykKICAgICAgcmV0dXJuIFsodmlld1swXT4wKSA/IHZpZXdbMF0gOiAwLAogICAgICAgICh2aWV3WzFdPD1kYXRhLnRvdGFsUGFnZXMpID8gdmlld1sxXSA6IDBdOwogICAgZWxzZQogICAgICByZXR1cm4gWyh2aWV3WzBdPjAgJiYgdmlld1swXTw9ZGF0YS50b3RhbFBhZ2VzKSA/IHZpZXdbMF0gOiAwXTsKCiAgfSwKCiAgLy8gU3RvcHMgYW5pbWF0aW9ucwoKICBzdG9wOiBmdW5jdGlvbihpZ25vcmUsIGFuaW1hdGUpIHsKCiAgICBpZiAodGhpcy50dXJuKCdhbmltYXRpbmcnKSkgewogICAgICB2YXIgaSwgb3B0cywgcGFnZSwKICAgICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgICAgcGFnZXMgPSBkYXRhLnBhZ2VNdjsKCiAgICAgIGRhdGEucGFnZU12ID0gW107CgogICAgICBpZiAoZGF0YS50cGFnZSkgewogICAgICAgIGRhdGEucGFnZSA9IGRhdGEudHBhZ2U7CiAgICAgICAgZGVsZXRlIGRhdGFbJ3RwYWdlJ107CiAgICAgIH0KCiAgICAgIGZvciAoaSA9IDA7IGk8cGFnZXMubGVuZ3RoOyBpKyspIHsKCiAgICAgICAgcGFnZSA9IGRhdGEucGFnZXNbcGFnZXNbaV1dOwogICAgICAgIG9wdHMgPSBwYWdlLmRhdGEoKS5mLm9wdHM7CgogICAgICAgIHBhZ2UuZmxpcCgnaGlkZUZvbGRlZFBhZ2UnLCBmYWxzZSk7CgogICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbChwYWdlLCBmYWxzZSk7CgogICAgICAgIGRhdGEucGFnZVBsYWNlW29wdHMubmV4dF0gPSBvcHRzLm5leHQ7CgogICAgICAgIGlmIChvcHRzLmZvcmNlKSB7CiAgICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5wYWdlJTI9PT0wKSA/IG9wdHMucGFnZS0xIDogb3B0cy5wYWdlKzE7CiAgICAgICAgICBkZWxldGUgb3B0c1snZm9yY2UnXTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICB0aGlzLnR1cm4oJ3VwZGF0ZScpOwoKICAgIHJldHVybiB0aGlzOwogIAogIH0sCgogIC8vIEdldHMgYW5kIHNldHMgdGhlIG51bWJlciBvZiBwYWdlcwoKICBwYWdlczogZnVuY3Rpb24ocGFnZXMpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChwYWdlcykgewogICAgICBpZiAocGFnZXM8ZGF0YS50b3RhbFBhZ2VzKSB7CgogICAgICAgIGZvciAodmFyIHBhZ2UgPSBwYWdlcysxOyBwYWdlPD1kYXRhLnRvdGFsUGFnZXM7IHBhZ2UrKykKICAgICAgICAgIHRoaXMudHVybigncmVtb3ZlUGFnZScsIHBhZ2UpOwoKICAgICAgICBpZiAodGhpcy50dXJuKCdwYWdlJyk+cGFnZXMpCiAgICAgICAgICB0aGlzLnR1cm4oJ3BhZ2UnLCBwYWdlcyk7CiAgICAgIH0KCiAgICAgIGRhdGEudG90YWxQYWdlcyA9IHBhZ2VzOwoKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9IGVsc2UKICAgICAgcmV0dXJuIGRhdGEudG90YWxQYWdlczsKCiAgfSwKCiAgLy8gQ2hlY2tzIG1pc3NpbmcgcGFnZXMKCiAgX21pc3NpbmcgOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIHZhciBwLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHJhbmdlID0gdGhpcy50dXJuKCdyYW5nZScsIHBhZ2UpLAogICAgICBtaXNzaW5nID0gW107CgogICAgZm9yIChwID0gcmFuZ2VbMF07IHA8PXJhbmdlWzFdOyBwKyspIHsKICAgICAgaWYgKCFkYXRhLnBhZ2VPYmpzW3BdKQogICAgICAgIG1pc3NpbmcucHVzaChwKTsKICAgIH0KCiAgICBpZiAobWlzc2luZy5sZW5ndGg+MCkKICAgICAgdGhpcy50cmlnZ2VyKCdtaXNzaW5nJywgW21pc3NpbmddKTsKICAgIAogIH0sCgogIC8vIFNldHMgYSBwYWdlIHdpdGhvdXQgZWZmZWN0CgogIF9maXRQYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIHBhZ2UpOwogICAgCiAgICB0dXJuTWV0aG9kcy5fbWlzc2luZy5jYWxsKHRoaXMsIHBhZ2UpOwoKICAgIGlmICghZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgcmV0dXJuOwoKICAgIGRhdGEucGFnZSA9IHBhZ2U7CgogICAgdGhpcy50dXJuKCdzdG9wJyk7CiAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlRnJvbURPTS5jYWxsKHRoaXMpOwogICAgdHVybk1ldGhvZHMuX21ha2VSYW5nZS5jYWxsKHRoaXMpOwogICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKHRoaXMpOwogICAgdGhpcy50cmlnZ2VyKCd0dXJuZWQnLCBbcGFnZSwgbmV3Vmlld10pOwoKICAgIGlmIChkYXRhLm9wdHMuYXV0b0NlbnRlcikKICAgICAgdGhpcy50dXJuKCdjZW50ZXInKTsKCiAgfSwKICAKICAvLyBUdXJucyB0byBhIHBhZ2UKCiAgX3R1cm5QYWdlOiBmdW5jdGlvbihwYWdlLCBmcm9tTW91c2VBY3Rpb24pIHsKCiAgICB2YXIgY3VycmVudCwgbmV4dCwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBwbGFjZSA9IGRhdGEucGFnZVBsYWNlW3BhZ2VdLAogICAgICB2aWV3ID0gdGhpcy50dXJuKCd2aWV3JyksCiAgICAgIG5ld1ZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnLCBwYWdlKTsKICAKICAgIGlmIChkYXRhLnBhZ2UhPXBhZ2UpIHsKCiAgICAgIHZhciBldmVudCA9ICQuRXZlbnQoJ3R1cm5pbmcnKTsKICAgICAgdGhpcy50cmlnZ2VyKGV2ZW50LCBbcGFnZSwgbmV3Vmlld10pOwoKICAgICAgaWYgKGV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpKQogICAgICAgIHJldHVybjsKCiAgICAgIGlmICgkLmluQXJyYXkoMSwgbmV3VmlldykhPS0xKQogICAgICAgIHRoaXMudHJpZ2dlcignZmlyc3QnKTsKICAgICAgaWYgKCQuaW5BcnJheShkYXRhLnRvdGFsUGFnZXMsIG5ld1ZpZXcpIT0tMSkKICAgICAgICB0aGlzLnRyaWdnZXIoJ2xhc3QnKTsKCiAgICB9CgoKCiAgICBpZiAoZnJvbU1vdXNlQWN0aW9uKSB7CgogICAgICB0aGlzLnR1cm4oJ3N0b3AnLCBwbGFjZSk7CgogICAgfSBlbHNlIHsKCiAgICAgIHR1cm5NZXRob2RzLl9taXNzaW5nLmNhbGwodGhpcywgcGFnZSk7CiAgICAgIAogICAgICBpZiAoIWRhdGEucGFnZU9ianNbcGFnZV0pCiAgICAgICAgcmV0dXJuOwoKICAgICAgdGhpcy50dXJuKCdzdG9wJyk7CiAgICAgIGRhdGEucGFnZSA9IHBhZ2U7CiAgICB9CiAgICAKCiAgICB0dXJuTWV0aG9kcy5fbWFrZVJhbmdlLmNhbGwodGhpcyk7CgogICAgaWYgKGRhdGEuZGlzcGxheT09J3NpbmdsZScpIHsKICAgICAgY3VycmVudCA9IHZpZXdbMF07CiAgICAgIG5leHQgPSBuZXdWaWV3WzBdOwogICAgfSBlbHNlIGlmICh2aWV3WzFdICYmIHBhZ2U+dmlld1sxXSkgewogICAgICBjdXJyZW50ID0gdmlld1sxXTsKICAgICAgbmV4dCA9IG5ld1ZpZXdbMF07CiAgICB9IGVsc2UgaWYgKHZpZXdbMF0gJiYgcGFnZTx2aWV3WzBdKSB7CiAgICAgIGN1cnJlbnQgPSB2aWV3WzBdOwogICAgICBuZXh0ID0gbmV3Vmlld1sxXTsKICAgIH0KCiAgICBpZiAoZGF0YS5wYWdlc1tjdXJyZW50XSkgewoKICAgICAgdmFyIG9wdHMgPSBkYXRhLnBhZ2VzW2N1cnJlbnRdLmRhdGEoKS5mLm9wdHM7CiAgICAgIGRhdGEudHBhZ2UgPSBuZXh0OwogICAgICAKICAgICAgaWYgKG9wdHMubmV4dCE9bmV4dCkgewogICAgICAgIG9wdHMubmV4dCA9IG5leHQ7CiAgICAgICAgZGF0YS5wYWdlUGxhY2VbbmV4dF0gPSBvcHRzLnBhZ2U7CiAgICAgICAgb3B0cy5mb3JjZSA9IHRydWU7CiAgICAgIH0KCiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICAgIGlmIChkYXRhLmRpcmVjdGlvbj09J2x0cicpIHsKICAgICAgICAgIGRhdGEucGFnZXNbY3VycmVudF0uZmxpcCgndHVyblBhZ2UnLAogICAgICAgICAgICAobmV3Vmlld1swXSA+IHZpZXdbMF0pID8gJ3InIDogJ2wnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScsCiAgICAgICAgICAgIChuZXdWaWV3WzBdID4gdmlld1swXSkgPyAnbCcgOiAncicpOwogICAgICAgIH0KCiAgICAgIH0gZWxzZSB7CiAgICAgICAgCiAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScpOwoKICAgICAgfQogICAgfQoKICB9LAoKICAvLyBHZXRzIGFuZCBzZXRzIGEgcGFnZQoKICBwYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgcGFnZSA9IHBhcnNlSW50KHBhZ2UsIDEwKTsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChwYWdlPjAgJiYgcGFnZTw9ZGF0YS50b3RhbFBhZ2VzKSB7CiAgICAgIGlmICghZGF0YS5kb25lIHx8ICQuaW5BcnJheShwYWdlLCB0aGlzLnR1cm4oJ3ZpZXcnKSkhPS0xKQogICAgICAgIHR1cm5NZXRob2RzLl9maXRQYWdlLmNhbGwodGhpcywgcGFnZSk7CiAgICAgIGVsc2UKICAgICAgICB0dXJuTWV0aG9kcy5fdHVyblBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKICAgIAogICAgICByZXR1cm4gdGhpczsKCiAgICB9IGVsc2UKICAgICAgcmV0dXJuIGRhdGEucGFnZTsKICAKICB9LAoKICAvLyBUdXJucyB0byB0aGUgbmV4dCB2aWV3CgogIG5leHQ6IGZ1bmN0aW9uKCkgewoKICAgIHJldHVybiB0aGlzLnR1cm4oJ3BhZ2UnLAogICAgICB0dXJuTWV0aG9kcy5fdmlldy5jYWxsKHRoaXMsIHRoaXMuZGF0YSgpLnBhZ2UpLnBvcCgpICsgMSk7CiAgCiAgfSwKCiAgLy8gVHVybnMgdG8gdGhlIHByZXZpb3VzIHZpZXcKCiAgcHJldmlvdXM6IGZ1bmN0aW9uKCkgewogICAgCiAgICByZXR1cm4gdGhpcy50dXJuKCdwYWdlJywKICAgICAgdHVybk1ldGhvZHMuX3ZpZXcuY2FsbCh0aGlzLCB0aGlzLmRhdGEoKS5wYWdlKS5zaGlmdCgpIC0gMSk7CgogIH0sCgogIHBlZWw6IGZ1bmN0aW9uKGNvcm5lciwgYW5pbWF0ZSkgewogICAgCiAgICByZXR1cm4gdGhpczsKCiAgfSwKCiAgLy8gQWRkcyBhIG1vdGlvbiB0byB0aGUgaW50ZXJuYWwgbGlzdAogIC8vIFRoaXMgZXZlbnQgaXMgY2FsbGVkIGluIGNvbnRleHQgb2YgZmxpcAoKICBfYWRkTW90aW9uUGFnZTogZnVuY3Rpb24oKSB7CgogICAgdmFyIG9wdHMgPSAkKHRoaXMpLmRhdGEoKS5mLm9wdHMsCiAgICAgIHR1cm4gPSBvcHRzLnR1cm4sCiAgICAgIGRkID0gdHVybi5kYXRhKCk7CgogICAgdHVybk1ldGhvZHMuX2FkZE12LmNhbGwodHVybiwgb3B0cy5wYWdlKTsKICAgIGRkLnBhZ2VQbGFjZVtvcHRzLm5leHRdID0gb3B0cy5wYWdlOwogICAgdHVybi50dXJuKCd1cGRhdGUnKTsKCiAgfSwKCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCgogIF9zdGFydDogZnVuY3Rpb24oZSwgb3B0cywgY29ybmVyKSB7CgogICAgdmFyIGRhdGEgPSBvcHRzLnR1cm4uZGF0YSgpOwoKICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CiAgICAgIHR1cm5NZXRob2RzLl91cGRhdGVTaGFkb3cuY2FsbChvcHRzLnR1cm4pOwogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKGRhdGEuZGlzcGxheT09J3NpbmdsZScgJiYgY29ybmVyKSB7CgogICAgICBpZiAoKGNvcm5lcj09J2wnICYmIGRhdGEuZGlyZWN0aW9uPT0nbHRyJykKICAgICAgICB8fAogICAgICAgIChjb3JuZXI9PSdyJyAmJiBkYXRhLmRpcmVjdGlvbj09J3J0bCcpKQogICAgICB7CiAgICAgICAgCiAgICAgICAgb3B0cy5uZXh0ID0gKG9wdHMubmV4dDxvcHRzLnBhZ2UpID8gb3B0cy5uZXh0IDogb3B0cy5wYWdlLTE7CiAgICAgICAgb3B0cy5mb3JjZSA9IHRydWU7CgogICAgICB9IGVsc2UgewoKICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5uZXh0Pm9wdHMucGFnZSkgPyBvcHRzLm5leHQgOiBvcHRzLnBhZ2UrMTsKCiAgICAgIH0KCiAgICB9CgogICAgdHVybk1ldGhvZHMuX2FkZE1vdGlvblBhZ2UuY2FsbChlLnRhcmdldCk7CiAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwob3B0cy50dXJuKTsKICB9LAoKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2VuZDogZnVuY3Rpb24oZSwgb3B0cywgdHVybmVkKSB7CgogICAgdmFyIHRoYXQgPSAkKGUudGFyZ2V0KSwKICAgICAgZGF0YSA9IHRoYXQuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBvcHRzLnR1cm4sCiAgICAgIGRkID0gdHVybi5kYXRhKCk7CgogICAgaWYgKHR1cm5lZCB8fCBkZC50cGFnZSkgewoKICAgICAgaWYgKGRkLnRwYWdlPT1vcHRzLm5leHQgfHwgZGQudHBhZ2U9PW9wdHMucGFnZSkgewogICAgICAgIGRlbGV0ZSBkZFsndHBhZ2UnXTsKICAgICAgICB0dXJuTWV0aG9kcy5fZml0UGFnZS5jYWxsKHR1cm4sIGRkLnRwYWdlIHx8IG9wdHMubmV4dCwgdHJ1ZSk7CiAgICAgIH0KCiAgICB9IGVsc2UgewoKICAgICAgdHVybk1ldGhvZHMuX3JlbW92ZU12LmNhbGwodHVybiwgb3B0cy5wYWdlKTsKICAgICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKHR1cm4pOwogICAgICB0dXJuLnR1cm4oJ3VwZGF0ZScpOwoKICAgIH0KICAgIAogIH0sCiAgCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCgogIF9wcmVzc2VkOiBmdW5jdGlvbihlKSB7CgogICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKCiAgICB2YXIgcGFnZSwKICAgICAgZGF0YSA9ICQoZS50YXJnZXQpLmRhdGEoKS5mLAogICAgICBwYWdlcyA9IGRhdGEub3B0cy50dXJuLmRhdGEoKS5wYWdlczsKCiAgICBmb3IgKHBhZ2UgaW4gcGFnZXMpCiAgICAgIGlmIChwYWdlIT1kYXRhLm9wdHMucGFnZSkKICAgICAgICBwYWdlc1twYWdlXS5mbGlwKCdkaXNhYmxlJywgdHJ1ZSk7CgogICAgcmV0dXJuIGRhdGEudGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwoKICB9LAoKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX3JlbGVhc2VkOiBmdW5jdGlvbihlLCBwb2ludCkgewoKICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgdmFyIG91dEFyZWEsCiAgICAgIHBhZ2UgPSAkKGUudGFyZ2V0KSwKICAgICAgZGF0YSA9IHBhZ2UuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKTsKICAgIAogICAgaWYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CiAgICAgIG91dEFyZWEgPSAocG9pbnQuY29ybmVyPT0ncicpID8KICAgICAgICBwb2ludC54PHBhZ2Uud2lkdGgoKS8yOgogICAgICAgIHBvaW50Lng+cGFnZS53aWR0aCgpLzI7CiAgICB9IGVsc2UgewogICAgICBvdXRBcmVhID0gcG9pbnQueDwwIHx8IHBvaW50Lng+cGFnZS53aWR0aCgpOwogICAgfQoKICAgIGlmICgobmV3IERhdGUoKSkuZ2V0VGltZSgpLWRhdGEudGltZTwyMDAgfHwgb3V0QXJlYSkgewoKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgdHVybk1ldGhvZHMuX3R1cm5QYWdlLmNhbGwoCiAgICAgICAgdHVybiwKICAgICAgICBkYXRhLm9wdHMubmV4dCwKICAgICAgICBmbGlwTWV0aG9kcy5fY29ybmVyQWN0aXZhdGVkLmNhbGwocGFnZSwgcG9pbnQsIDEpID09PSBmYWxzZQogICAgICApOwoKICAgIH0KCiAgICB0dXJuRGF0YS5tb3VzZUFjdGlvbiA9IGZhbHNlOwoKICB9LAoKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKICAKICBfZmxpcDogZnVuY3Rpb24oZSkgewoKICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgdmFyIG9wdHMgPSAkKGUudGFyZ2V0KS5kYXRhKCkuZi5vcHRzOwoKICAgIG9wdHMudHVybi50cmlnZ2VyKCd0dXJuJywgW29wdHMubmV4dF0pOwoKICAgIGlmIChvcHRzLnR1cm4uZGF0YSgpLm9wdHMuYXV0b0NlbnRlcikKICAgICAgb3B0cy50dXJuLnR1cm4oJ2NlbnRlcicsIG9wdHMubmV4dCk7CgogIH0sCgogIC8vIENhbGN1bGF0ZSB0aGUgei1pbmRleCB2YWx1ZSBmb3IgcGFnZXMgZHVyaW5nIHRoZSBhbmltYXRpb24KCiAgY2FsY3VsYXRlWjogZnVuY3Rpb24obXYpIHsKCiAgICB2YXIgaSwgcGFnZSwgbmV4dFBhZ2UsIHBsYWNlUGFnZSwgZHBhZ2UsCiAgICAgIHRoYXQgPSB0aGlzLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKSwKICAgICAgY3VycmVudFBhZ2UgPSB2aWV3WzBdIHx8IHZpZXdbMV0sCiAgICAgIHIgPSB7cGFnZVo6IHt9LCBwYXJ0Wjoge30sIHBhZ2VWOiB7fX0sCgogICAgICBhZGRWaWV3ID0gZnVuY3Rpb24ocGFnZSkgewogICAgICAgIHZhciB2aWV3ID0gdGhhdC50dXJuKCd2aWV3JywgcGFnZSk7CiAgICAgICAgaWYgKHZpZXdbMF0pIHIucGFnZVZbdmlld1swXV0gPSB0cnVlOwogICAgICAgIGlmICh2aWV3WzFdKSByLnBhZ2VWW3ZpZXdbMV1dID0gdHJ1ZTsKICAgICAgfTsKICAgIAogICAgZm9yIChpID0gMDsgaTxtdi5sZW5ndGg7IGkrKykgewogICAgICBwYWdlID0gbXZbaV07CiAgICAgIG5leHRQYWdlID0gZGF0YS5wYWdlc1twYWdlXS5kYXRhKCkuZi5vcHRzLm5leHQ7CiAgICAgIHBsYWNlUGFnZSA9IGRhdGEucGFnZVBsYWNlW3BhZ2VdOwogICAgICBhZGRWaWV3KHBhZ2UpOwogICAgICBhZGRWaWV3KG5leHRQYWdlKTsKICAgICAgZHBhZ2UgPSAoZGF0YS5wYWdlUGxhY2VbbmV4dFBhZ2VdPT1uZXh0UGFnZSkgPyBuZXh0UGFnZSA6IHBhZ2U7CiAgICAgIHIucGFnZVpbZHBhZ2VdID0gZGF0YS50b3RhbFBhZ2VzIC0gTWF0aC5hYnMoY3VycmVudFBhZ2UtZHBhZ2UpOwogICAgICByLnBhcnRaW3BsYWNlUGFnZV0gPSBkYXRhLnRvdGFsUGFnZXMqMiArIE1hdGguYWJzKGN1cnJlbnRQYWdlLWRwYWdlKTsKICAgIH0KCiAgICByZXR1cm4gcjsKICB9LAoKICAvLyBVcGRhdGVzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGV2ZXJ5IHBhZ2UKCiAgdXBkYXRlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkYXRhLnBhZ2VNdi5sZW5ndGggJiYgZGF0YS5wYWdlTXZbMF0hPT0wKSB7CgogICAgICAvLyBVcGRhdGUgbW90aW9uCgogICAgICB2YXIgcCwKICAgICAgICBmaXhlZCwKICAgICAgICBwb3MgPSB0aGlzLnR1cm4oJ2NhbGN1bGF0ZVonLCBkYXRhLnBhZ2VNdiksCiAgICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEudHBhZ2UpOwogICAgCiAgICAgIGZvciAocGFnZSBpbiBkYXRhLnBhZ2VXcmFwKSB7CgogICAgICAgIGlmICghaGFzKHBhZ2UsIGRhdGEucGFnZVdyYXApKQogICAgICAgICAgY29udGludWU7CgogICAgICAgIGZpeGVkID0gZGF0YS5wYWdlT2Jqc1twYWdlXS5oYXNDbGFzcygnZml4ZWQnKTsKCiAgICAgICAgZGF0YS5wYWdlV3JhcFtwYWdlXS5jc3MoewogICAgICAgICAgZGlzcGxheTogKHBvcy5wYWdlVltwYWdlXSB8fCBmaXhlZCkgPyAnJyA6ICdub25lJywKICAgICAgICAgICd6LWluZGV4JzogcG9zLnBhZ2VaW3BhZ2VdIHx8ICgoZml4ZWQpID8gLTEgOiAwKQogICAgICAgIH0pOwoKICAgICAgICBpZiAoKHAgPSBkYXRhLnBhZ2VzW3BhZ2VdKSkgewogICAgICAgICAgcC5mbGlwKCd6JywgcG9zLnBhcnRaW3BhZ2VdIHx8IG51bGwpOwoKICAgICAgICAgIGlmIChwb3MucGFnZVZbcGFnZV0pCiAgICAgICAgICAgIHAuZmxpcCgncmVzaXplJyk7CgogICAgICAgICAgaWYgKGRhdGEudHBhZ2UpCiAgICAgICAgICAgIHAuZmxpcCgnZGlzYWJsZScsIHRydWUpOyAvLyBkYXRhLmRpc2FibGVkIHx8IHBhZ2UhPWFwYWdlCiAgICAgICAgfQogICAgICB9CiAgCiAgICB9IGVsc2UgewoKICAgICAgLy8gVXBkYXRlIHN0YXRpYyBwYWdlcwoKICAgICAgZm9yIChwYWdlIGluIGRhdGEucGFnZVdyYXApIHsKCiAgICAgICAgaWYgKCFoYXMocGFnZSwgZGF0YS5wYWdlV3JhcCkpCiAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgdmFyIHBhZ2VMb2NhdGlvbiA9IHR1cm5NZXRob2RzLl9zZXRQYWdlTG9jLmNhbGwodGhpcywgcGFnZSk7CgogICAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKQogICAgICAgICAgZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdkaXNhYmxlJywKICAgICAgICAgICAgZGF0YS5kaXNhYmxlZCB8fCBwYWdlTG9jYXRpb24hPTEpLmZsaXAoJ3onLCBudWxsKTsKCiAgICAgIH0KICAgIH0KICB9LAoKICAvLyBVcGRhdGVzIHRoZSBwb3NpdGlvbiBhbmQgc2l6ZSBvZiB0aGUgZmxpcGJvb2sncyBzaGFkb3cKCiAgX3VwZGF0ZVNoYWRvdzogZnVuY3Rpb24oKSB7CiAgICAKICAgIHZhciB2aWV3LCB2aWV3Miwgc2hhZG93LAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHdpZHRoID0gdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQgPSB0aGlzLmhlaWdodCgpLAogICAgICBwYWdlV2lkdGggPSAoZGF0YS5kaXNwbGF5PT0nc2luZ2xlJykgPyB3aWR0aCA6IHdpZHRoLzI7CgogICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgIGlmICghZGF0YS5zaGFkb3cpIHsKICAgICAgZGF0YS5zaGFkb3cgPSAkKCc8ZGl2IC8+JywKICAgICAgewogICAgICAgICdjbGFzcyc6ICdzaGFkb3cnLAogICAgICAgICdjc3MnOiBkaXZBdHQoMCwgMCwgMCkuY3NzCiAgICAgIH0pLgogICAgICBhcHBlbmRUbyh0aGlzKTsKICAgIH0KCiAgICBmb3IgKHZhciBpID0gMDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykgewogICAgICBpZiAoIXZpZXdbMF0gfHwgIXZpZXdbMV0pCiAgICAgICAgYnJlYWs7CiAgICAKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEucGFnZXNbZGF0YS5wYWdlTXZbaV1dLmRhdGEoKS5mLm9wdHMubmV4dCk7CiAgICAgIHZpZXcyID0gdGhpcy50dXJuKCd2aWV3JywgZGF0YS5wYWdlTXZbaV0pOwoKICAgICAgdmlld1swXSA9IHZpZXdbMF0gJiYgdmlldzJbMF07CiAgICAgIHZpZXdbMV0gPSB2aWV3WzFdICYmIHZpZXcyWzFdOwogICAgfQoKICAgIGlmICghdmlld1swXSkgc2hhZG93ID0gKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPyAxIDogMjsKICAgIGVsc2UgaWYgKCF2aWV3WzFdKSBzaGFkb3cgPSAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSA/IDIgOiAxOwogICAgZWxzZSBzaGFkb3cgPSAzOwoKICAgIHN3aXRjaCAoc2hhZG93KSB7CiAgICAgIGNhc2UgMToKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogcGFnZVdpZHRoCiAgICAgICAgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMjoKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDM6CiAgICAgICAgZGF0YS5zaGFkb3cuY3NzKHsKICAgICAgICAgIHdpZHRoOiB3aWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgfQoKICB9LAoKICAvLyBTZXRzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGEgcGFnZQogIC8vIEl0IGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgdmlldwoKICBfc2V0UGFnZUxvYzogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKTsKCiAgICBpZiAocGFnZT09dmlld1swXSB8fCBwYWdlPT12aWV3WzFdKSB7CiAgICAgIAogICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcyh7ekluZGV4OiBkYXRhLnRvdGFsUGFnZXMsIGRpc3BsYXk6ICcnfSk7CiAgICAgIHJldHVybiAxOwoKICAgIH0gZWxzZSBpZiAoKGRhdGEuZGlzcGxheT09J3NpbmdsZScgJiYgcGFnZT09dmlld1swXSsxKSB8fAogICAgICAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJyAmJiBwYWdlPT12aWV3WzBdLTIgfHwKICAgICAgcGFnZT09dmlld1sxXSsyKSkgewogICAgICAKICAgICAgZGF0YS5wYWdlV3JhcFtwYWdlXS5jc3Moe3pJbmRleDogZGF0YS50b3RhbFBhZ2VzLTEsIGRpc3BsYXk6ICcnfSk7CiAgICAgIHJldHVybiAyOwoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcyh7ekluZGV4OiAwLAogICAgICAgIGRpc3BsYXk6IChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdmaXhlZCcpKSA/ICcnIDogJ25vbmUnfQogICAgICApOwoKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgb3B0aW9ucwoKICBvcHRpb25zOiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAKICAgIGlmIChvcHRpb25zPT09dW5kZWZpbmVkKSB7CiAgICAgIAogICAgICByZXR1cm4gdGhpcy5kYXRhKCkub3B0czsKCiAgICB9IGVsc2UgewoKICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICAgIC8vIFNldCBuZXcgdmFsdWVzCgogICAgICAkLmV4dGVuZChkYXRhLm9wdHMsIG9wdGlvbnMpOwogICAgICAKICAgICAgLy8gU2V0IHBhZ2VzCgogICAgICBpZiAob3B0aW9ucy5wYWdlcykKICAgICAgICB0aGlzLnR1cm4oJ3BhZ2VzJywgb3B0aW9ucy5wYWdlcyk7CgogICAgICAvLyBTZXQgcGFnZQoKICAgICAgaWYgKG9wdGlvbnMucGFnZSkKICAgICAgICB0aGlzLnR1cm4oJ3BhZ2UnLCBvcHRpb25zLnBhZ2UpOwoKICAgICAgLy8gU2V0IGRpc3BsYXkKCiAgICAgIGlmIChvcHRpb25zLmRpc3BsYXkpCiAgICAgICAgdGhpcy50dXJuKCdkaXNwbGF5Jywgb3B0aW9ucy5kaXNwbGF5KTsKICAgICAgCiAgICAgIC8vIFNldCBkaXJlY3Rpb24KCiAgICAgIGlmIChvcHRpb25zLmRpcmVjdGlvbikKICAgICAgICB0aGlzLnR1cm4oJ2RpcmVjdGlvbicsIG9wdGlvbnMuZGlyZWN0aW9uKTsKCiAgICAgIC8vIFNldCBzaXplCgogICAgICBpZiAob3B0aW9ucy53aWR0aCAmJiBvcHRpb25zLmhlaWdodCkKICAgICAgICB0aGlzLnR1cm4oJ3NpemUnLCBvcHRpb25zLndpZHRoLCBvcHRpb25zLmhlaWdodCk7CiAgICAgIAogICAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXJzCgogICAgICBpZiAob3B0aW9ucy53aGVuKQogICAgICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBvcHRpb25zLndoZW4pCiAgICAgICAgICBpZiAoaGFzKGV2ZW50TmFtZSwgb3B0aW9ucy53aGVuKSkgewogICAgICAgICAgICB0aGlzLnVuYmluZChldmVudE5hbWUpLgogICAgICAgICAgICAgIGJpbmQoZXZlbnROYW1lLCBvcHRpb25zLndoZW5bZXZlbnROYW1lXSk7CiAgICAgICAgICB9CgogICAgICByZXR1cm4gdGhpczsKICAgIH0KCiAgfSwKCiAgLy8gR2V0cyB0aGUgY3VycmVudCB2ZXJzaW9uCgogIHZlcnNpb246IGZ1bmN0aW9uKCkgewoKICAgIHJldHVybiB2ZXJzaW9uOwoKICB9Cn0sCgovLyBNZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGZvciB0aGUgZmxpcCBwYWdlIGVmZmVjdAoKZmxpcE1ldGhvZHMgPSB7CgogIC8vIENvbnN0cnVjdG9yCgogIGluaXQ6IGZ1bmN0aW9uKG9wdHMpIHsKCiAgICB0aGlzLmRhdGEoe2Y6CiAgICAgIHtlZmZlY3Q6IChvcHRzLmNvcm5lcnM9PSdyJyB8fCBvcHRzLmNvcm5lcnM9PSdsJykgPyAnaGFyZCcgOiAnc2hlZXQnfX0KICAgICk7CgogICAgdGhpcy5mbGlwKCdvcHRpb25zJywgb3B0cyk7CgogICAgZmxpcE1ldGhvZHMuX2FkZFBhZ2VXcmFwcGVyLmNhbGwodGhpcyk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgc2V0RGF0YTogZnVuY3Rpb24oZCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGRhdGEuZiA9ICQuZXh0ZW5kKGRhdGEuZiwgZCk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgb3B0aW9uczogZnVuY3Rpb24ob3B0cykgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKG9wdHMpIHsKICAgICAgZmxpcE1ldGhvZHMuc2V0RGF0YS5jYWxsKHRoaXMsCiAgICAgICAge29wdHM6ICQuZXh0ZW5kKHt9LCBkYXRhLm9wdHMgfHwgZmxpcE9wdGlvbnMsIG9wdHMpfSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSBlbHNlCiAgICAgIHJldHVybiBkYXRhLm9wdHM7CgogIH0sCgogIHo6IGZ1bmN0aW9uKHopIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKGRhdGEuZndyYXBwZXIpIHsKICAgICAgZGF0YS5vcHRzWyd6LWluZGV4J10gPSB6OwogICAgICBkYXRhLmZ3cmFwcGVyLmNzcygKICAgICAgICB7J3otaW5kZXgnOiB6IHx8IHBhcnNlSW50KGRhdGEucGFyZW50LmNzcygnei1pbmRleCcpLCAxMCkgfHwgMH0KICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9LAoKICBfY0FsbG93ZWQ6IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICB0dXJuRGF0YSA9IGRhdGEub3B0cy50dXJuLmRhdGEoKSwKICAgIHBhZ2UgPSBkYXRhLm9wdHMucGFnZSwKICAgIG9kZCA9IHBhZ2UlMjsKCiAgICBpZiAodHVybkRhdGEuZGlzcGxheT09J3NpbmdsZScpIHsKICAgICAgaWYgKHBhZ2U9PTEpCiAgICAgICAgcmV0dXJuICh0dXJuRGF0YS5kaXJlY3Rpb249PSdsdHInKSA/CiAgICAgICAgICBjb3JuZXJzWydmb3J3YXJkJ10gOiBjb3JuZXJzWydiYWNrd2FyZCddOwogICAgICBlbHNlIGlmIChwYWdlPT10dXJuRGF0YS50b3RhbFBhZ2VzKQogICAgICAgIHJldHVybiAodHVybkRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPwogICAgICAgICAgY29ybmVyc1snYmFja3dhcmQnXSA6IGNvcm5lcnNbJ2ZvcndhcmQnXTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiBjb3JuZXJzWydhbGwnXTsKICAgIH0gZWxzZSB7CgogICAgICByZXR1cm4gKHR1cm5EYXRhLmRpcmVjdGlvbj09J2x0cicpID8KICAgICAgICBjb3JuZXJzWyhvZGQpID8gJ2ZvcndhcmQnIDogJ2JhY2t3YXJkJ10KICAgICAgICA6CiAgICAgICAgY29ybmVyc1sob2RkKSA/ICdiYWNrd2FyZCcgOiAnZm9yd2FyZCddOwoKICAgIH0KCiAgfSwKCiAgX2Nvcm5lckFjdGl2YXRlZDogZnVuY3Rpb24oZSkgewogIAogIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICBwb3MgPSBkYXRhLnBhcmVudC5vZmZzZXQoKSwKICAgICAgd2lkdGggPSB0aGlzLndpZHRoKCksCiAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCksCiAgICAgIGMgPSB7eDogTWF0aC5tYXgoMCwgZS5wYWdlWC1wb3MubGVmdCksIHk6IE1hdGgubWF4KDAsIGUucGFnZVktcG9zLnRvcCl9LAogICAgICBjc3ogPSBkYXRhLm9wdHMuY29ybmVyU2l6ZTsKCiAgICBpZiAoYy54PD0wIHx8IGMueTw9MCB8fCBjLng+PXdpZHRoIHx8IGMueT49aGVpZ2h0KQogICAgICByZXR1cm4gZmFsc2U7CgogICAgdmFyIGFsbG93ZWRDb3JuZXJzID0gZmxpcE1ldGhvZHMuX2NBbGxvd2VkLmNhbGwodGhpcyk7CgogICAgaWYgKGMueD53aWR0aC1jc3opCiAgICAgIGMuY29ybmVyID0gJ3InOwogICAgZWxzZSBpZiAoYy54PGNzeikKICAgICAgYy5jb3JuZXIgPSAnbCc7CiAgICBlbHNlCiAgICAgIHJldHVybiBmYWxzZTsKCgogICAgcmV0dXJuICgkLmluQXJyYXkoYy5jb3JuZXIsIGFsbG93ZWRDb3JuZXJzKT09LTEpID8gZmFsc2UgOiBjOwoKICB9LAoKICBfYzogZnVuY3Rpb24oY29ybmVyLCBvcHRzKSB7CgogICAgb3B0cyA9IG9wdHMgfHwgMDsKCiAgICBzd2l0Y2ggKGNvcm5lcikgewogICAgICBjYXNlICdsJzoKICAgICAgICByZXR1cm4gcG9pbnQyRChvcHRzLCAwKTsKICAgICAgY2FzZSAncic6CiAgICAgICAgcmV0dXJuIHBvaW50MkQodGhpcy53aWR0aCgpLW9wdHMsIDApOwogICAgfQoKICB9LAoKICBfYzI6IGZ1bmN0aW9uKGNvcm5lcikgewoKICAgIHN3aXRjaCAoY29ybmVyKSB7CiAgICAgIGNhc2UgJ2wnOgogICAgICAgIHJldHVybiBwb2ludDJEKHRoaXMud2lkdGgoKSoyLCAwKTsKICAgICAgY2FzZSAncic6CiAgICAgICAgcmV0dXJuIHBvaW50MkQoLXRoaXMud2lkdGgoKSwgMCk7CiAgICB9CgogIH0sCgogIF9mb2xkaW5nUGFnZTogZnVuY3Rpb24oY29ybmVyKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICBvcHRzID0gZGF0YS5vcHRzOwoKICAgIGlmIChkYXRhLmZvbGRpbmcpIHJldHVybiBkYXRhLmZvbGRpbmc7CiAgICBlbHNlIGlmKG9wdHMudHVybikgewoKICAgICAgZGF0YSA9IG9wdHMudHVybi5kYXRhKCk7CiAgICAgIGlmIChkYXRhLmRpc3BsYXkgPT0gJ3NpbmdsZScpCiAgICAgICAgcmV0dXJuIChkYXRhLnBhZ2VPYmpzW29wdHMubmV4dF0pID8gZGF0YS5wYWdlT2Jqc1swXSA6IG51bGw7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gZGF0YS5wYWdlT2Jqc1tvcHRzLm5leHRdOwogICAgfQoKICB9LAoKICBfYmFja0dyYWRpZW50OiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgZ3JhZGllbnQgPSBkYXRhLm9wdHMuZ3JhZGllbnRzICYmCiAgICAgICAgKCF0dXJuIHx8CiAgICAgICAgdHVybi5kYXRhKCkuZGlzcGxheT09J3NpbmdsZScgfHwKICAgICAgICAoZGF0YS5vcHRzLnBhZ2UhPTIgJiYgZGF0YS5vcHRzLnBhZ2UhPXR1cm4uZGF0YSgpLnRvdGFsUGFnZXMtMSkpOwoKCiAgICByZXR1cm4gZ3JhZGllbnQ7CgogIH0sCgogIHJlc2l6ZTogZnVuY3Rpb24oZnVsbCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHdpZHRoID0gdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQgPSB0aGlzLmhlaWdodCgpOwoKCiAgICBpZiAoZnVsbCkgewogICAgICBkYXRhLndyYXBwZXIuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICAgIGRhdGEuZnBhZ2UuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICB9CgogIH0sCgogIC8vIFByZXBhcmVzIHRoZSBwYWdlIGJ5IGFkZGluZyBhIGdlbmVyYWwgd3JhcHBlciBhbmQgYW5vdGhlciBvYmplY3RzCgogIF9hZGRQYWdlV3JhcHBlcjogZnVuY3Rpb24oKSB7CgogICAgdmFyIGF0dCwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHBhcmVudCA9IHRoaXMucGFyZW50KCk7CgogICAgZGF0YS5wYXJlbnQgPSBwYXJlbnQ7CgogICAgaWYgKCFkYXRhLndyYXBwZXIpIHsKICAgICAgICAKICAgICAgdmFyIGNzc1Byb3BlcnRpZXMgPSB7fTsKCiAgICAgIGRhdGEud3JhcHBlciA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAyKSkuCiAgICAgICAgY3NzKGNzc1Byb3BlcnRpZXMpLgogICAgICAgIGFwcGVuZFRvKHBhcmVudCkuCiAgICAgICAgcHJlcGVuZCh0aGlzKTsKCiAgICAgIGRhdGEuZnBhZ2UgPSAkKCc8ZGl2Lz4nLCBkaXZBdHQoMCwgMCwgMSkpLgogICAgICAgIGNzcyhjc3NQcm9wZXJ0aWVzKS4KICAgICAgICBhcHBlbmRUbyhwYXJlbnQpOwoKICAgIH0KCiAgICAvLyBTZXQgc2l6ZQogICAgZmxpcE1ldGhvZHMucmVzaXplLmNhbGwodGhpcywgdHJ1ZSk7CgogIH0sCgogIC8vIFRha2VzIGEgMlAgcG9pbnQgZnJvbSB0aGUgc2NyZWVuIGFuZCBhcHBsaWVzIHRoZSB0cmFuc2Zvcm1hdGlvbgoKICBfZm9sZDogZnVuY3Rpb24ocG9pbnQpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIG8gPSBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsIHBvaW50LmNvcm5lciksCiAgICAgIHJlbFggPSAoby54KSA/IG8ueCAtIHBvaW50LnggOiAgcG9pbnQueCwKICAgICAgd2lkdGggPSB0aGlzLndpZHRoKCksCiAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7CgogICAgICByZWxYID0gTWF0aC5taW4od2lkdGgqMiwgTWF0aC5tYXgoMCwgcmVsWCkpOwoKCiAgICAgIHN3aXRjaChwb2ludC5jb3JuZXIpIHsKICAgICAgICBjYXNlICdyJyA6CiAgICAgICAgICBkYXRhLndyYXBwZXIuY3NzKHsKICAgICAgICAgICAgd2lkdGg6IE1hdGgubWF4KDAsIHdpZHRoLXJlbFgpCiAgICAgICAgICB9KTsKICAgICAgICAgIHRoaXMuY3NzKHsKICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsCiAgICAgICAgICAgIGxlZnQ6IC1yZWxYCiAgICAgICAgICB9KTsKCiAgICAgICAgICBkYXRhLmZwYWdlLmNzcyh7CiAgICAgICAgICAgIGxlZnQ6IC1yZWxYICsgd2lkdGgsCiAgICAgICAgICAgIHdpZHRoOiBNYXRoLm1heCgwLCByZWxYLXdpZHRoKQogICAgICAgICAgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnbCcgOgoKICAgICAgICAgIGRhdGEud3JhcHBlci5jc3MoewogICAgICAgICAgICB3aWR0aDogd2lkdGgKICAgICAgICAgIH0pOwogICAgICAgICAgdGhpcy5jc3MoewogICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJywKICAgICAgICAgICAgbGVmdDogcmVsWAogICAgICAgICAgfSk7CgogICAgICAgICAgZGF0YS5mcGFnZS5jc3MoewogICAgICAgICAgICBsZWZ0OiB3aWR0aCwKICAgICAgICAgICAgd2lkdGg6IE1hdGgubWF4KDAsIHJlbFgtd2lkdGgpCiAgICAgICAgICB9KTsKCiAgICAgICAgICBpZiAoZGF0YS5mb2xkaW5nKQogICAgICAgICAgICBkYXRhLmZvbGRpbmcuY3NzKHsKICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJywKICAgICAgICAgICAgICBsZWZ0OiAtd2lkdGgqMiArIHJlbFgKICAgICAgICAgICAgfSk7CiAgICAgICAgCiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICAgIGRhdGEucGFyZW50LmNzcyh7J292ZXJmbG93JzogJ3Zpc2libGUnfSk7CgogICAgZGF0YS5wb2ludCA9IHBvaW50OwogIAogIH0sCgogIF9tb3ZlRm9sZGluZ1BhZ2U6IGZ1bmN0aW9uKGJvb2wpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CiAgICAgIAogICAgaWYgKGJvb2wpIHsKICAgICAgCiAgICAgIHZhciBmb2xkaW5nID0gZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcyksCiAgICAgICAgdHVybiA9IGRhdGEub3B0cy50dXJuOwogICAgICAKICAgICAgaWYgKGZvbGRpbmcpIHsKCiAgICAgICAgaWYgKGRhdGEuZm9sZGluZykgewogICAgICAgICAgaWYgKGRhdGEuZm9sZGluZz09PWZvbGRpbmcpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbCh0aGlzLCBmYWxzZSk7CiAgICAgICAgfQogICAgICAKICAgICAgICBmbGlwTWV0aG9kcy5zZXREYXRhLmNhbGwodGhpcywKICAgICAgICAgIHtiYWNrUGFyZW50OiBmb2xkaW5nLnBhcmVudCgpLAogICAgICAgICAgZm9sZGluZzogZm9sZGluZ30pOwoKICAgICAgICBkYXRhLmZwYWdlLnByZXBlbmQoZm9sZGluZyk7CgogICAgICB9CgogICAgICB0dXJuLnR1cm4oJ3VwZGF0ZScpOwoKICAgIH0gZWxzZSB7CiAgICAgIGlmIChkYXRhLmJhY2tQYXJlbnQpIHsKICAgICAgICBkYXRhLmJhY2tQYXJlbnQucHJlcGVuZChkYXRhLmZvbGRpbmcpOwogICAgICAgIGRlbGV0ZSBkYXRhLmJhY2tQYXJlbnQ7CiAgICAgICAgZGVsZXRlIGRhdGEuZm9sZGluZzsKICAgICAgfQogICAgfQogIH0sCgogIF9zaG93Rm9sZGVkUGFnZTogZnVuY3Rpb24oYywgYW5pbWF0ZSkgewoKICAgIHZhciBmb2xkaW5nID0gZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcyksCiAgICAgIGRkID0gdGhpcy5kYXRhKCksCiAgICAgIGRhdGEgPSBkZC5mLAogICAgICB2aXNpYmxlID0gZGF0YS52aXNpYmxlOwoKICAgIGlmICghdmlzaWJsZSB8fCAhZGF0YS5wb2ludCB8fCBkYXRhLnBvaW50LmNvcm5lciE9Yy5jb3JuZXIpIHsKICAgICAgCiAgICAgIHZhciBtQWN0aW9uID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLm1vdXNlQWN0aW9uOwoKICAgICAgdmFyIGV2ZW50ID0gJC5FdmVudCgnc3RhcnQnKTsKICAgICAgdGhpcy50cmlnZ2VyKGV2ZW50LCBbZGF0YS5vcHRzLCBjLmNvcm5lcl0pOwogICAgICB2aXNpYmxlID0gZmFsc2U7CgogICAgICBpZiAoZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIH0KCiAgICBpZiAoZm9sZGluZykgewoKICAgICAgaWYgKGFuaW1hdGUpIHsKICAgICAgICAKICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBwb2ludCA9IChkYXRhLnBvaW50ICYmIGRhdGEucG9pbnQuY29ybmVyPT1jLmNvcm5lcikgPwogICAgICAgICAgZGF0YS5wb2ludCA6IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgYy5jb3JuZXIsIDEpOwogICAgICAKICAgICAgICB0aGlzLmFuaW1hdGVmKHtmcm9tOiBbcG9pbnQueCwgcG9pbnQueV0sCiAgICAgICAgICB0bzogW2MueCwgYy55XSwKICAgICAgICAgIGR1cmF0aW9uOiA1MDAsCiAgICAgICAgICBmcmFtZTogZnVuY3Rpb24odikgewogICAgICAgICAgICBjLnggPSBNYXRoLnJvdW5kKHZbMF0pOwogICAgICAgICAgICBjLnkgPSBNYXRoLnJvdW5kKHZbMV0pOwogICAgICAgICAgICBmbGlwTWV0aG9kcy5fZm9sZC5jYWxsKHRoYXQsIGMpOwogICAgICAgICAgfX0pOwoKICAgICAgfSBlbHNlICB7CgogICAgICAgIGZsaXBNZXRob2RzLl9mb2xkLmNhbGwodGhpcywgYyk7CiAgICAgICAgaWYgKGRkLmVmZmVjdCAmJiAhZGQuZWZmZWN0LnR1cm5pbmcpCiAgICAgICAgICB0aGlzLmFuaW1hdGVmKGZhbHNlKTsKCiAgICAgIH0KCiAgICAgIGlmICghdmlzaWJsZSkgewoKICAgICAgICBkYXRhLnZpc2libGUgPSB0cnVlOwogICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgICBkYXRhLmZwYWdlLnNob3coKTsKICAgICAgfQoKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIGhpZGU6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgZm9sZGluZyA9IGZsaXBNZXRob2RzLl9mb2xkaW5nUGFnZS5jYWxsKHRoaXMpOwoKICAgIHRoaXMuY3NzKHsKICAgICAgcG9zaXRpb246ICcnLAogICAgICBsZWZ0OiAnYXV0bycKICAgIH0pOwoKICAgIGRhdGEud3JhcHBlci5jc3MoewogICAgICB3aWR0aDogdGhpcy53aWR0aCgpCiAgICB9KTsKCiAgICBkYXRhLmZwYWdlLmNzcyh7CiAgICAgIHdpZHRoOiB0aGlzLndpZHRoKCkKICAgIH0pOwoKICAgIGlmIChkYXRhLmZvbGRpbmcpCiAgICAgIGRhdGEuZm9sZGluZy5jc3MoewogICAgICAgIHBvc2l0aW9uOiAnJywKICAgICAgICBsZWZ0OiAnYXV0bycKICAgICAgfSk7CgogICAgZGF0YS5mcGFnZS5oaWRlKCk7CgogICAgZGF0YS52aXNpYmxlID0gZmFsc2U7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgaGlkZUZvbGRlZFBhZ2U6IGZ1bmN0aW9uKGFuaW1hdGUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhLnBvaW50KSByZXR1cm47CgogICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICBwMSA9IGRhdGEucG9pbnQsCiAgICAgIGhpZGUgPSBmdW5jdGlvbigpIHsKICAgICAgICBkYXRhLnBvaW50ID0gbnVsbDsKICAgICAgICB0aGF0LmZsaXAoJ2hpZGUnKTsKICAgICAgICB0aGF0LnRyaWdnZXIoJ2VuZCcsIFtkYXRhLm9wdHMsIGZhbHNlXSk7CiAgICAgIH07CgogICAgaWYgKGFuaW1hdGUpIHsKICAgICAgdmFyIHA0ID0gZmxpcE1ldGhvZHMuX2MuY2FsbCh0aGlzLCBwMS5jb3JuZXIpLAogICAgICAgIHRvcCA9IChwMS5jb3JuZXIuc3Vic3RyKDAsMSk9PSd0JyksCiAgICAgICAgZGVsdGEgPSAodG9wKSA/IE1hdGgubWluKDAsIHAxLnktcDQueSkvMiA6IE1hdGgubWF4KDAsIHAxLnktcDQueSkvMiwKICAgICAgICBwMiA9IHBvaW50MkQocDEueCwgcDEueStkZWx0YSksCiAgICAgICAgcDMgPSBwb2ludDJEKHA0LngsIHA0LnktZGVsdGEpOwogICAgCiAgICAgIHRoaXMuYW5pbWF0ZWYoewogICAgICAgIGZyb206IDAsCiAgICAgICAgdG86IDEsCiAgICAgICAgZnJhbWU6IGZ1bmN0aW9uKHYpIHsKICAgICAgICAgIHZhciBucCA9IGJlemllcihwMSwgcDIsIHAzLCBwNCwgdik7CiAgICAgICAgICBwMS54ID0gbnAueDsKICAgICAgICAgIHAxLnkgPSBucC55OwogICAgICAgICAgZmxpcE1ldGhvZHMuX2ZvbGQuY2FsbCh0aGF0LCBwMSk7CiAgICAgICAgfSwKICAgICAgICBjb21wbGV0ZTogaGlkZSwKICAgICAgICBkdXJhdGlvbjogODAwLAogICAgICAgIGhpZGluZzogdHJ1ZQogICAgICAgIH0pOwoKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuYW5pbWF0ZWYoZmFsc2UpOwogICAgICBoaWRlKCk7CiAgICB9CiAgfSwKCiAgdHVyblBhZ2U6IGZ1bmN0aW9uKGNvcm5lcikgewoKICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgY29ybmVyID0ge2Nvcm5lcjogKGRhdGEuY29ybmVyKSA/CiAgICAgIGRhdGEuY29ybmVyLmNvcm5lciA6CiAgICAgIGNvcm5lciB8fCBmbGlwTWV0aG9kcy5fY0FsbG93ZWQuY2FsbCh0aGlzKVswXX07CgogICAgdmFyIHAxID0gZGF0YS5wb2ludCB8fAogICAgICBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsCiAgICAgICAgY29ybmVyLmNvcm5lciwKICAgICAgICAoZGF0YS5vcHRzLnR1cm4pID8gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLm9wdHMuZWxldmF0aW9uIDogMCksCiAgICAgIHA0ID0gZmxpcE1ldGhvZHMuX2MyLmNhbGwodGhpcywgY29ybmVyLmNvcm5lcik7CgogICAgICB0aGlzLnRyaWdnZXIoJ2ZsaXAnKS4KICAgICAgICBhbmltYXRlZih7CiAgICAgICAgICBmcm9tOiAwLAogICAgICAgICAgdG86IDEsCiAgICAgICAgICBmcmFtZTogZnVuY3Rpb24odikgewogICAgICAgICAgICB2YXIgbnAgPSBiZXppZXIocDEsIHAxLCBwNCwgcDQsIHYpOwogICAgICAgICAgICBjb3JuZXIueCA9IG5wLng7CiAgICAgICAgICAgIGNvcm5lci55ID0gbnAueTsKCiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoYXQsIGNvcm5lcik7CiAgICAgICAgICB9LAogICAgICAgICAgCiAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoYXQudHJpZ2dlcignZW5kJywgW2RhdGEub3B0cywgdHJ1ZV0pOwogICAgICAgICAgfSwKICAgICAgICAgIGR1cmF0aW9uOiBkYXRhLm9wdHMuZHVyYXRpb24sCiAgICAgICAgICB0dXJuaW5nOiB0cnVlCiAgICAgICAgfSk7CgogICAgICBkYXRhLmNvcm5lciA9IG51bGw7CiAgfSwKCiAgbW92aW5nOiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gJ2VmZmVjdCcgaW4gdGhpcy5kYXRhKCk7CiAgCiAgfSwKCiAgaXNUdXJuaW5nOiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gdGhpcy5mbGlwKCdtb3ZpbmcnKSAmJiB0aGlzLmRhdGEoKS5lZmZlY3QudHVybmluZzsKICAKICB9LAoKICBfZXZlbnRTdGFydDogZnVuY3Rpb24oZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoIWRhdGEuZGlzYWJsZWQgJiYgIXRoaXMuZmxpcCgnaXNUdXJuaW5nJykpIHsKCiAgICAgIGRhdGEuY29ybmVyID0gZmxpcE1ldGhvZHMuX2Nvcm5lckFjdGl2YXRlZC5jYWxsKHRoaXMsIGUpOwogICAgCiAgICAgIGlmIChkYXRhLmNvcm5lciAmJiBmbGlwTWV0aG9kcy5fZm9sZGluZ1BhZ2UuY2FsbCh0aGlzLCBkYXRhLmNvcm5lcikpIHsKICAgICAgCiAgICAgICAgaWYgKGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoaXMsIGRhdGEuY29ybmVyKSkKICAgICAgICAgIHRoaXMudHJpZ2dlcigncHJlc3NlZCcsIFtkYXRhLnBvaW50XSk7CgogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgIH0gZWxzZQogICAgICAgIGRhdGEuY29ybmVyID0gbnVsbDsKCiAgICB9CgogIH0sCgogIF9ldmVudE1vdmU6IGZ1bmN0aW9uKGUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhLmRpc2FibGVkKSB7CgogICAgICBlID0gKGlzVG91Y2gpID8gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgOiBbZV07CiAgICAKICAgICAgaWYgKGRhdGEuY29ybmVyKSB7CgogICAgICAgIHZhciBwb3MgPSBkYXRhLnBhcmVudC5vZmZzZXQoKTsKICAgICAgICBkYXRhLmNvcm5lci54ID0gZVswXS5wYWdlWC1wb3MubGVmdDsKICAgICAgICBkYXRhLmNvcm5lci55ID0gZVswXS5wYWdlWS1wb3MudG9wOwogICAgICAgIGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoaXMsIGRhdGEuY29ybmVyKTsKCiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZGF0YSgpLmVmZmVjdCAmJiB0aGlzLmlzKCc6dmlzaWJsZScpKSB7CiAgICAKCiAgICAgICAgdmFyIGNvcm5lciA9IGZsaXBNZXRob2RzLl9jb3JuZXJBY3RpdmF0ZWQuY2FsbCh0aGlzLCBlWzBdKTsKCiAgICAgICAgaWYgKGNvcm5lcikgewogICAgICAgICAgdmFyIG9yaWdpbiA9IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgY29ybmVyLmNvcm5lciwgZGF0YS5vcHRzLmNvcm5lclNpemUvMik7CiAgICAgICAgICBjb3JuZXIueCA9IG9yaWdpbi54OwogICAgICAgICAgY29ybmVyLnkgPSBvcmlnaW4ueTsKICAgICAgICAgIGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoaXMsIGNvcm5lciwgdHJ1ZSk7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICBmbGlwTWV0aG9kcy5oaWRlRm9sZGVkUGFnZS5jYWxsKHRoaXMsIHRydWUpOwogICAgICAgICAgICAgICAKCiAgICAgIH0KICAgIH0KICB9LAoKICBfZXZlbnRFbmQ6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoIWRhdGEuZGlzYWJsZWQgJiYgZGF0YS5wb2ludCkgewogICAgICB2YXIgZXZlbnQgPSAkLkV2ZW50KCdyZWxlYXNlZCcpOwogICAgICB0aGlzLnRyaWdnZXIoZXZlbnQsIFtkYXRhLnBvaW50XSk7CiAgICAgIGlmICghZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpCiAgICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgIH0KCiAgICBkYXRhLmNvcm5lciA9IG51bGw7CgogIH0sCgogIGRpc2FibGU6IGZ1bmN0aW9uKGRpc2FibGUpIHsKCiAgICBmbGlwTWV0aG9kcy5zZXREYXRhLmNhbGwodGhpcywgeydkaXNhYmxlZCc6IGRpc2FibGV9KTsKICAgIHJldHVybiB0aGlzOwoKICB9Cn07CgoKCi8vIFByb2Nlc3NlcyBjbGFzc2VzCgpmdW5jdGlvbiBkZWNvcmF0b3IodGhhdCwgbWV0aG9kcywgYXJncykgewoKICBpZiAoIWFyZ3NbMF0gfHwgdHlwZW9mKGFyZ3NbMF0pPT0nb2JqZWN0JykKICAgIHJldHVybiBtZXRob2RzLmluaXQuYXBwbHkodGhhdCwgYXJncyk7CgogIGVsc2UgaWYgKG1ldGhvZHNbYXJnc1swXV0pCiAgICByZXR1cm4gbWV0aG9kc1thcmdzWzBdXS5hcHBseSh0aGF0LCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzLCAxKSk7CgogIGVsc2UKICAgIHRocm93IHR1cm5FcnJvcihhcmdzWzBdICsgJyBpcyBhbiBpbnZhbGlkIHZhbHVlJyk7Cn0KCgovLyBBdHRyaWJ1dGVzIGZvciBhIGxheWVyCgpmdW5jdGlvbiBkaXZBdHQodG9wLCBsZWZ0LCB6SW5kZXgsIG92ZXJmKSB7CiAgICAKICByZXR1cm4geydjc3MnOiB7CiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsCiAgICAgICAgdG9wOiB0b3AsCiAgICAgICAgbGVmdDogbGVmdCwKICAgICAgICAnb3ZlcmZsb3cnOiBvdmVyZiB8fCAnaGlkZGVuJywKICAgICAgICAnei1pbmRleCc6IHpJbmRleCB8fCAnYXV0bycKICAgICAgICB9CiAgICB9OwogICAgICAKfQoKLy8gR2V0cyBhIDJEIHBvaW50IGZyb20gYSBiZXppZXIgY3VydmUgb2YgZm91ciBwb2ludHMKCmZ1bmN0aW9uIGJlemllcihwMSwgcDIsIHAzLCBwNCwgdCkgewoKICB2YXIgYSA9IDEgLSB0LAogICAgYiA9IGEgKiBhICogYSwKICAgIGMgPSB0ICogdCAqIHQ7CiAgICAKICByZXR1cm4gcG9pbnQyRChNYXRoLnJvdW5kKGIqcDEueCArIDMqdCphKmEqcDIueCArIDMqdCp0KmEqcDMueCArIGMqcDQueCksCiAgICBNYXRoLnJvdW5kKGIqcDEueSArIDMqdCphKmEqcDIueSArIDMqdCp0KmEqcDMueSArIGMqcDQueSkpOwoKfQoKLy8gR2V0cyBhIDJEIHBvaW50CgpmdW5jdGlvbiBwb2ludDJEKHgsIHkpIHsKICAKICByZXR1cm4ge3g6IHgsIHk6IHl9OwoKfQoKLy8gQ2hlY2tzIGlmIGEgcHJvcGVydHkgYmVsb25ncyB0byBhbiBvYmplY3QKCmZ1bmN0aW9uIGhhcyhwcm9wZXJ0eSwgb2JqZWN0KSB7CiAgCiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsKCn0KCi8vIEdldHMgdGhlIENTUzMgdmVuZG9yIHByZWZpeAoKZnVuY3Rpb24gZ2V0UHJlZml4KCkgewoKICB2YXIgdmVuZG9yUHJlZml4ZXMgPSBbJ01veicsJ1dlYmtpdCcsJ0todG1sJywnTycsJ21zJ10sCiAgbGVuID0gdmVuZG9yUHJlZml4ZXMubGVuZ3RoLAogIHZlbmRvciA9ICcnOwoKICB3aGlsZSAobGVuLS0pCiAgICBpZiAoKHZlbmRvclByZWZpeGVzW2xlbl0gKyAnVHJhbnNmb3JtJykgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSkKICAgICAgdmVuZG9yPSctJyt2ZW5kb3JQcmVmaXhlc1tsZW5dLnRvTG93ZXJDYXNlKCkrJy0nOwoKICByZXR1cm4gdmVuZG9yOwoKfQoKLy8gSlMgRXJyb3JzCgpmdW5jdGlvbiB0dXJuRXJyb3IobWVzc2FnZSkgewoKICBmdW5jdGlvbiBUdXJuSnNFcnJvcihtZXNzYWdlKSB7CiAgICB0aGlzLm5hbWUgPSAiVHVybkpzRXJyb3IiOwogICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKICB9CgogIFR1cm5Kc0Vycm9yLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOwogIFR1cm5Kc0Vycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFR1cm5Kc0Vycm9yOwoKICByZXR1cm4gbmV3IFR1cm5Kc0Vycm9yKG1lc3NhZ2UpOwp9CgovLyBGaW5kIHRoZSBvZmZzZXQgb2YgYW4gZWxlbWVudCBkaXNjYXJkaW5nIGl0cyB0cmFuc2Zvcm1hdGlvbgoKZnVuY3Rpb24gZmluZFBvcyhvYmopIHsKICB2YXIgb2Zmc2V0ID0ge3RvcDogMCwgbGVmdDogMH07CgogIGRvewogICAgb2Zmc2V0LmxlZnQgKz0gb2JqLm9mZnNldExlZnQ7CiAgICBvZmZzZXQudG9wICs9IG9iai5vZmZzZXRUb3A7CiAgfSB3aGlsZSAoKG9iaiA9IG9iai5vZmZzZXRQYXJlbnQpKTsKCiAgcmV0dXJuIG9mZnNldDsKfQoKCi8vIFJlcXVlc3QgYW4gYW5pbWF0aW9uCgp3aW5kb3cucmVxdWVzdEFuaW0gPSBmdW5jdGlvbihjYWxsYmFjaykgewogIHdpbmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrLCAxMDAwIC8gNjApOwp9CgoKZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHsKICByZXR1cm4gJyc7Cn0KCgovLyBFeHRlbmQgJC5mbgoKJC5leHRlbmQoJC5mbiwgewoKICBmbGlwOiBmdW5jdGlvbihyZXEsIG9wdHMpIHsKICAgIHJldHVybiBkZWNvcmF0b3IodGhpcywgZmxpcE1ldGhvZHMsIGFyZ3VtZW50cyk7CiAgfSwKCiAgdHVybjogZnVuY3Rpb24ocmVxKSB7CiAgICByZXR1cm4gZGVjb3JhdG9yKHRoaXMsIHR1cm5NZXRob2RzLCBhcmd1bWVudHMpOwogIH0sCgogIHRyYW5zZm9ybTogZnVuY3Rpb24odHJhbnNmb3JtLCBvcmlnaW4pIHsKCiAgICB2YXIgcHJvcGVydGllcyA9IHt9OwogICAgCiAgICBpZiAob3JpZ2luKQogICAgICBwcm9wZXJ0aWVzW3ZlbmRvcisndHJhbnNmb3JtLW9yaWdpbiddID0gb3JpZ2luOwogICAgCiAgICBwcm9wZXJ0aWVzW3ZlbmRvcisndHJhbnNmb3JtJ10gPSB0cmFuc2Zvcm07CiAgCiAgICByZXR1cm4gdGhpcy5jc3MocHJvcGVydGllcyk7CgogIH0sCgogIGFuaW1hdGVmOiBmdW5jdGlvbihwb2ludCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKGRhdGEuZWZmZWN0KQogICAgICBkYXRhLmVmZmVjdC5zdG9wKCk7CgogICAgaWYgKHBvaW50KSB7CgogICAgICBpZiAoIXBvaW50LnRvLmxlbmd0aCkgcG9pbnQudG8gPSBbcG9pbnQudG9dOwogICAgICBpZiAoIXBvaW50LmZyb20ubGVuZ3RoKSBwb2ludC5mcm9tID0gW3BvaW50LmZyb21dOwoKICAgICAgdmFyIGRpZmYgPSBbXSwKICAgICAgICBsZW4gPSBwb2ludC50by5sZW5ndGgsCiAgICAgICAgYW5pbWF0aW5nID0gdHJ1ZSwKICAgICAgICB0aGF0ID0gdGhpcywKICAgICAgICB0aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSwKICAgICAgICBmcmFtZSA9IGZ1bmN0aW9uKCkgewoKICAgICAgICAgIGlmICghZGF0YS5lZmZlY3QgfHwgIWFuaW1hdGluZykKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAgIHZhciB2ID0gW10sCiAgICAgICAgICAgIHRpbWVEaWZmID0gTWF0aC5taW4ocG9pbnQuZHVyYXRpb24sIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLSB0aW1lKTsKCiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKQogICAgICAgICAgICB2LnB1c2goZGF0YS5lZmZlY3QuZWFzaW5nKDEsIHRpbWVEaWZmLCBwb2ludC5mcm9tW2ldLCBkaWZmW2ldLCBwb2ludC5kdXJhdGlvbikpOwoKICAgICAgICAgIHBvaW50LmZyYW1lKChsZW49PTEpID8gdlswXSA6IHYpOwoKICAgICAgICAgIGlmICh0aW1lRGlmZj09cG9pbnQuZHVyYXRpb24pIHsKICAgICAgICAgICAgZGVsZXRlIGRhdGFbJ2VmZmVjdCddOwogICAgICAgICAgICB0aGF0LmRhdGEoZGF0YSk7CiAgICAgICAgICAgIGlmIChwb2ludC5jb21wbGV0ZSkKICAgICAgICAgICAgICBwb2ludC5jb21wbGV0ZSgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltKGZyYW1lKTsKICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykKICAgICAgICBkaWZmLnB1c2gocG9pbnQudG9baV0gLSBwb2ludC5mcm9tW2ldKTsKCiAgICAgIGRhdGEuZWZmZWN0ID0gJC5leHRlbmQoewogICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgYW5pbWF0aW5nID0gZmFsc2U7CiAgICAgICAgfSwKICAgICAgICBlYXNpbmc6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkYXRhKSB7CiAgICAgICAgICByZXR1cm4gYyAqIE1hdGguc3FydCgxIC0gKHQ9dC9kYXRhLTEpKnQpICsgYjsKICAgICAgICB9CiAgICAgIH0sIHBvaW50KTsKCiAgICAgIHRoaXMuZGF0YShkYXRhKTsKCiAgICAgIGZyYW1lKCk7CgogICAgfSBlbHNlIHsKICAgICAgCiAgICAgIGRlbGV0ZSBkYXRhWydlZmZlY3QnXTsKCiAgICB9CiAgfQp9KTsKCi8vIEV4cG9ydCBzb21lIGdsb2JhbHMKCiQuaXNUb3VjaCA9IGlzVG91Y2g7CiQubW91c2VFdmVudHMgPSBtb3VzZUV2ZW50czsKJC5jc3NQcmVmaXggPSBlbXB0eUZ1bmN0aW9uOwokLmNzc1RyYW5zaXRpb25FbmQgPSBlbXB0eUZ1bmN0aW9uOwokLmZpbmRQb3MgPSBmaW5kUG9zOwoKfSkoalF1ZXJ5KTs='></script>
	<script id="fb_lib_zoom_js" src='data:/text/plain;base64,LyoqCiAqIHpvb20uanMKICogd3d3LnR1cm5qcy5jb20KICogdHVybmpzLmNvbS9saWNlbnNlLnR4dAogKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgRW1tYW51ZWwgR2FyY2lhCiAqKi8KCihmdW5jdGlvbigkKSB7CgondXNlIHN0cmljdCc7Cgp2YXIgaGFzM2QsCgp6b29tT3B0aW9ucyA9IHsKICBtYXg6IDIsCiAgZmxpcGJvb2s6IG51bGwsCiAgZWFzZUZ1bmN0aW9uOiAnZWFzZS1pbi1vdXQnLAogIGR1cmF0aW9uOiA1MDAsCiAgd2hlbjoge30KfSwKCnpvb21NZXRob2RzID0gewogIGluaXQ6IGZ1bmN0aW9uKG9wdHMpIHsKCiAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICBvcHRpb25zID0gJC5leHRlbmQoe30sIHpvb21PcHRpb25zLCBvcHRzKTsKCiAgICBpZiAoIW9wdGlvbnMuZmxpcGJvb2sgfHwgIW9wdGlvbnMuZmxpcGJvb2sudHVybignaXMnKSkgewogICAgICB0aHJvdyBlcnJvcignb3B0aW9ucy5mbGlwYm9vayBpcyByZXF1aXJlZCcpOwogICAgfQoKICAgIGhhczNkID0gJ1dlYktpdENTU01hdHJpeCcgaW4gd2luZG93IHx8ICdNb3pQZXJzcGVjdGl2ZScgaW4gZG9jdW1lbnQuYm9keS5zdHlsZTsKCiAgICBpZiAodHlwZW9mKG9wdGlvbnMubWF4KSE9J2Z1bmN0aW9uJykgewogICAgICB2YXIgbWF4ID0gb3B0aW9ucy5tYXg7CiAgICAgIG9wdGlvbnMubWF4ID0gZnVuY3Rpb24oKSB7IHJldHVybiBtYXg7IH07CiAgICB9CgogICAgZGF0YS56b29tID0gewogICAgICBvcHRzOiBvcHRpb25zLAogICAgICBheGlzOiBwb2ludDJEKDAsIDApLAogICAgICBzY3JvbGxQb3M6IHBvaW50MkQoMCwgMCksCiAgICAgIGV2ZW50UXVldWU6IFtdLAogICAgICBtb3VzZXVwRXZlbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB6b29tTWV0aG9kcy5fZU1vdXNlVXAuYXBwbHkodGhhdCwgYXJndW1lbnRzKTsKICAgICAgfSwKICAgICAgZXZlbnRUb3VjaFN0YXJ0OiBiaW5kKHpvb21NZXRob2RzLl9lVG91Y2hTdGFydCwgdGhhdCksCiAgICAgIGV2ZW50VG91Y2hNb3ZlOiBiaW5kKHpvb21NZXRob2RzLl9lVG91Y2hNb3ZlLCB0aGF0KSwKICAgICAgZXZlbnRUb3VjaEVuZDogYmluZCh6b29tTWV0aG9kcy5fZVRvdWNoRW5kLCB0aGF0KSwKICAgICAgZmxpcGJvb2tFdmVudHM6IHsKICAgICAgICB6b29taW5nOiBiaW5kKHpvb21NZXRob2RzLl9lWm9vbSwgdGhhdCksCiAgICAgICAgcHJlc3NlZDogYmluZCh6b29tTWV0aG9kcy5fZVByZXNzZWQsIHRoYXQpLAogICAgICAgIHJlbGVhc2VkOiBiaW5kKHpvb21NZXRob2RzLl9lUmVsZWFzZWQsIHRoYXQpLAogICAgICAgIHN0YXJ0OiBiaW5kKHpvb21NZXRob2RzLl9lU3RhcnQsIHRoYXQpLAogICAgICAgIHR1cm5pbmc6IGJpbmQoem9vbU1ldGhvZHMuX2VUdXJuaW5nLCB0aGF0KSwKICAgICAgICB0dXJuZWQ6IGJpbmQoem9vbU1ldGhvZHMuX2VUdXJuZWQsIHRoYXQpLAogICAgICAgIGRlc3Ryb3lpbmc6IGJpbmQoem9vbU1ldGhvZHMuX2VEZXN0cm95aW5nLCB0aGF0KQogICAgICB9CiAgICB9OwoKICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBvcHRpb25zLndoZW4pIHsKICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLndoZW4sIGV2ZW50TmFtZSkpIHsKICAgICAgICB0aGlzLmJpbmQoJ3pvb20uJytldmVudE5hbWUsIG9wdGlvbnMud2hlbltldmVudE5hbWVdKTsKICAgICAgfQogICAgfQoKICAgIGZvciAoZXZlbnROYW1lIGluIGRhdGEuem9vbS5mbGlwYm9va0V2ZW50cykgewogICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEuem9vbS5mbGlwYm9va0V2ZW50cywgZXZlbnROYW1lKSkgewogICAgICAgIG9wdGlvbnMuZmxpcGJvb2suYmluZChldmVudE5hbWUsIGRhdGEuem9vbS5mbGlwYm9va0V2ZW50c1tldmVudE5hbWVdKTsKICAgICAgfQogICAgfQoKICAgIHRoaXMuY3NzKHsKICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsCiAgICAgIG92ZXJmbG93IDogJ2hpZGRlbicKICAgIH0pOwoKICAgIGlmICgkLmlzVG91Y2gpIHsKCiAgICAgIG9wdGlvbnMuZmxpcGJvb2suCiAgICAgICAgYmluZCgndG91Y2hzdGFydCcsIGRhdGEuem9vbS5ldmVudFRvdWNoU3RhcnQgKS4KICAgICAgICBiaW5kKCd0b3VjaG1vdmUnLCBkYXRhLnpvb20uZXZlbnRUb3VjaE1vdmUpLgogICAgICAgIGJpbmQoJ3RvdWNoZW5kJywgZGF0YS56b29tLmV2ZW50VG91Y2hFbmQpOwoKICAgICAgdGhpcy5iaW5kKCd0b3VjaHN0YXJ0Jywgem9vbU1ldGhvZHMuX3RhcCk7CgogICAgfSBlbHNlIHsKICAgICAgdGhpcy5tb3VzZWRvd24oem9vbU1ldGhvZHMuX21vdXNlZG93bikuCiAgICAgICAgY2xpY2soem9vbU1ldGhvZHMuX3RhcCk7CiAgICB9CiAgfSwKCiAgX3RhcDogZnVuY3Rpb24oZXZlbnQpIHsKICAgIAogICAgdmFyIHRoYXQgPSAkKHRoaXMpLAogICAgICBkYXRhID0gdGhhdC5kYXRhKCkuem9vbSwKICAgICAgZmxpcCA9IGRhdGEub3B0cy5mbGlwYm9vazsKCiAgICBpZiAoZGF0YS5kcmFnZ2luZ0Nvcm5lciB8fCBkYXRhLmRyYWdnaW5nKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoaXNQYWdlKCQoZXZlbnQudGFyZ2V0KSwgdGhhdCkpIHsKCiAgICAgIHpvb21NZXRob2RzLl9hZGRFdmVudC5jYWxsKHRoYXQsICd0YXAnLCBldmVudCk7CiAgICAgIAogICAgICB2YXIgc2VjdWVuY2UgPSB6b29tTWV0aG9kcy5fZXZlbnRTZXEuY2FsbCh0aGF0KTsKCiAgICAgIGlmIChzZWN1ZW5jZSkKICAgICAgICB0aGF0LnRyaWdnZXIoc2VjdWVuY2UpOwoKICAgIH0KCiAgfSwKCiAgX2FkZEV2ZW50OiBmdW5jdGlvbihldmVudE5hbWUsIGV2ZW50KSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCksCiAgICAgIGV2ZW50T2JqZWN0ID0ge25hbWU6IGV2ZW50TmFtZSwgdGltZXN0YW1wOiB0aW1lLCBldmVudDogZXZlbnR9OwoKICAgIGRhdGEuZXZlbnRRdWV1ZS5wdXNoKGV2ZW50T2JqZWN0KTsKCiAgICBpZiAoZGF0YS5ldmVudFF1ZXVlLmxlbmd0aD4xMCkKICAgICAgZGF0YS5ldmVudFF1ZXVlLnNwbGljZSgwLCAxKTsKCiAgfSwKCiAgX2V2ZW50U2VxOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGxpc3QgPSBkYXRhLmV2ZW50UXVldWUsCiAgICAgIGxhc3RFdmVudCA9IGxpc3QubGVuZ3RoLTE7CgogICAgaWYgKGxhc3RFdmVudD4wICYmCiAgICAgIGxpc3RbbGFzdEV2ZW50XS5uYW1lPT0ndGFwJyAmJgogICAgICBsaXN0W2xhc3RFdmVudC0xXS5uYW1lPT0ndGFwJyAmJgogICAgICBsaXN0W2xhc3RFdmVudF0uZXZlbnQucGFnZVggPT0gbGlzdFtsYXN0RXZlbnQtMV0uZXZlbnQucGFnZVggJiYKICAgICAgbGlzdFtsYXN0RXZlbnRdLmV2ZW50LnBhZ2VZID09IGxpc3RbbGFzdEV2ZW50LTFdLmV2ZW50LnBhZ2VZICYmCiAgICAgIGxpc3RbbGFzdEV2ZW50XS50aW1lc3RhbXAtbGlzdFtsYXN0RXZlbnQtMV0udGltZXN0YW1wIDwgMjAwICYmCiAgICAgIGxpc3RbbGFzdEV2ZW50XS50aW1lc3RhbXAtbGlzdFtsYXN0RXZlbnQtMV0udGltZXN0YW1wID4gNTApCiAgICB7CiAgCiAgICAgIHJldHVybiAkLmV4dGVuZChsaXN0W2xhc3RFdmVudF0uZXZlbnQsIHt0eXBlOiAnem9vbS5kb3VibGVUYXAnfSk7CgogICAgfSBlbHNlIGlmIChsaXN0W2xhc3RFdmVudF0ubmFtZT09J3RhcCcpIHsKICAgICAgCiAgICAgIHJldHVybiAkLmV4dGVuZChsaXN0W2xhc3RFdmVudF0uZXZlbnQsIHt0eXBlOiAnem9vbS50YXAnfSk7CgogICAgfQogICAgICAKICB9LAoKICBfcHJlcGFyZVpvb206IGZ1bmN0aW9uICgpIHsKICAgIAogICAgdmFyIGZsaXBQb3MsIG9mZnNldExlZnQgPSAwLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgaW52eiA9IDEvdGhpcy56b29tKCd2YWx1ZScpLAogICAgICBmbGlwID0gZGF0YS5vcHRzLmZsaXBib29rLAogICAgICBkaXIgPSBmbGlwLnR1cm4oJ2RpcmVjdGlvbicpLAogICAgICBmbGlwRGF0YSA9IGZsaXAuZGF0YSgpLAogICAgICBmbGlwT2Zmc2V0ID0gZmxpcC5vZmZzZXQoKSwKICAgICAgdGhpc09mZnNldCA9IHRoaXMub2Zmc2V0KCksCiAgICAgIGZsaXBTaXplID0ge2hlaWdodDogZmxpcC5oZWlnaHQoKX0sCiAgICAgIHZpZXcgPSBmbGlwLnR1cm4oJ3ZpZXcnKTsKCiAgICAgIGlmIChmbGlwLnR1cm4oJ2Rpc3BsYXknKT09J2RvdWJsZScgJiYgZmxpcC5kYXRhKCkub3B0cy5hdXRvQ2VudGVyKSB7CiAgICAgICAgaWYgKCF2aWV3WzBdKSB7CiAgICAgICAgICBmbGlwU2l6ZS53aWR0aCA9IGZsaXAud2lkdGgoKS8yOwogICAgICAgICAgb2Zmc2V0TGVmdCA9IChkaXI9PSdsdHInKSA/IGZsaXBTaXplLndpZHRoIDogMDsKICAgICAgICAgIGZsaXBQb3MgPSBwb2ludDJEKAogICAgICAgICAgICAoZGlyPT0nbHRyJykgPyBmbGlwT2Zmc2V0LmxlZnQtdGhpc09mZnNldC5sZWZ0K2ZsaXBTaXplLndpZHRoIDogZmxpcE9mZnNldC5sZWZ0LXRoaXNPZmZzZXQubGVmdCwKICAgICAgICAgICAgZmxpcE9mZnNldC50b3AtdGhpc09mZnNldC50b3AKICAgICAgICAgICk7CgogICAgICAgIH0gZWxzZSBpZiAoIXZpZXdbMV0pIHsKICAgICAgICAgIGZsaXBTaXplLndpZHRoID0gZmxpcC53aWR0aCgpLzI7CiAgICAgICAgICBvZmZzZXRMZWZ0ID0gKGRpcj09J2x0cicpID8gMCA6IGZsaXBTaXplLndpZHRoOwogICAgICAgICAgZmxpcFBvcyA9IHBvaW50MkQoCiAgICAgICAgICAgIChkaXI9PSdsdHInKSA/IGZsaXBPZmZzZXQubGVmdC10aGlzT2Zmc2V0LmxlZnQgOiBmbGlwT2Zmc2V0LmxlZnQtdGhpc09mZnNldC5sZWZ0K2ZsaXBTaXplLndpZHRoLAogICAgICAgICAgICBmbGlwT2Zmc2V0LnRvcC10aGlzT2Zmc2V0LnRvcAogICAgICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZmxpcFNpemUud2lkdGggPSBmbGlwLndpZHRoKCk7CiAgICAgICAgICBmbGlwUG9zID0gcG9pbnQyRCgKICAgICAgICAgICAgZmxpcE9mZnNldC5sZWZ0LXRoaXNPZmZzZXQubGVmdCwKICAgICAgICAgICAgZmxpcE9mZnNldC50b3AtdGhpc09mZnNldC50b3AKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGZsaXBTaXplLndpZHRoID0gZmxpcC53aWR0aCgpOwogICAgICAgIGZsaXBQb3MgPSBwb2ludDJEKAogICAgICAgICAgZmxpcE9mZnNldC5sZWZ0LXRoaXNPZmZzZXQubGVmdCwKICAgICAgICAgIGZsaXBPZmZzZXQudG9wLXRoaXNPZmZzZXQudG9wCiAgICAgICAgKTsKICAgICAgfQoKICAgIGlmICghZGF0YS56b29tZXIpIHsKICAgICAgZGF0YS56b29tZXIgPSAkKCc8ZGl2IC8+JywKICAgICAgICB7J2NsYXNzJzogJ3pvb21lcicsCiAgICAgICAgICBjc3M6IHsKICAgICAgICAgICAgb3ZlcmZsb3c6J2hpZGRlbicsCiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICB6SW5kZXg6ICcxMDAwMDAwJwogICAgICAgICAgfQogICAgICAgIH0pLgogICAgICBtb3VzZWRvd24oZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9KS5hcHBlbmRUbyh0aGlzKTsKICAgIH0KCgogICAgZGF0YS56b29tZXIuY3NzKHsKICAgICAgdG9wOiBmbGlwUG9zLnksCiAgICAgIGxlZnQ6IGZsaXBQb3MueCwKICAgICAgd2lkdGg6IGZsaXBTaXplLndpZHRoLAogICAgICBoZWlnaHQ6IGZsaXBTaXplLmhlaWdodAogICAgfSk7CiAgICAKICAgIHZhciB6b29tZXJWaWV3ID0gdmlldy5qb2luKCcsJyk7CgogICAgaWYgKHpvb21lclZpZXchPWRhdGEuem9vbWVyVmlldykgewoKICAgICAgZGF0YS56b29tZXJWaWV3ID0gem9vbWVyVmlldzsKICAgICAgZGF0YS56b29tZXIuZmluZCgnKicpLnJlbW92ZSgpOwoKICAgICAgZm9yICh2YXIgcCA9IDA7IHA8dmlldy5sZW5ndGg7IHArKykgewoKICAgICAgICBpZiAoIXZpZXdbcF0pCiAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgdmFyIHBvcyA9IGZsaXBEYXRhLnBhZ2VPYmpzW3ZpZXdbcF1dLm9mZnNldCgpLAogICAgICAgICAgcGFnZUVsZW1lbnQgPSAkKGZsaXBEYXRhLnBhZ2VPYmpzW3ZpZXdbcF1dKTsKICAgICAgICAgIAogICAgICAgIHBhZ2VFbGVtZW50LgogICAgICAgICAgY2xvbmUoKS4KICAgICAgICAgIHRyYW5zZm9ybSgnJykuCiAgICAgICAgICBjc3MoewogICAgICAgICAgICB3aWR0aDogcGFnZUVsZW1lbnQud2lkdGgoKSppbnZ6LAogICAgICAgICAgICBoZWlnaHQ6IHBhZ2VFbGVtZW50LmhlaWdodCgpKmludnosCiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICBkaXNwbGF5OiAnJywKICAgICAgICAgICAgdG9wOiAocG9zLnRvcCAtIGZsaXBPZmZzZXQudG9wKSppbnZ6LAogICAgICAgICAgICBsZWZ0OiAocG9zLmxlZnQgLSBmbGlwT2Zmc2V0LmxlZnQgLSBvZmZzZXRMZWZ0KSppbnZ6CiAgICAgICAgICB9KS4KICAgICAgICAgIGFwcGVuZFRvKGRhdGEuem9vbWVyKTsKICAgICAgfQogICAgfQogICAgCiAgICAKICAgIHJldHVybiB7cG9zOiBmbGlwUG9zLCBzaXplOiBmbGlwU2l6ZX07CgogIH0sCgogIHZhbHVlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb207CgogICAgcmV0dXJuIGRhdGEub3B0cy5mbGlwYm9vay50dXJuKCd6b29tJyk7CiAgfSwKCiAgem9vbUluOiBmdW5jdGlvbihldmVudCkgewoKICAgIHZhciBwb3MsCiAgICAgIHRoYXQgPSB0aGlzLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgZmxpcCA9IGRhdGEub3B0cy5mbGlwYm9vaywKICAgICAgem9vbSA9IGRhdGEub3B0cy5tYXgoKSwKICAgICAgZmxpcE9mZnNldCA9IGZsaXAub2Zmc2V0KCksCiAgICAgIHRoaXNPZmZzZXQgPSB0aGlzLm9mZnNldCgpOwoKICAgIGlmIChkYXRhLnpvb21JbikKICAgICAgcmV0dXJuIHRoaXM7CgogICAgZmxpcC50dXJuKCdzdG9wJyk7CiAgICAKICAgIHZhciBldiA9ICQuRXZlbnQoJ3pvb20uY2hhbmdlJyk7CiAgICB0aGlzLnRyaWdnZXIoZXYsIFt6b29tXSk7CgogICAgaWYgKGV2LmlzRGVmYXVsdFByZXZlbnRlZCgpKQogICAgICByZXR1cm4gdGhpczsKCiAgICB2YXIgYm91bmQgPSB6b29tTWV0aG9kcy5fcHJlcGFyZVpvb20uY2FsbCh0aGlzKSwKICAgICAgZmxpcFBvcyA9IGJvdW5kLnBvcywKICAgICAgY2VudGVyID0gcG9pbnQyRChib3VuZC5zaXplLndpZHRoLzIsIGJvdW5kLnNpemUuaGVpZ2h0LzIpLAogICAgICBwcmVmaXggPSAkLmNzc1ByZWZpeCgpLAogICAgICB0cmFuc2l0aW9uRW5kID0gJC5jc3NUcmFuc2l0aW9uRW5kKCksCiAgICAgIGF1dG9DZW50ZXIgPSBmbGlwLmRhdGEoKS5vcHRzLmF1dG9DZW50ZXI7CgogICAgZGF0YS5zY2FsZSA9IHpvb207CiAgICBmbGlwLmRhdGEoKS5ub0NlbnRlciA9IHRydWU7CgogICAgaWYgKHR5cGVvZihldmVudCkhPSd1bmRlZmluZWQnKSB7CgogICAgICBpZiAoJ3gnIGluIGV2ZW50ICYmICd5JyBpbiBldmVudCkgewogICAgICAgIAogICAgICAgIHBvcyA9IHBvaW50MkQoZXZlbnQueC1mbGlwUG9zLngsIGV2ZW50LnktZmxpcFBvcy55KTsKICAgICAgCiAgICAgIH0gZWxzZSB7CgogICAgICAgIHBvcyA9ICgkLmlzVG91Y2gpID8KICAgICAgICAgIHBvaW50MkQoCiAgICAgICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWC1mbGlwUG9zLngtdGhpc09mZnNldC5sZWZ0LAogICAgICAgICAgICBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF0ucGFnZVktZmxpcFBvcy55LXRoaXNPZmZzZXQudG9wCiAgICAgICAgICApCiAgICAgICAgICA6CiAgICAgICAgICBwb2ludDJEKAogICAgICAgICAgICBldmVudC5wYWdlWC1mbGlwUG9zLngtdGhpc09mZnNldC5sZWZ0LAogICAgICAgICAgICBldmVudC5wYWdlWS1mbGlwUG9zLnktdGhpc09mZnNldC50b3AKICAgICAgICAgICk7CgogICAgICB9CgogICAgfSBlbHNlIHsKICAgICAgcG9zID0gcG9pbnQyRChjZW50ZXIueCwgY2VudGVyLnkpOwogICAgfQoKCgogICAgaWYgKHBvcy54PDAgfHwgcG9zLnk8MCB8fCBwb3MueD5ib3VuZC53aWR0aCB8fCBwb3MueT5ib3VuZC5oZWlnaHQpIHsKICAgICAgcG9zLnggPSBjZW50ZXIueDsKICAgICAgcG9zLnkgPSBjZW50ZXIueTsKICAgIH0KCgogICAgdmFyIGNvbXBvc2UgPSBwb2ludDJEKAogICAgICAgIChwb3MueC1jZW50ZXIueCkqem9vbSArIGNlbnRlci54LAogICAgICAgIChwb3MueS1jZW50ZXIueSkqem9vbSArIGNlbnRlci55CiAgICAgICksCiAgICAgIG1vdmUgPSBwb2ludDJEKAogICAgICAgIChib3VuZC5zaXplLndpZHRoKnpvb20+dGhpcy53aWR0aCgpKSA/IHBvcy54LWNvbXBvc2UueCA6IDAsCiAgICAgICAgKGJvdW5kLnNpemUuaGVpZ2h0Knpvb20+dGhpcy5oZWlnaHQoKSkgPyBwb3MueS1jb21wb3NlLnkgOiAwCiAgICAgICksCiAgICAgIG1heE1vdmUgPSBwb2ludDJEKAogICAgICAgIE1hdGguYWJzKGJvdW5kLnNpemUud2lkdGgqem9vbS10aGlzLndpZHRoKCkpLAogICAgICAgIE1hdGguYWJzKGJvdW5kLnNpemUuaGVpZ2h0Knpvb20tdGhpcy5oZWlnaHQoKSkKICAgICAgKSwKICAgICAgbWluTW92ZSA9IHBvaW50MkQoCiAgICAgICAgTWF0aC5taW4oMCwgYm91bmQuc2l6ZS53aWR0aCp6b29tLXRoaXMud2lkdGgoKSksCiAgICAgICAgTWF0aC5taW4oMCwgYm91bmQuc2l6ZS5oZWlnaHQqem9vbS10aGlzLmhlaWdodCgpKQogICAgICApLAogICAgICByZWFsUG9zID0gcG9pbnQyRCgKICAgICAgICBjZW50ZXIueCp6b29tIC0gY2VudGVyLnggLSBmbGlwUG9zLnggLSBtb3ZlLngsCiAgICAgICAgY2VudGVyLnkqem9vbSAtIGNlbnRlci55IC0gZmxpcFBvcy55IC0gbW92ZS55CiAgICAgICk7CgogICAgaWYgKHJlYWxQb3MueT5tYXhNb3ZlLnkpCiAgICAgIG1vdmUueSA9IHJlYWxQb3MueSAtIG1heE1vdmUueSArICBtb3ZlLnk7CiAgICBlbHNlIGlmIChyZWFsUG9zLnk8bWluTW92ZS55KQogICAgICBtb3ZlLnkgPSByZWFsUG9zLnkgLSBtaW5Nb3ZlLnkgKyAgbW92ZS55OwoKICAgIGlmIChyZWFsUG9zLng+bWF4TW92ZS54KQogICAgICBtb3ZlLnggPSByZWFsUG9zLnggLSBtYXhNb3ZlLnggKyAgbW92ZS54OwogICAgZWxzZSBpZiAocmVhbFBvcy54PG1pbk1vdmUueCkKICAgICAgbW92ZS54ID0gcmVhbFBvcy54IC0gbWluTW92ZS54ICsgIG1vdmUueDsKCiAgICByZWFsUG9zID0gcG9pbnQyRCgKICAgICAgY2VudGVyLngqem9vbSAtIGNlbnRlci54IC0gZmxpcFBvcy54IC0gbW92ZS54LAogICAgICBjZW50ZXIueSp6b29tIC0gY2VudGVyLnkgLSBmbGlwUG9zLnkgLSBtb3ZlLnkKICAgICk7CgogICAgdmFyIGNzcyA9IHt9OwoKICAgIGNzc1twcmVmaXgrJ3RyYW5zaXRpb24nXSA9IHByZWZpeCArCiAgICAgICd0cmFuc2Zvcm0gJyArCiAgICAgIGRhdGEub3B0cy5lYXNlRnVuY3Rpb24gKwogICAgICAnICcgKwogICAgICBkYXRhLm9wdHMuZHVyYXRpb24gKwogICAgICAnbXMnOwoKICAgIHZhciB0cmFuc2l0aW9uRW5kQ2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKCiAgICAgIHRoYXQudHJpZ2dlcignem9vbS56b29tSW4nKTsKCiAgICAgIGRhdGEuem9vbUluID0gdHJ1ZTsKCiAgICAgIGRhdGEuZmxpcFBvc2l0aW9uID0gcG9pbnQyRChmbGlwLmNzcygnbGVmdCcpLCBmbGlwLmNzcygndG9wJykpOwoKICAgICAgZmxpcC50dXJuKCd6b29tJywgem9vbSkuY3NzKHsKICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJywKICAgICAgICBtYXJnaW46ICcnLAogICAgICAgIHRvcDowLAogICAgICAgIGxlZnQ6MAogICAgICB9KTsKCiAgICAgIHZhciBmbGlwT2Zmc2V0ID0gZmxpcC5vZmZzZXQoKTsKICAgICAgCiAgICAgIGRhdGEuYXhpcyA9IHBvaW50MkQoCiAgICAgICAgZmxpcE9mZnNldC5sZWZ0IC0gdGhpc09mZnNldC5sZWZ0LAogICAgICAgIGZsaXBPZmZzZXQudG9wIC0gdGhpc09mZnNldC50b3AKICAgICAgKTsKCgogICAgICBpZiAoYXV0b0NlbnRlciAmJiBmbGlwLnR1cm4oJ2Rpc3BsYXknKT09J2RvdWJsZScpCiAgICAgICAgaWYgKChmbGlwLnR1cm4oJ2RpcmVjdGlvbicpPT0nbHRyJyAmJiAhZmxpcC50dXJuKCd2aWV3JylbMF0pIHx8CiAgICAgICAgICAoZmxpcC50dXJuKCdkaXJlY3Rpb24nKT09J3J0bCcgJiYgIWZsaXAudHVybigndmlldycpWzFdKQogICAgICAgICkKICAgICAgICAgIGRhdGEuYXhpcy54ID0gZGF0YS5heGlzLnggKyBmbGlwLndpZHRoKCkvMjsKCiAgICAgIHRoYXQuem9vbSgnc2Nyb2xsJywgcmVhbFBvcyk7CiAgICAgIHRoYXQuYmluZCgkLm1vdXNlRXZlbnRzLmRvd24sIHpvb21NZXRob2RzLl9lTW91c2VEb3duKTsKICAgICAgdGhhdC5iaW5kKCQubW91c2VFdmVudHMubW92ZSwgem9vbU1ldGhvZHMuX2VNb3VzZU1vdmUpOwogICAgICAkKGRvY3VtZW50KS5iaW5kKCQubW91c2VFdmVudHMudXAsIGRhdGEubW91c2V1cEV2ZW50KTsKICAgICAgdGhhdC5iaW5kKCdtb3VzZXdoZWVsJywgem9vbU1ldGhvZHMuX2VNb3VzZVdoZWVsKTsKCiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgZGF0YS56b29tZXIuaGlkZSgpOwogICAgICAgIGRhdGEuem9vbWVyLnJlbW92ZSgpOwogICAgICAgIGRhdGEuem9vbWVyID0gbnVsbDsKICAgICAgICBkYXRhLnpvb21lclZpZXcgPSBudWxsOwogICAgICB9LCA1MCk7CgogICAgfTsKCiAgICBkYXRhLnpvb21lci5jc3MoY3NzKS5zaG93KCk7CgogICAgaWYgKHRyYW5zaXRpb25FbmQpCiAgICAgIGRhdGEuem9vbWVyLmJpbmQodHJhbnNpdGlvbkVuZCwgZnVuY3Rpb24oKSB7CiAgICAgICAgJCh0aGlzKS51bmJpbmQodHJhbnNpdGlvbkVuZCk7CiAgICAgICAgdHJhbnNpdGlvbkVuZENhbGxiYWNrKCk7CiAgICAgIH0pOwogICAgZWxzZQogICAgICBzZXRUaW1lb3V0KHRyYW5zaXRpb25FbmRDYWxsYmFjaywgZGF0YS5vcHRzLmR1cmF0aW9uKTsKCiAgICBkYXRhLnpvb21lci50cmFuc2Zvcm0odHJhbnNsYXRlKG1vdmUueCwgbW92ZS55LCB0cnVlKSArIHNjYWxlKHpvb20sIHRydWUpKTsKICAgIAogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgem9vbU91dDogZnVuY3Rpb24oZHVyYXRpb24pIHsKCiAgICB2YXIgcG9zLCBtb3ZlLAogICAgICB0aGF0ID0gdGhpcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2ssCiAgICAgIHpvb20gPSAxLAogICAgICBzY2FsaW5nID0gem9vbS9kYXRhLnNjYWxlLAogICAgICBwcmVmaXggPSAkLmNzc1ByZWZpeCgpLAogICAgICB0cmFuc2l0aW9uRW5kID0gJC5jc3NUcmFuc2l0aW9uRW5kKCksCiAgICAgIHRoaXNPZmZzZXQgPSB0aGlzLm9mZnNldCgpOwoKICAgIGR1cmF0aW9uID0gKHR5cGVvZihkdXJhdGlvbikhPSd1bmRlZmluZWQnKSA/IGR1cmF0aW9uIDogZGF0YS5vcHRzLmR1cmF0aW9uOwoKICAgIGlmICghZGF0YS56b29tSW4pCiAgICAgIHJldHVybjsKICAgICAgCiAgICB2YXIgZXYgPSAkLkV2ZW50KCd6b29tLmNoYW5nZScpOwogICAgdGhpcy50cmlnZ2VyKGV2LCBbem9vbV0pOwoKICAgIGlmIChldi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAgcmV0dXJuIHRoaXM7CgogICAgZGF0YS56b29tSW4gPSBmYWxzZTsKICAgIGRhdGEuc2NhbGUgPSB6b29tOwoKICAgIGZsaXAuZGF0YSgpLm5vQ2VudGVyID0gZmFsc2U7CgogICAgdGhhdC51bmJpbmQoJC5tb3VzZUV2ZW50cy5kb3duLCB6b29tTWV0aG9kcy5fZU1vdXNlRG93bik7CiAgICB0aGF0LnVuYmluZCgkLm1vdXNlRXZlbnRzLm1vdmUsIHpvb21NZXRob2RzLl9lTW91c2VNb3ZlKTsKICAgICQoZG9jdW1lbnQpLnVuYmluZCgkLm1vdXNlRXZlbnRzLnVwLCBkYXRhLm1vdXNldXBFdmVudCk7CiAgICB0aGF0LnVuYmluZCgnbW91c2V3aGVlbCcsIHpvb21NZXRob2RzLl9lTW91c2VXaGVlbCk7CgogICAgdmFyIGNzcyA9IHt9OwoKICAgIGNzc1twcmVmaXgrJ3RyYW5zaXRpb24nXSA9IHByZWZpeCArCiAgICAgICd0cmFuc2Zvcm0gJyArCiAgICAgIGRhdGEub3B0cy5lYXNlRnVuY3Rpb24gKwogICAgICAnICcgKwogICAgICBkdXJhdGlvbiArCiAgICAgICdtcyc7CgogICAgZmxpcC5jc3MoY3NzKTsKCiAgICB2YXIgZmxpcERlc1BvcywKICAgICAgdG1wID0gJCgnPGRpdiAvPicsIHsKICAgICAgICBjc3M6IHsKICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLAogICAgICAgICAgdG9wOiBkYXRhLmZsaXBQb3NpdGlvbi55LAogICAgICAgICAgbGVmdDogZGF0YS5mbGlwUG9zaXRpb24ueCwKICAgICAgICAgIHdpZHRoOiBmbGlwLndpZHRoKCkqc2NhbGluZywKICAgICAgICAgIGhlaWdodDogZmxpcC5oZWlnaHQoKSpzY2FsaW5nLAogICAgICAgICAgYmFja2dyb3VuZDogJ2JsdWUnCiAgICAgICAgfQogICAgICB9KS5hcHBlbmRUbyhmbGlwLnBhcmVudCgpKTsKCiAgICBmbGlwRGVzUG9zID0gcG9pbnQyRCgKICAgICAgdG1wLm9mZnNldCgpLmxlZnQtdGhpc09mZnNldC5sZWZ0LAogICAgICB0bXAub2Zmc2V0KCkudG9wLXRoaXNPZmZzZXQudG9wCiAgICApOwogICAgCgogICAgdG1wLnJlbW92ZSgpOwoKICAgIHZhciBhdXRvQ2VudGVyID0gZmxpcC5kYXRhKCkub3B0cy5hdXRvQ2VudGVyOwoKICAgIGlmIChhdXRvQ2VudGVyICYmIGZsaXAudHVybignZGlzcGxheScpPT0nZG91YmxlJykgewoKICAgICAgaWYgKCFmbGlwLnR1cm4oJ3ZpZXcnKVswXSkKICAgICAgICBmbGlwRGVzUG9zLnggPSAoZmxpcC50dXJuKCdkaXJlY3Rpb24nKT09J2x0cicpID8KICAgICAgICAgIGZsaXBEZXNQb3MueC10bXAud2lkdGgoKS80IDoKICAgICAgICAgIGZsaXBEZXNQb3MueCt0bXAud2lkdGgoKS80OwogICAgICBlbHNlIGlmICghZmxpcC50dXJuKCd2aWV3JylbMV0pCiAgICAgICAgZmxpcERlc1Bvcy54ID0gKGZsaXAudHVybignZGlyZWN0aW9uJyk9PSdsdHInKSA/CiAgICAgICAgICBmbGlwRGVzUG9zLngrdG1wLndpZHRoKCkvNCA6CiAgICAgICAgICBmbGlwRGVzUG9zLngtdG1wLndpZHRoKCkvNDsKICAgIH0KCiAgICB2YXIgZmxpcFJlYWxQb3MgPSAkLmZpbmRQb3MoZmxpcFswXSk7CiAgICAgIAogICAgbW92ZSA9IHBvaW50MkQoCiAgICAgIC1mbGlwLndpZHRoKCkvMiAtIGZsaXBSZWFsUG9zLmxlZnQgKyB0bXAud2lkdGgoKS8yICsgZmxpcERlc1Bvcy54ICsgdGhpc09mZnNldC5sZWZ0LAogICAgICAtZmxpcC5oZWlnaHQoKS8yIC0gZmxpcFJlYWxQb3MudG9wICsgdG1wLmhlaWdodCgpLzIgKyBmbGlwRGVzUG9zLnkgKyB0aGlzT2Zmc2V0LnRvcCk7CgogICAgdmFyIHRyYW5zaXRpb25FbmRDYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgCiAgICAgIGlmIChmbGlwWzBdLnN0eWxlLnJlbW92ZVByb3BlcnR5KSB7CiAgICAgICAgCiAgICAgICAgZmxpcFswXS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwcmVmaXgrJ3RyYW5zaXRpb24nKTsKICAgICAgICBmbGlwLnRyYW5zZm9ybSgKICAgICAgICAgIChmbGlwLnR1cm4oJ29wdGlvbnMnKS5hY2NlbGVyYXRpb24pID8gdHJhbnNsYXRlKDAsIDAsIHRydWUpIDogJycpLnR1cm4oJ3pvb20nLCAxKTsKICAgICAgICBmbGlwWzBdLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdtYXJnaW4nKTsKICAgICAgICBmbGlwLmNzcyh7CiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJywKICAgICAgICAgIHRvcDogZGF0YS5mbGlwUG9zaXRpb24ueSwKICAgICAgICAgIGxlZnQ6IGRhdGEuZmxpcFBvc2l0aW9uLngKICAgICAgICB9KTsKCiAgICAgIH0gZWxzZSB7CiAgICAgICAgCiAgICAgICAgZmxpcC50cmFuc2Zvcm0oJ25vbmUnKS4KICAgICAgICAgIHR1cm4oJ3pvb20nLCAxKS4KICAgICAgICAgIGNzcyh7CiAgICAgICAgICAgIG1hcmdpbjogJycsCiAgICAgICAgICAgIHRvcDogZGF0YS5mbGlwUG9zaXRpb24ueSwKICAgICAgICAgICAgbGVmdDogZGF0YS5mbGlwUG9zaXRpb24ueCwKICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScKICAgICAgICB9KTsKCiAgICAgIH0KCiAgICAgIGlmIChhdXRvQ2VudGVyKQogICAgICAgIGZsaXAudHVybignY2VudGVyJyk7CgogICAgICB0aGF0LnRyaWdnZXIoJ3pvb20uem9vbU91dCcpOwoKICAgIH07CgogICAgaWYgKGR1cmF0aW9uPT09MCkgewogIAogICAgICB0cmFuc2l0aW9uRW5kQ2FsbGJhY2soKTsKCiAgICB9IGVsc2UgaWYgKHRyYW5zaXRpb25FbmQpIHsKCiAgICAgIGZsaXAuYmluZCh0cmFuc2l0aW9uRW5kLCBmdW5jdGlvbigpIHsKCiAgICAgICAgJCh0aGlzKS51bmJpbmQodHJhbnNpdGlvbkVuZCk7CiAgICAgICAgdHJhbnNpdGlvbkVuZENhbGxiYWNrKCk7CgogICAgICB9KTsKCiAgICAgIGZsaXAudHJhbnNmb3JtKHRyYW5zbGF0ZShtb3ZlLngsIG1vdmUueSwgdHJ1ZSkgKyBzY2FsZShzY2FsaW5nLCB0cnVlKSk7CgogICAgfSBlbHNlIHsKCiAgICAgIHNldFRpbWVvdXQodHJhbnNpdGlvbkVuZENhbGxiYWNrLCBkdXJhdGlvbik7CiAgICAgIGZsaXAudHJhbnNmb3JtKHRyYW5zbGF0ZShtb3ZlLngsIG1vdmUueSwgdHJ1ZSkgKyBzY2FsZShzY2FsaW5nLCB0cnVlKSk7CgogICAgfQoKICAgIHJldHVybiB0aGlzOwogIH0sCgogIGZsaXBib29rV2lkdGg6IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXBib29rID0gZGF0YS5vcHRzLmZsaXBib29rLAogICAgICB2aWV3ID0gZmxpcGJvb2sudHVybigndmlldycpOwoKICAgIHJldHVybiAoZmxpcGJvb2sudHVybignZGlzcGxheScpPT0nZG91YmxlJyAmJiAoIXZpZXdbMF0gfHwgIXZpZXdbMV0pKSA/CiAgICAgIGZsaXBib29rLndpZHRoKCkvMgogICAgICA6CiAgICAgIGZsaXBib29rLndpZHRoKCk7CgogIH0sCgogIHNjcm9sbDogZnVuY3Rpb24odG8sIHVubGltaXRlZCwgYW5pbWF0ZSkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2ssCiAgICAgIGZsaXBXaWR0aCA9IHRoaXMuem9vbSgnZmxpcGJvb2tXaWR0aCcpLAogICAgICBwcmVmaXggPSAkLmNzc1ByZWZpeCgpOwogICAgCiAgICBpZiAoaGFzM2QpIHsKCiAgICAgIHZhciBjc3MgPSB7fTsKCiAgICAgIGlmIChhbmltYXRlKSB7CiAgICAgICAgY3NzW3ByZWZpeCsndHJhbnNpdGlvbiddID0gcHJlZml4ICsgJ3RyYW5zZm9ybSAyMDBtcyc7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3NzW3ByZWZpeCsndHJhbnNpdGlvbiddID0gJ25vbmUnOwogICAgICB9CgogICAgICBmbGlwLmNzcyhjc3MpOwogICAgICBmbGlwLnRyYW5zZm9ybSh0cmFuc2xhdGUoLWRhdGEuYXhpcy54IC0gdG8ueCwgLWRhdGEuYXhpcy55IC0gdG8ueSwgdHJ1ZSkpOwoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICBmbGlwLmNzcyh7dG9wOiAtZGF0YS5heGlzLnkgLSB0by55LCBsZWZ0OiAtZGF0YS5heGlzLnggLSB0by54fSk7CgogICAgfQoKICAgIGlmICghdW5saW1pdGVkKSB7CgogICAgICB2YXIgb3V0LAogICAgICAgIG1pbkJvdW5kID0gcG9pbnQyRCgKICAgICAgICAgIE1hdGgubWluKDAsIChmbGlwV2lkdGgtdGhpcy53aWR0aCgpKS8yKSwKICAgICAgICAgIE1hdGgubWluKDAsIChmbGlwLmhlaWdodCgpLXRoaXMuaGVpZ2h0KCkpLzIpKSwKICAgICAgICBtYXhCb3VuZCA9IHBvaW50MkQoCiAgICAgICAgICAoZmxpcFdpZHRoPnRoaXMud2lkdGgoKSkgPyBmbGlwV2lkdGgtdGhpcy53aWR0aCgpIDogKGZsaXBXaWR0aC10aGlzLndpZHRoKCkpLzIsCiAgICAgICAgICAoZmxpcC5oZWlnaHQoKT50aGlzLmhlaWdodCgpKSA/IGZsaXAuaGVpZ2h0KCktdGhpcy5oZWlnaHQoKSA6IChmbGlwLmhlaWdodCgpLXRoaXMuaGVpZ2h0KCkpLzIKICAgICAgICApOwoKICAgICAgaWYgKHRvLnk8bWluQm91bmQueSkgewogICAgICAgIHRvLnkgPSBtaW5Cb3VuZC55OwogICAgICAgIG91dCA9IHRydWU7CiAgICAgIH0gZWxzZSBpZiAodG8ueT5tYXhCb3VuZC55KSB7CiAgICAgICAgdG8ueSA9IG1heEJvdW5kLnk7CiAgICAgICAgb3V0ID0gdHJ1ZTsKICAgICAgfQoKICAgICAgaWYgKHRvLng8bWluQm91bmQueCkgewogICAgICAgIHRvLnggPSBtaW5Cb3VuZC54OwogICAgICAgIG91dCA9IHRydWU7CiAgICAgIH0gZWxzZSBpZiAodG8ueD5tYXhCb3VuZC54KSB7CiAgICAgICAgdG8ueCA9IG1heEJvdW5kLng7CiAgICAgICAgb3V0ID0gdHJ1ZTsKICAgICAgfQoKICAgICAgaWYgKG91dCkgewogICAgICAgIHRoaXMuem9vbSgnc2Nyb2xsJywgdG8sIHRydWUsIHRydWUpOwogICAgICB9CgogICAgfQoKICAgIGRhdGEuc2Nyb2xsUG9zID0gcG9pbnQyRCh0by54LCB0by55KTsKCiAgfSwKCiAgcmVzaXplOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2s7CiAgICAKICAgIGlmICh0aGlzLnpvb20oJ3ZhbHVlJyk+MSkgewoKICAgICAgdmFyICBmbGlwT2Zmc2V0ID0gZmxpcC5vZmZzZXQoKSwKICAgICAgICB0aGlzT2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTsKCiAgICAgIGRhdGEuYXhpcyA9ICBwb2ludDJEKAogICAgICAgIChmbGlwT2Zmc2V0LmxlZnQgLSB0aGlzT2Zmc2V0LmxlZnQpICsgKGRhdGEuYXhpcy54ICsgZGF0YS5zY3JvbGxQb3MueCksCiAgICAgICAgKGZsaXBPZmZzZXQudG9wIC0gdGhpc09mZnNldC50b3ApICsgKGRhdGEuYXhpcy55ICsgZGF0YS5zY3JvbGxQb3MueSkKICAgICAgKTsKCiAgICAgIGlmIChmbGlwLnR1cm4oJ2Rpc3BsYXknKT09J2RvdWJsZScgJiYKICAgICAgICBmbGlwLnR1cm4oJ2RpcmVjdGlvbicpPT0nbHRyJyAmJgogICAgICAgICFmbGlwLnR1cm4oJ3ZpZXcnKVswXSkKICAgICAgICAgIGRhdGEuYXhpcy54ID0gZGF0YS5heGlzLnggKyBmbGlwLndpZHRoKCkvMjsKCiAgICAgIHRoaXMuem9vbSgnc2Nyb2xsJywgZGF0YS5zY3JvbGxQb3MpOwogICAgfQoKICB9LAoKICBfZVpvb206IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgZmxpcFBvcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2ssCiAgICAgIHZpZXcgPSBmbGlwLnR1cm4oJ3ZpZXcnKTsKCiAgICBmb3IgKHZhciBwID0gMDsgcDx2aWV3Lmxlbmd0aDsgcCsrKSB7CiAgICAgIGlmICh2aWV3W3BdKQogICAgICAgIHRoaXMudHJpZ2dlcignem9vbS5yZXNpemUnLAogICAgICAgICAgW2RhdGEuc2NhbGUsIHZpZXdbcF0sIGZsaXAuZGF0YSgpLnBhZ2VPYmpzW3ZpZXdbcF1dXQogICAgICAgICk7CiAgICB9CiAgfSwKCiAgX2VTdGFydDogZnVuY3Rpb24oZXZlbnQsIHBhZ2VPYmopIHsKCiAgICBpZiAodGhpcy56b29tKCd2YWx1ZScpIT0xKSB7CiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICB9CgoKICB9LAoKICBfZVR1cm5pbmc6IGZ1bmN0aW9uKGV2ZW50LCBwYWdlLCB2aWV3KSB7CgogICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICB6b29tID0gdGhpcy56b29tKCd2YWx1ZScpLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgZmxpcCA9IGRhdGEub3B0cy5mbGlwYm9vazsKCiAgICBkYXRhLnBhZ2UgPSBmbGlwLnR1cm4oJ3BhZ2UnKTsKCiAgICBpZiAoem9vbSE9MSkgewogICAgICBmb3IgKHZhciBwID0gMDsgcDx2aWV3Lmxlbmd0aDsgcCsrKSB7CiAgICAgICAgaWYgKHZpZXdbcF0pCiAgICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb20ucmVzaXplJywKICAgICAgICAgICAgW3pvb20sIHZpZXdbcF0sIGZsaXAuZGF0YSgpLnBhZ2VPYmpzW3ZpZXdbcF1dXQogICAgICAgICAgKTsKICAgICAgfQoKICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICB0aGF0Lnpvb20oJ3Jlc2l6ZScpOwogICAgICB9LCAwKTsKICAgIH0KCiAgfSwKCiAgX2VUdXJuZWQ6IGZ1bmN0aW9uIChldmVudCwgcGFnZSkgewogICAgCiAgICBpZiAodGhpcy56b29tKCd2YWx1ZScpIT0xKSB7CiAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgICBmbGlwID0gZGF0YS5vcHRzLmZsaXBib29rOwoKICAgICAgaWYgKHBhZ2U+ZGF0YS5wYWdlKQogICAgICAgIHRoaXMuem9vbSgnc2Nyb2xsJywKICAgICAgICAgIHBvaW50MkQoMCwgZGF0YS5zY3JvbGxQb3MueSksIGZhbHNlLCB0cnVlKTsKICAgICAgICAKICAgICAgZWxzZSBpZiAocGFnZTxkYXRhLnBhZ2UpCiAgICAgICAgdGhpcy56b29tKCdzY3JvbGwnLAogICAgICAgICAgcG9pbnQyRChmbGlwLndpZHRoKCksIGRhdGEuc2Nyb2xsUG9zLnkpLCBmYWxzZSwgdHJ1ZSk7CiAgICAKICAgIH0KICB9LAoKICBfZVByZXNzZWQ6IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgZGF0YSA9ICQodGhpcykuZGF0YSgpLnpvb207CiAgICBkYXRhLmRyYWdnaW5nQ29ybmVyID0gdHJ1ZTsKCiAgfSwKCiAgX2VSZWxlYXNlZDogZnVuY3Rpb24oKSB7CgogICAgdmFyIGRhdGEgPSAkKHRoaXMpLmRhdGEoKS56b29tOwoKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgIGRhdGEuZHJhZ2dpbmdDb3JuZXIgPSBmYWxzZTsKICAgIH0sIDEpOwoKICB9LAoKICBfZU1vdXNlRG93bjogZnVuY3Rpb24oZXZlbnQpIHsKICAgIAogICAgdmFyIGRhdGEgPSAkKHRoaXMpLmRhdGEoKS56b29tOwoKICAgIGRhdGEuZHJhZ2dpbmdDdXIgPSAoJC5pc1RvdWNoKSA/CiAgICAgIHBvaW50MkQoCiAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VYLAogICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWQogICAgICApCiAgICAgIDoKICAgICAgcG9pbnQyRChldmVudC5wYWdlWCwgZXZlbnQucGFnZVkpOwogICAgCiAgICByZXR1cm4gZmFsc2U7CiAgfSwKCiAgX2VNb3VzZU1vdmU6IGZ1bmN0aW9uKGV2ZW50KSB7CgogICAgdmFyIGRhdGEgPSAkKHRoaXMpLmRhdGEoKS56b29tOwogICAgICAgIAogICAgaWYgKGRhdGEuZHJhZ2dpbmdDdXIpIHsKCiAgICAgIGRhdGEuZHJhZ2dpbmcgPSB0cnVlOwoKICAgICAgdmFyIGN1ciA9ICgkLmlzVG91Y2gpID8KICAgICAgICBwb2ludDJEKAogICAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VYLAogICAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VZCiAgICAgICAgKQogICAgICAgIDoKICAgICAgICBwb2ludDJEKGV2ZW50LnBhZ2VYLCBldmVudC5wYWdlWSksCiAgICAgICAgbW90aW9uID0gcG9pbnQyRCgKICAgICAgICAgIGN1ci54LSBkYXRhLmRyYWdnaW5nQ3VyLngsCiAgICAgICAgICBjdXIueS1kYXRhLmRyYWdnaW5nQ3VyLnkKICAgICAgICApOwoKICAgICAgJCh0aGlzKS56b29tKCdzY3JvbGwnLAogICAgICAgIHBvaW50MkQoCiAgICAgICAgICBkYXRhLnNjcm9sbFBvcy54LW1vdGlvbi54LAogICAgICAgICAgZGF0YS5zY3JvbGxQb3MueS1tb3Rpb24ueQogICAgICAgICksIHRydWUKICAgICAgKTsKCiAgICAgIGRhdGEuZHJhZ2dpbmdDdXIgPSBjdXI7CgogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogIH0sCgogIF9lTW91c2VVcDogZnVuY3Rpb24oZXZlbnQpIHsKCiAgICB2YXIgZGF0YSA9ICQodGhpcykuZGF0YSgpLnpvb207CgogICAgaWYgKGRhdGEuZHJhZ2dpbmcpIHsKICAgICAgJCh0aGlzKS56b29tKCdzY3JvbGwnLCBkYXRhLnNjcm9sbFBvcyk7CiAgICB9CgogICAgZGF0YS5kcmFnZ2luZ0N1ciA9IG51bGw7CgogICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgZGF0YS5kcmFnZ2luZyA9IGZhbHNlOwogICAgfSwgMSk7CgogIH0sCgogIF9lTW91c2VXaGVlbDogZnVuY3Rpb24oZXZlbnQsIGRlbHRhLCBkZWx0YVgsIGRlbHRhWSkgewogICAgCiAgICB2YXIgZGF0YSA9ICQodGhpcykuZGF0YSgpLnpvb20sCiAgICAgIGN1ciA9IHBvaW50MkQoCiAgICAgICAgZGF0YS5zY3JvbGxQb3MueCArIGRlbHRhWCoxMCwKICAgICAgICBkYXRhLnNjcm9sbFBvcy55IC0gZGVsdGFZKjEwCiAgICAgICk7CiAgICAKICAgICQodGhpcykuem9vbSgnc2Nyb2xsJywgY3VyLCBmYWxzZSwgdHJ1ZSk7CiAgICAKICB9LAoKICBfZVRvdWNoU3RhcnQ6IGZ1bmN0aW9uKGV2ZW50LCBwYWdlKSB7CgogICAgdmFyIGRhdGEgPSAkKHRoaXMpLmRhdGEoKS56b29tLAogICAgICBmbGlwID0gZGF0YS5vcHRzLmZsaXBib29rLAogICAgICBmaW5nZXIgPSBwb2ludDJEKAogICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWCwKICAgICAgICBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF0ucGFnZVkKICAgICAgKTsKCiAgICBkYXRhLnRvdWNoID0ge307CiAgICBkYXRhLnRvdWNoLmluaXRpYWwgPSBmaW5nZXI7CiAgICBkYXRhLnRvdWNoLmxhc3QgPSBmaW5nZXI7CiAgICBkYXRhLnRvdWNoLnRpbWVzdGFtcCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiAgICBkYXRhLnRvdWNoLnNwZWVkID0gcG9pbnQyRCgwLCAwKTsKCiAgfSwKCiAgX2VUb3VjaE1vdmU6IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAKICAgIHZhciBkYXRhID0gJCh0aGlzKS5kYXRhKCkuem9vbSwKICAgICAgem9vbSA9ICQodGhpcykuem9vbSgndmFsdWUnKSwKICAgICAgZmxpcCA9IGRhdGEub3B0cy5mbGlwYm9vaywKICAgICAgdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCksCiAgICAgIGZpbmdlciA9IHBvaW50MkQoCiAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VYLAogICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWQogICAgICApOwogICAgCiAgICBpZiAoZGF0YS50b3VjaCAmJiB6b29tPT0xICYmICFmbGlwLmRhdGEoKS5tb3VzZUFjdGlvbikgewogICAgICBkYXRhLnRvdWNoLm1vdGlvbiA9IHBvaW50MkQoCiAgICAgICAgZmluZ2VyLngtZGF0YS50b3VjaC5sYXN0LngsCiAgICAgICAgZmluZ2VyLnktZGF0YS50b3VjaC5sYXN0LnkpOwoKICAgIAogICAgICBkYXRhLnRvdWNoLnNwZWVkLnggPSAoZGF0YS50b3VjaC5zcGVlZC54PT09MCkgPwogICAgICAgIGRhdGEudG91Y2gubW90aW9uLnggLyAodGltZS1kYXRhLnRvdWNoLnRpbWVzdGFtcCkgOgogICAgICAgIChkYXRhLnRvdWNoLnNwZWVkLnggKyAoZGF0YS50b3VjaC5tb3Rpb24ueCAvICh0aW1lLWRhdGEudG91Y2gudGltZXN0YW1wKSkpLzI7CgogICAgICBkYXRhLnRvdWNoLmxhc3QgPSBmaW5nZXI7CiAgICAgIGRhdGEudG91Y2gudGltZXN0YW1wID0gdGltZTsKICAgIH0KCiAgfSwKCiAgX2VUb3VjaEVuZDogZnVuY3Rpb24oZXZlbnQpIHsKCiAgICB2YXIgZGF0YSA9ICQodGhpcykuZGF0YSgpLnpvb207CgogICAgaWYgKGRhdGEudG91Y2ggJiYgJCh0aGlzKS56b29tKCd2YWx1ZScpPT0xKSB7CgogICAgICB2YXIgeSA9IE1hdGguYWJzKGRhdGEudG91Y2guaW5pdGlhbC55IC0gZGF0YS50b3VjaC5sYXN0LnkpOwoKICAgICAgaWYgKHk8NTAgJiYgKGRhdGEudG91Y2guc3BlZWQueDwtMSB8fCBkYXRhLnRvdWNoLmxhc3QueC1kYXRhLnRvdWNoLmluaXRpYWwueDwtMTAwKSkgewogICAgICAgIAogICAgICAgIHRoaXMudHJpZ2dlcignem9vbS5zd2lwZUxlZnQnKTsKCiAgICAgIH0gZWxzZSBpZih5PDUwICYmIChkYXRhLnRvdWNoLnNwZWVkLng+MSB8fCBkYXRhLnRvdWNoLmxhc3QueC1kYXRhLnRvdWNoLmluaXRpYWwueD4xMDApKXsKICAgICAgICAKICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb20uc3dpcGVSaWdodCcpOwoKICAgICAgfQoKICAgIH0KICB9LAoKICBfZURlc3Ryb3lpbmc6IGZ1bmN0aW9uKCkgewoKICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2ssCiAgICAgIGV2ZW50cyA9IFsKICAgICAgICAndGFwJywKICAgICAgICAnZG91YmxlVGFwJywKICAgICAgICAncmVzaXplJywKICAgICAgICAnem9vbUluJywKICAgICAgICAnem9vbU91dCcsCiAgICAgICAgJ3N3aXBlTGVmdCcsCiAgICAgICAgJ3N3aXBlUmlnaHQnCiAgICAgIF07CgogICAgdGhpcy56b29tKCd6b29tT3V0JywgMCk7CgogICAgJC5lYWNoKGV2ZW50cywgZnVuY3Rpb24oaW5kZXgsIGV2ZW50TmFtZSkgewogICAgICB0aGF0LnVuYmluZCgnem9vbS4nICsgZXZlbnROYW1lKTsKICAgIH0pOwogICAgCiAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gZGF0YS5mbGlwYm9va0V2ZW50cykgewogICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEuZmxpcGJvb2tFdmVudHMsIGV2ZW50TmFtZSkpIHsKICAgICAgICBmbGlwLnVuYmluZChldmVudE5hbWUsIGRhdGEuZmxpcGJvb2tFdmVudHNbZXZlbnROYW1lXSk7CiAgICAgIH0KICAgIH0KCiAgICBmbGlwLnVuYmluZCgndG91Y2hzdGFydCcsIGRhdGEuZXZlbnRUb3VjaFN0YXJ0ICkuCiAgICAgIHVuYmluZCgndG91Y2htb3ZlJywgZGF0YS5ldmVudFRvdWNoTW92ZSkuCiAgICAgIHVuYmluZCgndG91Y2hlbmQnLCBkYXRhLmV2ZW50VG91Y2hFbmQpOwogICAgICAgIAogICAgdGhpcy51bmJpbmQoJ3RvdWNoc3RhcnQnLCB6b29tTWV0aG9kcy5fdGFwKS4KICAgICAgdW5iaW5kKCdjbGljaycsIHpvb21NZXRob2RzLl90YXApOwoKICAgIGRhdGEgPSBudWxsOwogICAgdGhpcy5kYXRhKCkuem9vbSA9IG51bGw7CgogIH0KfTsKCmZ1bmN0aW9uIGlzUGFnZShlbGVtZW50LCBsYXN0KSB7CgogIGlmIChlbGVtZW50WzBdPT1sYXN0WzBdKQogICAgcmV0dXJuIGZhbHNlOwoKICBpZiAoZWxlbWVudC5hdHRyKCdwYWdlJykpCiAgICByZXR1cm4gdHJ1ZTsKICAKICByZXR1cm4gKGVsZW1lbnQucGFyZW50KClbMF0pID8KICAgIGlzUGFnZShlbGVtZW50LnBhcmVudCgpLCBsYXN0KQogICAgOgogIGZhbHNlOwoKfQoKZnVuY3Rpb24gZXJyb3IobWVzc2FnZSkgewoKICBmdW5jdGlvbiBUdXJuSnNFcnJvcihtZXNzYWdlKSB7CiAgICB0aGlzLm5hbWUgPSAiVHVybkpzRXJyb3IiOwogICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKICB9CgogIFR1cm5Kc0Vycm9yLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOwogIFR1cm5Kc0Vycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFR1cm5Kc0Vycm9yOwogIHJldHVybiBuZXcgVHVybkpzRXJyb3IobWVzc2FnZSk7Cgp9CgpmdW5jdGlvbiB0cmFuc2xhdGUoeCwgeSwgdXNlM2QpIHsKICAKICByZXR1cm4gKGhhczNkICYmIHVzZTNkKSA/ICcgdHJhbnNsYXRlM2QoJyArIHggKyAncHgsJyArIHkgKyAncHgsIDBweCkgJwogIDogJyB0cmFuc2xhdGUoJyArIHggKyAncHgsICcgKyB5ICsgJ3B4KSAnOwoKfQoKZnVuY3Rpb24gc2NhbGUodiwgdXNlM2QpIHsKICAKICByZXR1cm4gKGhhczNkICYmIHVzZTNkKSA/ICcgc2NhbGUzZCgnICsgdiArICcsICcgKyB2ICsgJywgMSkgJwogIDogJyBzY2FsZSgnICsgdiArICcpICc7Cgp9CgpmdW5jdGlvbiBwb2ludDJEKHgsIHkpIHsKICAKICByZXR1cm4ge3g6IHgsIHk6IHl9OwoKfQoKZnVuY3Rpb24gYmluZChmdW5jLCBjb250ZXh0KSB7CgogIHJldHVybiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7CiAgfTsKCn0KCiQuZXh0ZW5kKCQuZm4sIHsKICB6b29tOiBmdW5jdGlvbigpIHsKICAgIAogICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7CgogICAgaWYgKCFhcmdzWzBdIHx8IHR5cGVvZihhcmdzWzBdKT09J29iamVjdCcpCiAgICAgIHJldHVybiB6b29tTWV0aG9kcy5pbml0LmFwcGx5KCQodGhpc1swXSksIGFyZ3MpOwogICAgZWxzZSBpZiAoem9vbU1ldGhvZHNbYXJnc1swXV0pCiAgICAgIHJldHVybiB6b29tTWV0aG9kc1thcmdzWzBdXS5hcHBseSgkKHRoaXNbMF0pLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzLCAxKSk7CiAgICBlbHNlCiAgICAgIHRocm93IGVycm9yKGFyZ3NbMF0gKyAnIGlzIG5vdCBhIG1ldGhvZCcpOwoKICB9Cn0pOwoKfSkoalF1ZXJ5KTsK'></script>
	<script id="fb_html_magazine_js_magazine_js" src='data:/text/plain;base64,LyohCiAqIFZ1ZS5qcyB2Mi41LjE3CiAqIChjKSAyMDE0LTIwMTggRXZhbiBZb3UKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgogKi8KIWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUodCk6ZS5WdWU9dCgpfSh0aGlzLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB5PU9iamVjdC5mcmVlemUoe30pO2Z1bmN0aW9uIE0oZSl7cmV0dXJuIG51bGw9PWV9ZnVuY3Rpb24gRChlKXtyZXR1cm4gbnVsbCE9ZX1mdW5jdGlvbiBTKGUpe3JldHVybiEwPT09ZX1mdW5jdGlvbiBUKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlfHwic3ltYm9sIj09dHlwZW9mIGV8fCJib29sZWFuIj09dHlwZW9mIGV9ZnVuY3Rpb24gUChlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZX12YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1yLmNhbGwoZSl9ZnVuY3Rpb24gaShlKXt2YXIgdD1wYXJzZUZsb2F0KFN0cmluZyhlKSk7cmV0dXJuIDA8PXQmJk1hdGguZmxvb3IodCk9PT10JiZpc0Zpbml0ZShlKX1mdW5jdGlvbiB0KGUpe3JldHVybiBudWxsPT1lPyIiOiJvYmplY3QiPT10eXBlb2YgZT9KU09OLnN0cmluZ2lmeShlLG51bGwsMik6U3RyaW5nKGUpfWZ1bmN0aW9uIEYoZSl7dmFyIHQ9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4odCk/ZTp0fWZ1bmN0aW9uIHMoZSx0KXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUuc3BsaXQoIiwiKSxpPTA7aTxyLmxlbmd0aDtpKyspbltyW2ldXT0hMDtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldfTpmdW5jdGlvbihlKXtyZXR1cm4gbltlXX19dmFyIGM9cygic2xvdCxjb21wb25lbnQiLCEwKSx1PXMoImtleSxyZWYsc2xvdCxzbG90LXNjb3BlLGlzIik7ZnVuY3Rpb24gZihlLHQpe2lmKGUubGVuZ3RoKXt2YXIgbj1lLmluZGV4T2YodCk7aWYoLTE8bilyZXR1cm4gZS5zcGxpY2UobiwxKX19dmFyIG49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBwKGUsdCl7cmV0dXJuIG4uY2FsbChlLHQpfWZ1bmN0aW9uIGUodCl7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV18fChuW2VdPXQoZSkpfX12YXIgbz0vLShcdykvZyxnPWUoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShvLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/dC50b1VwcGVyQ2FzZSgpOiIifSl9KSxkPWUoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX0pLGE9L1xCKFtBLVpdKS9nLF89ZShmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGEsIi0kMSIpLnRvTG93ZXJDYXNlKCl9KTt2YXIgdj1GdW5jdGlvbi5wcm90b3R5cGUuYmluZD9mdW5jdGlvbihlLHQpe3JldHVybiBlLmJpbmQodCl9OmZ1bmN0aW9uKG4scil7ZnVuY3Rpb24gZShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO3JldHVybiB0PzE8dD9uLmFwcGx5KHIsYXJndW1lbnRzKTpuLmNhbGwocixlKTpuLmNhbGwocil9cmV0dXJuIGUuX2xlbmd0aD1uLmxlbmd0aCxlfTtmdW5jdGlvbiBoKGUsdCl7dD10fHwwO2Zvcih2YXIgbj1lLmxlbmd0aC10LHI9bmV3IEFycmF5KG4pO24tLTspcltuXT1lW24rdF07cmV0dXJuIHJ9ZnVuY3Rpb24gbShlLHQpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBiKGUpe2Zvcih2YXIgdD17fSxuPTA7bjxlLmxlbmd0aDtuKyspZVtuXSYmbSh0LGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uICQoZSx0LG4pe312YXIgTz1mdW5jdGlvbihlLHQsbil7cmV0dXJuITF9LHc9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9O2Z1bmN0aW9uIEModCxuKXtpZih0PT09bilyZXR1cm4hMDt2YXIgZT1QKHQpLHI9UChuKTtpZighZXx8IXIpcmV0dXJuIWUmJiFyJiZTdHJpbmcodCk9PT1TdHJpbmcobik7dHJ5e3ZhciBpPUFycmF5LmlzQXJyYXkodCksbz1BcnJheS5pc0FycmF5KG4pO2lmKGkmJm8pcmV0dXJuIHQubGVuZ3RoPT09bi5sZW5ndGgmJnQuZXZlcnkoZnVuY3Rpb24oZSx0KXtyZXR1cm4gQyhlLG5bdF0pfSk7aWYoaXx8bylyZXR1cm4hMTt2YXIgYT1PYmplY3Qua2V5cyh0KSxzPU9iamVjdC5rZXlzKG4pO3JldHVybiBhLmxlbmd0aD09PXMubGVuZ3RoJiZhLmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiBDKHRbZV0sbltlXSl9KX1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24geChlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKEMoZVtuXSx0KSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBSKGUpe3ZhciB0PSExO3JldHVybiBmdW5jdGlvbigpe3R8fCh0PSEwLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19dmFyIEU9ImRhdGEtc2VydmVyLXJlbmRlcmVkIixrPVsiY29tcG9uZW50IiwiZGlyZWN0aXZlIiwiZmlsdGVyIl0sQT1bImJlZm9yZUNyZWF0ZSIsImNyZWF0ZWQiLCJiZWZvcmVNb3VudCIsIm1vdW50ZWQiLCJiZWZvcmVVcGRhdGUiLCJ1cGRhdGVkIiwiYmVmb3JlRGVzdHJveSIsImRlc3Ryb3llZCIsImFjdGl2YXRlZCIsImRlYWN0aXZhdGVkIiwiZXJyb3JDYXB0dXJlZCJdLGo9e29wdGlvbk1lcmdlU3RyYXRlZ2llczpPYmplY3QuY3JlYXRlKG51bGwpLHNpbGVudDohMSxwcm9kdWN0aW9uVGlwOiExLGRldnRvb2xzOiExLHBlcmZvcm1hbmNlOiExLGVycm9ySGFuZGxlcjpudWxsLHdhcm5IYW5kbGVyOm51bGwsaWdub3JlZEVsZW1lbnRzOltdLGtleUNvZGVzOk9iamVjdC5jcmVhdGUobnVsbCksaXNSZXNlcnZlZFRhZzpPLGlzUmVzZXJ2ZWRBdHRyOk8saXNVbmtub3duRWxlbWVudDpPLGdldFRhZ05hbWVzcGFjZTokLHBhcnNlUGxhdGZvcm1UYWdOYW1lOncsbXVzdFVzZVByb3A6TyxfbGlmZWN5Y2xlSG9va3M6QX07ZnVuY3Rpb24gTihlLHQsbixyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ISFyLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfXZhciBMPS9bXlx3LiRdLzt2YXIgSSxIPSJfX3Byb3RvX18iaW57fSxCPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LFU9InVuZGVmaW5lZCIhPXR5cGVvZiBXWEVudmlyb25tZW50JiYhIVdYRW52aXJvbm1lbnQucGxhdGZvcm0sVj1VJiZXWEVudmlyb25tZW50LnBsYXRmb3JtLnRvTG93ZXJDYXNlKCksej1CJiZ3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLEs9eiYmL21zaWV8dHJpZGVudC8udGVzdCh6KSxKPXomJjA8ei5pbmRleE9mKCJtc2llIDkuMCIpLHE9eiYmMDx6LmluZGV4T2YoImVkZ2UvIiksVz0oeiYmei5pbmRleE9mKCJhbmRyb2lkIikseiYmL2lwaG9uZXxpcGFkfGlwb2R8aW9zLy50ZXN0KHopfHwiaW9zIj09PVYpLEc9KHomJi9jaHJvbWVcL1xkKy8udGVzdCh6KSx7fS53YXRjaCksWj0hMTtpZihCKXRyeXt2YXIgWD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoWCwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe1o9ITB9fSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QtcGFzc2l2ZSIsbnVsbCxYKX1jYXRjaChlKXt9dmFyIFk9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09SSYmKEk9IUImJiFVJiYidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmInNlcnZlciI9PT1nbG9iYWwucHJvY2Vzcy5lbnYuVlVFX0VOViksSX0sUT1CJiZ3aW5kb3cuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztmdW5jdGlvbiBlZShlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmL25hdGl2ZSBjb2RlLy50ZXN0KGUudG9TdHJpbmcoKSl9dmFyIHRlLG5lPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlZShTeW1ib2wpJiYidW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJmVlKFJlZmxlY3Qub3duS2V5cyk7dGU9InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQmJmVlKFNldCk/U2V0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9cmV0dXJuIGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4hMD09PXRoaXMuc2V0W2VdfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5zZXRbZV09ITB9LGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zZXQ9T2JqZWN0LmNyZWF0ZShudWxsKX0sZX0oKTt2YXIgcmU9JCxpZT0wLG9lPWZ1bmN0aW9uKCl7dGhpcy5pZD1pZSsrLHRoaXMuc3Vicz1bXX07b2UucHJvdG90eXBlLmFkZFN1Yj1mdW5jdGlvbihlKXt0aGlzLnN1YnMucHVzaChlKX0sb2UucHJvdG90eXBlLnJlbW92ZVN1Yj1mdW5jdGlvbihlKXtmKHRoaXMuc3VicyxlKX0sb2UucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe29lLnRhcmdldCYmb2UudGFyZ2V0LmFkZERlcCh0aGlzKX0sb2UucHJvdG90eXBlLm5vdGlmeT1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnN1YnMuc2xpY2UoKSx0PTAsbj1lLmxlbmd0aDt0PG47dCsrKWVbdF0udXBkYXRlKCl9LG9lLnRhcmdldD1udWxsO3ZhciBhZT1bXTtmdW5jdGlvbiBzZShlKXtvZS50YXJnZXQmJmFlLnB1c2gob2UudGFyZ2V0KSxvZS50YXJnZXQ9ZX1mdW5jdGlvbiBjZSgpe29lLnRhcmdldD1hZS5wb3AoKX12YXIgbGU9ZnVuY3Rpb24oZSx0LG4scixpLG8sYSxzKXt0aGlzLnRhZz1lLHRoaXMuZGF0YT10LHRoaXMuY2hpbGRyZW49bix0aGlzLnRleHQ9cix0aGlzLmVsbT1pLHRoaXMubnM9dm9pZCAwLHRoaXMuY29udGV4dD1vLHRoaXMuZm5Db250ZXh0PXZvaWQgMCx0aGlzLmZuT3B0aW9ucz12b2lkIDAsdGhpcy5mblNjb3BlSWQ9dm9pZCAwLHRoaXMua2V5PXQmJnQua2V5LHRoaXMuY29tcG9uZW50T3B0aW9ucz1hLHRoaXMuY29tcG9uZW50SW5zdGFuY2U9dm9pZCAwLHRoaXMucGFyZW50PXZvaWQgMCx0aGlzLnJhdz0hMSx0aGlzLmlzU3RhdGljPSExLHRoaXMuaXNSb290SW5zZXJ0PSEwLHRoaXMuaXNDb21tZW50PSExLHRoaXMuaXNDbG9uZWQ9ITEsdGhpcy5pc09uY2U9ITEsdGhpcy5hc3luY0ZhY3Rvcnk9cyx0aGlzLmFzeW5jTWV0YT12b2lkIDAsdGhpcy5pc0FzeW5jUGxhY2Vob2xkZXI9ITF9LHVlPXtjaGlsZDp7Y29uZmlndXJhYmxlOiEwfX07dWUuY2hpbGQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2V9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGxlLnByb3RvdHlwZSx1ZSk7dmFyIGZlPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSIiKTt2YXIgdD1uZXcgbGU7cmV0dXJuIHQudGV4dD1lLHQuaXNDb21tZW50PSEwLHR9O2Z1bmN0aW9uIHBlKGUpe3JldHVybiBuZXcgbGUodm9pZCAwLHZvaWQgMCx2b2lkIDAsU3RyaW5nKGUpKX1mdW5jdGlvbiBkZShlKXt2YXIgdD1uZXcgbGUoZS50YWcsZS5kYXRhLGUuY2hpbGRyZW4sZS50ZXh0LGUuZWxtLGUuY29udGV4dCxlLmNvbXBvbmVudE9wdGlvbnMsZS5hc3luY0ZhY3RvcnkpO3JldHVybiB0Lm5zPWUubnMsdC5pc1N0YXRpYz1lLmlzU3RhdGljLHQua2V5PWUua2V5LHQuaXNDb21tZW50PWUuaXNDb21tZW50LHQuZm5Db250ZXh0PWUuZm5Db250ZXh0LHQuZm5PcHRpb25zPWUuZm5PcHRpb25zLHQuZm5TY29wZUlkPWUuZm5TY29wZUlkLHQuaXNDbG9uZWQ9ITAsdH12YXIgdmU9QXJyYXkucHJvdG90eXBlLGhlPU9iamVjdC5jcmVhdGUodmUpO1sicHVzaCIsInBvcCIsInNoaWZ0IiwidW5zaGlmdCIsInNwbGljZSIsInNvcnQiLCJyZXZlcnNlIl0uZm9yRWFjaChmdW5jdGlvbihvKXt2YXIgYT12ZVtvXTtOKGhlLG8sZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD1hcmd1bWVudHMubGVuZ3RoO3QtLTspZVt0XT1hcmd1bWVudHNbdF07dmFyIG4scj1hLmFwcGx5KHRoaXMsZSksaT10aGlzLl9fb2JfXztzd2l0Y2gobyl7Y2FzZSJwdXNoIjpjYXNlInVuc2hpZnQiOm49ZTticmVhaztjYXNlInNwbGljZSI6bj1lLnNsaWNlKDIpfXJldHVybiBuJiZpLm9ic2VydmVBcnJheShuKSxpLmRlcC5ub3RpZnkoKSxyfSl9KTt2YXIgbWU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGUpLHllPSEwO2Z1bmN0aW9uIGdlKGUpe3llPWV9dmFyIF9lPWZ1bmN0aW9uKGUpeyh0aGlzLnZhbHVlPWUsdGhpcy5kZXA9bmV3IG9lLHRoaXMudm1Db3VudD0wLE4oZSwiX19vYl9fIix0aGlzKSxBcnJheS5pc0FycmF5KGUpKT8oKEg/YmU6JGUpKGUsaGUsbWUpLHRoaXMub2JzZXJ2ZUFycmF5KGUpKTp0aGlzLndhbGsoZSl9O2Z1bmN0aW9uIGJlKGUsdCxuKXtlLl9fcHJvdG9fXz10fWZ1bmN0aW9uICRlKGUsdCxuKXtmb3IodmFyIHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspe3ZhciBvPW5bcl07TihlLG8sdFtvXSl9fWZ1bmN0aW9uIHdlKGUsdCl7dmFyIG47aWYoUChlKSYmIShlIGluc3RhbmNlb2YgbGUpKXJldHVybiBwKGUsIl9fb2JfXyIpJiZlLl9fb2JfXyBpbnN0YW5jZW9mIF9lP249ZS5fX29iX186eWUmJiFZKCkmJihBcnJheS5pc0FycmF5KGUpfHxsKGUpKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmIWUuX2lzVnVlJiYobj1uZXcgX2UoZSkpLHQmJm4mJm4udm1Db3VudCsrLG59ZnVuY3Rpb24gQ2UobixlLHIsdCxpKXt2YXIgbz1uZXcgb2UsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSk7aWYoIWF8fCExIT09YS5jb25maWd1cmFibGUpe3ZhciBzPWEmJmEuZ2V0O3N8fDIhPT1hcmd1bWVudHMubGVuZ3RofHwocj1uW2VdKTt2YXIgYz1hJiZhLnNldCxsPSFpJiZ3ZShyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkobixlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIgZT1zP3MuY2FsbChuKTpyO3JldHVybiBvZS50YXJnZXQmJihvLmRlcGVuZCgpLGwmJihsLmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KGUpJiZmdW5jdGlvbiBlKHQpe2Zvcih2YXIgbj12b2lkIDAscj0wLGk9dC5sZW5ndGg7cjxpO3IrKykobj10W3JdKSYmbi5fX29iX18mJm4uX19vYl9fLmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KG4pJiZlKG4pfShlKSkpLGV9LHNldDpmdW5jdGlvbihlKXt2YXIgdD1zP3MuY2FsbChuKTpyO2U9PT10fHxlIT1lJiZ0IT10fHwoYz9jLmNhbGwobixlKTpyPWUsbD0haSYmd2UoZSksby5ub3RpZnkoKSl9fSl9fWZ1bmN0aW9uIHhlKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KGUpJiZpKHQpKXJldHVybiBlLmxlbmd0aD1NYXRoLm1heChlLmxlbmd0aCx0KSxlLnNwbGljZSh0LDEsbiksbjtpZih0IGluIGUmJiEodCBpbiBPYmplY3QucHJvdG90eXBlKSlyZXR1cm4gZVt0XT1uO3ZhciByPWUuX19vYl9fO3JldHVybiBlLl9pc1Z1ZXx8ciYmci52bUNvdW50P246cj8oQ2Uoci52YWx1ZSx0LG4pLHIuZGVwLm5vdGlmeSgpLG4pOmVbdF09bn1mdW5jdGlvbiBrZShlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkmJmkodCkpZS5zcGxpY2UodCwxKTtlbHNle3ZhciBuPWUuX19vYl9fO2UuX2lzVnVlfHxuJiZuLnZtQ291bnR8fHAoZSx0KSYmKGRlbGV0ZSBlW3RdLG4mJm4uZGVwLm5vdGlmeSgpKX19X2UucHJvdG90eXBlLndhbGs9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PU9iamVjdC5rZXlzKGUpLG49MDtuPHQubGVuZ3RoO24rKylDZShlLHRbbl0pfSxfZS5wcm90b3R5cGUub2JzZXJ2ZUFycmF5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl3ZShlW3RdKX07dmFyIEFlPWoub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO2Z1bmN0aW9uIE9lKGUsdCl7aWYoIXQpcmV0dXJuIGU7Zm9yKHZhciBuLHIsaSxvPU9iamVjdC5rZXlzKHQpLGE9MDthPG8ubGVuZ3RoO2ErKylyPWVbbj1vW2FdXSxpPXRbbl0scChlLG4pP2wocikmJmwoaSkmJk9lKHIsaSk6eGUoZSxuLGkpO3JldHVybiBlfWZ1bmN0aW9uIFNlKG4scixpKXtyZXR1cm4gaT9mdW5jdGlvbigpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiByP3IuY2FsbChpLGkpOnIsdD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmNhbGwoaSxpKTpuO3JldHVybiBlP09lKGUsdCk6dH06cj9uP2Z1bmN0aW9uKCl7cmV0dXJuIE9lKCJmdW5jdGlvbiI9PXR5cGVvZiByP3IuY2FsbCh0aGlzLHRoaXMpOnIsImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5jYWxsKHRoaXMsdGhpcyk6bil9OnI6bn1mdW5jdGlvbiBUZShlLHQpe3JldHVybiB0P2U/ZS5jb25jYXQodCk6QXJyYXkuaXNBcnJheSh0KT90Olt0XTplfWZ1bmN0aW9uIEVlKGUsdCxuLHIpe3ZhciBpPU9iamVjdC5jcmVhdGUoZXx8bnVsbCk7cmV0dXJuIHQ/bShpLHQpOml9QWUuZGF0YT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/U2UoZSx0LG4pOnQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6U2UoZSx0KX0sQS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0FlW2VdPVRlfSksay5mb3JFYWNoKGZ1bmN0aW9uKGUpe0FlW2UrInMiXT1FZX0pLEFlLndhdGNoPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9PT1HJiYoZT12b2lkIDApLHQ9PT1HJiYodD12b2lkIDApLCF0KXJldHVybiBPYmplY3QuY3JlYXRlKGV8fG51bGwpO2lmKCFlKXJldHVybiB0O3ZhciBpPXt9O2Zvcih2YXIgbyBpbiBtKGksZSksdCl7dmFyIGE9aVtvXSxzPXRbb107YSYmIUFycmF5LmlzQXJyYXkoYSkmJihhPVthXSksaVtvXT1hP2EuY29uY2F0KHMpOkFycmF5LmlzQXJyYXkocyk/czpbc119cmV0dXJuIGl9LEFlLnByb3BzPUFlLm1ldGhvZHM9QWUuaW5qZWN0PUFlLmNvbXB1dGVkPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFlKXJldHVybiB0O3ZhciBpPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIG0oaSxlKSx0JiZtKGksdCksaX0sQWUucHJvdmlkZT1TZTt2YXIgamU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD9lOnR9O2Z1bmN0aW9uIE5lKG4scixpKXsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHI9ci5vcHRpb25zKSxmdW5jdGlvbihlLHQpe3ZhciBuPWUucHJvcHM7aWYobil7dmFyIHIsaSxvPXt9O2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHI9bi5sZW5ndGg7ci0tOykic3RyaW5nIj09dHlwZW9mKGk9bltyXSkmJihvW2coaSldPXt0eXBlOm51bGx9KTtlbHNlIGlmKGwobikpZm9yKHZhciBhIGluIG4paT1uW2FdLG9bZyhhKV09bChpKT9pOnt0eXBlOml9O2UucHJvcHM9b319KHIpLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pbmplY3Q7aWYobil7dmFyIHI9ZS5pbmplY3Q9e307aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKylyW25baV1dPXtmcm9tOm5baV19O2Vsc2UgaWYobChuKSlmb3IodmFyIG8gaW4gbil7dmFyIGE9bltvXTtyW29dPWwoYSk/bSh7ZnJvbTpvfSxhKTp7ZnJvbTphfX19fShyKSxmdW5jdGlvbihlKXt2YXIgdD1lLmRpcmVjdGl2ZXM7aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHRbbl09e2JpbmQ6cix1cGRhdGU6cn0pfX0ocik7dmFyIGU9ci5leHRlbmRzO2lmKGUmJihuPU5lKG4sZSxpKSksci5taXhpbnMpZm9yKHZhciB0PTAsbz1yLm1peGlucy5sZW5ndGg7dDxvO3QrKyluPU5lKG4sci5taXhpbnNbdF0saSk7dmFyIGEscz17fTtmb3IoYSBpbiBuKWMoYSk7Zm9yKGEgaW4gcilwKG4sYSl8fGMoYSk7ZnVuY3Rpb24gYyhlKXt2YXIgdD1BZVtlXXx8amU7c1tlXT10KG5bZV0scltlXSxpLGUpfXJldHVybiBzfWZ1bmN0aW9uIExlKGUsdCxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7dmFyIGk9ZVt0XTtpZihwKGksbikpcmV0dXJuIGlbbl07dmFyIG89ZyhuKTtpZihwKGksbykpcmV0dXJuIGlbb107dmFyIGE9ZChvKTtyZXR1cm4gcChpLGEpP2lbYV06aVtuXXx8aVtvXXx8aVthXX19ZnVuY3Rpb24gSWUoZSx0LG4scil7dmFyIGk9dFtlXSxvPSFwKG4sZSksYT1uW2VdLHM9UGUoQm9vbGVhbixpLnR5cGUpO2lmKC0xPHMpaWYobyYmIXAoaSwiZGVmYXVsdCIpKWE9ITE7ZWxzZSBpZigiIj09PWF8fGE9PT1fKGUpKXt2YXIgYz1QZShTdHJpbmcsaS50eXBlKTsoYzwwfHxzPGMpJiYoYT0hMCl9aWYodm9pZCAwPT09YSl7YT1mdW5jdGlvbihlLHQsbil7aWYoIXAodCwiZGVmYXVsdCIpKXJldHVybjt2YXIgcj10LmRlZmF1bHQ7aWYoZSYmZS4kb3B0aW9ucy5wcm9wc0RhdGEmJnZvaWQgMD09PWUuJG9wdGlvbnMucHJvcHNEYXRhW25dJiZ2b2lkIDAhPT1lLl9wcm9wc1tuXSlyZXR1cm4gZS5fcHJvcHNbbl07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHImJiJGdW5jdGlvbiIhPT1NZSh0LnR5cGUpP3IuY2FsbChlKTpyfShyLGksZSk7dmFyIGw9eWU7Z2UoITApLHdlKGEpLGdlKGwpfXJldHVybiBhfWZ1bmN0aW9uIE1lKGUpe3ZhciB0PWUmJmUudG9TdHJpbmcoKS5tYXRjaCgvXlxzKmZ1bmN0aW9uIChcdyspLyk7cmV0dXJuIHQ/dFsxXToiIn1mdW5jdGlvbiBEZShlLHQpe3JldHVybiBNZShlKT09PU1lKHQpfWZ1bmN0aW9uIFBlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIERlKHQsZSk/MDotMTtmb3IodmFyIG49MCxyPXQubGVuZ3RoO248cjtuKyspaWYoRGUodFtuXSxlKSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBGZShlLHQsbil7aWYodClmb3IodmFyIHI9dDtyPXIuJHBhcmVudDspe3ZhciBpPXIuJG9wdGlvbnMuZXJyb3JDYXB0dXJlZDtpZihpKWZvcih2YXIgbz0wO288aS5sZW5ndGg7bysrKXRyeXtpZighMT09PWlbb10uY2FsbChyLGUsdCxuKSlyZXR1cm59Y2F0Y2goZSl7UmUoZSxyLCJlcnJvckNhcHR1cmVkIGhvb2siKX19UmUoZSx0LG4pfWZ1bmN0aW9uIFJlKGUsdCxuKXtpZihqLmVycm9ySGFuZGxlcil0cnl7cmV0dXJuIGouZXJyb3JIYW5kbGVyLmNhbGwobnVsbCxlLHQsbil9Y2F0Y2goZSl7SGUoZSxudWxsLCJjb25maWcuZXJyb3JIYW5kbGVyIil9SGUoZSx0LG4pfWZ1bmN0aW9uIEhlKGUsdCxuKXtpZighQiYmIVV8fCJ1bmRlZmluZWQiPT10eXBlb2YgY29uc29sZSl0aHJvdyBlO2NvbnNvbGUuZXJyb3IoZSl9dmFyIEJlLFVlLFZlPVtdLHplPSExO2Z1bmN0aW9uIEtlKCl7emU9ITE7Zm9yKHZhciBlPVZlLnNsaWNlKDApLHQ9VmUubGVuZ3RoPTA7dDxlLmxlbmd0aDt0KyspZVt0XSgpfXZhciBKZT0hMTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHNldEltbWVkaWF0ZSYmZWUoc2V0SW1tZWRpYXRlKSlVZT1mdW5jdGlvbigpe3NldEltbWVkaWF0ZShLZSl9O2Vsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBNZXNzYWdlQ2hhbm5lbHx8IWVlKE1lc3NhZ2VDaGFubmVsKSYmIltvYmplY3QgTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvcl0iIT09TWVzc2FnZUNoYW5uZWwudG9TdHJpbmcoKSlVZT1mdW5jdGlvbigpe3NldFRpbWVvdXQoS2UsMCl9O2Vsc2V7dmFyIHFlPW5ldyBNZXNzYWdlQ2hhbm5lbCxXZT1xZS5wb3J0MjtxZS5wb3J0MS5vbm1lc3NhZ2U9S2UsVWU9ZnVuY3Rpb24oKXtXZS5wb3N0TWVzc2FnZSgxKX19aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlJiZlZShQcm9taXNlKSl7dmFyIEdlPVByb21pc2UucmVzb2x2ZSgpO0JlPWZ1bmN0aW9uKCl7R2UudGhlbihLZSksVyYmc2V0VGltZW91dCgkKX19ZWxzZSBCZT1VZTtmdW5jdGlvbiBaZShlLHQpe3ZhciBuO2lmKFZlLnB1c2goZnVuY3Rpb24oKXtpZihlKXRyeXtlLmNhbGwodCl9Y2F0Y2goZSl7RmUoZSx0LCJuZXh0VGljayIpfWVsc2UgbiYmbih0KX0pLHplfHwoemU9ITAsSmU/VWUoKTpCZSgpKSwhZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlKXtuPWV9KX12YXIgWGU9bmV3IHRlO2Z1bmN0aW9uIFllKGUpeyFmdW5jdGlvbiBlKHQsbil7dmFyIHIsaTt2YXIgbz1BcnJheS5pc0FycmF5KHQpO2lmKCFvJiYhUCh0KXx8T2JqZWN0LmlzRnJvemVuKHQpfHx0IGluc3RhbmNlb2YgbGUpcmV0dXJuO2lmKHQuX19vYl9fKXt2YXIgYT10Ll9fb2JfXy5kZXAuaWQ7aWYobi5oYXMoYSkpcmV0dXJuO24uYWRkKGEpfWlmKG8pZm9yKHI9dC5sZW5ndGg7ci0tOyllKHRbcl0sbik7ZWxzZSBmb3IoaT1PYmplY3Qua2V5cyh0KSxyPWkubGVuZ3RoO3ItLTspZSh0W2lbcl1dLG4pfShlLFhlKSxYZS5jbGVhcigpfXZhciBRZSxldD1lKGZ1bmN0aW9uKGUpe3ZhciB0PSImIj09PWUuY2hhckF0KDApLG49In4iPT09KGU9dD9lLnNsaWNlKDEpOmUpLmNoYXJBdCgwKSxyPSIhIj09PShlPW4/ZS5zbGljZSgxKTplKS5jaGFyQXQoMCk7cmV0dXJue25hbWU6ZT1yP2Uuc2xpY2UoMSk6ZSxvbmNlOm4sY2FwdHVyZTpyLHBhc3NpdmU6dH19KTtmdW5jdGlvbiB0dChlKXtmdW5jdGlvbiBpKCl7dmFyIGU9YXJndW1lbnRzLHQ9aS5mbnM7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQuYXBwbHkobnVsbCxhcmd1bWVudHMpO2Zvcih2YXIgbj10LnNsaWNlKCkscj0wO3I8bi5sZW5ndGg7cisrKW5bcl0uYXBwbHkobnVsbCxlKX1yZXR1cm4gaS5mbnM9ZSxpfWZ1bmN0aW9uIG50KGUsdCxuLHIsaSl7dmFyIG8sYSxzLGM7Zm9yKG8gaW4gZSlhPWVbb10scz10W29dLGM9ZXQobyksTShhKXx8KE0ocyk/KE0oYS5mbnMpJiYoYT1lW29dPXR0KGEpKSxuKGMubmFtZSxhLGMub25jZSxjLmNhcHR1cmUsYy5wYXNzaXZlLGMucGFyYW1zKSk6YSE9PXMmJihzLmZucz1hLGVbb109cykpO2ZvcihvIGluIHQpTShlW29dKSYmcigoYz1ldChvKSkubmFtZSx0W29dLGMuY2FwdHVyZSl9ZnVuY3Rpb24gcnQoZSx0LG4pe3ZhciByO2UgaW5zdGFuY2VvZiBsZSYmKGU9ZS5kYXRhLmhvb2t8fChlLmRhdGEuaG9vaz17fSkpO3ZhciBpPWVbdF07ZnVuY3Rpb24gbygpe24uYXBwbHkodGhpcyxhcmd1bWVudHMpLGYoci5mbnMsbyl9TShpKT9yPXR0KFtvXSk6RChpLmZucykmJlMoaS5tZXJnZWQpPyhyPWkpLmZucy5wdXNoKG8pOnI9dHQoW2ksb10pLHIubWVyZ2VkPSEwLGVbdF09cn1mdW5jdGlvbiBpdChlLHQsbixyLGkpe2lmKEQodCkpe2lmKHAodCxuKSlyZXR1cm4gZVtuXT10W25dLGl8fGRlbGV0ZSB0W25dLCEwO2lmKHAodCxyKSlyZXR1cm4gZVtuXT10W3JdLGl8fGRlbGV0ZSB0W3JdLCEwfXJldHVybiExfWZ1bmN0aW9uIG90KGUpe3JldHVybiBUKGUpP1twZShlKV06QXJyYXkuaXNBcnJheShlKT9mdW5jdGlvbiBlKHQsbil7dmFyIHI9W107dmFyIGksbyxhLHM7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKylNKG89dFtpXSl8fCJib29sZWFuIj09dHlwZW9mIG98fChhPXIubGVuZ3RoLTEscz1yW2FdLEFycmF5LmlzQXJyYXkobyk/MDxvLmxlbmd0aCYmKGF0KChvPWUobywobnx8IiIpKyJfIitpKSlbMF0pJiZhdChzKSYmKHJbYV09cGUocy50ZXh0K29bMF0udGV4dCksby5zaGlmdCgpKSxyLnB1c2guYXBwbHkocixvKSk6VChvKT9hdChzKT9yW2FdPXBlKHMudGV4dCtvKToiIiE9PW8mJnIucHVzaChwZShvKSk6YXQobykmJmF0KHMpP3JbYV09cGUocy50ZXh0K28udGV4dCk6KFModC5faXNWTGlzdCkmJkQoby50YWcpJiZNKG8ua2V5KSYmRChuKSYmKG8ua2V5PSJfX3ZsaXN0IituKyJfIitpKyJfXyIpLHIucHVzaChvKSkpO3JldHVybiByfShlKTp2b2lkIDB9ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIEQoZSkmJkQoZS50ZXh0KSYmITE9PT1lLmlzQ29tbWVudH1mdW5jdGlvbiBzdChlLHQpe3JldHVybihlLl9fZXNNb2R1bGV8fG5lJiYiTW9kdWxlIj09PWVbU3ltYm9sLnRvU3RyaW5nVGFnXSkmJihlPWUuZGVmYXVsdCksUChlKT90LmV4dGVuZChlKTplfWZ1bmN0aW9uIGN0KGUpe3JldHVybiBlLmlzQ29tbWVudCYmZS5hc3luY0ZhY3Rvcnl9ZnVuY3Rpb24gbHQoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG49ZVt0XTtpZihEKG4pJiYoRChuLmNvbXBvbmVudE9wdGlvbnMpfHxjdChuKSkpcmV0dXJuIG59fWZ1bmN0aW9uIHV0KGUsdCxuKXtuP1FlLiRvbmNlKGUsdCk6UWUuJG9uKGUsdCl9ZnVuY3Rpb24gZnQoZSx0KXtRZS4kb2ZmKGUsdCl9ZnVuY3Rpb24gcHQoZSx0LG4pe1FlPWUsbnQodCxufHx7fSx1dCxmdCksUWU9dm9pZCAwfWZ1bmN0aW9uIGR0KGUsdCl7dmFyIG49e307aWYoIWUpcmV0dXJuIG47Zm9yKHZhciByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1lW3JdLGE9by5kYXRhO2lmKGEmJmEuYXR0cnMmJmEuYXR0cnMuc2xvdCYmZGVsZXRlIGEuYXR0cnMuc2xvdCxvLmNvbnRleHQhPT10JiZvLmZuQ29udGV4dCE9PXR8fCFhfHxudWxsPT1hLnNsb3QpKG4uZGVmYXVsdHx8KG4uZGVmYXVsdD1bXSkpLnB1c2gobyk7ZWxzZXt2YXIgcz1hLnNsb3QsYz1uW3NdfHwobltzXT1bXSk7InRlbXBsYXRlIj09PW8udGFnP2MucHVzaC5hcHBseShjLG8uY2hpbGRyZW58fFtdKTpjLnB1c2gobyl9fWZvcih2YXIgbCBpbiBuKW5bbF0uZXZlcnkodnQpJiZkZWxldGUgbltsXTtyZXR1cm4gbn1mdW5jdGlvbiB2dChlKXtyZXR1cm4gZS5pc0NvbW1lbnQmJiFlLmFzeW5jRmFjdG9yeXx8IiAiPT09ZS50ZXh0fWZ1bmN0aW9uIGh0KGUsdCl7dD10fHx7fTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylBcnJheS5pc0FycmF5KGVbbl0pP2h0KGVbbl0sdCk6dFtlW25dLmtleV09ZVtuXS5mbjtyZXR1cm4gdH12YXIgbXQ9bnVsbDtmdW5jdGlvbiB5dChlKXtmb3IoO2UmJihlPWUuJHBhcmVudCk7KWlmKGUuX2luYWN0aXZlKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGd0KGUsdCl7aWYodCl7aWYoZS5fZGlyZWN0SW5hY3RpdmU9ITEseXQoZSkpcmV0dXJufWVsc2UgaWYoZS5fZGlyZWN0SW5hY3RpdmUpcmV0dXJuO2lmKGUuX2luYWN0aXZlfHxudWxsPT09ZS5faW5hY3RpdmUpe2UuX2luYWN0aXZlPSExO2Zvcih2YXIgbj0wO248ZS4kY2hpbGRyZW4ubGVuZ3RoO24rKylndChlLiRjaGlsZHJlbltuXSk7X3QoZSwiYWN0aXZhdGVkIil9fWZ1bmN0aW9uIF90KHQsbil7c2UoKTt2YXIgZT10LiRvcHRpb25zW25dO2lmKGUpZm9yKHZhciByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXRyeXtlW3JdLmNhbGwodCl9Y2F0Y2goZSl7RmUoZSx0LG4rIiBob29rIil9dC5faGFzSG9va0V2ZW50JiZ0LiRlbWl0KCJob29rOiIrbiksY2UoKX12YXIgYnQ9W10sJHQ9W10sd3Q9e30sQ3Q9ITEseHQ9ITEsa3Q9MDtmdW5jdGlvbiBBdCgpe3ZhciBlLHQ7Zm9yKHh0PSEwLGJ0LnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pZC10LmlkfSksa3Q9MDtrdDxidC5sZW5ndGg7a3QrKyl0PShlPWJ0W2t0XSkuaWQsd3RbdF09bnVsbCxlLnJ1bigpO3ZhciBuPSR0LnNsaWNlKCkscj1idC5zbGljZSgpO2t0PWJ0Lmxlbmd0aD0kdC5sZW5ndGg9MCx3dD17fSxDdD14dD0hMSxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLl9pbmFjdGl2ZT0hMCxndChlW3RdLCEwKX0obiksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7Zm9yKDt0LS07KXt2YXIgbj1lW3RdLHI9bi52bTtyLl93YXRjaGVyPT09biYmci5faXNNb3VudGVkJiZfdChyLCJ1cGRhdGVkIil9fShyKSxRJiZqLmRldnRvb2xzJiZRLmVtaXQoImZsdXNoIil9dmFyIE90PTAsU3Q9ZnVuY3Rpb24oZSx0LG4scixpKXt0aGlzLnZtPWUsaSYmKGUuX3dhdGNoZXI9dGhpcyksZS5fd2F0Y2hlcnMucHVzaCh0aGlzKSxyPyh0aGlzLmRlZXA9ISFyLmRlZXAsdGhpcy51c2VyPSEhci51c2VyLHRoaXMubGF6eT0hIXIubGF6eSx0aGlzLnN5bmM9ISFyLnN5bmMpOnRoaXMuZGVlcD10aGlzLnVzZXI9dGhpcy5sYXp5PXRoaXMuc3luYz0hMSx0aGlzLmNiPW4sdGhpcy5pZD0rK090LHRoaXMuYWN0aXZlPSEwLHRoaXMuZGlydHk9dGhpcy5sYXp5LHRoaXMuZGVwcz1bXSx0aGlzLm5ld0RlcHM9W10sdGhpcy5kZXBJZHM9bmV3IHRlLHRoaXMubmV3RGVwSWRzPW5ldyB0ZSx0aGlzLmV4cHJlc3Npb249IiIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/dGhpcy5nZXR0ZXI9dDoodGhpcy5nZXR0ZXI9ZnVuY3Rpb24oZSl7aWYoIUwudGVzdChlKSl7dmFyIG49ZS5zcGxpdCgiLiIpO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PG4ubGVuZ3RoO3QrKyl7aWYoIWUpcmV0dXJuO2U9ZVtuW3RdXX1yZXR1cm4gZX19fSh0KSx0aGlzLmdldHRlcnx8KHRoaXMuZ2V0dGVyPWZ1bmN0aW9uKCl7fSkpLHRoaXMudmFsdWU9dGhpcy5sYXp5P3ZvaWQgMDp0aGlzLmdldCgpfTtTdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7dmFyIGU7c2UodGhpcyk7dmFyIHQ9dGhpcy52bTt0cnl7ZT10aGlzLmdldHRlci5jYWxsKHQsdCl9Y2F0Y2goZSl7aWYoIXRoaXMudXNlcil0aHJvdyBlO0ZlKGUsdCwnZ2V0dGVyIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWZpbmFsbHl7dGhpcy5kZWVwJiZZZShlKSxjZSgpLHRoaXMuY2xlYW51cERlcHMoKX1yZXR1cm4gZX0sU3QucHJvdG90eXBlLmFkZERlcD1mdW5jdGlvbihlKXt2YXIgdD1lLmlkO3RoaXMubmV3RGVwSWRzLmhhcyh0KXx8KHRoaXMubmV3RGVwSWRzLmFkZCh0KSx0aGlzLm5ld0RlcHMucHVzaChlKSx0aGlzLmRlcElkcy5oYXModCl8fGUuYWRkU3ViKHRoaXMpKX0sU3QucHJvdG90eXBlLmNsZWFudXBEZXBzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl7dmFyIHQ9dGhpcy5kZXBzW2VdO3RoaXMubmV3RGVwSWRzLmhhcyh0LmlkKXx8dC5yZW1vdmVTdWIodGhpcyl9dmFyIG49dGhpcy5kZXBJZHM7dGhpcy5kZXBJZHM9dGhpcy5uZXdEZXBJZHMsdGhpcy5uZXdEZXBJZHM9bix0aGlzLm5ld0RlcElkcy5jbGVhcigpLG49dGhpcy5kZXBzLHRoaXMuZGVwcz10aGlzLm5ld0RlcHMsdGhpcy5uZXdEZXBzPW4sdGhpcy5uZXdEZXBzLmxlbmd0aD0wfSxTdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5sYXp5P3RoaXMuZGlydHk9ITA6dGhpcy5zeW5jP3RoaXMucnVuKCk6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pZDtpZihudWxsPT13dFt0XSl7aWYod3RbdF09ITAseHQpe2Zvcih2YXIgbj1idC5sZW5ndGgtMTtrdDxuJiZidFtuXS5pZD5lLmlkOyluLS07YnQuc3BsaWNlKG4rMSwwLGUpfWVsc2UgYnQucHVzaChlKTtDdHx8KEN0PSEwLFplKEF0KSl9fSh0aGlzKX0sU3QucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt2YXIgZT10aGlzLmdldCgpO2lmKGUhPT10aGlzLnZhbHVlfHxQKGUpfHx0aGlzLmRlZXApe3ZhciB0PXRoaXMudmFsdWU7aWYodGhpcy52YWx1ZT1lLHRoaXMudXNlcil0cnl7dGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX1jYXRjaChlKXtGZShlLHRoaXMudm0sJ2NhbGxiYWNrIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWVsc2UgdGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX19fSxTdC5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPXRoaXMuZ2V0KCksdGhpcy5kaXJ0eT0hMX0sU3QucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmRlcHMubGVuZ3RoO2UtLTspdGhpcy5kZXBzW2VdLmRlcGVuZCgpfSxTdC5wcm90b3R5cGUudGVhcmRvd249ZnVuY3Rpb24oKXtpZih0aGlzLmFjdGl2ZSl7dGhpcy52bS5faXNCZWluZ0Rlc3Ryb3llZHx8Zih0aGlzLnZtLl93YXRjaGVycyx0aGlzKTtmb3IodmFyIGU9dGhpcy5kZXBzLmxlbmd0aDtlLS07KXRoaXMuZGVwc1tlXS5yZW1vdmVTdWIodGhpcyk7dGhpcy5hY3RpdmU9ITF9fTt2YXIgVHQ9e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDokLHNldDokfTtmdW5jdGlvbiBFdChlLHQsbil7VHQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbdF1bbl19LFR0LnNldD1mdW5jdGlvbihlKXt0aGlzW3RdW25dPWV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sVHQpfWZ1bmN0aW9uIGp0KGUpe2UuX3dhdGNoZXJzPVtdO3ZhciB0PWUuJG9wdGlvbnM7dC5wcm9wcyYmZnVuY3Rpb24obixyKXt2YXIgaT1uLiRvcHRpb25zLnByb3BzRGF0YXx8e30sbz1uLl9wcm9wcz17fSxhPW4uJG9wdGlvbnMuX3Byb3BLZXlzPVtdO24uJHBhcmVudCYmZ2UoITEpO3ZhciBlPWZ1bmN0aW9uKGUpe2EucHVzaChlKTt2YXIgdD1JZShlLHIsaSxuKTtDZShvLGUsdCksZSBpbiBufHxFdChuLCJfcHJvcHMiLGUpfTtmb3IodmFyIHQgaW4gcillKHQpO2dlKCEwKX0oZSx0LnByb3BzKSx0Lm1ldGhvZHMmJmZ1bmN0aW9uKGUsdCl7ZS4kb3B0aW9ucy5wcm9wcztmb3IodmFyIG4gaW4gdCllW25dPW51bGw9PXRbbl0/JDp2KHRbbl0sZSl9KGUsdC5tZXRob2RzKSx0LmRhdGE/ZnVuY3Rpb24oZSl7dmFyIHQ9ZS4kb3B0aW9ucy5kYXRhO2wodD1lLl9kYXRhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKGUsdCl7c2UoKTt0cnl7cmV0dXJuIGUuY2FsbCh0LHQpfWNhdGNoKGUpe3JldHVybiBGZShlLHQsImRhdGEoKSIpLHt9fWZpbmFsbHl7Y2UoKX19KHQsZSk6dHx8e30pfHwodD17fSk7dmFyIG49T2JqZWN0LmtleXModCkscj1lLiRvcHRpb25zLnByb3BzLGk9KGUuJG9wdGlvbnMubWV0aG9kcyxuLmxlbmd0aCk7Zm9yKDtpLS07KXt2YXIgbz1uW2ldO3ImJnAocixvKXx8KHZvaWQgMCwzNiE9PShhPShvKyIiKS5jaGFyQ29kZUF0KDApKSYmOTUhPT1hJiZFdChlLCJfZGF0YSIsbykpfXZhciBhO3dlKHQsITApfShlKTp3ZShlLl9kYXRhPXt9LCEwKSx0LmNvbXB1dGVkJiZmdW5jdGlvbihlLHQpe3ZhciBuPWUuX2NvbXB1dGVkV2F0Y2hlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSxyPVkoKTtmb3IodmFyIGkgaW4gdCl7dmFyIG89dFtpXSxhPSJmdW5jdGlvbiI9PXR5cGVvZiBvP286by5nZXQ7cnx8KG5baV09bmV3IFN0KGUsYXx8JCwkLE50KSksaSBpbiBlfHxMdChlLGksbyl9fShlLHQuY29tcHV0ZWQpLHQud2F0Y2gmJnQud2F0Y2ghPT1HJiZmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KXt2YXIgcj10W25dO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspTXQoZSxuLHJbaV0pO2Vsc2UgTXQoZSxuLHIpfX0oZSx0LndhdGNoKX12YXIgTnQ9e2xhenk6ITB9O2Z1bmN0aW9uIEx0KGUsdCxuKXt2YXIgcj0hWSgpOyJmdW5jdGlvbiI9PXR5cGVvZiBuPyhUdC5nZXQ9cj9JdCh0KTpuLFR0LnNldD0kKTooVHQuZ2V0PW4uZ2V0P3ImJiExIT09bi5jYWNoZT9JdCh0KTpuLmdldDokLFR0LnNldD1uLnNldD9uLnNldDokKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LFR0KX1mdW5jdGlvbiBJdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jb21wdXRlZFdhdGNoZXJzJiZ0aGlzLl9jb21wdXRlZFdhdGNoZXJzW3RdO2lmKGUpcmV0dXJuIGUuZGlydHkmJmUuZXZhbHVhdGUoKSxvZS50YXJnZXQmJmUuZGVwZW5kKCksZS52YWx1ZX19ZnVuY3Rpb24gTXQoZSx0LG4scil7cmV0dXJuIGwobikmJihuPShyPW4pLmhhbmRsZXIpLCJzdHJpbmciPT10eXBlb2YgbiYmKG49ZVtuXSksZS4kd2F0Y2godCxuLHIpfWZ1bmN0aW9uIER0KHQsZSl7aWYodCl7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1uZT9SZWZsZWN0Lm93bktleXModCkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pOk9iamVjdC5rZXlzKHQpLGk9MDtpPHIubGVuZ3RoO2krKyl7Zm9yKHZhciBvPXJbaV0sYT10W29dLmZyb20scz1lO3M7KXtpZihzLl9wcm92aWRlZCYmcChzLl9wcm92aWRlZCxhKSl7bltvXT1zLl9wcm92aWRlZFthXTticmVha31zPXMuJHBhcmVudH1pZighcyYmImRlZmF1bHQiaW4gdFtvXSl7dmFyIGM9dFtvXS5kZWZhdWx0O25bb109ImZ1bmN0aW9uIj09dHlwZW9mIGM/Yy5jYWxsKGUpOmN9fXJldHVybiBufX1mdW5jdGlvbiBQdChlLHQpe3ZhciBuLHIsaSxvLGE7aWYoQXJyYXkuaXNBcnJheShlKXx8InN0cmluZyI9PXR5cGVvZiBlKWZvcihuPW5ldyBBcnJheShlLmxlbmd0aCkscj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluW3JdPXQoZVtyXSxyKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSlmb3Iobj1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspbltyXT10KHIrMSxyKTtlbHNlIGlmKFAoZSkpZm9yKG89T2JqZWN0LmtleXMoZSksbj1uZXcgQXJyYXkoby5sZW5ndGgpLHI9MCxpPW8ubGVuZ3RoO3I8aTtyKyspYT1vW3JdLG5bcl09dChlW2FdLGEscik7cmV0dXJuIEQobikmJihuLl9pc1ZMaXN0PSEwKSxufWZ1bmN0aW9uIEZ0KGUsdCxuLHIpe3ZhciBpLG89dGhpcy4kc2NvcGVkU2xvdHNbZV07aWYobyluPW58fHt9LHImJihuPW0obSh7fSxyKSxuKSksaT1vKG4pfHx0O2Vsc2V7dmFyIGE9dGhpcy4kc2xvdHNbZV07YSYmKGEuX3JlbmRlcmVkPSEwKSxpPWF8fHR9dmFyIHM9biYmbi5zbG90O3JldHVybiBzP3RoaXMuJGNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIix7c2xvdDpzfSxpKTppfWZ1bmN0aW9uIFJ0KGUpe3JldHVybiBMZSh0aGlzLiRvcHRpb25zLCJmaWx0ZXJzIixlKXx8d31mdW5jdGlvbiBIdChlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpPy0xPT09ZS5pbmRleE9mKHQpOmUhPT10fWZ1bmN0aW9uIEJ0KGUsdCxuLHIsaSl7dmFyIG89ai5rZXlDb2Rlc1t0XXx8bjtyZXR1cm4gaSYmciYmIWoua2V5Q29kZXNbdF0/SHQoaSxyKTpvP0h0KG8sZSk6cj9fKHIpIT09dDp2b2lkIDB9ZnVuY3Rpb24gVXQobixyLGksbyxhKXtpZihpKWlmKFAoaSkpe3ZhciBzO0FycmF5LmlzQXJyYXkoaSkmJihpPWIoaSkpO3ZhciBlPWZ1bmN0aW9uKHQpe2lmKCJjbGFzcyI9PT10fHwic3R5bGUiPT09dHx8dSh0KSlzPW47ZWxzZXt2YXIgZT1uLmF0dHJzJiZuLmF0dHJzLnR5cGU7cz1vfHxqLm11c3RVc2VQcm9wKHIsZSx0KT9uLmRvbVByb3BzfHwobi5kb21Qcm9wcz17fSk6bi5hdHRyc3x8KG4uYXR0cnM9e30pfXQgaW4gc3x8KHNbdF09aVt0XSxhJiYoKG4ub258fChuLm9uPXt9KSlbInVwZGF0ZToiK3RdPWZ1bmN0aW9uKGUpe2lbdF09ZX0pKX07Zm9yKHZhciB0IGluIGkpZSh0KX1lbHNlO3JldHVybiBufWZ1bmN0aW9uIFZ0KGUsdCl7dmFyIG49dGhpcy5fc3RhdGljVHJlZXN8fCh0aGlzLl9zdGF0aWNUcmVlcz1bXSkscj1uW2VdO3JldHVybiByJiYhdHx8S3Qocj1uW2VdPXRoaXMuJG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zW2VdLmNhbGwodGhpcy5fcmVuZGVyUHJveHksbnVsbCx0aGlzKSwiX19zdGF0aWNfXyIrZSwhMSkscn1mdW5jdGlvbiB6dChlLHQsbil7cmV0dXJuIEt0KGUsIl9fb25jZV9fIit0KyhuPyJfIituOiIiKSwhMCksZX1mdW5jdGlvbiBLdChlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdJiYic3RyaW5nIiE9dHlwZW9mIGVbcl0mJkp0KGVbcl0sdCsiXyIrcixuKTtlbHNlIEp0KGUsdCxuKX1mdW5jdGlvbiBKdChlLHQsbil7ZS5pc1N0YXRpYz0hMCxlLmtleT10LGUuaXNPbmNlPW59ZnVuY3Rpb24gcXQoZSx0KXtpZih0KWlmKGwodCkpe3ZhciBuPWUub249ZS5vbj9tKHt9LGUub24pOnt9O2Zvcih2YXIgciBpbiB0KXt2YXIgaT1uW3JdLG89dFtyXTtuW3JdPWk/W10uY29uY2F0KGksbyk6b319ZWxzZTtyZXR1cm4gZX1mdW5jdGlvbiBXdChlKXtlLl9vPXp0LGUuX249RixlLl9zPXQsZS5fbD1QdCxlLl90PUZ0LGUuX3E9QyxlLl9pPXgsZS5fbT1WdCxlLl9mPVJ0LGUuX2s9QnQsZS5fYj1VdCxlLl92PXBlLGUuX2U9ZmUsZS5fdT1odCxlLl9nPXF0fWZ1bmN0aW9uIEd0KGUsdCxuLG8scil7dmFyIGEscz1yLm9wdGlvbnM7cChvLCJfdWlkIik/KGE9T2JqZWN0LmNyZWF0ZShvKSkuX29yaWdpbmFsPW86bz0oYT1vKS5fb3JpZ2luYWw7dmFyIGk9UyhzLl9jb21waWxlZCksYz0haTt0aGlzLmRhdGE9ZSx0aGlzLnByb3BzPXQsdGhpcy5jaGlsZHJlbj1uLHRoaXMucGFyZW50PW8sdGhpcy5saXN0ZW5lcnM9ZS5vbnx8eSx0aGlzLmluamVjdGlvbnM9RHQocy5pbmplY3QsbyksdGhpcy5zbG90cz1mdW5jdGlvbigpe3JldHVybiBkdChuLG8pfSxpJiYodGhpcy4kb3B0aW9ucz1zLHRoaXMuJHNsb3RzPXRoaXMuc2xvdHMoKSx0aGlzLiRzY29wZWRTbG90cz1lLnNjb3BlZFNsb3RzfHx5KSxzLl9zY29wZUlkP3RoaXMuX2M9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9cm4oYSxlLHQsbixyLGMpO3JldHVybiBpJiYhQXJyYXkuaXNBcnJheShpKSYmKGkuZm5TY29wZUlkPXMuX3Njb3BlSWQsaS5mbkNvbnRleHQ9byksaX06dGhpcy5fYz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gcm4oYSxlLHQsbixyLGMpfX1mdW5jdGlvbiBadChlLHQsbixyKXt2YXIgaT1kZShlKTtyZXR1cm4gaS5mbkNvbnRleHQ9bixpLmZuT3B0aW9ucz1yLHQuc2xvdCYmKChpLmRhdGF8fChpLmRhdGE9e30pKS5zbG90PXQuc2xvdCksaX1mdW5jdGlvbiBYdChlLHQpe2Zvcih2YXIgbiBpbiB0KWVbZyhuKV09dFtuXX1XdChHdC5wcm90b3R5cGUpO3ZhciBZdD17aW5pdDpmdW5jdGlvbihlLHQsbixyKXtpZihlLmNvbXBvbmVudEluc3RhbmNlJiYhZS5jb21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQmJmUuZGF0YS5rZWVwQWxpdmUpe3ZhciBpPWU7WXQucHJlcGF0Y2goaSxpKX1lbHNleyhlLmNvbXBvbmVudEluc3RhbmNlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXtfaXNDb21wb25lbnQ6ITAscGFyZW50OnQsX3BhcmVudFZub2RlOmUsX3BhcmVudEVsbTpufHxudWxsLF9yZWZFbG06cnx8bnVsbH0sbz1lLmRhdGEuaW5saW5lVGVtcGxhdGU7RChvKSYmKGkucmVuZGVyPW8ucmVuZGVyLGkuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zKTtyZXR1cm4gbmV3IGUuY29tcG9uZW50T3B0aW9ucy5DdG9yKGkpfShlLG10LG4scikpLiRtb3VudCh0P2UuZWxtOnZvaWQgMCx0KX19LHByZXBhdGNoOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5jb21wb25lbnRPcHRpb25zOyFmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvPSEhKGl8fGUuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVufHxyLmRhdGEuc2NvcGVkU2xvdHN8fGUuJHNjb3BlZFNsb3RzIT09eSk7aWYoZS4kb3B0aW9ucy5fcGFyZW50Vm5vZGU9cixlLiR2bm9kZT1yLGUuX3Zub2RlJiYoZS5fdm5vZGUucGFyZW50PXIpLGUuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuPWksZS4kYXR0cnM9ci5kYXRhLmF0dHJzfHx5LGUuJGxpc3RlbmVycz1ufHx5LHQmJmUuJG9wdGlvbnMucHJvcHMpe2dlKCExKTtmb3IodmFyIGE9ZS5fcHJvcHMscz1lLiRvcHRpb25zLl9wcm9wS2V5c3x8W10sYz0wO2M8cy5sZW5ndGg7YysrKXt2YXIgbD1zW2NdLHU9ZS4kb3B0aW9ucy5wcm9wczthW2xdPUllKGwsdSx0LGUpfWdlKCEwKSxlLiRvcHRpb25zLnByb3BzRGF0YT10fW49bnx8eTt2YXIgZj1lLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7ZS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzPW4scHQoZSxuLGYpLG8mJihlLiRzbG90cz1kdChpLHIuY29udGV4dCksZS4kZm9yY2VVcGRhdGUoKSl9KHQuY29tcG9uZW50SW5zdGFuY2U9ZS5jb21wb25lbnRJbnN0YW5jZSxuLnByb3BzRGF0YSxuLmxpc3RlbmVycyx0LG4uY2hpbGRyZW4pfSxpbnNlcnQ6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLmNvbnRleHQscj1lLmNvbXBvbmVudEluc3RhbmNlO3IuX2lzTW91bnRlZHx8KHIuX2lzTW91bnRlZD0hMCxfdChyLCJtb3VudGVkIikpLGUuZGF0YS5rZWVwQWxpdmUmJihuLl9pc01vdW50ZWQ/KCh0PXIpLl9pbmFjdGl2ZT0hMSwkdC5wdXNoKHQpKTpndChyLCEwKSl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb21wb25lbnRJbnN0YW5jZTt0Ll9pc0Rlc3Ryb3llZHx8KGUuZGF0YS5rZWVwQWxpdmU/ZnVuY3Rpb24gZSh0LG4pe2lmKCEobiYmKHQuX2RpcmVjdEluYWN0aXZlPSEwLHl0KHQpKXx8dC5faW5hY3RpdmUpKXt0Ll9pbmFjdGl2ZT0hMDtmb3IodmFyIHI9MDtyPHQuJGNoaWxkcmVuLmxlbmd0aDtyKyspZSh0LiRjaGlsZHJlbltyXSk7X3QodCwiZGVhY3RpdmF0ZWQiKX19KHQsITApOnQuJGRlc3Ryb3koKSl9fSxRdD1PYmplY3Qua2V5cyhZdCk7ZnVuY3Rpb24gZW4oZSx0LG4scixpKXtpZighTShlKSl7dmFyIG89bi4kb3B0aW9ucy5fYmFzZTtpZihQKGUpJiYoZT1vLmV4dGVuZChlKSksImZ1bmN0aW9uIj09dHlwZW9mIGUpe3ZhciBhLHMsYyxsLHUsZixwO2lmKE0oZS5jaWQpJiZ2b2lkIDA9PT0oZT1mdW5jdGlvbih0LG4sZSl7aWYoUyh0LmVycm9yKSYmRCh0LmVycm9yQ29tcCkpcmV0dXJuIHQuZXJyb3JDb21wO2lmKEQodC5yZXNvbHZlZCkpcmV0dXJuIHQucmVzb2x2ZWQ7aWYoUyh0LmxvYWRpbmcpJiZEKHQubG9hZGluZ0NvbXApKXJldHVybiB0LmxvYWRpbmdDb21wO2lmKCFEKHQuY29udGV4dHMpKXt2YXIgcj10LmNvbnRleHRzPVtlXSxpPSEwLG89ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspcltlXS4kZm9yY2VVcGRhdGUoKX0sYT1SKGZ1bmN0aW9uKGUpe3QucmVzb2x2ZWQ9c3QoZSxuKSxpfHxvKCl9KSxzPVIoZnVuY3Rpb24oZSl7RCh0LmVycm9yQ29tcCkmJih0LmVycm9yPSEwLG8oKSl9KSxjPXQoYSxzKTtyZXR1cm4gUChjKSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBjLnRoZW4/TSh0LnJlc29sdmVkKSYmYy50aGVuKGEscyk6RChjLmNvbXBvbmVudCkmJiJmdW5jdGlvbiI9PXR5cGVvZiBjLmNvbXBvbmVudC50aGVuJiYoYy5jb21wb25lbnQudGhlbihhLHMpLEQoYy5lcnJvcikmJih0LmVycm9yQ29tcD1zdChjLmVycm9yLG4pKSxEKGMubG9hZGluZykmJih0LmxvYWRpbmdDb21wPXN0KGMubG9hZGluZyxuKSwwPT09Yy5kZWxheT90LmxvYWRpbmc9ITA6c2V0VGltZW91dChmdW5jdGlvbigpe00odC5yZXNvbHZlZCkmJk0odC5lcnJvcikmJih0LmxvYWRpbmc9ITAsbygpKX0sYy5kZWxheXx8MjAwKSksRChjLnRpbWVvdXQpJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TSh0LnJlc29sdmVkKSYmcyhudWxsKX0sYy50aW1lb3V0KSkpLGk9ITEsdC5sb2FkaW5nP3QubG9hZGluZ0NvbXA6dC5yZXNvbHZlZH10LmNvbnRleHRzLnB1c2goZSl9KGE9ZSxvLG4pKSlyZXR1cm4gcz1hLGM9dCxsPW4sdT1yLGY9aSwocD1mZSgpKS5hc3luY0ZhY3Rvcnk9cyxwLmFzeW5jTWV0YT17ZGF0YTpjLGNvbnRleHQ6bCxjaGlsZHJlbjp1LHRhZzpmfSxwO3Q9dHx8e30sZG4oZSksRCh0Lm1vZGVsKSYmZnVuY3Rpb24oZSx0KXt2YXIgbj1lLm1vZGVsJiZlLm1vZGVsLnByb3B8fCJ2YWx1ZSIscj1lLm1vZGVsJiZlLm1vZGVsLmV2ZW50fHwiaW5wdXQiOyh0LnByb3BzfHwodC5wcm9wcz17fSkpW25dPXQubW9kZWwudmFsdWU7dmFyIGk9dC5vbnx8KHQub249e30pO0QoaVtyXSk/aVtyXT1bdC5tb2RlbC5jYWxsYmFja10uY29uY2F0KGlbcl0pOmlbcl09dC5tb2RlbC5jYWxsYmFja30oZS5vcHRpb25zLHQpO3ZhciBkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10Lm9wdGlvbnMucHJvcHM7aWYoIU0ocikpe3ZhciBpPXt9LG89ZS5hdHRycyxhPWUucHJvcHM7aWYoRChvKXx8RChhKSlmb3IodmFyIHMgaW4gcil7dmFyIGM9XyhzKTtpdChpLGEscyxjLCEwKXx8aXQoaSxvLHMsYywhMSl9cmV0dXJuIGl9fSh0LGUpO2lmKFMoZS5vcHRpb25zLmZ1bmN0aW9uYWwpKXJldHVybiBmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvPWUub3B0aW9ucyxhPXt9LHM9by5wcm9wcztpZihEKHMpKWZvcih2YXIgYyBpbiBzKWFbY109SWUoYyxzLHR8fHkpO2Vsc2UgRChuLmF0dHJzKSYmWHQoYSxuLmF0dHJzKSxEKG4ucHJvcHMpJiZYdChhLG4ucHJvcHMpO3ZhciBsPW5ldyBHdChuLGEsaSxyLGUpLHU9by5yZW5kZXIuY2FsbChudWxsLGwuX2MsbCk7aWYodSBpbnN0YW5jZW9mIGxlKXJldHVybiBadCh1LG4sbC5wYXJlbnQsbyk7aWYoQXJyYXkuaXNBcnJheSh1KSl7Zm9yKHZhciBmPW90KHUpfHxbXSxwPW5ldyBBcnJheShmLmxlbmd0aCksZD0wO2Q8Zi5sZW5ndGg7ZCsrKXBbZF09WnQoZltkXSxuLGwucGFyZW50LG8pO3JldHVybiBwfX0oZSxkLHQsbixyKTt2YXIgdj10Lm9uO2lmKHQub249dC5uYXRpdmVPbixTKGUub3B0aW9ucy5hYnN0cmFjdCkpe3ZhciBoPXQuc2xvdDt0PXt9LGgmJih0LnNsb3Q9aCl9IWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmhvb2t8fChlLmhvb2s9e30pLG49MDtuPFF0Lmxlbmd0aDtuKyspe3ZhciByPVF0W25dO3Rbcl09WXRbcl19fSh0KTt2YXIgbT1lLm9wdGlvbnMubmFtZXx8aTtyZXR1cm4gbmV3IGxlKCJ2dWUtY29tcG9uZW50LSIrZS5jaWQrKG0/Ii0iK206IiIpLHQsdm9pZCAwLHZvaWQgMCx2b2lkIDAsbix7Q3RvcjplLHByb3BzRGF0YTpkLGxpc3RlbmVyczp2LHRhZzppLGNoaWxkcmVuOnJ9LGEpfX19dmFyIHRuPTEsbm49MjtmdW5jdGlvbiBybihlLHQsbixyLGksbyl7cmV0dXJuKEFycmF5LmlzQXJyYXkobil8fFQobikpJiYoaT1yLHI9bixuPXZvaWQgMCksUyhvKSYmKGk9bm4pLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoRChuKSYmRChuLl9fb2JfXykpcmV0dXJuIGZlKCk7RChuKSYmRChuLmlzKSYmKHQ9bi5pcyk7aWYoIXQpcmV0dXJuIGZlKCk7QXJyYXkuaXNBcnJheShyKSYmImZ1bmN0aW9uIj09dHlwZW9mIHJbMF0mJigobj1ufHx7fSkuc2NvcGVkU2xvdHM9e2RlZmF1bHQ6clswXX0sci5sZW5ndGg9MCk7aT09PW5uP3I9b3Qocik6aT09PXRuJiYocj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylpZihBcnJheS5pc0FycmF5KGVbdF0pKXJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGUpO3JldHVybiBlfShyKSk7dmFyIG8sYTtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBzO2E9ZS4kdm5vZGUmJmUuJHZub2RlLm5zfHxqLmdldFRhZ05hbWVzcGFjZSh0KSxvPWouaXNSZXNlcnZlZFRhZyh0KT9uZXcgbGUoai5wYXJzZVBsYXRmb3JtVGFnTmFtZSh0KSxuLHIsdm9pZCAwLHZvaWQgMCxlKTpEKHM9TGUoZS4kb3B0aW9ucywiY29tcG9uZW50cyIsdCkpP2VuKHMsbixlLHIsdCk6bmV3IGxlKHQsbixyLHZvaWQgMCx2b2lkIDAsZSl9ZWxzZSBvPWVuKHQsbixlLHIpO3JldHVybiBBcnJheS5pc0FycmF5KG8pP286RChvKT8oRChhKSYmZnVuY3Rpb24gZSh0LG4scil7dC5ucz1uOyJmb3JlaWduT2JqZWN0Ij09PXQudGFnJiYobj12b2lkIDAscj0hMCk7aWYoRCh0LmNoaWxkcmVuKSlmb3IodmFyIGk9MCxvPXQuY2hpbGRyZW4ubGVuZ3RoO2k8bztpKyspe3ZhciBhPXQuY2hpbGRyZW5baV07RChhLnRhZykmJihNKGEubnMpfHxTKHIpJiYic3ZnIiE9PWEudGFnKSYmZShhLG4scil9fShvLGEpLEQobikmJmZ1bmN0aW9uKGUpe1AoZS5zdHlsZSkmJlllKGUuc3R5bGUpO1AoZS5jbGFzcykmJlllKGUuY2xhc3MpfShuKSxvKTpmZSgpfShlLHQsbixyLGkpfXZhciBvbixhbixzbixjbixsbix1bixmbixwbj0wO2Z1bmN0aW9uIGRuKGUpe3ZhciB0PWUub3B0aW9ucztpZihlLnN1cGVyKXt2YXIgbj1kbihlLnN1cGVyKTtpZihuIT09ZS5zdXBlck9wdGlvbnMpe2Uuc3VwZXJPcHRpb25zPW47dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLm9wdGlvbnMscj1lLmV4dGVuZE9wdGlvbnMsaT1lLnNlYWxlZE9wdGlvbnM7Zm9yKHZhciBvIGluIG4pbltvXSE9PWlbb10mJih0fHwodD17fSksdFtvXT12bihuW29dLHJbb10saVtvXSkpO3JldHVybiB0fShlKTtyJiZtKGUuZXh0ZW5kT3B0aW9ucyxyKSwodD1lLm9wdGlvbnM9TmUobixlLmV4dGVuZE9wdGlvbnMpKS5uYW1lJiYodC5jb21wb25lbnRzW3QubmFtZV09ZSl9fXJldHVybiB0fWZ1bmN0aW9uIHZuKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KGUpKXt2YXIgcj1bXTtuPUFycmF5LmlzQXJyYXkobik/bjpbbl0sdD1BcnJheS5pc0FycmF5KHQpP3Q6W3RdO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKSgwPD10LmluZGV4T2YoZVtpXSl8fG4uaW5kZXhPZihlW2ldKTwwKSYmci5wdXNoKGVbaV0pO3JldHVybiByfXJldHVybiBlfWZ1bmN0aW9uIGhuKGUpe3RoaXMuX2luaXQoZSl9ZnVuY3Rpb24gbW4oZSl7ZS5jaWQ9MDt2YXIgYT0xO2UuZXh0ZW5kPWZ1bmN0aW9uKGUpe2U9ZXx8e307dmFyIHQ9dGhpcyxuPXQuY2lkLHI9ZS5fQ3Rvcnx8KGUuX0N0b3I9e30pO2lmKHJbbl0pcmV0dXJuIHJbbl07dmFyIGk9ZS5uYW1lfHx0Lm9wdGlvbnMubmFtZSxvPWZ1bmN0aW9uKGUpe3RoaXMuX2luaXQoZSl9O3JldHVybigoby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPW8pLmNpZD1hKyssby5vcHRpb25zPU5lKHQub3B0aW9ucyxlKSxvLnN1cGVyPXQsby5vcHRpb25zLnByb3BzJiZmdW5jdGlvbihlKXt2YXIgdD1lLm9wdGlvbnMucHJvcHM7Zm9yKHZhciBuIGluIHQpRXQoZS5wcm90b3R5cGUsIl9wcm9wcyIsbil9KG8pLG8ub3B0aW9ucy5jb21wdXRlZCYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcHRpb25zLmNvbXB1dGVkO2Zvcih2YXIgbiBpbiB0KUx0KGUucHJvdG90eXBlLG4sdFtuXSl9KG8pLG8uZXh0ZW5kPXQuZXh0ZW5kLG8ubWl4aW49dC5taXhpbixvLnVzZT10LnVzZSxrLmZvckVhY2goZnVuY3Rpb24oZSl7b1tlXT10W2VdfSksaSYmKG8ub3B0aW9ucy5jb21wb25lbnRzW2ldPW8pLG8uc3VwZXJPcHRpb25zPXQub3B0aW9ucyxvLmV4dGVuZE9wdGlvbnM9ZSxvLnNlYWxlZE9wdGlvbnM9bSh7fSxvLm9wdGlvbnMpLHJbbl09b319ZnVuY3Rpb24geW4oZSl7cmV0dXJuIGUmJihlLkN0b3Iub3B0aW9ucy5uYW1lfHxlLnRhZyl9ZnVuY3Rpb24gZ24oZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8tMTxlLmluZGV4T2YodCk6InN0cmluZyI9PXR5cGVvZiBlPy0xPGUuc3BsaXQoIiwiKS5pbmRleE9mKHQpOihuPWUsIltvYmplY3QgUmVnRXhwXSI9PT1yLmNhbGwobikmJmUudGVzdCh0KSk7dmFyIG59ZnVuY3Rpb24gX24oZSx0KXt2YXIgbj1lLmNhY2hlLHI9ZS5rZXlzLGk9ZS5fdm5vZGU7Zm9yKHZhciBvIGluIG4pe3ZhciBhPW5bb107aWYoYSl7dmFyIHM9eW4oYS5jb21wb25lbnRPcHRpb25zKTtzJiYhdChzKSYmYm4obixvLHIsaSl9fX1mdW5jdGlvbiBibihlLHQsbixyKXt2YXIgaT1lW3RdOyFpfHxyJiZpLnRhZz09PXIudGFnfHxpLmNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCksZVt0XT1udWxsLGYobix0KX1obi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbz10aGlzO28uX3VpZD1wbisrLG8uX2lzVnVlPSEwLGUmJmUuX2lzQ29tcG9uZW50P2Z1bmN0aW9uKGUsdCl7dmFyIG49ZS4kb3B0aW9ucz1PYmplY3QuY3JlYXRlKGUuY29uc3RydWN0b3Iub3B0aW9ucykscj10Ll9wYXJlbnRWbm9kZTtuLnBhcmVudD10LnBhcmVudCxuLl9wYXJlbnRWbm9kZT1yLG4uX3BhcmVudEVsbT10Ll9wYXJlbnRFbG0sbi5fcmVmRWxtPXQuX3JlZkVsbTt2YXIgaT1yLmNvbXBvbmVudE9wdGlvbnM7bi5wcm9wc0RhdGE9aS5wcm9wc0RhdGEsbi5fcGFyZW50TGlzdGVuZXJzPWkubGlzdGVuZXJzLG4uX3JlbmRlckNoaWxkcmVuPWkuY2hpbGRyZW4sbi5fY29tcG9uZW50VGFnPWkudGFnLHQucmVuZGVyJiYobi5yZW5kZXI9dC5yZW5kZXIsbi5zdGF0aWNSZW5kZXJGbnM9dC5zdGF0aWNSZW5kZXJGbnMpfShvLGUpOm8uJG9wdGlvbnM9TmUoZG4oby5jb25zdHJ1Y3RvciksZXx8e30sbyksZnVuY3Rpb24oZSl7dmFyIHQ9ZS4kb3B0aW9ucyxuPXQucGFyZW50O2lmKG4mJiF0LmFic3RyYWN0KXtmb3IoO24uJG9wdGlvbnMuYWJzdHJhY3QmJm4uJHBhcmVudDspbj1uLiRwYXJlbnQ7bi4kY2hpbGRyZW4ucHVzaChlKX1lLiRwYXJlbnQ9bixlLiRyb290PW4/bi4kcm9vdDplLGUuJGNoaWxkcmVuPVtdLGUuJHJlZnM9e30sZS5fd2F0Y2hlcj1udWxsLGUuX2luYWN0aXZlPW51bGwsZS5fZGlyZWN0SW5hY3RpdmU9ITEsZS5faXNNb3VudGVkPSExLGUuX2lzRGVzdHJveWVkPSExLGUuX2lzQmVpbmdEZXN0cm95ZWQ9ITF9KChvLl9yZW5kZXJQcm94eT1vKS5fc2VsZj1vKSxmdW5jdGlvbihlKXtlLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxlLl9oYXNIb29rRXZlbnQ9ITE7dmFyIHQ9ZS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO3QmJnB0KGUsdCl9KG8pLGZ1bmN0aW9uKGkpe2kuX3Zub2RlPW51bGwsaS5fc3RhdGljVHJlZXM9bnVsbDt2YXIgZT1pLiRvcHRpb25zLHQ9aS4kdm5vZGU9ZS5fcGFyZW50Vm5vZGUsbj10JiZ0LmNvbnRleHQ7aS4kc2xvdHM9ZHQoZS5fcmVuZGVyQ2hpbGRyZW4sbiksaS4kc2NvcGVkU2xvdHM9eSxpLl9jPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBybihpLGUsdCxuLHIsITEpfSxpLiRjcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBybihpLGUsdCxuLHIsITApfTt2YXIgcj10JiZ0LmRhdGE7Q2UoaSwiJGF0dHJzIixyJiZyLmF0dHJzfHx5LG51bGwsITApLENlKGksIiRsaXN0ZW5lcnMiLGUuX3BhcmVudExpc3RlbmVyc3x8eSxudWxsLCEwKX0obyksX3QobywiYmVmb3JlQ3JlYXRlIiksKG49RHQoKHQ9bykuJG9wdGlvbnMuaW5qZWN0LHQpKSYmKGdlKCExKSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0NlKHQsZSxuW2VdKX0pLGdlKCEwKSksanQobyksKGk9KHI9bykuJG9wdGlvbnMucHJvdmlkZSkmJihyLl9wcm92aWRlZD0iZnVuY3Rpb24iPT10eXBlb2YgaT9pLmNhbGwocik6aSksX3QobywiY3JlYXRlZCIpLG8uJG9wdGlvbnMuZWwmJm8uJG1vdW50KG8uJG9wdGlvbnMuZWwpfSxvbj1obixhbj17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGF9fSxzbj17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BzfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KG9uLnByb3RvdHlwZSwiJGRhdGEiLGFuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkob24ucHJvdG90eXBlLCIkcHJvcHMiLHNuKSxvbi5wcm90b3R5cGUuJHNldD14ZSxvbi5wcm90b3R5cGUuJGRlbGV0ZT1rZSxvbi5wcm90b3R5cGUuJHdhdGNoPWZ1bmN0aW9uKGUsdCxuKXtpZihsKHQpKXJldHVybiBNdCh0aGlzLGUsdCxuKTsobj1ufHx7fSkudXNlcj0hMDt2YXIgcj1uZXcgU3QodGhpcyxlLHQsbik7cmV0dXJuIG4uaW1tZWRpYXRlJiZ0LmNhbGwodGhpcyxyLnZhbHVlKSxmdW5jdGlvbigpe3IudGVhcmRvd24oKX19LGxuPS9eaG9vazovLChjbj1obikucHJvdG90eXBlLiRvbj1mdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXRoaXMuJG9uKGVbbl0sdCk7ZWxzZSh0aGlzLl9ldmVudHNbZV18fCh0aGlzLl9ldmVudHNbZV09W10pKS5wdXNoKHQpLGxuLnRlc3QoZSkmJih0aGlzLl9oYXNIb29rRXZlbnQ9ITApO3JldHVybiB0aGlzfSxjbi5wcm90b3R5cGUuJG9uY2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2Z1bmN0aW9uIHIoKXtuLiRvZmYoZSxyKSx0LmFwcGx5KG4sYXJndW1lbnRzKX1yZXR1cm4gci5mbj10LG4uJG9uKGUsciksbn0sY24ucHJvdG90eXBlLiRvZmY9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBuLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxuO2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl0aGlzLiRvZmYoZVtyXSx0KTtyZXR1cm4gbn12YXIgbz1uLl9ldmVudHNbZV07aWYoIW8pcmV0dXJuIG47aWYoIXQpcmV0dXJuIG4uX2V2ZW50c1tlXT1udWxsLG47aWYodClmb3IodmFyIGEscz1vLmxlbmd0aDtzLS07KWlmKChhPW9bc10pPT09dHx8YS5mbj09PXQpe28uc3BsaWNlKHMsMSk7YnJlYWt9cmV0dXJuIG59LGNuLnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbih0KXt2YXIgbj10aGlzLGU9bi5fZXZlbnRzW3RdO2lmKGUpe2U9MTxlLmxlbmd0aD9oKGUpOmU7Zm9yKHZhciByPWgoYXJndW1lbnRzLDEpLGk9MCxvPWUubGVuZ3RoO2k8bztpKyspdHJ5e2VbaV0uYXBwbHkobixyKX1jYXRjaChlKXtGZShlLG4sJ2V2ZW50IGhhbmRsZXIgZm9yICInK3QrJyInKX19cmV0dXJuIG59LCh1bj1obikucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO24uX2lzTW91bnRlZCYmX3QobiwiYmVmb3JlVXBkYXRlIik7dmFyIHI9bi4kZWwsaT1uLl92bm9kZSxvPW10OyhtdD1uKS5fdm5vZGU9ZSxpP24uJGVsPW4uX19wYXRjaF9fKGksZSk6KG4uJGVsPW4uX19wYXRjaF9fKG4uJGVsLGUsdCwhMSxuLiRvcHRpb25zLl9wYXJlbnRFbG0sbi4kb3B0aW9ucy5fcmVmRWxtKSxuLiRvcHRpb25zLl9wYXJlbnRFbG09bi4kb3B0aW9ucy5fcmVmRWxtPW51bGwpLG10PW8sciYmKHIuX192dWVfXz1udWxsKSxuLiRlbCYmKG4uJGVsLl9fdnVlX189biksbi4kdm5vZGUmJm4uJHBhcmVudCYmbi4kdm5vZGU9PT1uLiRwYXJlbnQuX3Zub2RlJiYobi4kcGFyZW50LiRlbD1uLiRlbCl9LHVuLnByb3RvdHlwZS4kZm9yY2VVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl93YXRjaGVyJiZ0aGlzLl93YXRjaGVyLnVwZGF0ZSgpfSx1bi5wcm90b3R5cGUuJGRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCFlLl9pc0JlaW5nRGVzdHJveWVkKXtfdChlLCJiZWZvcmVEZXN0cm95IiksZS5faXNCZWluZ0Rlc3Ryb3llZD0hMDt2YXIgdD1lLiRwYXJlbnQ7IXR8fHQuX2lzQmVpbmdEZXN0cm95ZWR8fGUuJG9wdGlvbnMuYWJzdHJhY3R8fGYodC4kY2hpbGRyZW4sZSksZS5fd2F0Y2hlciYmZS5fd2F0Y2hlci50ZWFyZG93bigpO2Zvcih2YXIgbj1lLl93YXRjaGVycy5sZW5ndGg7bi0tOyllLl93YXRjaGVyc1tuXS50ZWFyZG93bigpO2UuX2RhdGEuX19vYl9fJiZlLl9kYXRhLl9fb2JfXy52bUNvdW50LS0sZS5faXNEZXN0cm95ZWQ9ITAsZS5fX3BhdGNoX18oZS5fdm5vZGUsbnVsbCksX3QoZSwiZGVzdHJveWVkIiksZS4kb2ZmKCksZS4kZWwmJihlLiRlbC5fX3Z1ZV9fPW51bGwpLGUuJHZub2RlJiYoZS4kdm5vZGUucGFyZW50PW51bGwpfX0sV3QoKGZuPWhuKS5wcm90b3R5cGUpLGZuLnByb3RvdHlwZS4kbmV4dFRpY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIFplKGUsdGhpcyl9LGZuLnByb3RvdHlwZS5fcmVuZGVyPWZ1bmN0aW9uKCl7dmFyIHQsbj10aGlzLGU9bi4kb3B0aW9ucyxyPWUucmVuZGVyLGk9ZS5fcGFyZW50Vm5vZGU7aSYmKG4uJHNjb3BlZFNsb3RzPWkuZGF0YS5zY29wZWRTbG90c3x8eSksbi4kdm5vZGU9aTt0cnl7dD1yLmNhbGwobi5fcmVuZGVyUHJveHksbi4kY3JlYXRlRWxlbWVudCl9Y2F0Y2goZSl7RmUoZSxuLCJyZW5kZXIiKSx0PW4uX3Zub2RlfXJldHVybiB0IGluc3RhbmNlb2YgbGV8fCh0PWZlKCkpLHQucGFyZW50PWksdH07dmFyICRuLHduLENuLHhuPVtTdHJpbmcsUmVnRXhwLEFycmF5XSxrbj17S2VlcEFsaXZlOntuYW1lOiJrZWVwLWFsaXZlIixhYnN0cmFjdDohMCxwcm9wczp7aW5jbHVkZTp4bixleGNsdWRlOnhuLG1heDpbU3RyaW5nLE51bWJlcl19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhY2hlPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5rZXlzPVtdfSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcy5jYWNoZSlibih0aGlzLmNhY2hlLGUsdGhpcy5rZXlzKX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy4kd2F0Y2goImluY2x1ZGUiLGZ1bmN0aW9uKHQpe19uKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGduKHQsZSl9KX0pLHRoaXMuJHdhdGNoKCJleGNsdWRlIixmdW5jdGlvbih0KXtfbihlLGZ1bmN0aW9uKGUpe3JldHVybiFnbih0LGUpfSl9KX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kc2xvdHMuZGVmYXVsdCx0PWx0KGUpLG49dCYmdC5jb21wb25lbnRPcHRpb25zO2lmKG4pe3ZhciByPXluKG4pLGk9dGhpcy5pbmNsdWRlLG89dGhpcy5leGNsdWRlO2lmKGkmJighcnx8IWduKGkscikpfHxvJiZyJiZnbihvLHIpKXJldHVybiB0O3ZhciBhPXRoaXMuY2FjaGUscz10aGlzLmtleXMsYz1udWxsPT10LmtleT9uLkN0b3IuY2lkKyhuLnRhZz8iOjoiK24udGFnOiIiKTp0LmtleTthW2NdPyh0LmNvbXBvbmVudEluc3RhbmNlPWFbY10uY29tcG9uZW50SW5zdGFuY2UsZihzLGMpLHMucHVzaChjKSk6KGFbY109dCxzLnB1c2goYyksdGhpcy5tYXgmJnMubGVuZ3RoPnBhcnNlSW50KHRoaXMubWF4KSYmYm4oYSxzWzBdLHMsdGhpcy5fdm5vZGUpKSx0LmRhdGEua2VlcEFsaXZlPSEwfXJldHVybiB0fHxlJiZlWzBdfX19OyRuPWhuLENuPXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gan19LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkbiwiY29uZmlnIixDbiksJG4udXRpbD17d2FybjpyZSxleHRlbmQ6bSxtZXJnZU9wdGlvbnM6TmUsZGVmaW5lUmVhY3RpdmU6Q2V9LCRuLnNldD14ZSwkbi5kZWxldGU9a2UsJG4ubmV4dFRpY2s9WmUsJG4ub3B0aW9ucz1PYmplY3QuY3JlYXRlKG51bGwpLGsuZm9yRWFjaChmdW5jdGlvbihlKXskbi5vcHRpb25zW2UrInMiXT1PYmplY3QuY3JlYXRlKG51bGwpfSksbSgoJG4ub3B0aW9ucy5fYmFzZT0kbikub3B0aW9ucy5jb21wb25lbnRzLGtuKSwkbi51c2U9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5faW5zdGFsbGVkUGx1Z2luc3x8KHRoaXMuX2luc3RhbGxlZFBsdWdpbnM9W10pO2lmKC0xPHQuaW5kZXhPZihlKSlyZXR1cm4gdGhpczt2YXIgbj1oKGFyZ3VtZW50cywxKTtyZXR1cm4gbi51bnNoaWZ0KHRoaXMpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLmluc3RhbGw/ZS5pbnN0YWxsLmFwcGx5KGUsbik6ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUuYXBwbHkobnVsbCxuKSx0LnB1c2goZSksdGhpc30sJG4ubWl4aW49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3B0aW9ucz1OZSh0aGlzLm9wdGlvbnMsZSksdGhpc30sbW4oJG4pLHduPSRuLGsuZm9yRWFjaChmdW5jdGlvbihuKXt3bltuXT1mdW5jdGlvbihlLHQpe3JldHVybiB0PygiY29tcG9uZW50Ij09PW4mJmwodCkmJih0Lm5hbWU9dC5uYW1lfHxlLHQ9dGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZCh0KSksImRpcmVjdGl2ZSI9PT1uJiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmKHQ9e2JpbmQ6dCx1cGRhdGU6dH0pLHRoaXMub3B0aW9uc1tuKyJzIl1bZV09dCk6dGhpcy5vcHRpb25zW24rInMiXVtlXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaG4ucHJvdG90eXBlLCIkaXNTZXJ2ZXIiLHtnZXQ6WX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShobi5wcm90b3R5cGUsIiRzc3JDb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHZub2RlJiZ0aGlzLiR2bm9kZS5zc3JDb250ZXh0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShobiwiRnVuY3Rpb25hbFJlbmRlckNvbnRleHQiLHt2YWx1ZTpHdH0pLGhuLnZlcnNpb249IjIuNS4xNyI7dmFyIEFuPXMoInN0eWxlLGNsYXNzIiksT249cygiaW5wdXQsdGV4dGFyZWEsb3B0aW9uLHNlbGVjdCxwcm9ncmVzcyIpLFNuPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4idmFsdWUiPT09biYmT24oZSkmJiJidXR0b24iIT09dHx8InNlbGVjdGVkIj09PW4mJiJvcHRpb24iPT09ZXx8ImNoZWNrZWQiPT09biYmImlucHV0Ij09PWV8fCJtdXRlZCI9PT1uJiYidmlkZW8iPT09ZX0sVG49cygiY29udGVudGVkaXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrIiksRW49cygiYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSxkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQsZGVmZXIsZGlzYWJsZWQsZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0aXBsZSxtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LHJlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUsdHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSIpLGpuPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixObj1mdW5jdGlvbihlKXtyZXR1cm4iOiI9PT1lLmNoYXJBdCg1KSYmInhsaW5rIj09PWUuc2xpY2UoMCw1KX0sTG49ZnVuY3Rpb24oZSl7cmV0dXJuIE5uKGUpP2Uuc2xpY2UoNixlLmxlbmd0aCk6IiJ9LEluPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHwhMT09PWV9O2Z1bmN0aW9uIE1uKGUpe2Zvcih2YXIgdD1lLmRhdGEsbj1lLHI9ZTtEKHIuY29tcG9uZW50SW5zdGFuY2UpOykocj1yLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSkmJnIuZGF0YSYmKHQ9RG4oci5kYXRhLHQpKTtmb3IoO0Qobj1uLnBhcmVudCk7KW4mJm4uZGF0YSYmKHQ9RG4odCxuLmRhdGEpKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihEKGUpfHxEKHQpKXJldHVybiBQbihlLEZuKHQpKTtyZXR1cm4iIn0odC5zdGF0aWNDbGFzcyx0LmNsYXNzKX1mdW5jdGlvbiBEbihlLHQpe3JldHVybntzdGF0aWNDbGFzczpQbihlLnN0YXRpY0NsYXNzLHQuc3RhdGljQ2xhc3MpLGNsYXNzOkQoZS5jbGFzcyk/W2UuY2xhc3MsdC5jbGFzc106dC5jbGFzc319ZnVuY3Rpb24gUG4oZSx0KXtyZXR1cm4gZT90P2UrIiAiK3Q6ZTp0fHwiIn1mdW5jdGlvbiBGbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9mdW5jdGlvbihlKXtmb3IodmFyIHQsbj0iIixyPTAsaT1lLmxlbmd0aDtyPGk7cisrKUQodD1GbihlW3JdKSkmJiIiIT09dCYmKG4mJihuKz0iICIpLG4rPXQpO3JldHVybiBufShlKTpQKGUpP2Z1bmN0aW9uKGUpe3ZhciB0PSIiO2Zvcih2YXIgbiBpbiBlKWVbbl0mJih0JiYodCs9IiAiKSx0Kz1uKTtyZXR1cm4gdH0oZSk6InN0cmluZyI9PXR5cGVvZiBlP2U6IiJ9dmFyIFJuPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixtYXRoOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIn0sSG49cygiaHRtbCxib2R5LGJhc2UsaGVhZCxsaW5rLG1ldGEsc3R5bGUsdGl0bGUsYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGZvb3RlcixoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGdyb3VwLG5hdixzZWN0aW9uLGRpdixkZCxkbCxkdCxmaWdjYXB0aW9uLGZpZ3VyZSxwaWN0dXJlLGhyLGltZyxsaSxtYWluLG9sLHAscHJlLHVsLGEsYixhYmJyLGJkaSxiZG8sYnIsY2l0ZSxjb2RlLGRhdGEsZGZuLGVtLGksa2JkLG1hcmsscSxycCxydCxydGMscnVieSxzLHNhbXAsc21hbGwsc3BhbixzdHJvbmcsc3ViLHN1cCx0aW1lLHUsdmFyLHdicixhcmVhLGF1ZGlvLG1hcCx0cmFjayx2aWRlbyxlbWJlZCxvYmplY3QscGFyYW0sc291cmNlLGNhbnZhcyxzY3JpcHQsbm9zY3JpcHQsZGVsLGlucyxjYXB0aW9uLGNvbCxjb2xncm91cCx0YWJsZSx0aGVhZCx0Ym9keSx0ZCx0aCx0cixidXR0b24sZGF0YWxpc3QsZmllbGRzZXQsZm9ybSxpbnB1dCxsYWJlbCxsZWdlbmQsbWV0ZXIsb3B0Z3JvdXAsb3B0aW9uLG91dHB1dCxwcm9ncmVzcyxzZWxlY3QsdGV4dGFyZWEsZGV0YWlscyxkaWFsb2csbWVudSxtZW51aXRlbSxzdW1tYXJ5LGNvbnRlbnQsZWxlbWVudCxzaGFkb3csdGVtcGxhdGUsYmxvY2txdW90ZSxpZnJhbWUsdGZvb3QiKSxCbj1zKCJzdmcsYW5pbWF0ZSxjaXJjbGUsY2xpcHBhdGgsY3Vyc29yLGRlZnMsZGVzYyxlbGxpcHNlLGZpbHRlcixmb250LWZhY2UsZm9yZWlnbk9iamVjdCxnLGdseXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1nbHlwaCxwYXRoLHBhdHRlcm4scG9seWdvbixwb2x5bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0c3Bhbix1c2UsdmlldyIsITApLFVuPWZ1bmN0aW9uKGUpe3JldHVybiBIbihlKXx8Qm4oZSl9O2Z1bmN0aW9uIFZuKGUpe3JldHVybiBCbihlKT8ic3ZnIjoibWF0aCI9PT1lPyJtYXRoIjp2b2lkIDB9dmFyIHpuPU9iamVjdC5jcmVhdGUobnVsbCk7dmFyIEtuPXMoInRleHQsbnVtYmVyLHBhc3N3b3JkLHNlYXJjaCxlbWFpbCx0ZWwsdXJsIik7ZnVuY3Rpb24gSm4oZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpO3JldHVybiB0fHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKX1yZXR1cm4gZX12YXIgcW49T2JqZWN0LmZyZWV6ZSh7Y3JlYXRlRWxlbWVudDpmdW5jdGlvbihlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuInNlbGVjdCIhPT1lfHx0LmRhdGEmJnQuZGF0YS5hdHRycyYmdm9pZCAwIT09dC5kYXRhLmF0dHJzLm11bHRpcGxlJiZuLnNldEF0dHJpYnV0ZSgibXVsdGlwbGUiLCJtdWx0aXBsZSIpLG59LGNyZWF0ZUVsZW1lbnROUzpmdW5jdGlvbihlLHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoUm5bZV0sdCl9LGNyZWF0ZVRleHROb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKX0sY3JlYXRlQ29tbWVudDpmdW5jdGlvbihlKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudChlKX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKGUsdCxuKXtlLmluc2VydEJlZm9yZSh0LG4pfSxyZW1vdmVDaGlsZDpmdW5jdGlvbihlLHQpe2UucmVtb3ZlQ2hpbGQodCl9LGFwcGVuZENoaWxkOmZ1bmN0aW9uKGUsdCl7ZS5hcHBlbmRDaGlsZCh0KX0scGFyZW50Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5wYXJlbnROb2RlfSxuZXh0U2libGluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uZXh0U2libGluZ30sdGFnTmFtZTpmdW5jdGlvbihlKXtyZXR1cm4gZS50YWdOYW1lfSxzZXRUZXh0Q29udGVudDpmdW5jdGlvbihlLHQpe2UudGV4dENvbnRlbnQ9dH0sc2V0U3R5bGVTY29wZTpmdW5jdGlvbihlLHQpe2Uuc2V0QXR0cmlidXRlKHQsIiIpfX0pLFduPXtjcmVhdGU6ZnVuY3Rpb24oZSx0KXtHbih0KX0sdXBkYXRlOmZ1bmN0aW9uKGUsdCl7ZS5kYXRhLnJlZiE9PXQuZGF0YS5yZWYmJihHbihlLCEwKSxHbih0KSl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7R24oZSwhMCl9fTtmdW5jdGlvbiBHbihlLHQpe3ZhciBuPWUuZGF0YS5yZWY7aWYoRChuKSl7dmFyIHI9ZS5jb250ZXh0LGk9ZS5jb21wb25lbnRJbnN0YW5jZXx8ZS5lbG0sbz1yLiRyZWZzO3Q/QXJyYXkuaXNBcnJheShvW25dKT9mKG9bbl0saSk6b1tuXT09PWkmJihvW25dPXZvaWQgMCk6ZS5kYXRhLnJlZkluRm9yP0FycmF5LmlzQXJyYXkob1tuXSk/b1tuXS5pbmRleE9mKGkpPDAmJm9bbl0ucHVzaChpKTpvW25dPVtpXTpvW25dPWl9fXZhciBabj1uZXcgbGUoIiIse30sW10pLFhuPVsiY3JlYXRlIiwiYWN0aXZhdGUiLCJ1cGRhdGUiLCJyZW1vdmUiLCJkZXN0cm95Il07ZnVuY3Rpb24gWW4oZSx0KXtyZXR1cm4gZS5rZXk9PT10LmtleSYmKGUudGFnPT09dC50YWcmJmUuaXNDb21tZW50PT09dC5pc0NvbW1lbnQmJkQoZS5kYXRhKT09PUQodC5kYXRhKSYmZnVuY3Rpb24oZSx0KXtpZigiaW5wdXQiIT09ZS50YWcpcmV0dXJuITA7dmFyIG4scj1EKG49ZS5kYXRhKSYmRChuPW4uYXR0cnMpJiZuLnR5cGUsaT1EKG49dC5kYXRhKSYmRChuPW4uYXR0cnMpJiZuLnR5cGU7cmV0dXJuIHI9PT1pfHxLbihyKSYmS24oaSl9KGUsdCl8fFMoZS5pc0FzeW5jUGxhY2Vob2xkZXIpJiZlLmFzeW5jRmFjdG9yeT09PXQuYXN5bmNGYWN0b3J5JiZNKHQuYXN5bmNGYWN0b3J5LmVycm9yKSl9ZnVuY3Rpb24gUW4oZSx0LG4pe3ZhciByLGksbz17fTtmb3Iocj10O3I8PW47KytyKUQoaT1lW3JdLmtleSkmJihvW2ldPXIpO3JldHVybiBvfXZhciBlcj17Y3JlYXRlOnRyLHVwZGF0ZTp0cixkZXN0cm95OmZ1bmN0aW9uKGUpe3RyKGUsWm4pfX07ZnVuY3Rpb24gdHIoZSx0KXsoZS5kYXRhLmRpcmVjdGl2ZXN8fHQuZGF0YS5kaXJlY3RpdmVzKSYmZnVuY3Rpb24odCxuKXt2YXIgZSxyLGksbz10PT09Wm4sYT1uPT09Wm4scz1ycih0LmRhdGEuZGlyZWN0aXZlcyx0LmNvbnRleHQpLGM9cnIobi5kYXRhLmRpcmVjdGl2ZXMsbi5jb250ZXh0KSxsPVtdLHU9W107Zm9yKGUgaW4gYylyPXNbZV0saT1jW2VdLHI/KGkub2xkVmFsdWU9ci52YWx1ZSxpcihpLCJ1cGRhdGUiLG4sdCksaS5kZWYmJmkuZGVmLmNvbXBvbmVudFVwZGF0ZWQmJnUucHVzaChpKSk6KGlyKGksImJpbmQiLG4sdCksaS5kZWYmJmkuZGVmLmluc2VydGVkJiZsLnB1c2goaSkpO2lmKGwubGVuZ3RoKXt2YXIgZj1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bC5sZW5ndGg7ZSsrKWlyKGxbZV0sImluc2VydGVkIixuLHQpfTtvP3J0KG4sImluc2VydCIsZik6ZigpfXUubGVuZ3RoJiZydChuLCJwb3N0cGF0Y2giLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx1Lmxlbmd0aDtlKyspaXIodVtlXSwiY29tcG9uZW50VXBkYXRlZCIsbix0KX0pO2lmKCFvKWZvcihlIGluIHMpY1tlXXx8aXIoc1tlXSwidW5iaW5kIix0LHQsYSl9KGUsdCl9dmFyIG5yPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gcnIoZSx0KXt2YXIgbixyLGksbz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCFlKXJldHVybiBvO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspKHI9ZVtuXSkubW9kaWZpZXJzfHwoci5tb2RpZmllcnM9bnIpLChvWyhpPXIsaS5yYXdOYW1lfHxpLm5hbWUrIi4iK09iamVjdC5rZXlzKGkubW9kaWZpZXJzfHx7fSkuam9pbigiLiIpKV09cikuZGVmPUxlKHQuJG9wdGlvbnMsImRpcmVjdGl2ZXMiLHIubmFtZSk7cmV0dXJuIG99ZnVuY3Rpb24gaXIodCxuLHIsZSxpKXt2YXIgbz10LmRlZiYmdC5kZWZbbl07aWYobyl0cnl7byhyLmVsbSx0LHIsZSxpKX1jYXRjaChlKXtGZShlLHIuY29udGV4dCwiZGlyZWN0aXZlICIrdC5uYW1lKyIgIituKyIgaG9vayIpfX12YXIgb3I9W1duLGVyXTtmdW5jdGlvbiBhcihlLHQpe3ZhciBuPXQuY29tcG9uZW50T3B0aW9ucztpZighKEQobikmJiExPT09bi5DdG9yLm9wdGlvbnMuaW5oZXJpdEF0dHJzfHxNKGUuZGF0YS5hdHRycykmJk0odC5kYXRhLmF0dHJzKSkpe3ZhciByLGksbz10LmVsbSxhPWUuZGF0YS5hdHRyc3x8e30scz10LmRhdGEuYXR0cnN8fHt9O2ZvcihyIGluIEQocy5fX29iX18pJiYocz10LmRhdGEuYXR0cnM9bSh7fSxzKSkscylpPXNbcl0sYVtyXSE9PWkmJnNyKG8scixpKTtmb3IociBpbihLfHxxKSYmcy52YWx1ZSE9PWEudmFsdWUmJnNyKG8sInZhbHVlIixzLnZhbHVlKSxhKU0oc1tyXSkmJihObihyKT9vLnJlbW92ZUF0dHJpYnV0ZU5TKGpuLExuKHIpKTpUbihyKXx8by5yZW1vdmVBdHRyaWJ1dGUocikpfX1mdW5jdGlvbiBzcihlLHQsbil7LTE8ZS50YWdOYW1lLmluZGV4T2YoIi0iKT9jcihlLHQsbik6RW4odCk/SW4obik/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6KG49ImFsbG93ZnVsbHNjcmVlbiI9PT10JiYiRU1CRUQiPT09ZS50YWdOYW1lPyJ0cnVlIjp0LGUuc2V0QXR0cmlidXRlKHQsbikpOlRuKHQpP2Uuc2V0QXR0cmlidXRlKHQsSW4obil8fCJmYWxzZSI9PT1uPyJmYWxzZSI6InRydWUiKTpObih0KT9JbihuKT9lLnJlbW92ZUF0dHJpYnV0ZU5TKGpuLExuKHQpKTplLnNldEF0dHJpYnV0ZU5TKGpuLHQsbik6Y3IoZSx0LG4pfWZ1bmN0aW9uIGNyKHQsZSxuKXtpZihJbihuKSl0LnJlbW92ZUF0dHJpYnV0ZShlKTtlbHNle2lmKEsmJiFKJiYiVEVYVEFSRUEiPT09dC50YWdOYW1lJiYicGxhY2Vob2xkZXIiPT09ZSYmIXQuX19pZXBoKXt2YXIgcj1mdW5jdGlvbihlKXtlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHIpfTt0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixyKSx0Ll9faWVwaD0hMH10LnNldEF0dHJpYnV0ZShlLG4pfX12YXIgbHI9e2NyZWF0ZTphcix1cGRhdGU6YXJ9O2Z1bmN0aW9uIHVyKGUsdCl7dmFyIG49dC5lbG0scj10LmRhdGEsaT1lLmRhdGE7aWYoIShNKHIuc3RhdGljQ2xhc3MpJiZNKHIuY2xhc3MpJiYoTShpKXx8TShpLnN0YXRpY0NsYXNzKSYmTShpLmNsYXNzKSkpKXt2YXIgbz1Nbih0KSxhPW4uX3RyYW5zaXRpb25DbGFzc2VzO0QoYSkmJihvPVBuKG8sRm4oYSkpKSxvIT09bi5fcHJldkNsYXNzJiYobi5zZXRBdHRyaWJ1dGUoImNsYXNzIixvKSxuLl9wcmV2Q2xhc3M9byl9fXZhciBmcixwcixkcix2cixocixtcix5cj17Y3JlYXRlOnVyLHVwZGF0ZTp1cn0sZ3I9L1tcdykuK1wtXyRcXV0vO2Z1bmN0aW9uIF9yKGUpe3ZhciB0LG4scixpLG8sYT0hMSxzPSExLGM9ITEsbD0hMSx1PTAsZj0wLHA9MCxkPTA7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylpZihuPXQsdD1lLmNoYXJDb2RlQXQociksYSkzOT09PXQmJjkyIT09biYmKGE9ITEpO2Vsc2UgaWYocykzND09PXQmJjkyIT09biYmKHM9ITEpO2Vsc2UgaWYoYyk5Nj09PXQmJjkyIT09biYmKGM9ITEpO2Vsc2UgaWYobCk0Nz09PXQmJjkyIT09biYmKGw9ITEpO2Vsc2UgaWYoMTI0IT09dHx8MTI0PT09ZS5jaGFyQ29kZUF0KHIrMSl8fDEyND09PWUuY2hhckNvZGVBdChyLTEpfHx1fHxmfHxwKXtzd2l0Y2godCl7Y2FzZSAzNDpzPSEwO2JyZWFrO2Nhc2UgMzk6YT0hMDticmVhaztjYXNlIDk2OmM9ITA7YnJlYWs7Y2FzZSA0MDpwKys7YnJlYWs7Y2FzZSA0MTpwLS07YnJlYWs7Y2FzZSA5MTpmKys7YnJlYWs7Y2FzZSA5MzpmLS07YnJlYWs7Y2FzZSAxMjM6dSsrO2JyZWFrO2Nhc2UgMTI1OnUtLX1pZig0Nz09PXQpe2Zvcih2YXIgdj1yLTEsaD12b2lkIDA7MDw9diYmIiAiPT09KGg9ZS5jaGFyQXQodikpO3YtLSk7aCYmZ3IudGVzdChoKXx8KGw9ITApfX1lbHNlIHZvaWQgMD09PWk/KGQ9cisxLGk9ZS5zbGljZSgwLHIpLnRyaW0oKSk6bSgpO2Z1bmN0aW9uIG0oKXsob3x8KG89W10pKS5wdXNoKGUuc2xpY2UoZCxyKS50cmltKCkpLGQ9cisxfWlmKHZvaWQgMD09PWk/aT1lLnNsaWNlKDAscikudHJpbSgpOjAhPT1kJiZtKCksbylmb3Iocj0wO3I8by5sZW5ndGg7cisrKWk9YnIoaSxvW3JdKTtyZXR1cm4gaX1mdW5jdGlvbiBicihlLHQpe3ZhciBuPXQuaW5kZXhPZigiKCIpO2lmKG48MClyZXR1cm4nX2YoIicrdCsnIikoJytlKyIpIjt2YXIgcj10LnNsaWNlKDAsbiksaT10LnNsaWNlKG4rMSk7cmV0dXJuJ19mKCInK3IrJyIpKCcrZSsoIikiIT09aT8iLCIraTppKX1mdW5jdGlvbiAkcihlKXtjb25zb2xlLmVycm9yKCJbVnVlIGNvbXBpbGVyXTogIitlKX1mdW5jdGlvbiB3cihlLHQpe3JldHVybiBlP2UubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlW3RdfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk6W119ZnVuY3Rpb24gQ3IoZSx0LG4peyhlLnByb3BzfHwoZS5wcm9wcz1bXSkpLnB1c2goe25hbWU6dCx2YWx1ZTpufSksZS5wbGFpbj0hMX1mdW5jdGlvbiB4cihlLHQsbil7KGUuYXR0cnN8fChlLmF0dHJzPVtdKSkucHVzaCh7bmFtZTp0LHZhbHVlOm59KSxlLnBsYWluPSExfWZ1bmN0aW9uIGtyKGUsdCxuKXtlLmF0dHJzTWFwW3RdPW4sZS5hdHRyc0xpc3QucHVzaCh7bmFtZTp0LHZhbHVlOm59KX1mdW5jdGlvbiBBcihlLHQsbixyLGksbyl7dmFyIGE7KHI9cnx8eSkuY2FwdHVyZSYmKGRlbGV0ZSByLmNhcHR1cmUsdD0iISIrdCksci5vbmNlJiYoZGVsZXRlIHIub25jZSx0PSJ+Iit0KSxyLnBhc3NpdmUmJihkZWxldGUgci5wYXNzaXZlLHQ9IiYiK3QpLCJjbGljayI9PT10JiYoci5yaWdodD8odD0iY29udGV4dG1lbnUiLGRlbGV0ZSByLnJpZ2h0KTpyLm1pZGRsZSYmKHQ9Im1vdXNldXAiKSksci5uYXRpdmU/KGRlbGV0ZSByLm5hdGl2ZSxhPWUubmF0aXZlRXZlbnRzfHwoZS5uYXRpdmVFdmVudHM9e30pKTphPWUuZXZlbnRzfHwoZS5ldmVudHM9e30pO3ZhciBzPXt2YWx1ZTpuLnRyaW0oKX07ciE9PXkmJihzLm1vZGlmaWVycz1yKTt2YXIgYz1hW3RdO0FycmF5LmlzQXJyYXkoYyk/aT9jLnVuc2hpZnQocyk6Yy5wdXNoKHMpOmFbdF09Yz9pP1tzLGNdOltjLHNdOnMsZS5wbGFpbj0hMX1mdW5jdGlvbiBPcihlLHQsbil7dmFyIHI9U3IoZSwiOiIrdCl8fFNyKGUsInYtYmluZDoiK3QpO2lmKG51bGwhPXIpcmV0dXJuIF9yKHIpO2lmKCExIT09bil7dmFyIGk9U3IoZSx0KTtpZihudWxsIT1pKXJldHVybiBKU09OLnN0cmluZ2lmeShpKX19ZnVuY3Rpb24gU3IoZSx0LG4pe3ZhciByO2lmKG51bGwhPShyPWUuYXR0cnNNYXBbdF0pKWZvcih2YXIgaT1lLmF0dHJzTGlzdCxvPTAsYT1pLmxlbmd0aDtvPGE7bysrKWlmKGlbb10ubmFtZT09PXQpe2kuc3BsaWNlKG8sMSk7YnJlYWt9cmV0dXJuIG4mJmRlbGV0ZSBlLmF0dHJzTWFwW3RdLHJ9ZnVuY3Rpb24gVHIoZSx0LG4pe3ZhciByPW58fHt9LGk9ci5udW1iZXIsbz0iJCR2IixhPW87ci50cmltJiYoYT0iKHR5cGVvZiAkJHYgPT09ICdzdHJpbmcnPyAkJHYudHJpbSgpOiAkJHYpIiksaSYmKGE9Il9uKCIrYSsiKSIpO3ZhciBzPUVyKHQsYSk7ZS5tb2RlbD17dmFsdWU6IigiK3QrIikiLGV4cHJlc3Npb246JyInK3QrJyInLGNhbGxiYWNrOiJmdW5jdGlvbiAoJCR2KSB7IitzKyJ9In19ZnVuY3Rpb24gRXIoZSx0KXt2YXIgbj1mdW5jdGlvbihlKXtpZihlPWUudHJpbSgpLGZyPWUubGVuZ3RoLGUuaW5kZXhPZigiWyIpPDB8fGUubGFzdEluZGV4T2YoIl0iKTxmci0xKXJldHVybi0xPCh2cj1lLmxhc3RJbmRleE9mKCIuIikpP3tleHA6ZS5zbGljZSgwLHZyKSxrZXk6JyInK2Uuc2xpY2UodnIrMSkrJyInfTp7ZXhwOmUsa2V5Om51bGx9O3ByPWUsdnI9aHI9bXI9MDtmb3IoOyFOcigpOylMcihkcj1qcigpKT9Ncihkcik6OTE9PT1kciYmSXIoZHIpO3JldHVybntleHA6ZS5zbGljZSgwLGhyKSxrZXk6ZS5zbGljZShocisxLG1yKX19KGUpO3JldHVybiBudWxsPT09bi5rZXk/ZSsiPSIrdDoiJHNldCgiK24uZXhwKyIsICIrbi5rZXkrIiwgIit0KyIpIn1mdW5jdGlvbiBqcigpe3JldHVybiBwci5jaGFyQ29kZUF0KCsrdnIpfWZ1bmN0aW9uIE5yKCl7cmV0dXJuIGZyPD12cn1mdW5jdGlvbiBMcihlKXtyZXR1cm4gMzQ9PT1lfHwzOT09PWV9ZnVuY3Rpb24gSXIoZSl7dmFyIHQ9MTtmb3IoaHI9dnI7IU5yKCk7KWlmKExyKGU9anIoKSkpTXIoZSk7ZWxzZSBpZig5MT09PWUmJnQrKyw5Mz09PWUmJnQtLSwwPT09dCl7bXI9dnI7YnJlYWt9fWZ1bmN0aW9uIE1yKGUpe2Zvcih2YXIgdD1lOyFOcigpJiYoZT1qcigpKSE9PXQ7KTt9dmFyIERyLFByPSJfX3IiLEZyPSJfX2MiO2Z1bmN0aW9uIFJyKGUsdCxuLHIsaSl7dmFyIG8sYSxzLGMsbDt0PShvPXQpLl93aXRoVGFza3x8KG8uX3dpdGhUYXNrPWZ1bmN0aW9uKCl7SmU9ITA7dmFyIGU9by5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIEplPSExLGV9KSxuJiYoYT10LHM9ZSxjPXIsbD1Ecix0PWZ1bmN0aW9uIGUoKXtudWxsIT09YS5hcHBseShudWxsLGFyZ3VtZW50cykmJkhyKHMsZSxjLGwpfSksRHIuYWRkRXZlbnRMaXN0ZW5lcihlLHQsWj97Y2FwdHVyZTpyLHBhc3NpdmU6aX06cil9ZnVuY3Rpb24gSHIoZSx0LG4scil7KHJ8fERyKS5yZW1vdmVFdmVudExpc3RlbmVyKGUsdC5fd2l0aFRhc2t8fHQsbil9ZnVuY3Rpb24gQnIoZSx0KXtpZighTShlLmRhdGEub24pfHwhTSh0LmRhdGEub24pKXt2YXIgbj10LmRhdGEub258fHt9LHI9ZS5kYXRhLm9ufHx7fTtEcj10LmVsbSxmdW5jdGlvbihlKXtpZihEKGVbUHJdKSl7dmFyIHQ9Sz8iY2hhbmdlIjoiaW5wdXQiO2VbdF09W10uY29uY2F0KGVbUHJdLGVbdF18fFtdKSxkZWxldGUgZVtQcl19RChlW0ZyXSkmJihlLmNoYW5nZT1bXS5jb25jYXQoZVtGcl0sZS5jaGFuZ2V8fFtdKSxkZWxldGUgZVtGcl0pfShuKSxudChuLHIsUnIsSHIsdC5jb250ZXh0KSxEcj12b2lkIDB9fXZhciBVcj17Y3JlYXRlOkJyLHVwZGF0ZTpCcn07ZnVuY3Rpb24gVnIoZSx0KXtpZighTShlLmRhdGEuZG9tUHJvcHMpfHwhTSh0LmRhdGEuZG9tUHJvcHMpKXt2YXIgbixyLGksbyxhPXQuZWxtLHM9ZS5kYXRhLmRvbVByb3BzfHx7fSxjPXQuZGF0YS5kb21Qcm9wc3x8e307Zm9yKG4gaW4gRChjLl9fb2JfXykmJihjPXQuZGF0YS5kb21Qcm9wcz1tKHt9LGMpKSxzKU0oY1tuXSkmJihhW25dPSIiKTtmb3IobiBpbiBjKXtpZihyPWNbbl0sInRleHRDb250ZW50Ij09PW58fCJpbm5lckhUTUwiPT09bil7aWYodC5jaGlsZHJlbiYmKHQuY2hpbGRyZW4ubGVuZ3RoPTApLHI9PT1zW25dKWNvbnRpbnVlOzE9PT1hLmNoaWxkTm9kZXMubGVuZ3RoJiZhLnJlbW92ZUNoaWxkKGEuY2hpbGROb2Rlc1swXSl9aWYoInZhbHVlIj09PW4pe3ZhciBsPU0oYS5fdmFsdWU9cik/IiI6U3RyaW5nKHIpO289bCwoaT1hKS5jb21wb3Npbmd8fCJPUFRJT04iIT09aS50YWdOYW1lJiYhZnVuY3Rpb24oZSx0KXt2YXIgbj0hMDt0cnl7bj1kb2N1bWVudC5hY3RpdmVFbGVtZW50IT09ZX1jYXRjaChlKXt9cmV0dXJuIG4mJmUudmFsdWUhPT10fShpLG8pJiYhZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnZhbHVlLHI9ZS5fdk1vZGlmaWVycztpZihEKHIpKXtpZihyLmxhenkpcmV0dXJuITE7aWYoci5udW1iZXIpcmV0dXJuIEYobikhPT1GKHQpO2lmKHIudHJpbSlyZXR1cm4gbi50cmltKCkhPT10LnRyaW0oKX1yZXR1cm4gbiE9PXR9KGksbyl8fChhLnZhbHVlPWwpfWVsc2UgYVtuXT1yfX19dmFyIHpyPXtjcmVhdGU6VnIsdXBkYXRlOlZyfSxLcj1lKGZ1bmN0aW9uKGUpe3ZhciBuPXt9LHI9LzooLispLztyZXR1cm4gZS5zcGxpdCgvOyg/IVteKF0qXCkpL2cpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9ZS5zcGxpdChyKTsxPHQubGVuZ3RoJiYoblt0WzBdLnRyaW0oKV09dFsxXS50cmltKCkpfX0pLG59KTtmdW5jdGlvbiBKcihlKXt2YXIgdD1xcihlLnN0eWxlKTtyZXR1cm4gZS5zdGF0aWNTdHlsZT9tKGUuc3RhdGljU3R5bGUsdCk6dH1mdW5jdGlvbiBxcihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9iKGUpOiJzdHJpbmciPT10eXBlb2YgZT9LcihlKTplfXZhciBXcixHcj0vXi0tLyxacj0vXHMqIWltcG9ydGFudCQvLFhyPWZ1bmN0aW9uKGUsdCxuKXtpZihHci50ZXN0KHQpKWUuc3R5bGUuc2V0UHJvcGVydHkodCxuKTtlbHNlIGlmKFpyLnRlc3QobikpZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4ucmVwbGFjZShaciwiIiksImltcG9ydGFudCIpO2Vsc2V7dmFyIHI9UXIodCk7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspZS5zdHlsZVtyXT1uW2ldO2Vsc2UgZS5zdHlsZVtyXT1ufX0sWXI9WyJXZWJraXQiLCJNb3oiLCJtcyJdLFFyPWUoZnVuY3Rpb24oZSl7aWYoV3I9V3J8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJmaWx0ZXIiIT09KGU9ZyhlKSkmJmUgaW4gV3IpcmV0dXJuIGU7Zm9yKHZhciB0PWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxuPTA7bjxZci5sZW5ndGg7bisrKXt2YXIgcj1ZcltuXSt0O2lmKHIgaW4gV3IpcmV0dXJuIHJ9fSk7ZnVuY3Rpb24gZWkoZSx0KXt2YXIgbj10LmRhdGEscj1lLmRhdGE7aWYoIShNKG4uc3RhdGljU3R5bGUpJiZNKG4uc3R5bGUpJiZNKHIuc3RhdGljU3R5bGUpJiZNKHIuc3R5bGUpKSl7dmFyIGksbyxhPXQuZWxtLHM9ci5zdGF0aWNTdHlsZSxjPXIubm9ybWFsaXplZFN0eWxlfHxyLnN0eWxlfHx7fSxsPXN8fGMsdT1xcih0LmRhdGEuc3R5bGUpfHx7fTt0LmRhdGEubm9ybWFsaXplZFN0eWxlPUQodS5fX29iX18pP20oe30sdSk6dTt2YXIgZj1mdW5jdGlvbihlLHQpe3ZhciBuLHI9e307aWYodClmb3IodmFyIGk9ZTtpLmNvbXBvbmVudEluc3RhbmNlOykoaT1pLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSkmJmkuZGF0YSYmKG49SnIoaS5kYXRhKSkmJm0ocixuKTsobj1KcihlLmRhdGEpKSYmbShyLG4pO2Zvcih2YXIgbz1lO289by5wYXJlbnQ7KW8uZGF0YSYmKG49SnIoby5kYXRhKSkmJm0ocixuKTtyZXR1cm4gcn0odCwhMCk7Zm9yKG8gaW4gbClNKGZbb10pJiZYcihhLG8sIiIpO2ZvcihvIGluIGYpKGk9ZltvXSkhPT1sW29dJiZYcihhLG8sbnVsbD09aT8iIjppKX19dmFyIHRpPXtjcmVhdGU6ZWksdXBkYXRlOmVpfTtmdW5jdGlvbiBuaSh0LGUpe2lmKGUmJihlPWUudHJpbSgpKSlpZih0LmNsYXNzTGlzdCktMTxlLmluZGV4T2YoIiAiKT9lLnNwbGl0KC9ccysvKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNsYXNzTGlzdC5hZGQoZSl9KTp0LmNsYXNzTGlzdC5hZGQoZSk7ZWxzZXt2YXIgbj0iICIrKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIikrIiAiO24uaW5kZXhPZigiICIrZSsiICIpPDAmJnQuc2V0QXR0cmlidXRlKCJjbGFzcyIsKG4rZSkudHJpbSgpKX19ZnVuY3Rpb24gcmkodCxlKXtpZihlJiYoZT1lLnRyaW0oKSkpaWYodC5jbGFzc0xpc3QpLTE8ZS5pbmRleE9mKCIgIik/ZS5zcGxpdCgvXHMrLykuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdC5jbGFzc0xpc3QucmVtb3ZlKGUpfSk6dC5jbGFzc0xpc3QucmVtb3ZlKGUpLHQuY2xhc3NMaXN0Lmxlbmd0aHx8dC5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIik7ZWxzZXtmb3IodmFyIG49IiAiKyh0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIixyPSIgIitlKyIgIjswPD1uLmluZGV4T2Yocik7KW49bi5yZXBsYWNlKHIsIiAiKTsobj1uLnRyaW0oKSk/dC5zZXRBdHRyaWJ1dGUoImNsYXNzIixuKTp0LnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKX19ZnVuY3Rpb24gaWkoZSl7aWYoZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgdD17fTtyZXR1cm4hMSE9PWUuY3NzJiZtKHQsb2koZS5uYW1lfHwidiIpKSxtKHQsZSksdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/b2koZSk6dm9pZCAwfX12YXIgb2k9ZShmdW5jdGlvbihlKXtyZXR1cm57ZW50ZXJDbGFzczplKyItZW50ZXIiLGVudGVyVG9DbGFzczplKyItZW50ZXItdG8iLGVudGVyQWN0aXZlQ2xhc3M6ZSsiLWVudGVyLWFjdGl2ZSIsbGVhdmVDbGFzczplKyItbGVhdmUiLGxlYXZlVG9DbGFzczplKyItbGVhdmUtdG8iLGxlYXZlQWN0aXZlQ2xhc3M6ZSsiLWxlYXZlLWFjdGl2ZSJ9fSksYWk9QiYmIUosc2k9InRyYW5zaXRpb24iLGNpPSJhbmltYXRpb24iLGxpPSJ0cmFuc2l0aW9uIix1aT0idHJhbnNpdGlvbmVuZCIsZmk9ImFuaW1hdGlvbiIscGk9ImFuaW1hdGlvbmVuZCI7YWkmJih2b2lkIDA9PT13aW5kb3cub250cmFuc2l0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXR0cmFuc2l0aW9uZW5kJiYobGk9IldlYmtpdFRyYW5zaXRpb24iLHVpPSJ3ZWJraXRUcmFuc2l0aW9uRW5kIiksdm9pZCAwPT09d2luZG93Lm9uYW5pbWF0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQmJihmaT0iV2Via2l0QW5pbWF0aW9uIixwaT0id2Via2l0QW5pbWF0aW9uRW5kIikpO3ZhciBkaT1CP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6c2V0VGltZW91dDpmdW5jdGlvbihlKXtyZXR1cm4gZSgpfTtmdW5jdGlvbiB2aShlKXtkaShmdW5jdGlvbigpe2RpKGUpfSl9ZnVuY3Rpb24gaGkoZSx0KXt2YXIgbj1lLl90cmFuc2l0aW9uQ2xhc3Nlc3x8KGUuX3RyYW5zaXRpb25DbGFzc2VzPVtdKTtuLmluZGV4T2YodCk8MCYmKG4ucHVzaCh0KSxuaShlLHQpKX1mdW5jdGlvbiBtaShlLHQpe2UuX3RyYW5zaXRpb25DbGFzc2VzJiZmKGUuX3RyYW5zaXRpb25DbGFzc2VzLHQpLHJpKGUsdCl9ZnVuY3Rpb24geWkodCxlLG4pe3ZhciByPV9pKHQsZSksaT1yLnR5cGUsbz1yLnRpbWVvdXQsYT1yLnByb3BDb3VudDtpZighaSlyZXR1cm4gbigpO3ZhciBzPWk9PT1zaT91aTpwaSxjPTAsbD1mdW5jdGlvbigpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLHUpLG4oKX0sdT1mdW5jdGlvbihlKXtlLnRhcmdldD09PXQmJisrYz49YSYmbCgpfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YzxhJiZsKCl9LG8rMSksdC5hZGRFdmVudExpc3RlbmVyKHMsdSl9dmFyIGdpPS9cYih0cmFuc2Zvcm18YWxsKSgsfCQpLztmdW5jdGlvbiBfaShlLHQpe3ZhciBuLHI9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSksaT1yW2xpKyJEZWxheSJdLnNwbGl0KCIsICIpLG89cltsaSsiRHVyYXRpb24iXS5zcGxpdCgiLCAiKSxhPWJpKGksbykscz1yW2ZpKyJEZWxheSJdLnNwbGl0KCIsICIpLGM9cltmaSsiRHVyYXRpb24iXS5zcGxpdCgiLCAiKSxsPWJpKHMsYyksdT0wLGY9MDtyZXR1cm4gdD09PXNpPzA8YSYmKG49c2ksdT1hLGY9by5sZW5ndGgpOnQ9PT1jaT8wPGwmJihuPWNpLHU9bCxmPWMubGVuZ3RoKTpmPShuPTA8KHU9TWF0aC5tYXgoYSxsKSk/bDxhP3NpOmNpOm51bGwpP249PT1zaT9vLmxlbmd0aDpjLmxlbmd0aDowLHt0eXBlOm4sdGltZW91dDp1LHByb3BDb3VudDpmLGhhc1RyYW5zZm9ybTpuPT09c2kmJmdpLnRlc3QocltsaSsiUHJvcGVydHkiXSl9fWZ1bmN0aW9uIGJpKG4sZSl7Zm9yKDtuLmxlbmd0aDxlLmxlbmd0aDspbj1uLmNvbmNhdChuKTtyZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCxlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiAkaShlKSskaShuW3RdKX0pKX1mdW5jdGlvbiAkaShlKXtyZXR1cm4gMWUzKk51bWJlcihlLnNsaWNlKDAsLTEpKX1mdW5jdGlvbiB3aShuLGUpe3ZhciByPW4uZWxtO0Qoci5fbGVhdmVDYikmJihyLl9sZWF2ZUNiLmNhbmNlbGxlZD0hMCxyLl9sZWF2ZUNiKCkpO3ZhciB0PWlpKG4uZGF0YS50cmFuc2l0aW9uKTtpZighTSh0KSYmIUQoci5fZW50ZXJDYikmJjE9PT1yLm5vZGVUeXBlKXtmb3IodmFyIGk9dC5jc3Msbz10LnR5cGUsYT10LmVudGVyQ2xhc3Mscz10LmVudGVyVG9DbGFzcyxjPXQuZW50ZXJBY3RpdmVDbGFzcyxsPXQuYXBwZWFyQ2xhc3MsdT10LmFwcGVhclRvQ2xhc3MsZj10LmFwcGVhckFjdGl2ZUNsYXNzLHA9dC5iZWZvcmVFbnRlcixkPXQuZW50ZXIsdj10LmFmdGVyRW50ZXIsaD10LmVudGVyQ2FuY2VsbGVkLG09dC5iZWZvcmVBcHBlYXIseT10LmFwcGVhcixnPXQuYWZ0ZXJBcHBlYXIsXz10LmFwcGVhckNhbmNlbGxlZCxiPXQuZHVyYXRpb24sJD1tdCx3PW10LiR2bm9kZTt3JiZ3LnBhcmVudDspJD0odz13LnBhcmVudCkuY29udGV4dDt2YXIgQz0hJC5faXNNb3VudGVkfHwhbi5pc1Jvb3RJbnNlcnQ7aWYoIUN8fHl8fCIiPT09eSl7dmFyIHg9QyYmbD9sOmEsaz1DJiZmP2Y6YyxBPUMmJnU/dTpzLE89QyYmbXx8cCxTPUMmJiJmdW5jdGlvbiI9PXR5cGVvZiB5P3k6ZCxUPUMmJmd8fHYsRT1DJiZffHxoLGo9RihQKGIpP2IuZW50ZXI6YiksTj0hMSE9PWkmJiFKLEw9a2koUyksST1yLl9lbnRlckNiPVIoZnVuY3Rpb24oKXtOJiYobWkocixBKSxtaShyLGspKSxJLmNhbmNlbGxlZD8oTiYmbWkocix4KSxFJiZFKHIpKTpUJiZUKHIpLHIuX2VudGVyQ2I9bnVsbH0pO24uZGF0YS5zaG93fHxydChuLCJpbnNlcnQiLGZ1bmN0aW9uKCl7dmFyIGU9ci5wYXJlbnROb2RlLHQ9ZSYmZS5fcGVuZGluZyYmZS5fcGVuZGluZ1tuLmtleV07dCYmdC50YWc9PT1uLnRhZyYmdC5lbG0uX2xlYXZlQ2ImJnQuZWxtLl9sZWF2ZUNiKCksUyYmUyhyLEkpfSksTyYmTyhyKSxOJiYoaGkocix4KSxoaShyLGspLHZpKGZ1bmN0aW9uKCl7bWkocix4KSxJLmNhbmNlbGxlZHx8KGhpKHIsQSksTHx8KHhpKGopP3NldFRpbWVvdXQoSSxqKTp5aShyLG8sSSkpKX0pKSxuLmRhdGEuc2hvdyYmKGUmJmUoKSxTJiZTKHIsSSkpLE58fEx8fEkoKX19fWZ1bmN0aW9uIENpKGUsdCl7dmFyIG49ZS5lbG07RChuLl9lbnRlckNiKSYmKG4uX2VudGVyQ2IuY2FuY2VsbGVkPSEwLG4uX2VudGVyQ2IoKSk7dmFyIHI9aWkoZS5kYXRhLnRyYW5zaXRpb24pO2lmKE0ocil8fDEhPT1uLm5vZGVUeXBlKXJldHVybiB0KCk7aWYoIUQobi5fbGVhdmVDYikpe3ZhciBpPXIuY3NzLG89ci50eXBlLGE9ci5sZWF2ZUNsYXNzLHM9ci5sZWF2ZVRvQ2xhc3MsYz1yLmxlYXZlQWN0aXZlQ2xhc3MsbD1yLmJlZm9yZUxlYXZlLHU9ci5sZWF2ZSxmPXIuYWZ0ZXJMZWF2ZSxwPXIubGVhdmVDYW5jZWxsZWQsZD1yLmRlbGF5TGVhdmUsdj1yLmR1cmF0aW9uLGg9ITEhPT1pJiYhSixtPWtpKHUpLHk9RihQKHYpP3YubGVhdmU6diksZz1uLl9sZWF2ZUNiPVIoZnVuY3Rpb24oKXtuLnBhcmVudE5vZGUmJm4ucGFyZW50Tm9kZS5fcGVuZGluZyYmKG4ucGFyZW50Tm9kZS5fcGVuZGluZ1tlLmtleV09bnVsbCksaCYmKG1pKG4scyksbWkobixjKSksZy5jYW5jZWxsZWQ/KGgmJm1pKG4sYSkscCYmcChuKSk6KHQoKSxmJiZmKG4pKSxuLl9sZWF2ZUNiPW51bGx9KTtkP2QoXyk6XygpfWZ1bmN0aW9uIF8oKXtnLmNhbmNlbGxlZHx8KGUuZGF0YS5zaG93fHwoKG4ucGFyZW50Tm9kZS5fcGVuZGluZ3x8KG4ucGFyZW50Tm9kZS5fcGVuZGluZz17fSkpW2Uua2V5XT1lKSxsJiZsKG4pLGgmJihoaShuLGEpLGhpKG4sYyksdmkoZnVuY3Rpb24oKXttaShuLGEpLGcuY2FuY2VsbGVkfHwoaGkobixzKSxtfHwoeGkoeSk/c2V0VGltZW91dChnLHkpOnlpKG4sbyxnKSkpfSkpLHUmJnUobixnKSxofHxtfHxnKCkpfX1mdW5jdGlvbiB4aShlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUmJiFpc05hTihlKX1mdW5jdGlvbiBraShlKXtpZihNKGUpKXJldHVybiExO3ZhciB0PWUuZm5zO3JldHVybiBEKHQpP2tpKEFycmF5LmlzQXJyYXkodCk/dFswXTp0KToxPChlLl9sZW5ndGh8fGUubGVuZ3RoKX1mdW5jdGlvbiBBaShlLHQpeyEwIT09dC5kYXRhLnNob3cmJndpKHQpfXZhciBPaT1mdW5jdGlvbihlKXt2YXIgcix0LGc9e30sbj1lLm1vZHVsZXMsXz1lLm5vZGVPcHM7Zm9yKHI9MDtyPFhuLmxlbmd0aDsrK3IpZm9yKGdbWG5bcl1dPVtdLHQ9MDt0PG4ubGVuZ3RoOysrdClEKG5bdF1bWG5bcl1dKSYmZ1tYbltyXV0ucHVzaChuW3RdW1huW3JdXSk7ZnVuY3Rpb24gbyhlKXt2YXIgdD1fLnBhcmVudE5vZGUoZSk7RCh0KSYmXy5yZW1vdmVDaGlsZCh0LGUpfWZ1bmN0aW9uIGIoZSx0LG4scixpLG8sYSl7aWYoRChlLmVsbSkmJkQobykmJihlPW9bYV09ZGUoZSkpLGUuaXNSb290SW5zZXJ0PSFpLCFmdW5jdGlvbihlLHQsbixyKXt2YXIgaT1lLmRhdGE7aWYoRChpKSl7dmFyIG89RChlLmNvbXBvbmVudEluc3RhbmNlKSYmaS5rZWVwQWxpdmU7aWYoRChpPWkuaG9vaykmJkQoaT1pLmluaXQpJiZpKGUsITEsbixyKSxEKGUuY29tcG9uZW50SW5zdGFuY2UpKXJldHVybiBkKGUsdCksUyhvKSYmZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBpLG89ZTtvLmNvbXBvbmVudEluc3RhbmNlOylpZihvPW8uY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLEQoaT1vLmRhdGEpJiZEKGk9aS50cmFuc2l0aW9uKSl7Zm9yKGk9MDtpPGcuYWN0aXZhdGUubGVuZ3RoOysraSlnLmFjdGl2YXRlW2ldKFpuLG8pO3QucHVzaChvKTticmVha311KG4sZS5lbG0scil9KGUsdCxuLHIpLCEwfX0oZSx0LG4scikpe3ZhciBzPWUuZGF0YSxjPWUuY2hpbGRyZW4sbD1lLnRhZztEKGwpPyhlLmVsbT1lLm5zP18uY3JlYXRlRWxlbWVudE5TKGUubnMsbCk6Xy5jcmVhdGVFbGVtZW50KGwsZSksZihlKSx2KGUsYyx0KSxEKHMpJiZoKGUsdCkpOlMoZS5pc0NvbW1lbnQpP2UuZWxtPV8uY3JlYXRlQ29tbWVudChlLnRleHQpOmUuZWxtPV8uY3JlYXRlVGV4dE5vZGUoZS50ZXh0KSx1KG4sZS5lbG0scil9fWZ1bmN0aW9uIGQoZSx0KXtEKGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSYmKHQucHVzaC5hcHBseSh0LGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSxlLmRhdGEucGVuZGluZ0luc2VydD1udWxsKSxlLmVsbT1lLmNvbXBvbmVudEluc3RhbmNlLiRlbCwkKGUpPyhoKGUsdCksZihlKSk6KEduKGUpLHQucHVzaChlKSl9ZnVuY3Rpb24gdShlLHQsbil7RChlKSYmKEQobik/bi5wYXJlbnROb2RlPT09ZSYmXy5pbnNlcnRCZWZvcmUoZSx0LG4pOl8uYXBwZW5kQ2hpbGQoZSx0KSl9ZnVuY3Rpb24gdihlLHQsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrciliKHRbcl0sbixlLmVsbSxudWxsLCEwLHQscik7ZWxzZSBUKGUudGV4dCkmJl8uYXBwZW5kQ2hpbGQoZS5lbG0sXy5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoZS50ZXh0KSkpfWZ1bmN0aW9uICQoZSl7Zm9yKDtlLmNvbXBvbmVudEluc3RhbmNlOyllPWUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO3JldHVybiBEKGUudGFnKX1mdW5jdGlvbiBoKGUsdCl7Zm9yKHZhciBuPTA7bjxnLmNyZWF0ZS5sZW5ndGg7KytuKWcuY3JlYXRlW25dKFpuLGUpO0Qocj1lLmRhdGEuaG9vaykmJihEKHIuY3JlYXRlKSYmci5jcmVhdGUoWm4sZSksRChyLmluc2VydCkmJnQucHVzaChlKSl9ZnVuY3Rpb24gZihlKXt2YXIgdDtpZihEKHQ9ZS5mblNjb3BlSWQpKV8uc2V0U3R5bGVTY29wZShlLmVsbSx0KTtlbHNlIGZvcih2YXIgbj1lO247KUQodD1uLmNvbnRleHQpJiZEKHQ9dC4kb3B0aW9ucy5fc2NvcGVJZCkmJl8uc2V0U3R5bGVTY29wZShlLmVsbSx0KSxuPW4ucGFyZW50O0QodD1tdCkmJnQhPT1lLmNvbnRleHQmJnQhPT1lLmZuQ29udGV4dCYmRCh0PXQuJG9wdGlvbnMuX3Njb3BlSWQpJiZfLnNldFN0eWxlU2NvcGUoZS5lbG0sdCl9ZnVuY3Rpb24geShlLHQsbixyLGksbyl7Zm9yKDtyPD1pOysrciliKG5bcl0sbyxlLHQsITEsbixyKX1mdW5jdGlvbiB3KGUpe3ZhciB0LG4scj1lLmRhdGE7aWYoRChyKSlmb3IoRCh0PXIuaG9vaykmJkQodD10LmRlc3Ryb3kpJiZ0KGUpLHQ9MDt0PGcuZGVzdHJveS5sZW5ndGg7Kyt0KWcuZGVzdHJveVt0XShlKTtpZihEKHQ9ZS5jaGlsZHJlbikpZm9yKG49MDtuPGUuY2hpbGRyZW4ubGVuZ3RoOysrbil3KGUuY2hpbGRyZW5bbl0pfWZ1bmN0aW9uIEMoZSx0LG4scil7Zm9yKDtuPD1yOysrbil7dmFyIGk9dFtuXTtEKGkpJiYoRChpLnRhZyk/KGEoaSksdyhpKSk6byhpLmVsbSkpfX1mdW5jdGlvbiBhKGUsdCl7aWYoRCh0KXx8RChlLmRhdGEpKXt2YXIgbixyPWcucmVtb3ZlLmxlbmd0aCsxO2ZvcihEKHQpP3QubGlzdGVuZXJzKz1yOnQ9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKCl7MD09LS1uLmxpc3RlbmVycyYmbyhlKX1yZXR1cm4gbi5saXN0ZW5lcnM9dCxufShlLmVsbSxyKSxEKG49ZS5jb21wb25lbnRJbnN0YW5jZSkmJkQobj1uLl92bm9kZSkmJkQobi5kYXRhKSYmYShuLHQpLG49MDtuPGcucmVtb3ZlLmxlbmd0aDsrK24pZy5yZW1vdmVbbl0oZSx0KTtEKG49ZS5kYXRhLmhvb2spJiZEKG49bi5yZW1vdmUpP24oZSx0KTp0KCl9ZWxzZSBvKGUuZWxtKX1mdW5jdGlvbiB4KGUsdCxuLHIpe2Zvcih2YXIgaT1uO2k8cjtpKyspe3ZhciBvPXRbaV07aWYoRChvKSYmWW4oZSxvKSlyZXR1cm4gaX19ZnVuY3Rpb24gayhlLHQsbixyKXtpZihlIT09dCl7dmFyIGk9dC5lbG09ZS5lbG07aWYoUyhlLmlzQXN5bmNQbGFjZWhvbGRlcikpRCh0LmFzeW5jRmFjdG9yeS5yZXNvbHZlZCk/TyhlLmVsbSx0LG4pOnQuaXNBc3luY1BsYWNlaG9sZGVyPSEwO2Vsc2UgaWYoUyh0LmlzU3RhdGljKSYmUyhlLmlzU3RhdGljKSYmdC5rZXk9PT1lLmtleSYmKFModC5pc0Nsb25lZCl8fFModC5pc09uY2UpKSl0LmNvbXBvbmVudEluc3RhbmNlPWUuY29tcG9uZW50SW5zdGFuY2U7ZWxzZXt2YXIgbyxhPXQuZGF0YTtEKGEpJiZEKG89YS5ob29rKSYmRChvPW8ucHJlcGF0Y2gpJiZvKGUsdCk7dmFyIHM9ZS5jaGlsZHJlbixjPXQuY2hpbGRyZW47aWYoRChhKSYmJCh0KSl7Zm9yKG89MDtvPGcudXBkYXRlLmxlbmd0aDsrK28pZy51cGRhdGVbb10oZSx0KTtEKG89YS5ob29rKSYmRChvPW8udXBkYXRlKSYmbyhlLHQpfU0odC50ZXh0KT9EKHMpJiZEKGMpP3MhPT1jJiZmdW5jdGlvbihlLHQsbixyLGkpe2Zvcih2YXIgbyxhLHMsYz0wLGw9MCx1PXQubGVuZ3RoLTEsZj10WzBdLHA9dFt1XSxkPW4ubGVuZ3RoLTEsdj1uWzBdLGg9bltkXSxtPSFpO2M8PXUmJmw8PWQ7KU0oZik/Zj10WysrY106TShwKT9wPXRbLS11XTpZbihmLHYpPyhrKGYsdixyKSxmPXRbKytjXSx2PW5bKytsXSk6WW4ocCxoKT8oayhwLGgscikscD10Wy0tdV0saD1uWy0tZF0pOlluKGYsaCk/KGsoZixoLHIpLG0mJl8uaW5zZXJ0QmVmb3JlKGUsZi5lbG0sXy5uZXh0U2libGluZyhwLmVsbSkpLGY9dFsrK2NdLGg9blstLWRdKTooWW4ocCx2KT8oayhwLHYsciksbSYmXy5pbnNlcnRCZWZvcmUoZSxwLmVsbSxmLmVsbSkscD10Wy0tdV0pOihNKG8pJiYobz1Rbih0LGMsdSkpLE0oYT1EKHYua2V5KT9vW3Yua2V5XTp4KHYsdCxjLHUpKT9iKHYscixlLGYuZWxtLCExLG4sbCk6WW4ocz10W2FdLHYpPyhrKHMsdixyKSx0W2FdPXZvaWQgMCxtJiZfLmluc2VydEJlZm9yZShlLHMuZWxtLGYuZWxtKSk6Yih2LHIsZSxmLmVsbSwhMSxuLGwpKSx2PW5bKytsXSk7dTxjP3koZSxNKG5bZCsxXSk/bnVsbDpuW2QrMV0uZWxtLG4sbCxkLHIpOmQ8bCYmQygwLHQsYyx1KX0oaSxzLGMsbixyKTpEKGMpPyhEKGUudGV4dCkmJl8uc2V0VGV4dENvbnRlbnQoaSwiIikseShpLG51bGwsYywwLGMubGVuZ3RoLTEsbikpOkQocyk/QygwLHMsMCxzLmxlbmd0aC0xKTpEKGUudGV4dCkmJl8uc2V0VGV4dENvbnRlbnQoaSwiIik6ZS50ZXh0IT09dC50ZXh0JiZfLnNldFRleHRDb250ZW50KGksdC50ZXh0KSxEKGEpJiZEKG89YS5ob29rKSYmRChvPW8ucG9zdHBhdGNoKSYmbyhlLHQpfX19ZnVuY3Rpb24gQShlLHQsbil7aWYoUyhuKSYmRChlLnBhcmVudCkpZS5wYXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0PXQ7ZWxzZSBmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcil0W3JdLmRhdGEuaG9vay5pbnNlcnQodFtyXSl9dmFyIG09cygiYXR0cnMsY2xhc3Msc3RhdGljQ2xhc3Msc3RhdGljU3R5bGUsa2V5Iik7ZnVuY3Rpb24gTyhlLHQsbixyKXt2YXIgaSxvPXQudGFnLGE9dC5kYXRhLHM9dC5jaGlsZHJlbjtpZihyPXJ8fGEmJmEucHJlLHQuZWxtPWUsUyh0LmlzQ29tbWVudCkmJkQodC5hc3luY0ZhY3RvcnkpKXJldHVybiB0LmlzQXN5bmNQbGFjZWhvbGRlcj0hMDtpZihEKGEpJiYoRChpPWEuaG9vaykmJkQoaT1pLmluaXQpJiZpKHQsITApLEQoaT10LmNvbXBvbmVudEluc3RhbmNlKSkpcmV0dXJuIGQodCxuKSwhMDtpZihEKG8pKXtpZihEKHMpKWlmKGUuaGFzQ2hpbGROb2RlcygpKWlmKEQoaT1hKSYmRChpPWkuZG9tUHJvcHMpJiZEKGk9aS5pbm5lckhUTUwpKXtpZihpIT09ZS5pbm5lckhUTUwpcmV0dXJuITF9ZWxzZXtmb3IodmFyIGM9ITAsbD1lLmZpcnN0Q2hpbGQsdT0wO3U8cy5sZW5ndGg7dSsrKXtpZighbHx8IU8obCxzW3VdLG4scikpe2M9ITE7YnJlYWt9bD1sLm5leHRTaWJsaW5nfWlmKCFjfHxsKXJldHVybiExfWVsc2Ugdih0LHMsbik7aWYoRChhKSl7dmFyIGY9ITE7Zm9yKHZhciBwIGluIGEpaWYoIW0ocCkpe2Y9ITAsaCh0LG4pO2JyZWFrfSFmJiZhLmNsYXNzJiZZZShhLmNsYXNzKX19ZWxzZSBlLmRhdGEhPT10LnRleHQmJihlLmRhdGE9dC50ZXh0KTtyZXR1cm4hMH1yZXR1cm4gZnVuY3Rpb24oZSx0LG4scixpLG8pe2lmKCFNKHQpKXt2YXIgYSxzPSExLGM9W107aWYoTShlKSlzPSEwLGIodCxjLGksbyk7ZWxzZXt2YXIgbD1EKGUubm9kZVR5cGUpO2lmKCFsJiZZbihlLHQpKWsoZSx0LGMscik7ZWxzZXtpZihsKXtpZigxPT09ZS5ub2RlVHlwZSYmZS5oYXNBdHRyaWJ1dGUoRSkmJihlLnJlbW92ZUF0dHJpYnV0ZShFKSxuPSEwKSxTKG4pJiZPKGUsdCxjKSlyZXR1cm4gQSh0LGMsITApLGU7YT1lLGU9bmV3IGxlKF8udGFnTmFtZShhKS50b0xvd2VyQ2FzZSgpLHt9LFtdLHZvaWQgMCxhKX12YXIgdT1lLmVsbSxmPV8ucGFyZW50Tm9kZSh1KTtpZihiKHQsYyx1Ll9sZWF2ZUNiP251bGw6ZixfLm5leHRTaWJsaW5nKHUpKSxEKHQucGFyZW50KSlmb3IodmFyIHA9dC5wYXJlbnQsZD0kKHQpO3A7KXtmb3IodmFyIHY9MDt2PGcuZGVzdHJveS5sZW5ndGg7Kyt2KWcuZGVzdHJveVt2XShwKTtpZihwLmVsbT10LmVsbSxkKXtmb3IodmFyIGg9MDtoPGcuY3JlYXRlLmxlbmd0aDsrK2gpZy5jcmVhdGVbaF0oWm4scCk7dmFyIG09cC5kYXRhLmhvb2suaW5zZXJ0O2lmKG0ubWVyZ2VkKWZvcih2YXIgeT0xO3k8bS5mbnMubGVuZ3RoO3krKyltLmZuc1t5XSgpfWVsc2UgR24ocCk7cD1wLnBhcmVudH1EKGYpP0MoMCxbZV0sMCwwKTpEKGUudGFnKSYmdyhlKX19cmV0dXJuIEEodCxjLHMpLHQuZWxtfUQoZSkmJncoZSl9fSh7bm9kZU9wczpxbixtb2R1bGVzOltscix5cixVcix6cix0aSxCP3tjcmVhdGU6QWksYWN0aXZhdGU6QWkscmVtb3ZlOmZ1bmN0aW9uKGUsdCl7ITAhPT1lLmRhdGEuc2hvdz9DaShlLHQpOnQoKX19Ont9XS5jb25jYXQob3IpfSk7SiYmZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIixmdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7ZSYmZS52bW9kZWwmJk1pKGUsImlucHV0Iil9KTt2YXIgU2k9e2luc2VydGVkOmZ1bmN0aW9uKGUsdCxuLHIpeyJzZWxlY3QiPT09bi50YWc/KHIuZWxtJiYhci5lbG0uX3ZPcHRpb25zP3J0KG4sInBvc3RwYXRjaCIsZnVuY3Rpb24oKXtTaS5jb21wb25lbnRVcGRhdGVkKGUsdCxuKX0pOlRpKGUsdCxuLmNvbnRleHQpLGUuX3ZPcHRpb25zPVtdLm1hcC5jYWxsKGUub3B0aW9ucyxOaSkpOigidGV4dGFyZWEiPT09bi50YWd8fEtuKGUudHlwZSkpJiYoZS5fdk1vZGlmaWVycz10Lm1vZGlmaWVycyx0Lm1vZGlmaWVycy5sYXp5fHwoZS5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnN0YXJ0IixMaSksZS5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbmVuZCIsSWkpLGUuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixJaSksSiYmKGUudm1vZGVsPSEwKSkpfSxjb21wb25lbnRVcGRhdGVkOmZ1bmN0aW9uKGUsdCxuKXtpZigic2VsZWN0Ij09PW4udGFnKXtUaShlLHQsbi5jb250ZXh0KTt2YXIgcj1lLl92T3B0aW9ucyxpPWUuX3ZPcHRpb25zPVtdLm1hcC5jYWxsKGUub3B0aW9ucyxOaSk7aWYoaS5zb21lKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIUMoZSxyW3RdKX0pKShlLm11bHRpcGxlP3QudmFsdWUuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gamkoZSxpKX0pOnQudmFsdWUhPT10Lm9sZFZhbHVlJiZqaSh0LnZhbHVlLGkpKSYmTWkoZSwiY2hhbmdlIil9fX07ZnVuY3Rpb24gVGkoZSx0LG4pe0VpKGUsdCxuKSwoS3x8cSkmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtFaShlLHQsbil9LDApfWZ1bmN0aW9uIEVpKGUsdCxuKXt2YXIgcj10LnZhbHVlLGk9ZS5tdWx0aXBsZTtpZighaXx8QXJyYXkuaXNBcnJheShyKSl7Zm9yKHZhciBvLGEscz0wLGM9ZS5vcHRpb25zLmxlbmd0aDtzPGM7cysrKWlmKGE9ZS5vcHRpb25zW3NdLGkpbz0tMTx4KHIsTmkoYSkpLGEuc2VsZWN0ZWQhPT1vJiYoYS5zZWxlY3RlZD1vKTtlbHNlIGlmKEMoTmkoYSkscikpcmV0dXJuIHZvaWQoZS5zZWxlY3RlZEluZGV4IT09cyYmKGUuc2VsZWN0ZWRJbmRleD1zKSk7aXx8KGUuc2VsZWN0ZWRJbmRleD0tMSl9fWZ1bmN0aW9uIGppKHQsZSl7cmV0dXJuIGUuZXZlcnkoZnVuY3Rpb24oZSl7cmV0dXJuIUMoZSx0KX0pfWZ1bmN0aW9uIE5pKGUpe3JldHVybiJfdmFsdWUiaW4gZT9lLl92YWx1ZTplLnZhbHVlfWZ1bmN0aW9uIExpKGUpe2UudGFyZ2V0LmNvbXBvc2luZz0hMH1mdW5jdGlvbiBJaShlKXtlLnRhcmdldC5jb21wb3NpbmcmJihlLnRhcmdldC5jb21wb3Npbmc9ITEsTWkoZS50YXJnZXQsImlucHV0IikpfWZ1bmN0aW9uIE1pKGUsdCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkhUTUxFdmVudHMiKTtuLmluaXRFdmVudCh0LCEwLCEwKSxlLmRpc3BhdGNoRXZlbnQobil9ZnVuY3Rpb24gRGkoZSl7cmV0dXJuIWUuY29tcG9uZW50SW5zdGFuY2V8fGUuZGF0YSYmZS5kYXRhLnRyYW5zaXRpb24/ZTpEaShlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSl9dmFyIFBpPXttb2RlbDpTaSxzaG93OntiaW5kOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnZhbHVlLGk9KG49RGkobikpLmRhdGEmJm4uZGF0YS50cmFuc2l0aW9uLG89ZS5fX3ZPcmlnaW5hbERpc3BsYXk9Im5vbmUiPT09ZS5zdHlsZS5kaXNwbGF5PyIiOmUuc3R5bGUuZGlzcGxheTtyJiZpPyhuLmRhdGEuc2hvdz0hMCx3aShuLGZ1bmN0aW9uKCl7ZS5zdHlsZS5kaXNwbGF5PW99KSk6ZS5zdHlsZS5kaXNwbGF5PXI/bzoibm9uZSJ9LHVwZGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZTshciE9IXQub2xkVmFsdWUmJigobj1EaShuKSkuZGF0YSYmbi5kYXRhLnRyYW5zaXRpb24/KG4uZGF0YS5zaG93PSEwLHI/d2kobixmdW5jdGlvbigpe2Uuc3R5bGUuZGlzcGxheT1lLl9fdk9yaWdpbmFsRGlzcGxheX0pOkNpKG4sZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9Im5vbmUifSkpOmUuc3R5bGUuZGlzcGxheT1yP2UuX192T3JpZ2luYWxEaXNwbGF5OiJub25lIil9LHVuYmluZDpmdW5jdGlvbihlLHQsbixyLGkpe2l8fChlLnN0eWxlLmRpc3BsYXk9ZS5fX3ZPcmlnaW5hbERpc3BsYXkpfX19LEZpPXtuYW1lOlN0cmluZyxhcHBlYXI6Qm9vbGVhbixjc3M6Qm9vbGVhbixtb2RlOlN0cmluZyx0eXBlOlN0cmluZyxlbnRlckNsYXNzOlN0cmluZyxsZWF2ZUNsYXNzOlN0cmluZyxlbnRlclRvQ2xhc3M6U3RyaW5nLGxlYXZlVG9DbGFzczpTdHJpbmcsZW50ZXJBY3RpdmVDbGFzczpTdHJpbmcsbGVhdmVBY3RpdmVDbGFzczpTdHJpbmcsYXBwZWFyQ2xhc3M6U3RyaW5nLGFwcGVhckFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJUb0NsYXNzOlN0cmluZyxkdXJhdGlvbjpbTnVtYmVyLFN0cmluZyxPYmplY3RdfTtmdW5jdGlvbiBSaShlKXt2YXIgdD1lJiZlLmNvbXBvbmVudE9wdGlvbnM7cmV0dXJuIHQmJnQuQ3Rvci5vcHRpb25zLmFic3RyYWN0P1JpKGx0KHQuY2hpbGRyZW4pKTplfWZ1bmN0aW9uIEhpKGUpe3ZhciB0PXt9LG49ZS4kb3B0aW9ucztmb3IodmFyIHIgaW4gbi5wcm9wc0RhdGEpdFtyXT1lW3JdO3ZhciBpPW4uX3BhcmVudExpc3RlbmVycztmb3IodmFyIG8gaW4gaSl0W2cobyldPWlbb107cmV0dXJuIHR9ZnVuY3Rpb24gQmkoZSx0KXtpZigvXGQta2VlcC1hbGl2ZSQvLnRlc3QodC50YWcpKXJldHVybiBlKCJrZWVwLWFsaXZlIix7cHJvcHM6dC5jb21wb25lbnRPcHRpb25zLnByb3BzRGF0YX0pfXZhciBVaT17bmFtZToidHJhbnNpdGlvbiIscHJvcHM6RmksYWJzdHJhY3Q6ITAscmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLiRzbG90cy5kZWZhdWx0O2lmKG4mJihuPW4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhZ3x8Y3QoZSl9KSkubGVuZ3RoKXt2YXIgcj10aGlzLm1vZGUsaT1uWzBdO2lmKGZ1bmN0aW9uKGUpe2Zvcig7ZT1lLnBhcmVudDspaWYoZS5kYXRhLnRyYW5zaXRpb24pcmV0dXJuITB9KHRoaXMuJHZub2RlKSlyZXR1cm4gaTt2YXIgbz1SaShpKTtpZighbylyZXR1cm4gaTtpZih0aGlzLl9sZWF2aW5nKXJldHVybiBCaShlLGkpO3ZhciBhPSJfX3RyYW5zaXRpb24tIit0aGlzLl91aWQrIi0iO28ua2V5PW51bGw9PW8ua2V5P28uaXNDb21tZW50P2ErImNvbW1lbnQiOmErby50YWc6VChvLmtleSk/MD09PVN0cmluZyhvLmtleSkuaW5kZXhPZihhKT9vLmtleTphK28ua2V5Om8ua2V5O3ZhciBzLGMsbD0oby5kYXRhfHwoby5kYXRhPXt9KSkudHJhbnNpdGlvbj1IaSh0aGlzKSx1PXRoaXMuX3Zub2RlLGY9UmkodSk7aWYoby5kYXRhLmRpcmVjdGl2ZXMmJm8uZGF0YS5kaXJlY3RpdmVzLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuInNob3ciPT09ZS5uYW1lfSkmJihvLmRhdGEuc2hvdz0hMCksZiYmZi5kYXRhJiYocz1vLChjPWYpLmtleSE9PXMua2V5fHxjLnRhZyE9PXMudGFnKSYmIWN0KGYpJiYoIWYuY29tcG9uZW50SW5zdGFuY2V8fCFmLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZS5pc0NvbW1lbnQpKXt2YXIgcD1mLmRhdGEudHJhbnNpdGlvbj1tKHt9LGwpO2lmKCJvdXQtaW4iPT09cilyZXR1cm4gdGhpcy5fbGVhdmluZz0hMCxydChwLCJhZnRlckxlYXZlIixmdW5jdGlvbigpe3QuX2xlYXZpbmc9ITEsdC4kZm9yY2VVcGRhdGUoKX0pLEJpKGUsaSk7aWYoImluLW91dCI9PT1yKXtpZihjdChvKSlyZXR1cm4gdTt2YXIgZCx2PWZ1bmN0aW9uKCl7ZCgpfTtydChsLCJhZnRlckVudGVyIix2KSxydChsLCJlbnRlckNhbmNlbGxlZCIsdikscnQocCwiZGVsYXlMZWF2ZSIsZnVuY3Rpb24oZSl7ZD1lfSl9fXJldHVybiBpfX19LFZpPW0oe3RhZzpTdHJpbmcsbW92ZUNsYXNzOlN0cmluZ30sRmkpO2Z1bmN0aW9uIHppKGUpe2UuZWxtLl9tb3ZlQ2ImJmUuZWxtLl9tb3ZlQ2IoKSxlLmVsbS5fZW50ZXJDYiYmZS5lbG0uX2VudGVyQ2IoKX1mdW5jdGlvbiBLaShlKXtlLmRhdGEubmV3UG9zPWUuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWZ1bmN0aW9uIEppKGUpe3ZhciB0PWUuZGF0YS5wb3Msbj1lLmRhdGEubmV3UG9zLHI9dC5sZWZ0LW4ubGVmdCxpPXQudG9wLW4udG9wO2lmKHJ8fGkpe2UuZGF0YS5tb3ZlZD0hMDt2YXIgbz1lLmVsbS5zdHlsZTtvLnRyYW5zZm9ybT1vLldlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIrcisicHgsIitpKyJweCkiLG8udHJhbnNpdGlvbkR1cmF0aW9uPSIwcyJ9fWRlbGV0ZSBWaS5tb2RlO3ZhciBxaT17VHJhbnNpdGlvbjpVaSxUcmFuc2l0aW9uR3JvdXA6e3Byb3BzOlZpLHJlbmRlcjpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50YWd8fHRoaXMuJHZub2RlLmRhdGEudGFnfHwic3BhbiIsbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGhpcy5wcmV2Q2hpbGRyZW49dGhpcy5jaGlsZHJlbixpPXRoaXMuJHNsb3RzLmRlZmF1bHR8fFtdLG89dGhpcy5jaGlsZHJlbj1bXSxhPUhpKHRoaXMpLHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIGM9aVtzXTtjLnRhZyYmbnVsbCE9Yy5rZXkmJjAhPT1TdHJpbmcoYy5rZXkpLmluZGV4T2YoIl9fdmxpc3QiKSYmKG8ucHVzaChjKSwoKG5bYy5rZXldPWMpLmRhdGF8fChjLmRhdGE9e30pKS50cmFuc2l0aW9uPWEpfWlmKHIpe2Zvcih2YXIgbD1bXSx1PVtdLGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIHA9cltmXTtwLmRhdGEudHJhbnNpdGlvbj1hLHAuZGF0YS5wb3M9cC5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbltwLmtleV0/bC5wdXNoKHApOnUucHVzaChwKX10aGlzLmtlcHQ9ZSh0LG51bGwsbCksdGhpcy5yZW1vdmVkPXV9cmV0dXJuIGUodCxudWxsLG8pfSxiZWZvcmVVcGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9fcGF0Y2hfXyh0aGlzLl92bm9kZSx0aGlzLmtlcHQsITEsITApLHRoaXMuX3Zub2RlPXRoaXMua2VwdH0sdXBkYXRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJldkNoaWxkcmVuLHI9dGhpcy5tb3ZlQ2xhc3N8fCh0aGlzLm5hbWV8fCJ2IikrIi1tb3ZlIjtlLmxlbmd0aCYmdGhpcy5oYXNNb3ZlKGVbMF0uZWxtLHIpJiYoZS5mb3JFYWNoKHppKSxlLmZvckVhY2goS2kpLGUuZm9yRWFjaChKaSksdGhpcy5fcmVmbG93PWRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0LGUuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmRhdGEubW92ZWQpe3ZhciBuPWUuZWxtLHQ9bi5zdHlsZTtoaShuLHIpLHQudHJhbnNmb3JtPXQuV2Via2l0VHJhbnNmb3JtPXQudHJhbnNpdGlvbkR1cmF0aW9uPSIiLG4uYWRkRXZlbnRMaXN0ZW5lcih1aSxuLl9tb3ZlQ2I9ZnVuY3Rpb24gZSh0KXt0JiYhL3RyYW5zZm9ybSQvLnRlc3QodC5wcm9wZXJ0eU5hbWUpfHwobi5yZW1vdmVFdmVudExpc3RlbmVyKHVpLGUpLG4uX21vdmVDYj1udWxsLG1pKG4scikpfSl9fSkpfSxtZXRob2RzOntoYXNNb3ZlOmZ1bmN0aW9uKGUsdCl7aWYoIWFpKXJldHVybiExO2lmKHRoaXMuX2hhc01vdmUpcmV0dXJuIHRoaXMuX2hhc01vdmU7dmFyIG49ZS5jbG9uZU5vZGUoKTtlLl90cmFuc2l0aW9uQ2xhc3NlcyYmZS5fdHJhbnNpdGlvbkNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihlKXtyaShuLGUpfSksbmkobix0KSxuLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuJGVsLmFwcGVuZENoaWxkKG4pO3ZhciByPV9pKG4pO3JldHVybiB0aGlzLiRlbC5yZW1vdmVDaGlsZChuKSx0aGlzLl9oYXNNb3ZlPXIuaGFzVHJhbnNmb3JtfX19fTtobi5jb25maWcubXVzdFVzZVByb3A9U24saG4uY29uZmlnLmlzUmVzZXJ2ZWRUYWc9VW4saG4uY29uZmlnLmlzUmVzZXJ2ZWRBdHRyPUFuLGhuLmNvbmZpZy5nZXRUYWdOYW1lc3BhY2U9Vm4saG4uY29uZmlnLmlzVW5rbm93bkVsZW1lbnQ9ZnVuY3Rpb24oZSl7aWYoIUIpcmV0dXJuITA7aWYoVW4oZSkpcmV0dXJuITE7aWYoZT1lLnRvTG93ZXJDYXNlKCksbnVsbCE9em5bZV0pcmV0dXJuIHpuW2VdO3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuLTE8ZS5pbmRleE9mKCItIik/em5bZV09dC5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MVW5rbm93bkVsZW1lbnR8fHQuY29uc3RydWN0b3I9PT13aW5kb3cuSFRNTEVsZW1lbnQ6em5bZV09L0hUTUxVbmtub3duRWxlbWVudC8udGVzdCh0LnRvU3RyaW5nKCkpfSxtKGhuLm9wdGlvbnMuZGlyZWN0aXZlcyxQaSksbShobi5vcHRpb25zLmNvbXBvbmVudHMscWkpLGhuLnByb3RvdHlwZS5fX3BhdGNoX189Qj9PaTokLGhuLnByb3RvdHlwZS4kbW91bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1lJiZCP0puKGUpOnZvaWQgMCxyPWUsaT10LChuPXRoaXMpLiRlbD1yLG4uJG9wdGlvbnMucmVuZGVyfHwobi4kb3B0aW9ucy5yZW5kZXI9ZmUpLF90KG4sImJlZm9yZU1vdW50IiksbmV3IFN0KG4sZnVuY3Rpb24oKXtuLl91cGRhdGUobi5fcmVuZGVyKCksaSl9LCQsbnVsbCwhMCksaT0hMSxudWxsPT1uLiR2bm9kZSYmKG4uX2lzTW91bnRlZD0hMCxfdChuLCJtb3VudGVkIikpLG47dmFyIG4scixpfSxCJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ai5kZXZ0b29scyYmUSYmUS5lbWl0KCJpbml0Iixobil9LDApO3ZhciBXaT0vXHtceygoPzoufFxuKSs/KVx9XH0vZyxHaT0vWy0uKis/XiR7fSgpfFtcXVwvXFxdL2csWmk9ZShmdW5jdGlvbihlKXt2YXIgdD1lWzBdLnJlcGxhY2UoR2ksIlxcJCYiKSxuPWVbMV0ucmVwbGFjZShHaSwiXFwkJiIpO3JldHVybiBuZXcgUmVnRXhwKHQrIigoPzoufFxcbikrPykiK24sImciKX0pO3ZhciBYaT17c3RhdGljS2V5czpbInN0YXRpY0NsYXNzIl0sdHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe3Qud2Fybjt2YXIgbj1TcihlLCJjbGFzcyIpO24mJihlLnN0YXRpY0NsYXNzPUpTT04uc3RyaW5naWZ5KG4pKTt2YXIgcj1PcihlLCJjbGFzcyIsITEpO3ImJihlLmNsYXNzQmluZGluZz1yKX0sZ2VuRGF0YTpmdW5jdGlvbihlKXt2YXIgdD0iIjtyZXR1cm4gZS5zdGF0aWNDbGFzcyYmKHQrPSJzdGF0aWNDbGFzczoiK2Uuc3RhdGljQ2xhc3MrIiwiKSxlLmNsYXNzQmluZGluZyYmKHQrPSJjbGFzczoiK2UuY2xhc3NCaW5kaW5nKyIsIiksdH19O3ZhciBZaSxRaT17c3RhdGljS2V5czpbInN0YXRpY1N0eWxlIl0sdHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe3Qud2Fybjt2YXIgbj1TcihlLCJzdHlsZSIpO24mJihlLnN0YXRpY1N0eWxlPUpTT04uc3RyaW5naWZ5KEtyKG4pKSk7dmFyIHI9T3IoZSwic3R5bGUiLCExKTtyJiYoZS5zdHlsZUJpbmRpbmc9cil9LGdlbkRhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7cmV0dXJuIGUuc3RhdGljU3R5bGUmJih0Kz0ic3RhdGljU3R5bGU6IitlLnN0YXRpY1N0eWxlKyIsIiksZS5zdHlsZUJpbmRpbmcmJih0Kz0ic3R5bGU6KCIrZS5zdHlsZUJpbmRpbmcrIiksIiksdH19LGVvPWZ1bmN0aW9uKGUpe3JldHVybihZaT1ZaXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1lLFlpLnRleHRDb250ZW50fSx0bz1zKCJhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbixsaW5rLG1ldGEscGFyYW0sc291cmNlLHRyYWNrLHdiciIpLG5vPXMoImNvbGdyb3VwLGRkLGR0LGxpLG9wdGlvbnMscCx0ZCx0Zm9vdCx0aCx0aGVhZCx0cixzb3VyY2UiKSxybz1zKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFzZSxibG9ja3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsZGV0YWlscyxkaWFsb2csZGl2LGRsLGR0LGZpZWxkc2V0LGZpZ2NhcHRpb24sZmlndXJlLGZvb3Rlcixmb3JtLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWQsaGVhZGVyLGhncm91cCxocixodG1sLGxlZ2VuZCxsaSxtZW51aXRlbSxtZXRhLG9wdGdyb3VwLG9wdGlvbixwYXJhbSxycCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0aXRsZSx0cix0cmFjayIpLGlvPS9eXHMqKFteXHMiJzw+XC89XSspKD86XHMqKD0pXHMqKD86IihbXiJdKikiK3wnKFteJ10qKScrfChbXlxzIic9PD5gXSspKSk/Lyxvbz0iW2EtekEtWl9dW1xcd1xcLVxcLl0qIixhbz0iKCg/OiIrb28rIlxcOik/IitvbysiKSIsc289bmV3IFJlZ0V4cCgiXjwiK2FvKSxjbz0vXlxzKihcLz8pPi8sbG89bmV3IFJlZ0V4cCgiXjxcXC8iK2FvKyJbXj5dKj4iKSx1bz0vXjwhRE9DVFlQRSBbXj5dKz4vaSxmbz0vXjwhXC0tLyxwbz0vXjwhXFsvLHZvPSExOyJ4Ii5yZXBsYWNlKC94KC4pPy9nLGZ1bmN0aW9uKGUsdCl7dm89IiI9PT10fSk7dmFyIGhvPXMoInNjcmlwdCxzdHlsZSx0ZXh0YXJlYSIsITApLG1vPXt9LHlvPXsiJmx0OyI6IjwiLCImZ3Q7IjoiPiIsIiZxdW90OyI6JyInLCImYW1wOyI6IiYiLCImIzEwOyI6IlxuIiwiJiM5OyI6Ilx0In0sZ289LyYoPzpsdHxndHxxdW90fGFtcCk7L2csX289LyYoPzpsdHxndHxxdW90fGFtcHwjMTB8IzkpOy9nLGJvPXMoInByZSx0ZXh0YXJlYSIsITApLCRvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmJvKGUpJiYiXG4iPT09dFswXX07dmFyIHdvLENvLHhvLGtvLEFvLE9vLFNvLFRvLEVvPS9eQHxedi1vbjovLGpvPS9edi18XkB8XjovLE5vPS8oW15dKj8pXHMrKD86aW58b2YpXHMrKFteXSopLyxMbz0vLChbXixcfVxdXSopKD86LChbXixcfVxdXSopKT8kLyxJbz0vXlwofFwpJC9nLE1vPS86KC4qKSQvLERvPS9eOnxedi1iaW5kOi8sUG89L1wuW14uXSsvZyxGbz1lKGVvKTtmdW5jdGlvbiBSbyhlLHQsbil7cmV0dXJue3R5cGU6MSx0YWc6ZSxhdHRyc0xpc3Q6dCxhdHRyc01hcDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9e30sbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0W2Vbbl0ubmFtZV09ZVtuXS52YWx1ZTtyZXR1cm4gdH0odCkscGFyZW50Om4sY2hpbGRyZW46W119fWZ1bmN0aW9uIEhvKGUscCl7d289cC53YXJufHwkcixPbz1wLmlzUHJlVGFnfHxPLFNvPXAubXVzdFVzZVByb3B8fE8sVG89cC5nZXRUYWdOYW1lc3BhY2V8fE8seG89d3IocC5tb2R1bGVzLCJ0cmFuc2Zvcm1Ob2RlIiksa289d3IocC5tb2R1bGVzLCJwcmVUcmFuc2Zvcm1Ob2RlIiksQW89d3IocC5tb2R1bGVzLCJwb3N0VHJhbnNmb3JtTm9kZSIpLENvPXAuZGVsaW1pdGVyczt2YXIgZCx2LGg9W10saT0hMSE9PXAucHJlc2VydmVXaGl0ZXNwYWNlLG09ITEseT0hMTtmdW5jdGlvbiBnKGUpe2UucHJlJiYobT0hMSksT28oZS50YWcpJiYoeT0hMSk7Zm9yKHZhciB0PTA7dDxBby5sZW5ndGg7dCsrKUFvW3RdKGUscCl9cmV0dXJuIGZ1bmN0aW9uKGksZCl7Zm9yKHZhciBlLHYsaD1bXSxtPWQuZXhwZWN0SFRNTCx5PWQuaXNVbmFyeVRhZ3x8TyxnPWQuY2FuQmVMZWZ0T3BlblRhZ3x8TyxhPTA7aTspe2lmKGU9aSx2JiZobyh2KSl7dmFyIHI9MCxvPXYudG9Mb3dlckNhc2UoKSx0PW1vW29dfHwobW9bb109bmV3IFJlZ0V4cCgiKFtcXHNcXFNdKj8pKDwvIitvKyJbXj5dKj4pIiwiaSIpKSxuPWkucmVwbGFjZSh0LGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcj1uLmxlbmd0aCxobyhvKXx8Im5vc2NyaXB0Ij09PW98fCh0PXQucmVwbGFjZSgvPCFcLS0oW1xzXFNdKj8pLS0+L2csIiQxIikucmVwbGFjZSgvPCFcW0NEQVRBXFsoW1xzXFNdKj8pXV0+L2csIiQxIikpLCRvKG8sdCkmJih0PXQuc2xpY2UoMSkpLGQuY2hhcnMmJmQuY2hhcnModCksIiJ9KTthKz1pLmxlbmd0aC1uLmxlbmd0aCxpPW4sQShvLGEtcixhKX1lbHNle3ZhciBzPWkuaW5kZXhPZigiPCIpO2lmKDA9PT1zKXtpZihmby50ZXN0KGkpKXt2YXIgYz1pLmluZGV4T2YoIi0tXHgzZSIpO2lmKDA8PWMpe2Quc2hvdWxkS2VlcENvbW1lbnQmJmQuY29tbWVudChpLnN1YnN0cmluZyg0LGMpKSxDKGMrMyk7Y29udGludWV9fWlmKHBvLnRlc3QoaSkpe3ZhciBsPWkuaW5kZXhPZigiXT4iKTtpZigwPD1sKXtDKGwrMik7Y29udGludWV9fXZhciB1PWkubWF0Y2godW8pO2lmKHUpe0ModVswXS5sZW5ndGgpO2NvbnRpbnVlfXZhciBmPWkubWF0Y2gobG8pO2lmKGYpe3ZhciBwPWE7QyhmWzBdLmxlbmd0aCksQShmWzFdLHAsYSk7Y29udGludWV9dmFyIF89eCgpO2lmKF8pe2soXyksJG8odixpKSYmQygxKTtjb250aW51ZX19dmFyIGI9dm9pZCAwLCQ9dm9pZCAwLHc9dm9pZCAwO2lmKDA8PXMpe2ZvcigkPWkuc2xpY2Uocyk7IShsby50ZXN0KCQpfHxzby50ZXN0KCQpfHxmby50ZXN0KCQpfHxwby50ZXN0KCQpfHwodz0kLmluZGV4T2YoIjwiLDEpKTwwKTspcys9dywkPWkuc2xpY2Uocyk7Yj1pLnN1YnN0cmluZygwLHMpLEMocyl9czwwJiYoYj1pLGk9IiIpLGQuY2hhcnMmJmImJmQuY2hhcnMoYil9aWYoaT09PWUpe2QuY2hhcnMmJmQuY2hhcnMoaSk7YnJlYWt9fWZ1bmN0aW9uIEMoZSl7YSs9ZSxpPWkuc3Vic3RyaW5nKGUpfWZ1bmN0aW9uIHgoKXt2YXIgZT1pLm1hdGNoKHNvKTtpZihlKXt2YXIgdCxuLHI9e3RhZ05hbWU6ZVsxXSxhdHRyczpbXSxzdGFydDphfTtmb3IoQyhlWzBdLmxlbmd0aCk7ISh0PWkubWF0Y2goY28pKSYmKG49aS5tYXRjaChpbykpOylDKG5bMF0ubGVuZ3RoKSxyLmF0dHJzLnB1c2gobik7aWYodClyZXR1cm4gci51bmFyeVNsYXNoPXRbMV0sQyh0WzBdLmxlbmd0aCksci5lbmQ9YSxyfX1mdW5jdGlvbiBrKGUpe3ZhciB0PWUudGFnTmFtZSxuPWUudW5hcnlTbGFzaDttJiYoInAiPT09diYmcm8odCkmJkEodiksZyh0KSYmdj09PXQmJkEodCkpO2Zvcih2YXIgcixpLG8sYT15KHQpfHwhIW4scz1lLmF0dHJzLmxlbmd0aCxjPW5ldyBBcnJheShzKSxsPTA7bDxzO2wrKyl7dmFyIHU9ZS5hdHRyc1tsXTt2byYmLTE9PT11WzBdLmluZGV4T2YoJyIiJykmJigiIj09PXVbM10mJmRlbGV0ZSB1WzNdLCIiPT09dVs0XSYmZGVsZXRlIHVbNF0sIiI9PT11WzVdJiZkZWxldGUgdVs1XSk7dmFyIGY9dVszXXx8dVs0XXx8dVs1XXx8IiIscD0iYSI9PT10JiYiaHJlZiI9PT11WzFdP2Quc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOmQuc2hvdWxkRGVjb2RlTmV3bGluZXM7Y1tsXT17bmFtZTp1WzFdLHZhbHVlOihyPWYsaT1wLG89aT9fbzpnbyxyLnJlcGxhY2UobyxmdW5jdGlvbihlKXtyZXR1cm4geW9bZV19KSl9fWF8fChoLnB1c2goe3RhZzp0LGxvd2VyQ2FzZWRUYWc6dC50b0xvd2VyQ2FzZSgpLGF0dHJzOmN9KSx2PXQpLGQuc3RhcnQmJmQuc3RhcnQodCxjLGEsZS5zdGFydCxlLmVuZCl9ZnVuY3Rpb24gQShlLHQsbil7dmFyIHIsaTtpZihudWxsPT10JiYodD1hKSxudWxsPT1uJiYobj1hKSxlJiYoaT1lLnRvTG93ZXJDYXNlKCkpLGUpZm9yKHI9aC5sZW5ndGgtMTswPD1yJiZoW3JdLmxvd2VyQ2FzZWRUYWchPT1pO3ItLSk7ZWxzZSByPTA7aWYoMDw9cil7Zm9yKHZhciBvPWgubGVuZ3RoLTE7cjw9bztvLS0pZC5lbmQmJmQuZW5kKGhbb10udGFnLHQsbik7aC5sZW5ndGg9cix2PXImJmhbci0xXS50YWd9ZWxzZSJiciI9PT1pP2Quc3RhcnQmJmQuc3RhcnQoZSxbXSwhMCx0LG4pOiJwIj09PWkmJihkLnN0YXJ0JiZkLnN0YXJ0KGUsW10sITEsdCxuKSxkLmVuZCYmZC5lbmQoZSx0LG4pKX1BKCl9KGUse3dhcm46d28sZXhwZWN0SFRNTDpwLmV4cGVjdEhUTUwsaXNVbmFyeVRhZzpwLmlzVW5hcnlUYWcsY2FuQmVMZWZ0T3BlblRhZzpwLmNhbkJlTGVmdE9wZW5UYWcsc2hvdWxkRGVjb2RlTmV3bGluZXM6cC5zaG91bGREZWNvZGVOZXdsaW5lcyxzaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWY6cC5zaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWYsc2hvdWxkS2VlcENvbW1lbnQ6cC5jb21tZW50cyxzdGFydDpmdW5jdGlvbihlLHQsbil7dmFyIHI9diYmdi5uc3x8VG8oZSk7SyYmInN2ZyI9PT1yJiYodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO0tvLnRlc3Qoci5uYW1lKXx8KHIubmFtZT1yLm5hbWUucmVwbGFjZShKbywiIiksdC5wdXNoKHIpKX1yZXR1cm4gdH0odCkpO3ZhciBpLG8sYSxzLGMsbD1SbyhlLHQsdik7ciYmKGwubnM9ciksInN0eWxlIiE9PShpPWwpLnRhZyYmKCJzY3JpcHQiIT09aS50YWd8fGkuYXR0cnNNYXAudHlwZSYmInRleHQvamF2YXNjcmlwdCIhPT1pLmF0dHJzTWFwLnR5cGUpfHxZKCl8fChsLmZvcmJpZGRlbj0hMCk7Zm9yKHZhciB1PTA7dTxrby5sZW5ndGg7dSsrKWw9a29bdV0obCxwKXx8bDtpZihtfHwobnVsbCE9U3Iobz1sLCJ2LXByZSIpJiYoby5wcmU9ITApLGwucHJlJiYobT0hMCkpLE9vKGwudGFnKSYmKHk9ITApLG0/ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hdHRyc0xpc3QubGVuZ3RoO2lmKHQpZm9yKHZhciBuPWUuYXR0cnM9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09e25hbWU6ZS5hdHRyc0xpc3Rbcl0ubmFtZSx2YWx1ZTpKU09OLnN0cmluZ2lmeShlLmF0dHJzTGlzdFtyXS52YWx1ZSl9O2Vsc2UgZS5wcmV8fChlLnBsYWluPSEwKX0obCk6bC5wcm9jZXNzZWR8fChVbyhsKSxmdW5jdGlvbihlKXt2YXIgdD1TcihlLCJ2LWlmIik7aWYodCllLmlmPXQsVm8oZSx7ZXhwOnQsYmxvY2s6ZX0pO2Vsc2V7bnVsbCE9U3IoZSwidi1lbHNlIikmJihlLmVsc2U9ITApO3ZhciBuPVNyKGUsInYtZWxzZS1pZiIpO24mJihlLmVsc2VpZj1uKX19KGwpLG51bGwhPVNyKGE9bCwidi1vbmNlIikmJihhLm9uY2U9ITApLEJvKGwscCkpLGQ/aC5sZW5ndGh8fGQuaWYmJihsLmVsc2VpZnx8bC5lbHNlKSYmVm8oZCx7ZXhwOmwuZWxzZWlmLGJsb2NrOmx9KTpkPWwsdiYmIWwuZm9yYmlkZGVuKWlmKGwuZWxzZWlmfHxsLmVsc2Upcz1sLChjPWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2Zvcig7dC0tOyl7aWYoMT09PWVbdF0udHlwZSlyZXR1cm4gZVt0XTtlLnBvcCgpfX0odi5jaGlsZHJlbikpJiZjLmlmJiZWbyhjLHtleHA6cy5lbHNlaWYsYmxvY2s6c30pO2Vsc2UgaWYobC5zbG90U2NvcGUpe3YucGxhaW49ITE7dmFyIGY9bC5zbG90VGFyZ2V0fHwnImRlZmF1bHQiJzsodi5zY29wZWRTbG90c3x8KHYuc2NvcGVkU2xvdHM9e30pKVtmXT1sfWVsc2Ugdi5jaGlsZHJlbi5wdXNoKGwpLGwucGFyZW50PXY7bj9nKGwpOih2PWwsaC5wdXNoKGwpKX0sZW5kOmZ1bmN0aW9uKCl7dmFyIGU9aFtoLmxlbmd0aC0xXSx0PWUuY2hpbGRyZW5bZS5jaGlsZHJlbi5sZW5ndGgtMV07dCYmMz09PXQudHlwZSYmIiAiPT09dC50ZXh0JiYheSYmZS5jaGlsZHJlbi5wb3AoKSxoLmxlbmd0aC09MSx2PWhbaC5sZW5ndGgtMV0sZyhlKX0sY2hhcnM6ZnVuY3Rpb24oZSl7aWYodiYmKCFLfHwidGV4dGFyZWEiIT09di50YWd8fHYuYXR0cnNNYXAucGxhY2Vob2xkZXIhPT1lKSl7dmFyIHQsbixyPXYuY2hpbGRyZW47aWYoZT15fHxlLnRyaW0oKT8ic2NyaXB0Ij09PSh0PXYpLnRhZ3x8InN0eWxlIj09PXQudGFnP2U6Rm8oZSk6aSYmci5sZW5ndGg/IiAiOiIiKSFtJiYiICIhPT1lJiYobj1mdW5jdGlvbihlLHQpe3ZhciBuPXQ/WmkodCk6V2k7aWYobi50ZXN0KGUpKXtmb3IodmFyIHIsaSxvLGE9W10scz1bXSxjPW4ubGFzdEluZGV4PTA7cj1uLmV4ZWMoZSk7KXtjPChpPXIuaW5kZXgpJiYocy5wdXNoKG89ZS5zbGljZShjLGkpKSxhLnB1c2goSlNPTi5zdHJpbmdpZnkobykpKTt2YXIgbD1fcihyWzFdLnRyaW0oKSk7YS5wdXNoKCJfcygiK2wrIikiKSxzLnB1c2goeyJAYmluZGluZyI6bH0pLGM9aStyWzBdLmxlbmd0aH1yZXR1cm4gYzxlLmxlbmd0aCYmKHMucHVzaChvPWUuc2xpY2UoYykpLGEucHVzaChKU09OLnN0cmluZ2lmeShvKSkpLHtleHByZXNzaW9uOmEuam9pbigiKyIpLHRva2VuczpzfX19KGUsQ28pKT9yLnB1c2goe3R5cGU6MixleHByZXNzaW9uOm4uZXhwcmVzc2lvbix0b2tlbnM6bi50b2tlbnMsdGV4dDplfSk6IiAiPT09ZSYmci5sZW5ndGgmJiIgIj09PXJbci5sZW5ndGgtMV0udGV4dHx8ci5wdXNoKHt0eXBlOjMsdGV4dDplfSl9fSxjb21tZW50OmZ1bmN0aW9uKGUpe3YuY2hpbGRyZW4ucHVzaCh7dHlwZTozLHRleHQ6ZSxpc0NvbW1lbnQ6ITB9KX19KSxkfWZ1bmN0aW9uIEJvKGUsdCl7dmFyIG4scixpLG87KHI9T3Iobj1lLCJrZXkiKSkmJihuLmtleT1yKSxlLnBsYWluPSFlLmtleSYmIWUuYXR0cnNMaXN0Lmxlbmd0aCwobz1PcihpPWUsInJlZiIpKSYmKGkucmVmPW8saS5yZWZJbkZvcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZTt0Oyl7aWYodm9pZCAwIT09dC5mb3IpcmV0dXJuITA7dD10LnBhcmVudH1yZXR1cm4hMX0oaSkpLGZ1bmN0aW9uKGUpe2lmKCJzbG90Ij09PWUudGFnKWUuc2xvdE5hbWU9T3IoZSwibmFtZSIpO2Vsc2V7dmFyIHQ7InRlbXBsYXRlIj09PWUudGFnPyh0PVNyKGUsInNjb3BlIiksZS5zbG90U2NvcGU9dHx8U3IoZSwic2xvdC1zY29wZSIpKToodD1TcihlLCJzbG90LXNjb3BlIikpJiYoZS5zbG90U2NvcGU9dCk7dmFyIG49T3IoZSwic2xvdCIpO24mJihlLnNsb3RUYXJnZXQ9JyIiJz09PW4/JyJkZWZhdWx0Iic6biwidGVtcGxhdGUiPT09ZS50YWd8fGUuc2xvdFNjb3BlfHx4cihlLCJzbG90IixuKSl9fShlKSxmdW5jdGlvbihlKXt2YXIgdDsodD1PcihlLCJpcyIpKSYmKGUuY29tcG9uZW50PXQpO251bGwhPVNyKGUsImlubGluZS10ZW1wbGF0ZSIpJiYoZS5pbmxpbmVUZW1wbGF0ZT0hMCl9KGUpO2Zvcih2YXIgYT0wO2E8eG8ubGVuZ3RoO2ErKyllPXhvW2FdKGUsdCl8fGU7IWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8sYSxzLGM9ZS5hdHRyc0xpc3Q7Zm9yKHQ9MCxuPWMubGVuZ3RoO3Q8bjt0KyspaWYocj1pPWNbdF0ubmFtZSxvPWNbdF0udmFsdWUsam8udGVzdChyKSlpZihlLmhhc0JpbmRpbmdzPSEwLChhPXpvKHIpKSYmKHI9ci5yZXBsYWNlKFBvLCIiKSksRG8udGVzdChyKSlyPXIucmVwbGFjZShEbywiIiksbz1fcihvKSxzPSExLGEmJihhLnByb3AmJihzPSEwLCJpbm5lckh0bWwiPT09KHI9ZyhyKSkmJihyPSJpbm5lckhUTUwiKSksYS5jYW1lbCYmKHI9ZyhyKSksYS5zeW5jJiZBcihlLCJ1cGRhdGU6IitnKHIpLEVyKG8sIiRldmVudCIpKSksc3x8IWUuY29tcG9uZW50JiZTbyhlLnRhZyxlLmF0dHJzTWFwLnR5cGUscik/Q3IoZSxyLG8pOnhyKGUscixvKTtlbHNlIGlmKEVvLnRlc3Qocikpcj1yLnJlcGxhY2UoRW8sIiIpLEFyKGUscixvLGEsITEpO2Vsc2V7dmFyIGw9KHI9ci5yZXBsYWNlKGpvLCIiKSkubWF0Y2goTW8pLHU9bCYmbFsxXTt1JiYocj1yLnNsaWNlKDAsLSh1Lmxlbmd0aCsxKSkpLHA9cixkPWksdj1vLGg9dSxtPWEsKChmPWUpLmRpcmVjdGl2ZXN8fChmLmRpcmVjdGl2ZXM9W10pKS5wdXNoKHtuYW1lOnAscmF3TmFtZTpkLHZhbHVlOnYsYXJnOmgsbW9kaWZpZXJzOm19KSxmLnBsYWluPSExfWVsc2UgeHIoZSxyLEpTT04uc3RyaW5naWZ5KG8pKSwhZS5jb21wb25lbnQmJiJtdXRlZCI9PT1yJiZTbyhlLnRhZyxlLmF0dHJzTWFwLnR5cGUscikmJkNyKGUsciwidHJ1ZSIpO3ZhciBmLHAsZCx2LGgsbX0oZSl9ZnVuY3Rpb24gVW8oZSl7dmFyIHQ7aWYodD1TcihlLCJ2LWZvciIpKXt2YXIgbj1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKE5vKTtpZighdClyZXR1cm47dmFyIG49e307bi5mb3I9dFsyXS50cmltKCk7dmFyIHI9dFsxXS50cmltKCkucmVwbGFjZShJbywiIiksaT1yLm1hdGNoKExvKTtpPyhuLmFsaWFzPXIucmVwbGFjZShMbywiIiksbi5pdGVyYXRvcjE9aVsxXS50cmltKCksaVsyXSYmKG4uaXRlcmF0b3IyPWlbMl0udHJpbSgpKSk6bi5hbGlhcz1yO3JldHVybiBufSh0KTtuJiZtKGUsbil9fWZ1bmN0aW9uIFZvKGUsdCl7ZS5pZkNvbmRpdGlvbnN8fChlLmlmQ29uZGl0aW9ucz1bXSksZS5pZkNvbmRpdGlvbnMucHVzaCh0KX1mdW5jdGlvbiB6byhlKXt2YXIgdD1lLm1hdGNoKFBvKTtpZih0KXt2YXIgbj17fTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe25bZS5zbGljZSgxKV09ITB9KSxufX12YXIgS289L154bWxuczpOU1xkKy8sSm89L15OU1xkKzovO2Z1bmN0aW9uIHFvKGUpe3JldHVybiBSbyhlLnRhZyxlLmF0dHJzTGlzdC5zbGljZSgpLGUucGFyZW50KX12YXIgV289W1hpLFFpLHtwcmVUcmFuc2Zvcm1Ob2RlOmZ1bmN0aW9uKGUsdCl7aWYoImlucHV0Ij09PWUudGFnKXt2YXIgbixyPWUuYXR0cnNNYXA7aWYoIXJbInYtbW9kZWwiXSlyZXR1cm47aWYoKHJbIjp0eXBlIl18fHJbInYtYmluZDp0eXBlIl0pJiYobj1PcihlLCJ0eXBlIikpLHIudHlwZXx8bnx8IXJbInYtYmluZCJdfHwobj0iKCIrclsidi1iaW5kIl0rIikudHlwZSIpLG4pe3ZhciBpPVNyKGUsInYtaWYiLCEwKSxvPWk/IiYmKCIraSsiKSI6IiIsYT1udWxsIT1TcihlLCJ2LWVsc2UiLCEwKSxzPVNyKGUsInYtZWxzZS1pZiIsITApLGM9cW8oZSk7VW8oYyksa3IoYywidHlwZSIsImNoZWNrYm94IiksQm8oYyx0KSxjLnByb2Nlc3NlZD0hMCxjLmlmPSIoIituKyIpPT09J2NoZWNrYm94JyIrbyxWbyhjLHtleHA6Yy5pZixibG9jazpjfSk7dmFyIGw9cW8oZSk7U3IobCwidi1mb3IiLCEwKSxrcihsLCJ0eXBlIiwicmFkaW8iKSxCbyhsLHQpLFZvKGMse2V4cDoiKCIrbisiKT09PSdyYWRpbyciK28sYmxvY2s6bH0pO3ZhciB1PXFvKGUpO3JldHVybiBTcih1LCJ2LWZvciIsITApLGtyKHUsIjp0eXBlIixuKSxCbyh1LHQpLFZvKGMse2V4cDppLGJsb2NrOnV9KSxhP2MuZWxzZT0hMDpzJiYoYy5lbHNlaWY9cyksY319fX1dO3ZhciBHbyxabyxYbyxZbz17ZXhwZWN0SFRNTDohMCxtb2R1bGVzOldvLGRpcmVjdGl2ZXM6e21vZGVsOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLGMsbCx1LGYscCxkLHYsaCxtLHksZyxfPXQudmFsdWUsYj10Lm1vZGlmaWVycywkPWUudGFnLHc9ZS5hdHRyc01hcC50eXBlO2lmKGUuY29tcG9uZW50KXJldHVybiBUcihlLF8sYiksITE7aWYoInNlbGVjdCI9PT0kKWg9ZSxtPV8sZz0oZz0ndmFyICQkc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLGZ1bmN0aW9uKG8pe3JldHVybiBvLnNlbGVjdGVkfSkubWFwKGZ1bmN0aW9uKG8pe3ZhciB2YWwgPSAiX3ZhbHVlIiBpbiBvID8gby5fdmFsdWUgOiBvLnZhbHVlO3JldHVybiAnKygoeT1iKSYmeS5udW1iZXI/Il9uKHZhbCkiOiJ2YWwiKSsifSk7IikrIiAiK0VyKG0sIiRldmVudC50YXJnZXQubXVsdGlwbGUgPyAkJHNlbGVjdGVkVmFsIDogJCRzZWxlY3RlZFZhbFswXSIpLEFyKGgsImNoYW5nZSIsZyxudWxsLCEwKTtlbHNlIGlmKCJpbnB1dCI9PT0kJiYiY2hlY2tib3giPT09dyljPWUsbD1fLGY9KHU9YikmJnUubnVtYmVyLHA9T3IoYywidmFsdWUiKXx8Im51bGwiLGQ9T3IoYywidHJ1ZS12YWx1ZSIpfHwidHJ1ZSIsdj1PcihjLCJmYWxzZS12YWx1ZSIpfHwiZmFsc2UiLENyKGMsImNoZWNrZWQiLCJBcnJheS5pc0FycmF5KCIrbCsiKT9faSgiK2wrIiwiK3ArIik+LTEiKygidHJ1ZSI9PT1kPyI6KCIrbCsiKSI6IjpfcSgiK2wrIiwiK2QrIikiKSksQXIoYywiY2hhbmdlIiwidmFyICQkYT0iK2wrIiwkJGVsPSRldmVudC50YXJnZXQsJCRjPSQkZWwuY2hlY2tlZD8oIitkKyIpOigiK3YrIik7aWYoQXJyYXkuaXNBcnJheSgkJGEpKXt2YXIgJCR2PSIrKGY/Il9uKCIrcCsiKSI6cCkrIiwkJGk9X2koJCRhLCQkdik7aWYoJCRlbC5jaGVja2VkKXskJGk8MCYmKCIrRXIobCwiJCRhLmNvbmNhdChbJCR2XSkiKSsiKX1lbHNleyQkaT4tMSYmKCIrRXIobCwiJCRhLnNsaWNlKDAsJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSsxKSkiKSsiKX19ZWxzZXsiK0VyKGwsIiQkYyIpKyJ9IixudWxsLCEwKTtlbHNlIGlmKCJpbnB1dCI9PT0kJiYicmFkaW8iPT09dylyPWUsaT1fLGE9KG89YikmJm8ubnVtYmVyLHM9T3IociwidmFsdWUiKXx8Im51bGwiLENyKHIsImNoZWNrZWQiLCJfcSgiK2krIiwiKyhzPWE/Il9uKCIrcysiKSI6cykrIikiKSxBcihyLCJjaGFuZ2UiLEVyKGkscyksbnVsbCwhMCk7ZWxzZSBpZigiaW5wdXQiPT09JHx8InRleHRhcmVhIj09PSQpIWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmF0dHJzTWFwLnR5cGUsaT1ufHx7fSxvPWkubGF6eSxhPWkubnVtYmVyLHM9aS50cmltLGM9IW8mJiJyYW5nZSIhPT1yLGw9bz8iY2hhbmdlIjoicmFuZ2UiPT09cj9QcjoiaW5wdXQiLHU9IiRldmVudC50YXJnZXQudmFsdWUiO3MmJih1PSIkZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKSIpLGEmJih1PSJfbigiK3UrIikiKTt2YXIgZj1Fcih0LHUpO2MmJihmPSJpZigkZXZlbnQudGFyZ2V0LmNvbXBvc2luZylyZXR1cm47IitmKSxDcihlLCJ2YWx1ZSIsIigiK3QrIikiKSxBcihlLGwsZixudWxsLCEwKSwoc3x8YSkmJkFyKGUsImJsdXIiLCIkZm9yY2VVcGRhdGUoKSIpfShlLF8sYik7ZWxzZSBpZighai5pc1Jlc2VydmVkVGFnKCQpKXJldHVybiBUcihlLF8sYiksITE7cmV0dXJuITB9LHRleHQ6ZnVuY3Rpb24oZSx0KXt0LnZhbHVlJiZDcihlLCJ0ZXh0Q29udGVudCIsIl9zKCIrdC52YWx1ZSsiKSIpfSxodG1sOmZ1bmN0aW9uKGUsdCl7dC52YWx1ZSYmQ3IoZSwiaW5uZXJIVE1MIiwiX3MoIit0LnZhbHVlKyIpIil9fSxpc1ByZVRhZzpmdW5jdGlvbihlKXtyZXR1cm4icHJlIj09PWV9LGlzVW5hcnlUYWc6dG8sbXVzdFVzZVByb3A6U24sY2FuQmVMZWZ0T3BlblRhZzpubyxpc1Jlc2VydmVkVGFnOlVuLGdldFRhZ05hbWVzcGFjZTpWbixzdGF0aWNLZXlzOihHbz1XbyxHby5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb25jYXQodC5zdGF0aWNLZXlzfHxbXSl9LFtdKS5qb2luKCIsIikpfSxRbz1lKGZ1bmN0aW9uKGUpe3JldHVybiBzKCJ0eXBlLHRhZyxhdHRyc0xpc3QsYXR0cnNNYXAscGxhaW4scGFyZW50LGNoaWxkcmVuLGF0dHJzIisoZT8iLCIrZToiIikpfSk7ZnVuY3Rpb24gZWEoZSx0KXtlJiYoWm89UW8odC5zdGF0aWNLZXlzfHwiIiksWG89dC5pc1Jlc2VydmVkVGFnfHxPLGZ1bmN0aW9uIGUodCl7dC5zdGF0aWM9ZnVuY3Rpb24oZSl7aWYoMj09PWUudHlwZSlyZXR1cm4hMTtpZigzPT09ZS50eXBlKXJldHVybiEwO3JldHVybiEoIWUucHJlJiYoZS5oYXNCaW5kaW5nc3x8ZS5pZnx8ZS5mb3J8fGMoZS50YWcpfHwhWG8oZS50YWcpfHxmdW5jdGlvbihlKXtmb3IoO2UucGFyZW50Oyl7aWYoInRlbXBsYXRlIiE9PShlPWUucGFyZW50KS50YWcpcmV0dXJuITE7aWYoZS5mb3IpcmV0dXJuITB9cmV0dXJuITF9KGUpfHwhT2JqZWN0LmtleXMoZSkuZXZlcnkoWm8pKSl9KHQpO2lmKDE9PT10LnR5cGUpe2lmKCFYbyh0LnRhZykmJiJzbG90IiE9PXQudGFnJiZudWxsPT10LmF0dHJzTWFwWyJpbmxpbmUtdGVtcGxhdGUiXSlyZXR1cm47Zm9yKHZhciBuPTAscj10LmNoaWxkcmVuLmxlbmd0aDtuPHI7bisrKXt2YXIgaT10LmNoaWxkcmVuW25dO2UoaSksaS5zdGF0aWN8fCh0LnN0YXRpYz0hMSl9aWYodC5pZkNvbmRpdGlvbnMpZm9yKHZhciBvPTEsYT10LmlmQ29uZGl0aW9ucy5sZW5ndGg7bzxhO28rKyl7dmFyIHM9dC5pZkNvbmRpdGlvbnNbb10uYmxvY2s7ZShzKSxzLnN0YXRpY3x8KHQuc3RhdGljPSExKX19fShlKSxmdW5jdGlvbiBlKHQsbil7aWYoMT09PXQudHlwZSl7aWYoKHQuc3RhdGljfHx0Lm9uY2UpJiYodC5zdGF0aWNJbkZvcj1uKSx0LnN0YXRpYyYmdC5jaGlsZHJlbi5sZW5ndGgmJigxIT09dC5jaGlsZHJlbi5sZW5ndGh8fDMhPT10LmNoaWxkcmVuWzBdLnR5cGUpKXJldHVybiB2b2lkKHQuc3RhdGljUm9vdD0hMCk7aWYodC5zdGF0aWNSb290PSExLHQuY2hpbGRyZW4pZm9yKHZhciByPTAsaT10LmNoaWxkcmVuLmxlbmd0aDtyPGk7cisrKWUodC5jaGlsZHJlbltyXSxufHwhIXQuZm9yKTtpZih0LmlmQ29uZGl0aW9ucylmb3IodmFyIG89MSxhPXQuaWZDb25kaXRpb25zLmxlbmd0aDtvPGE7bysrKWUodC5pZkNvbmRpdGlvbnNbb10uYmxvY2ssbil9fShlLCExKSl9dmFyIHRhPS9eKFtcdyRfXSt8XChbXildKj9cKSlccyo9PnxeZnVuY3Rpb25ccypcKC8sbmE9L15bQS1aYS16XyRdW1x3JF0qKD86XC5bQS1aYS16XyRdW1x3JF0qfFxbJ1teJ10qPyddfFxbIlteIl0qPyJdfFxbXGQrXXxcW1tBLVphLXpfJF1bXHckXSpdKSokLyxyYT17ZXNjOjI3LHRhYjo5LGVudGVyOjEzLHNwYWNlOjMyLHVwOjM4LGxlZnQ6MzcscmlnaHQ6MzksZG93bjo0MCxkZWxldGU6WzgsNDZdfSxpYT17ZXNjOiJFc2NhcGUiLHRhYjoiVGFiIixlbnRlcjoiRW50ZXIiLHNwYWNlOiIgIix1cDpbIlVwIiwiQXJyb3dVcCJdLGxlZnQ6WyJMZWZ0IiwiQXJyb3dMZWZ0Il0scmlnaHQ6WyJSaWdodCIsIkFycm93UmlnaHQiXSxkb3duOlsiRG93biIsIkFycm93RG93biJdLGRlbGV0ZTpbIkJhY2tzcGFjZSIsIkRlbGV0ZSJdfSxvYT1mdW5jdGlvbihlKXtyZXR1cm4iaWYoIitlKyIpcmV0dXJuIG51bGw7In0sYWE9e3N0b3A6IiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsiLHByZXZlbnQ6IiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyIsc2VsZjpvYSgiJGV2ZW50LnRhcmdldCAhPT0gJGV2ZW50LmN1cnJlbnRUYXJnZXQiKSxjdHJsOm9hKCIhJGV2ZW50LmN0cmxLZXkiKSxzaGlmdDpvYSgiISRldmVudC5zaGlmdEtleSIpLGFsdDpvYSgiISRldmVudC5hbHRLZXkiKSxtZXRhOm9hKCIhJGV2ZW50Lm1ldGFLZXkiKSxsZWZ0Om9hKCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMCIpLG1pZGRsZTpvYSgiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDEiKSxyaWdodDpvYSgiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDIiKX07ZnVuY3Rpb24gc2EoZSx0LG4pe3ZhciByPXQ/Im5hdGl2ZU9uOnsiOiJvbjp7Ijtmb3IodmFyIGkgaW4gZSlyKz0nIicraSsnIjonK2NhKGksZVtpXSkrIiwiO3JldHVybiByLnNsaWNlKDAsLTEpKyJ9In1mdW5jdGlvbiBjYSh0LGUpe2lmKCFlKXJldHVybiJmdW5jdGlvbigpe30iO2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIlsiK2UubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBjYSh0LGUpfSkuam9pbigiLCIpKyJdIjt2YXIgbj1uYS50ZXN0KGUudmFsdWUpLHI9dGEudGVzdChlLnZhbHVlKTtpZihlLm1vZGlmaWVycyl7dmFyIGk9IiIsbz0iIixhPVtdO2Zvcih2YXIgcyBpbiBlLm1vZGlmaWVycylpZihhYVtzXSlvKz1hYVtzXSxyYVtzXSYmYS5wdXNoKHMpO2Vsc2UgaWYoImV4YWN0Ij09PXMpe3ZhciBjPWUubW9kaWZpZXJzO28rPW9hKFsiY3RybCIsInNoaWZ0IiwiYWx0IiwibWV0YSJdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hY1tlXX0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4iJGV2ZW50LiIrZSsiS2V5In0pLmpvaW4oInx8IikpfWVsc2UgYS5wdXNoKHMpO3JldHVybiBhLmxlbmd0aCYmKGkrPSJpZighKCdidXR0b24nIGluICRldmVudCkmJiIrYS5tYXAobGEpLmpvaW4oIiYmIikrIilyZXR1cm4gbnVsbDsiKSxvJiYoaSs9byksImZ1bmN0aW9uKCRldmVudCl7IitpKyhuPyJyZXR1cm4gIitlLnZhbHVlKyIoJGV2ZW50KSI6cj8icmV0dXJuICgiK2UudmFsdWUrIikoJGV2ZW50KSI6ZS52YWx1ZSkrIn0ifXJldHVybiBufHxyP2UudmFsdWU6ImZ1bmN0aW9uKCRldmVudCl7IitlLnZhbHVlKyJ9In1mdW5jdGlvbiBsYShlKXt2YXIgdD1wYXJzZUludChlLDEwKTtpZih0KXJldHVybiIkZXZlbnQua2V5Q29kZSE9PSIrdDt2YXIgbj1yYVtlXSxyPWlhW2VdO3JldHVybiJfaygkZXZlbnQua2V5Q29kZSwiK0pTT04uc3RyaW5naWZ5KGUpKyIsIitKU09OLnN0cmluZ2lmeShuKSsiLCRldmVudC5rZXksIitKU09OLnN0cmluZ2lmeShyKSsiKSJ9dmFyIHVhPXtvbjpmdW5jdGlvbihlLHQpe2Uud3JhcExpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm4iX2coIitlKyIsIit0LnZhbHVlKyIpIn19LGJpbmQ6ZnVuY3Rpb24odCxuKXt0LndyYXBEYXRhPWZ1bmN0aW9uKGUpe3JldHVybiJfYigiK2UrIiwnIit0LnRhZysiJywiK24udmFsdWUrIiwiKyhuLm1vZGlmaWVycyYmbi5tb2RpZmllcnMucHJvcD8idHJ1ZSI6ImZhbHNlIikrKG4ubW9kaWZpZXJzJiZuLm1vZGlmaWVycy5zeW5jPyIsdHJ1ZSI6IiIpKyIpIn19LGNsb2FrOiR9LGZhPWZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMud2Fybj1lLndhcm58fCRyLHRoaXMudHJhbnNmb3Jtcz13cihlLm1vZHVsZXMsInRyYW5zZm9ybUNvZGUiKSx0aGlzLmRhdGFHZW5GbnM9d3IoZS5tb2R1bGVzLCJnZW5EYXRhIiksdGhpcy5kaXJlY3RpdmVzPW0obSh7fSx1YSksZS5kaXJlY3RpdmVzKTt2YXIgdD1lLmlzUmVzZXJ2ZWRUYWd8fE87dGhpcy5tYXliZUNvbXBvbmVudD1mdW5jdGlvbihlKXtyZXR1cm4hdChlLnRhZyl9LHRoaXMub25jZUlkPTAsdGhpcy5zdGF0aWNSZW5kZXJGbnM9W119O2Z1bmN0aW9uIHBhKGUsdCl7dmFyIG49bmV3IGZhKHQpO3JldHVybntyZW5kZXI6IndpdGgodGhpcyl7cmV0dXJuICIrKGU/ZGEoZSxuKTonX2MoImRpdiIpJykrIn0iLHN0YXRpY1JlbmRlckZuczpuLnN0YXRpY1JlbmRlckZuc319ZnVuY3Rpb24gZGEoZSx0KXtpZihlLnN0YXRpY1Jvb3QmJiFlLnN0YXRpY1Byb2Nlc3NlZClyZXR1cm4gdmEoZSx0KTtpZihlLm9uY2UmJiFlLm9uY2VQcm9jZXNzZWQpcmV0dXJuIGhhKGUsdCk7aWYoZS5mb3ImJiFlLmZvclByb2Nlc3NlZClyZXR1cm4gZj10LHY9KHU9ZSkuZm9yLGg9dS5hbGlhcyxtPXUuaXRlcmF0b3IxPyIsIit1Lml0ZXJhdG9yMToiIix5PXUuaXRlcmF0b3IyPyIsIit1Lml0ZXJhdG9yMjoiIix1LmZvclByb2Nlc3NlZD0hMCwoZHx8Il9sIikrIigoIit2KyIpLGZ1bmN0aW9uKCIraCttK3krIil7cmV0dXJuICIrKHB8fGRhKSh1LGYpKyJ9KSI7aWYoZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIG1hKGUsdCk7aWYoInRlbXBsYXRlIiE9PWUudGFnfHxlLnNsb3RUYXJnZXQpe2lmKCJzbG90Ij09PWUudGFnKXJldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPWUuc2xvdE5hbWV8fCciZGVmYXVsdCInLHI9X2EoZSx0KSxpPSJfdCgiK24rKHI/IiwiK3I6IiIpLG89ZS5hdHRycyYmInsiK2UuYXR0cnMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBnKGUubmFtZSkrIjoiK2UudmFsdWV9KS5qb2luKCIsIikrIn0iLGE9ZS5hdHRyc01hcFsidi1iaW5kIl07IW8mJiFhfHxyfHwoaSs9IixudWxsIik7byYmKGkrPSIsIitvKTthJiYoaSs9KG8/IiI6IixudWxsIikrIiwiK2EpO3JldHVybiBpKyIpIn0oZSx0KTt2YXIgbjtpZihlLmNvbXBvbmVudClhPWUuY29tcG9uZW50LGM9dCxsPShzPWUpLmlubGluZVRlbXBsYXRlP251bGw6X2EocyxjLCEwKSxuPSJfYygiK2ErIiwiK3lhKHMsYykrKGw/IiwiK2w6IiIpKyIpIjtlbHNle3ZhciByPWUucGxhaW4/dm9pZCAwOnlhKGUsdCksaT1lLmlubGluZVRlbXBsYXRlP251bGw6X2EoZSx0LCEwKTtuPSJfYygnIitlLnRhZysiJyIrKHI/IiwiK3I6IiIpKyhpPyIsIitpOiIiKSsiKSJ9Zm9yKHZhciBvPTA7bzx0LnRyYW5zZm9ybXMubGVuZ3RoO28rKyluPXQudHJhbnNmb3Jtc1tvXShlLG4pO3JldHVybiBufXJldHVybiBfYShlLHQpfHwidm9pZCAwIjt2YXIgYSxzLGMsbCx1LGYscCxkLHYsaCxtLHl9ZnVuY3Rpb24gdmEoZSx0KXtyZXR1cm4gZS5zdGF0aWNQcm9jZXNzZWQ9ITAsdC5zdGF0aWNSZW5kZXJGbnMucHVzaCgid2l0aCh0aGlzKXtyZXR1cm4gIitkYShlLHQpKyJ9IiksIl9tKCIrKHQuc3RhdGljUmVuZGVyRm5zLmxlbmd0aC0xKSsoZS5zdGF0aWNJbkZvcj8iLHRydWUiOiIiKSsiKSJ9ZnVuY3Rpb24gaGEoZSx0KXtpZihlLm9uY2VQcm9jZXNzZWQ9ITAsZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIG1hKGUsdCk7aWYoZS5zdGF0aWNJbkZvcil7Zm9yKHZhciBuPSIiLHI9ZS5wYXJlbnQ7cjspe2lmKHIuZm9yKXtuPXIua2V5O2JyZWFrfXI9ci5wYXJlbnR9cmV0dXJuIG4/Il9vKCIrZGEoZSx0KSsiLCIrdC5vbmNlSWQrKysiLCIrbisiKSI6ZGEoZSx0KX1yZXR1cm4gdmEoZSx0KX1mdW5jdGlvbiBtYShlLHQsbixyKXtyZXR1cm4gZS5pZlByb2Nlc3NlZD0hMCxmdW5jdGlvbiBlKHQsbixyLGkpe2lmKCF0Lmxlbmd0aClyZXR1cm4gaXx8Il9lKCkiO3ZhciBvPXQuc2hpZnQoKTtyZXR1cm4gby5leHA/IigiK28uZXhwKyIpPyIrYShvLmJsb2NrKSsiOiIrZSh0LG4scixpKToiIithKG8uYmxvY2spO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIHI/cihlLG4pOmUub25jZT9oYShlLG4pOmRhKGUsbil9fShlLmlmQ29uZGl0aW9ucy5zbGljZSgpLHQsbixyKX1mdW5jdGlvbiB5YShlLHQpe3ZhciBuLHIsaT0ieyIsbz1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZGlyZWN0aXZlcztpZighbilyZXR1cm47dmFyIHIsaSxvLGEscz0iZGlyZWN0aXZlczpbIixjPSExO2ZvcihyPTAsaT1uLmxlbmd0aDtyPGk7cisrKXtvPW5bcl0sYT0hMDt2YXIgbD10LmRpcmVjdGl2ZXNbby5uYW1lXTtsJiYoYT0hIWwoZSxvLHQud2FybikpLGEmJihjPSEwLHMrPSd7bmFtZToiJytvLm5hbWUrJyIscmF3TmFtZToiJytvLnJhd05hbWUrJyInKyhvLnZhbHVlPyIsdmFsdWU6KCIrby52YWx1ZSsiKSxleHByZXNzaW9uOiIrSlNPTi5zdHJpbmdpZnkoby52YWx1ZSk6IiIpKyhvLmFyZz8nLGFyZzoiJytvLmFyZysnIic6IiIpKyhvLm1vZGlmaWVycz8iLG1vZGlmaWVyczoiK0pTT04uc3RyaW5naWZ5KG8ubW9kaWZpZXJzKToiIikrIn0sIil9aWYoYylyZXR1cm4gcy5zbGljZSgwLC0xKSsiXSJ9KGUsdCk7byYmKGkrPW8rIiwiKSxlLmtleSYmKGkrPSJrZXk6IitlLmtleSsiLCIpLGUucmVmJiYoaSs9InJlZjoiK2UucmVmKyIsIiksZS5yZWZJbkZvciYmKGkrPSJyZWZJbkZvcjp0cnVlLCIpLGUucHJlJiYoaSs9InByZTp0cnVlLCIpLGUuY29tcG9uZW50JiYoaSs9J3RhZzoiJytlLnRhZysnIiwnKTtmb3IodmFyIGE9MDthPHQuZGF0YUdlbkZucy5sZW5ndGg7YSsrKWkrPXQuZGF0YUdlbkZuc1thXShlKTtpZihlLmF0dHJzJiYoaSs9ImF0dHJzOnsiK3dhKGUuYXR0cnMpKyJ9LCIpLGUucHJvcHMmJihpKz0iZG9tUHJvcHM6eyIrd2EoZS5wcm9wcykrIn0sIiksZS5ldmVudHMmJihpKz1zYShlLmV2ZW50cywhMSx0Lndhcm4pKyIsIiksZS5uYXRpdmVFdmVudHMmJihpKz1zYShlLm5hdGl2ZUV2ZW50cywhMCx0Lndhcm4pKyIsIiksZS5zbG90VGFyZ2V0JiYhZS5zbG90U2NvcGUmJihpKz0ic2xvdDoiK2Uuc2xvdFRhcmdldCsiLCIpLGUuc2NvcGVkU2xvdHMmJihpKz0obj1lLnNjb3BlZFNsb3RzLHI9dCwic2NvcGVkU2xvdHM6X3UoWyIrT2JqZWN0LmtleXMobikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBnYShlLG5bZV0scil9KS5qb2luKCIsIikrIl0pLCIpKSxlLm1vZGVsJiYoaSs9Im1vZGVsOnt2YWx1ZToiK2UubW9kZWwudmFsdWUrIixjYWxsYmFjazoiK2UubW9kZWwuY2FsbGJhY2srIixleHByZXNzaW9uOiIrZS5tb2RlbC5leHByZXNzaW9uKyJ9LCIpLGUuaW5saW5lVGVtcGxhdGUpe3ZhciBzPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jaGlsZHJlblswXTtpZigxPT09bi50eXBlKXt2YXIgcj1wYShuLHQub3B0aW9ucyk7cmV0dXJuImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXsiK3IucmVuZGVyKyJ9LHN0YXRpY1JlbmRlckZuczpbIityLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uKCl7IitlKyJ9In0pLmpvaW4oIiwiKSsiXX0ifX0oZSx0KTtzJiYoaSs9cysiLCIpfXJldHVybiBpPWkucmVwbGFjZSgvLCQvLCIiKSsifSIsZS53cmFwRGF0YSYmKGk9ZS53cmFwRGF0YShpKSksZS53cmFwTGlzdGVuZXJzJiYoaT1lLndyYXBMaXN0ZW5lcnMoaSkpLGl9ZnVuY3Rpb24gZ2EoZSx0LG4pe3JldHVybiB0LmZvciYmIXQuZm9yUHJvY2Vzc2VkPyhyPWUsbz1uLGE9KGk9dCkuZm9yLHM9aS5hbGlhcyxjPWkuaXRlcmF0b3IxPyIsIitpLml0ZXJhdG9yMToiIixsPWkuaXRlcmF0b3IyPyIsIitpLml0ZXJhdG9yMjoiIixpLmZvclByb2Nlc3NlZD0hMCwiX2woKCIrYSsiKSxmdW5jdGlvbigiK3MrYytsKyIpe3JldHVybiAiK2dhKHIsaSxvKSsifSkiKToie2tleToiK2UrIixmbjoiKygiZnVuY3Rpb24oIitTdHJpbmcodC5zbG90U2NvcGUpKyIpe3JldHVybiAiKygidGVtcGxhdGUiPT09dC50YWc/dC5pZj90LmlmKyI/IisoX2EodCxuKXx8InVuZGVmaW5lZCIpKyI6dW5kZWZpbmVkIjpfYSh0LG4pfHwidW5kZWZpbmVkIjpkYSh0LG4pKSsifSIpKyJ9Ijt2YXIgcixpLG8sYSxzLGMsbH1mdW5jdGlvbiBfYShlLHQsbixyLGkpe3ZhciBvPWUuY2hpbGRyZW47aWYoby5sZW5ndGgpe3ZhciBhPW9bMF07aWYoMT09PW8ubGVuZ3RoJiZhLmZvciYmInRlbXBsYXRlIiE9PWEudGFnJiYic2xvdCIhPT1hLnRhZylyZXR1cm4ocnx8ZGEpKGEsdCk7dmFyIHM9bj9mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9ZVtyXTtpZigxPT09aS50eXBlKXtpZihiYShpKXx8aS5pZkNvbmRpdGlvbnMmJmkuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIGJhKGUuYmxvY2spfSkpe249MjticmVha30odChpKXx8aS5pZkNvbmRpdGlvbnMmJmkuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIHQoZS5ibG9jayl9KSkmJihuPTEpfX1yZXR1cm4gbn0obyx0Lm1heWJlQ29tcG9uZW50KTowLGM9aXx8JGE7cmV0dXJuIlsiK28ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBjKGUsdCl9KS5qb2luKCIsIikrIl0iKyhzPyIsIitzOiIiKX19ZnVuY3Rpb24gYmEoZSl7cmV0dXJuIHZvaWQgMCE9PWUuZm9yfHwidGVtcGxhdGUiPT09ZS50YWd8fCJzbG90Ij09PWUudGFnfWZ1bmN0aW9uICRhKGUsdCl7cmV0dXJuIDE9PT1lLnR5cGU/ZGEoZSx0KTozPT09ZS50eXBlJiZlLmlzQ29tbWVudD8ocj1lLCJfZSgiK0pTT04uc3RyaW5naWZ5KHIudGV4dCkrIikiKToiX3YoIisoMj09PShuPWUpLnR5cGU/bi5leHByZXNzaW9uOkNhKEpTT04uc3RyaW5naWZ5KG4udGV4dCkpKSsiKSI7dmFyIG4scn1mdW5jdGlvbiB3YShlKXtmb3IodmFyIHQ9IiIsbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3QrPSciJytyLm5hbWUrJyI6JytDYShyLnZhbHVlKSsiLCJ9cmV0dXJuIHQuc2xpY2UoMCwtMSl9ZnVuY3Rpb24gQ2EoZSl7cmV0dXJuIGUucmVwbGFjZSgvXHUyMDI4L2csIlxcdTIwMjgiKS5yZXBsYWNlKC9cdTIwMjkvZywiXFx1MjAyOSIpfW5ldyBSZWdFeHAoIlxcYiIrImRvLGlmLGZvcixsZXQsbmV3LHRyeSx2YXIsY2FzZSxlbHNlLHdpdGgsYXdhaXQsYnJlYWssY2F0Y2gsY2xhc3MsY29uc3Qsc3VwZXIsdGhyb3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZhdWx0LGV4dGVuZHMsZmluYWxseSxjb250aW51ZSxkZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHMiLnNwbGl0KCIsIikuam9pbigiXFxifFxcYiIpKyJcXGIiKSxuZXcgUmVnRXhwKCJcXGIiKyJkZWxldGUsdHlwZW9mLHZvaWQiLnNwbGl0KCIsIikuam9pbigiXFxzKlxcKFteXFwpXSpcXCl8XFxiIikrIlxccypcXChbXlxcKV0qXFwpIik7ZnVuY3Rpb24geGEodCxuKXt0cnl7cmV0dXJuIG5ldyBGdW5jdGlvbih0KX1jYXRjaChlKXtyZXR1cm4gbi5wdXNoKHtlcnI6ZSxjb2RlOnR9KSwkfX12YXIga2EsQWEsT2E9KGthPWZ1bmN0aW9uKGUsdCl7dmFyIG49SG8oZS50cmltKCksdCk7ITEhPT10Lm9wdGltaXplJiZlYShuLHQpO3ZhciByPXBhKG4sdCk7cmV0dXJue2FzdDpuLHJlbmRlcjpyLnJlbmRlcixzdGF0aWNSZW5kZXJGbnM6ci5zdGF0aWNSZW5kZXJGbnN9fSxmdW5jdGlvbihzKXtmdW5jdGlvbiBlKGUsdCl7dmFyIG49T2JqZWN0LmNyZWF0ZShzKSxyPVtdLGk9W107aWYobi53YXJuPWZ1bmN0aW9uKGUsdCl7KHQ/aTpyKS5wdXNoKGUpfSx0KWZvcih2YXIgbyBpbiB0Lm1vZHVsZXMmJihuLm1vZHVsZXM9KHMubW9kdWxlc3x8W10pLmNvbmNhdCh0Lm1vZHVsZXMpKSx0LmRpcmVjdGl2ZXMmJihuLmRpcmVjdGl2ZXM9bShPYmplY3QuY3JlYXRlKHMuZGlyZWN0aXZlc3x8bnVsbCksdC5kaXJlY3RpdmVzKSksdCkibW9kdWxlcyIhPT1vJiYiZGlyZWN0aXZlcyIhPT1vJiYobltvXT10W29dKTt2YXIgYT1rYShlLG4pO3JldHVybiBhLmVycm9ycz1yLGEudGlwcz1pLGF9cmV0dXJue2NvbXBpbGU6ZSxjb21waWxlVG9GdW5jdGlvbnM6KGM9ZSxsPU9iamVjdC5jcmVhdGUobnVsbCksZnVuY3Rpb24oZSx0LG4peyh0PW0oe30sdCkpLndhcm4sZGVsZXRlIHQud2Fybjt2YXIgcj10LmRlbGltaXRlcnM/U3RyaW5nKHQuZGVsaW1pdGVycykrZTplO2lmKGxbcl0pcmV0dXJuIGxbcl07dmFyIGk9YyhlLHQpLG89e30sYT1bXTtyZXR1cm4gby5yZW5kZXI9eGEoaS5yZW5kZXIsYSksby5zdGF0aWNSZW5kZXJGbnM9aS5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB4YShlLGEpfSksbFtyXT1vfSl9O3ZhciBjLGx9KShZbykuY29tcGlsZVRvRnVuY3Rpb25zO2Z1bmN0aW9uIFNhKGUpe3JldHVybihBYT1BYXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1lPyc8YSBocmVmPSJcbiIvPic6JzxkaXYgYT0iXG4iLz4nLDA8QWEuaW5uZXJIVE1MLmluZGV4T2YoIiYjMTA7Iil9dmFyIFRhPSEhQiYmU2EoITEpLEVhPSEhQiYmU2EoITApLGphPWUoZnVuY3Rpb24oZSl7dmFyIHQ9Sm4oZSk7cmV0dXJuIHQmJnQuaW5uZXJIVE1MfSksTmE9aG4ucHJvdG90eXBlLiRtb3VudDtyZXR1cm4gaG4ucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbihlLHQpe2lmKChlPWUmJkpuKGUpKT09PWRvY3VtZW50LmJvZHl8fGU9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy4kb3B0aW9ucztpZighbi5yZW5kZXIpe3ZhciByPW4udGVtcGxhdGU7aWYocilpZigic3RyaW5nIj09dHlwZW9mIHIpIiMiPT09ci5jaGFyQXQoMCkmJihyPWphKHIpKTtlbHNle2lmKCFyLm5vZGVUeXBlKXJldHVybiB0aGlzO3I9ci5pbm5lckhUTUx9ZWxzZSBlJiYocj1mdW5jdGlvbihlKXt7aWYoZS5vdXRlckhUTUwpcmV0dXJuIGUub3V0ZXJIVE1MO3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmFwcGVuZENoaWxkKGUuY2xvbmVOb2RlKCEwKSksdC5pbm5lckhUTUx9fShlKSk7aWYocil7dmFyIGk9T2Eocix7c2hvdWxkRGVjb2RlTmV3bGluZXM6VGEsc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOkVhLGRlbGltaXRlcnM6bi5kZWxpbWl0ZXJzLGNvbW1lbnRzOm4uY29tbWVudHN9LHRoaXMpLG89aS5yZW5kZXIsYT1pLnN0YXRpY1JlbmRlckZucztuLnJlbmRlcj1vLG4uc3RhdGljUmVuZGVyRm5zPWF9fXJldHVybiBOYS5jYWxsKHRoaXMsZSx0KX0saG4uY29tcGlsZT1PYSxobn0pOw=='></script>   
	<style id='style_magazine_css'>
		body{
			overflow:hidden;
//			background-color:#fcfcfc;
//			background-color:darkslategray;
			background-color:wheat;
			margin:0;
			padding:0;
			}

.magazine-viewport .container{
	position:absolute;
	top:50%;
	left:50%;
	width:922px;
	height:600px;
	margin:auto;
}

.magazine-viewport .magazine{
	width:922px;
	height:600px;
	left:-461px;
	top:-300px;
}

.magazine-viewport .page{
	width:461px;
	height:600px;
	background-color:white;
	background-repeat:no-repeat;
	background-size:100% 100%;
}

.magazine-viewport .zoomer .region{
	display:none;
}

.magazine .region{
	position:absolute;
	overflow:hidden;
	background:#0066FF;
	opacity:0.2;
	-webkit-border-radius:10px;
	-moz-border-radius:10px;
	-ms-border-radius:10px;
	-o-border-radius:10px;
	border-radius:10px;
	cursor:pointer;
	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
	filter: alpha(opacity=20);
}

.magazine .region:hover{
	opacity:0.5;
	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
	filter: alpha(opacity=50);
}

.magazine .region.zoom{
	opacity:0.01;
	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=1)";
	filter: alpha(opacity=1);
}

.magazine .region.zoom:hover{
	opacity:0.2;
	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
	filter: alpha(opacity=20);
}

.magazine .page{
	-webkit-box-shadow:0 0 20px rgba(0,0,0,0.2);
	-moz-box-shadow:0 0 20px rgba(0,0,0,0.2);
	-ms-box-shadow:0 0 20px rgba(0,0,0,0.2);
	-o-box-shadow:0 0 20px rgba(0,0,0,0.2);
	box-shadow:0 0 20px rgba(0,0,0,0.2);
}

.magazine-viewport .page img{
	-webkit-touch-callout: none;
	-webkit-user-select: none;
	-khtml-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	margin:0;
}

.magazine .even .gradient{
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:100%;

	background:-webkit-gradient(linear, left top, right top, color-stop(0.95, rgba(0,0,0,0)), color-stop(1, rgba(0,0,0,0.2)));
	background-image:-webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
	background-image:-moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
	background-image:-ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
	background-image:-o-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
	background-image:linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
}

.magazine .odd .gradient{
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:100%;

	background:-webkit-gradient(linear, right top, left top, color-stop(0.95, rgba(0,0,0,0)), color-stop(1, rgba(0,0,0,0.15)));
	background-image:-webkit-linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
	background-image:-moz-linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
	background-image:-ms-linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
	background-image:-o-linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
	background-image:linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
}

.magazine-viewport .zoom-in .even .gradient,
.magazine-viewport .zoom-in .odd .gradient{

	display:none;

}

.magazine-viewport .loader{
	background-image:url(../pics/loader.gif);
	width:22px;
	height:22px;
	position:absolute;
	top:280px;
	left:219px;
}

.magazine-viewport .shadow{
	-webkit-transition: -webkit-box-shadow 0.5s;
	-moz-transition: -moz-box-shadow 0.5s;
	-o-transition: -webkit-box-shadow 0.5s;
	-ms-transition: -ms-box-shadow 0.5s;

	-webkit-box-shadow:0 0 20px #ccc;
	-moz-box-shadow:0 0 20px #ccc;
	-o-box-shadow:0 0 20px #ccc;
	-ms-box-shadow:0 0 20px #ccc;
	box-shadow:0 0 20px #ccc;
}

.magazine-viewport .next-button,
.magazine-viewport .previous-button{
	width:22px;
	height:600px;
	position:absolute;
	top:0;
}

.magazine-viewport .next-button{
	right:-22px;
	-webkit-border-radius:0 15px 15px 0;
	-moz-border-radius:0 15px 15px 0;
	-ms-border-radius:0 15px 15px 0;
	-o-border-radius:0 15px 15px 0;
	border-radius:0 15px 15px 0;
}

.magazine-viewport .previous-button{
	left:-22px;
	-webkit-border-radius:15px 0 0 15px;
	-moz-border-radius:15px 0 0 15px;
	-ms-border-radius:15px 0 0 15px;
	-o-border-radius:15px 0 0 15px;
	border-radius:15px 0 0 15px;
}

.magazine-viewport .previous-button-hover,
.magazine-viewport .next-button-hover{
	background-color:rgba(0,0,0, 0.2);
}

.magazine-viewport .previous-button-hover,
.magazine-viewport .previous-button-down{
	background-image:url(../pics/arrows.png);
	background-position:-4px 284px;
	background-repeat:no-repeat;
}

.magazine-viewport .previous-button-down,
.magazine-viewport .next-button-down{
	background-color:rgba(0,0,0, 0.4);
}

.magazine-viewport .next-button-hover,
.magazine-viewport .next-button-down{
	background-image:url(../pics/arrows.png);
	background-position:-38px 284px;
	background-repeat:no-repeat;
}

.magazine-viewport .zoom-in .next-button,
.magazine-viewport .zoom-in .previous-button{
	display:none;
}

.animated{
	-webkit-transition:margin-left 0.5s;
	-moz-transition:margin-left 0.5s;
	-ms-transition:margin-left 0.5s;
	-o-transition:margin-left 0.5s;
	transition:margin-left 0.5s;
}

.thumbnails{
//	position:absolute;
	bottom:0;
	left:0;
	width:100%;
	height:140px;
	z-index:1;
}

.thumbnails > div{
	width:1050px;
	height:100px;
	margin:20px auto;
}

.thumbnails ul{
	margin:0;
	padding:0;
	text-align:center;
	-webkit-transform:scale3d(0.5, 0.5, 1);
	-moz-transform:scale3d(0.5, 0.5, 1);
	-o-transform:scale3d(0.5, 0.5, 1);
	-ms-transform:scale3d(0.5, 0.5, 1);
	transform:scale3d(0.5, 0.5, 1);
	-webkit-transition:-webkit-transform ease-in-out 100ms;
	-moz-transition:-moz-transform ease-in-out 100ms;
	-ms-transition:-ms-transform ease-in-out 100ms;
	-o-transition:-o-transform ease-in-out 100ms;
	transition:transform ease-in-out 100ms;
}

.thumbanils-touch ul{
	-webkit-transform:none;
	-moz-transform:none;
	-o-transform:none;
	-ms-transform:none;
	transform:none;
}

.thumbnails-hover ul{
	-webkit-transform:scale3d(0.6, 0.6, 1);
	-moz-transform:scale3d(0.6, 0.6, 1);
	-o-transform:scale3d(0.6, 0.6, 1);
	-ms-transform:scale3d(0.6, 0.6, 1);
	transform:scale3d(0.6, 0.6, 1);
}

.thumbnails li{
	list-style:none;
	display:inline-block;
	margin:0 5px;
	-webkit-box-shadow:0 0 10px #ccc;
	-moz-box-shadow:0 0 10px #ccc;
	-ms-box-shadow:0 0 10px #ccc;
	-o-box-shadow:0 0 10px #ccc;
	box-shadow:0 0 10px  #ccc;
	-webkit-transition:-webkit-transform 60ms;
	-moz-transition:-webkit-transform 60ms;
	-o-transition:-webkit-transform 60ms;
	-ms-transition:-webkit-transform 60ms;
	transition:-webkit-transform 60ms;
}

.thumbnails li span{
	display:none;
}

.thumbnails .current{
	-webkit-box-shadow:0 0 10px red;
	-moz-box-shadow:0 0 10px red;
	-ms-box-shadow:0 0 10px red;
	-o-box-shadow:0 0 10px red;
	box-shadow:0 0 10px red;
}

.thumbnails .thumb-hover{
	-webkit-transform:scale3d(1.3, 1.3, 1);
	-moz-transform:scale3d(1.3, 1.3, 1);
	-o-transform:scale3d(1.3, 1.3, 1);
	-ms-transform:scale3d(1.3, 1.3, 1);
	transform:scale3d(1.3, 1.3, 1);

	-webkit-box-shadow:0 0 10px #666;
	-moz-box-shadow:0 0 10px #666;
	-ms-box-shadow:0 0 10px #666;
	-o-box-shadow:0 0 10px #666;
	box-shadow:0 0 10px #666;
}

.thumbanils-touch .thumb-hover{
	-webkit-transform:none;
	-moz-transform:none;
	-o-transform:none;
	-ms-transform:none;
	transform:none;
}

.thumbnails .thumb-hover span{
	position:absolute;
	bottom:-30px;
	left:0;
	z-index:2;
	width:100%;
	height:30px;
	font:bold 15px arial;
	line-height:30px;
	color:#666;
	display:block;
	cursor:default;
}

.thumbnails img{
	float:left;
}

.exit-message{
	position: absolute;
	top:10px;
	left:0;
	width:100%;
	height:40px;
	z-index:10000;
}

.exit-message > div{
	width:140px;
	height:30px;
	margin:auto;
	background:rgba(0,0,0,0.5);
	text-align:center;
	font:12px arial;
	line-height:30px;
	color:white;
	-webkit-border-radius:10px;
	-moz-border-radius:10px;
	-ms-border-radius:10px;
	-o-border-radius:10px;
	border-radius:10px;
}

.zoom-icon{
	position:absolute;
	z-index:1000;
	width:22px;
	height:22px;
	top:10px;
	right:10px;
//	background-image:url(../pics/zoom-icons.png);
	background-image:url(fb/html/magazine/pics/zoom-icons.png);
	background-size:88px 22px;
}

.zoom-icon-in{
	background-position:0 0;
	cursor: pointer;
}

.zoom-icon-in.zoom-icon-in-hover{
	background-position:-22px 0;
	cursor: pointer;
}

.zoom-icon-out{
	background-position:-44px 0;
}

.zoom-icon-out.zoom-icon-out-hover{
	background-position:-66px 0;
	cursor: pointer;
}

		.bottom{
			position:absolute;
			left:0;
			bottom:0;
			width:100%;
			}
		</style id=style_magazine_css_end>
		</style>


<!-- FB_MAGAZINE_JS_BEG	JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ -->







	<script id=fb_magazine_js>
		function addPage(page, book) {
			var id, pages = book.turn('pages');
			var element = $('<div />', {});

// Create a new element for this page
// Add the page to the flipbook
// Add the initial HTML
// It will contain a loader indicator and a gradient
			if (book.turn('addPage', element, page)) {
				element.html('<div class="gradient"></div><div class="loader"></div>');
// Load the page
				loadPage(page, element);
				}
			}

// Create an image element
		function loadPage(page, pageElement) {
			var img = $('<img />');
			img.mousedown(function(e) {
				e.preventDefault();
				});
		
// Set the size
// Add the image to the page after loaded
// Remove the loader indicator
			img.load(function() {
				$(this).css({width: '100%', height: '100%'});
				$(this).appendTo(pageElement);
				pageElement.find('.loader').remove();
				});

// Load the page
		var pagelist = new Array();
		var pagelist_len = 0;
		var src = "";
		var ajaks = "";
		pagelist = load_pagelist();
		pagelist_len = pagelist.length;	
//		alert( "BUGS_470 pageslist="+pageslist+" page="+page+" pages_len="+pages_len );
		var splitlim = pagelist[page].split("|").length;
		src = pagelist[page].split("|")[splitlim-1];

//		src = pagelist[page].split("|")[12];
//		alert( "BUGS_490 page="+page+" pages_len="+pages_len+" src="+src );
//		img.attr('src', 'pages/' +  page + '.jpg');
		img.attr('src', src );
		loadRegions(page, pageElement);
		}

// Zoom in / Zoom out
	function zoomTo(event) {

		setTimeout(function() {
			if ($('.magazine-viewport').data().regionClicked) {
				$('.magazine-viewport').data().regionClicked = false;
			} else {
				if ($('.magazine-viewport').zoom('value')==1) {
					$('.magazine-viewport').zoom('zoomIn', event);
				} else {
					$('.magazine-viewport').zoom('zoomOut');
				}
			}
		}, 1);

}



// Load regions

	function loadRegions(page, element) {
		var fp_js = "pages/js/"+page+"-regions.json";
//		$.getJSON('pages/'+page+'-regions.json').
//		$.getJSON('pages/js/'+page+'-regions.json').
		$.getJSON(fp_js).
			done(function(data) {
				$.each(data, function(key, region) {
					addRegion(region, element);
				});
			});
		}

// Add region

function addRegion(region, pageElement) {
	
	var reg = $('<div />', {'class': 'region  ' + region['class']}),
		options = $('.magazine').turn('options'),
		pageWidth = options.width/2,
		pageHeight = options.height;

	reg.css({
		top: Math.round(region.y/pageHeight*100)+'%',
		left: Math.round(region.x/pageWidth*100)+'%',
		width: Math.round(region.width/pageWidth*100)+'%',
		height: Math.round(region.height/pageHeight*100)+'%'
	}).attr('region-data', $.param(region.data||''));


	reg.appendTo(pageElement);
}

// Process click on a region
	function regionClick(event) {
		var region = $(event.target);
		if (region.hasClass('region')) {
			$('.magazine-viewport').data().regionClicked = true;
			setTimeout(function() {
				$('.magazine-viewport').data().regionClicked = false;
				}, 100);
			var regionType = $.trim(region.attr('class').replace('region', ''));
			return processRegion(region, regionType);
			}
		}

// Process the data of every region
	function processRegion(region, regionType) {
		data = decodeParams(region.attr('region-data'));
		switch (regionType) {
			case 'link' :
				window.open(data.url);
				break;
			case 'zoom' :
				var regionOffset = region.offset(),
				viewportOffset = $('.magazine-viewport').offset(),
				pos = {
					x: regionOffset.left-viewportOffset.left,
					y: regionOffset.top-viewportOffset.top
					};
				$('.magazine-viewport').zoom('zoomIn', pos);
				break;
			case 'to-page' :
				$('.magazine').turn('page', data.page);
				break;
			}

}

// Load large page

	function loadLargePage(page, pageElement) {
		var img = $('<img />');
		img.load(function() {
			var prevImg = pageElement.find('img');
			$(this).css({width: '100%', height: '100%'});
			$(this).appendTo(pageElement);
			prevImg.remove();
			});

// Loadnew page
		var pagelist = new Array();
		var pagelist_len = pagelist.length;
		var j=0;
		var src = "";
//		alert("BUGS_610 loadSmallPage page="+page+" pagelist="+pagelist );
		pagelist = load_pagelist();
		pagelist_len = pagelist.length;
//		src = "pages/"+page+".jpg";


		var splitlim=pagelist[page].split("|").length;
//		src = pagelist[page].split( "|" )[12];
		src = pagelist[page].split( "|" )[splitlim-1];

		var zn_src_path = execTest(src);
		var zn_src_file = splitTest(src);
		var zn_src = zn_src_path.replace( zn_src_file, "zn/zn_"+zn_src_file );
		var tn_src = zn_src_path.replace( zn_src_file, "tn/tn_"+zn_src_file ).replace(".jpg",".png");
//		var zn_src = zn_src_path + "zn/zn_"+zn_src_file;

//		alert( "BUGS_685 src="+src );
//		alert( "BUGS_687 zn_src="+zn_src );
//		alert( "BUGS_688 tn_src="+tn_src );




//		alert("BUGS_620 loadLargePage page="+page+" pages_len="+pages_len+" src="+src );
//		alert("BUGS_621 loadLargePage pages="+pages+" pages_len="+pages_len );
//		alert("BUGS_622 loadLargePage window.pages="+window.pages+" pages_len="+pages_len );
//		img.attr('src', 'pages/' +  page + '.jpg');
//		img.attr('src', 'pages/' +  page + '-large.jpg');
//		img.attr('src', 'pages/zn/zn_' +  page + '.jpg');
		img.attr('src', zn_src );
		}

// Load small page

function loadSmallPage(page, pageElement) {
	var img = pageElement.find('img');
	img.css({width: '100%', height: '100%'});
	img.unbind('load');

// Loadnew page
	var pagelist = new Array();
	var pagelist_len = pagelist.length;
	var j=0;
	var src = "";
//	alert("BUGS_610 loadSmallPage page="+page+" pagelist="+pagelist );
	pagelist = load_pagelist();
	pagelist_len = pagelist.length;
	var splitlim=pagelist[page].split("|").length;
	src = "pages/"+page+".jpg";
	src = pagelist[page].split( "|" )[splitlim-1];
//	src = pagelist[page].split( "|" )[12];
//	alert("BUGS_650 loadSmallPage page="+page+" pages_len="+pages_len+" src="+src );
//	alert("BUGS_651 loadSmallPage pages="+pages+" pages_len="+pages_len );
//	alert("BUGS_652 loadSmallPage window.pages="+window.pages+" pages_len="+pages_len );
//	img.attr('src', 'pages/' +  page + '.jpg');
	img.attr('src', src );
	}

// http://code.google.com/p/chromium/issues/detail?id=128488

	function isChrome() {
		return navigator.userAgent.indexOf('Chrome')!=-1;
		}

	function disableControls(page) {
		if (page==1)
			$('.previous-button').hide();
		else
			$('.previous-button').show();
					
		if (page==$('.magazine').turn('pages'))
			$('.next-button').hide();
		else
			$('.next-button').show();
}

// Set the width and height for the viewport

function resizeViewport() {

	var width = $(window).width(),
		height = $(window).height(),
		options = $('.magazine').turn('options');

	$('.magazine').removeClass('animated');

	$('.magazine-viewport').css({
		width: width,
		height: height
	}).
	zoom('resize');


	if ($('.magazine').turn('zoom')==1) {
		var bound = calculateBound({
			width: options.width,
			height: options.height,
			boundWidth: Math.min(options.width, width),
			boundHeight: Math.min(options.height, height)
		});

		if (bound.width%2!==0)
			bound.width-=1;

			
		if (bound.width!=$('.magazine').width() || bound.height!=$('.magazine').height()) {

			$('.magazine').turn('size', bound.width, bound.height);

			if ($('.magazine').turn('page')==1)
				$('.magazine').turn('peel', 'br');

			$('.next-button').css({height: bound.height, backgroundPosition: '-38px '+(bound.height/2-32/2)+'px'});
			$('.previous-button').css({height: bound.height, backgroundPosition: '-4px '+(bound.height/2-32/2)+'px'});
		}

		$('.magazine').css({top: -bound.height/2, left: -bound.width/2});
	}

	var magazineOffset = $('.magazine').offset(),
		boundH = height - magazineOffset.top - $('.magazine').height(),
		marginTop = (boundH - $('.thumbnails > div').height()) / 2;

	if (marginTop<0) {
		$('.thumbnails').css({height:1});
	} else {
		$('.thumbnails').css({height: boundH});
		$('.thumbnails > div').css({marginTop: marginTop});
	}

	if (magazineOffset.top<$('.made').height())
		$('.made').hide();
	else
		$('.made').show();

	$('.magazine').addClass('animated');
	}


// Number of views in a flipbook
// Current view in a flipbook
	function numberOfViews(book) { return book.turn('pages') / 2 + 1; }

	function getViewNumber(book, page) {
		return parseInt((page || book.turn('page'))/2 + 1, 10);
		}

	function moveBar(yes) {
		if (Modernizr && Modernizr.csstransforms) {
			$('#slider .ui-slider-handle').css({zIndex: yes ? -1 : 10000});
			}
		}

	function setPreview(view) {
		var previewWidth = 112,
		previewHeight = 73,
//		previewSrc = 'pages/preview.jpg',
		previewSrc = 'imgs/preview.jpg',
		preview = $(_thumbPreview.children(':first')),
		numPages = (view==1 || view==$('#slider').slider('option', 'max')) ? 1 : 2,
		width = (numPages==1) ? previewWidth/2 : previewWidth;

	_thumbPreview.
		addClass('no-transition').
		css({width: width + 15,
			height: previewHeight + 15,
			top: -previewHeight - 30,
			left: ($($('#slider').children(':first')).width() - width - 15)/2
		});

	preview.css({
		width: width,
		height: previewHeight
	});

	if (preview.css('background-image')==='' ||
		preview.css('background-image')=='none') {

		preview.css({backgroundImage: 'url(' + previewSrc + ')'});

		setTimeout(function(){
			_thumbPreview.removeClass('no-transition');
		}, 0);

	}

	preview.css({backgroundPosition:
		'0px -'+((view-1)*previewHeight)+'px'
	});
}

// Width of the flipbook when zoomed in
// decode URL Parameters

	function largeMagazineWidth() { return 2214; }

	function decodeParams(data) {
		var parts = data.split('&'), d, obj = {};
		for (var i =0; i<parts.length; i++) {
			d = parts[i].split('=');
			obj[decodeURIComponent(d[0])] = decodeURIComponent(d[1]);
			}
		return obj;
		}

// Calculate the width and height of a square within another square

	function calculateBound(d) {
		var bound = {width: d.width, height: d.height};
		if (bound.width>d.boundWidth || bound.height>d.boundHeight) {
			var rel = bound.width/bound.height;
			if (d.boundWidth/rel>d.boundHeight && d.boundHeight*rel<=d.boundWidth) {
				bound.width = Math.round(d.boundHeight*rel);
				bound.height = d.boundHeight;
				} 
			else {
				bound.width = d.boundWidth;
				bound.height = Math.round(d.boundWidth/rel);
				}
			}
		return bound;
		}
		</script id=fb_magazine_js_end>"



	<script id="script_load_pagelist_head" >
		function load_pagelist_head() {
var pagelist_head_jtfdcr=
`||||||||/fb/jtfdcr/pages/0.jpg
||||||||/fb/jtfdcr/pages/1.jpg
||||||||/fb/jtfdcr/pages/10.jpg
||||||||/fb/jtfdcr/pages/11.jpg
||||||||/fb/jtfdcr/pages/12.jpg
||||||||/fb/jtfdcr/pages/13.jpg
||||||||/fb/jtfdcr/pages/14.jpg`;

var pagelist_head_pages=``;

var pagelist_head=
`pages/1.jpg
pages/2.jpg
pages/3.jpg
pages/4.jpg
pages/5.jpg
pages/6.jpg
pages/7.jpg
pages/8.jpg
pages/9.jpg
pages/10.jpg
pages/11.jpg
pages/12.jpg
pages/13.jpg
pages/14.jpg
pages/15.jpg
pages/16.jpg
pages/17.jpg
pages/18.jpg
pages/19.jpg
pages/20.jpg
pages/21.jpg
pages/22.jpg
pages/23.jpg
pages/24.jpg
pages/25.jpg
pages/26.jpg
pages/27.jpg
pages/28.jpg
pages/29.jpg
pages/30.jpg
pages/31.jpg
pages/32.jpg
pages/33.jpg
pages/34.jpg
pages/35.jpg
pages/36.jpg
pages/37.jpg
pages/38.jpg
pages/39.jpg
pages/40.jpg
pages/41.jpg
pages/42.jpg
pages/43.jpg
pages/44.jpg
pages/45.jpg
pages/46.jpg
pages/47.jpg
pages/48.jpg
pages/49.jpg
pages/50.jpg
pages/51.jpg
pages/52.jpg
pages/53.jpg
pages/54.jpg
pages/55.jpg
pages/56.jpg
pages/57.jpg
pages/58.jpg
pages/59.jpg
pages/60.jpg
pages/61.jpg
pages/62.jpg
pages/63.jpg
pages/64.jpg`;
		return( pagelist_head.split("\n"));
		}
		</script>



	<script id="script_load_pagelist_pages" >
		function load_pagelist_pages() {
var pagelist_pages= `pages/1.jpg
pages/2.jpg
pages/3.jpg
pages/4.jpg
pages/5.jpg
pages/6.jpg
pages/7.jpg
pages/8.jpg
pages/9.jpg
pages/10.jpg
pages/11.jpg
pages/12.jpg
pages/13.jpg
pages/14.jpg
pages/15.jpg
pages/16.jpg
pages/17.jpg
pages/18.jpg
pages/19.jpg
pages/20.jpg
pages/21.jpg
pages/22.jpg
pages/23.jpg
pages/24.jpg
pages/25.jpg
pages/26.jpg
pages/27.jpg
pages/28.jpg
pages/29.jpg
pages/30.jpg
pages/31.jpg
pages/32.jpg
pages/33.jpg
pages/34.jpg
pages/35.jpg
pages/36.jpg
pages/37.jpg
pages/38.jpg
pages/39.jpg
pages/40.jpg
pages/41.jpg
pages/42.jpg
pages/43.jpg
pages/44.jpg
pages/45.jpg
pages/46.jpg
pages/47.jpg
pages/48.jpg
pages/49.jpg
pages/50.jpg
pages/51.jpg
pages/52.jpg
pages/53.jpg
pages/54.jpg
pages/55.jpg
pages/56.jpg
pages/57.jpg
pages/58.jpg
pages/59.jpg
pages/60.jpg
pages/61.jpg
pages/62.jpg
pages/63.jpg
pages/64.jpg
pages/65.jpg
pages/66.jpg
pages/67.jpg
pages/68.jpg
pages/69.jpg
pages/70.jpg
pages/71.jpg
pages/72.jpg
pages/73.jpg
pages/74.jpg
pages/75.jpg
pages/76.jpg
pages/77.jpg
pages/78.jpg
pages/79.jpg
pages/80.jpg
pages/81.jpg
pages/82.jpg
pages/83.jpg
pages/84.jpg
pages/85.jpg
pages/86.jpg
pages/87.jpg
pages/88.jpg
pages/89.jpg
pages/90.jpg
pages/91.jpg
pages/92.jpg
pages/93.jpg
pages/94.jpg
pages/95.jpg
pages/96.jpg
pages/97.jpg
pages/98.jpg
pages/99.jpg
pages/100.jpg
pages/101.jpg
pages/102.jpg
pages/103.jpg
pages/104.jpg
pages/105.jpg
pages/106.jpg
pages/107.jpg
pages/108.jpg
pages/109.jpg
pages/110.jpg
pages/111.jpg
pages/112.jpg
pages/113.jpg
pages/114.jpg
pages/115.jpg
pages/116.jpg
pages/117.jpg
pages/118.jpg
pages/119.jpg
pages/120.jpg
pages/121.jpg
pages/122.jpg
pages/123.jpg
pages/124.jpg
pages/125.jpg
pages/126.jpg
pages/127.jpg
pages/128.jpg
pages/129.jpg
pages/130.jpg
pages/131.jpg
pages/132.jpg
pages/133.jpg
pages/134.jpg
pages/135.jpg
pages/136.jpg
pages/137.jpg
pages/138.jpg
pages/139.jpg
pages/140.jpg
pages/141.jpg
pages/142.jpg
pages/143.jpg
pages/144.jpg
pages/145.jpg
pages/146.jpg
pages/147.jpg
pages/148.jpg
pages/149.jpg
pages/150.jpg
pages/151.jpg
pages/152.jpg
pages/153.jpg
pages/154.jpg
pages/155.jpg
pages/156.jpg
pages/157.jpg
pages/158.jpg
pages/159.jpg
pages/160.jpg
pages/161.jpg
pages/162.jpg
pages/163.jpg
pages/164.jpg
pages/165.jpg
pages/166.jpg
pages/167.jpg
pages/168.jpg
pages/169.jpg
pages/170.jpg
pages/171.jpg
pages/172.jpg
pages/173.jpg
pages/174.jpg
pages/175.jpg
pages/176.jpg
pages/177.jpg
pages/178.jpg
pages/179.jpg
pages/180.jpg
pages/181.jpg
pages/182.jpg
pages/183.jpg
pages/184.jpg
pages/185.jpg
pages/186.jpg
pages/187.jpg
pages/188.jpg
pages/189.jpg
pages/190.jpg
pages/191.jpg
pages/192.jpg
pages/193.jpg
pages/194.jpg
pages/195.jpg
pages/196.jpg
pages/197.jpg
pages/198.jpg
pages/199.jpg
pages/200.jpg
pages/201.jpg
pages/202.jpg
pages/203.jpg
pages/204.jpg
pages/205.jpg
pages/206.jpg
pages/207.jpg
pages/208.jpg
pages/209.jpg
pages/210.jpg
pages/211.jpg
pages/212.jpg
pages/213.jpg
pages/214.jpg
pages/215.jpg
pages/216.jpg
pages/217.jpg
pages/218.jpg
pages/219.jpg
pages/220.jpg
pages/221.jpg
pages/222.jpg
pages/223.jpg
pages/224.jpg
pages/225.jpg
pages/226.jpg
pages/227.jpg
pages/228.jpg
pages/229.jpg
pages/230.jpg
pages/231.jpg
pages/232.jpg
pages/233.jpg
pages/234.jpg
pages/235.jpg
pages/236.jpg
pages/237.jpg
pages/238.jpg
pages/239.jpg
pages/240.jpg
pages/241.jpg
pages/242.jpg
pages/243.jpg
pages/244.jpg
pages/245.jpg
pages/246.jpg
pages/247.jpg
pages/248.jpg
pages/249.jpg
pages/250.jpg
pages/251.jpg
pages/252.jpg
pages/253.jpg
pages/254.jpg
pages/255.jpg
pages/256.jpg
pages/257.jpg
pages/258.jpg
pages/259.jpg
pages/260.jpg
pages/261.jpg
pages/262.jpg
pages/263.jpg
pages/264.jpg
pages/265.jpg
pages/266.jpg
pages/267.jpg
pages/268.jpg
pages/269.jpg
pages/270.jpg
pages/271.jpg
pages/272.jpg
pages/273.jpg
pages/274.jpg
pages/275.jpg
pages/276.jpg
pages/277.jpg
pages/278.jpg
pages/279.jpg
pages/280.jpg
pages/281.jpg
pages/282.jpg
pages/283.jpg
pages/284.jpg
pages/285.jpg
pages/286.jpg
pages/287.jpg
pages/288.jpg
pages/289.jpg
pages/290.jpg
pages/291.jpg
pages/292.jpg
pages/293.jpg
pages/294.jpg
pages/295.jpg
pages/296.jpg
pages/297.jpg
pages/298.jpg
pages/299.jpg
pages/300.jpg
pages/301.jpg
pages/302.jpg
pages/303.jpg
pages/304.jpg
pages/305.jpg
pages/306.jpg
pages/307.jpg
pages/308.jpg
pages/309.jpg
pages/310.jpg
pages/311.jpg
pages/312.jpg
pages/313.jpg
pages/314.jpg
pages/315.jpg
pages/316.jpg
pages/317.jpg
pages/318.jpg
pages/319.jpg
pages/320.jpg
pages/321.jpg
pages/322.jpg
pages/323.jpg
pages/324.jpg
pages/325.jpg
pages/326.jpg
pages/327.jpg
pages/328.jpg
pages/329.jpg
pages/330.jpg
pages/331.jpg
pages/332.jpg
pages/333.jpg
pages/334.jpg
pages/335.jpg
pages/336.jpg
pages/337.jpg
pages/338.jpg
pages/339.jpg
pages/340.jpg
pages/341.jpg
pages/342.jpg
pages/343.jpg
pages/344.jpg
pages/345.jpg
pages/346.jpg
pages/347.jpg
pages/348.jpg
pages/349.jpg
pages/350.jpg
pages/351.jpg
pages/352.jpg
pages/353.jpg
pages/354.jpg
pages/355.jpg
pages/356.jpg
pages/357.jpg
pages/358.jpg
pages/359.jpg
pages/360.jpg`;
			return(pagelist_pages.split("\n"));
			}

		function load_pagelist_chap01() {
//			alert( "BUGS_1000 load_pagelist_chap01" );
var pagelist_chap01 =
`chap01/1.jpg
chap01/2.jpg
chap01/3.jpg
chap01/4.jpg
chap01/5.jpg
chap01/6.jpg
chap01/7.jpg
chap01/8.jpg
chap01/9.jpg
chap01/10.jpg
chap01/11.jpg
chap01/12.jpg
chap01/13.jpg
chap01/14.jpg
chap01/15.jpg
chap01/16.jpg`;
			return( pagelist_chap01.split("\n") );
			}




		function load_pagelist_chap02() {
//			alert( "BUGS_1000 load_pagelist_chap02" );
var pagelist_chap02 =
`chap02/1.jpg
chap02/2.jpg
chap02/3.jpg
chap02/4.jpg
chap02/5.jpg
chap02/6.jpg
chap02/7.jpg
chap02/8.jpg
chap02/9.jpg
chap02/10.jpg
chap02/11.jpg
chap02/12.jpg
chap02/13.jpg
chap02/14.jpg
chap02/16.jpg`;
			return( pagelist_chap02.split("\n") );
			}



		function load_pagelist_chap03() {
//			alert( "BUGS_1000 load_pagelist_chap03" );
var pagelist_chap03 =
`chap03/1.jpg
chap03/2.jpg
chap03/3.jpg
chap03/4.jpg
chap03/5.jpg
chap03/6.jpg
chap03/7.jpg
chap03/8.jpg
chap03/9.jpg
chap03/10.jpg
chap03/11.jpg
chap03/12.jpg
chap03/13.jpg
chap03/14.jpg
chap03/16.jpg`;
			return( pagelist_chap03.split("\n") );
			}

		function load_pagelist_shoebox() {
//			alert( "BUGS_1000 load_shoebox" );
var pagelist_shoebox=
`shoebox/1.jpg
shoebox/2.jpg
shoebox/3.jpg
shoebox/4.jpg
shoebox/5.jpg
shoebox/6.jpg
shoebox/7.jpg
shoebox/8.jpg
shoebox/9.jpg
shoebox/10.jpg
shoebox/11.jpg
shoebox/12.jpg
shoebox/13.jpg
shoebox/14.jpg
/fb/jtfdcr/shoebox/10.jpg
/fb/jtfdcr/shoebox/2.jpg
/fb/jtfdcr/shoebox/20020322_090201_1414191.jpg
/fb/jtfdcr/shoebox/20020322_090301_1414194.jpg
/fb/jtfdcr/shoebox/20020323_182401_1424206.jpg
/fb/jtfdcr/shoebox/20020527_093501_1010103.jpg
/fb/jtfdcr/shoebox/20020527_093501_1010104.jpg
/fb/jtfdcr/shoebox/20020527_095501_1070715.jpg
/fb/jtfdcr/shoebox/20020527_095601_1070717.jpg
/fb/jtfdcr/shoebox/20020527_123401_1070728.jpg
/fb/jtfdcr/shoebox/20020527_123401_1070730.jpg
/fb/jtfdcr/shoebox/20020527_132401_1070735.jpg
/fb/jtfdcr/shoebox/20020527_140901_1070743.jpg
/fb/jtfdcr/shoebox/20020527_140901_1070744.jpg
/fb/jtfdcr/shoebox/20020527_140901_1070745.jpg
/fb/jtfdcr/shoebox/20020527_140901_1070746.jpg
/fb/jtfdcr/shoebox/20020623_180601_1090984.jpg
/fb/jtfdcr/shoebox/20021118_093601_1252573(1).jpg
/fb/jtfdcr/shoebox/20021118_093601_1252573.jpg
/fb/jtfdcr/shoebox/20021118_093601_1252574.jpg
/fb/jtfdcr/shoebox/20021118_093601_1252575.jpg
/fb/jtfdcr/shoebox/20021120_084701_1252600.jpg
/fb/jtfdcr/shoebox/20021122_113301_1272744.jpg
/fb/jtfdcr/shoebox/20021122_113301_1272746.jpg
/fb/jtfdcr/shoebox/20021130_100801_1282877.jpg
/fb/jtfdcr/shoebox/20021201_132601_1292972.jpg
/fb/jtfdcr/shoebox/20021201_132701_1292974.jpg
/fb/jtfdcr/shoebox/20021201_132701_jtfin.jpg
/fb/jtfdcr/shoebox/20021201_132801_1292980.jpg
/fb/jtfdcr/shoebox/20021201_132901_1292986.jpg
/fb/jtfdcr/shoebox/20021204_090301_1292995.jpg
/fb/jtfdcr/shoebox/20021204_104701_1303005.jpg
/fb/jtfdcr/shoebox/20021204_105501_1303010.jpg
/fb/jtfdcr/shoebox/20021204_161501_1303018.jpg
/fb/jtfdcr/shoebox/20021204_161501_1303019.jpg
/fb/jtfdcr/shoebox/20021204_163301_1303026.jpg
/fb/jtfdcr/shoebox/20021207_104801_1303064.jpg
/fb/jtfdcr/shoebox/20021207_105001_1303067.jpg
/fb/jtfdcr/shoebox/20021214_105101_1303095.jpg
/fb/jtfdcr/shoebox/20021215_150101_1313120.jpg
/fb/jtfdcr/shoebox/20021215_150101_1313121.jpg
/fb/jtfdcr/shoebox/20021215_150701_1313125.jpg
/fb/jtfdcr/shoebox/20021215_150801_1313128.jpg
/fb/jtfdcr/shoebox/20021225_105901_1313160.jpg
/fb/jtfdcr/shoebox/20050105_054001_1858560.jpg
/fb/jtfdcr/shoebox/20050105_054001_1858561.jpg
/fb/jtfdcr/shoebox/20050107_052201_1858570.jpg
/fb/jtfdcr/shoebox/20050107_052401_1858581.jpg
/fb/jtfdcr/shoebox/20050107_052401_1858585.jpg
/fb/jtfdcr/shoebox/20050107_052701_1858593.jpg
/fb/jtfdcr/shoebox/20050107_052701_1858594.jpg
/fb/jtfdcr/shoebox/20050107_052701_1858597.jpg
/fb/jtfdcr/shoebox/20050107_053401_1868638.jpg
/fb/jtfdcr/shoebox/20050108_044601_1868681.jpg
/fb/jtfdcr/shoebox/20050108_044601_1868684.jpg
/fb/jtfdcr/shoebox/20050109_031201_1878702.jpg
/fb/jtfdcr/shoebox/20070507_185501_1010108.jpg
/fb/jtfdcr/shoebox/20080905_182801_1373709.jpg
/fb/jtfdcr/shoebox/20080914_094801_1373727.jpg
/fb/jtfdcr/shoebox/20080927_092701_1373761.jpg
/fb/jtfdcr/shoebox/20080927_092701_1373762.jpg
/fb/jtfdcr/shoebox/20080927_092801_1373763.jpg
/fb/jtfdcr/shoebox/20080927_092801_1373764.jpg
/fb/jtfdcr/shoebox/20080927_092801_1373765.jpg
/fb/jtfdcr/shoebox/20080927_092801_1373766.jpg
/fb/jtfdcr/shoebox/20080927_092901_1373768.jpg
/fb/jtfdcr/shoebox/20080927_092901_1373769.jpg
/fb/jtfdcr/shoebox/20080927_095601_1373770.jpg
/fb/jtfdcr/shoebox/20090322_241401_1404085.jpg
/fb/jtfdcr/shoebox/20090322_241401_1404088.jpg
/fb/jtfdcr/shoebox/20090322_241401_1404089.jpg
/fb/jtfdcr/shoebox/20090425_142201_2464664.jpg
/fb/jtfdcr/shoebox/20090425_142301_2464670.jpg
/fb/jtfdcr/shoebox/20091002_160801_1474760.jpg
/fb/jtfdcr/shoebox/20091002_160801_1474761.jpg
/fb/jtfdcr/shoebox/20091002_160901_1474763.jpg
/fb/jtfdcr/shoebox/20091003_142401_1474777.jpg
/fb/jtfdcr/shoebox/20151221_011.jpg
/fb/jtfdcr/shoebox/20161007_jtflaw_001.jpg
/fb/jtfdcr/shoebox/20161007_jtflaw_064.jpg
/fb/jtfdcr/shoebox/20161007_jtflaw_065.jpg
/fb/jtfdcr/shoebox/20161007_jtflaw_066.jpg
/fb/jtfdcr/shoebox/220px-Once_Upon_A_Time_In_America1.jpg
/fb/jtfdcr/shoebox/220px-Uncle_Sam's_Thanksgiving_Dinner_(November_1869),_by_Thomas_Nast.jpg
/fb/jtfdcr/shoebox/220px-Uncle_Sam_Memorial_Statue,_Arlington,_MA_-_Samuel_Wilson.jpg
/fb/jtfdcr/shoebox/220px-Uncle_Sam_needs_that_extra_shovelful.jpg
/fb/jtfdcr/shoebox/3.jpg
/fb/jtfdcr/shoebox/4.jpg
/fb/jtfdcr/shoebox/5 not-so-obvious Finder features new Mac users might not know %7C MacYourself.jpg
/fb/jtfdcr/shoebox/5.jpg
/fb/jtfdcr/shoebox/5_yard_wagon.jpg
/fb/jtfdcr/shoebox/5hiMs.jpg
/fb/jtfdcr/shoebox/6.jpg
/fb/jtfdcr/shoebox/673120.jpg
/fb/jtfdcr/shoebox/6_driveway.jpg
/fb/jtfdcr/shoebox/7.jpg
/fb/jtfdcr/shoebox/7_court.jpg
/fb/jtfdcr/shoebox/8.jpg
/fb/jtfdcr/shoebox/9.jpg
/fb/jtfdcr/shoebox/9557_fiona_runs_201506_001.jpg
/fb/jtfdcr/shoebox/9557_fiona_runs_201506_002.jpg
/fb/jtfdcr/shoebox/9558_byrd_trustee_threat_201505_001.jpg
/fb/jtfdcr/shoebox/9558_byrd_trustee_threat_201505_002.jpg
/fb/jtfdcr/shoebox/9558_byrd_trustee_threat_201505_003.jpg
/fb/jtfdcr/shoebox/Create a thumbnail image every X seconds of the video – FFmpeg.jpg
/fb/jtfdcr/shoebox/Dragon-1.jpg
/fb/jtfdcr/shoebox/FL000001.jpg
/fb/jtfdcr/shoebox/FL000002.jpg
/fb/jtfdcr/shoebox/Hessian_jager.jpg
/fb/jtfdcr/shoebox/IMG_0001.jpg
/fb/jtfdcr/shoebox/IMG_0002.jpg
/fb/jtfdcr/shoebox/IMG_0004.jpg
/fb/jtfdcr/shoebox/IMG_0006.jpg
/fb/jtfdcr/shoebox/IMG_0007.jpg
/fb/jtfdcr/shoebox/IMG_0013.jpg
/fb/jtfdcr/shoebox/IMG_0080.jpg
/fb/jtfdcr/shoebox/IMG_0081.jpg
/fb/jtfdcr/shoebox/IMG_0120.jpg
/fb/jtfdcr/shoebox/IMG_0210.jpg
/fb/jtfdcr/shoebox/IMG_0212.jpg
/fb/jtfdcr/shoebox/IMG_3968.jpg
/fb/jtfdcr/shoebox/IMG_3969.jpg
/fb/jtfdcr/shoebox/IMG_3970_20150716_0618.jpg
/fb/jtfdcr/shoebox/IMG_3971_20150716_0623.jpg
/fb/jtfdcr/shoebox/IMG_3972.jpg
/fb/jtfdcr/shoebox/IMG_3972_20150716_0625.jpg
/fb/jtfdcr/shoebox/IMG_3973.jpg
/fb/jtfdcr/shoebox/IMG_3973_20150716_0630.jpg
/fb/jtfdcr/shoebox/IMG_3974.jpg
/fb/jtfdcr/shoebox/IMG_3974_20150716_0631.jpg
/fb/jtfdcr/shoebox/IMG_3975.jpg
/fb/jtfdcr/shoebox/IMG_3975_20150716_0631.jpg
/fb/jtfdcr/shoebox/IMG_3976.jpg
/fb/jtfdcr/shoebox/IMG_3976_20150716_0634.jpg
/fb/jtfdcr/shoebox/IMG_3977_20150716_0636.jpg
/fb/jtfdcr/shoebox/IMG_3978.jpg
/fb/jtfdcr/shoebox/IMG_3978_20150716_0636.jpg
/fb/jtfdcr/shoebox/IMG_3979.jpg
/fb/jtfdcr/shoebox/IMG_3979_20150716_0636.jpg
/fb/jtfdcr/shoebox/IMG_3980_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3981.jpg
/fb/jtfdcr/shoebox/IMG_3981_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3982.jpg
/fb/jtfdcr/shoebox/IMG_3982_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3983.jpg
/fb/jtfdcr/shoebox/IMG_3983_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3984.jpg
/fb/jtfdcr/shoebox/IMG_3984_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3985_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3986_20150716_0637.jpg
/fb/jtfdcr/shoebox/IMG_3987_20150716_0638.jpg
/fb/jtfdcr/shoebox/IMG_3988.jpg
/fb/jtfdcr/shoebox/IMG_3988_20150716_0644.jpg
/fb/jtfdcr/shoebox/IMG_3989.jpg
/fb/jtfdcr/shoebox/IMG_3989_20150716_0708.jpg
/fb/jtfdcr/shoebox/IMG_3994.jpg
/fb/jtfdcr/shoebox/IMG_5605.jpg
/fb/jtfdcr/shoebox/IMG_5611.jpg
/fb/jtfdcr/shoebox/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg
/fb/jtfdcr/shoebox/IMG_9900.jpg
/fb/jtfdcr/shoebox/IS137avbnxkbpu0000000000.jpg
/fb/jtfdcr/shoebox/IS13v82nj0zuax0000000000.jpg
/fb/jtfdcr/shoebox/ISxrzpc0f6eb4x0000000000.jpg
/fb/jtfdcr/shoebox/Img_0033.jpg
/fb/jtfdcr/shoebox/Img_0034.jpg
/fb/jtfdcr/shoebox/JKassil-R1-010-3A.jpg
/fb/jtfdcr/shoebox/JULIA3.jpg
/fb/jtfdcr/shoebox/Michael_clayton.jpg
/fb/jtfdcr/shoebox/OLDPHONE.jpg
/fb/jtfdcr/shoebox/PASA01_1.jpg
/fb/jtfdcr/shoebox/PASA01_2.jpg
/fb/jtfdcr/shoebox/PASA01_3.jpg
/fb/jtfdcr/shoebox/Scan 1.jpg
/fb/jtfdcr/shoebox/Scan 2.jpg
/fb/jtfdcr/shoebox/Scan 3.jpg
/fb/jtfdcr/shoebox/Scan 4.jpg
/fb/jtfdcr/shoebox/Scan 5.jpg
/fb/jtfdcr/shoebox/Scan 6.jpg
/fb/jtfdcr/shoebox/Scan 7.jpg
/fb/jtfdcr/shoebox/adam_carshow_2012.jpg
/fb/jtfdcr/shoebox/adma_flash_20130420_162341.jpg
/fb/jtfdcr/shoebox/adma_flash_20130420_164330.jpg
/fb/jtfdcr/shoebox/adma_flash_20130420_164331.jpg
/fb/jtfdcr/shoebox/adma_flash_20130420_164333.jpg
/fb/jtfdcr/shoebox/alan_cohen_police_20151221_010.jpg
/fb/jtfdcr/shoebox/alan_w_cohen.jpg
/fb/jtfdcr/shoebox/amsterdam_bridges.jpg
/fb/jtfdcr/shoebox/amsterdam_rooftops.jpg
/fb/jtfdcr/shoebox/argonne.jpg
/fb/jtfdcr/shoebox/arrows.jpg
/fb/jtfdcr/shoebox/austrian.jpg
/fb/jtfdcr/shoebox/avatar5688_8.jpg
/fb/jtfdcr/shoebox/bavaria_lake_mountain.jpg
/fb/jtfdcr/shoebox/bavarian.jpg
/fb/jtfdcr/shoebox/bethany_english__cle.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_001.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_002.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_003.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_004.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_005.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_006.jpg
/fb/jtfdcr/shoebox/bethany_english_lutheran_cle_01.jpg
/fb/jtfdcr/shoebox/bg_noise1.jpg
/fb/jtfdcr/shoebox/bg_noise2.jpg
/fb/jtfdcr/shoebox/bg_noise3.jpg
/fb/jtfdcr/shoebox/bg_swoorl1.jpg
/fb/jtfdcr/shoebox/bg_swoorl2.jpg
/fb/jtfdcr/shoebox/big_snow.jpg
/fb/jtfdcr/shoebox/bigturtle.jpg
/fb/jtfdcr/shoebox/bigturtle_save.jpg
/fb/jtfdcr/shoebox/blackforest.jpg
/fb/jtfdcr/shoebox/blackforest_stroll.jpg
/fb/jtfdcr/shoebox/blurred.jpg
/fb/jtfdcr/shoebox/brothers4.jpg
/fb/jtfdcr/shoebox/cage.jpg
/fb/jtfdcr/shoebox/call_summary_29jamestown.jpg
/fb/jtfdcr/shoebox/call_summary_jamestown_pg1.jpg
/fb/jtfdcr/shoebox/call_summary_jamestown_pg2.jpg
/fb/jtfdcr/shoebox/call_summary_jamestown_pg3.jpg
/fb/jtfdcr/shoebox/castle.jpg
/fb/jtfdcr/shoebox/cfaa.jpg
/fb/jtfdcr/shoebox/chapel.jpg
/fb/jtfdcr/shoebox/code cartooning — Converting HTML5 Canvas Animation to GIF Animation....jpg
/fb/jtfdcr/shoebox/cohen_15403521_15445941_comb_151203.jpg
/fb/jtfdcr/shoebox/cohen_15403521_15445941_cont_160121.jpg
/fb/jtfdcr/shoebox/cohen_15403521_continued_151203.jpg
/fb/jtfdcr/shoebox/cohen_affidavit_records_151030.jpg
/fb/jtfdcr/shoebox/columbia.jpg
/fb/jtfdcr/shoebox/columbia_pw_adminiwii_ko2us.jpg
/fb/jtfdcr/shoebox/columbia_templet.jpg
/fb/jtfdcr/shoebox/columbiastahrartwork.jpg
/fb/jtfdcr/shoebox/danish_woman.jpg
/fb/jtfdcr/shoebox/defford_boat.jpg
/fb/jtfdcr/shoebox/defford_snow_fairy.jpg
/fb/jtfdcr/shoebox/denmark_window_view.jpg
/fb/jtfdcr/shoebox/doghead_video_003.jpg
/fb/jtfdcr/shoebox/doghead_video_005.jpg
/fb/jtfdcr/shoebox/doghead_video_012.jpg
/fb/jtfdcr/shoebox/doghead_video_015.jpg
/fb/jtfdcr/shoebox/door_locks_vienna.jpg
/fb/jtfdcr/shoebox/drinks.jpg
/fb/jtfdcr/shoebox/drinks2.jpg
/fb/jtfdcr/shoebox/emh_20160911_056.jpg
/fb/jtfdcr/shoebox/emh_20160911_057.jpg
/fb/jtfdcr/shoebox/emh_20160911_058.jpg
/fb/jtfdcr/shoebox/emh_20160911_059.jpg
/fb/jtfdcr/shoebox/emh_20160911_060.jpg
/fb/jtfdcr/shoebox/emma_and_dexter.jpg
/fb/jtfdcr/shoebox/family_est_-_with_birds_ce50b229-338b-4198-8722-3b4efff3aacf_grande.jpg
/fb/jtfdcr/shoebox/farkas_neopolean.jpg
/fb/jtfdcr/shoebox/fb_1.jpg
/fb/jtfdcr/shoebox/fb_byrdpucker_pages_1.jpg
/fb/jtfdcr/shoebox/fb_focus_pages_1.jpg
/fb/jtfdcr/shoebox/fb_gifs_pages_1.jpg
/fb/jtfdcr/shoebox/fb_go_pages_1.jpg
/fb/jtfdcr/shoebox/fb_gofunwii_pages_1.jpg
/fb/jtfdcr/shoebox/fb_imgs_1.jpg
/fb/jtfdcr/shoebox/fb_iperms_pages_1.jpg
/fb/jtfdcr/shoebox/fb_jak1_pages_1.jpg
/fb/jtfdcr/shoebox/fb_jak2_pages_1.jpg
/fb/jtfdcr/shoebox/fb_jtfdcr_pages_1.jpg
/fb/jtfdcr/shoebox/fb_kitiworks_maga_pages_zn1_1.jpg
/fb/jtfdcr/shoebox/fb_kitiworks_pages_1.jpg
/fb/jtfdcr/shoebox/fb_kitiworks_pages_orig_1.jpg
/fb/jtfdcr/shoebox/fb_kitiworks_pages_orig_zn1_1.jpg
/fb/jtfdcr/shoebox/fb_konabus_pages_1.jpg
/fb/jtfdcr/shoebox/fb_konet_pages_1.jpg
/fb/jtfdcr/shoebox/fb_law_law_law501_pages_1.jpg
/fb/jtfdcr/shoebox/fb_law_pages_1.jpg
/fb/jtfdcr/shoebox/fb_med_pages_1.jpg
/fb/jtfdcr/shoebox/fb_pages_1.jpg
/fb/jtfdcr/shoebox/fb_pages_broke_1.jpg
/fb/jtfdcr/shoebox/fb_pastryroad_athensfood_imgs_1.jpg
/fb/jtfdcr/shoebox/fb_smileworthy_wimsy_pages_1.jpg
/fb/jtfdcr/shoebox/fb_soul.jpg
/fb/jtfdcr/shoebox/fb_templets_basic_pages_1.jpg
/fb/jtfdcr/shoebox/fb_templets_maga_pages_1.jpg
/fb/jtfdcr/shoebox/fb_us_kdar_hotmax_pages_1.jpg
/fb/jtfdcr/shoebox/flagged_coffins.jpg
/fb/jtfdcr/shoebox/floyd_trouten.jpg
/fb/jtfdcr/shoebox/gavel.jpg
/fb/jtfdcr/shoebox/gavel_band.jpg
/fb/jtfdcr/shoebox/gold_frame.jpg
/fb/jtfdcr/shoebox/hall_guards.jpg
/fb/jtfdcr/shoebox/hall_window_watcher.jpg
/fb/jtfdcr/shoebox/hall_woman_park_knitting.jpg
/fb/jtfdcr/shoebox/heidleberg_tibet_painting.jpg
/fb/jtfdcr/shoebox/heidleberg_tibet_panel.jpg
/fb/jtfdcr/shoebox/history2.jpg
/fb/jtfdcr/shoebox/hrc2011a.jpg
/fb/jtfdcr/shoebox/hrc2011b.jpg
/fb/jtfdcr/shoebox/http___ko2.jpg
/fb/jtfdcr/shoebox/img001.jpg
/fb/jtfdcr/shoebox/img002.jpg
/fb/jtfdcr/shoebox/img375_rotkappechen_und_der_wolf.jpg
/fb/jtfdcr/shoebox/img376_dornroschen.jpg
/fb/jtfdcr/shoebox/img377_frau_holle.jpg
/fb/jtfdcr/shoebox/img378_madchen_mit_den_schwefelholzern.jpg
/fb/jtfdcr/shoebox/img381_otannenbaum.jpg
/fb/jtfdcr/shoebox/img_8262_2.jpg
/fb/jtfdcr/shoebox/img_8283_2.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg3.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg4.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg5.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg6.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg7.jpg
/fb/jtfdcr/shoebox/incrpt_1530736_citincident_150526_pg8.jpg
/fb/jtfdcr/shoebox/incrpt_1540352_martin_150716_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1540352_martin_150716_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_1540352_martin_150716_pg3.jpg
/fb/jtfdcr/shoebox/incrpt_1544594_gardner_150807_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1544594_gardner_150807_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_1552246_gardner_150919_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1552246_gardner_150919_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_1552246_supplement1_gardner_150919_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1552326_gardner_150919_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1552326_gardner_150919_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_1553710_martin_150928_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1553710_martin_150928_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_1558386_gardner_151023_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_1558386_gardner_151023_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_descriptions_pg1.jpg
/fb/jtfdcr/shoebox/incrpt_descriptions_pg2.jpg
/fb/jtfdcr/shoebox/incrpt_descriptions_pg3.jpg
/fb/jtfdcr/shoebox/incrpt_descriptions_pg4.jpg
/fb/jtfdcr/shoebox/index.jpg
/fb/jtfdcr/shoebox/jaam.jpg
/fb/jtfdcr/shoebox/jak2b.jpg
/fb/jtfdcr/shoebox/jak3.jpg
/fb/jtfdcr/shoebox/jam_200710_07.jpg
/fb/jtfdcr/shoebox/jam_200710_08.jpg
/fb/jtfdcr/shoebox/jam_200710_10.jpg
/fb/jtfdcr/shoebox/jam_200710_11.jpg
/fb/jtfdcr/shoebox/jam_200710_12.jpg
/fb/jtfdcr/shoebox/jam_200710_24.jpg
/fb/jtfdcr/shoebox/jam_200710_25.jpg
/fb/jtfdcr/shoebox/jam_200710_26.jpg
/fb/jtfdcr/shoebox/jam_200710_27.jpg
/fb/jtfdcr/shoebox/jam_200710_28.jpg
/fb/jtfdcr/shoebox/jam_200710_29.jpg
/fb/jtfdcr/shoebox/jam_200710_30.jpg
/fb/jtfdcr/shoebox/jam_200710_31.jpg
/fb/jtfdcr/shoebox/jam_200710_32.jpg
/fb/jtfdcr/shoebox/jam_200710_33.jpg
/fb/jtfdcr/shoebox/jam_200710_34.jpg
/fb/jtfdcr/shoebox/jam_200710_40.jpg
/fb/jtfdcr/shoebox/jenna_and_josh.jpg
/fb/jtfdcr/shoebox/jenna_and_mom.jpg
/fb/jtfdcr/shoebox/jessie.jpg
/fb/jtfdcr/shoebox/jing2.jpg
/fb/jtfdcr/shoebox/jk_goodhair2.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_001.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_002.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_003.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_004.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_005.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_006.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_007.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_008.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_009.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_010.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_011.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_012.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_013.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_014.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_015.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_016.jpg
/fb/jtfdcr/shoebox/jk_ts_20120411_017.jpg
/fb/jtfdcr/shoebox/jkresume_1990_01.jpg
/fb/jtfdcr/shoebox/jkresume_1990_02.jpg
/fb/jtfdcr/shoebox/jkresume_1990_skillset.jpg
/fb/jtfdcr/shoebox/jkresume_2000_01.jpg
/fb/jtfdcr/shoebox/jkresume_2000_02.jpg
/fb/jtfdcr/shoebox/jkresume_2000_03.jpg
/fb/jtfdcr/shoebox/jkresume_2000_04.jpg
/fb/jtfdcr/shoebox/jkresume_2000_05.jpg
/fb/jtfdcr/shoebox/jkresume_2000_06.jpg
/fb/jtfdcr/shoebox/jkresume_2000_07.jpg
/fb/jtfdcr/shoebox/jkresume_2000_08.jpg
/fb/jtfdcr/shoebox/jkresume_2000_detail_buie.jpg
/fb/jtfdcr/shoebox/jkresume_2000_detail_bw.jpg
/fb/jtfdcr/shoebox/jkresume_2000_detail_konet.jpg
/fb/jtfdcr/shoebox/jkresume_2000_detail_preview.jpg
/fb/jtfdcr/shoebox/jkresume_2000_detail_sasc.jpg
/fb/jtfdcr/shoebox/jkwii4trusstee_tyipty.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_byrdpucker_dog_n_pony_club.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_dispute.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_frontpage.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_gallery.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_greatmeet.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_hero.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_jkwii4trustee.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_jskwiis.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_meet.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_portrait.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_rightman_rightplace.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_sheet_001.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_sheet_002.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_tippicanoe.jpg
/fb/jtfdcr/shoebox/jkwii4trustee_tyler2.jpg
/fb/jtfdcr/shoebox/jsk_jak1_bivins_visit.jpg
/fb/jtfdcr/shoebox/jsk_winecellar_Image395.jpg
/fb/jtfdcr/shoebox/jsk_winecellar_Image402.jpg
/fb/jtfdcr/shoebox/jskfam_shimfam_priest.jpg
/fb/jtfdcr/shoebox/jt38f_seagrists.jpg
/fb/jtfdcr/shoebox/jtf.jpg
/fb/jtfdcr/shoebox/jtf07.jpg
/fb/jtfdcr/shoebox/jtf08.jpg
/fb/jtfdcr/shoebox/jtf09.jpg
/fb/jtfdcr/shoebox/jtf10.jpg
/fb/jtfdcr/shoebox/jtf11.jpg
/fb/jtfdcr/shoebox/jtf14.jpg
/fb/jtfdcr/shoebox/jtf16.jpg
/fb/jtfdcr/shoebox/jtf17510.jpg
/fb/jtfdcr/shoebox/jtf17570.jpg
/fb/jtfdcr/shoebox/jtf21.jpg
/fb/jtfdcr/shoebox/jtf22.jpg
/fb/jtfdcr/shoebox/jtf23.jpg
/fb/jtfdcr/shoebox/jtf28.jpg
/fb/jtfdcr/shoebox/jtf28_defford_francis_20020527_140901.jpg
/fb/jtfdcr/shoebox/jtf28_defford_john_20020527_140901.jpg
/fb/jtfdcr/shoebox/jtf28_deffords_20020527_1324015.jpg
/fb/jtfdcr/shoebox/jtf28_desc_zillow.jpg
/fb/jtfdcr/shoebox/jtf28_desc_zillow2.jpg
/fb/jtfdcr/shoebox/jtf28_tractor_ongrass_parking.jpg
/fb/jtfdcr/shoebox/jtf28_zillow.jpg
/fb/jtfdcr/shoebox/jtf29.jpg
/fb/jtfdcr/shoebox/jtf29_door.jpg
/fb/jtfdcr/shoebox/jtf29_eagle_north.jpg
/fb/jtfdcr/shoebox/jtf29_eagle_south.jpg
/fb/jtfdcr/shoebox/jtf29_fencelet1.jpg
/fb/jtfdcr/shoebox/jtf29_fencelet2.jpg
/fb/jtfdcr/shoebox/jtf29_fencelet3.jpg
/fb/jtfdcr/shoebox/jtf29_fencelet3r.jpg
/fb/jtfdcr/shoebox/jtf29_fencelets.jpg
/fb/jtfdcr/shoebox/jtf29_fenclet2.jpg
/fb/jtfdcr/shoebox/jtf29_fiona_inyard_damage.jpg
/fb/jtfdcr/shoebox/jtf29_fiona_inyard_damage2.jpg
/fb/jtfdcr/shoebox/jtf29_frisbee.jpg
/fb/jtfdcr/shoebox/jtf29_highschool_frisbee.jpg
/fb/jtfdcr/shoebox/jtf29_jak1_carter.jpg
/fb/jtfdcr/shoebox/jtf29_kali.jpg
/fb/jtfdcr/shoebox/jtf29_logging01.jpg
/fb/jtfdcr/shoebox/jtf29_logging02.jpg
/fb/jtfdcr/shoebox/jtf29_logging03.jpg
/fb/jtfdcr/shoebox/jtf29_logging05.jpg
/fb/jtfdcr/shoebox/jtf29_mailbox.jpg
/fb/jtfdcr/shoebox/jtf29_saic_check.jpg
/fb/jtfdcr/shoebox/jtf29_sawhorse_stop.jpg
/fb/jtfdcr/shoebox/jtf29_sawhorsea.jpg
/fb/jtfdcr/shoebox/jtf29_soccerball1.jpg
/fb/jtfdcr/shoebox/jtf29_soccerball3.jpg
/fb/jtfdcr/shoebox/jtf29_soccerball4.jpg
/fb/jtfdcr/shoebox/jtf29_soccerball5.jpg
/fb/jtfdcr/shoebox/jtf29_soccerball_big.jpg
/fb/jtfdcr/shoebox/jtf29_umbrella.jpg
/fb/jtfdcr/shoebox/jtf29_valintines_invoice_day_find.jpg
/fb/jtfdcr/shoebox/jtf29_van.jpg
/fb/jtfdcr/shoebox/jtf29_wagon.jpg
/fb/jtfdcr/shoebox/jtf29_wagon1.jpg
/fb/jtfdcr/shoebox/jtf29_wagon_jtf30_logging.jpg
/fb/jtfdcr/shoebox/jtf29_webcam1.jpg
/fb/jtfdcr/shoebox/jtf29_webcam1b.jpg
/fb/jtfdcr/shoebox/jtf29_webcam1c.jpg
/fb/jtfdcr/shoebox/jtf29_webcam2.jpg
/fb/jtfdcr/shoebox/jtf30..jpg
/fb/jtfdcr/shoebox/jtf30_cliffshed_sinkhole_drain.jpg
/fb/jtfdcr/shoebox/jtf30_jackie_martin.jpg
/fb/jtfdcr/shoebox/jtf30_jackie_martin2.jpg
/fb/jtfdcr/shoebox/jtf30_jackie_martin3.jpg
/fb/jtfdcr/shoebox/jtf30_jackie_martin4.jpg
/fb/jtfdcr/shoebox/jtf30_sinkhole_draine.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_bar.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_desc.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_desc1.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_desc2.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_desc4.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_desc_sunroom.jpg
/fb/jtfdcr/shoebox/jtf30_zillow_kitchen.jpg
/fb/jtfdcr/shoebox/jtf31-32.jpg
/fb/jtfdcr/shoebox/jtf31.jpg
/fb/jtfdcr/shoebox/jtf31_fiona_autonoumus_patrol.jpg
/fb/jtfdcr/shoebox/jtf31_fiona_lease_waiver.jpg
/fb/jtfdcr/shoebox/jtf31_fiona_runs_201506_001.jpg
/fb/jtfdcr/shoebox/jtf31_fiona_runs_201506_002.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187589_noparking_party_sign.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187593_party_whitevan_stalker.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187594+party_whitevan_stalker_9uv667_plates.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187594+party_whitevan_stalker_middlefingure.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187594+party_whitevan_stalker_profile2.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187600_clownporch_partygame_harrassment.jpg
/fb/jtfdcr/shoebox/jtf31_snap_20170123_187600_clownporch_partygame_harrassment2.jpg
/fb/jtfdcr/shoebox/jtf31_takings.jpg
/fb/jtfdcr/shoebox/jtf32.jpg
/fb/jtfdcr/shoebox/jtf32_doberwatchers_2of4.jpg
/fb/jtfdcr/shoebox/jtf32_donovan_doberhome.jpg
/fb/jtfdcr/shoebox/jtf32_pre_jtf3120021201_132901_1292986.jpg
/fb/jtfdcr/shoebox/jtf32_snap_20170123_187587.jpg
/fb/jtfdcr/shoebox/jtf32_snap_20170123_187588.jpg
/fb/jtfdcr/shoebox/jtf35.jpg
/fb/jtfdcr/shoebox/jtf36.jpg
/fb/jtfdcr/shoebox/jtf37.jpg
/fb/jtfdcr/shoebox/jtf38.jpg
/fb/jtfdcr/shoebox/jtf38_elvis2_autonomous_patrol.jpg
/fb/jtfdcr/shoebox/jtf39.jpg
/fb/jtfdcr/shoebox/jtf39_baily_autonomous_patrol.jpg
/fb/jtfdcr/shoebox/jtf44.jpg
/fb/jtfdcr/shoebox/jtf44_front.jpg
/fb/jtfdcr/shoebox/jtf_29-30.jpg
/fb/jtfdcr/shoebox/jtf_34509.jpg
/fb/jtfdcr/shoebox/jtf_35155.jpg
/fb/jtfdcr/shoebox/jtf_601jtfdc_courtcircle.jpg
/fb/jtfdcr/shoebox/jtf_byrd.jpg
/fb/jtfdcr/shoebox/jtf_byrd_coral.jpg
/fb/jtfdcr/shoebox/jtf_byrd_north.jpg
/fb/jtfdcr/shoebox/jtf_corner_ne.jpg
/fb/jtfdcr/shoebox/jtf_mental_1_001.jpg
/fb/jtfdcr/shoebox/jtf_mental_1_002.jpg
/fb/jtfdcr/shoebox/jtf_mental_1_003.jpg
/fb/jtfdcr/shoebox/jtf_n.jpg
/fb/jtfdcr/shoebox/jtf_ne.jpg
/fb/jtfdcr/shoebox/jtf_ne_zillow.jpg
/fb/jtfdcr/shoebox/jtf_north_zillow.jpg
/fb/jtfdcr/shoebox/jtf_nw_31-34.jpg
/fb/jtfdcr/shoebox/jtf_right.jpg
/fb/jtfdcr/shoebox/jtf_topus_001.jpg
/fb/jtfdcr/shoebox/jtf_topus_002.jpg
/fb/jtfdcr/shoebox/jtfarms_contacts_01.jpg
/fb/jtfdcr/shoebox/jtfarms_contacts_02.jpg
/fb/jtfdcr/shoebox/jtfarms_contacts_03.jpg
/fb/jtfdcr/shoebox/jtfd_north.jpg
/fb/jtfdcr/shoebox/jtfdc-north.jpg
/fb/jtfdcr/shoebox/jtfdc-north_medow.jpg
/fb/jtfdcr/shoebox/jtfdc.jpg
/fb/jtfdcr/shoebox/jtfdc28_gazebo_lights_nocam.jpg
/fb/jtfdcr/shoebox/jtfdc29_backyard_logging.jpg
/fb/jtfdcr/shoebox/jtfdc29_eagle_north.jpg
/fb/jtfdcr/shoebox/jtfdc29_fenclet1_auctiontape.jpg
/fb/jtfdcr/shoebox/jtfdc29_fenclet2_auctiontape.jpg
/fb/jtfdcr/shoebox/jtfdc29_fenclets12_seazed.jpg
/fb/jtfdcr/shoebox/jtfdc29_log5463.jpg
/fb/jtfdcr/shoebox/jtfdc29_log5474.jpg
/fb/jtfdcr/shoebox/jtfdc_1of100_manufactured_police_calls.jpg
/fb/jtfdcr/shoebox/jtfdc_2001.jpg
/fb/jtfdcr/shoebox/jtfdc_29-30.jpg
/fb/jtfdcr/shoebox/jtfdc_29-30_topos.jpg
/fb/jtfdcr/shoebox/jtfdc_300.jpg
/fb/jtfdcr/shoebox/jtfdc_barn.jpg
/fb/jtfdcr/shoebox/jtfdc_barn_jtfdc29.jpg
/fb/jtfdcr/shoebox/jtfdc_before_jtf31.jpg
/fb/jtfdcr/shoebox/jtfdc_corner.jpg
/fb/jtfdcr/shoebox/jtfdc_corner_wide.jpg
/fb/jtfdcr/shoebox/jtfdc_courtcircle.jpg
/fb/jtfdcr/shoebox/jtfdc_eagles_sawhorse_fencelets.jpg
/fb/jtfdcr/shoebox/jtfdc_easment.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_e.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_n_jtf30.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_ne.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_ne_jtf31.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_nw_jtf30.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_se_jtf28.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_sse_jtf28.jpg
/fb/jtfdcr/shoebox/jtfdc_gazebo_sw.jpg
/fb/jtfdcr/shoebox/jtfdc_greater.jpg
/fb/jtfdcr/shoebox/jtfdc_imgmap.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf28_property_stake.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf30-28_scheming.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf30_heirloom_mowerer_midnight_stalkaroundIMG_9408.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf30_shed_sinkhole_drain.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf31_easment_blockade.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf31_fiona_fleefall.jpg
/fb/jtfdcr/shoebox/jtfdc_jtf31_party_entertainment_jkwii_ngcupIMG_9409.jpg
/fb/jtfdcr/shoebox/jtfdc_kidb_back.jpg
/fb/jtfdcr/shoebox/jtfdc_kidb_front.jpg
/fb/jtfdcr/shoebox/jtfdc_kidc_back.jpg
/fb/jtfdcr/shoebox/jtfdc_kidc_front.jpg
/fb/jtfdcr/shoebox/jtfdc_kidp_back.jpg
/fb/jtfdcr/shoebox/jtfdc_kidp_front.jpg
/fb/jtfdcr/shoebox/jtfdc_kids3_back.jpg
/fb/jtfdcr/shoebox/jtfdc_kids3_front.jpg
/fb/jtfdcr/shoebox/jtfdc_kids_IMG_8424.jpg
/fb/jtfdcr/shoebox/jtfdc_kouIMG_8561.jpg
/fb/jtfdcr/shoebox/jtfdc_mailman_refused_deliver.jpg
/fb/jtfdcr/shoebox/jtfdc_meados_souixpassage.jpg
/fb/jtfdcr/shoebox/jtfdc_meadow.jpg
/fb/jtfdcr/shoebox/jtfdc_parcels copy.jpg
/fb/jtfdcr/shoebox/jtfdc_parcels.jpg
/fb/jtfdcr/shoebox/jtfdc_police.jpg
/fb/jtfdcr/shoebox/jtfdc_police_straf_20170123_16224.jpg
/fb/jtfdcr/shoebox/jtfdc_pre_jtf31.jpg
/fb/jtfdcr/shoebox/jtfdc_private_court_since_1979_viewin.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse2.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse_a.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse_exit.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse_jak3.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse_stop_out.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse_stopsign.jpg
/fb/jtfdcr/shoebox/jtfdc_sawhorse_winter.jpg
/fb/jtfdcr/shoebox/jtfdc_shared_barn.jpg
/fb/jtfdcr/shoebox/jtfdc_souixpassage.jpg
/fb/jtfdcr/shoebox/jtfdc_south.jpg
/fb/jtfdcr/shoebox/jtfdc_sw_jtf21.jpg
/fb/jtfdcr/shoebox/jtfdc_theater.jpg
/fb/jtfdcr/shoebox/jtfdc_townhall_noticeIMG_8560.jpg
/fb/jtfdcr/shoebox/jtfdc_updown_passage.jpg
/fb/jtfdcr/shoebox/jtfdc_updown_passage_jtf31.jpg
/fb/jtfdcr/shoebox/jtfdcr2.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_001.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_002.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_003.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_003b.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_004.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_005.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_006.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_007.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_008.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_008b.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_009.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_010.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_011.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_011b.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_012.jpg
/fb/jtfdcr/shoebox/jtfdcr_page_013.jpg
/fb/jtfdcr/shoebox/jtfdcsouth.jpg
/fb/jtfdcr/shoebox/jtfinc.jpg
/fb/jtfdcr/shoebox/jtfinc_potholes.jpg
/fb/jtfdcr/shoebox/jtfinc_vs_jtf29jk_ 2.jpg
/fb/jtfdcr/shoebox/jtfinc_vs_jtf29jk_ 3.jpg
/fb/jtfdcr/shoebox/jtfinc_vs_jtf29jk_ 4.jpg
/fb/jtfdcr/shoebox/jtfinc_vs_jtf29jk_ 5.jpg
/fb/jtfdcr/shoebox/jtfinc_vs_jtf29jk_ 6.jpg
/fb/jtfdcr/shoebox/jtfinc_vs_jtf29jk_.jpg
/fb/jtfdcr/shoebox/julius_mocsari_001.jpg
/fb/jtfdcr/shoebox/ka_cornelia_harry_63.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_01.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_02.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_03.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_04.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_05.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_06.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_07.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_08.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_09.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_10.jpg
/fb/jtfdcr/shoebox/ka_jtfd29_title_11.jpg
/fb/jtfdcr/shoebox/karl_smekal_.jpg
/fb/jtfdcr/shoebox/karl_smekal_001.jpg
/fb/jtfdcr/shoebox/karl_smekal_002.jpg
/fb/jtfdcr/shoebox/karl_smekal_003.jpg
/fb/jtfdcr/shoebox/karl_smekal_004.jpg
/fb/jtfdcr/shoebox/karl_smekal_005.jpg
/fb/jtfdcr/shoebox/karl_smekal_006.jpg
/fb/jtfdcr/shoebox/karl_smekal_007.jpg
/fb/jtfdcr/shoebox/karl_smekal_008.jpg
/fb/jtfdcr/shoebox/karl_smekal_009.jpg
/fb/jtfdcr/shoebox/karl_smekal_010.jpg
/fb/jtfdcr/shoebox/karl_smekal_011.jpg
/fb/jtfdcr/shoebox/karl_smekal_012.jpg
/fb/jtfdcr/shoebox/karl_smekal_013.jpg
/fb/jtfdcr/shoebox/karl_smekal_014.jpg
/fb/jtfdcr/shoebox/karl_smekal_015.jpg
/fb/jtfdcr/shoebox/karl_smekal_016.jpg
/fb/jtfdcr/shoebox/karl_smekal_017.jpg
/fb/jtfdcr/shoebox/karl_smekal_018.jpg
/fb/jtfdcr/shoebox/karl_smekal_019.jpg
/fb/jtfdcr/shoebox/karl_smekal_020.jpg
/fb/jtfdcr/shoebox/karl_smekal_021.jpg
/fb/jtfdcr/shoebox/karl_smekal_022.jpg
/fb/jtfdcr/shoebox/karl_smekal_023.jpg
/fb/jtfdcr/shoebox/karl_smekal_024.jpg
/fb/jtfdcr/shoebox/karl_smekal_025.jpg
/fb/jtfdcr/shoebox/karl_smekal_026.jpg
/fb/jtfdcr/shoebox/karl_smekal_027.jpg
/fb/jtfdcr/shoebox/karl_smekal_028.jpg
/fb/jtfdcr/shoebox/karl_smekal_029.jpg
/fb/jtfdcr/shoebox/karl_smekal_030.jpg
/fb/jtfdcr/shoebox/karl_smekal_031.jpg
/fb/jtfdcr/shoebox/karl_smekal_032.jpg
/fb/jtfdcr/shoebox/karl_smekal_033.jpg
/fb/jtfdcr/shoebox/karl_smekal_034.jpg
/fb/jtfdcr/shoebox/karl_smekal_035.jpg
/fb/jtfdcr/shoebox/karl_smekal_036.jpg
/fb/jtfdcr/shoebox/karl_smekal_037.jpg
/fb/jtfdcr/shoebox/karl_smekal_038.jpg
/fb/jtfdcr/shoebox/karl_smekal_039.jpg
/fb/jtfdcr/shoebox/karl_smekal_040.jpg
/fb/jtfdcr/shoebox/karl_smekal_041.jpg
/fb/jtfdcr/shoebox/karl_smekal_042.jpg
/fb/jtfdcr/shoebox/karl_smekal_043.jpg
/fb/jtfdcr/shoebox/karl_smekal_044.jpg
/fb/jtfdcr/shoebox/karl_smekal_045.jpg
/fb/jtfdcr/shoebox/karl_smekal_046.jpg
/fb/jtfdcr/shoebox/karl_smekal_047.jpg
/fb/jtfdcr/shoebox/karl_smekal_048.jpg
/fb/jtfdcr/shoebox/karl_smekal_049.jpg
/fb/jtfdcr/shoebox/karl_smekal_050.jpg
/fb/jtfdcr/shoebox/karl_smekal_051.jpg
/fb/jtfdcr/shoebox/karl_smekal_052.jpg
/fb/jtfdcr/shoebox/karl_smekal_053.jpg
/fb/jtfdcr/shoebox/karl_smekal_054.jpg
/fb/jtfdcr/shoebox/karl_smekal_055.jpg
/fb/jtfdcr/shoebox/karl_smekal_056.jpg
/fb/jtfdcr/shoebox/karl_smekal_057.jpg
/fb/jtfdcr/shoebox/karl_smekal_058.jpg
/fb/jtfdcr/shoebox/karl_smekal_059.jpg
/fb/jtfdcr/shoebox/karl_smekal_060.jpg
/fb/jtfdcr/shoebox/karl_smekal_061.jpg
/fb/jtfdcr/shoebox/karl_smekal_062.jpg
/fb/jtfdcr/shoebox/karl_smekal_063.jpg
/fb/jtfdcr/shoebox/karl_smekal_064.jpg
/fb/jtfdcr/shoebox/karl_smekal_065.jpg
/fb/jtfdcr/shoebox/karl_smekal_066.jpg
/fb/jtfdcr/shoebox/karl_smekal_067.jpg
/fb/jtfdcr/shoebox/karl_smekal_068.jpg
/fb/jtfdcr/shoebox/karl_smekal_069.jpg
/fb/jtfdcr/shoebox/karl_smekal_070.jpg
/fb/jtfdcr/shoebox/karl_smekal_071.jpg
/fb/jtfdcr/shoebox/karl_smekal_072.jpg
/fb/jtfdcr/shoebox/karl_smekal_073.jpg
/fb/jtfdcr/shoebox/karl_smekal_074.jpg
/fb/jtfdcr/shoebox/karl_smekal_075.jpg
/fb/jtfdcr/shoebox/karl_smekal_076.jpg
/fb/jtfdcr/shoebox/karl_smekal_077.jpg
/fb/jtfdcr/shoebox/karl_smekal_078.jpg
/fb/jtfdcr/shoebox/karl_smekal_079.jpg
/fb/jtfdcr/shoebox/karl_smekal_080.jpg
/fb/jtfdcr/shoebox/karl_smekal_081.jpg
/fb/jtfdcr/shoebox/karl_smekal_082.jpg
/fb/jtfdcr/shoebox/karl_smekal_083.jpg
/fb/jtfdcr/shoebox/karl_smekal_084.jpg
/fb/jtfdcr/shoebox/karl_smekal_085.jpg
/fb/jtfdcr/shoebox/karl_smekal_086.jpg
/fb/jtfdcr/shoebox/karl_smekal_087.jpg
/fb/jtfdcr/shoebox/karl_smekal_088.jpg
/fb/jtfdcr/shoebox/karl_smekal_089.jpg
/fb/jtfdcr/shoebox/karl_smekal_090.jpg
/fb/jtfdcr/shoebox/karl_smekal_091.jpg
/fb/jtfdcr/shoebox/karl_smekal_092.jpg
/fb/jtfdcr/shoebox/karl_smekal_093.jpg
/fb/jtfdcr/shoebox/karl_smekal_094.jpg
/fb/jtfdcr/shoebox/karl_smekal_095.jpg
/fb/jtfdcr/shoebox/karl_smekal_096.jpg
/fb/jtfdcr/shoebox/karl_smekal_097.jpg
/fb/jtfdcr/shoebox/karl_smekal_098.jpg
/fb/jtfdcr/shoebox/karl_smekal_099.jpg
/fb/jtfdcr/shoebox/karl_smekal_100.jpg
/fb/jtfdcr/shoebox/karl_smekal_101.jpg
/fb/jtfdcr/shoebox/karl_smekal_102.jpg
/fb/jtfdcr/shoebox/karl_smekal_103.jpg
/fb/jtfdcr/shoebox/karl_smekal_104.jpg
/fb/jtfdcr/shoebox/karl_smekal_105.jpg
/fb/jtfdcr/shoebox/karl_smekal_106.jpg
/fb/jtfdcr/shoebox/karl_smekal_107.jpg
/fb/jtfdcr/shoebox/karl_smekal_108.jpg
/fb/jtfdcr/shoebox/karl_smekal_109.jpg
/fb/jtfdcr/shoebox/karl_smekal_110.jpg
/fb/jtfdcr/shoebox/karl_smekal_111.jpg
/fb/jtfdcr/shoebox/karl_smekal_112.jpg
/fb/jtfdcr/shoebox/karl_smekal_113.jpg
/fb/jtfdcr/shoebox/karl_smekal_114.jpg
/fb/jtfdcr/shoebox/karl_smekal_115.jpg
/fb/jtfdcr/shoebox/karl_smekal_116.jpg
/fb/jtfdcr/shoebox/karl_smekal_117.jpg
/fb/jtfdcr/shoebox/karl_smekal_118.jpg
/fb/jtfdcr/shoebox/karl_smekal_119.jpg
/fb/jtfdcr/shoebox/karl_smekal_120.jpg
/fb/jtfdcr/shoebox/karl_smekal_121.jpg
/fb/jtfdcr/shoebox/karl_smekal_122.jpg
/fb/jtfdcr/shoebox/karl_smekal_123.jpg
/fb/jtfdcr/shoebox/karl_smekal_124.jpg
/fb/jtfdcr/shoebox/karl_smekal_125.jpg
/fb/jtfdcr/shoebox/karl_smekal_126.jpg
/fb/jtfdcr/shoebox/karl_smekal_127.jpg
/fb/jtfdcr/shoebox/karl_smekal_128.jpg
/fb/jtfdcr/shoebox/karl_smekal_129.jpg
/fb/jtfdcr/shoebox/karl_smekal_130.jpg
/fb/jtfdcr/shoebox/karl_smekal_131.jpg
/fb/jtfdcr/shoebox/karl_smekal_132.jpg
/fb/jtfdcr/shoebox/karl_smekal_133.jpg
/fb/jtfdcr/shoebox/karl_smekal_134.jpg
/fb/jtfdcr/shoebox/karl_smekal_135.jpg
/fb/jtfdcr/shoebox/karl_smekal_136.jpg
/fb/jtfdcr/shoebox/karl_smekal_137.jpg
/fb/jtfdcr/shoebox/karl_smekal_138.jpg
/fb/jtfdcr/shoebox/karl_smekal_139.jpg
/fb/jtfdcr/shoebox/karl_smekal_140.jpg
/fb/jtfdcr/shoebox/karl_smekal_141.jpg
/fb/jtfdcr/shoebox/karl_smekal_142.jpg
/fb/jtfdcr/shoebox/karl_smekal_143.jpg
/fb/jtfdcr/shoebox/karl_smekal_144.jpg
/fb/jtfdcr/shoebox/karl_smekal_145.jpg
/fb/jtfdcr/shoebox/karl_smekal_146.jpg
/fb/jtfdcr/shoebox/karl_smekal_147.jpg
/fb/jtfdcr/shoebox/karl_smekal_148.jpg
/fb/jtfdcr/shoebox/karl_smekal_149.jpg
/fb/jtfdcr/shoebox/karl_smekal_150.jpg
/fb/jtfdcr/shoebox/ko.jpg
/fb/jtfdcr/shoebox/ko0_us_down.jpg
/fb/jtfdcr/shoebox/ko_mo_labor_201302a.jpg
/fb/jtfdcr/shoebox/ko_mo_labor_201302b.jpg
/fb/jtfdcr/shoebox/ko_saic_check_20130215.jpg
/fb/jtfdcr/shoebox/konet_hack_screen.jpg
/fb/jtfdcr/shoebox/konet_inv_saic2.jpg
/fb/jtfdcr/shoebox/konet_invoice_fy-pp_yyyymmdd-yyyymmdd-1.jpg
/fb/jtfdcr/shoebox/konet_invoice_fy-pp_yyyymmdd-yyyymmdd.jpg
/fb/jtfdcr/shoebox/konet_invoice_saic.jpg
/fb/jtfdcr/shoebox/ky_pineville_forestry_camp.jpg
/fb/jtfdcr/shoebox/ky_pineville_forestry_camp_desc.jpg
/fb/jtfdcr/shoebox/ladyj_alabaster.jpg
/fb/jtfdcr/shoebox/ladyj_amazon.jpg
/fb/jtfdcr/shoebox/ladyj_brass.jpg
/fb/jtfdcr/shoebox/ladyj_bronze.jpg
/fb/jtfdcr/shoebox/ladyj_clingyclothes.jpg
/fb/jtfdcr/shoebox/ladyj_glide.jpg
/fb/jtfdcr/shoebox/ladyj_horns.jpg
/fb/jtfdcr/shoebox/ladyj_onhi.jpg
/fb/jtfdcr/shoebox/ladyj_silouette.jpg
/fb/jtfdcr/shoebox/ladyj_statue.jpg
/fb/jtfdcr/shoebox/ladyj_sword.jpg
/fb/jtfdcr/shoebox/ladyj_zen.jpg
/fb/jtfdcr/shoebox/loader.jpg
/fb/jtfdcr/shoebox/logo_jtf.jpg
/fb/jtfdcr/shoebox/marlins_jacket.jpg
/fb/jtfdcr/shoebox/mocsari_julius_memorial.jpg
/fb/jtfdcr/shoebox/mozart_aviary.jpg
/fb/jtfdcr/shoebox/mrs_ford_psychicreader.jpg
/fb/jtfdcr/shoebox/mrs_ford_psychicreader2.jpg
/fb/jtfdcr/shoebox/oldpeople1.jpg
/fb/jtfdcr/shoebox/unclesam.jpg
/fb/jtfdcr/shoebox/unclesam_templet.jpg
/fb/jtfdcr/shoebox/waxpaper.jpg
/fb/jtfdcr/shoebox/wood_posters.jpg
/fb/jtfdcr/shoebox/woodcarver_blackforest.jpg
/fb/jtfdcr/shoebox/woodcarvershop_blackforest.jpg `;
			return(pagelist_shoebox.split("\n"));
			}


		function load_pagelist_imgs() {
//			alert( "BUGS_1000 load_page_list_jtfdcr_imgs" );
var pagelist_imgs=
`imgs/1.jpg
imgs/2.jpg
imgs/3.jpg
imgs/4.jpg
imgs/5.jpg
imgs/6.jpg
imgs/7.jpg
imgs/8.jpg
imgs/9.jpg
imgs/10.jpg
imgs/11.jpg
imgs/12.jpg
imgs/13.jpg
imgs/14.jpg
imgs/15.jpg
imgs/16.jpg
imgs/17.jpg
imgs/18.jpg
imgs/19.jpg
imgs/20.jpg
`;
			return(pagelist_imgs.split("\n"));
			}
		</script>

	<script id="script load_pagelist_i" >
		function load_pagelist_i() {
var pagelist_i = `
i/1.jpg
i/2.jpg
i/3.jpg
i/4.jpg
i/5.jpg
i/6.jpg
i/7.jpg
i/8.jpg
i/9.jpg
i/10.jpg
i/11.jpg
i/12.jpg
i/13.jpg
i/14.jpg
i/15.jpg
i/16.jpg`;
			return(pagelist_i.split("\n"));
			}
		</script>



	<script id="script_load_pagelist_ajaks" >
		function load_pagelist_ajaks(ajaks) {
			alert( "BUGS_1212 load_pagelist_ajaks ajaks="+ajaks );
			ajaks="fb.txt";
			if(! linkcheck(ajaks)) { return(""); }
			alert( "BUGS_1213 load_pagelist_ajaks ajaks="+ajaks );

			var pages = new Array();
			var pages_len=0;
			var j=0;
			var xhttp = new XMLHttpRequest();
			xhttp.onreadystatechange = function() {
				if (this.readyState == 4 && this.status == 200) {
					var ajaxtext=this.responseText;
					var j=0;
					var htmout = "";
					var pagelist = new Array();
					pagelist = ajaxtext.split("\n");
					alert( "BUGS_1710 load_ajaks() ajaks="+ajaks+" pagelist="+pagelist);
					
					var pagelist_len = pagelist.length;
//					document.getElementById("div_load_ajaks").innerHTML = this.responseText; 
					document.getElementById("div_load_ajaks").innerHTML = ajaxtext; 
//					document.getElementById("div_load_ajaks").innerHTML = pagelist; 
//					document.getElementById("div_load_ajaks").innerHTML = htmout+ajaxtext; 
//					loadApp();
//					fbload();
					alert( "BUGS_1580 ajaxlines="+ajaxlines pagelist_len="+pagelist_len );
					return( ajaxlines );
					}
				};
			xhttp.open("GET", ajaks, true);
			xhttp.send();
			}
		</script>

	<script id="script_load_pagelist_default">
		function load_pagelist_default() {
			var pages = new Array();
			var pages_len=0;
			var j=0;

//			alert( "BUGS_1250 load_pages_default pages_len="+pages_len+" href="+href );
var pagelist_default =`-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/0.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/1.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/2.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/3.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/4.jpg
pages_default/5.jpg
pages_default/6.jpg
pages_default/7.jpg
pages_default/8.jpg
pages_default/9.jpg
pages_default/10.jpg
pages_default/11.jpg
pages_default/12.jpg
pages_default/13.jpg
pages_default/14.jpg
pages_default/15.jpg
pages_default/16.jpg
pages_default/17.jpg
pages_default/18.jpg
pages_default/19.jpg
pages_default/20.jpg
pages_default/21.jpg
pages_default/22.jpg
pages_default/23.jpg
pages_default/24.jpg
pages_default/25.jpg
pages_default/26.jpg
pages_default/27.jpg
pages_default/28.jpg
pages_default/29.jpg
pages_default/30.jpg
pages_default/31.jpg
pages_default/32.jpg
pages_default/33.jpg
pages_default/34.jpg
pages_default/35.jpg
pages_default/36.jpg
`;
			return( pagelist_default.split("\n"));
			}
			</script>



	<script id="script_load_pagelist" >
		function load_pagelist() {

			var pages = new Array();
			var pages_len=0;
			var j=0; var k=0;

			var pages_default = new Array();
			var pages_go = new Array();
			var pages_jtfdcr_pages = new Array();
			var pages_jtfdcr_imgs = new Array();

//			var ajaks = "fb_imgs.txt";	
//			pages = load_pagelist_ajaks(ajaks);
//			pages = load_pagelist_default();

//			pages= load_pagelist_head();
//			pages= load_pagelist_pages();
//			pages= load_pagelist_imgs();
//			pages= load_pagelist_i();
//			pages= load_pagelist_go();
//			pages= load_pagelist_tail();


//			pagelist_head = load_pagelist_head();
			pagelist_pages = load_pagelist_pages();
//			pagelist_chap01 = load_pagelist_chap01();
//			pagelist_chap02 = load_pagelist_chap02();
//			pagelist_chap03 = load_pagelist_chap03();
//			pagelist_shoebox = load_pagelist_shoebox();
//			pagelist_imgs = load_pagelist_imgs();
//			pagelist_i = load_pagelist_i();
//			pagelist_go = load_pagelist_go();
//			pagelist_tail = load_pagelist_tail();
//			var ajaks="fb.txt";
//			var pagelist_ajaks = load_pagelist_ajaks(ajaks);

//			pages = pagelist_head.concat(pagelist_pages, pagelist_chap01, pagelist_chap02, pagelist_chap03, pagelist_imgs, pagelist_i, pagelist_go,pagelist_tail );
//			pages = pagelist_head.concat(pagelist_pages, pagelist_chap01, pagelist_chap02, pagelist_chap03, pagelist_go,pagelist_tail );
//			pages = pagelist_head.concat(pagelist_pages );
			pages = pagelist_pages;
			pages_len=pages.length;

//			alert( "BUGS_2161 pages_len="+pages_len+" pages="+pages );


//			alert( "BUGS_1180 load_pagelist_default len="+pages_len+" pages="+pages )
//			alert( "BUGS_1180 load_pagelist_go len="+pages_len+" pages="+pages )
//			alert( "BUGS_1180 load_pagelist_pages len="+pages_len+" pages="+pages )
//			alert( "BUGS_1180 load_pagelist_default len="+pages_len+" pages="+pages )


//			var htmout="";
//			for( j=0;j<pages_len;j++) {
//				htmout += "bugs_1100 j="+j+" len="+pages_len+" page="+pages[j]+"<br>\n";
//				}
//			document.write(htmout);
//			alert( "BUGS_1200 ="+htmout );

//			alert( "BUGS_1200 load_pagelist pages_len="+pages_len+" pages="+pages );
			return( pages );
			}
		</script>



	<script id="script_load_pagelist_go" >
		function load_pagelist_go(args) {
			var j=0;
//			var href = window.location.href;
//			alert( "BUGS_825 load_pages pages_len="+pages_len+" href="+href );
var pagelist_go = `
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/0.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/1.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/2.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/3.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/4.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/5.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/6.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/7.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/8.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/9.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/10.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/11.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/12.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/13.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/14.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/15.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/16.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/18.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/19.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/20.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/21.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/22.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/23.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/24.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/25.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/26.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img357.jpg
-rw-r--r--||1|konet||staff||306856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img358.jpg
-rw-r--r--||1|konet||staff||199193|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img359.jpg
-rw-r--r--||1|konet||staff||443996|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img360.jpg
-rw-r--r--||1|konet||staff||629176|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img361.jpg
-rw-r--r--||1|konet||staff||544038|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img362.jpg
-rw-r--r--||1|konet||staff||941797|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img363.jpg
-rw-r--r--||1|konet||staff||850031|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img364.jpg
-rw-r--r--||1|konet||staff||876319|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img365.jpg
-rw-r--r--||1|konet||staff||880519|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img366.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img357.jpg
-rw-r--r--||1|konet||staff||306856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img358.jpg
-rw-r--r--||1|konet||staff||199193|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img359.jpg
-rw-r--r--||1|konet||staff||443996|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img360.jpg
-rw-r--r--||1|konet||staff||629176|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img361.jpg
-rw-r--r--||1|konet||staff||544038|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img362.jpg
-rw-r--r--||1|konet||staff||941797|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img363.jpg
-rw-r--r--||1|konet||staff||850031|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img364.jpg
-rw-r--r--||1|konet||staff||876319|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img365.jpg
-rw-r--r--||1|konet||staff||880519|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img366.jpg
-rw-r--r--||1|konet||staff||896620|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img367.jpg
-rw-r--r--||1|konet||staff||730786|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img368.jpg
-rw-r--r--||1|konet||staff||801242|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img369.jpg
-rw-r--r--||1|konet||staff||883588|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img370.jpg
-rw-r--r--||1|konet||staff||845856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img371.jpg
-rw-r--r--||1|konet||staff||784457|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img372.jpg
-rw-r--r--||1|konet||staff||843127|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img373.jpg
-rw-r--r--||1|konet||staff||906461|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img374.jpg
-rw-r--r--||1|konet||staff||752928|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img375.jpg
-rw-r--r--||1|konet||staff||791260|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img376.jpg
-rw-r--r--||1|konet||staff||964508|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img377.jpg
-rw-r--r--||1|konet||staff||828964|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img378.jpg
-rw-r--r--||1|konet||staff||873941|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img379.jpg
-rw-r--r--||1|konet||staff||915688|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img380.jpg
-rw-r--r--||1|konet||staff||761790|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img381.jpg
-rw-r--r--||1|konet||staff||845370|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img382.jpg
-rw-r--r--||1|konet||staff||856490|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img383.jpg
-rw-r--r--||1|konet||staff||671068|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img384.jpg
-rw-r--r--||1|konet||staff||743307|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img385.jpg
-rw-r--r--||1|konet||staff||792125|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img386.jpg
-rw-r--r--||1|konet||staff||851995|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img387.jpg
-rw-r--r--||1|konet||staff||817621|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img388.jpg
-rw-r--r--||1|konet||staff||899107|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img389.jpg
-rw-r--r--||1|konet||staff||945623|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img390.jpg
-rw-r--r--||1|konet||staff||956754|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img391.jpg
-rw-r--r--||1|konet||staff||995889|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img392.jpg
-rw-r--r--||1|konet||staff||924368|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img393.jpg
-rw-r--r--||1|konet||staff||824827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img394.jpg
-rw-r--r--||1|konet||staff||862378|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img395.jpg
-rw-r--r--||1|konet||staff||883043|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img396.jpg
-rw-r--r--||1|konet||staff||834414|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img397.jpg
-rw-r--r--||1|konet||staff||772918|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img398.jpg
-rw-r--r--||1|konet||staff||699001|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img399.jpg
-rw-r--r--||1|konet||staff||862577|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img400.jpg
-rw-r--r--||1|konet||staff||859470|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img401.jpg
-rw-r--r--||1|konet||staff||898820|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img402.jpg
-rw-r--r--||1|konet||staff||911795|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img403.jpg
-rw-r--r--||1|konet||staff||682827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img404.jpg
-rw-r--r--||1|konet||staff||748989|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img405.jpg
-rw-r--r--||1|konet||staff||756089|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img406.jpg
-rw-r--r--||1|konet||staff||947742|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img407.jpg
-rw-r--r--||1|konet||staff||876865|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img408.jpg
-rw-r--r--||1|konet||staff||939929|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img409.jpg
-rw-r--r--||1|konet||staff||857484|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img410.jpg
-rw-r--r--||1|konet||staff||856924|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img411.jpg
-rw-r--r--||1|konet||staff||869657|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img412.jpg
-rw-r--r--||1|konet||staff||890809|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img413.jpg
-rw-r--r--||1|konet||staff||881101|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img414.jpg
-rw-r--r--||1|konet||staff||860242|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img415.jpg
-rw-r--r--||1|konet||staff||867133|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img416.jpg
-rw-r--r--||1|konet||staff||831861|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img417.jpg
-rw-r--r--||1|konet||staff||825595|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img418.jpg
-rw-r--r--||1|konet||staff||679496|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img419.jpg
-rw-r--r--||1|konet||staff||810751|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img420.jpg
-rw-r--r--||1|konet||staff||790732|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img421.jpg
-rw-r--r--||1|konet||staff||845998|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img422.jpg
-rw-r--r--||1|konet||staff||745726|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img423.jpg
-rw-r--r--||1|konet||staff||794258|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img424.jpg
-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_attack_defense/pages/index.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img357.jpg
-rw-r--r--||1|konet||staff||306856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img358.jpg
-rw-r--r--||1|konet||staff||199193|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img359.jpg
-rw-r--r--||1|konet||staff||443996|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img360.jpg
-rw-r--r--||1|konet||staff||629176|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img361.jpg
-rw-r--r--||1|konet||staff||544038|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img362.jpg
-rw-r--r--||1|konet||staff||941797|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img363.jpg
-rw-r--r--||1|konet||staff||850031|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img364.jpg
-rw-r--r--||1|konet||staff||876319|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img365.jpg
-rw-r--r--||1|konet||staff||880519|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img366.jpg
-rw-r--r--||1|konet||staff||896620|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img367.jpg
-rw-r--r--||1|konet||staff||730786|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img368.jpg
-rw-r--r--||1|konet||staff||801242|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img369.jpg
-rw-r--r--||1|konet||staff||883588|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img370.jpg
-rw-r--r--||1|konet||staff||845856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img371.jpg
-rw-r--r--||1|konet||staff||784457|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img372.jpg
-rw-r--r--||1|konet||staff||843127|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img373.jpg
-rw-r--r--||1|konet||staff||906461|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img374.jpg
-rw-r--r--||1|konet||staff||752928|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img375.jpg
-rw-r--r--||1|konet||staff||791260|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img376.jpg
-rw-r--r--||1|konet||staff||964508|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img377.jpg
-rw-r--r--||1|konet||staff||828964|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img378.jpg
-rw-r--r--||1|konet||staff||873941|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img379.jpg
-rw-r--r--||1|konet||staff||915688|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img380.jpg
-rw-r--r--||1|konet||staff||761790|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img381.jpg
-rw-r--r--||1|konet||staff||845370|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img382.jpg
-rw-r--r--||1|konet||staff||856490|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img383.jpg
-rw-r--r--||1|konet||staff||671068|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img384.jpg
-rw-r--r--||1|konet||staff||743307|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img385.jpg
-rw-r--r--||1|konet||staff||792125|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img386.jpg
-rw-r--r--||1|konet||staff||851995|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img387.jpg
-rw-r--r--||1|konet||staff||817621|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img388.jpg
-rw-r--r--||1|konet||staff||899107|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img389.jpg
-rw-r--r--||1|konet||staff||945623|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img390.jpg
-rw-r--r--||1|konet||staff||956754|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img391.jpg
-rw-r--r--||1|konet||staff||995889|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img392.jpg
-rw-r--r--||1|konet||staff||924368|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img393.jpg
-rw-r--r--||1|konet||staff||824827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img394.jpg
-rw-r--r--||1|konet||staff||862378|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img395.jpg
-rw-r--r--||1|konet||staff||883043|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img396.jpg
-rw-r--r--||1|konet||staff||834414|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img397.jpg
-rw-r--r--||1|konet||staff||772918|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img398.jpg
-rw-r--r--||1|konet||staff||699001|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img399.jpg
-rw-r--r--||1|konet||staff||862577|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img400.jpg
-rw-r--r--||1|konet||staff||859470|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img401.jpg
-rw-r--r--||1|konet||staff||898820|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img402.jpg
-rw-r--r--||1|konet||staff||911795|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img403.jpg
-rw-r--r--||1|konet||staff||682827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img404.jpg
-rw-r--r--||1|konet||staff||748989|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img405.jpg
-rw-r--r--||1|konet||staff||756089|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img406.jpg
-rw-r--r--||1|konet||staff||947742|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img407.jpg
-rw-r--r--||1|konet||staff||876865|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img408.jpg
-rw-r--r--||1|konet||staff||939929|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img409.jpg
-rw-r--r--||1|konet||staff||857484|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img410.jpg
-rw-r--r--||1|konet||staff||856924|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img411.jpg
-rw-r--r--||1|konet||staff||869657|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img412.jpg
-rw-r--r--||1|konet||staff||890809|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img413.jpg
-rw-r--r--||1|konet||staff||881101|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img414.jpg
-rw-r--r--||1|konet||staff||860242|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img415.jpg
-rw-r--r--||1|konet||staff||867133|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img416.jpg
-rw-r--r--||1|konet||staff||831861|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img417.jpg
-rw-r--r--||1|konet||staff||825595|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img418.jpg
-rw-r--r--||1|konet||staff||679496|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img419.jpg
-rw-r--r--||1|konet||staff||810751|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img420.jpg
-rw-r--r--||1|konet||staff||790732|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img421.jpg
-rw-r--r--||1|konet||staff||845998|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img422.jpg
-rw-r--r--||1|konet||staff||745726|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img423.jpg
-rw-r--r--||1|konet||staff||794258|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img424.jpg
-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_attack_defense/pages/tn/tn_index.jpg
-rw-r--r--||1|konet||staff||1006441|Jul|26||2013|/kb/books/go/go_basics/pages/img023.jpg
-rw-r--r--||1|konet||staff||1047128|Jul|26||2013|/kb/books/go/go_basics/pages/img024.jpg
-rw-r--r--||1|konet||staff||1053967|Jul|26||2013|/kb/books/go/go_basics/pages/img025.jpg
-rw-r--r--||1|konet||staff||1014446|Jul|26||2013|/kb/books/go/go_basics/pages/img026.jpg
-rw-r--r--||1|konet||staff||1026767|Jul|26||2013|/kb/books/go/go_basics/pages/img027.jpg
-rw-r--r--||1|konet||staff||791176|Jul|26||2013|/kb/books/go/go_basics/pages/img028.jpg
-rw-r--r--||1|konet||staff||813175|Jul|26||2013|/kb/books/go/go_basics/pages/img029.jpg
-rw-r--r--||1|konet||staff||924714|Jul|26||2013|/kb/books/go/go_basics/pages/img030.jpg
-rw-r--r--||1|konet||staff||905403|Jul|26||2013|/kb/books/go/go_basics/pages/img031.jpg
-rw-r--r--||1|konet||staff||888119|Jul|26||2013|/kb/books/go/go_basics/pages/img032.jpg
-rw-r--r--||1|konet||staff||1055638|Jul|26||2013|/kb/books/go/go_basics/pages/img033.jpg
-rw-r--r--||1|konet||staff||915998|Jul|26||2013|/kb/books/go/go_basics/pages/img034.jpg
-rw-r--r--||1|konet||staff||837152|Jul|26||2013|/kb/books/go/go_basics/pages/img035.jpg
-rw-r--r--||1|konet||staff||837128|Jul|26||2013|/kb/books/go/go_basics/pages/img036.jpg
-rw-r--r--||1|konet||staff||1089939|Jul|26||2013|/kb/books/go/go_basics/pages/img037.jpg
-rw-r--r--||1|konet||staff||784389|Jul|26||2013|/kb/books/go/go_basics/pages/img038.jpg
-rw-r--r--||1|konet||staff||889289|Jul|26||2013|/kb/books/go/go_basics/pages/img039.jpg
-rw-r--r--||1|konet||staff||969966|Jul|26||2013|/kb/books/go/go_basics/pages/img040.jpg
-rw-r--r--||1|konet||staff||919829|Jul|26||2013|/kb/books/go/go_basics/pages/img041.jpg
-rw-r--r--||1|konet||staff||1002672|Jul|26||2013|/kb/books/go/go_basics/pages/img042.jpg
-rw-r--r--||1|konet||staff||717797|Jul|26||2013|/kb/books/go/go_basics/pages/img043.jpg
-rw-r--r--||1|konet||staff||768692|Jul|26||2013|/kb/books/go/go_basics/pages/img044.jpg
-rw-r--r--||1|konet||staff||952072|Jul|26||2013|/kb/books/go/go_basics/pages/img045.jpg
-rw-r--r--||1|konet||staff||696825|Jul|26||2013|/kb/books/go/go_basics/pages/img046.jpg
-rw-r--r--||1|konet||staff||332310|Jul|26||2013|/kb/books/go/go_basics/pages/img047.jpg
-rw-r--r--||1|konet||staff||445300|Jul|26||2013|/kb/books/go/go_basics/pages/img048.jpg
-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_basics/pages/img049.jpg
-rw-r--r--||1|konet||staff||1006441|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img023.jpg
-rw-r--r--||1|konet||staff||1047128|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img024.jpg
-rw-r--r--||1|konet||staff||1053967|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img025.jpg
-rw-r--r--||1|konet||staff||1014446|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img026.jpg
-rw-r--r--||1|konet||staff||1026767|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img027.jpg
-rw-r--r--||1|konet||staff||791176|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img028.jpg
-rw-r--r--||1|konet||staff||813175|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img029.jpg
-rw-r--r--||1|konet||staff||924714|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img030.jpg
-rw-r--r--||1|konet||staff||905403|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img031.jpg
-rw-r--r--||1|konet||staff||888119|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img032.jpg
-rw-r--r--||1|konet||staff||1055638|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img033.jpg
-rw-r--r--||1|konet||staff||915998|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img034.jpg
-rw-r--r--||1|konet||staff||837152|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img035.jpg
-rw-r--r--||1|konet||staff||837128|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img036.jpg
-rw-r--r--||1|konet||staff||1089939|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img037.jpg
-rw-r--r--||1|konet||staff||784389|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img038.jpg
-rw-r--r--||1|konet||staff||889289|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img039.jpg
-rw-r--r--||1|konet||staff||969966|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img040.jpg
-rw-r--r--||1|konet||staff||919829|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img041.jpg
-rw-r--r--||1|konet||staff||1002672|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img042.jpg
-rw-r--r--||1|konet||staff||717797|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img043.jpg
-rw-r--r--||1|konet||staff||768692|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img044.jpg
-rw-r--r--||1|konet||staff||952072|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img045.jpg
-rw-r--r--||1|konet||staff||696825|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img046.jpg
-rw-r--r--||1|konet||staff||332310|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img047.jpg
-rw-r--r--||1|konet||staff||445300|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img048.jpg
-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img049.jpg
-rw-r--r--||1|konet||staff||358516|Jul|26||2013|/kb/books/go/go_equipment/pages/img050.jpg
-rw-r--r--||1|konet||staff||516648|Jul|26||2013|/kb/books/go/go_equipment/pages/img051.jpg
-rw-r--r--||1|konet||staff||791156|Jul|26||2013|/kb/books/go/go_equipment/pages/img052.jpg
-rw-r--r--||1|konet||staff||486725|Jul|26||2013|/kb/books/go/go_equipment/pages/img053.jpg
-rw-r--r--||1|konet||staff||948089|Jul|26||2013|/kb/books/go/go_equipment/pages/img054.jpg
-rw-r--r--||1|konet||staff||1033406|Jul|26||2013|/kb/books/go/go_equipment/pages/img055.jpg
-rw-r--r--||1|konet||staff||687569|Jul|26||2013|/kb/books/go/go_equipment/pages/img056.jpg
-rw-r--r--||1|konet||staff||1065658|Jul|26||2013|/kb/books/go/go_equipment/pages/img057.jpg
-rw-r--r--||1|konet||staff||857686|Jul|26||2013|/kb/books/go/go_equipment/pages/img058.jpg
-rw-r--r--||1|konet||staff||603590|Apr|14||2013|/kb/books/go/go_equipment/pages/img061.jpg
-rw-r--r--||1|konet||staff||1374190|Apr|14||2013|/kb/books/go/go_equipment/pages/img062.jpg
-rw-r--r--||1|konet||staff||976954|Apr|14||2013|/kb/books/go/go_equipment/pages/img063.jpg
-rw-r--r--||1|konet||staff||592214|Apr|14||2013|/kb/books/go/go_equipment/pages/img064.jpg
-rw-r--r--||1|konet||staff||390273|Apr|14||2013|/kb/books/go/go_equipment/pages/img065.jpg
-rw-r--r--||1|konet||staff||1340886|Apr|14||2013|/kb/books/go/go_equipment/pages/img066.jpg
-rw-r--r--||1|konet||staff||807810|Apr|14||2013|/kb/books/go/go_equipment/pages/img067.jpg
-rw-r--r--||1|konet||staff||537637|Apr|14||2013|/kb/books/go/go_equipment/pages/img068.jpg
-rw-r--r--||1|konet||staff||358516|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img050.jpg
-rw-r--r--||1|konet||staff||516648|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img051.jpg
-rw-r--r--||1|konet||staff||791156|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img052.jpg
-rw-r--r--||1|konet||staff||486725|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img053.jpg
-rw-r--r--||1|konet||staff||948089|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img054.jpg
-rw-r--r--||1|konet||staff||1033406|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img055.jpg
-rw-r--r--||1|konet||staff||687569|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img056.jpg
-rw-r--r--||1|konet||staff||1065658|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img057.jpg
-rw-r--r--||1|konet||staff||857686|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img058.jpg
-rw-r--r--||1|konet||staff||603590|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img061.jpg
-rw-r--r--||1|konet||staff||1374190|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img062.jpg
-rw-r--r--||1|konet||staff||976954|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img063.jpg
-rw-r--r--||1|konet||staff||592214|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img064.jpg
-rw-r--r--||1|konet||staff||390273|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img065.jpg
-rw-r--r--||1|konet||staff||1340886|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img066.jpg
-rw-r--r--||1|konet||staff||807810|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img067.jpg
-rw-r--r--||1|konet||staff||537637|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img068.jpg
-rw-r--r--||1|konet||staff||964295|Jul|26||2013|/kb/books/go/go_joseki/pages/img070.jpg
-rw-r--r--||1|konet||staff||951817|Jul|26||2013|/kb/books/go/go_joseki/pages/img071.jpg
-rw-r--r--||1|konet||staff||854354|Jul|26||2013|/kb/books/go/go_joseki/pages/img072.jpg
-rw-r--r--||1|konet||staff||904237|Jul|26||2013|/kb/books/go/go_joseki/pages/img073.jpg
-rw-r--r--||1|konet||staff||808049|Jul|26||2013|/kb/books/go/go_joseki/pages/img074.jpg
-rw-r--r--||1|konet||staff||899297|Jul|26||2013|/kb/books/go/go_joseki/pages/img075.jpg
-rw-r--r--||1|konet||staff||907623|Jul|26||2013|/kb/books/go/go_joseki/pages/img076.jpg
-rw-r--r--||1|konet||staff||759807|Jul|26||2013|/kb/books/go/go_joseki/pages/img077.jpg
-rw-r--r--||1|konet||staff||1058618|Jul|26||2013|/kb/books/go/go_joseki/pages/img078.jpg
-rw-r--r--||1|konet||staff||1097406|Jul|26||2013|/kb/books/go/go_joseki/pages/img079.jpg
-rw-r--r--||1|konet||staff||1071509|Jul|26||2013|/kb/books/go/go_joseki/pages/img080.jpg
-rw-r--r--||1|konet||staff||1222293|Jul|26||2013|/kb/books/go/go_joseki/pages/img081.jpg
-rw-r--r--||1|konet||staff||809594|Jul|26||2013|/kb/books/go/go_joseki/pages/img082.jpg
-rw-r--r--||1|konet||staff||976407|Jul|26||2013|/kb/books/go/go_joseki/pages/img083.jpg
-rw-r--r--||1|konet||staff||1107226|Jul|26||2013|/kb/books/go/go_joseki/pages/img084.jpg
-rw-r--r--||1|konet||staff||1026899|Jul|26||2013|/kb/books/go/go_joseki/pages/img085.jpg
-rw-r--r--||1|konet||staff||1024022|Jul|26||2013|/kb/books/go/go_joseki/pages/img086.jpg
-rw-r--r--||1|konet||staff||1029782|Jul|26||2013|/kb/books/go/go_joseki/pages/img087.jpg
-rw-r--r--||1|konet||staff||1051070|Jul|26||2013|/kb/books/go/go_joseki/pages/img088.jpg
-rw-r--r--||1|konet||staff||956297|Jul|26||2013|/kb/books/go/go_joseki/pages/img089.jpg
-rw-r--r--||1|konet||staff||1037967|Jul|26||2013|/kb/books/go/go_joseki/pages/img090.jpg
-rw-r--r--||1|konet||staff||1019427|Jul|26||2013|/kb/books/go/go_joseki/pages/img091.jpg
-rw-r--r--||1|konet||staff||1106972|Jul|26||2013|/kb/books/go/go_joseki/pages/img092.jpg
-rw-r--r--||1|konet||staff||1110897|Jul|26||2013|/kb/books/go/go_joseki/pages/img093.jpg
-rw-r--r--||1|konet||staff||1073256|Jul|26||2013|/kb/books/go/go_joseki/pages/img094.jpg
-rw-r--r--||1|konet||staff||867457|Jul|27||2013|/kb/books/go/go_joseki/pages/img095.jpg
-rw-r--r--||1|konet||staff||1093950|Jul|27||2013|/kb/books/go/go_joseki/pages/img096.jpg
-rw-r--r--||1|konet||staff||1215177|Jul|27||2013|/kb/books/go/go_joseki/pages/img097.jpg
-rw-r--r--||1|konet||staff||1126591|Jul|27||2013|/kb/books/go/go_joseki/pages/img098.jpg
-rw-r--r--||1|konet||staff||1146058|Jul|27||2013|/kb/books/go/go_joseki/pages/img099.jpg
-rw-r--r--||1|konet||staff||998658|Jul|27||2013|/kb/books/go/go_joseki/pages/img100.jpg
-rw-r--r--||1|konet||staff||950064|Jul|27||2013|/kb/books/go/go_joseki/pages/img101.jpg
-rw-r--r--||1|konet||staff||1113709|Jul|27||2013|/kb/books/go/go_joseki/pages/img102.jpg
-rw-r--r--||1|konet||staff||1073193|Jul|27||2013|/kb/books/go/go_joseki/pages/img103.jpg
-rw-r--r--||1|konet||staff||965100|Jul|27||2013|/kb/books/go/go_joseki/pages/img104.jpg
-rw-r--r--||1|konet||staff||967947|Jul|27||2013|/kb/books/go/go_joseki/pages/img105.jpg
-rw-r--r--||1|konet||staff||1053408|Jul|27||2013|/kb/books/go/go_joseki/pages/img106.jpg
-rw-r--r--||1|konet||staff||1108979|Jul|27||2013|/kb/books/go/go_joseki/pages/img107.jpg
-rw-r--r--||1|konet||staff||993497|Jul|27||2013|/kb/books/go/go_joseki/pages/img108.jpg
-rw-r--r--||1|konet||staff||970885|Jul|27||2013|/kb/books/go/go_joseki/pages/img109.jpg
-rw-r--r--||1|konet||staff||1053854|Jul|27||2013|/kb/books/go/go_joseki/pages/img110.jpg
-rw-r--r--||1|konet||staff||984744|Jul|27||2013|/kb/books/go/go_joseki/pages/img111.jpg
-rw-r--r--||1|konet||staff||1053819|Jul|27||2013|/kb/books/go/go_joseki/pages/img112.jpg
-rw-r--r--||1|konet||staff||1187421|Jul|27||2013|/kb/books/go/go_joseki/pages/img113.jpg
-rw-r--r--||1|konet||staff||964581|Jul|27||2013|/kb/books/go/go_joseki/pages/img114.jpg
-rw-r--r--||1|konet||staff||978287|Jul|27||2013|/kb/books/go/go_joseki/pages/img115.jpg
-rw-r--r--||1|konet||staff||917482|Jul|27||2013|/kb/books/go/go_joseki/pages/img116.jpg
-rw-r--r--||1|konet||staff||991987|Jul|27||2013|/kb/books/go/go_joseki/pages/img117.jpg
-rw-r--r--||1|konet||staff||898921|Jul|27||2013|/kb/books/go/go_joseki/pages/img118.jpg
-rw-r--r--||1|konet||staff||1012220|Jul|27||2013|/kb/books/go/go_joseki/pages/img119.jpg
-rw-r--r--||1|konet||staff||1072925|Jul|27||2013|/kb/books/go/go_joseki/pages/img120.jpg
-rw-r--r--||1|konet||staff||872746|Jul|27||2013|/kb/books/go/go_joseki/pages/img121.jpg
-rw-r--r--||1|konet||staff||866500|Jul|27||2013|/kb/books/go/go_joseki/pages/img122.jpg
-rw-r--r--||1|konet||staff||1009773|Jul|27||2013|/kb/books/go/go_joseki/pages/img123.jpg
-rw-r--r--||1|konet||staff||968391|Jul|27||2013|/kb/books/go/go_joseki/pages/img124.jpg
-rw-r--r--||1|konet||staff||703303|Jul|27||2013|/kb/books/go/go_joseki/pages/img125.jpg
-rw-r--r--||1|konet||staff||950503|Jul|27||2013|/kb/books/go/go_joseki/pages/img126.jpg
-rw-r--r--||1|konet||staff||998706|Jul|27||2013|/kb/books/go/go_joseki/pages/img127.jpg
-rw-r--r--||1|konet||staff||873116|Jul|27||2013|/kb/books/go/go_joseki/pages/img128.jpg
-rw-r--r--||1|konet||staff||821432|Jul|27||2013|/kb/books/go/go_joseki/pages/img129.jpg
-rw-r--r--||1|konet||staff||825088|Jul|27||2013|/kb/books/go/go_joseki/pages/img130.jpg
-rw-r--r--||1|konet||staff||896338|Jul|27||2013|/kb/books/go/go_joseki/pages/img131.jpg
-rw-r--r--||1|konet||staff||963585|Jul|27||2013|/kb/books/go/go_joseki/pages/img132.jpg
-rw-r--r--||1|konet||staff||983883|Jul|27||2013|/kb/books/go/go_joseki/pages/img133.jpg
-rw-r--r--||1|konet||staff||873892|Jul|27||2013|/kb/books/go/go_joseki/pages/img134.jpg
-rw-r--r--||1|konet||staff||769739|Jul|27||2013|/kb/books/go/go_joseki/pages/img135.jpg
-rw-r--r--||1|konet||staff||713637|Jul|27||2013|/kb/books/go/go_joseki/pages/img136.jpg
-rw-r--r--||1|konet||staff||584476|Jul|27||2013|/kb/books/go/go_joseki/pages/img137.jpg
-rw-r--r--||1|konet||staff||909033|Jul|27||2013|/kb/books/go/go_joseki/pages/img138.jpg
-rw-r--r--||1|konet||staff||1022877|Jul|27||2013|/kb/books/go/go_joseki/pages/img139.jpg
-rw-r--r--||1|konet||staff||744019|Jul|27||2013|/kb/books/go/go_joseki/pages/img140.jpg
-rw-r--r--||1|konet||staff||166301|Jul|27||2013|/kb/books/go/go_joseki/pages/img141.jpg
-rw-r--r--||1|konet||staff||404802|Jul|27||2013|/kb/books/go/go_joseki/pages/img142.jpg
-rw-r--r--||1|konet||staff||536562|Jul|27||2013|/kb/books/go/go_joseki/pages/img143.jpg
-rw-r--r--||1|konet||staff||964295|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img070.jpg
-rw-r--r--||1|konet||staff||951817|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img071.jpg
-rw-r--r--||1|konet||staff||854354|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img072.jpg
-rw-r--r--||1|konet||staff||904237|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img073.jpg
-rw-r--r--||1|konet||staff||808049|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img074.jpg
-rw-r--r--||1|konet||staff||899297|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img075.jpg
-rw-r--r--||1|konet||staff||907623|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img076.jpg
-rw-r--r--||1|konet||staff||759807|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img077.jpg
-rw-r--r--||1|konet||staff||1058618|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img078.jpg
-rw-r--r--||1|konet||staff||1097406|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img079.jpg
-rw-r--r--||1|konet||staff||1071509|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img080.jpg
-rw-r--r--||1|konet||staff||1222293|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img081.jpg
-rw-r--r--||1|konet||staff||809594|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img082.jpg
-rw-r--r--||1|konet||staff||976407|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img083.jpg
-rw-r--r--||1|konet||staff||1107226|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img084.jpg
-rw-r--r--||1|konet||staff||1026899|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img085.jpg
-rw-r--r--||1|konet||staff||1024022|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img086.jpg
-rw-r--r--||1|konet||staff||1029782|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img087.jpg
-rw-r--r--||1|konet||staff||1051070|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img088.jpg
-rw-r--r--||1|konet||staff||956297|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img089.jpg
-rw-r--r--||1|konet||staff||1037967|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img090.jpg
-rw-r--r--||1|konet||staff||1019427|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img091.jpg
-rw-r--r--||1|konet||staff||1106972|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img092.jpg
-rw-r--r--||1|konet||staff||1110897|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img093.jpg
-rw-r--r--||1|konet||staff||1073256|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img094.jpg
-rw-r--r--||1|konet||staff||867457|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img095.jpg
-rw-r--r--||1|konet||staff||1093950|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img096.jpg
-rw-r--r--||1|konet||staff||1215177|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img097.jpg
-rw-r--r--||1|konet||staff||1126591|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img098.jpg
-rw-r--r--||1|konet||staff||1146058|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img099.jpg
-rw-r--r--||1|konet||staff||998658|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img100.jpg
-rw-r--r--||1|konet||staff||950064|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img101.jpg
-rw-r--r--||1|konet||staff||1113709|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img102.jpg
-rw-r--r--||1|konet||staff||1073193|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img103.jpg
-rw-r--r--||1|konet||staff||965100|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img104.jpg
-rw-r--r--||1|konet||staff||967947|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img105.jpg
-rw-r--r--||1|konet||staff||1053408|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img106.jpg
-rw-r--r--||1|konet||staff||1108979|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img107.jpg
-rw-r--r--||1|konet||staff||993497|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img108.jpg
-rw-r--r--||1|konet||staff||970885|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img109.jpg
-rw-r--r--||1|konet||staff||1053854|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img110.jpg
-rw-r--r--||1|konet||staff||984744|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img111.jpg
-rw-r--r--||1|konet||staff||1053819|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img112.jpg
-rw-r--r--||1|konet||staff||1187421|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img113.jpg
-rw-r--r--||1|konet||staff||964581|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img114.jpg
-rw-r--r--||1|konet||staff||978287|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img115.jpg
-rw-r--r--||1|konet||staff||917482|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img116.jpg
-rw-r--r--||1|konet||staff||991987|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img117.jpg
-rw-r--r--||1|konet||staff||898921|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img118.jpg
-rw-r--r--||1|konet||staff||1012220|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img119.jpg
-rw-r--r--||1|konet||staff||1072925|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img120.jpg
-rw-r--r--||1|konet||staff||872746|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img121.jpg
-rw-r--r--||1|konet||staff||866500|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img122.jpg
-rw-r--r--||1|konet||staff||1009773|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img123.jpg
-rw-r--r--||1|konet||staff||968391|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img124.jpg
-rw-r--r--||1|konet||staff||703303|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img125.jpg
-rw-r--r--||1|konet||staff||950503|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img126.jpg
-rw-r--r--||1|konet||staff||998706|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img127.jpg
-rw-r--r--||1|konet||staff||873116|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img128.jpg
-rw-r--r--||1|konet||staff||821432|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img129.jpg
-rw-r--r--||1|konet||staff||825088|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img130.jpg
-rw-r--r--||1|konet||staff||896338|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img131.jpg
-rw-r--r--||1|konet||staff||963585|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img132.jpg
-rw-r--r--||1|konet||staff||983883|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img133.jpg
-rw-r--r--||1|konet||staff||873892|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img134.jpg
-rw-r--r--||1|konet||staff||769739|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img135.jpg
-rw-r--r--||1|konet||staff||713637|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img136.jpg
-rw-r--r--||1|konet||staff||584476|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img137.jpg
-rw-r--r--||1|konet||staff||909033|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img138.jpg
-rw-r--r--||1|konet||staff||1022877|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img139.jpg
-rw-r--r--||1|konet||staff||744019|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img140.jpg
-rw-r--r--||1|konet||staff||166301|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img141.jpg
-rw-r--r--||1|konet||staff||404802|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img142.jpg
-rw-r--r--||1|konet||staff||536562|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img143.jpg
-rw-r--r--||1|konet||staff||437291|Jul|28||2013|/kb/books/go/go_middlegame/pages/img183.jpg
-rw-r--r--||1|konet||staff||525694|Jul|28||2013|/kb/books/go/go_middlegame/pages/img184.jpg
-rw-r--r--||1|konet||staff||653806|Jul|28||2013|/kb/books/go/go_middlegame/pages/img185.jpg
-rw-r--r--||1|konet||staff||841874|Jul|28||2013|/kb/books/go/go_middlegame/pages/img186.jpg
-rw-r--r--||1|konet||staff||783850|Jul|28||2013|/kb/books/go/go_middlegame/pages/img187.jpg
-rw-r--r--||1|konet||staff||759335|Jul|28||2013|/kb/books/go/go_middlegame/pages/img188.jpg
-rw-r--r--||1|konet||staff||777431|Jul|28||2013|/kb/books/go/go_middlegame/pages/img189.jpg
-rw-r--r--||1|konet||staff||621857|Jul|28||2013|/kb/books/go/go_middlegame/pages/img190.jpg
-rw-r--r--||1|konet||staff||621065|Jul|28||2013|/kb/books/go/go_middlegame/pages/img213.jpg
-rw-r--r--||1|konet||staff||660424|Jul|28||2013|/kb/books/go/go_middlegame/pages/img214.jpg
-rw-r--r--||1|konet||staff||640766|Jul|28||2013|/kb/books/go/go_middlegame/pages/img215.jpg
-rw-r--r--||1|konet||staff||701699|Jul|28||2013|/kb/books/go/go_middlegame/pages/img216.jpg
-rw-r--r--||1|konet||staff||684817|Jul|28||2013|/kb/books/go/go_middlegame/pages/img217.jpg
-rw-r--r--||1|konet||staff||693628|Jul|28||2013|/kb/books/go/go_middlegame/pages/img218.jpg
-rw-r--r--||1|konet||staff||652074|Jul|28||2013|/kb/books/go/go_middlegame/pages/img219.jpg
-rw-r--r--||1|konet||staff||665520|Jul|28||2013|/kb/books/go/go_middlegame/pages/img220.jpg
-rw-r--r--||1|konet||staff||664979|Jul|28||2013|/kb/books/go/go_middlegame/pages/img221.jpg
-rw-r--r--||1|konet||staff||420880|Jul|28||2013|/kb/books/go/go_middlegame/pages/img222.jpg
-rw-r--r--||1|konet||staff||653179|Jul|28||2013|/kb/books/go/go_middlegame/pages/img223.jpg
-rw-r--r--||1|konet||staff||631018|Jul|28||2013|/kb/books/go/go_middlegame/pages/img224.jpg
-rw-r--r--||1|konet||staff||614888|Jul|28||2013|/kb/books/go/go_middlegame/pages/img225.jpg
-rw-r--r--||1|konet||staff||635578|Jul|28||2013|/kb/books/go/go_middlegame/pages/img226.jpg
-rw-r--r--||1|konet||staff||664987|Jul|28||2013|/kb/books/go/go_middlegame/pages/img227.jpg
-rw-r--r--||1|konet||staff||494882|Jul|28||2013|/kb/books/go/go_middlegame/pages/img228.jpg
-rw-r--r--||1|konet||staff||755517|Jul|28||2013|/kb/books/go/go_middlegame/pages/img229.jpg
-rw-r--r--||1|konet||staff||746024|Jul|28||2013|/kb/books/go/go_middlegame/pages/img230.jpg
-rw-r--r--||1|konet||staff||740563|Jul|28||2013|/kb/books/go/go_middlegame/pages/img231.jpg
-rw-r--r--||1|konet||staff||720673|Jul|28||2013|/kb/books/go/go_middlegame/pages/img232.jpg
-rw-r--r--||1|konet||staff||641901|Jul|28||2013|/kb/books/go/go_middlegame/pages/img233.jpg
-rw-r--r--||1|konet||staff||681172|Jul|28||2013|/kb/books/go/go_middlegame/pages/img234.jpg
-rw-r--r--||1|konet||staff||681621|Jul|28||2013|/kb/books/go/go_middlegame/pages/img235.jpg
-rw-r--r--||1|konet||staff||699626|Jul|28||2013|/kb/books/go/go_middlegame/pages/img236.jpg
-rw-r--r--||1|konet||staff||692405|Jul|28||2013|/kb/books/go/go_middlegame/pages/img237.jpg
-rw-r--r--||1|konet||staff||675217|Jul|28||2013|/kb/books/go/go_middlegame/pages/img238.jpg
-rw-r--r--||1|konet||staff||637166|Jul|28||2013|/kb/books/go/go_middlegame/pages/img239.jpg
-rw-r--r--||1|konet||staff||638038|Jul|28||2013|/kb/books/go/go_middlegame/pages/img240.jpg
-rw-r--r--||1|konet||staff||746258|Jul|28||2013|/kb/books/go/go_middlegame/pages/img241.jpg
-rw-r--r--||1|konet||staff||697934|Jul|28||2013|/kb/books/go/go_middlegame/pages/img242.jpg
-rw-r--r--||1|konet||staff||680670|Jul|28||2013|/kb/books/go/go_middlegame/pages/img243.jpg
-rw-r--r--||1|konet||staff||666127|Jul|28||2013|/kb/books/go/go_middlegame/pages/img244.jpg
-rw-r--r--||1|konet||staff||703644|Jul|28||2013|/kb/books/go/go_middlegame/pages/img245.jpg
-rw-r--r--||1|konet||staff||674102|Jul|28||2013|/kb/books/go/go_middlegame/pages/img246.jpg
-rw-r--r--||1|konet||staff||684526|Jul|28||2013|/kb/books/go/go_middlegame/pages/img247.jpg
-rw-r--r--||1|konet||staff||648526|Jul|28||2013|/kb/books/go/go_middlegame/pages/img248.jpg
-rw-r--r--||1|konet||staff||728614|Jul|28||2013|/kb/books/go/go_middlegame/pages/img249.jpg
-rw-r--r--||1|konet||staff||663415|Jul|28||2013|/kb/books/go/go_middlegame/pages/img250.jpg
-rw-r--r--||1|konet||staff||694657|Jul|28||2013|/kb/books/go/go_middlegame/pages/img251.jpg
-rw-r--r--||1|konet||staff||673729|Jul|28||2013|/kb/books/go/go_middlegame/pages/img252.jpg
-rw-r--r--||1|konet||staff||663575|Jul|28||2013|/kb/books/go/go_middlegame/pages/img253.jpg
-rw-r--r--||1|konet||staff||464991|Jul|28||2013|/kb/books/go/go_middlegame/pages/img254.jpg
-rw-r--r--||1|konet||staff||756849|Jul|28||2013|/kb/books/go/go_middlegame/pages/img255.jpg
-rw-r--r--||1|konet||staff||761547|Jul|28||2013|/kb/books/go/go_middlegame/pages/img256.jpg
-rw-r--r--||1|konet||staff||801070|Jul|28||2013|/kb/books/go/go_middlegame/pages/img257.jpg
-rw-r--r--||1|konet||staff||739075|Jul|28||2013|/kb/books/go/go_middlegame/pages/img258.jpg
-rw-r--r--||1|konet||staff||787189|Jul|28||2013|/kb/books/go/go_middlegame/pages/img259.jpg
-rw-r--r--||1|konet||staff||729433|Jul|28||2013|/kb/books/go/go_middlegame/pages/img260.jpg
-rw-r--r--||1|konet||staff||793385|Jul|28||2013|/kb/books/go/go_middlegame/pages/img261.jpg
-rw-r--r--||1|konet||staff||756141|Jul|28||2013|/kb/books/go/go_middlegame/pages/img262.jpg
-rw-r--r--||1|konet||staff||779572|Jul|28||2013|/kb/books/go/go_middlegame/pages/img263.jpg
-rw-r--r--||1|konet||staff||759079|Jul|28||2013|/kb/books/go/go_middlegame/pages/img264.jpg
-rw-r--r--||1|konet||staff||738282|Jul|28||2013|/kb/books/go/go_middlegame/pages/img265.jpg
-rw-r--r--||1|konet||staff||814029|Jul|28||2013|/kb/books/go/go_middlegame/pages/img266.jpg
-rw-r--r--||1|konet||staff||833386|Jul|28||2013|/kb/books/go/go_middlegame/pages/img267.jpg
-rw-r--r--||1|konet||staff||188285|Jul|28||2013|/kb/books/go/go_middlegame/pages/img268.jpg
-rw-r--r--||1|konet||staff||369506|Jul|28||2013|/kb/books/go/go_middlegame/pages/img269.jpg
-rw-r--r--||1|konet||staff||384764|Jul|28||2013|/kb/books/go/go_middlegame/pages/img270.jpg
-rw-r--r--||1|konet||staff||547382|Jul|28||2013|/kb/books/go/go_middlegame/pages/img271.jpg
-rw-r--r--||1|konet||staff||647343|Jul|28||2013|/kb/books/go/go_middlegame/pages/img272.jpg
-rw-r--r--||1|konet||staff||1070171|Jul|28||2013|/kb/books/go/go_middlegame/pages/img273.jpg
-rw-r--r--||1|konet||staff||1188408|Jul|28||2013|/kb/books/go/go_middlegame/pages/img274.jpg
-rw-r--r--||1|konet||staff||315266|Jul|28||2013|/kb/books/go/go_middlegame/pages/img275.jpg
-rw-r--r--||1|konet||staff||299360|Jul|28||2013|/kb/books/go/go_middlegame/pages/img276.jpg
-rw-r--r--||1|konet||staff||707195|Jul|28||2013|/kb/books/go/go_middlegame/pages/img277.jpg
-rw-r--r--||1|konet||staff||872457|Jul|28||2013|/kb/books/go/go_middlegame/pages/img278.jpg
-rw-r--r--||1|konet||staff||959051|Jul|28||2013|/kb/books/go/go_middlegame/pages/img279.jpg
-rw-r--r--||1|konet||staff||920879|Jul|28||2013|/kb/books/go/go_middlegame/pages/img280.jpg
-rw-r--r--||1|konet||staff||926630|Jul|28||2013|/kb/books/go/go_middlegame/pages/img281.jpg
-rw-r--r--||1|konet||staff||1034689|Jul|28||2013|/kb/books/go/go_middlegame/pages/img282.jpg
-rw-r--r--||1|konet||staff||341434|Jul|25||2013|/kb/books/go/go_middlegame/pages/img283.jpg
-rw-r--r--||1|konet||staff||1211055|Jul|25||2013|/kb/books/go/go_middlegame/pages/img284.jpg
-rw-r--r--||1|konet||staff||437291|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img183.jpg
-rw-r--r--||1|konet||staff||525694|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img184.jpg
-rw-r--r--||1|konet||staff||653806|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img185.jpg
-rw-r--r--||1|konet||staff||841874|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img186.jpg
-rw-r--r--||1|konet||staff||783850|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img187.jpg
-rw-r--r--||1|konet||staff||759335|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img188.jpg
-rw-r--r--||1|konet||staff||777431|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img189.jpg
-rw-r--r--||1|konet||staff||621857|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img190.jpg
-rw-r--r--||1|konet||staff||621065|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img213.jpg
-rw-r--r--||1|konet||staff||660424|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img214.jpg
-rw-r--r--||1|konet||staff||640766|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img215.jpg
-rw-r--r--||1|konet||staff||701699|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img216.jpg
-rw-r--r--||1|konet||staff||684817|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img217.jpg
-rw-r--r--||1|konet||staff||693628|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img218.jpg
-rw-r--r--||1|konet||staff||652074|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img219.jpg
-rw-r--r--||1|konet||staff||665520|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img220.jpg
-rw-r--r--||1|konet||staff||664979|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img221.jpg
-rw-r--r--||1|konet||staff||420880|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img222.jpg
-rw-r--r--||1|konet||staff||653179|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img223.jpg
-rw-r--r--||1|konet||staff||631018|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img224.jpg
-rw-r--r--||1|konet||staff||614888|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img225.jpg
-rw-r--r--||1|konet||staff||635578|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img226.jpg
-rw-r--r--||1|konet||staff||664987|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img227.jpg
-rw-r--r--||1|konet||staff||494882|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img228.jpg
-rw-r--r--||1|konet||staff||755517|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img229.jpg
-rw-r--r--||1|konet||staff||746024|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img230.jpg
-rw-r--r--||1|konet||staff||740563|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img231.jpg
-rw-r--r--||1|konet||staff||720673|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img232.jpg
-rw-r--r--||1|konet||staff||641901|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img233.jpg
-rw-r--r--||1|konet||staff||681172|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img234.jpg
-rw-r--r--||1|konet||staff||681621|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img235.jpg
-rw-r--r--||1|konet||staff||699626|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img236.jpg
-rw-r--r--||1|konet||staff||692405|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img237.jpg
-rw-r--r--||1|konet||staff||675217|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img238.jpg
-rw-r--r--||1|konet||staff||637166|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img239.jpg
-rw-r--r--||1|konet||staff||638038|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img240.jpg
-rw-r--r--||1|konet||staff||746258|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img241.jpg
-rw-r--r--||1|konet||staff||697934|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img242.jpg
-rw-r--r--||1|konet||staff||680670|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img243.jpg
-rw-r--r--||1|konet||staff||666127|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img244.jpg
-rw-r--r--||1|konet||staff||703644|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img245.jpg
-rw-r--r--||1|konet||staff||674102|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img246.jpg
-rw-r--r--||1|konet||staff||684526|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img247.jpg
-rw-r--r--||1|konet||staff||648526|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img248.jpg
-rw-r--r--||1|konet||staff||728614|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img249.jpg
-rw-r--r--||1|konet||staff||663415|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img250.jpg
-rw-r--r--||1|konet||staff||694657|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img251.jpg
-rw-r--r--||1|konet||staff||673729|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img252.jpg
-rw-r--r--||1|konet||staff||663575|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img253.jpg
-rw-r--r--||1|konet||staff||464991|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img254.jpg
-rw-r--r--||1|konet||staff||756849|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img255.jpg
-rw-r--r--||1|konet||staff||761547|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img256.jpg
-rw-r--r--||1|konet||staff||801070|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img257.jpg
-rw-r--r--||1|konet||staff||739075|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img258.jpg
-rw-r--r--||1|konet||staff||787189|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img259.jpg
-rw-r--r--||1|konet||staff||729433|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img260.jpg
-rw-r--r--||1|konet||staff||793385|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img261.jpg
-rw-r--r--||1|konet||staff||756141|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img262.jpg
-rw-r--r--||1|konet||staff||779572|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img263.jpg
-rw-r--r--||1|konet||staff||759079|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img264.jpg
-rw-r--r--||1|konet||staff||738282|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img265.jpg
-rw-r--r--||1|konet||staff||814029|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img266.jpg
-rw-r--r--||1|konet||staff||833386|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img267.jpg
-rw-r--r--||1|konet||staff||188285|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img268.jpg
-rw-r--r--||1|konet||staff||369506|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img269.jpg
-rw-r--r--||1|konet||staff||384764|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img270.jpg
-rw-r--r--||1|konet||staff||547382|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img271.jpg
-rw-r--r--||1|konet||staff||647343|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img272.jpg
-rw-r--r--||1|konet||staff||1070171|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img273.jpg
-rw-r--r--||1|konet||staff||1188408|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img274.jpg
-rw-r--r--||1|konet||staff||315266|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img275.jpg
-rw-r--r--||1|konet||staff||299360|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img276.jpg
-rw-r--r--||1|konet||staff||707195|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img277.jpg
-rw-r--r--||1|konet||staff||872457|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img278.jpg
-rw-r--r--||1|konet||staff||959051|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img279.jpg
-rw-r--r--||1|konet||staff||920879|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img280.jpg
-rw-r--r--||1|konet||staff||926630|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img281.jpg
-rw-r--r--||1|konet||staff||1034689|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img282.jpg
-rw-r--r--||1|konet||staff||341434|Jul|25||2013|/kb/books/go/go_middlegame/pages/tn/tn_img283.jpg
-rw-r--r--||1|konet||staff||1211055|Jul|25||2013|/kb/books/go/go_middlegame/pages/tn/tn_img284.jpg
-rw-r--r--||1|konet||staff||1053658|Jul|25||2013|/kb/books/go/go_strategy/pages/img285.jpg
-rw-r--r--||1|konet||staff||336909|Jul|25||2013|/kb/books/go/go_strategy/pages/img286.jpg
-rw-r--r--||1|konet||staff||354099|Jul|25||2013|/kb/books/go/go_strategy/pages/img287.jpg
-rw-r--r--||1|konet||staff||409400|Jul|25||2013|/kb/books/go/go_strategy/pages/img288.jpg
-rw-r--r--||1|konet||staff||417952|Jul|25||2013|/kb/books/go/go_strategy/pages/img289.jpg
-rw-r--r--||1|konet||staff||690620|Jul|25||2013|/kb/books/go/go_strategy/pages/img290.jpg
-rw-r--r--||1|konet||staff||845711|Jul|25||2013|/kb/books/go/go_strategy/pages/img291.jpg
-rw-r--r--||1|konet||staff||1028081|Jul|25||2013|/kb/books/go/go_strategy/pages/img292.jpg
-rw-r--r--||1|konet||staff||1126342|Jul|25||2013|/kb/books/go/go_strategy/pages/img293.jpg
-rw-r--r--||1|konet||staff||1106874|Jul|25||2013|/kb/books/go/go_strategy/pages/img294.jpg
-rw-r--r--||1|konet||staff||1054403|Jul|25||2013|/kb/books/go/go_strategy/pages/img295.jpg
-rw-r--r--||1|konet||staff||1120631|Jul|25||2013|/kb/books/go/go_strategy/pages/img296.jpg
-rw-r--r--||1|konet||staff||756489|Jul|25||2013|/kb/books/go/go_strategy/pages/img297.jpg
-rw-r--r--||1|konet||staff||1084236|Jul|25||2013|/kb/books/go/go_strategy/pages/img298.jpg
-rw-r--r--||1|konet||staff||1067948|Jul|25||2013|/kb/books/go/go_strategy/pages/img299.jpg
-rw-r--r--||1|konet||staff||979594|Jul|25||2013|/kb/books/go/go_strategy/pages/img300.jpg
-rw-r--r--||1|konet||staff||1045182|Jul|25||2013|/kb/books/go/go_strategy/pages/img301.jpg
-rw-r--r--||1|konet||staff||901610|Jul|25||2013|/kb/books/go/go_strategy/pages/img302.jpg
-rw-r--r--||1|konet||staff||918985|Jul|25||2013|/kb/books/go/go_strategy/pages/img303.jpg
-rw-r--r--||1|konet||staff||862420|Jul|25||2013|/kb/books/go/go_strategy/pages/img304.jpg
-rw-r--r--||1|konet||staff||886557|Jul|25||2013|/kb/books/go/go_strategy/pages/img305.jpg
-rw-r--r--||1|konet||staff||787507|Jul|25||2013|/kb/books/go/go_strategy/pages/img306.jpg
-rw-r--r--||1|konet||staff||911463|Jul|25||2013|/kb/books/go/go_strategy/pages/img307.jpg
-rw-r--r--||1|konet||staff||965161|Jul|25||2013|/kb/books/go/go_strategy/pages/img308.jpg
-rw-r--r--||1|konet||staff||973577|Jul|25||2013|/kb/books/go/go_strategy/pages/img309.jpg
-rw-r--r--||1|konet||staff||888001|Jul|25||2013|/kb/books/go/go_strategy/pages/img310.jpg
-rw-r--r--||1|konet||staff||786913|Jul|25||2013|/kb/books/go/go_strategy/pages/img311.jpg
-rw-r--r--||1|konet||staff||963093|Jul|25||2013|/kb/books/go/go_strategy/pages/img312.jpg
-rw-r--r--||1|konet||staff||1189822|Jul|25||2013|/kb/books/go/go_strategy/pages/img313.jpg
-rw-r--r--||1|konet||staff||877732|Jul|25||2013|/kb/books/go/go_strategy/pages/img314.jpg
-rw-r--r--||1|konet||staff||849270|Jul|25||2013|/kb/books/go/go_strategy/pages/img315.jpg
-rw-r--r--||1|konet||staff||963161|Jul|25||2013|/kb/books/go/go_strategy/pages/img316.jpg
-rw-r--r--||1|konet||staff||507750|Jul|25||2013|/kb/books/go/go_strategy/pages/img317.jpg
-rw-r--r--||1|konet||staff||930132|Jul|26||2013|/kb/books/go/go_strategy/pages/img318.jpg
-rw-r--r--||1|konet||staff||862631|Jul|26||2013|/kb/books/go/go_strategy/pages/img319.jpg
-rw-r--r--||1|konet||staff||2584516|Jul|26||2013|/kb/books/go/go_strategy/pages/img319_rot.jpg
-rw-r--r--||1|konet||staff||907770|Jul|26||2013|/kb/books/go/go_strategy/pages/img320.jpg
-rw-r--r--||1|konet||staff||1074018|Jul|26||2013|/kb/books/go/go_strategy/pages/img321.jpg
-rw-r--r--||1|konet||staff||985358|Jul|26||2013|/kb/books/go/go_strategy/pages/img322.jpg
-rw-r--r--||1|konet||staff||955316|Jul|26||2013|/kb/books/go/go_strategy/pages/img323.jpg
-rw-r--r--||1|konet||staff||1048619|Jul|26||2013|/kb/books/go/go_strategy/pages/img324.jpg
-rw-r--r--||1|konet||staff||1013385|Jul|26||2013|/kb/books/go/go_strategy/pages/img325.jpg
-rw-r--r--||1|konet||staff||1091971|Jul|26||2013|/kb/books/go/go_strategy/pages/img326.jpg
-rw-r--r--||1|konet||staff||801231|Jul|26||2013|/kb/books/go/go_strategy/pages/img327.jpg
-rw-r--r--||1|konet||staff||845582|Jul|26||2013|/kb/books/go/go_strategy/pages/img328.jpg
-rw-r--r--||1|konet||staff||931676|Jul|26||2013|/kb/books/go/go_strategy/pages/img329.jpg
-rw-r--r--||1|konet||staff||1068374|Jul|26||2013|/kb/books/go/go_strategy/pages/img330.jpg
-rw-r--r--||1|konet||staff||836404|Jul|26||2013|/kb/books/go/go_strategy/pages/img331.jpg
-rw-r--r--||1|konet||staff||1002956|Jul|26||2013|/kb/books/go/go_strategy/pages/img332.jpg
-rw-r--r--||1|konet||staff||858923|Jul|26||2013|/kb/books/go/go_strategy/pages/img333.jpg
-rw-r--r--||1|konet||staff||904910|Jul|26||2013|/kb/books/go/go_strategy/pages/img334.jpg
-rw-r--r--||1|konet||staff||905806|Jul|28||2013|/kb/books/go/go_strategy/pages/img335.jpg
-rw-r--r--||1|konet||staff||1032145|Jul|28||2013|/kb/books/go/go_strategy/pages/img336.jpg
-rw-r--r--||1|konet||staff||927378|Jul|28||2013|/kb/books/go/go_strategy/pages/img337.jpg
-rw-r--r--||1|konet||staff||1021816|Jul|28||2013|/kb/books/go/go_strategy/pages/img338.jpg
-rw-r--r--||1|konet||staff||1007963|Jul|28||2013|/kb/books/go/go_strategy/pages/img339.jpg
-rw-r--r--||1|konet||staff||1087169|Jul|28||2013|/kb/books/go/go_strategy/pages/img340.jpg
-rw-r--r--||1|konet||staff||907719|Jul|28||2013|/kb/books/go/go_strategy/pages/img341.jpg
-rw-r--r--||1|konet||staff||1017200|Jul|28||2013|/kb/books/go/go_strategy/pages/img342.jpg
-rw-r--r--||1|konet||staff||1008372|Jul|28||2013|/kb/books/go/go_strategy/pages/img343.jpg
-rw-r--r--||1|konet||staff||904314|Jul|28||2013|/kb/books/go/go_strategy/pages/img344.jpg
-rw-r--r--||1|konet||staff||865407|Jul|28||2013|/kb/books/go/go_strategy/pages/img345.jpg
-rw-r--r--||1|konet||staff||936444|Jul|28||2013|/kb/books/go/go_strategy/pages/img346.jpg
-rw-r--r--||1|konet||staff||1098851|Jul|28||2013|/kb/books/go/go_strategy/pages/img347.jpg
-rw-r--r--||1|konet||staff||1136515|Jul|28||2013|/kb/books/go/go_strategy/pages/img348.jpg
-rw-r--r--||1|konet||staff||1181254|Jul|28||2013|/kb/books/go/go_strategy/pages/img349.jpg
-rw-r--r--||1|konet||staff||826651|Jul|28||2013|/kb/books/go/go_strategy/pages/img350.jpg
-rw-r--r--||1|konet||staff||605881|Jul|28||2013|/kb/books/go/go_strategy/pages/img351.jpg
-rw-r--r--||1|konet||staff||695558|Jul|28||2013|/kb/books/go/go_strategy/pages/img352.jpg
-rw-r--r--||1|konet||staff||166542|Jul|28||2013|/kb/books/go/go_strategy/pages/img353.jpg
-rw-r--r--||1|konet||staff||147900|Jul|28||2013|/kb/books/go/go_strategy/pages/img354.jpg
-rw-r--r--||1|konet||staff||216814|Jul|28||2013|/kb/books/go/go_strategy/pages/img355.jpg
-rw-r--r--||1|konet||staff||224027|Jul|28||2013|/kb/books/go/go_strategy/pages/img356.jpg
-rw-r--r--||1|konet||staff||1053658|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img285.jpg
-rw-r--r--||1|konet||staff||336909|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img286.jpg
-rw-r--r--||1|konet||staff||354099|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img287.jpg
-rw-r--r--||1|konet||staff||409400|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img288.jpg
-rw-r--r--||1|konet||staff||417952|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img289.jpg
-rw-r--r--||1|konet||staff||690620|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img290.jpg
-rw-r--r--||1|konet||staff||845711|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img291.jpg
-rw-r--r--||1|konet||staff||1028081|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img292.jpg
-rw-r--r--||1|konet||staff||1126342|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img293.jpg
-rw-r--r--||1|konet||staff||1106874|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img294.jpg
-rw-r--r--||1|konet||staff||1054403|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img295.jpg
-rw-r--r--||1|konet||staff||1120631|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img296.jpg
-rw-r--r--||1|konet||staff||756489|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img297.jpg
-rw-r--r--||1|konet||staff||1084236|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img298.jpg
-rw-r--r--||1|konet||staff||1067948|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img299.jpg
-rw-r--r--||1|konet||staff||979594|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img300.jpg
-rw-r--r--||1|konet||staff||1045182|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img301.jpg
-rw-r--r--||1|konet||staff||901610|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img302.jpg
-rw-r--r--||1|konet||staff||918985|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img303.jpg
-rw-r--r--||1|konet||staff||862420|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img304.jpg
-rw-r--r--||1|konet||staff||886557|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img305.jpg
-rw-r--r--||1|konet||staff||787507|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img306.jpg
-rw-r--r--||1|konet||staff||911463|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img307.jpg
-rw-r--r--||1|konet||staff||965161|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img308.jpg
-rw-r--r--||1|konet||staff||973577|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img309.jpg
-rw-r--r--||1|konet||staff||888001|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img310.jpg
-rw-r--r--||1|konet||staff||786913|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img311.jpg
-rw-r--r--||1|konet||staff||963093|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img312.jpg
-rw-r--r--||1|konet||staff||1189822|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img313.jpg
-rw-r--r--||1|konet||staff||877732|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img314.jpg
-rw-r--r--||1|konet||staff||849270|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img315.jpg
-rw-r--r--||1|konet||staff||963161|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img316.jpg
-rw-r--r--||1|konet||staff||507750|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img317.jpg
-rw-r--r--||1|konet||staff||930132|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img318.jpg
-rw-r--r--||1|konet||staff||862631|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img319.jpg
-rw-r--r--||1|konet||staff||2584516|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img319_rot.jpg
-rw-r--r--||1|konet||staff||907770|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img320.jpg
-rw-r--r--||1|konet||staff||1074018|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img321.jpg
-rw-r--r--||1|konet||staff||985358|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img322.jpg
-rw-r--r--||1|konet||staff||955316|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img323.jpg
-rw-r--r--||1|konet||staff||1048619|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img324.jpg
-rw-r--r--||1|konet||staff||1013385|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img325.jpg
-rw-r--r--||1|konet||staff||1091971|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img326.jpg
-rw-r--r--||1|konet||staff||801231|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img327.jpg
-rw-r--r--||1|konet||staff||845582|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img328.jpg
-rw-r--r--||1|konet||staff||931676|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img329.jpg
-rw-r--r--||1|konet||staff||1068374|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img330.jpg
-rw-r--r--||1|konet||staff||836404|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img331.jpg
-rw-r--r--||1|konet||staff||1002956|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img332.jpg
-rw-r--r--||1|konet||staff||858923|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img333.jpg
-rw-r--r--||1|konet||staff||904910|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img334.jpg
-rw-r--r--||1|konet||staff||905806|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img335.jpg
-rw-r--r--||1|konet||staff||1032145|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img336.jpg
-rw-r--r--||1|konet||staff||927378|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img337.jpg
-rw-r--r--||1|konet||staff||1021816|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img338.jpg
-rw-r--r--||1|konet||staff||1007963|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img339.jpg
-rw-r--r--||1|konet||staff||1087169|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img340.jpg
-rw-r--r--||1|konet||staff||907719|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img341.jpg
-rw-r--r--||1|konet||staff||1017200|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img342.jpg
-rw-r--r--||1|konet||staff||1008372|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img343.jpg
-rw-r--r--||1|konet||staff||904314|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img344.jpg
-rw-r--r--||1|konet||staff||865407|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img345.jpg
-rw-r--r--||1|konet||staff||936444|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img346.jpg
-rw-r--r--||1|konet||staff||1098851|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img347.jpg
-rw-r--r--||1|konet||staff||1136515|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img348.jpg
-rw-r--r--||1|konet||staff||1181254|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img349.jpg
-rw-r--r--||1|konet||staff||826651|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img350.jpg
-rw-r--r--||1|konet||staff||605881|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img351.jpg
-rw-r--r--||1|konet||staff||695558|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img352.jpg
-rw-r--r--||1|konet||staff||166542|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img353.jpg
-rw-r--r--||1|konet||staff||147900|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img354.jpg
-rw-r--r--||1|konet||staff||216814|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img355.jpg
-rw-r--r--||1|konet||staff||224027|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img356.jpg
-rw-r--r--||1|konet||staff||313740|Jul|27||2013|/kb/books/go/go_tesuji/pages/img144.jpg
-rw-r--r--||1|konet||staff||534933|Jul|27||2013|/kb/books/go/go_tesuji/pages/img145.jpg
-rw-r--r--||1|konet||staff||637566|Jul|27||2013|/kb/books/go/go_tesuji/pages/img146.jpg
-rw-r--r--||1|konet||staff||883337|Jul|27||2013|/kb/books/go/go_tesuji/pages/img147.jpg
-rw-r--r--||1|konet||staff||910842|Jul|27||2013|/kb/books/go/go_tesuji/pages/img148.jpg
-rw-r--r--||1|konet||staff||547960|Jul|27||2013|/kb/books/go/go_tesuji/pages/img149.jpg
-rw-r--r--||1|konet||staff||511374|Jul|27||2013|/kb/books/go/go_tesuji/pages/img150.jpg
-rw-r--r--||1|konet||staff||309376|Jul|27||2013|/kb/books/go/go_tesuji/pages/img151.jpg
-rw-r--r--||1|konet||staff||712605|Jul|27||2013|/kb/books/go/go_tesuji/pages/img152.jpg
-rw-r--r--||1|konet||staff||610951|Jul|27||2013|/kb/books/go/go_tesuji/pages/img153.jpg
-rw-r--r--||1|konet||staff||579887|Apr|15||2013|/kb/books/go/go_tesuji/pages/img154.jpg
-rw-r--r--||1|konet||staff||205822|Apr|15||2013|/kb/books/go/go_tesuji/pages/img155.jpg
-rw-r--r--||1|konet||staff||506775|Apr|15||2013|/kb/books/go/go_tesuji/pages/img156.jpg
-rw-r--r--||1|konet||staff||554846|Apr|15||2013|/kb/books/go/go_tesuji/pages/img157.jpg
-rw-r--r--||1|konet||staff||267323|Apr|15||2013|/kb/books/go/go_tesuji/pages/img158.jpg
-rw-r--r--||1|konet||staff||328954|Apr|15||2013|/kb/books/go/go_tesuji/pages/img159.jpg
-rw-r--r--||1|konet||staff||378242|Apr|15||2013|/kb/books/go/go_tesuji/pages/img160.jpg
-rw-r--r--||1|konet||staff||726846|Jul|27||2013|/kb/books/go/go_tesuji/pages/img161.jpg
-rw-r--r--||1|konet||staff||725448|Jul|27||2013|/kb/books/go/go_tesuji/pages/img162.jpg
-rw-r--r--||1|konet||staff||687696|Jul|27||2013|/kb/books/go/go_tesuji/pages/img163.jpg
-rw-r--r--||1|konet||staff||717765|Jul|27||2013|/kb/books/go/go_tesuji/pages/img164.jpg
-rw-r--r--||1|konet||staff||527036|Jul|27||2013|/kb/books/go/go_tesuji/pages/img165.jpg
-rw-r--r--||1|konet||staff||706619|Jul|27||2013|/kb/books/go/go_tesuji/pages/img166.jpg
-rw-r--r--||1|konet||staff||742105|Jul|27||2013|/kb/books/go/go_tesuji/pages/img167.jpg
-rw-r--r--||1|konet||staff||797265|Jul|27||2013|/kb/books/go/go_tesuji/pages/img168.jpg
-rw-r--r--||1|konet||staff||760087|Jul|27||2013|/kb/books/go/go_tesuji/pages/img169.jpg
-rw-r--r--||1|konet||staff||657636|Jul|27||2013|/kb/books/go/go_tesuji/pages/img170.jpg
-rw-r--r--||1|konet||staff||755147|Jul|28||2013|/kb/books/go/go_tesuji/pages/img171.jpg
-rw-r--r--||1|konet||staff||645677|Jul|28||2013|/kb/books/go/go_tesuji/pages/img172.jpg
-rw-r--r--||1|konet||staff||696265|Jul|28||2013|/kb/books/go/go_tesuji/pages/img173.jpg
-rw-r--r--||1|konet||staff||712791|Jul|28||2013|/kb/books/go/go_tesuji/pages/img174.jpg
-rw-r--r--||1|konet||staff||717123|Jul|28||2013|/kb/books/go/go_tesuji/pages/img175.jpg
-rw-r--r--||1|konet||staff||652155|Jul|28||2013|/kb/books/go/go_tesuji/pages/img176.jpg
-rw-r--r--||1|konet||staff||813062|Jul|28||2013|/kb/books/go/go_tesuji/pages/img177.jpg
-rw-r--r--||1|konet||staff||685220|Jul|28||2013|/kb/books/go/go_tesuji/pages/img178.jpg
-rw-r--r--||1|konet||staff||599655|Jul|28||2013|/kb/books/go/go_tesuji/pages/img179.jpg
-rw-r--r--||1|konet||staff||621916|Jul|28||2013|/kb/books/go/go_tesuji/pages/img180.jpg
-rw-r--r--||1|konet||staff||511956|Jul|28||2013|/kb/books/go/go_tesuji/pages/img181.jpg
-rw-r--r--||1|konet||staff||510349|Jul|28||2013|/kb/books/go/go_tesuji/pages/img182.jpg
-rw-r--r--||1|konet||staff||755147|Jul|28||2013|/kb/books/go/go_tesuji/pages/img171.jpg
-rw-r--r--||1|konet||staff||645677|Jul|28||2013|/kb/books/go/go_tesuji/pages/img172.jpg
-rw-r--r--||1|konet||staff||696265|Jul|28||2013|/kb/books/go/go_tesuji/pages/img173.jpg
-rw-r--r--||1|konet||staff||712791|Jul|28||2013|/kb/books/go/go_tesuji/pages/img174.jpg
-rw-r--r--||1|konet||staff||717123|Jul|28||2013|/kb/books/go/go_tesuji/pages/img175.jpg
-rw-r--r--||1|konet||staff||652155|Jul|28||2013|/kb/books/go/go_tesuji/pages/img176.jpg
-rw-r--r--||1|konet||staff||813062|Jul|28||2013|/kb/books/go/go_tesuji/pages/img177.jpg
-rw-r--r--||1|konet||staff||685220|Jul|28||2013|/kb/books/go/go_tesuji/pages/img178.jpg
-rw-r--r--||1|konet||staff||599655|Jul|28||2013|/kb/books/go/go_tesuji/pages/img179.jpg
-rw-r--r--||1|konet||staff||621916|Jul|28||2013|/kb/books/go/go_tesuji/pages/img180.jpg
-rw-r--r--||1|konet||staff||511956|Jul|28||2013|/kb/books/go/go_tesuji/pages/img181.jpg
-rw-r--r--||1|konet||staff||510349|Jul|28||2013|/kb/books/go/go_tesuji/pages/img182.jpg`;

//			pagelist_go_len=pagelist_go.length;
//			alert( "BUGS_830 load_pages pagelist_go_len="+pageslist_go_len+" pagelist_go="+pagelist_go );
//			window.pages=pages;
//			alert( "BUGS_840 load_pages pages_len="+pages_len+" window.pages1="+window.pages[1] );
			return( pagelist_go.split("\n") );
			}
		</script>






	<script id="script_load_pagelist_tail">
		function load_pagelist_tail() {
var pagelist_tail = `
tail/1.jpg
tail/2.jpg
tail/3.jpg
tail/4.jpg
tail/5.jpg
tail/6.jpg
tail/7.jpg
tail/8.jpg
tail/9.jpg
tail/10.jpg
tail/11.jpg
tail/12.jpg
tail/13.jpg
tail/14.jpg
tail/15.jpg
tail/16.jpg`;
			return( pagelist_tail.split("\n"));
			}
		</script>






	<script id="script_load_pages_bugs" >
		var pages = new Array();
		var window.pages = new Array();
		var pages_len = 0;
		var j=0;

		function load_pages_bugs() {
//			alert( "BUGS_850 load_pages_bugs" );
			alert( "BUGS_850 load_pages_bugs pages="+pages );
			var  pages = new Array();
			var pages_len=0;
			var j=0;


			pages[j++] = "-rw-r--r--||1|konet||staff||376756|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img357.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||306856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img358.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||199193|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img359.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||443996|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img360.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||629176|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img361.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||544038|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img362.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||941797|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img363.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||850031|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img364.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||876319|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img365.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||880519|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img366.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||896620|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img367.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||730786|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img368.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||801242|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img369.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||883588|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img370.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img371.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||784457|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img372.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||843127|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img373.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||906461|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img374.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||752928|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img375.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||791260|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img376.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||964508|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img377.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||828964|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img378.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||873941|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img379.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||915688|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img380.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||761790|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img381.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845370|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img382.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||856490|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img383.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||671068|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img384.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||743307|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img385.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||792125|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img386.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||851995|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img387.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||817621|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img388.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||899107|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img389.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||945623|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img390.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||956754|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img391.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||995889|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img392.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||924368|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img393.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||824827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img394.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862378|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img395.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||883043|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img396.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||834414|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img397.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||772918|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img398.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||699001|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img399.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862577|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img400.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||859470|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img401.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||898820|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img402.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||911795|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img403.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||682827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img404.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||748989|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img405.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756089|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img406.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||947742|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img407.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||876865|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img408.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||939929|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img409.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||857484|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img410.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||856924|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img411.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||869657|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img412.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||890809|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img413.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||881101|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img414.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||860242|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img415.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||867133|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img416.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||831861|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img417.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||825595|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img418.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||679496|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img419.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||810751|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img420.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||790732|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img421.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845998|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img422.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||745726|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img423.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||794258|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img424.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_attack_defense/pages/index.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||376756|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img357.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||306856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img358.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||199193|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img359.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||443996|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img360.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||629176|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img361.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||544038|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img362.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||941797|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img363.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||850031|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img364.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||876319|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img365.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||880519|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img366.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||896620|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img367.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||730786|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img368.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||801242|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img369.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||883588|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img370.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img371.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||784457|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img372.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||843127|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img373.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||906461|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img374.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||752928|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img375.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||791260|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img376.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||964508|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img377.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||828964|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img378.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||873941|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img379.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||915688|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img380.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||761790|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img381.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845370|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img382.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||856490|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img383.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||671068|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img384.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||743307|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img385.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||792125|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img386.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||851995|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img387.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||817621|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img388.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||899107|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img389.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||945623|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img390.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||956754|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img391.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||995889|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img392.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||924368|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img393.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||824827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img394.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862378|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img395.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||883043|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img396.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||834414|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img397.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||772918|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img398.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||699001|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img399.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862577|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img400.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||859470|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img401.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||898820|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img402.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||911795|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img403.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||682827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img404.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||748989|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img405.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756089|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img406.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||947742|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img407.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||876865|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img408.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||939929|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img409.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||857484|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img410.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||856924|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img411.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||869657|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img412.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||890809|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img413.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||881101|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img414.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||860242|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img415.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||867133|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img416.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||831861|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img417.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||825595|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img418.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||679496|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img419.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||810751|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img420.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||790732|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img421.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845998|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img422.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||745726|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img423.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||794258|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img424.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_attack_defense/pages/tn/tn_index.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1006441|Jul|26||2013|/kb/books/go/go_basics/pages/img023.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1047128|Jul|26||2013|/kb/books/go/go_basics/pages/img024.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053967|Jul|26||2013|/kb/books/go/go_basics/pages/img025.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1014446|Jul|26||2013|/kb/books/go/go_basics/pages/img026.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1026767|Jul|26||2013|/kb/books/go/go_basics/pages/img027.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||791176|Jul|26||2013|/kb/books/go/go_basics/pages/img028.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||813175|Jul|26||2013|/kb/books/go/go_basics/pages/img029.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||924714|Jul|26||2013|/kb/books/go/go_basics/pages/img030.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||905403|Jul|26||2013|/kb/books/go/go_basics/pages/img031.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||888119|Jul|26||2013|/kb/books/go/go_basics/pages/img032.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1055638|Jul|26||2013|/kb/books/go/go_basics/pages/img033.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||915998|Jul|26||2013|/kb/books/go/go_basics/pages/img034.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||837152|Jul|26||2013|/kb/books/go/go_basics/pages/img035.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||837128|Jul|26||2013|/kb/books/go/go_basics/pages/img036.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1089939|Jul|26||2013|/kb/books/go/go_basics/pages/img037.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||784389|Jul|26||2013|/kb/books/go/go_basics/pages/img038.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||889289|Jul|26||2013|/kb/books/go/go_basics/pages/img039.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||969966|Jul|26||2013|/kb/books/go/go_basics/pages/img040.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||919829|Jul|26||2013|/kb/books/go/go_basics/pages/img041.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1002672|Jul|26||2013|/kb/books/go/go_basics/pages/img042.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||717797|Jul|26||2013|/kb/books/go/go_basics/pages/img043.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||768692|Jul|26||2013|/kb/books/go/go_basics/pages/img044.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||952072|Jul|26||2013|/kb/books/go/go_basics/pages/img045.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||696825|Jul|26||2013|/kb/books/go/go_basics/pages/img046.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||332310|Jul|26||2013|/kb/books/go/go_basics/pages/img047.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||445300|Jul|26||2013|/kb/books/go/go_basics/pages/img048.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_basics/pages/img049.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1006441|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img023.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1047128|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img024.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053967|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img025.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1014446|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img026.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1026767|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img027.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||791176|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img028.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||813175|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img029.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||924714|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img030.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||905403|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img031.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||888119|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img032.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1055638|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img033.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||915998|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img034.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||837152|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img035.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||837128|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img036.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1089939|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img037.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||784389|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img038.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||889289|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img039.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||969966|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img040.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||919829|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img041.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1002672|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img042.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||717797|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img043.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||768692|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img044.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||952072|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img045.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||696825|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img046.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||332310|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img047.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||445300|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img048.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img049.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||358516|Jul|26||2013|/kb/books/go/go_equipment/pages/img050.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||516648|Jul|26||2013|/kb/books/go/go_equipment/pages/img051.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||791156|Jul|26||2013|/kb/books/go/go_equipment/pages/img052.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||486725|Jul|26||2013|/kb/books/go/go_equipment/pages/img053.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||948089|Jul|26||2013|/kb/books/go/go_equipment/pages/img054.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1033406|Jul|26||2013|/kb/books/go/go_equipment/pages/img055.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||687569|Jul|26||2013|/kb/books/go/go_equipment/pages/img056.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1065658|Jul|26||2013|/kb/books/go/go_equipment/pages/img057.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||857686|Jul|26||2013|/kb/books/go/go_equipment/pages/img058.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||603590|Apr|14||2013|/kb/books/go/go_equipment/pages/img061.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1374190|Apr|14||2013|/kb/books/go/go_equipment/pages/img062.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||976954|Apr|14||2013|/kb/books/go/go_equipment/pages/img063.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||592214|Apr|14||2013|/kb/books/go/go_equipment/pages/img064.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||390273|Apr|14||2013|/kb/books/go/go_equipment/pages/img065.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1340886|Apr|14||2013|/kb/books/go/go_equipment/pages/img066.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||807810|Apr|14||2013|/kb/books/go/go_equipment/pages/img067.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||537637|Apr|14||2013|/kb/books/go/go_equipment/pages/img068.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||358516|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img050.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||516648|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img051.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||791156|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img052.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||486725|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img053.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||948089|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img054.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1033406|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img055.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||687569|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img056.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1065658|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img057.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||857686|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img058.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||603590|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img061.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1374190|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img062.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||976954|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img063.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||592214|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img064.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||390273|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img065.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1340886|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img066.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||807810|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img067.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||537637|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img068.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||964295|Jul|26||2013|/kb/books/go/go_joseki/pages/img070.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||951817|Jul|26||2013|/kb/books/go/go_joseki/pages/img071.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||854354|Jul|26||2013|/kb/books/go/go_joseki/pages/img072.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||904237|Jul|26||2013|/kb/books/go/go_joseki/pages/img073.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||808049|Jul|26||2013|/kb/books/go/go_joseki/pages/img074.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||899297|Jul|26||2013|/kb/books/go/go_joseki/pages/img075.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||907623|Jul|26||2013|/kb/books/go/go_joseki/pages/img076.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||759807|Jul|26||2013|/kb/books/go/go_joseki/pages/img077.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1058618|Jul|26||2013|/kb/books/go/go_joseki/pages/img078.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1097406|Jul|26||2013|/kb/books/go/go_joseki/pages/img079.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1071509|Jul|26||2013|/kb/books/go/go_joseki/pages/img080.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1222293|Jul|26||2013|/kb/books/go/go_joseki/pages/img081.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||809594|Jul|26||2013|/kb/books/go/go_joseki/pages/img082.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||976407|Jul|26||2013|/kb/books/go/go_joseki/pages/img083.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1107226|Jul|26||2013|/kb/books/go/go_joseki/pages/img084.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1026899|Jul|26||2013|/kb/books/go/go_joseki/pages/img085.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1024022|Jul|26||2013|/kb/books/go/go_joseki/pages/img086.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1029782|Jul|26||2013|/kb/books/go/go_joseki/pages/img087.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1051070|Jul|26||2013|/kb/books/go/go_joseki/pages/img088.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||956297|Jul|26||2013|/kb/books/go/go_joseki/pages/img089.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1037967|Jul|26||2013|/kb/books/go/go_joseki/pages/img090.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1019427|Jul|26||2013|/kb/books/go/go_joseki/pages/img091.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1106972|Jul|26||2013|/kb/books/go/go_joseki/pages/img092.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1110897|Jul|26||2013|/kb/books/go/go_joseki/pages/img093.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1073256|Jul|26||2013|/kb/books/go/go_joseki/pages/img094.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||867457|Jul|27||2013|/kb/books/go/go_joseki/pages/img095.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1093950|Jul|27||2013|/kb/books/go/go_joseki/pages/img096.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1215177|Jul|27||2013|/kb/books/go/go_joseki/pages/img097.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1126591|Jul|27||2013|/kb/books/go/go_joseki/pages/img098.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1146058|Jul|27||2013|/kb/books/go/go_joseki/pages/img099.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||998658|Jul|27||2013|/kb/books/go/go_joseki/pages/img100.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||950064|Jul|27||2013|/kb/books/go/go_joseki/pages/img101.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1113709|Jul|27||2013|/kb/books/go/go_joseki/pages/img102.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1073193|Jul|27||2013|/kb/books/go/go_joseki/pages/img103.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||965100|Jul|27||2013|/kb/books/go/go_joseki/pages/img104.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||967947|Jul|27||2013|/kb/books/go/go_joseki/pages/img105.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053408|Jul|27||2013|/kb/books/go/go_joseki/pages/img106.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1108979|Jul|27||2013|/kb/books/go/go_joseki/pages/img107.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||993497|Jul|27||2013|/kb/books/go/go_joseki/pages/img108.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||970885|Jul|27||2013|/kb/books/go/go_joseki/pages/img109.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053854|Jul|27||2013|/kb/books/go/go_joseki/pages/img110.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||984744|Jul|27||2013|/kb/books/go/go_joseki/pages/img111.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053819|Jul|27||2013|/kb/books/go/go_joseki/pages/img112.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1187421|Jul|27||2013|/kb/books/go/go_joseki/pages/img113.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||964581|Jul|27||2013|/kb/books/go/go_joseki/pages/img114.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||978287|Jul|27||2013|/kb/books/go/go_joseki/pages/img115.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||917482|Jul|27||2013|/kb/books/go/go_joseki/pages/img116.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||991987|Jul|27||2013|/kb/books/go/go_joseki/pages/img117.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||898921|Jul|27||2013|/kb/books/go/go_joseki/pages/img118.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1012220|Jul|27||2013|/kb/books/go/go_joseki/pages/img119.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1072925|Jul|27||2013|/kb/books/go/go_joseki/pages/img120.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||872746|Jul|27||2013|/kb/books/go/go_joseki/pages/img121.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||866500|Jul|27||2013|/kb/books/go/go_joseki/pages/img122.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1009773|Jul|27||2013|/kb/books/go/go_joseki/pages/img123.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||968391|Jul|27||2013|/kb/books/go/go_joseki/pages/img124.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||703303|Jul|27||2013|/kb/books/go/go_joseki/pages/img125.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||950503|Jul|27||2013|/kb/books/go/go_joseki/pages/img126.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||998706|Jul|27||2013|/kb/books/go/go_joseki/pages/img127.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||873116|Jul|27||2013|/kb/books/go/go_joseki/pages/img128.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||821432|Jul|27||2013|/kb/books/go/go_joseki/pages/img129.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||825088|Jul|27||2013|/kb/books/go/go_joseki/pages/img130.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||896338|Jul|27||2013|/kb/books/go/go_joseki/pages/img131.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||963585|Jul|27||2013|/kb/books/go/go_joseki/pages/img132.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||983883|Jul|27||2013|/kb/books/go/go_joseki/pages/img133.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||873892|Jul|27||2013|/kb/books/go/go_joseki/pages/img134.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||769739|Jul|27||2013|/kb/books/go/go_joseki/pages/img135.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||713637|Jul|27||2013|/kb/books/go/go_joseki/pages/img136.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||584476|Jul|27||2013|/kb/books/go/go_joseki/pages/img137.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||909033|Jul|27||2013|/kb/books/go/go_joseki/pages/img138.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1022877|Jul|27||2013|/kb/books/go/go_joseki/pages/img139.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||744019|Jul|27||2013|/kb/books/go/go_joseki/pages/img140.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||166301|Jul|27||2013|/kb/books/go/go_joseki/pages/img141.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||404802|Jul|27||2013|/kb/books/go/go_joseki/pages/img142.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||536562|Jul|27||2013|/kb/books/go/go_joseki/pages/img143.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||964295|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img070.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||951817|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img071.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||854354|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img072.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||904237|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img073.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||808049|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img074.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||899297|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img075.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||907623|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img076.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||759807|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img077.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1058618|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img078.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1097406|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img079.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1071509|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img080.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1222293|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img081.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||809594|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img082.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||976407|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img083.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1107226|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img084.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1026899|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img085.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1024022|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img086.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1029782|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img087.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1051070|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img088.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||956297|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img089.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1037967|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img090.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1019427|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img091.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1106972|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img092.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1110897|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img093.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1073256|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img094.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||867457|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img095.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1093950|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img096.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1215177|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img097.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1126591|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img098.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1146058|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img099.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||998658|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img100.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||950064|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img101.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1113709|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img102.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1073193|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img103.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||965100|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img104.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||967947|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img105.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053408|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img106.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1108979|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img107.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||993497|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img108.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||970885|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img109.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053854|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img110.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||984744|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img111.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053819|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img112.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1187421|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img113.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||964581|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img114.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||978287|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img115.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||917482|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img116.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||991987|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img117.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||898921|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img118.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1012220|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img119.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1072925|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img120.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||872746|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img121.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||866500|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img122.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1009773|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img123.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||968391|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img124.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||703303|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img125.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||950503|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img126.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||998706|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img127.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||873116|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img128.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||821432|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img129.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||825088|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img130.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||896338|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img131.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||963585|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img132.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||983883|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img133.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||873892|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img134.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||769739|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img135.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||713637|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img136.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||584476|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img137.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||909033|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img138.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1022877|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img139.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||744019|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img140.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||166301|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img141.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||404802|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img142.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||536562|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img143.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||437291|Jul|28||2013|/kb/books/go/go_middlegame/pages/img183.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||525694|Jul|28||2013|/kb/books/go/go_middlegame/pages/img184.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||653806|Jul|28||2013|/kb/books/go/go_middlegame/pages/img185.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||841874|Jul|28||2013|/kb/books/go/go_middlegame/pages/img186.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||783850|Jul|28||2013|/kb/books/go/go_middlegame/pages/img187.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||759335|Jul|28||2013|/kb/books/go/go_middlegame/pages/img188.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||777431|Jul|28||2013|/kb/books/go/go_middlegame/pages/img189.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||621857|Jul|28||2013|/kb/books/go/go_middlegame/pages/img190.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||621065|Jul|28||2013|/kb/books/go/go_middlegame/pages/img213.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||660424|Jul|28||2013|/kb/books/go/go_middlegame/pages/img214.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||640766|Jul|28||2013|/kb/books/go/go_middlegame/pages/img215.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||701699|Jul|28||2013|/kb/books/go/go_middlegame/pages/img216.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||684817|Jul|28||2013|/kb/books/go/go_middlegame/pages/img217.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||693628|Jul|28||2013|/kb/books/go/go_middlegame/pages/img218.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||652074|Jul|28||2013|/kb/books/go/go_middlegame/pages/img219.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||665520|Jul|28||2013|/kb/books/go/go_middlegame/pages/img220.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||664979|Jul|28||2013|/kb/books/go/go_middlegame/pages/img221.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||420880|Jul|28||2013|/kb/books/go/go_middlegame/pages/img222.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||653179|Jul|28||2013|/kb/books/go/go_middlegame/pages/img223.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||631018|Jul|28||2013|/kb/books/go/go_middlegame/pages/img224.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||614888|Jul|28||2013|/kb/books/go/go_middlegame/pages/img225.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||635578|Jul|28||2013|/kb/books/go/go_middlegame/pages/img226.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||664987|Jul|28||2013|/kb/books/go/go_middlegame/pages/img227.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||494882|Jul|28||2013|/kb/books/go/go_middlegame/pages/img228.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||755517|Jul|28||2013|/kb/books/go/go_middlegame/pages/img229.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||746024|Jul|28||2013|/kb/books/go/go_middlegame/pages/img230.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||740563|Jul|28||2013|/kb/books/go/go_middlegame/pages/img231.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||720673|Jul|28||2013|/kb/books/go/go_middlegame/pages/img232.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||641901|Jul|28||2013|/kb/books/go/go_middlegame/pages/img233.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||681172|Jul|28||2013|/kb/books/go/go_middlegame/pages/img234.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||681621|Jul|28||2013|/kb/books/go/go_middlegame/pages/img235.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||699626|Jul|28||2013|/kb/books/go/go_middlegame/pages/img236.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||692405|Jul|28||2013|/kb/books/go/go_middlegame/pages/img237.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||675217|Jul|28||2013|/kb/books/go/go_middlegame/pages/img238.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||637166|Jul|28||2013|/kb/books/go/go_middlegame/pages/img239.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||638038|Jul|28||2013|/kb/books/go/go_middlegame/pages/img240.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||746258|Jul|28||2013|/kb/books/go/go_middlegame/pages/img241.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||697934|Jul|28||2013|/kb/books/go/go_middlegame/pages/img242.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||680670|Jul|28||2013|/kb/books/go/go_middlegame/pages/img243.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||666127|Jul|28||2013|/kb/books/go/go_middlegame/pages/img244.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||703644|Jul|28||2013|/kb/books/go/go_middlegame/pages/img245.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||674102|Jul|28||2013|/kb/books/go/go_middlegame/pages/img246.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||684526|Jul|28||2013|/kb/books/go/go_middlegame/pages/img247.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||648526|Jul|28||2013|/kb/books/go/go_middlegame/pages/img248.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||728614|Jul|28||2013|/kb/books/go/go_middlegame/pages/img249.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||663415|Jul|28||2013|/kb/books/go/go_middlegame/pages/img250.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||694657|Jul|28||2013|/kb/books/go/go_middlegame/pages/img251.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||673729|Jul|28||2013|/kb/books/go/go_middlegame/pages/img252.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||663575|Jul|28||2013|/kb/books/go/go_middlegame/pages/img253.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||464991|Jul|28||2013|/kb/books/go/go_middlegame/pages/img254.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756849|Jul|28||2013|/kb/books/go/go_middlegame/pages/img255.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||761547|Jul|28||2013|/kb/books/go/go_middlegame/pages/img256.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||801070|Jul|28||2013|/kb/books/go/go_middlegame/pages/img257.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||739075|Jul|28||2013|/kb/books/go/go_middlegame/pages/img258.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||787189|Jul|28||2013|/kb/books/go/go_middlegame/pages/img259.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||729433|Jul|28||2013|/kb/books/go/go_middlegame/pages/img260.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||793385|Jul|28||2013|/kb/books/go/go_middlegame/pages/img261.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756141|Jul|28||2013|/kb/books/go/go_middlegame/pages/img262.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||779572|Jul|28||2013|/kb/books/go/go_middlegame/pages/img263.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||759079|Jul|28||2013|/kb/books/go/go_middlegame/pages/img264.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||738282|Jul|28||2013|/kb/books/go/go_middlegame/pages/img265.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||814029|Jul|28||2013|/kb/books/go/go_middlegame/pages/img266.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||833386|Jul|28||2013|/kb/books/go/go_middlegame/pages/img267.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||188285|Jul|28||2013|/kb/books/go/go_middlegame/pages/img268.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||369506|Jul|28||2013|/kb/books/go/go_middlegame/pages/img269.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||384764|Jul|28||2013|/kb/books/go/go_middlegame/pages/img270.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||547382|Jul|28||2013|/kb/books/go/go_middlegame/pages/img271.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||647343|Jul|28||2013|/kb/books/go/go_middlegame/pages/img272.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1070171|Jul|28||2013|/kb/books/go/go_middlegame/pages/img273.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1188408|Jul|28||2013|/kb/books/go/go_middlegame/pages/img274.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||315266|Jul|28||2013|/kb/books/go/go_middlegame/pages/img275.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||299360|Jul|28||2013|/kb/books/go/go_middlegame/pages/img276.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||707195|Jul|28||2013|/kb/books/go/go_middlegame/pages/img277.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||872457|Jul|28||2013|/kb/books/go/go_middlegame/pages/img278.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||959051|Jul|28||2013|/kb/books/go/go_middlegame/pages/img279.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||920879|Jul|28||2013|/kb/books/go/go_middlegame/pages/img280.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||926630|Jul|28||2013|/kb/books/go/go_middlegame/pages/img281.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1034689|Jul|28||2013|/kb/books/go/go_middlegame/pages/img282.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||341434|Jul|25||2013|/kb/books/go/go_middlegame/pages/img283.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1211055|Jul|25||2013|/kb/books/go/go_middlegame/pages/img284.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||437291|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img183.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||525694|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img184.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||653806|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img185.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||841874|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img186.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||783850|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img187.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||759335|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img188.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||777431|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img189.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||621857|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img190.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||621065|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img213.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||660424|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img214.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||640766|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img215.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||701699|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img216.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||684817|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img217.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||693628|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img218.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||652074|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img219.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||665520|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img220.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||664979|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img221.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||420880|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img222.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||653179|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img223.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||631018|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img224.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||614888|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img225.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||635578|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img226.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||664987|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img227.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||494882|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img228.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||755517|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img229.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||746024|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img230.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||740563|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img231.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||720673|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img232.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||641901|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img233.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||681172|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img234.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||681621|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img235.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||699626|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img236.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||692405|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img237.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||675217|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img238.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||637166|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img239.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||638038|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img240.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||746258|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img241.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||697934|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img242.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||680670|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img243.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||666127|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img244.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||703644|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img245.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||674102|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img246.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||684526|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img247.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||648526|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img248.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||728614|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img249.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||663415|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img250.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||694657|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img251.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||673729|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img252.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||663575|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img253.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||464991|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img254.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756849|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img255.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||761547|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img256.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||801070|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img257.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||739075|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img258.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||787189|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img259.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||729433|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img260.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||793385|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img261.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756141|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img262.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||779572|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img263.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||759079|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img264.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||738282|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img265.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||814029|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img266.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||833386|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img267.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||188285|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img268.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||369506|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img269.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||384764|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img270.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||547382|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img271.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||647343|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img272.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1070171|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img273.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1188408|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img274.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||315266|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img275.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||299360|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img276.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||707195|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img277.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||872457|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img278.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||959051|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img279.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||920879|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img280.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||926630|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img281.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1034689|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img282.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||341434|Jul|25||2013|/kb/books/go/go_middlegame/pages/tn/tn_img283.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1211055|Jul|25||2013|/kb/books/go/go_middlegame/pages/tn/tn_img284.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053658|Jul|25||2013|/kb/books/go/go_strategy/pages/img285.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||336909|Jul|25||2013|/kb/books/go/go_strategy/pages/img286.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||354099|Jul|25||2013|/kb/books/go/go_strategy/pages/img287.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||409400|Jul|25||2013|/kb/books/go/go_strategy/pages/img288.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||417952|Jul|25||2013|/kb/books/go/go_strategy/pages/img289.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||690620|Jul|25||2013|/kb/books/go/go_strategy/pages/img290.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845711|Jul|25||2013|/kb/books/go/go_strategy/pages/img291.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1028081|Jul|25||2013|/kb/books/go/go_strategy/pages/img292.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1126342|Jul|25||2013|/kb/books/go/go_strategy/pages/img293.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1106874|Jul|25||2013|/kb/books/go/go_strategy/pages/img294.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1054403|Jul|25||2013|/kb/books/go/go_strategy/pages/img295.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1120631|Jul|25||2013|/kb/books/go/go_strategy/pages/img296.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756489|Jul|25||2013|/kb/books/go/go_strategy/pages/img297.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1084236|Jul|25||2013|/kb/books/go/go_strategy/pages/img298.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1067948|Jul|25||2013|/kb/books/go/go_strategy/pages/img299.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||979594|Jul|25||2013|/kb/books/go/go_strategy/pages/img300.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1045182|Jul|25||2013|/kb/books/go/go_strategy/pages/img301.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||901610|Jul|25||2013|/kb/books/go/go_strategy/pages/img302.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||918985|Jul|25||2013|/kb/books/go/go_strategy/pages/img303.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862420|Jul|25||2013|/kb/books/go/go_strategy/pages/img304.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||886557|Jul|25||2013|/kb/books/go/go_strategy/pages/img305.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||787507|Jul|25||2013|/kb/books/go/go_strategy/pages/img306.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||911463|Jul|25||2013|/kb/books/go/go_strategy/pages/img307.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||965161|Jul|25||2013|/kb/books/go/go_strategy/pages/img308.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||973577|Jul|25||2013|/kb/books/go/go_strategy/pages/img309.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||888001|Jul|25||2013|/kb/books/go/go_strategy/pages/img310.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||786913|Jul|25||2013|/kb/books/go/go_strategy/pages/img311.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||963093|Jul|25||2013|/kb/books/go/go_strategy/pages/img312.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1189822|Jul|25||2013|/kb/books/go/go_strategy/pages/img313.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||877732|Jul|25||2013|/kb/books/go/go_strategy/pages/img314.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||849270|Jul|25||2013|/kb/books/go/go_strategy/pages/img315.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||963161|Jul|25||2013|/kb/books/go/go_strategy/pages/img316.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||507750|Jul|25||2013|/kb/books/go/go_strategy/pages/img317.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||930132|Jul|26||2013|/kb/books/go/go_strategy/pages/img318.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862631|Jul|26||2013|/kb/books/go/go_strategy/pages/img319.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||2584516|Jul|26||2013|/kb/books/go/go_strategy/pages/img319_rot.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||907770|Jul|26||2013|/kb/books/go/go_strategy/pages/img320.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1074018|Jul|26||2013|/kb/books/go/go_strategy/pages/img321.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||985358|Jul|26||2013|/kb/books/go/go_strategy/pages/img322.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||955316|Jul|26||2013|/kb/books/go/go_strategy/pages/img323.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1048619|Jul|26||2013|/kb/books/go/go_strategy/pages/img324.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1013385|Jul|26||2013|/kb/books/go/go_strategy/pages/img325.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1091971|Jul|26||2013|/kb/books/go/go_strategy/pages/img326.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||801231|Jul|26||2013|/kb/books/go/go_strategy/pages/img327.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845582|Jul|26||2013|/kb/books/go/go_strategy/pages/img328.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||931676|Jul|26||2013|/kb/books/go/go_strategy/pages/img329.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1068374|Jul|26||2013|/kb/books/go/go_strategy/pages/img330.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||836404|Jul|26||2013|/kb/books/go/go_strategy/pages/img331.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1002956|Jul|26||2013|/kb/books/go/go_strategy/pages/img332.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||858923|Jul|26||2013|/kb/books/go/go_strategy/pages/img333.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||904910|Jul|26||2013|/kb/books/go/go_strategy/pages/img334.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||905806|Jul|28||2013|/kb/books/go/go_strategy/pages/img335.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1032145|Jul|28||2013|/kb/books/go/go_strategy/pages/img336.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||927378|Jul|28||2013|/kb/books/go/go_strategy/pages/img337.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1021816|Jul|28||2013|/kb/books/go/go_strategy/pages/img338.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1007963|Jul|28||2013|/kb/books/go/go_strategy/pages/img339.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1087169|Jul|28||2013|/kb/books/go/go_strategy/pages/img340.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||907719|Jul|28||2013|/kb/books/go/go_strategy/pages/img341.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1017200|Jul|28||2013|/kb/books/go/go_strategy/pages/img342.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1008372|Jul|28||2013|/kb/books/go/go_strategy/pages/img343.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||904314|Jul|28||2013|/kb/books/go/go_strategy/pages/img344.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||865407|Jul|28||2013|/kb/books/go/go_strategy/pages/img345.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||936444|Jul|28||2013|/kb/books/go/go_strategy/pages/img346.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1098851|Jul|28||2013|/kb/books/go/go_strategy/pages/img347.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1136515|Jul|28||2013|/kb/books/go/go_strategy/pages/img348.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1181254|Jul|28||2013|/kb/books/go/go_strategy/pages/img349.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||826651|Jul|28||2013|/kb/books/go/go_strategy/pages/img350.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||605881|Jul|28||2013|/kb/books/go/go_strategy/pages/img351.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||695558|Jul|28||2013|/kb/books/go/go_strategy/pages/img352.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||166542|Jul|28||2013|/kb/books/go/go_strategy/pages/img353.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||147900|Jul|28||2013|/kb/books/go/go_strategy/pages/img354.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||216814|Jul|28||2013|/kb/books/go/go_strategy/pages/img355.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||224027|Jul|28||2013|/kb/books/go/go_strategy/pages/img356.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1053658|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img285.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||336909|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img286.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||354099|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img287.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||409400|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img288.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||417952|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img289.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||690620|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img290.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845711|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img291.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1028081|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img292.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1126342|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img293.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1106874|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img294.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1054403|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img295.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1120631|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img296.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||756489|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img297.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1084236|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img298.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1067948|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img299.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||979594|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img300.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1045182|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img301.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||901610|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img302.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||918985|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img303.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862420|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img304.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||886557|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img305.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||787507|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img306.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||911463|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img307.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||965161|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img308.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||973577|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img309.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||888001|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img310.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||786913|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img311.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||963093|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img312.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1189822|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img313.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||877732|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img314.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||849270|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img315.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||963161|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img316.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||507750|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img317.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||930132|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img318.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||862631|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img319.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||2584516|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img319_rot.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||907770|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img320.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1074018|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img321.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||985358|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img322.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||955316|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img323.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1048619|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img324.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1013385|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img325.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1091971|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img326.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||801231|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img327.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||845582|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img328.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||931676|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img329.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1068374|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img330.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||836404|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img331.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1002956|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img332.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||858923|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img333.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||904910|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img334.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||905806|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img335.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1032145|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img336.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||927378|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img337.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1021816|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img338.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1007963|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img339.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1087169|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img340.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||907719|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img341.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1017200|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img342.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1008372|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img343.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||904314|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img344.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||865407|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img345.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||936444|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img346.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1098851|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img347.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1136515|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img348.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||1181254|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img349.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||826651|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img350.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||605881|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img351.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||695558|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img352.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||166542|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img353.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||147900|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img354.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||216814|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img355.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||224027|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img356.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||313740|Jul|27||2013|/kb/books/go/go_tesuji/pages/img144.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||534933|Jul|27||2013|/kb/books/go/go_tesuji/pages/img145.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||637566|Jul|27||2013|/kb/books/go/go_tesuji/pages/img146.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||883337|Jul|27||2013|/kb/books/go/go_tesuji/pages/img147.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||910842|Jul|27||2013|/kb/books/go/go_tesuji/pages/img148.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||547960|Jul|27||2013|/kb/books/go/go_tesuji/pages/img149.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||511374|Jul|27||2013|/kb/books/go/go_tesuji/pages/img150.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||309376|Jul|27||2013|/kb/books/go/go_tesuji/pages/img151.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||712605|Jul|27||2013|/kb/books/go/go_tesuji/pages/img152.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||610951|Jul|27||2013|/kb/books/go/go_tesuji/pages/img153.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||579887|Apr|15||2013|/kb/books/go/go_tesuji/pages/img154.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||205822|Apr|15||2013|/kb/books/go/go_tesuji/pages/img155.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||506775|Apr|15||2013|/kb/books/go/go_tesuji/pages/img156.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||554846|Apr|15||2013|/kb/books/go/go_tesuji/pages/img157.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||267323|Apr|15||2013|/kb/books/go/go_tesuji/pages/img158.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||328954|Apr|15||2013|/kb/books/go/go_tesuji/pages/img159.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||378242|Apr|15||2013|/kb/books/go/go_tesuji/pages/img160.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||726846|Jul|27||2013|/kb/books/go/go_tesuji/pages/img161.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||725448|Jul|27||2013|/kb/books/go/go_tesuji/pages/img162.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||687696|Jul|27||2013|/kb/books/go/go_tesuji/pages/img163.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||717765|Jul|27||2013|/kb/books/go/go_tesuji/pages/img164.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||527036|Jul|27||2013|/kb/books/go/go_tesuji/pages/img165.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||706619|Jul|27||2013|/kb/books/go/go_tesuji/pages/img166.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||742105|Jul|27||2013|/kb/books/go/go_tesuji/pages/img167.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||797265|Jul|27||2013|/kb/books/go/go_tesuji/pages/img168.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||760087|Jul|27||2013|/kb/books/go/go_tesuji/pages/img169.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||657636|Jul|27||2013|/kb/books/go/go_tesuji/pages/img170.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||755147|Jul|28||2013|/kb/books/go/go_tesuji/pages/img171.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||645677|Jul|28||2013|/kb/books/go/go_tesuji/pages/img172.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||696265|Jul|28||2013|/kb/books/go/go_tesuji/pages/img173.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||712791|Jul|28||2013|/kb/books/go/go_tesuji/pages/img174.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||717123|Jul|28||2013|/kb/books/go/go_tesuji/pages/img175.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||652155|Jul|28||2013|/kb/books/go/go_tesuji/pages/img176.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||813062|Jul|28||2013|/kb/books/go/go_tesuji/pages/img177.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||685220|Jul|28||2013|/kb/books/go/go_tesuji/pages/img178.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||599655|Jul|28||2013|/kb/books/go/go_tesuji/pages/img179.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||621916|Jul|28||2013|/kb/books/go/go_tesuji/pages/img180.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||511956|Jul|28||2013|/kb/books/go/go_tesuji/pages/img181.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||510349|Jul|28||2013|/kb/books/go/go_tesuji/pages/img182.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||313740|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img144.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||534933|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img145.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||637566|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img146.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||883337|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img147.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||910842|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img148.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||547960|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img149.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||511374|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img150.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||309376|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img151.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||712605|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img152.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||610951|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img153.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||579887|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img154.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||205822|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img155.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||506775|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img156.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||554846|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img157.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||267323|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img158.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||328954|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img159.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||378242|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img160.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||726846|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img161.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||725448|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img162.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||687696|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img163.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||717765|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img164.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||527036|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img165.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||706619|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img166.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||742105|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img167.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||797265|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img168.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||760087|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img169.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||657636|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img170.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||755147|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img171.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||645677|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img172.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||696265|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img173.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||712791|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img174.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||717123|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img175.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||652155|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img176.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||813062|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img177.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||685220|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img178.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||599655|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img179.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||621916|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img180.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||511956|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img181.jpg";
			pages[j++] = "-rw-r--r--||1|konet||staff||510349|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img182.jpg";

			pages_len = pages.length;
			alert( "BUGS_1611 lslat_kb_books_go.js pages="+pages+" pages_len="+pages_len );
//			alert( "BUGS_1612 lslat_kb_books_go.js window.pages="+window.pages );
			return( pages );
			}
			</script>

	<script id="script_thumbnails">
		function load_thumbnails(pages) {
			alert( "BUGS_2500 load_thumbnails" );
//			var pages = new Array();
			var pages_len = 0;
			var j = 0; var k=0;
			var htmout = "";
//			pages = load_pages();
			pages_len = pages.length;
			j=1;
			htmout += '<ul>';
			htmout += '<li class="i">';
			htmout += '	<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-1">';
			htmout += ' <span>1</span>';
			htmout += '	</li>';

			for( j = 2; j<pages_len; j=j+2 ) {
				k=j+1;
				htmout += '<li class="d">';
				htmout += '<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-2">';
				htmout += '<img src="pages/tn/tn_'+k+'.png" width="76" height="100" class="page-3">';
				htmout += '<span>'+j+"-"+k+'</span>';
				htmout += '</li>';
				}

			htmout += '<li class="i">';
			htmout += '	<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-'+j+'">';
			htmout += '	<span>'+j+'</span>';
			htmout += '	</li>';
			htmout += '<ul>';
			alert( "BUGS_2432 htmout="+htmout );

			var div_thumbnails = document.getElementById('div_thumbnails');
			div_thumbnails.innerHTML = htmout;
			return(htmout);
			}
		</script>


		<script id="script_random_int" >
			function random_int(max,min) {
				min = Math.ceil(min);
				max = Math.floor(max);
				return Math.floor(Math.random() * (max - min + 1)) + min;	
				}

//			random_kolink()
			</script>

		<script id="script_random_imglnk">
			function random_imglink(){
				var myimgs=new Array()
//specify random imgs below. You can have as many as you wish
				myimgs[1]="/imgs/bg/bg_frax_ribbon.jpg"
				myimgs[2]="/imgs/bg/bg_frax_thorn.jpg"
				myimgs[3]="/imgs/bg/bg_newton05b.jpg"
				myimgs[4]="/imgs/bg/bg_frax_thorn.jpg"
				myimgs[5]="/imgs/bg/bg_frax_thorn.jpg"
				myimgs[6]="/imgs/bg/bg_newton04bw.gif"
				myimgs[7]="/imgs/bg/bg_newton05b.png"
				myimgs[8]="/imgs/bg/bg_newton05b.png"
				myimgs[9]="/imgs/bg/bg_newton05b.png"

				var ry=Math.floor(Math.random()*myimgs.length)
				if (ry==0) ry=1
				document.write('<img src="'+myimgs[ry]+'" border=0 height=200>')
				}
//			random_imglink()
//			random_imglink()
//			random_imglink()
			</script>'





	<script id="script_startup">
		function startup1(args) {
			var href=window.location.href;
//		alert( "BUGS_2580 script_startup href="+href );
			var host=window.location.host;
			var pathname=window.location.pathname;
		var search=window.location.search;
		url_default="fb.json";
//		alert( "BUGS_2591 url_default="+url_default );

//		var replaced =  pathname.replace(/(^\.+|\.+$)/mg, '');

		if( pathname.endsWith(".htm")) {
			url_default=pathname.replace(".html",".json" );
//			alert( "BUGS_2595 url_default="+url_default );
			}
		else {
			url_default=pathname.replace(".html",".php" );
//			alert( "BUGS_2596 url_default="+url_default );
			}
		url=url_default;
// bugs		if( search.search("?")) {
// bugs			url=search.replace("?","");
// bugs			}

//			alert( "BUGS_2600 href="+href+" url="+url );
			}
		</script>
		

	<script id="script_startup_fb" >
		var pagelist = new Array();
		var pagelist_len = 0;
		var ajaks = "";
		var j = 0;

		var pagelist_default = new Array();
		var pagelist_head = new Array();
		var pagelist_pages = new Array();
		var pagelist_imgs = new Array();
		var pagelist_i = new Array();
		var pagelist_go = new Array();
		var pagelist_tail = new Array();
		var pagelist_ajax = new Array();
	
		var pagelist_default_len = pagelist_default.length;
		var pagelist_head_len = pagelist_head.length;
		var pagelist_pages_len =  pagelist_pages.length;
		var pagelist_imgs_len =  pagelist_imgs.length;
		var pagelist_i_len =  pagelist_i.length;
		var pagelist_go_len =  pagelist_go.length;
		var pagelist_tail_len =  pagelist_tail.length;
		var pagelist_ajax_len =  pagelist_ajax.length;
	
//		alert( "BUGS_3001 pagelist_default_len="+pagelist_default_len+" pagelist_default="+pagelist_default );
//		alert( "BUGS_3002 pagelist_head_len="+pagelist_head_len+" pagelist_head="+pagelist_head );
//		alert( "BUGS_3003 pagelist_pages_len="+pagelist_pages_len+" pagelist_pages="+pagelist_pages );
//		alert( "BUGS_3004 pagelist_imgs_len="+pagelist_imgs_len+" pagelist_imgs="+pagelist_imgs );
//		alert( "BUGS_3005 pagelist_i_len="+pagelist_i_len+" pagelist_i="+pagelist_i );
//		alert( "BUGS_3006 pagelist_go_len="+pagelist_go_len+" pagelist_go="+pagelist_go );
//		alert( "BUGS_3007 pagelist_tail_len="+pagelist_tail_len+" pagelist_tail="+pagelist_tail );
//		alert( "BUGS_3008 pagelist_ajaks_len="+pagelist_ajaks_len+" pagelist_ajaks="+pagelist_ajaks );

		function startup_fb(args) {
			jaxurl=args;
			alert( "BUGS_6800 startup1 args="+args );
			var jaxurl_default="fb.txt";
			if(linkcheck(jaxurl)) {
				alert( "BUGS_6811 ___FOUND jaxurl="+jaxurl );
			else  {
				alert( "BUGS_6811 NOTFOUND jaxurl="+jaxurl );
				}
//			var href = window.location.href;
//			alert( "BUGS_2620 startup href="+href );
//			var pagelist = new Array();
//			var pagelist_len=0;
//			var ajaks = "";
			var j = 0;
			var htmout = "";


			pagelist = load_pagelist();
			pagelist_len=pagelist.length;
//			alert( "BUGS_3100 pagelist_len="+pagelist_len+" pagelist="+pagelist);

			pagelist_head = load_pagelist_head();
			pagelist_head_len = pagelist_head.length;
//			alert( "BUGS_3101 pagelist_head_len="+pagelist_head_len+" pagelist_head="+pagelist_head );

			pagelist_pages = load_pagelist_pages();
			pagelist_pages_len = pagelist_pages.length;
//			alert( "BUGS_3102 pagelist_pages_len="+pagelist_pages_len+" pagelist_pages="+pagelist_pages );

			pagelist_imgs = load_pagelist_imgs();
			pagelist_imgs_len = pagelist_imgs.length;
//			alert( "BUGS_3103 pagelist_imgs_len="+pagelist_imgs_len+" pagelist_imgs="+pagelist_imgs );

			pagelist_i = load_pagelist_i();
			pagelist_i_len = pagelist_i.length;
//			alert( "BUGS_3104 pagelist_i_len="+pagelist_i_len+" pagelist_i="+pagelist_i );

			pagelist_go = load_pagelist_go();
			pagelist_go_len = pagelist_go.length;
//			alert( "BUGS_3105 pagelist_go_len="+pagelist_go_len+" pagelist_go="+pagelist_go );

			pagelist_tail = load_pagelist_tail();
			pagelist_tail_len = pagelist_tail.length;
//			alert( "BUGS_3106 pagelist_tail_len="+pagelist_tail_len+" pagelist_tail="+pagelist_tail );

			var pagelist_ajaks = new Array();
			var pagelist_ajaks_len = 0;
			var ajaks="fb.txt";
//			alert( "BUGS_3107a ajaks="+ajaks );
//			pagelist_ajaks = load_pagelist_ajaks(ajaks);
//			alert( "BUGS_3107b ajaks="+ajaks );
//			pagelist_ajaks_len = pagelist_ajaks.length;
//			alert( "BUGS_3107c pagelist_ajaks_len="+pagelist_ajaks_len+" pagelist_ajaks="+pagelist_ajaks );

//			pagelist = pagelist.concat( pagelist_head );
//			pagelist = pagelist.concat( pagelist_pages );
//			pagelist = pagelist.concat( pagelist_imgs );
//			pagelist = pagelist.concat( pagelist_i );
//			pagelist = pagelist.concat( pagelist_go );
//			pagelist = pagelist.concat( pagelist_tail );
//			pagelist = pagelist.concat( pagelist_ajaks );
//			pagelist = pagelist_head.concat(pagelist_go, pagelist_pages,pagelist_imgs,pagelist_i,pagelist_go,pagelist_tail );
			pagelist = pagelist_go;
			pagelist = pagelist_pages;
			pagelist = pagelist_imgs;
			pagelist_len=pagelist.length;

//			alert( "BUGS_3200 pagelist_len="+pagelist_len+" pagelist="+pagelist);
//			alert( "BUGS_2577 startup pages_len="+pages_len );
//			load_thumbnails(pages);
//			html_tn(pages);
//			alert( "BUGS_2588 startup htmout="+htmout );
//			alert( "BUGS_2581 startup pages_len="+pages_len+"  pages="+pages );
//			window.pages = pages;
//			alert( "BUGS_1650 startup pages_len="+pages_len+"  window.pages="+window.pages );
			return("");
		</script>

	<script id="script_html_tn" >
		function html_tn(pagelist) {
			var pagelist_len = 0;
			var j = 0; var k=0;
			var htmout = "";
//			pagelist = load_pagelist();
			pagelist_len = pagelist.length;
			j=1;
			htmout += '<ul>';
			htmout += '<li class="i">';
			htmout += '	<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-1">';
			htmout += ' <span>1</span>';
			htmout += '	</li>';

//			for( j = 2; j<pagelist_len; j=j+2 ) {
			for( j = 2; j<600; j=j+2 ) {
				k=j+1;
				htmout += '<li class="d">';
				htmout += '<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-2">';
				htmout += '<img src="pages/tn/tn_'+k+'.png" width="76" height="100" class="page-3">';
				htmout += '<span>'+j+"-"+k+'</span>';
				htmout += '</li>';
				}

			htmout += '<li class="i">';
			htmout += '	<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-'+j+'">';
			htmout += '	<span>'+j+'</span>';
			htmout += '	</li>';
			htmout += '<ul>';
//			alert( "BUGS_2432 htmout="+htmout );

//			var div_tn = document.getElementById('div_tn');
//			div_tn.innerHTML = htmout;

//			alert( "BUGS_2600 html_tn pages_len="+pages_len+" htmout="+htmout );
//			var div_tn = document.getElementbyID("div_tn");
//			document.getElementById('div_tn').insertAdjacentHTML("beforebegin", htmout )
//			div_tn.insertAdjacentHTML('beforeend', htmout);
//			document.write(htmout);
			return(htmout);
			}
		</script>

	<script id="script_utils">
		var execTest = function (str) {
			return /([^\\]+)$/.exec(str)[1];
			}
		var splitTest = function (str) {
			return str.split('\\').pop().split('/').pop();
			}
		</script>




	<style id="style_body_scroll">
		body{ overflow-y:scroll; }
		</style>

	<script id="script_filecheck" >
		function filecheck(url) {
			if(url) {
				var req = new XMLHttpRequest();
				req.open('GET', url, false);
				req.send();
				return req.status==200;
				} 
			else {
				return false;
				}
			}
		</script>

	<script id="script_imgcheck" >
		function imgcheck(url) {
			var img = new Image();
			img.src = url;
			return img.height != 0;
			}
		</script>

	<script id="script_linkcheck" >
		function linkcheck(url) {
			var http = new XMLHttpRequest();
			http.open('HEAD', url, false);
			http.send();
			return http.status!=404;
			}
		</script>

	<script id="script_urlexists" >
		function UrlExists(url) {
			var http = new XMLHttpRequest();
			http.open('HEAD', url, false);
			http.send();
			return http.status!=404;
			}
		</script>


	<script id="script_startup">
		function startup(args) {
//			alert( "BUGS_6900 startup args="+args );
//			alert( "BUGS_6901 startup kolists_cfg="+.kolists['cfg']; );
//			alert( "BUGS_6901 startup content0-cfg="+.content[0]; );
//			alert( "BUGS_6901 startup content10-cfg="+.content[10]; );
			var jaxurl_default="fb.txt";
			var jaxurl = args;
			jaxurl="./ko.php";
//			if( filecheck(jaxurl)) {
			if( filecheck(jaxurl)) {
//				alert( "BUGS_17671 ___FOUND jaxurl="+jaxurl );
				}
			else {
//				alert( "BUGS_17672 NOTFOUND jaxurl="+jaxurl );
				}
//			alert( "BUGS_17673 jaxurl jaxurl="+jaxurl );

//			jax('ko.php?leds&fmt=psv');
			kojax('ko.php?leds&fmt=psv','','');
//			alert( "BUGS_17680 items=".$items."<br>\n" );

			}
		</script>



        <script id=script_toggle>
                function toggle(divid) {
                        var imgid=divid.replace("div_","img_" );
                        if(! document.getElementById(divid)) { return; }

                        var imgid=divid.replace("div_","img_" );
                        style_display=document.getElementById(divid).style.display;

                        if( style_display == "none" ) {
                                img="<img src=/imgs/btn/koeyew.png id="+imgid+" height=75 onclick=\"toggle('"+divid+"'); return false;\" >";
                                document.getElementById(divid).style.display="inline";
                                document.getElementById(imgid).innerHTML=img;
                                document.getElementById(imgid).src="/imgs/btn/koeyew.png";
//                              alert( "BUGS_37891 INLINE img="+img );
                                }
                       else {
                                img="<img src=/imgs/btn/koeyeb.png id="+imgid+" height=75 onclick=\"toggle('"+divid+"'); return false;\" >";

                                document.getElementById(divid).style.display="none";
                                document.getElementById(imgid).innerHTML=img;
                                document.getElementById(imgid).src="/imgs/btn/koeyeb.png";
                                }
                        }
                </script id=script_toggle_end>





	<script id="toggles">
		function toggles(element) {
			var htmout = ""; var htmout_b = ""; 
			var j=0; var k=0;
			var htmbugs = ""; 
			htmbugs += '<div id="div_htmbugs">';
			htmbugs += '	<h1>div_htmbugs</h1>';
			htmbugs += '	<pre>';

			var style_d = "_style_d";
			var style_v = "_style_v";
			var divid = "";
			var div_divid = "";
//			var divids = "konet iperms <hr> jkwii jk sk skwii <hr> jtfdc jtfinc jtfdcr <hr> law med kou kids <hr> av db dd fb pn sl tl tm yt zm <hr> abc media files misc mess xyz".split(" ");
			var divids = "konet iperms jtfdcr <hr> fb pdf pn tm tl zm <hr> file forms".split(" ");

			
//			alert( "BUGS_102 divids="+divids );
			htmout += '<div id="div_buttons_toggle">';
			htmout_b += '<div id="div_buttons_toggle_b">';


			if(( element == "div_alloff" )) {
				for( j=0; j<divids.length; j++ ) {
//					htmout = ""; htmout_b="";
					divid=divids[j];
					div_divid="div_"+divid;
					if( divid == "<br>" ) { 
						htmout += divid; 
						htmout_b += divid; 
						continue; 
						}
					if( divid == "<hr>" ) { 
						htmout += divid; 
						htmout_b += divid; 
						continue; 
						}

					if(! document.getElementById(div_divid)) { continue; }
					if( document.getElementById(div_divid)) {
						document.getElementById(div_divid).style.display="none";
						}
					htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">';
					htmout_b += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">';

					}
				htmout += "	</div>\n";
				htmout_b += "	</div>\n";
				document.getElementById("div_buttons_toggle").innerHTML = htmout;
				document.getElementById("div_buttons_toggle_b").innerHTML = htmout_b;
				return;
				}


			if(( element == "div_toggle" )) {
//				htmout = ""; htmout_b="";
 				for( j=0; j<divids.length; j++ ) {
 					divid=divids[j];
					div_divid="div_"+divid;
					if( divid == "<br>" ) { 
						htmout += divid; 
						htmout_b += divid; 
						continue; 
						}
					if( divid == "<hr>" ) { 
						htmout += divid; 
						htmout_b += divid; 
						continue; 
						}

//					alert( "BUGS_1770 toggle toggle j="+j+" element="+element );

					if(! document.getElementById(div_divid)) { continue; }
					if( document.getElementById(div_divid)) {
						if( document.getElementById(div_divid).style.display == "none" ) {
							document.getElementById(div_divid).style.display="inline";
							htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">';
							htmout_b += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">';
							}
						else {
							document.getElementById(div_divid).style.display="none";
							htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">';
							htmout_b += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">';
							}
						}
					}
				htmout += "	</div>\n";
				htmout_b += "	</div>\n";
				document.getElementById("div_buttons_toggle").innerHTML = htmout;
				document.getElementById("div_buttons_toggle_b").innerHTML = htmout_b;
				return;
				}




			if( element == "div_allon" )  {
//				htmout = ""; htmout_b = "";
 				for( j=0; j<divids.length; j++ ) {
 					divid=divids[j];
					div_divid="div_"+divid;
					if( divid == "<br>" ) { 
						htmout += divid; 
						htmout_b += divid;
//						alert( "BUGS_105 <BR> divid="+divid+" htmout="+htmout );
						continue; 
						}
					if( divid == "<hr>" ) { 
						htmout += divid; 
						htmout_b += divid; 
//						alert( "BUGS_105 <HR> divid="+divid+" htmout="+htmout );
						continue; 
						}


					if(! document.getElementById(div_divid)) { continue; }
					if( document.getElementById(div_divid)) {
						document.getElementById(div_divid).style.display="inline";
						}

					htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">\n';
					htmout_b += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="toggles(\''+divid+'\');return false;" alt="btn_'+divid+'">\n';
//					alert( "BUGS_115 j="+j+" divid="+divid+" htmout="+htmout+ "element="+element );

					}
				document.getElementById("div_buttons_toggle").innerHTML = htmout;
				document.getElementById("div_buttons_toggle_b").innerHTML = htmout_b;
				return;
				}

//			alert( "BUGS_1800 toggle element="+element );


 			for( j=0; j<divids.length; j++ ) {
 				divid=divids[j];
				div_divid="div_"+divid;
				if( divid == "<br>" ) { 
//					alert( "BUGS_151 <BR> divid="+divid+" element="+element );
					htmout += divid;
					continue; 
					}
				if( divid == "<hr>" ) { 
//					alert( "BUGS_152 <HR> divid="+divid+" element="+element );
					htmout += divid;
					continue; 
					}

				if(! document.getElementById(div_divid)) { continue; }

				style_v = document.getElementById(div_divid).style.visibility;
//				alert( "BUGS_132 j="+j+" style_d="+style_d+"  style_v="+style_v );
//				document.getElementById(div_divid).style.display = "none";

				style_d = document.getElementById(div_divid).style.display;
//				alert( "BUGS_133 j="+j+" style_d="+style_d+" style_v="+style_v );

				htmbugs += "htmbugs j="+j+" divid="+divid;
				htmbugs += " -== div_divid="+div_divid;
				htmbugs += " element="+element;
				htmbugs += " =- -=";
				htmbugs += " style_d="+style_d+"";
				htmbugs += " style_v="+style_v+"";
				htmbugs += "====================\n";


//				if( div_divid.match(/element/) != '') {
//				if( div_divid.match(element)) {
//				if( div_divid == element ) {
//					alert( "BUGS_141 _MATCH_ div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
//					htmbugs += "BUGS_141 _MATCH_ div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
//					}
//				else {
//					alert( "BUGS_142 nomatch div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
//					htmbugs += "BUGS_142 _match_ div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
//					}


// selected button
//				if( div_divid.match(element) ) {
				if( div_divid == element ) {
					style_d = document.getElementById(div_divid).style.display;
//					alert( "BUGS_160 MATCH div_divid="+div_divid+" element="+element+" style_d="+style_d );
					if( document.getElementById(div_divid).style.display == "none" ) {
						htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="toggles(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
						htmbugs += "BUGS_161 _DIV_DIVID-NONE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						document.getElementById(div_divid).style.display="inline";
						}
					else {
						htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="toggles(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
						htmbugs += "BUGS_162 DIV_DIVID-INLINE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						document.getElementById(div_divid).style.display="none";
						}
					}


// other buttons
//				else {
				if( div_divid != element ) {
//					alert( "BUGS_170 rest div_divid="+div_divid+" element="+element );
					if( document.getElementById(div_divid).style.display == "none" ) {
						htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="toggles(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
						htmbugs += "BUGS_171 div_divid_none div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						}
					else {
						htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="toggles(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
						htmbugs += "BUGS_172 div_divid_inline div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
						}
					}
				if( divid == "pn" ) { htmout += "<br>"; }
				if( divid == "<br>" ) { htmout += "<br>\n"; }
				if( divid == "<hr>" ) { htmout += "<hr>\n"; }
				}  
			htmout += '	</div>';

			htmbugs += "	</pre>";
			htmbugs += "	</div>";			

//			alert( "BUGS_181 toggles divid="+divid+" htmout="+htmout );
//			alert( "BUGS_200 htmbugs="+htmbugs );	
//			document.getElementById("div_htmbugs").innerHTML = htmbugs;
			document.getElementById("div_buttons_toggle").innerHTML = htmout;
			document.getElementById("div_buttons_toggle_b").innerHTML = htmout;
			}
 		</script>



	<script id=script_fb>
		function fb(args) {
			htmout=""; j=0; k=0;
//			htmout+="<h1>BUGS_4560 fb args="+args;
//			alert(htmout);
			return(htmout);
			}
		</script id=script_fb_end>


	<hr color=black>
	<hr color=white>
	<img id=div_fb title="          div_fb" src=/imgs/btn/koeye.png onclick="toggle('div_fb',''); return false;" height=20 border=0>div_fb
	<br>
	<hr color=white>
	<div id=div_fb>
		<h1>div_fb</h1>
	<hr color=white>
	<div id=canvas_fb>
		<div id=div_fb_zoom class="zoom-icon zoom-icon-in"></div id=div_fb_zoom_end>
		<div id=div_fb_viewport class="magazine-viewport">
			<div id=div_fb_container class="container">
				<div id=div_fb_magazine class="magazine">
					<!-- Next button -->
					<div ignore="1" class="next-button"></div>
					<!-- Previous button -->
					<div ignore="1" class="previous-button"></div>
					</div id=div_fb_magazine_end >
				</div id=div_fb_container_end >
			</div id=div_fb_viewport_end class=magazine-viewport>
		</div id=canvas_fb_end>
	<br>
	<hr color=white>
<!-- Thumbnails -->
	<br>
	<hr color=white>
	<img id=div_fb_tn title="          div_fb_tn" src=/imgs/btn/koeye.png onclick="toggle('div_fb_tn',''); return false;" height=20 border=0>div_fb_tn
	<div id=div_fb_tn class=thumbnails >
		<h1>div_fb_tn</h1>
		<div id=div_fb_ul>
			<ul>
			<li class="i">
				<img src="pages/tn/tn_1.png" width="76" height="100" class="page-1">
				<span>1</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_2.png" width="76" height="100" class="page-2">
				<img src="pages/tn/tn_3.png" width="76" height="100" class="page-3">
				<span>2-3</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_4.png" width="76" height="100" class="page-4">
				<img src="pages/tn/tn_5.png" width="76" height="100" class="page-5">
				<span>4-5</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_6.png" width="76" height="100" class="page-6">
				<img src="pages/tn/tn_7.png" width="76" height="100" class="page-7">
				<span>6-7</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_8.png" width="76" height="100" class="page-8">
				<img src="pages/tn/tn_9.png" width="76" height="100" class="page-9">
				<span>8-9</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_10.png" width="76" height="100" class="page-10">
				<img src="pages/tn/tn_11.png" width="76" height="100" class="page-11">
				<span>10-11</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_12.png" width="76" height="100" class="page-12">
				<img src="pages/tn/tn_13.png" width="76" height="100" class="page-13">
				<span>12-13</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_14.png" width="76" height="100" class="page-14">
				<img src="pages/tn/tn_15.png" width="76" height="100" class="page-15">
				<span>14-15</span>
				</li>
			<li class="d">
				<img src="pages/tn/tn_16.png" width="76" height="100" class="page-14">
				<img src="pages/tn/tn_17.png" width="76" height="100" class="page-15">
				<span>16-17</span>
				</li>
			<li class="i">
				<img src="pages/tn/tn_18.png" width="76" height="100" class="page-16">
				<span>18</span>
				</li>
			<ul>
			</div id=div_fb_ul_end>
		</div id=div_fb_tn_end>


	<script id=script_fbload>
//		function loadApp() {
		function fbload() {
// 			$('#canvas').fadeIn(1000);
 			$('#canvas_fb').fadeIn(1000);
 			var flipbook = $('.magazine');

// Check if the CSS was already loaded
	
	if (flipbook.width()==0 || flipbook.height()==0) {
//		setTimeout(loadApp, 10);
		setTimeout(fbload, 10);
		return;
	}
	
// Create the flipbook
	flipbook.turn({
// Magazine width
// Magazine height
// Duration in millisecond
// Hardware acceleration
// Enables gradients
// Auto center this flipbook
// Elevation from the edge of the flipbook when turning a page
			width: 922,
			height: 600,
			duration: 1000,
			acceleration: !isChrome(),
			gradients: true,
			autoCenter: true,
			elevation: 50,

// The number of pages
// pagelimit pages_len lastpage
//			pages: 12,
//			pages: 16,
//			pages: 758,
			pages: 5368,

// Events

			
			when: {
				turning: function(event, page, view) {
					
					var book = $(this),
					currentPage = book.turn('page'),
					pages = book.turn('pages');
			
					// Update the current URI

					Hash.go('page/' + page).update();

					// Show and hide navigation buttons

					disableControls(page);
					

					$('.thumbnails .page-'+currentPage).
						parent().
						removeClass('current');

					$('.thumbnails .page-'+page).
						parent().
						addClass('current');



				},

				turned: function(event, page, view) {

					disableControls(page);

					$(this).turn('center');

					if (page==1) { 
						$(this).turn('peel', 'br');
					}

				},

				missing: function (event, pages) {

					// Add pages that aren't in the magazine

					for (var i = 0; i < pages.length; i++)
						addPage(pages[i], $(this));

				}
			}

	});

	// Zoom.js

	$('.magazine-viewport').zoom({
		flipbook: $('.magazine'),

		max: function() { 
			
			return largeMagazineWidth()/$('.magazine').width();

		}, 

		when: {

			swipeLeft: function() {

				$(this).zoom('flipbook').turn('next');

			},

			swipeRight: function() {
				
				$(this).zoom('flipbook').turn('previous');

			},

			resize: function(event, scale, page, pageElement) {

				if (scale==1)
					loadSmallPage(page, pageElement);
				else
					loadLargePage(page, pageElement);

			},

			zoomIn: function () {

				$('.thumbnails').hide();
				$('.made').hide();
				$('.magazine').removeClass('animated').addClass('zoom-in');
				$('.zoom-icon').removeClass('zoom-icon-in').addClass('zoom-icon-out');
				
				if (!window.escTip && !$.isTouch) {
					escTip = true;

					$('<div />', {'class': 'exit-message'}).
						html('<div>Press ESC to exit</div>').
							appendTo($('body')).
							delay(2000).
							animate({opacity:0}, 500, function() {
								$(this).remove();
							});
				}
			},

			zoomOut: function () {

				$('.exit-message').hide();
				$('.thumbnails').fadeIn();
				$('.made').fadeIn();
				$('.zoom-icon').removeClass('zoom-icon-out').addClass('zoom-icon-in');

				setTimeout(function(){
					$('.magazine').addClass('animated').removeClass('zoom-in');
					resizeViewport();
				}, 0);

			}
		}
	});

	// Zoom event

	if ($.isTouch)
		$('.magazine-viewport').bind('zoom.doubleTap', zoomTo);
	else
		$('.magazine-viewport').bind('zoom.tap', zoomTo);


	// Using arrow keys to turn the page

	$(document).keydown(function(e){

		var previous = 37, next = 39, esc = 27;

		switch (e.keyCode) {
			case previous:

				// left arrow
				$('.magazine').turn('previous');
				e.preventDefault();

			break;
			case next:

				//right arrow
				$('.magazine').turn('next');
				e.preventDefault();

			break;
			case esc:
				
				$('.magazine-viewport').zoom('zoomOut');	
				e.preventDefault();

			break;
		}
	});

	// URIs - Format #/page/1 

	Hash.on('^page\/([0-9]*)$', {
		yep: function(path, parts) {
			var page = parts[1];

			if (page!==undefined) {
				if ($('.magazine').turn('is'))
					$('.magazine').turn('page', page);
			}

		},
		nop: function(path) {

			if ($('.magazine').turn('is'))
				$('.magazine').turn('page', 1);
		}
	});


	$(window).resize(function() {
		resizeViewport();
	}).bind('orientationchange', function() {
		resizeViewport();
	});

	// Events for thumbnails

	$('.thumbnails').click(function(event) {
		
		var page;

		if (event.target && (page=/page-([0-9]+)/.exec($(event.target).attr('class'))) ) {
		
			$('.magazine').turn('page', page[1]);
		}
	});

	$('.thumbnails li').
		bind($.mouseEvents.over, function() {
			
			$(this).addClass('thumb-hover');

		}).bind($.mouseEvents.out, function() {
			
			$(this).removeClass('thumb-hover');

		});

	if ($.isTouch) {
	
		$('.thumbnails').
			addClass('thumbanils-touch').
			bind($.mouseEvents.move, function(event) {
				event.preventDefault();
			});

	} else {

		$('.thumbnails ul').mouseover(function() {

			$('.thumbnails').addClass('thumbnails-hover');

		}).mousedown(function() {

			return false;

		}).mouseout(function() {

			$('.thumbnails').removeClass('thumbnails-hover');

		});

	}


	// Regions

	if ($.isTouch) {
		$('.magazine').bind('touchstart', regionClick);
	} else {
		$('.magazine').click(regionClick);
	}

	// Events for the next button

	$('.next-button').bind($.mouseEvents.over, function() {
		
		$(this).addClass('next-button-hover');

	}).bind($.mouseEvents.out, function() {
		
		$(this).removeClass('next-button-hover');

	}).bind($.mouseEvents.down, function() {
		
		$(this).addClass('next-button-down');

	}).bind($.mouseEvents.up, function() {
		
		$(this).removeClass('next-button-down');

	}).click(function() {
		
		$('.magazine').turn('next');

	});

	// Events for the next button
	
	$('.previous-button').bind($.mouseEvents.over, function() {
		
		$(this).addClass('previous-button-hover');

	}).bind($.mouseEvents.out, function() {
		
		$(this).removeClass('previous-button-hover');

	}).bind($.mouseEvents.down, function() {
		
		$(this).addClass('previous-button-down');

	}).bind($.mouseEvents.up, function() {
		
		$(this).removeClass('previous-button-down');

	}).click(function() {
		
		$('.magazine').turn('previous');

	});


	resizeViewport();

	$('.magazine').addClass('animated');

}

// Zoom icon

 $('.zoom-icon').bind('mouseover', function() { 
 	
 	if ($(this).hasClass('zoom-icon-in'))
 		$(this).addClass('zoom-icon-in-hover');

 	if ($(this).hasClass('zoom-icon-out'))
 		$(this).addClass('zoom-icon-out-hover');
 
 }).bind('mouseout', function() { 
 	
 	 if ($(this).hasClass('zoom-icon-in'))
 		$(this).removeClass('zoom-icon-in-hover');
 	
 	if ($(this).hasClass('zoom-icon-out'))
 		$(this).removeClass('zoom-icon-out-hover');

 }).bind('click', function() {

 	if ($(this).hasClass('zoom-icon-in'))
 		$('.magazine-viewport').zoom('zoomIn');
 	else if ($(this).hasClass('zoom-icon-out'))	
		$('.magazine-viewport').zoom('zoomOut');

 });

 $('#canvas').hide();


// Load the HTML4 version if there's not CSS transform

 yepnope({
//	test : Modernizr.csstransforms,
//	yep: ['../../lib/turn.js'],
//	yep: ['data:/text/plain;base64,LyoqCiAqIHR1cm4uanMgNHRoIHJlbGVhc2UKICogdHVybmpzLmNvbQogKiB0dXJuanMuY29tL2xpY2Vuc2UudHh0CiAqCiAqIENvcHlyaWdodCAoQykgMjAxMiBFbW1hbnVlbCBHYXJjaWEKICogQWxsIHJpZ2h0cyByZXNlcnZlZAogKiovCgooZnVuY3Rpb24oJCkgewoKJ3VzZSBzdHJpY3QnOwoKdmFyIGhhczNkLAogIAogIGhhc1JvdCwKCiAgdmVuZG9yID0gJycsCiAgCiAgdmVyc2lvbiA9ICc0LjEuMCcsCgogIFBJID0gTWF0aC5QSSwKCiAgQTkwID0gUEkvMiwKCiAgaXNUb3VjaCA9ICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdywKCiAgbW91c2VFdmVudHMgPSAoaXNUb3VjaCkgPwogICAgewogICAgICBkb3duOiAndG91Y2hzdGFydCcsCiAgICAgIG1vdmU6ICd0b3VjaG1vdmUnLAogICAgICB1cDogJ3RvdWNoZW5kJywKICAgICAgb3ZlcjogJ3RvdWNoc3RhcnQnLAogICAgICBvdXQ6ICd0b3VjaGVuZCcKICAgIH0KICAgIDoKICAgIHsKICAgICAgZG93bjogJ21vdXNlZG93bicsCiAgICAgIG1vdmU6ICdtb3VzZW1vdmUnLAogICAgICB1cDogJ21vdXNldXAnLAogICAgICBvdmVyOiAnbW91c2VvdmVyJywKICAgICAgb3V0OiAnbW91c2VvdXQnCiAgICB9LAoKICAvLyBDb250YW5zdHMgdXNlZCBmb3IgZWFjaCBjb3JuZXIKICAvLyAgIHwgdGwgKiB0ciB8CiAgLy8gbCB8ICogICAgICogfCByCiAgLy8gICB8IGJsICogYnIgfAoKICBjb3JuZXJzID0gewogICAgYmFja3dhcmQ6IFsnYmwnLCAndGwnXSwKICAgIGZvcndhcmQ6IFsnYnInLCAndHInXSwKICAgIGFsbDogWyd0bCcsICdibCcsICd0cicsICdicicsICdsJywgJ3InXQogIH0sCgogIC8vIERpc3BsYXkgdmFsdWVzCgogIGRpc3BsYXlzID0gWydzaW5nbGUnLCAnZG91YmxlJ10sCgogIC8vIERpcmVjdGlvbiB2YWx1ZXMKCiAgZGlyZWN0aW9ucyA9IFsnbHRyJywgJ3J0bCddLAoKICAvLyBEZWZhdWx0IG9wdGlvbnMKCiAgdHVybk9wdGlvbnMgPSB7CgogICAgLy8gRW5hYmxlcyBoYXJkd2FyZSBhY2NlbGVyYXRpb24KCiAgICBhY2NlbGVyYXRpb246IHRydWUsCgogICAgLy8gRGlzcGxheQoKICAgIGRpc3BsYXk6ICdkb3VibGUnLAoKICAgIC8vIER1cmF0aW9uIG9mIHRyYW5zaXRpb24gaW4gbWlsbGlzZWNvbmRzCgogICAgZHVyYXRpb246IDYwMCwKCiAgICAvLyBGaXJzdCBwYWdlCgogICAgcGFnZTogMSwKICAgIAogICAgLy8gRW5hYmxlcyBncmFkaWVudHMKCiAgICBncmFkaWVudHM6IHRydWUsCgogICAgLy8gQ29ybmVycyB1c2VkIHdoZW4gdHVybmluZyB0aGUgcGFnZQoKICAgIHR1cm5Db3JuZXJzOiAnYmwsYnInLAoKICAgIC8vIEV2ZW50cwoKICAgIHdoZW46IG51bGwKICB9LAoKICBmbGlwT3B0aW9ucyA9IHsKCiAgICAvLyBTaXplIG9mIHRoZSBhY3RpdmUgem9uZSBvZiBlYWNoIGNvcm5lcgoKICAgIGNvcm5lclNpemU6IDEwMAoKICB9LAoKICAvLyBOdW1iZXIgb2YgcGFnZXMgaW4gdGhlIERPTSwgbWluaW11bSB2YWx1ZTogNgoKICBwYWdlc0luRE9NID0gNiwKICAKCnR1cm5NZXRob2RzID0gewoKICAvLyBTaW5nbGV0b24gY29uc3RydWN0b3IKICAvLyAkKCcjc2VsZWN0b3InKS50dXJuKFtvcHRpb25zXSk7CgogIGluaXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCiAgICAvLyBEZWZpbmUgY29uc3RhbnRzCiAgICAKICAgIGhhczNkID0gJ1dlYktpdENTU01hdHJpeCcgaW4gd2luZG93IHx8ICdNb3pQZXJzcGVjdGl2ZScgaW4gZG9jdW1lbnQuYm9keS5zdHlsZTsKICAgIGhhc1JvdCA9IHJvdGF0aW9uQXZhaWxhYmxlKCk7CiAgICB2ZW5kb3IgPSBnZXRQcmVmaXgoKTsKCiAgICB2YXIgaSwgdGhhdCA9IHRoaXMsIHBhZ2VOdW0gPSAwLCBkYXRhID0gdGhpcy5kYXRhKCksIGNoID0gdGhpcy5jaGlsZHJlbigpOwoKICAgIC8vIFNldCBpbml0aWFsIGNvbmZpZ3VyYXRpb24KCiAgICBvcHRpb25zID0gJC5leHRlbmQoewogICAgICB3aWR0aDogdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0KCksCiAgICAgIGRpcmVjdGlvbjogdGhpcy5hdHRyKCdkaXInKSB8fCB0aGlzLmNzcygnZGlyZWN0aW9uJykgfHwgJ2x0cicKICAgIH0sIHR1cm5PcHRpb25zLCBvcHRpb25zKTsKCiAgICBkYXRhLm9wdHMgPSBvcHRpb25zOwogICAgZGF0YS5wYWdlT2JqcyA9IHt9OwogICAgZGF0YS5wYWdlcyA9IHt9OwogICAgZGF0YS5wYWdlV3JhcCA9IHt9OwogICAgZGF0YS5wYWdlWm9vbSA9IHt9OwogICAgZGF0YS5wYWdlUGxhY2UgPSB7fTsKICAgIGRhdGEucGFnZU12ID0gW107CiAgICBkYXRhLnpvb20gPSAxOwogICAgZGF0YS50b3RhbFBhZ2VzID0gb3B0aW9ucy5wYWdlcyB8fCAwOwogICAgZGF0YS5ldmVudEhhbmRsZXJzID0gewogICAgICB0b3VjaFN0YXJ0OiAkLnByb3h5KHR1cm5NZXRob2RzLl90b3VjaFN0YXJ0LCB0aGlzKSwKICAgICAgdG91Y2hNb3ZlOiAkLnByb3h5KHR1cm5NZXRob2RzLl90b3VjaE1vdmUsIHRoaXMpLAogICAgICB0b3VjaEVuZDogJC5wcm94eSh0dXJuTWV0aG9kcy5fdG91Y2hFbmQsIHRoaXMpLAogICAgICBzdGFydDogJC5wcm94eSh0dXJuTWV0aG9kcy5fZXZlbnRTdGFydCwgdGhpcykKICAgIH07CgoKCiAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXJzCgogICAgaWYgKG9wdGlvbnMud2hlbikKICAgICAgZm9yIChpIGluIG9wdGlvbnMud2hlbikKICAgICAgICBpZiAoaGFzKGksIG9wdGlvbnMud2hlbikpCiAgICAgICAgICB0aGlzLmJpbmQoaSwgb3B0aW9ucy53aGVuW2ldKTsKCiAgICAvLyBTZXQgdGhlIGNzcwoKICAgIHRoaXMuY3NzKHtwb3NpdGlvbjogJ3JlbGF0aXZlJywgd2lkdGg6IG9wdGlvbnMud2lkdGgsIGhlaWdodDogb3B0aW9ucy5oZWlnaHR9KTsKCiAgICAvLyBTZXQgdGhlIGluaXRpYWwgZGlzcGxheQoKICAgIHRoaXMudHVybignZGlzcGxheScsIG9wdGlvbnMuZGlzcGxheSk7CgogICAgLy8gU2V0IHRoZSBkaXJlY3Rpb24KCiAgICBpZiAob3B0aW9ucy5kaXJlY3Rpb24hPT0nJykKICAgICAgdGhpcy50dXJuKCdkaXJlY3Rpb24nLCBvcHRpb25zLmRpcmVjdGlvbik7CiAgICAKICAgIC8vIFByZXZlbnQgYmx1ZSBzY3JlZW4gcHJvYmxlbXMgb2Ygc3dpdGNoaW5nIHRvIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBtb2RlCiAgICAvLyBCeSBmb3JjaW5nIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmb3IgZXZlcgoKICAgIGlmIChoYXMzZCAmJiAhaXNUb3VjaCAmJiBvcHRpb25zLmFjY2VsZXJhdGlvbikKICAgICAgdGhpcy50cmFuc2Zvcm0odHJhbnNsYXRlKDAsIDAsIHRydWUpKTsKCiAgICAvLyBBZGQgcGFnZXMgZnJvbSB0aGUgRE9NCgogICAgZm9yIChpID0gMDsgaTxjaC5sZW5ndGg7IGkrKykgewogICAgICBpZiAoJChjaFtpXSkuYXR0cignaWdub3JlJykhPScxJykgewogICAgICAgIHRoaXMudHVybignYWRkUGFnZScsIGNoW2ldLCArK3BhZ2VOdW0pOwogICAgICB9CiAgICB9CgogICAgLy8gRXZlbnQgbGlzdGVuZXJzCgogICAgJCh0aGlzKS5iaW5kKG1vdXNlRXZlbnRzLmRvd24sIGRhdGEuZXZlbnRIYW5kbGVycy50b3VjaFN0YXJ0KS4KICAgICAgYmluZCgnZW5kJywgdHVybk1ldGhvZHMuX2V2ZW50RW5kKS4KICAgICAgYmluZCgncHJlc3NlZCcsIHR1cm5NZXRob2RzLl9ldmVudFByZXNzZWQpLgogICAgICBiaW5kKCdyZWxlYXNlZCcsIHR1cm5NZXRob2RzLl9ldmVudFJlbGVhc2VkKS4KICAgICAgYmluZCgnZmxpcCcsIHR1cm5NZXRob2RzLl9mbGlwKTsKCiAgICAkKHRoaXMpLnBhcmVudCgpLmJpbmQoJ3N0YXJ0JywgZGF0YS5ldmVudEhhbmRsZXJzLnN0YXJ0KTsKCiAgICAkKGRvY3VtZW50KS5iaW5kKG1vdXNlRXZlbnRzLm1vdmUsIGRhdGEuZXZlbnRIYW5kbGVycy50b3VjaE1vdmUpLgogICAgICBiaW5kKG1vdXNlRXZlbnRzLnVwLCBkYXRhLmV2ZW50SGFuZGxlcnMudG91Y2hFbmQpOwoKICAgIC8vIFNldCB0aGUgaW5pdGlhbCBwYWdlCgogICAgdGhpcy50dXJuKCdwYWdlJywgb3B0aW9ucy5wYWdlKTsKCiAgICAvLyBUaGlzIGZsaXBib29rIGlzIHJlYWR5CgogICAgZGF0YS5kb25lID0gdHJ1ZTsKCiAgICByZXR1cm4gdGhpczsKICB9LAoKICAvLyBBZGRzIGEgcGFnZSBmcm9tIGV4dGVybmFsIGRhdGEKCiAgYWRkUGFnZTogZnVuY3Rpb24oZWxlbWVudCwgcGFnZSkgewoKICAgIHZhciBjdXJyZW50UGFnZSwKICAgICAgY2xhc3NOYW1lLAogICAgICBpbmNQYWdlcyA9IGZhbHNlLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIGxhc3RQYWdlID0gZGF0YS50b3RhbFBhZ2VzKzE7CgogICAgaWYgKGRhdGEuZGVzdHJveWluZykKICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIC8vIFJlYWQgdGhlIHBhZ2UgbnVtYmVyIGZyb20gdGhlIGNsYXNzTmFtZSBvZiBgZWxlbWVudGAgLSBmb3JtYXQ6IHBbMC05XSsKCiAgICBpZiAoKGN1cnJlbnRQYWdlID0gL1xicChbMC05XSspXGIvLmV4ZWMoJChlbGVtZW50KS5hdHRyKCdjbGFzcycpKSkpCiAgICAgIHBhZ2UgPSBwYXJzZUludChjdXJyZW50UGFnZVsxXSwgMTApOwoKICAgIGlmIChwYWdlKSB7CiAgICAgIAogICAgICBpZiAocGFnZT09bGFzdFBhZ2UpCiAgICAgICAgaW5jUGFnZXMgPSB0cnVlOwogICAgICBlbHNlIGlmIChwYWdlPmxhc3RQYWdlKQogICAgICAgIHRocm93IHR1cm5FcnJvcignUGFnZSAiJytwYWdlKyciIGNhbm5vdCBiZSBpbnNlcnRlZCcpOwoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICBwYWdlID0gbGFzdFBhZ2U7CiAgICAgIGluY1BhZ2VzID0gdHJ1ZTsKCiAgICB9CgogICAgaWYgKHBhZ2U+PTEgJiYgcGFnZTw9bGFzdFBhZ2UpIHsKCiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKQogICAgICAgIGNsYXNzTmFtZSA9IChwYWdlJTIpID8gJyBvZGQnIDogJyBldmVuJzsKICAgICAgZWxzZQogICAgICAgIGNsYXNzTmFtZSA9ICcnOwoKICAgICAgLy8gU3RvcCBhbmltYXRpb25zCiAgICAgIGlmIChkYXRhLmRvbmUpCiAgICAgICAgdGhpcy50dXJuKCdzdG9wJyk7CgogICAgICAvLyBNb3ZlIHBhZ2VzIGlmIGl0J3MgbmVjZXNzYXJ5CiAgICAgIGlmIChwYWdlIGluIGRhdGEucGFnZU9ianMpCiAgICAgICAgdHVybk1ldGhvZHMuX21vdmVQYWdlcy5jYWxsKHRoaXMsIHBhZ2UsIDEpOwoKICAgICAgLy8gSW5jcmVhc2UgdGhlIG51bWJlciBvZiBwYWdlcwogICAgICBpZiAoaW5jUGFnZXMpCiAgICAgICAgZGF0YS50b3RhbFBhZ2VzID0gbGFzdFBhZ2U7CgogICAgICAvLyBBZGQgZWxlbWVudAogICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdID0gJChlbGVtZW50KS4KICAgICAgICBjc3MoeydmbG9hdCc6ICdsZWZ0J30pLgogICAgICAgIGFkZENsYXNzKCdwYWdlIHAnICsgcGFnZSArIGNsYXNzTmFtZSk7CgogICAgICBpZiAoIWhhc0hhcmRQYWdlKCkgJiYgIGRhdGEucGFnZU9ianNbcGFnZV0uaGFzQ2xhc3MoJ2hhcmQnKSkgewogICAgICAgIGRhdGEucGFnZU9ianNbcGFnZV0ucmVtb3ZlQ2xhc3MoJ2hhcmQnKTsKICAgICAgfQoKICAgICAgLy8gQWRkIHBhZ2UKICAgICAgdHVybk1ldGhvZHMuX2FkZFBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgIC8vIFJlbW92ZSBwYWdlcyBvdXQgb2YgcmFuZ2UKICAgICAgdHVybk1ldGhvZHMuX3JlbW92ZUZyb21ET00uY2FsbCh0aGlzKTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9LAoKICAvLyBBZGRzIGEgcGFnZQoKICBfYWRkUGFnZTogZnVuY3Rpb24ocGFnZSkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBlbGVtZW50ID0gZGF0YS5wYWdlT2Jqc1twYWdlXTsKCiAgICBpZiAoZWxlbWVudCkKICAgICAgaWYgKHR1cm5NZXRob2RzLl9uZWNlc3NQYWdlLmNhbGwodGhpcywgcGFnZSkpIHsKCiAgICAgICAgaWYgKCFkYXRhLnBhZ2VXcmFwW3BhZ2VdKSB7CgogICAgICAgICAgLy8gV3JhcHBlcgogICAgICAgICAgZGF0YS5wYWdlV3JhcFtwYWdlXSA9ICQoJzxkaXYvPicsCiAgICAgICAgICAgIHsnY2xhc3MnOiAncGFnZS13cmFwcGVyJywKICAgICAgICAgICAgICBwYWdlOiBwYWdlLAogICAgICAgICAgICAgIGNzczoge3Bvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ319KTsKCiAgICAgICAgICAvLyBBcHBlbmQgdG8gdGhpcyBmbGlwYm9vawogICAgICAgICAgdGhpcy5hcHBlbmQoZGF0YS5wYWdlV3JhcFtwYWdlXSk7CgogICAgICAgICAgaWYgKCFkYXRhLnBhZ2VQbGFjZVtwYWdlXSkgewogICAgICAgICAgICAKICAgICAgICAgICAgZGF0YS5wYWdlUGxhY2VbcGFnZV0gPSBwYWdlOwogICAgICAgICAgICAvLyBNb3ZlIGBwYWdlT2Jqc1twYWdlXWAgdG8gd3JhcHBlcgogICAgICAgICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdLmFwcGVuZFRvKGRhdGEucGFnZVdyYXBbcGFnZV0pOwogICAgICAgICAgCiAgICAgICAgIH0KCiAgICAgICAgICAvLyBTZXQgdGhlIHNpemUgb2YgdGhlIHBhZ2UKICAgICAgICAgIHZhciBwcm9wID0gdHVybk1ldGhvZHMuX3BhZ2VTaXplLmNhbGwodGhpcywgcGFnZSwgdHJ1ZSk7CiAgICAgICAgICBlbGVtZW50LmNzcyh7d2lkdGg6IHByb3Aud2lkdGgsIGhlaWdodDogcHJvcC5oZWlnaHR9KTsKICAgICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKHByb3ApOwoKICAgICAgICB9CgogICAgICAgIGlmIChkYXRhLnBhZ2VQbGFjZVtwYWdlXSA9PSBwYWdlKSB7CgogICAgICAgICAvLyBJZiB0aGUgcGFnZSBpc24ndCBpbiBhbm90aGVyIHBsYWNlLCBjcmVhdGUgdGhlIGZsaXAgZWZmZWN0CiAgICAgICAgICB0dXJuTWV0aG9kcy5fbWFrZUZsaXAuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgIH0KICAgICAgICAKICAgICAgfSBlbHNlIHsKCiAgICAgICAgLy8gUGxhY2UKICAgICAgICBkYXRhLnBhZ2VQbGFjZVtwYWdlXSA9IDA7CgogICAgICAgIC8vIFJlbW92ZSBlbGVtZW50IGZyb20gdGhlIERPTQogICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW3BhZ2VdKQogICAgICAgICAgZGF0YS5wYWdlT2Jqc1twYWdlXS5yZW1vdmUoKTsKCiAgICAgIH0KCiAgfSwKCiAgLy8gQ2hlY2tzIGlmIGEgcGFnZSBpcyBpbiBtZW1vcnkKICAKICBoYXNQYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgcmV0dXJuIGhhcyhwYWdlLCB0aGlzLmRhdGEoKS5wYWdlT2Jqcyk7CiAgCiAgfSwKCiAgLy8gQ2VudGVycyB0aGUgZmxpcGJvb2sKCiAgY2VudGVyOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHNpemUgPSAkKHRoaXMpLnR1cm4oJ3NpemUnKSwKICAgICAgbGVmdCA9IDA7CgogICAgaWYgKCFkYXRhLm5vQ2VudGVyKSB7CiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKSB7CiAgICAgICAgdmFyIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnLCBwYWdlIHx8IGRhdGEudHBhZ2UgfHwgZGF0YS5wYWdlKTsKCiAgICAgICAgaWYgKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgewogICAgICAgICAgaWYgKCF2aWV3WzBdKQogICAgICAgICAgICBsZWZ0IC09IHNpemUud2lkdGgvNDsKICAgICAgICAgIGVsc2UgaWYgKCF2aWV3WzFdKQogICAgICAgICAgICBsZWZ0ICs9IHNpemUud2lkdGgvNDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKCF2aWV3WzBdKQogICAgICAgICAgICBsZWZ0ICs9IHNpemUud2lkdGgvNDsKICAgICAgICAgIGVsc2UgaWYgKCF2aWV3WzFdKQogICAgICAgICAgICBsZWZ0IC09IHNpemUud2lkdGgvNDsKICAgICAgICB9CiAgICAgIAogICAgICB9CgogICAgICAkKHRoaXMpLmNzcyh7bWFyZ2luTGVmdDogbGVmdH0pOwogICAgfQoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEZXN0cm95cyB0aGUgZmxpcGJvb2sKCiAgZGVzdHJveTogZnVuY3Rpb24gKCkgewoKICAgIHZhciBwYWdlLAogICAgICBmbGlwYm9vayA9IHRoaXMsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgZXZlbnRzID0gWwogICAgICAgICdlbmQnLCAnZmlyc3QnLCAnZmxpcCcsICdsYXN0JywgJ3ByZXNzZWQnLAogICAgICAgICdyZWxlYXNlZCcsICdzdGFydCcsICd0dXJuaW5nJywgJ3R1cm5lZCcsCiAgICAgICAgJ3pvb21pbmcnLCAnbWlzc2luZyddOwoKICAgIGlmICh0cmlnZ2VyKCdkZXN0cm95aW5nJywgdGhpcyk9PSdwcmV2ZW50ZWQnKQogICAgICByZXR1cm47CgogICAgZGF0YS5kZXN0cm95aW5nID0gdHJ1ZTsKCiAgICAkLmVhY2goZXZlbnRzLCBmdW5jdGlvbihpbmRleCwgZXZlbnROYW1lKSB7CiAgICAgIGZsaXBib29rLnVuYmluZChldmVudE5hbWUpOwogICAgfSk7CgogICAgdGhpcy5wYXJlbnQoKS51bmJpbmQoJ3N0YXJ0JywgZGF0YS5ldmVudEhhbmRsZXJzLnN0YXJ0KTsKCiAgICAkKGRvY3VtZW50KS51bmJpbmQobW91c2VFdmVudHMubW92ZSwgZGF0YS5ldmVudEhhbmRsZXJzLnRvdWNoTW92ZSkuCiAgICAgIHVuYmluZChtb3VzZUV2ZW50cy51cCwgZGF0YS5ldmVudEhhbmRsZXJzLnRvdWNoRW5kKTsKICAgIAogICAgd2hpbGUgKGRhdGEudG90YWxQYWdlcyE9PTApIHsKICAgICAgdGhpcy50dXJuKCdyZW1vdmVQYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgIH0KCiAgICBpZiAoZGF0YS5mcGFyZW50KQogICAgICBkYXRhLmZwYXJlbnQucmVtb3ZlKCk7CgogICAgaWYgKGRhdGEuc2hhZG93KQogICAgICBkYXRhLnNoYWRvdy5yZW1vdmUoKTsKCiAgICB0aGlzLnJlbW92ZURhdGEoKTsKICAgIGRhdGEgPSBudWxsOwoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBDaGVja3MgaWYgdGhpcyBlbGVtZW50IGlzIGEgZmxpcGJvb2sKCiAgaXM6IGZ1bmN0aW9uKCkgewoKICAgIHJldHVybiB0eXBlb2YodGhpcy5kYXRhKCkucGFnZXMpPT0nb2JqZWN0JzsKCiAgfSwKCiAgLy8gU2V0cyBhbmQgZ2V0cyB0aGUgem9vbSB2YWx1ZQoKICB6b29tOiBmdW5jdGlvbihuZXdab29tKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHR5cGVvZihuZXdab29tKT09J251bWJlcicpIHsKCiAgICAgIGlmIChuZXdab29tPDAuMDAxIHx8IG5ld1pvb20+MTAwKQogICAgICAgIHRocm93IHR1cm5FcnJvcihuZXdab29tKyAnIGlzIG5vdCBhIHZhbHVlIGZvciB6b29tJyk7CiAgICAgIAogICAgICBpZiAodHJpZ2dlcignem9vbWluZycsIHRoaXMsIFtuZXdab29tLCBkYXRhLnpvb21dKT09J3ByZXZlbnRlZCcpCiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIAogICAgICB2YXIgc2l6ZSA9IHRoaXMudHVybignc2l6ZScpLAogICAgICAgIGN1cnJlbnRWaWV3ID0gdGhpcy50dXJuKCd2aWV3JyksCiAgICAgICAgaXogPSAxL2RhdGEuem9vbSwKICAgICAgICBuZXdXaWR0aCA9IE1hdGgucm91bmQoc2l6ZS53aWR0aCAqIGl6ICogbmV3Wm9vbSksCiAgICAgICAgbmV3SGVpZ2h0ID0gTWF0aC5yb3VuZChzaXplLmhlaWdodCAqIGl6ICogbmV3Wm9vbSk7CiAgICAKICAgICAgZGF0YS56b29tID0gbmV3Wm9vbTsKCiAgICAgICQodGhpcykudHVybignc3RvcCcpLgogICAgICAgIHR1cm4oJ3NpemUnLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKICAgICAgICAvKi4KICAgICAgICBjc3Moe21hcmdpblRvcDogc2l6ZS5oZWlnaHQgKiBpeiAvIDIgLSBuZXdIZWlnaHQgLyAyfSk7Ki8KCiAgICAgIGlmIChkYXRhLm9wdHMuYXV0b0NlbnRlcikKICAgICAgICB0aGlzLnR1cm4oJ2NlbnRlcicpOwogICAgICAvKmVsc2UKICAgICAgICAkKHRoaXMpLmNzcyh7bWFyZ2luTGVmdDogc2l6ZS53aWR0aCAqIGl6IC8gMiAtIG5ld1dpZHRoIC8gMn0pOyovCgogICAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwodGhpcyk7CgogICAgICBmb3IgKHZhciBpID0gMDsgaTxjdXJyZW50Vmlldy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChjdXJyZW50Vmlld1tpXSAmJiBkYXRhLnBhZ2Vab29tW2N1cnJlbnRWaWV3W2ldXSE9ZGF0YS56b29tKSB7CiAgCiAgICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb21lZCcsWwogICAgICAgICAgICBjdXJyZW50Vmlld1tpXSwKICAgICAgICAgICAgY3VycmVudFZpZXcsCiAgICAgICAgICAgIGRhdGEucGFnZVpvb21bY3VycmVudFZpZXdbaV1dLAogICAgICAgICAgICBkYXRhLnpvb21dKTsKCiAgICAgICAgICBkYXRhLnBhZ2Vab29tW2N1cnJlbnRWaWV3W2ldXSA9IGRhdGEuem9vbTsKICAgICAgfQogICAgfQoKICAgICAgcmV0dXJuIHRoaXM7CgogICAgfSBlbHNlCiAgICAgIHJldHVybiBkYXRhLnpvb207CgogIH0sCgogIC8vIEdldHMgdGhlIHNpemUgb2YgYSBwYWdlCgogIF9wYWdlU2l6ZTogZnVuY3Rpb24ocGFnZSwgcG9zaXRpb24pIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBwcm9wID0ge307CgogICAgaWYgKGRhdGEuZGlzcGxheT09J3NpbmdsZScpIHsKCiAgICAgIHByb3Aud2lkdGggPSB0aGlzLndpZHRoKCk7CiAgICAgIHByb3AuaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTsKCiAgICAgIGlmIChwb3NpdGlvbikgewogICAgICAgIHByb3AudG9wID0gMDsKICAgICAgICBwcm9wLmxlZnQgPSAwOwogICAgICAgIHByb3AucmlnaHQgPSAnYXV0byc7CiAgICAgIH0KCiAgICB9IGVsc2UgewoKICAgICAgdmFyIHBhZ2VXaWR0aCA9IHRoaXMud2lkdGgoKS8yLAogICAgICAgIHBhZ2VIZWlnaHQgPSB0aGlzLmhlaWdodCgpOwoKICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0uaGFzQ2xhc3MoJ293bi1zaXplJykpIHsKICAgICAgICBwcm9wLndpZHRoID0gZGF0YS5wYWdlT2Jqc1twYWdlXS53aWR0aCgpOwogICAgICAgIHByb3AuaGVpZ2h0ID0gZGF0YS5wYWdlT2Jqc1twYWdlXS5oZWlnaHQoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBwcm9wLndpZHRoID0gcGFnZVdpZHRoOwogICAgICAgIHByb3AuaGVpZ2h0ID0gcGFnZUhlaWdodDsKICAgICAgfQogICAgICAKICAgICAgaWYgKHBvc2l0aW9uKSB7CiAgICAgICAgdmFyIG9kZCA9IHBhZ2UlMjsKICAgICAgICBwcm9wLnRvcCA9IChwYWdlSGVpZ2h0LXByb3AuaGVpZ2h0KS8yOwoKICAgICAgICBpZiAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSB7CiAgICAgICAgICAKICAgICAgICAgIHByb3BbKG9kZCkgPyAncmlnaHQnIDogJ2xlZnQnXSA9IHBhZ2VXaWR0aC1wcm9wLndpZHRoOwogICAgICAgICAgcHJvcFsob2RkKSA/ICdsZWZ0JyA6ICdyaWdodCddID0gJ2F1dG8nOwoKICAgICAgICB9IGVsc2UgewogICAgICAgICAgCiAgICAgICAgICBwcm9wWyhvZGQpID8gJ2xlZnQnIDogJ3JpZ2h0J10gPSBwYWdlV2lkdGgtcHJvcC53aWR0aDsKICAgICAgICAgIHByb3BbKG9kZCkgPyAncmlnaHQnIDogJ2xlZnQnXSA9ICdhdXRvJzsKCiAgICAgICAgfQogICAgICAKICAgICAgfQogICAgfQoKICAgIHJldHVybiBwcm9wOwoKICB9LAoKICAvLyBQcmVwYXJlcyB0aGUgZmxpcCBlZmZlY3QgZm9yIGEgcGFnZQoKICBfbWFrZUZsaXA6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmICghZGF0YS5wYWdlc1twYWdlXSAmJiBkYXRhLnBhZ2VQbGFjZVtwYWdlXT09cGFnZSkgewogICAgICAKICAgICAgdmFyIHNpbmdsZSA9IGRhdGEuZGlzcGxheT09J3NpbmdsZScsCiAgICAgICAgb2RkID0gcGFnZSUyOwoKICAgICAgZGF0YS5wYWdlc1twYWdlXSA9IGRhdGEucGFnZU9ianNbcGFnZV0uCiAgICAgICAgY3NzKHR1cm5NZXRob2RzLl9wYWdlU2l6ZS5jYWxsKHRoaXMsIHBhZ2UpKS4KICAgICAgICBmbGlwKHsKICAgICAgICAgIHBhZ2U6IHBhZ2UsCiAgICAgICAgICBuZXh0OiAob2RkIHx8IHNpbmdsZSkgPyBwYWdlKzEgOiBwYWdlLTEsCiAgICAgICAgICB0dXJuOiB0aGlzCiAgICAgICAgfSkuCiAgICAgICAgZmxpcCgnZGlzYWJsZScsIGRhdGEuZGlzYWJsZWQpOwoKICAgICAgICAvLyBJc3N1ZSBhYm91dCB6LWluZGV4CiAgICAgICAgdHVybk1ldGhvZHMuX3NldFBhZ2VMb2MuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgICAgZGF0YS5wYWdlWm9vbVtwYWdlXSA9IGRhdGEuem9vbTsKICAgICAgICAKICAgIH0KCiAgICByZXR1cm4gZGF0YS5wYWdlc1twYWdlXTsKICB9LAoKICAvLyBNYWtlcyBwYWdlcyB3aXRoaW4gYSByYW5nZQoKICBfbWFrZVJhbmdlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwgcmFuZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoZGF0YS50b3RhbFBhZ2VzPDEpCiAgICAgIHJldHVybjsKCiAgICByYW5nZSA9IHRoaXMudHVybigncmFuZ2UnKTsKCiAgICBmb3IgKHBhZ2UgPSByYW5nZVswXTsgcGFnZTw9cmFuZ2VbMV07IHBhZ2UrKykKICAgICAgdHVybk1ldGhvZHMuX2FkZFBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKCiAgfSwKCiAgLy8gUmV0dXJucyBhIHJhbmdlIG9mIHBhZ2VzIHRoYXQgc2hvdWxkIGJlIGluIHRoZSBET00KICAvLyBFeGFtcGxlOgogIC8vIC0gcGFnZSBpbiB0aGUgY3VycmVudCB2aWV3LCByZXR1cm4gdHJ1ZQogIC8vICogcGFnZSBpcyBpbiB0aGUgcmFuZ2UsIHJldHVybiB0cnVlCiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UKICAvLwogIC8vIDEgMi0zIDQtNSA2LTcgOC05IDEwLTExIDEyLTEzCiAgLy8gICAqKiAgKiogIC0tICAgKiogICoqCgogIHJhbmdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIHJlbWFpbmluZ1BhZ2VzLCBsZWZ0LCByaWdodCwgdmlldywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgICAgcGFnZSA9IHBhZ2UgfHwgZGF0YS50cGFnZSB8fCBkYXRhLnBhZ2UgfHwgMTsKICAgICAgdmlldyA9IHR1cm5NZXRob2RzLl92aWV3LmNhbGwodGhpcywgcGFnZSk7CgogICAgICBpZiAocGFnZTwxIHx8IHBhZ2U+ZGF0YS50b3RhbFBhZ2VzKQogICAgICAgIHRocm93IHR1cm5FcnJvcignIicrcGFnZSsnIiBpcyBub3QgYSB2YWxpZCBwYWdlJyk7CgogICAgCiAgICAgIHZpZXdbMV0gPSB2aWV3WzFdIHx8IHZpZXdbMF07CiAgICAgIAogICAgICBpZiAodmlld1swXT49MSAmJiB2aWV3WzFdPD1kYXRhLnRvdGFsUGFnZXMpIHsKCiAgICAgICAgcmVtYWluaW5nUGFnZXMgPSBNYXRoLmZsb29yKChwYWdlc0luRE9NLTIpLzIpOwoKICAgICAgICBpZiAoZGF0YS50b3RhbFBhZ2VzLXZpZXdbMV0gPiB2aWV3WzBdKSB7CiAgICAgICAgICBsZWZ0ID0gTWF0aC5taW4odmlld1swXS0xLCByZW1haW5pbmdQYWdlcyk7CiAgICAgICAgICByaWdodCA9IDIqcmVtYWluaW5nUGFnZXMtbGVmdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmlnaHQgPSBNYXRoLm1pbihkYXRhLnRvdGFsUGFnZXMtdmlld1sxXSwgcmVtYWluaW5nUGFnZXMpOwogICAgICAgICAgbGVmdCA9IDIqcmVtYWluaW5nUGFnZXMtcmlnaHQ7CiAgICAgICAgfQoKICAgICAgfSBlbHNlIHsKICAgICAgICBsZWZ0ID0gcGFnZXNJbkRPTS0xOwogICAgICAgIHJpZ2h0ID0gcGFnZXNJbkRPTS0xOwogICAgICB9CgogICAgICByZXR1cm4gW01hdGgubWF4KDEsIHZpZXdbMF0tbGVmdCksCiAgICAgICAgICBNYXRoLm1pbihkYXRhLnRvdGFsUGFnZXMsIHZpZXdbMV0rcmlnaHQpXTsKCiAgfSwKCiAgLy8gRGV0ZWN0cyBpZiBhIHBhZ2UgaXMgd2l0aGluIHRoZSByYW5nZSBvZiBgcGFnZXNJbkRPTWAgZnJvbSB0aGUgY3VycmVudCB2aWV3CgogIF9uZWNlc3NQYWdlOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIGlmIChwYWdlPT09MCkKICAgICAgcmV0dXJuIHRydWU7CgogICAgdmFyIHJhbmdlID0gdGhpcy50dXJuKCdyYW5nZScpOwoKICAgIHJldHVybiB0aGlzLmRhdGEoKS5wYWdlT2Jqc1twYWdlXS5oYXNDbGFzcygnZml4ZWQnKSB8fAogICAgICAocGFnZT49cmFuZ2VbMF0gJiYgcGFnZTw9cmFuZ2VbMV0pOwogICAgCiAgfSwKCiAgLy8gUmVsZWFzZXMgbWVtb3J5IGJ5IHJlbW92aW5nIHBhZ2VzIGZyb20gdGhlIERPTQoKICBfcmVtb3ZlRnJvbURPTTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VXcmFwKSAmJgogICAgICAgICF0dXJuTWV0aG9kcy5fbmVjZXNzUGFnZS5jYWxsKHRoaXMsIHBhZ2UpKQogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKICAgIAogIH0sCgogIC8vIFJlbW92ZXMgYSBwYWdlIGZyb20gRE9NIGFuZCBpdHMgaW50ZXJuYWwgcmVmZXJlbmNlcwoKICBfcmVtb3ZlUGFnZUZyb21ET006IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKSB7CiAgICAgIHZhciBkZCA9IGRhdGEucGFnZXNbcGFnZV0uZGF0YSgpOwoKICAgICAgZmxpcE1ldGhvZHMuX21vdmVGb2xkaW5nUGFnZS5jYWxsKGRhdGEucGFnZXNbcGFnZV0sIGZhbHNlKTsKCiAgICAgIGlmIChkZC5mICYmIGRkLmYuZndyYXBwZXIpCiAgICAgICAgZGQuZi5md3JhcHBlci5yZW1vdmUoKTsKCiAgICAgIGRhdGEucGFnZXNbcGFnZV0ucmVtb3ZlRGF0YSgpOwogICAgICBkYXRhLnBhZ2VzW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlc1twYWdlXTsKICAgIH0KCiAgICBpZiAoZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgZGF0YS5wYWdlT2Jqc1twYWdlXS5yZW1vdmUoKTsKCiAgICBpZiAoZGF0YS5wYWdlV3JhcFtwYWdlXSkgewogICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlV3JhcFtwYWdlXTsKICAgIH0KCiAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlTXYuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICBkZWxldGUgZGF0YS5wYWdlUGxhY2VbcGFnZV07CiAgICBkZWxldGUgZGF0YS5wYWdlWm9vbVtwYWdlXTsKCiAgfSwKCiAgLy8gUmVtb3ZlcyBhIHBhZ2UKCiAgcmVtb3ZlUGFnZTogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgLy8gRGVsZXRlIGFsbCB0aGUgcGFnZXMKICAgIGlmIChwYWdlPT0nKicpIHsKICAgICAgCiAgICAgIHdoaWxlIChkYXRhLnRvdGFsUGFnZXMhPT0wKSB7CiAgICAgICAgdGhpcy50dXJuKCdyZW1vdmVQYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgICAgfQoKICAgIH0gZWxzZSB7CgogICAgICBpZiAocGFnZTwxIHx8IHBhZ2U+ZGF0YS50b3RhbFBhZ2VzKQogICAgICAgIHRocm93IHR1cm5FcnJvcignVGhlIHBhZ2UgJysgcGFnZSArICcgZG9lc25cJ3QgZXhpc3QnKTsKICAgICAgICAKICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0pIHsKCiAgICAgICAgLy8gU3RvcCBhbmltYXRpb25zCiAgICAgICAgdGhpcy50dXJuKCdzdG9wJyk7CgogICAgICAgIC8vIFJlbW92ZSBgcGFnZWAKICAgICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgICAgZGVsZXRlIGRhdGEucGFnZU9ianNbcGFnZV07CgogICAgICB9CgogICAgICAvLyBNb3ZlIHRoZSBwYWdlcwogICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgcGFnZSwgLTEpOwoKICAgICAgLy8gUmVzaXplIHRoZSBzaXplIG9mIHRoaXMgZmxpcGJvb2sKICAgICAgZGF0YS50b3RhbFBhZ2VzID0gZGF0YS50b3RhbFBhZ2VzLTE7CgogICAgICAvLyBDaGVjayB0aGUgY3VycmVudCB2aWV3CgogICAgICBpZiAoZGF0YS5wYWdlPmRhdGEudG90YWxQYWdlcykgewoKICAgICAgIGRhdGEucGFnZSA9IG51bGw7CiAgICAgICB0dXJuTWV0aG9kcy5fZml0UGFnZS5jYWxsKHRoaXMsIGRhdGEudG90YWxQYWdlcyk7CgogICAgICB9IGVsc2UgewoKICAgICAgICB0dXJuTWV0aG9kcy5fbWFrZVJhbmdlLmNhbGwodGhpcyk7CiAgICAgICAgdGhpcy50dXJuKCd1cGRhdGUnKTsKCiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdGhpczsKICAKICB9LAoKICAvLyBNb3ZlcyBwYWdlcwoKICBfbW92ZVBhZ2VzOiBmdW5jdGlvbihmcm9tLCBjaGFuZ2UpIHsKCiAgICB2YXIgcGFnZSwKICAgICAgdGhhdCA9IHRoaXMsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgc2luZ2xlID0gZGF0YS5kaXNwbGF5PT0nc2luZ2xlJywKICAgICAgbW92ZSA9IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICAgICAgdmFyIG5leHQgPSBwYWdlICsgY2hhbmdlLAogICAgICAgICAgb2RkID0gbmV4dCUyLAogICAgICAgICAgY2xhc3NOYW1lID0gKG9kZCkgPyAnIG9kZCAnIDogJyBldmVuICc7CgogICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW3BhZ2VdKQogICAgICAgICAgZGF0YS5wYWdlT2Jqc1tuZXh0XSA9IGRhdGEucGFnZU9ianNbcGFnZV0uCiAgICAgICAgICAgIHJlbW92ZUNsYXNzKCdwJyArIHBhZ2UgKyAnIG9kZCBldmVuJykuCiAgICAgICAgICAgIGFkZENsYXNzKCdwJyArIG5leHQgKyBjbGFzc05hbWUpOwoKICAgICAgICBpZiAoZGF0YS5wYWdlUGxhY2VbcGFnZV0gJiYgZGF0YS5wYWdlV3JhcFtwYWdlXSkgewoKICAgICAgICAgIGRhdGEucGFnZVBsYWNlW25leHRdID0gbmV4dDsKICAgICAgICAKICAgICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW25leHRdLmhhc0NsYXNzKCdmaXhlZCcpKQogICAgICAgICAgICBkYXRhLnBhZ2VXcmFwW25leHRdID0gZGF0YS5wYWdlV3JhcFtwYWdlXS4KICAgICAgICAgICAgICBhdHRyKCdwYWdlJywgbmV4dCk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGRhdGEucGFnZVdyYXBbbmV4dF0gPSBkYXRhLnBhZ2VXcmFwW3BhZ2VdLgogICAgICAgICAgICAgIGNzcyh0dXJuTWV0aG9kcy5fcGFnZVNpemUuY2FsbCh0aGF0LCBuZXh0LCB0cnVlKSkuCiAgICAgICAgICAgICAgYXR0cigncGFnZScsIG5leHQpOwogICAgICAKICAgICAgICAgICAgaWYgKGRhdGEucGFnZXNbcGFnZV0pCiAgICAgICAgICAgICAgZGF0YS5wYWdlc1tuZXh0XSA9IGRhdGEucGFnZXNbcGFnZV0uCiAgICAgICAgICAgICAgICBmbGlwKCdvcHRpb25zJywgewogICAgICAgICAgICAgICAgICBwYWdlOiBuZXh0LAogICAgICAgICAgICAgICAgICBuZXh0OiAoc2luZ2xlIHx8IG9kZCkgPyBuZXh0KzEgOiBuZXh0LTEKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKGNoYW5nZSkgewogICAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VzW3BhZ2VdOwogICAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VQbGFjZVtwYWdlXTsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlWm9vbVtwYWdlXTsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlT2Jqc1twYWdlXTsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlV3JhcFtwYWdlXTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICBpZiAoY2hhbmdlPjApCiAgICAgIGZvciAocGFnZT1kYXRhLnRvdGFsUGFnZXM7IHBhZ2U+PWZyb207IHBhZ2UtLSkKICAgICAgICBtb3ZlKHBhZ2UpOwogICAgZWxzZQogICAgICBmb3IgKHBhZ2U9ZnJvbTsgcGFnZTw9ZGF0YS50b3RhbFBhZ2VzOyBwYWdlKyspCiAgICAgICAgbW92ZShwYWdlKTsKCiAgfSwKCiAgLy8gU2V0cyBvciBHZXRzIHRoZSBkaXNwbGF5IG1vZGUKCiAgZGlzcGxheTogZnVuY3Rpb24oZGlzcGxheSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIGN1cnJlbnREaXNwbGF5ID0gZGF0YS5kaXNwbGF5OwoKICAgIGlmIChkaXNwbGF5PT09dW5kZWZpbmVkKSB7CiAgICAgIAogICAgICByZXR1cm4gY3VycmVudERpc3BsYXk7CgogICAgfSBlbHNlIHsKCiAgICAgIGlmICgkLmluQXJyYXkoZGlzcGxheSwgZGlzcGxheXMpPT0tMSkKICAgICAgICB0aHJvdyB0dXJuRXJyb3IoJyInK2Rpc3BsYXkgKyAnIiBpcyBub3QgYSB2YWx1ZSBmb3IgZGlzcGxheScpOwogICAgICAKICAgICAgc3dpdGNoKGRpc3BsYXkpIHsKICAgICAgICBjYXNlICdzaW5nbGUnOgoKICAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFsIHBhZ2UgdG8gdXNlIGFzIGZvbGRlZCBwYWdlCgogICAgICAgICAgaWYgKCFkYXRhLnBhZ2VPYmpzWzBdKSB7CiAgICAgICAgICAgIHRoaXMudHVybignc3RvcCcpLgogICAgICAgICAgICAgIGNzcyh7J292ZXJmbG93JzogJ2hpZGRlbid9KTsKCiAgICAgICAgICAgIGRhdGEucGFnZU9ianNbMF0gPSAkKCc8ZGl2IC8+JywKICAgICAgICAgICAgICAgIHsnY2xhc3MnOiAncGFnZSBwLXRlbXBvcmFsJ30pLgogICAgICAgICAgICAgIGNzcyh7d2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpfSkuCiAgICAgICAgICAgICAgYXBwZW5kVG8odGhpcyk7CiAgICAgICAgICB9CgogICAgICAgICAgdGhpcy5hZGRDbGFzcygnc2hhZG93Jyk7CgogICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2RvdWJsZSc6CgogICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZW1wb3JhbCBwYWdlCgogICAgICAgICAgaWYgKGRhdGEucGFnZU9ianNbMF0pIHsKICAgICAgICAgICAgdGhpcy50dXJuKCdzdG9wJykuY3NzKHsnb3ZlcmZsb3cnOiAnJ30pOwogICAgICAgICAgICBkYXRhLnBhZ2VPYmpzWzBdLnJlbW92ZSgpOwogICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlT2Jqc1swXTsKICAgICAgICAgIH0KCiAgICAgICAgICB0aGlzLnJlbW92ZUNsYXNzKCdzaGFkb3cnKTsKCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgCgogICAgICBkYXRhLmRpc3BsYXkgPSBkaXNwbGF5OwoKICAgICAgaWYgKGN1cnJlbnREaXNwbGF5KSB7CiAgICAgICAgdmFyIHNpemUgPSB0aGlzLnR1cm4oJ3NpemUnKTsKICAgICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgMSwgMCk7CiAgICAgICAgdGhpcy50dXJuKCdzaXplJywgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpLgogICAgICAgICAgdHVybigndXBkYXRlJyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzOwoKICAgIH0KICAKICB9LAogIAogIC8vIEdldHMgYW5kIHNldHMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxpcGJvb2sKCiAgZGlyZWN0aW9uOiBmdW5jdGlvbihkaXIpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkaXI9PT11bmRlZmluZWQpIHsKCiAgICAgIHJldHVybiBkYXRhLmRpcmVjdGlvbjsKCiAgICB9IGVsc2UgewoKICAgICAgZGlyID0gZGlyLnRvTG93ZXJDYXNlKCk7CgogICAgICBpZiAoJC5pbkFycmF5KGRpciwgZGlyZWN0aW9ucyk9PS0xKQogICAgICAgIHRocm93IHR1cm5FcnJvcignIicgKyBkaXIgKyAnIiBpcyBub3QgYSB2YWx1ZSBmb3IgZGlyZWN0aW9uJyk7CgogICAgICBpZiAoZGlyPT0ncnRsJykgewogICAgICAgICQodGhpcykuYXR0cignZGlyJywgJ2x0cicpLgogICAgICAgICAgY3NzKHtkaXJlY3Rpb246ICdsdHInfSk7CiAgICAgIH0KCiAgICAgIGRhdGEuZGlyZWN0aW9uID0gZGlyOwoKICAgICAgaWYgKGRhdGEuZG9uZSkKICAgICAgICB0aGlzLnR1cm4oJ3NpemUnLCAkKHRoaXMpLndpZHRoKCksICQodGhpcykuaGVpZ2h0KCkpOwoKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogIH0sCgogIC8vIERldGVjdHMgYW5pbWF0aW9uCgogIGFuaW1hdGluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMuZGF0YSgpLnBhZ2VNdi5sZW5ndGg+MDsKCiAgfSwKCiAgLy8gR2V0cyB0aGUgY3VycmVudCBhY3RpdmF0ZWQgY29ybmVyCgogIGNvcm5lcjogZnVuY3Rpb24oKSB7CiAgICAKICAgIHZhciBjb3JuZXIsCiAgICAgIHBhZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlcykgewogICAgICBpZiAoaGFzKHBhZ2UsIGRhdGEucGFnZXMpKQogICAgICAgIGlmICgoY29ybmVyID0gZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdjb3JuZXInKSkpIHsKICAgICAgICAgIHJldHVybiBjb3JuZXI7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBmYWxzZTsKICB9LAoKICAvLyBHZXRzIHRoZSBkYXRhIHN0b3JlZCBpbiB0aGUgZmxpcGJvb2sKCiAgZGF0YTogZnVuY3Rpb24oKSB7CiAgICAKICAgIHJldHVybiB0aGlzLmRhdGEoKTsKCiAgfSwKCiAgLy8gRGlzYWJsZXMgYW5kIGVuYWJsZXMgdGhlIGVmZmVjdAoKICBkaXNhYmxlOiBmdW5jdGlvbihkaXNhYmxlKSB7CgogICAgdmFyIHBhZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgIGRhdGEuZGlzYWJsZWQgPSBkaXNhYmxlPT09dW5kZWZpbmVkIHx8IGRpc2FibGU9PT10cnVlOwoKICAgIGZvciAocGFnZSBpbiBkYXRhLnBhZ2VzKSB7CiAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykpCiAgICAgICAgZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdkaXNhYmxlJywKICAgICAgICAgIChkYXRhLmRpc2FibGVkKSA/IHRydWUgOiAkLmluQXJyYXkocGFyc2VJbnQocGFnZSwgMTApLCB2aWV3KT09LTEpOwogICAgfQoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEaXNhYmxlcyBhbmQgZW5hYmxlcyB0aGUgZWZmZWN0CgogIGRpc2FibGVkOiBmdW5jdGlvbihkaXNhYmxlKSB7CgogICAgaWYgKGRpc2FibGU9PT11bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIHRoaXMuZGF0YSgpLmRpc2FibGVkPT09dHJ1ZTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB0aGlzLnR1cm4oJ2Rpc2FibGUnLCBkaXNhYmxlKTsKICAgIH0KCiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgc2l6ZQoKICBzaXplOiBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7CgogICAgaWYgKHdpZHRoPT09dW5kZWZpbmVkIHx8IGhlaWdodD09PXVuZGVmaW5lZCkgewogICAgICAKICAgICAgcmV0dXJuIHt3aWR0aDogdGhpcy53aWR0aCgpLCBoZWlnaHQ6IHRoaXMuaGVpZ2h0KCl9OwoKICAgIH0gZWxzZSB7CgogICAgICB0aGlzLnR1cm4oJ3N0b3AnKTsKCiAgICAgIHZhciBwYWdlLCBwcm9wLAogICAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgICBwYWdlV2lkdGggPSAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJykgPyB3aWR0aC8yIDogd2lkdGg7CgogICAgICB0aGlzLmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwoKICAgICAgaWYgKGRhdGEucGFnZU9ianNbMF0pCiAgICAgICAgZGF0YS5wYWdlT2Jqc1swXS5jc3Moe3dpZHRoOiBwYWdlV2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICAgIAogICAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkgewogICAgICAgIGlmICghaGFzKHBhZ2UsIGRhdGEucGFnZVdyYXApKSBjb250aW51ZTsKCiAgICAgICAgcHJvcCA9IHR1cm5NZXRob2RzLl9wYWdlU2l6ZS5jYWxsKHRoaXMsIHBhZ2UsIHRydWUpOwoKICAgICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdLmNzcyh7d2lkdGg6IHByb3Aud2lkdGgsIGhlaWdodDogcHJvcC5oZWlnaHR9KTsKICAgICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcyhwcm9wKTsKICAgICAgICAKICAgICAgICBpZiAoZGF0YS5wYWdlc1twYWdlXSkKICAgICAgICAgIGRhdGEucGFnZXNbcGFnZV0uY3NzKHt3aWR0aDogcHJvcC53aWR0aCwgaGVpZ2h0OiBwcm9wLmhlaWdodH0pOwogICAgICB9CgogICAgICB0aGlzLnR1cm4oJ3Jlc2l6ZScpOwoKICAgICAgcmV0dXJuIHRoaXM7CgogICAgfQogIH0sCgogIC8vIFJlc2l6ZXMgZWFjaCBwYWdlCgogIHJlc2l6ZTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoZGF0YS5wYWdlc1swXSkgewogICAgICBkYXRhLnBhZ2VXcmFwWzBdLmNzcyh7bGVmdDogLXRoaXMud2lkdGgoKX0pOwogICAgICBkYXRhLnBhZ2VzWzBdLmZsaXAoJ3Jlc2l6ZScsIHRydWUpOwogICAgfQoKICAgIGZvciAocGFnZSA9IDE7IHBhZ2UgPD0gZGF0YS50b3RhbFBhZ2VzOyBwYWdlKyspCiAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKQogICAgICAgIGRhdGEucGFnZXNbcGFnZV0uZmxpcCgncmVzaXplJywgdHJ1ZSk7CgogICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKHRoaXMpOwoKICAgIGlmIChkYXRhLm9wdHMuYXV0b0NlbnRlcikKICAgICAgdGhpcy50dXJuKCdjZW50ZXInKTsKCiAgfSwKCiAgLy8gUmVtb3ZlcyBhbiBhbmltYXRpb24gZnJvbSB0aGUgY2FjaGUKCiAgX3JlbW92ZU12OiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGksIGRhdGEgPSB0aGlzLmRhdGEoKTsKICAgICAgCiAgICBmb3IgKGk9MDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykKICAgICAgaWYgKGRhdGEucGFnZU12W2ldPT1wYWdlKSB7CiAgICAgICAgZGF0YS5wYWdlTXYuc3BsaWNlKGksIDEpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CgogICAgcmV0dXJuIGZhbHNlOwoKICB9LAoKICAvLyBBZGRzIGFuIGFuaW1hdGlvbiB0byB0aGUgY2FjaGUKICAKICBfYWRkTXY6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIHR1cm5NZXRob2RzLl9yZW1vdmVNdi5jYWxsKHRoaXMsIHBhZ2UpOwogICAgZGF0YS5wYWdlTXYucHVzaChwYWdlKTsKCiAgfSwKCiAgLy8gR2V0cyBpbmRleGVzIGZvciBhIHZpZXcKCiAgX3ZpZXc6IGZ1bmN0aW9uKHBhZ2UpIHsKICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICAKICAgIHBhZ2UgPSBwYWdlIHx8IGRhdGEucGFnZTsKCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJykKICAgICAgcmV0dXJuIChwYWdlJTIpID8gW3BhZ2UtMSwgcGFnZV0gOiBbcGFnZSwgcGFnZSsxXTsKICAgIGVsc2UKICAgICAgcmV0dXJuIFtwYWdlXTsKCiAgfSwKCiAgLy8gR2V0cyBhIHZpZXcKCiAgdmlldzogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0dXJuTWV0aG9kcy5fdmlldy5jYWxsKHRoaXMsIHBhZ2UpOwoKICAgIGlmIChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKQogICAgICByZXR1cm4gWyh2aWV3WzBdPjApID8gdmlld1swXSA6IDAsCiAgICAgICAgKHZpZXdbMV08PWRhdGEudG90YWxQYWdlcykgPyB2aWV3WzFdIDogMF07CiAgICBlbHNlCiAgICAgIHJldHVybiBbKHZpZXdbMF0+MCAmJiB2aWV3WzBdPD1kYXRhLnRvdGFsUGFnZXMpID8gdmlld1swXSA6IDBdOwoKICB9LAoKICAvLyBTdG9wcyBhbmltYXRpb25zCgogIHN0b3A6IGZ1bmN0aW9uKGlnbm9yZSwgYW5pbWF0ZSkgewoKICAgIGlmICh0aGlzLnR1cm4oJ2FuaW1hdGluZycpKSB7CiAgCiAgICAgIHZhciBpLCBvcHRzLCBwYWdlLAogICAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICAgIGlmIChkYXRhLnRwYWdlKSB7CiAgICAgICAgZGF0YS5wYWdlID0gZGF0YS50cGFnZTsKICAgICAgICBkZWxldGUgZGF0YVsndHBhZ2UnXTsKICAgICAgfQoKICAgICAgZm9yIChpID0gMDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykgewoKICAgICAgICBpZiAoIWRhdGEucGFnZU12W2ldIHx8IGRhdGEucGFnZU12W2ldPT09aWdub3JlKQogICAgICAgICAgY29udGludWU7CgogICAgICAgIHBhZ2UgPSBkYXRhLnBhZ2VzW2RhdGEucGFnZU12W2ldXTsKICAgICAgICBvcHRzID0gcGFnZS5kYXRhKCkuZi5vcHRzOwoKICAgICAgICBwYWdlLmZsaXAoJ2hpZGVGb2xkZWRQYWdlJywgYW5pbWF0ZSk7CgogICAgICAgIGlmICghYW5pbWF0ZSkKICAgICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbChwYWdlLCBmYWxzZSk7CgogICAgICAgIGlmIChvcHRzLmZvcmNlKSB7CiAgICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5wYWdlJTI9PT0wKSA/IG9wdHMucGFnZS0xIDogb3B0cy5wYWdlKzE7CiAgICAgICAgICBkZWxldGUgb3B0c1snZm9yY2UnXTsKICAgICAgICB9CgogICAgICB9CiAgICB9CiAgICAKICAgIHRoaXMudHVybigndXBkYXRlJyk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgbnVtYmVyIG9mIHBhZ2VzCgogIHBhZ2VzOiBmdW5jdGlvbihwYWdlcykgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHBhZ2VzKSB7CgogICAgICBpZiAocGFnZXM8ZGF0YS50b3RhbFBhZ2VzKSB7CgogICAgICAgIGZvciAodmFyIHBhZ2UgPSBkYXRhLnRvdGFsUGFnZXM7IHBhZ2U+cGFnZXM7IHBhZ2UtLSkKICAgICAgICAgIHRoaXMudHVybigncmVtb3ZlUGFnZScsIHBhZ2UpOwoKICAgICAgfQoKICAgICAgICBkYXRhLnRvdGFsUGFnZXMgPSBwYWdlczsKICAgICAgICB0dXJuTWV0aG9kcy5fZml0UGFnZS5jYWxsKHRoaXMsIGRhdGEucGFnZSk7CgogICAgICByZXR1cm4gdGhpczsKCiAgICB9IGVsc2UKICAgICAgcmV0dXJuIGRhdGEudG90YWxQYWdlczsKCiAgfSwKCiAgLy8gQ2hlY2tzIG1pc3NpbmcgcGFnZXMKCiAgX21pc3NpbmcgOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKGRhdGEudG90YWxQYWdlczwxKQogICAgICByZXR1cm47CgogICAgdmFyIHAsCiAgICAgICAgcmFuZ2UgPSB0aGlzLnR1cm4oJ3JhbmdlJywgcGFnZSksCiAgICAgICAgbWlzc2luZyA9IFtdOwoKICAgIGZvciAocCA9IHJhbmdlWzBdOyBwPD1yYW5nZVsxXTsgcCsrKSB7CiAgICAgIGlmICghZGF0YS5wYWdlT2Jqc1twXSkKICAgICAgICBtaXNzaW5nLnB1c2gocCk7CiAgICB9CgogICAgaWYgKG1pc3NpbmcubGVuZ3RoPjApCiAgICAgIHRoaXMudHJpZ2dlcignbWlzc2luZycsIFttaXNzaW5nXSk7CgogIH0sCgogIC8vIFNldHMgYSBwYWdlIHdpdGhvdXQgZWZmZWN0CgogIF9maXRQYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIHBhZ2UpOwoKICAgIHR1cm5NZXRob2RzLl9taXNzaW5nLmNhbGwodGhpcywgcGFnZSk7CiAgICAKICAgIGlmICghZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgcmV0dXJuOwoKICAgIGRhdGEucGFnZSA9IHBhZ2U7CiAgCiAgICB0aGlzLnR1cm4oJ3N0b3AnKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaTxuZXdWaWV3Lmxlbmd0aDsgaSsrKSB7CgogICAgICBpZiAobmV3Vmlld1tpXSAmJiBkYXRhLnBhZ2Vab29tW25ld1ZpZXdbaV1dIT1kYXRhLnpvb20pIHsKICAKICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb21lZCcsWwogICAgICAgICAgbmV3Vmlld1tpXSwKICAgICAgICAgIG5ld1ZpZXcsCiAgICAgICAgICBkYXRhLnBhZ2Vab29tW25ld1ZpZXdbaV1dLAogICAgICAgICAgZGF0YS56b29tXSk7CgogICAgICAgIGRhdGEucGFnZVpvb21bbmV3Vmlld1tpXV0gPSBkYXRhLnpvb207CgogICAgICB9CiAgICB9CgogICAgdHVybk1ldGhvZHMuX3JlbW92ZUZyb21ET00uY2FsbCh0aGlzKTsKICAgIHR1cm5NZXRob2RzLl9tYWtlUmFuZ2UuY2FsbCh0aGlzKTsKICAgIHR1cm5NZXRob2RzLl91cGRhdGVTaGFkb3cuY2FsbCh0aGlzKTsKICAgIHRoaXMudHJpZ2dlcigndHVybmVkJywgW3BhZ2UsIG5ld1ZpZXddKTsKICAgIHRoaXMudHVybigndXBkYXRlJyk7CgogICAgaWYgKGRhdGEub3B0cy5hdXRvQ2VudGVyKQogICAgICB0aGlzLnR1cm4oJ2NlbnRlcicpOwoKICB9LAogIAogIC8vIFR1cm5zIHRoZSBwYWdlCgogIF90dXJuUGFnZTogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBjdXJyZW50LAogICAgICBuZXh0LAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHBsYWNlID0gZGF0YS5wYWdlUGxhY2VbcGFnZV0sCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKSwKICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIHBhZ2UpOwoKCiAgICBpZiAoZGF0YS5wYWdlIT1wYWdlKSB7CgogICAgICB2YXIgY3VycmVudFBhZ2UgPSBkYXRhLnBhZ2U7CgogICAgICBpZiAodHJpZ2dlcigndHVybmluZycsIHRoaXMsIFtwYWdlLCBuZXdWaWV3XSk9PSdwcmV2ZW50ZWQnKSB7CgogICAgICAgIGlmIChjdXJyZW50UGFnZT09ZGF0YS5wYWdlICYmICQuaW5BcnJheShwbGFjZSwgZGF0YS5wYWdlTXYpIT0tMSkKICAgICAgICAgIGRhdGEucGFnZXNbcGxhY2VdLmZsaXAoJ2hpZGVGb2xkZWRQYWdlJywgdHJ1ZSk7CiAgICAgICAgCiAgICAgICAgcmV0dXJuOwoKICAgICAgfQoKICAgICAgaWYgKCQuaW5BcnJheSgxLCBuZXdWaWV3KSE9LTEpCiAgICAgICAgdGhpcy50cmlnZ2VyKCdmaXJzdCcpOwogICAgICBpZiAoJC5pbkFycmF5KGRhdGEudG90YWxQYWdlcywgbmV3VmlldykhPS0xKQogICAgICAgIHRoaXMudHJpZ2dlcignbGFzdCcpOwoKICAgIH0KCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nc2luZ2xlJykgewogICAgICBjdXJyZW50ID0gdmlld1swXTsKICAgICAgbmV4dCA9IG5ld1ZpZXdbMF07CiAgICB9IGVsc2UgaWYgKHZpZXdbMV0gJiYgcGFnZT52aWV3WzFdKSB7CiAgICAgIGN1cnJlbnQgPSB2aWV3WzFdOwogICAgICBuZXh0ID0gbmV3Vmlld1swXTsKICAgIH0gZWxzZSBpZiAodmlld1swXSAmJiBwYWdlPHZpZXdbMF0pIHsKICAgICAgY3VycmVudCA9IHZpZXdbMF07CiAgICAgIG5leHQgPSBuZXdWaWV3WzFdOwogICAgfQoKICAgIHZhciBvcHRzQ29ybmVycyA9IGRhdGEub3B0cy50dXJuQ29ybmVycy5zcGxpdCgnLCcpLAogICAgICBmbGlwRGF0YSA9IGRhdGEucGFnZXNbY3VycmVudF0uZGF0YSgpLmYsCiAgICAgIG9wdHMgPSBmbGlwRGF0YS5vcHRzLAogICAgICBhY3R1YWxQb2ludCA9IGZsaXBEYXRhLnBvaW50OwoKICAgIHR1cm5NZXRob2RzLl9taXNzaW5nLmNhbGwodGhpcywgcGFnZSk7CiAgICAKICAgIGlmICghZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgcmV0dXJuOwoKICAgIHRoaXMudHVybignc3RvcCcpOwoKICAgIGRhdGEucGFnZSA9IHBhZ2U7CgogICAgdHVybk1ldGhvZHMuX21ha2VSYW5nZS5jYWxsKHRoaXMpOwoKICAgIGRhdGEudHBhZ2UgPSBuZXh0OwoKICAgIGlmIChvcHRzLm5leHQhPW5leHQpIHsKICAgICAgb3B0cy5uZXh0ID0gbmV4dDsKICAgICAgb3B0cy5mb3JjZSA9IHRydWU7CiAgICB9CgogICAgdGhpcy50dXJuKCd1cGRhdGUnKTsKCiAgICBmbGlwRGF0YS5wb2ludCA9IGFjdHVhbFBvaW50OwogICAgCiAgICBpZiAoZmxpcERhdGEuZWZmZWN0PT0naGFyZCcpCiAgICAgIGlmIChkYXRhLmRpcmVjdGlvbj09J2x0cicpCiAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScsCiAgICAgICAgICAocGFnZT5jdXJyZW50KSA/ICdyJyA6ICdsJyk7CiAgICAgIGVsc2UKICAgICAgICBkYXRhLnBhZ2VzW2N1cnJlbnRdLmZsaXAoJ3R1cm5QYWdlJywKICAgICAgICAgIChwYWdlPmN1cnJlbnQpID8gJ2wnIDogJ3InKTsKICAgIGVsc2UgewogICAgICBpZiAoZGF0YS5kaXJlY3Rpb249PSdsdHInKQogICAgICAgIGRhdGEucGFnZXNbY3VycmVudF0uZmxpcCgndHVyblBhZ2UnLAogICAgICAgICAgb3B0c0Nvcm5lcnNbKHBhZ2U+Y3VycmVudCkgPyAxIDogMF0pOwogICAgICBlbHNlCiAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScsCiAgICAgICAgICBvcHRzQ29ybmVyc1socGFnZT5jdXJyZW50KSA/IDAgOiAxXSk7CiAgICB9CgogIH0sCgogIC8vIEdldHMgYW5kIHNldHMgYSBwYWdlCgogIHBhZ2U6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChwYWdlPT09dW5kZWZpbmVkKSB7CiAgICAgIAogICAgICByZXR1cm4gZGF0YS5wYWdlOwoKICAgIH0gZWxzZSB7CgogICAgICBpZiAoIWRhdGEuZGlzYWJsZWQgJiYgIWRhdGEuZGVzdHJveWluZykgewoKICAgICAgICBwYWdlID0gcGFyc2VJbnQocGFnZSwgMTApOwoKICAgICAgICBpZiAocGFnZT4wICYmIHBhZ2U8PWRhdGEudG90YWxQYWdlcykgewoKICAgICAgICAgIGlmIChwYWdlIT1kYXRhLnBhZ2UpIHsKICAgICAgICAgICAgaWYgKCFkYXRhLmRvbmUgfHwgJC5pbkFycmF5KHBhZ2UsIHRoaXMudHVybigndmlldycpKSE9LTEpCiAgICAgICAgICAgICAgdHVybk1ldGhvZHMuX2ZpdFBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHR1cm5NZXRob2RzLl90dXJuUGFnZS5jYWxsKHRoaXMsIHBhZ2UpOwogICAgICAgICAgfQogICAgICAKICAgICAgICAgIHJldHVybiB0aGlzOwoKICAgICAgICB9IGVsc2UgewogICAgICAgIAogICAgICAgICAgdGhyb3cgdHVybkVycm9yKCdUaGUgcGFnZSAnICsgcGFnZSArICcgZG9lcyBub3QgZXhpc3QnKTsKCiAgICAgICAgfQoKICAgICAgfQoKICAgIH0KCiAgfSwKCiAgLy8gVHVybnMgdG8gdGhlIG5leHQgdmlldwoKICBuZXh0OiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gdGhpcy50dXJuKCdwYWdlJywgTWF0aC5taW4odGhpcy5kYXRhKCkudG90YWxQYWdlcywKICAgICAgdHVybk1ldGhvZHMuX3ZpZXcuY2FsbCh0aGlzLCB0aGlzLmRhdGEoKS5wYWdlKS5wb3AoKSArIDEpKTsKICAKICB9LAoKICAvLyBUdXJucyB0byB0aGUgcHJldmlvdXMgdmlldwoKICBwcmV2aW91czogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMudHVybigncGFnZScsIE1hdGgubWF4KDEsCiAgICAgIHR1cm5NZXRob2RzLl92aWV3LmNhbGwodGhpcywgdGhpcy5kYXRhKCkucGFnZSkuc2hpZnQoKSAtIDEpKTsKCiAgfSwKCiAgLy8gU2hvd3MgYSBwZWVsaW5nIGNvcm5lcgoKICBwZWVsOiBmdW5jdGlvbihjb3JuZXIsIGFuaW1hdGUpIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgIGFuaW1hdGUgPSAoYW5pbWF0ZT09PXVuZGVmaW5lZCkgPyB0cnVlIDogYW5pbWF0ZT09PXRydWU7CgogICAgaWYgKGNvcm5lcj09PWZhbHNlKSB7CiAgICAgIAogICAgICB0aGlzLnR1cm4oJ3N0b3AnLCBudWxsLCBhbmltYXRlKTsKCiAgICB9IGVsc2UgewogICAgCiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICAgIGRhdGEucGFnZXNbZGF0YS5wYWdlXS5mbGlwKCdwZWVsJywgY29ybmVyLCBhbmltYXRlKTsKCiAgICAgIH0gZWxzZSB7CgogICAgICAgIHZhciBwYWdlOwoKICAgICAgICBpZiAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSB7CiAgICAgICAgICAKICAgICAgICAgIHBhZ2UgPSAoY29ybmVyLmluZGV4T2YoJ2wnKSE9LTEpID8gdmlld1swXSA6IHZpZXdbMV07CgogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAKICAgICAgICAgIHBhZ2UgPSAoY29ybmVyLmluZGV4T2YoJ2wnKSE9LTEpID8gdmlld1sxXSA6IHZpZXdbMF07CgogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoZGF0YS5wYWdlc1twYWdlXSkKICAgICAgICAgIGRhdGEucGFnZXNbcGFnZV0uZmxpcCgncGVlbCcsIGNvcm5lciwgYW5pbWF0ZSk7CgogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRoaXM7CgogIH0sCgogIC8vIEFkZHMgYSBtb3Rpb24gdG8gdGhlIGludGVybmFsIGxpc3QKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2FkZE1vdGlvblBhZ2U6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBvcHRzID0gJCh0aGlzKS5kYXRhKCkuZi5vcHRzLAogICAgICB0dXJuID0gb3B0cy50dXJuLAogICAgICBkZCA9IHR1cm4uZGF0YSgpOwoKICAgIHR1cm5NZXRob2RzLl9hZGRNdi5jYWxsKHR1cm4sIG9wdHMucGFnZSk7CgogIH0sCgogIC8vIFRoaXMgZXZlbnQgaXMgY2FsbGVkIGluIGNvbnRleHQgb2YgZmxpcAoKICBfZXZlbnRTdGFydDogZnVuY3Rpb24oZSwgb3B0cywgY29ybmVyKSB7CgogICAgdmFyIGRhdGEgPSBvcHRzLnR1cm4uZGF0YSgpLAogICAgICBhY3R1YWxab29tID0gZGF0YS5wYWdlWm9vbVtvcHRzLnBhZ2VdOwoKICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CiAgICAgIHR1cm5NZXRob2RzLl91cGRhdGVTaGFkb3cuY2FsbChvcHRzLnR1cm4pOwogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKGFjdHVhbFpvb20gJiYgYWN0dWFsWm9vbSE9ZGF0YS56b29tKSB7CiAgICAgIAogICAgICBvcHRzLnR1cm4udHJpZ2dlcignem9vbWVkJyxbCiAgICAgICAgb3B0cy5wYWdlLAogICAgICAgIG9wdHMudHVybi50dXJuKCd2aWV3Jywgb3B0cy5wYWdlKSwKICAgICAgICBhY3R1YWxab29tLAogICAgICAgIGRhdGEuem9vbV0pOwoKICAgICAgZGF0YS5wYWdlWm9vbVtvcHRzLnBhZ2VdID0gZGF0YS56b29tOwoKICAgIH0KCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nc2luZ2xlJyAmJiBjb3JuZXIpIHsKCiAgICAgIGlmICgoY29ybmVyLmNoYXJBdCgxKT09J2wnICYmIGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgfHwKICAgICAgICAoY29ybmVyLmNoYXJBdCgxKT09J3InICYmIGRhdGEuZGlyZWN0aW9uPT0ncnRsJykpCiAgICAgIHsKICAgICAgICAKICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5uZXh0PG9wdHMucGFnZSkgPyBvcHRzLm5leHQgOiBvcHRzLnBhZ2UtMTsKICAgICAgICBvcHRzLmZvcmNlID0gdHJ1ZTsKCiAgICAgIH0gZWxzZSB7CiAgICAgICAgCiAgICAgICAgb3B0cy5uZXh0ID0gKG9wdHMubmV4dD5vcHRzLnBhZ2UpID8gb3B0cy5uZXh0IDogb3B0cy5wYWdlKzE7CgogICAgICB9CgogICAgfQoKICAgIHR1cm5NZXRob2RzLl9hZGRNb3Rpb25QYWdlLmNhbGwoZS50YXJnZXQpOwogICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKG9wdHMudHVybik7CiAgfSwKCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCgogIF9ldmVudEVuZDogZnVuY3Rpb24oZSwgb3B0cywgdHVybmVkKSB7CiAgCiAgICB2YXIgdGhhdCA9ICQoZS50YXJnZXQpLAogICAgICBkYXRhID0gdGhhdC5kYXRhKCkuZiwKICAgICAgdHVybiA9IG9wdHMudHVybiwKICAgICAgZGQgPSB0dXJuLmRhdGEoKTsKCiAgICBpZiAodHVybmVkKSB7CgogICAgICB2YXIgdHBhZ2UgPSBkZC50cGFnZSB8fCBkZC5wYWdlOwogICAgCiAgICAgIGlmICh0cGFnZT09b3B0cy5uZXh0IHx8IHRwYWdlPT1vcHRzLnBhZ2UpIHsKICAgICAgICBkZWxldGUgZGQudHBhZ2U7CgogICAgICAgIHR1cm5NZXRob2RzLl9maXRQYWdlLmNhbGwodHVybiwgdHBhZ2UgfHwgb3B0cy5uZXh0LCB0cnVlKTsKICAgICAgfQoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlTXYuY2FsbCh0dXJuLCBvcHRzLnBhZ2UpOwogICAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwodHVybik7CiAgICAgIHR1cm4udHVybigndXBkYXRlJyk7CgogICAgfQogICAgCiAgfSwKICAKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2V2ZW50UHJlc3NlZDogZnVuY3Rpb24oZSkgewoKICAgIHZhciBwYWdlLAogICAgICBkYXRhID0gJChlLnRhcmdldCkuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKSwKICAgICAgcGFnZXMgPSB0dXJuRGF0YS5wYWdlczsKICAgIAogICAgdHVybkRhdGEubW91c2VBY3Rpb24gPSB0cnVlOwoKICAgIHR1cm4udHVybigndXBkYXRlJyk7CgogICAgcmV0dXJuIGRhdGEudGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwoKICB9LAoKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2V2ZW50UmVsZWFzZWQ6IGZ1bmN0aW9uKGUsIHBvaW50KSB7CgogICAgdmFyIG91dEFyZWEsCiAgICAgIHBhZ2UgPSAkKGUudGFyZ2V0KSwKICAgICAgZGF0YSA9IHBhZ2UuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKTsKICAgIAogICAgaWYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CiAgICAgIG91dEFyZWEgPSAocG9pbnQuY29ybmVyPT0nYnInIHx8IHBvaW50LmNvcm5lcj09J3RyJykgPwogICAgICAgIHBvaW50Lng8cGFnZS53aWR0aCgpLzI6CiAgICAgICAgcG9pbnQueD5wYWdlLndpZHRoKCkvMjsKICAgIH0gZWxzZSB7CiAgICAgIG91dEFyZWEgPSBwb2ludC54PDAgfHwgcG9pbnQueD5wYWdlLndpZHRoKCk7CiAgICB9CgogICAgaWYgKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCktZGF0YS50aW1lPDIwMCB8fCBvdXRBcmVhKSB7CgogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHR1cm5NZXRob2RzLl90dXJuUGFnZS5jYWxsKHR1cm4sIGRhdGEub3B0cy5uZXh0KTsKCiAgICB9CgogICAgdHVybkRhdGEubW91c2VBY3Rpb24gPSBmYWxzZTsKCiAgfSwKCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCiAgCiAgX2ZsaXA6IGZ1bmN0aW9uKGUpIHsKCiAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwoKICAgIHZhciBvcHRzID0gJChlLnRhcmdldCkuZGF0YSgpLmYub3B0czsKCiAgICBvcHRzLnR1cm4udHJpZ2dlcigndHVybicsIFtvcHRzLm5leHRdKTsKCiAgICBpZiAob3B0cy50dXJuLmRhdGEoKS5vcHRzLmF1dG9DZW50ZXIpIHsKICAgICAgb3B0cy50dXJuLnR1cm4oJ2NlbnRlcicsIG9wdHMubmV4dCk7CiAgICB9CgogIH0sCgogLy8KICBfdG91Y2hTdGFydDogZnVuY3Rpb24oKSB7CiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwogICAgZm9yICh2YXIgcGFnZSBpbiBkYXRhLnBhZ2VzKSB7CiAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykgJiYKICAgICAgICBmbGlwTWV0aG9kcy5fZXZlbnRTdGFydC5hcHBseShkYXRhLnBhZ2VzW3BhZ2VdLCBhcmd1bWVudHMpPT09ZmFsc2UpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQogIH0sCiAgCiAgLy8KICBfdG91Y2hNb3ZlOiBmdW5jdGlvbigpIHsKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpIHsKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VzKSkgewogICAgICAgIGZsaXBNZXRob2RzLl9ldmVudE1vdmUuYXBwbHkoZGF0YS5wYWdlc1twYWdlXSwgYXJndW1lbnRzKTsKICAgICAgfQogICAgfQogIH0sCgogIC8vCiAgX3RvdWNoRW5kOiBmdW5jdGlvbigpIHsKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpIHsKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VzKSkgewogICAgICAgIGZsaXBNZXRob2RzLl9ldmVudEVuZC5hcHBseShkYXRhLnBhZ2VzW3BhZ2VdLCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9CiAgfSwKCiAgLy8gQ2FsY3VsYXRlIHRoZSB6LWluZGV4IHZhbHVlIGZvciBwYWdlcyBkdXJpbmcgdGhlIGFuaW1hdGlvbgoKICBjYWxjdWxhdGVaOiBmdW5jdGlvbihtdikgewoKICAgIHZhciBpLCBwYWdlLCBuZXh0UGFnZSwgcGxhY2VQYWdlLCBkcGFnZSwKICAgICAgdGhhdCA9IHRoaXMsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpLAogICAgICBjdXJyZW50UGFnZSA9IHZpZXdbMF0gfHwgdmlld1sxXSwKICAgICAgdG90YWwgPSBtdi5sZW5ndGgtMSwKICAgICAgciA9IHtwYWdlWjoge30sIHBhcnRaOiB7fSwgcGFnZVY6IHt9fSwKCiAgICAgIGFkZFZpZXcgPSBmdW5jdGlvbihwYWdlKSB7CiAgICAgICAgdmFyIHZpZXcgPSB0aGF0LnR1cm4oJ3ZpZXcnLCBwYWdlKTsKICAgICAgICBpZiAodmlld1swXSkgci5wYWdlVlt2aWV3WzBdXSA9IHRydWU7CiAgICAgICAgaWYgKHZpZXdbMV0pIHIucGFnZVZbdmlld1sxXV0gPSB0cnVlOwogICAgICB9OwogICAgCiAgICBmb3IgKGkgPSAwOyBpPD10b3RhbDsgaSsrKSB7CiAgICAgIHBhZ2UgPSBtdltpXTsKICAgICAgbmV4dFBhZ2UgPSBkYXRhLnBhZ2VzW3BhZ2VdLmRhdGEoKS5mLm9wdHMubmV4dDsKICAgICAgcGxhY2VQYWdlID0gZGF0YS5wYWdlUGxhY2VbcGFnZV07CiAgICAgIGFkZFZpZXcocGFnZSk7CiAgICAgIGFkZFZpZXcobmV4dFBhZ2UpOwogICAgICBkcGFnZSA9IChkYXRhLnBhZ2VQbGFjZVtuZXh0UGFnZV09PW5leHRQYWdlKSA/IG5leHRQYWdlIDogcGFnZTsKICAgICAgci5wYWdlWltkcGFnZV0gPSBkYXRhLnRvdGFsUGFnZXMgLSBNYXRoLmFicyhjdXJyZW50UGFnZS1kcGFnZSk7CiAgICAgIHIucGFydFpbcGxhY2VQYWdlXSA9IGRhdGEudG90YWxQYWdlcyoyIC0gIHRvdGFsICsgaTsKICAgIH0KCiAgICByZXR1cm4gcjsKICB9LAoKICAvLyBVcGRhdGVzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGV2ZXJ5IHBhZ2UKCiAgdXBkYXRlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmICh0aGlzLnR1cm4oJ2FuaW1hdGluZycpICYmIGRhdGEucGFnZU12WzBdIT09MCkgewoKICAgICAgLy8gVXBkYXRlIG1vdGlvbgoKICAgICAgdmFyIHAsIGFwYWdlLCBmaXhlZCwKICAgICAgICBwb3MgPSB0aGlzLnR1cm4oJ2NhbGN1bGF0ZVonLCBkYXRhLnBhZ2VNdiksCiAgICAgICAgY29ybmVyID0gdGhpcy50dXJuKCdjb3JuZXInKSwKICAgICAgICBhY3R1YWxWaWV3ID0gdGhpcy50dXJuKCd2aWV3JyksCiAgICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEudHBhZ2UpOwogIAogICAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkgewoKICAgICAgICBpZiAoIWhhcyhwYWdlLCBkYXRhLnBhZ2VXcmFwKSkKICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICBmaXhlZCA9IGRhdGEucGFnZU9ianNbcGFnZV0uaGFzQ2xhc3MoJ2ZpeGVkJyk7CgogICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKHsKICAgICAgICAgIGRpc3BsYXk6IChwb3MucGFnZVZbcGFnZV0gfHwgZml4ZWQpID8gJycgOiAnbm9uZScsCiAgICAgICAgICB6SW5kZXg6CiAgICAgICAgICAgIChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdoYXJkJykgPwogICAgICAgICAgICAgIHBvcy5wYXJ0WltwYWdlXQogICAgICAgICAgICAgIDoKICAgICAgICAgICAgICBwb3MucGFnZVpbcGFnZV0KICAgICAgICAgICAgKSB8fCAoZml4ZWQgPyAtMSA6IDApCiAgICAgICAgfSk7CgogICAgICAgIGlmICgocCA9IGRhdGEucGFnZXNbcGFnZV0pKSB7CgogICAgICAgICAgcC5mbGlwKCd6JywgcG9zLnBhcnRaW3BhZ2VdIHx8IG51bGwpOwoKICAgICAgICAgIGlmIChwb3MucGFnZVZbcGFnZV0pCiAgICAgICAgICAgIHAuZmxpcCgncmVzaXplJyk7CiAgICAgICAgICAKICAgICAgICAgIGlmIChkYXRhLnRwYWdlKSB7IC8vIElzIGl0IHR1cm5pbmcgdGhlIHBhZ2UgdG8gYHRwYWdlYD8KCiAgICAgICAgICAgIHAuZmxpcCgnaG92ZXInLCBmYWxzZSkuCiAgICAgICAgICAgICAgZmxpcCgnZGlzYWJsZScsCiAgICAgICAgICAgICAgICAkLmluQXJyYXkocGFyc2VJbnQocGFnZSwgMTApLCBkYXRhLnBhZ2VNdik9PS0xICYmCiAgICAgICAgICAgICAgICBwYWdlIT1uZXdWaWV3WzBdICYmCiAgICAgICAgICAgICAgICBwYWdlIT1uZXdWaWV3WzFdKTsKCiAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgcC5mbGlwKCdob3ZlcicsIGNvcm5lcj09PWZhbHNlKS4KICAgICAgICAgICAgICBmbGlwKCdkaXNhYmxlJywgcGFnZSE9YWN0dWFsVmlld1swXSAmJiBwYWdlIT1hY3R1YWxWaWV3WzFdKTsKCiAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgIH0KCiAgICB9IGVsc2UgewoKICAgICAgLy8gVXBkYXRlIHN0YXRpYyBwYWdlcwoKICAgICAgZm9yIChwYWdlIGluIGRhdGEucGFnZVdyYXApIHsKCiAgICAgICAgaWYgKCFoYXMocGFnZSwgZGF0YS5wYWdlV3JhcCkpCiAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgdmFyIHBhZ2VMb2NhdGlvbiA9IHR1cm5NZXRob2RzLl9zZXRQYWdlTG9jLmNhbGwodGhpcywgcGFnZSk7CgogICAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKSB7CiAgICAgICAgICBkYXRhLnBhZ2VzW3BhZ2VdLgogICAgICAgICAgICBmbGlwKCdkaXNhYmxlJywgZGF0YS5kaXNhYmxlZCB8fCBwYWdlTG9jYXRpb24hPTEpLgogICAgICAgICAgICBmbGlwKCdob3ZlcicsIHRydWUpLgogICAgICAgICAgICBmbGlwKCd6JywgbnVsbCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgLy8gVXBkYXRlcyB0aGUgcG9zaXRpb24gYW5kIHNpemUgb2YgdGhlIGZsaXBib29rJ3Mgc2hhZG93CgogIF91cGRhdGVTaGFkb3c6IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgdmlldywgdmlldzIsIHNoYWRvdywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKSwKICAgICAgcGFnZVdpZHRoID0gKGRhdGEuZGlzcGxheT09J3NpbmdsZScpID8gd2lkdGggOiB3aWR0aC8yOwoKICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKTsKCiAgICBpZiAoIWRhdGEuc2hhZG93KSB7CiAgICAgIGRhdGEuc2hhZG93ID0gJCgnPGRpdiAvPicsIHsKICAgICAgICAgICdjbGFzcyc6ICdzaGFkb3cnLAogICAgICAgICAgJ2Nzcyc6IGRpdkF0dCgwLCAwLCAwKS5jc3MKICAgICAgICB9KS4KICAgICAgICBhcHBlbmRUbyh0aGlzKTsKICAgIH0KCiAgICBmb3IgKHZhciBpID0gMDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykgewogICAgICBpZiAoIXZpZXdbMF0gfHwgIXZpZXdbMV0pCiAgICAgICAgYnJlYWs7CiAgICAKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEucGFnZXNbZGF0YS5wYWdlTXZbaV1dLmRhdGEoKS5mLm9wdHMubmV4dCk7CiAgICAgIHZpZXcyID0gdGhpcy50dXJuKCd2aWV3JywgZGF0YS5wYWdlTXZbaV0pOwoKICAgICAgdmlld1swXSA9IHZpZXdbMF0gJiYgdmlldzJbMF07CiAgICAgIHZpZXdbMV0gPSB2aWV3WzFdICYmIHZpZXcyWzFdOwogICAgfQoKICAgIGlmICghdmlld1swXSkgc2hhZG93ID0gKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPyAxIDogMjsKICAgIGVsc2UgaWYgKCF2aWV3WzFdKSBzaGFkb3cgPSAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSA/IDIgOiAxOwogICAgZWxzZSBzaGFkb3cgPSAzOwoKICAgIHN3aXRjaCAoc2hhZG93KSB7CiAgICAgIGNhc2UgMToKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogcGFnZVdpZHRoCiAgICAgICAgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMjoKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDM6CiAgICAgICAgZGF0YS5zaGFkb3cuY3NzKHsKICAgICAgICAgIHdpZHRoOiB3aWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgfQoKICB9LAoKICAvLyBTZXRzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGEgcGFnZQogIC8vIEl0IGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgdmlldwoKICBfc2V0UGFnZUxvYzogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKSwKICAgICAgbG9jID0gMDsKCiAgICAKICAgIGlmIChwYWdlPT12aWV3WzBdIHx8IHBhZ2U9PXZpZXdbMV0pCiAgICAgIGxvYyA9IDE7CiAgICBlbHNlIGlmICgKICAgICAgKGRhdGEuZGlzcGxheT09J3NpbmdsZScgJiYgcGFnZT09dmlld1swXSsxKSB8fAogICAgICAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJyAmJiBwYWdlPT12aWV3WzBdLTIgfHwgcGFnZT09dmlld1sxXSsyKQogICAgKQogICAgICBsb2MgPSAyOwoKICAgIGlmICghdGhpcy50dXJuKCdhbmltYXRpbmcnKSkKICAgICAgc3dpdGNoIChsb2MpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcygKICAgICAgICAgIHsKICAgICAgICAgICAgekluZGV4OiBkYXRhLnRvdGFsUGFnZXMsCiAgICAgICAgICAgIGRpc3BsYXk6ICcnCiAgICAgICAgICB9KTsKICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6CiAgICAgICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcygKICAgICAgICAgIHsKICAgICAgICAgICAgekluZGV4OiBkYXRhLnRvdGFsUGFnZXMtMSwKICAgICAgICAgICAgZGlzcGxheTogJycKICAgICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMDoKICAgICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKAogICAgICAgICAgewogICAgICAgICAgICB6SW5kZXg6IDAsCiAgICAgICAgICAgIGRpc3BsYXk6IChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdmaXhlZCcpKSA/ICcnIDogJ25vbmUnfQogICAgICAgICAgKTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgCiAgICByZXR1cm4gbG9jOwogIH0sCgogIC8vIEdldHMgYW5kIHNldHMgdGhlIG9wdGlvbnMKCiAgb3B0aW9uczogZnVuY3Rpb24ob3B0aW9ucykgewogICAgCiAgICBpZiAob3B0aW9ucz09PXVuZGVmaW5lZCkgewogICAgICAKICAgICAgcmV0dXJuIHRoaXMuZGF0YSgpLm9wdHM7CgogICAgfSBlbHNlIHsKCiAgICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgICAvLyBTZXQgbmV3IHZhbHVlcwoKICAgICAgJC5leHRlbmQoZGF0YS5vcHRzLCBvcHRpb25zKTsKICAgICAgCiAgICAgIC8vIFNldCBwYWdlcwoKICAgICAgaWYgKG9wdGlvbnMucGFnZXMpCiAgICAgICAgdGhpcy50dXJuKCdwYWdlcycsIG9wdGlvbnMucGFnZXMpOwoKICAgICAgLy8gU2V0IHBhZ2UKCiAgICAgIGlmIChvcHRpb25zLnBhZ2UpCiAgICAgICAgdGhpcy50dXJuKCdwYWdlJywgb3B0aW9ucy5wYWdlKTsKCiAgICAgIC8vIFNldCBkaXNwbGF5CgogICAgICBpZiAob3B0aW9ucy5kaXNwbGF5KQogICAgICAgIHRoaXMudHVybignZGlzcGxheScsIG9wdGlvbnMuZGlzcGxheSk7CiAgICAgIAogICAgICAvLyBTZXQgZGlyZWN0aW9uCgogICAgICBpZiAob3B0aW9ucy5kaXJlY3Rpb24pCiAgICAgICAgdGhpcy50dXJuKCdkaXJlY3Rpb24nLCBvcHRpb25zLmRpcmVjdGlvbik7CgogICAgICAvLyBTZXQgc2l6ZQoKICAgICAgaWYgKG9wdGlvbnMud2lkdGggJiYgb3B0aW9ucy5oZWlnaHQpCiAgICAgICAgdGhpcy50dXJuKCdzaXplJywgb3B0aW9ucy53aWR0aCwgb3B0aW9ucy5oZWlnaHQpOwogICAgICAKICAgICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVycwoKICAgICAgaWYgKG9wdGlvbnMud2hlbikKICAgICAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gb3B0aW9ucy53aGVuKQogICAgICAgICAgaWYgKGhhcyhldmVudE5hbWUsIG9wdGlvbnMud2hlbikpIHsKICAgICAgICAgICAgdGhpcy51bmJpbmQoZXZlbnROYW1lKS4KICAgICAgICAgICAgICBiaW5kKGV2ZW50TmFtZSwgb3B0aW9ucy53aGVuW2V2ZW50TmFtZV0pOwogICAgICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogIH0sCgogIC8vIEdldHMgdGhlIGN1cnJlbnQgdmVyc2lvbgoKICB2ZXJzaW9uOiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gdmVyc2lvbjsKCiAgfQp9LAoKLy8gTWV0aG9kcyBhbmQgcHJvcGVydGllcyBmb3IgdGhlIGZsaXAgcGFnZSBlZmZlY3QKCmZsaXBNZXRob2RzID0gewoKICAvLyBDb25zdHJ1Y3RvcgoKICBpbml0OiBmdW5jdGlvbihvcHRzKSB7CgogICAgdGhpcy5kYXRhKHtmOiB7CiAgICAgIGRpc2FibGVkOiBmYWxzZSwKICAgICAgaG92ZXI6IGZhbHNlLAogICAgICBlZmZlY3Q6ICh0aGlzLmhhc0NsYXNzKCdoYXJkJykpID8gJ2hhcmQnIDogJ3NoZWV0JwogICAgfX0pOwogIAogICAgdGhpcy5mbGlwKCdvcHRpb25zJywgb3B0cyk7CgogICAgZmxpcE1ldGhvZHMuX2FkZFBhZ2VXcmFwcGVyLmNhbGwodGhpcyk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgc2V0RGF0YTogZnVuY3Rpb24oZCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGRhdGEuZiA9ICQuZXh0ZW5kKGRhdGEuZiwgZCk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgb3B0aW9uczogZnVuY3Rpb24ob3B0cykgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKG9wdHMpIHsKICAgICAgZmxpcE1ldGhvZHMuc2V0RGF0YS5jYWxsKHRoaXMsCiAgICAgICAge29wdHM6ICQuZXh0ZW5kKHt9LCBkYXRhLm9wdHMgfHwgZmxpcE9wdGlvbnMsIG9wdHMpfSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSBlbHNlCiAgICAgIHJldHVybiBkYXRhLm9wdHM7CgogIH0sCgogIHo6IGZ1bmN0aW9uKHopIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mOwoKICAgIGRhdGEub3B0c1snei1pbmRleCddID0gejsKCiAgICBpZiAoZGF0YS5md3JhcHBlcikKICAgICAgZGF0YS5md3JhcHBlci5jc3MoewogICAgICAgIHpJbmRleDogeiB8fCBwYXJzZUludChkYXRhLnBhcmVudC5jc3MoJ3otaW5kZXgnKSwgMTApIHx8IDAKICAgICAgfSk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgX2NBbGxvd2VkOiBmdW5jdGlvbigpIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICBwYWdlID0gZGF0YS5vcHRzLnBhZ2UsCiAgICAgIHR1cm5EYXRhID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLAogICAgICBvZGQgPSBwYWdlJTI7CiAgICAKICAgIGlmIChkYXRhLmVmZmVjdD09J2hhcmQnKSB7CiAgICAKICAgICAgcmV0dXJuICh0dXJuRGF0YS5kaXJlY3Rpb249PSdsdHInKSA/CiAgICAgICAgWyhvZGQpID8gJ3InIDogJ2wnXSA6CiAgICAgICAgWyhvZGQpID8gJ2wnIDogJ3InXTsKCiAgICB9IGVsc2UgewoKICAgICAgaWYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICAgIGlmIChwYWdlPT0xKQogICAgICAgICAgcmV0dXJuICh0dXJuRGF0YS5kaXJlY3Rpb249PSdsdHInKSA/CiAgICAgICAgICAgIGNvcm5lcnNbJ2ZvcndhcmQnXSA6IGNvcm5lcnNbJ2JhY2t3YXJkJ107CiAgICAgICAgZWxzZSBpZiAocGFnZT09dHVybkRhdGEudG90YWxQYWdlcykKICAgICAgICAgIHJldHVybiAodHVybkRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPwogICAgICAgICAgICBjb3JuZXJzWydiYWNrd2FyZCddIDogY29ybmVyc1snZm9yd2FyZCddOwogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiBjb3JuZXJzWydhbGwnXTsKCiAgICAgIH0gZWxzZSB7CgogICAgICAgIHJldHVybiAodHVybkRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPwogICAgICAgICAgY29ybmVyc1sob2RkKSA/ICdmb3J3YXJkJyA6ICdiYWNrd2FyZCddCiAgICAgICAgICA6CiAgICAgICAgICBjb3JuZXJzWyhvZGQpID8gJ2JhY2t3YXJkJyA6ICdmb3J3YXJkJ107CgogICAgICB9CgogICAgfQoKICB9LAoKICBfY29ybmVyQWN0aXZhdGVkOiBmdW5jdGlvbihwKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKSwKICAgICAgcG9pbnQgPSB7eDogcC54LCB5OiBwLnksIGNvcm5lcjogJyd9LAogICAgICBjc3ogPSBkYXRhLm9wdHMuY29ybmVyU2l6ZTsKCiAgICBpZiAocG9pbnQueDw9MCB8fCBwb2ludC55PD0wIHx8IHBvaW50Lng+PXdpZHRoIHx8IHBvaW50Lnk+PWhlaWdodCkKICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIHZhciBhbGxvd2VkQ29ybmVycyA9IGZsaXBNZXRob2RzLl9jQWxsb3dlZC5jYWxsKHRoaXMpOwoKICAgIHN3aXRjaCAoZGF0YS5lZmZlY3QpIHsKICAgICAgY2FzZSAnaGFyZCc6CiAgICAgICAgCiAgICAgICAgaWYgKHBvaW50Lng+d2lkdGgtY3N6KQogICAgICAgICAgcG9pbnQuY29ybmVyID0gJ3InOwogICAgICAgIGVsc2UgaWYgKHBvaW50Lng8Y3N6KQogICAgICAgICAgcG9pbnQuY29ybmVyID0gJ2wnOwogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgCiAgICAgICAgYnJlYWs7CgogICAgICBjYXNlICdzaGVldCc6CiAgICAgICAgCiAgICAgICAgaWYgKHBvaW50Lnk8Y3N6KQogICAgICAgICAgcG9pbnQuY29ybmVyKz0gJ3QnOwogICAgICAgIGVsc2UgaWYgKHBvaW50Lnk+PWhlaWdodC1jc3opCiAgICAgICAgICBwb2ludC5jb3JuZXIrPSAnYic7CiAgICAgICAgZWxzZQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgCiAgICAgICAgaWYgKHBvaW50Lng8PWNzeikKICAgICAgICAgIHBvaW50LmNvcm5lcis9ICdsJzsKICAgICAgICBlbHNlIGlmIChwb2ludC54Pj13aWR0aC1jc3opCiAgICAgICAgICBwb2ludC5jb3JuZXIrPSAncic7CiAgICAgICAgZWxzZQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgICAgIGJyZWFrOwogICAgICB9CgogICAgcmV0dXJuICghcG9pbnQuY29ybmVyIHx8ICQuaW5BcnJheShwb2ludC5jb3JuZXIsIGFsbG93ZWRDb3JuZXJzKT09LTEpID8KICAgICAgZmFsc2UgOiBwb2ludDsKCiAgfSwKCiAgX2lzSUFyZWE6IGZ1bmN0aW9uKGUpIHsKCiAgICB2YXIgcG9zID0gdGhpcy5kYXRhKCkuZi5wYXJlbnQub2Zmc2V0KCk7CgogICAgZSA9IChpc1RvdWNoICYmIGUub3JpZ2luYWxFdmVudCkgPyBlLm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXSA6IGU7CgogICAgcmV0dXJuIGZsaXBNZXRob2RzLl9jb3JuZXJBY3RpdmF0ZWQuY2FsbCh0aGlzLAogICAgICB7CiAgICAgICAgeDogZS5wYWdlWC1wb3MubGVmdCwKICAgICAgICB5OiBlLnBhZ2VZLXBvcy50b3AKICAgICAgfSk7CgogIH0sCgogIF9jOiBmdW5jdGlvbihjb3JuZXIsIG9wdHMpIHsKCiAgICBvcHRzID0gb3B0cyB8fCAwOwoKICAgIHN3aXRjaCAoY29ybmVyKSB7CiAgICAgIGNhc2UgJ3RsJzoKICAgICAgICByZXR1cm4gcG9pbnQyRChvcHRzLCBvcHRzKTsKICAgICAgY2FzZSAndHInOgogICAgICAgIHJldHVybiBwb2ludDJEKHRoaXMud2lkdGgoKS1vcHRzLCBvcHRzKTsKICAgICAgY2FzZSAnYmwnOgogICAgICAgIHJldHVybiBwb2ludDJEKG9wdHMsIHRoaXMuaGVpZ2h0KCktb3B0cyk7CiAgICAgIGNhc2UgJ2JyJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCh0aGlzLndpZHRoKCktb3B0cywgdGhpcy5oZWlnaHQoKS1vcHRzKTsKICAgICAgY2FzZSAnbCc6CiAgICAgICAgcmV0dXJuIHBvaW50MkQob3B0cywgMCk7CiAgICAgIGNhc2UgJ3InOgogICAgICAgIHJldHVybiBwb2ludDJEKHRoaXMud2lkdGgoKS1vcHRzLCAwKTsKICAgIH0KCiAgfSwKCiAgX2MyOiBmdW5jdGlvbihjb3JuZXIpIHsKCiAgICBzd2l0Y2ggKGNvcm5lcikgewogICAgICBjYXNlICd0bCc6CiAgICAgICAgcmV0dXJuIHBvaW50MkQodGhpcy53aWR0aCgpKjIsIDApOwogICAgICBjYXNlICd0cic6CiAgICAgICAgcmV0dXJuIHBvaW50MkQoLXRoaXMud2lkdGgoKSwgMCk7CiAgICAgIGNhc2UgJ2JsJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCh0aGlzLndpZHRoKCkqMiwgdGhpcy5oZWlnaHQoKSk7CiAgICAgIGNhc2UgJ2JyJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCgtdGhpcy53aWR0aCgpLCB0aGlzLmhlaWdodCgpKTsKICAgICAgY2FzZSAnbCc6CiAgICAgICAgcmV0dXJuIHBvaW50MkQodGhpcy53aWR0aCgpKjIsIDApOwogICAgICBjYXNlICdyJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCgtdGhpcy53aWR0aCgpLCAwKTsKICAgIH0KCiAgfSwKCiAgX2ZvbGRpbmdQYWdlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhKQogICAgICByZXR1cm47CgogICAgdmFyIG9wdHMgPSBkYXRhLm9wdHM7CgogICAgaWYgKG9wdHMudHVybikgewogICAgICBkYXRhID0gb3B0cy50dXJuLmRhdGEoKTsKICAgICAgaWYgKGRhdGEuZGlzcGxheSA9PSAnc2luZ2xlJykKICAgICAgICByZXR1cm4gKG9wdHMubmV4dD4xIHx8IG9wdHMucGFnZT4xKSA/IGRhdGEucGFnZU9ianNbMF0gOiBudWxsOwogICAgICBlbHNlCiAgICAgICAgcmV0dXJuIGRhdGEucGFnZU9ianNbb3B0cy5uZXh0XTsKICAgIH0KCiAgfSwKCiAgX2JhY2tHcmFkaWVudDogZnVuY3Rpb24oKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICB0dXJuRGF0YSA9IGRhdGEub3B0cy50dXJuLmRhdGEoKSwKICAgICAgZ3JhZGllbnQgPSAgdHVybkRhdGEub3B0cy5ncmFkaWVudHMgJiYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnIHx8CiAgICAgICAgIChkYXRhLm9wdHMucGFnZSE9MiAmJiBkYXRhLm9wdHMucGFnZSE9dHVybkRhdGEudG90YWxQYWdlcy0xKSk7CgogICAgaWYgKGdyYWRpZW50ICYmICFkYXRhLmJzaGFkb3cpCiAgICAgIGRhdGEuYnNoYWRvdyA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAxKSkuCiAgICAgICAgY3NzKHsncG9zaXRpb24nOiAnJywgd2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpfSkuCiAgICAgICAgYXBwZW5kVG8oZGF0YS5wYXJlbnQpOwoKICAgIHJldHVybiBncmFkaWVudDsKCiAgfSwKCiAgdHlwZTogZnVuY3Rpb24gKCkgewogICAgCiAgICByZXR1cm4gdGhpcy5kYXRhKCkuZi5lZmZlY3Q7CgogIH0sCgogIHJlc2l6ZTogZnVuY3Rpb24oZnVsbCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHR1cm5EYXRhID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLAogICAgICB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTsKCiAgICBzd2l0Y2ggKGRhdGEuZWZmZWN0KSB7CiAgICAgIGNhc2UgJ2hhcmQnOgogICAgICAgIAogICAgICBpZiAoZnVsbCkgewogICAgICAgIGRhdGEud3JhcHBlci5jc3Moe3dpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHR9KTsKICAgICAgICBkYXRhLmZwYWdlLmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewogICAgICAgICAgZGF0YS5hc2hhZG93LmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwogICAgICAgICAgZGF0YS5ic2hhZG93LmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwogICAgICAgIH0KICAgICAgfQoKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3NoZWV0JzoKCiAgICAgIGlmIChmdWxsKSB7CiAgICAgICAgdmFyIHNpemUgPSBNYXRoLnJvdW5kKE1hdGguc3FydChNYXRoLnBvdyh3aWR0aCwgMikrTWF0aC5wb3coaGVpZ2h0LCAyKSkpOwoKICAgICAgICBkYXRhLndyYXBwZXIuY3NzKHt3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfSk7CiAgICAgICAgZGF0YS5md3JhcHBlci5jc3Moe3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9KS4KICAgICAgICAgIGNoaWxkcmVuKCc6Zmlyc3QtY2hpbGQnKS4KICAgICAgICAgIGNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwoKICAgICAgICBkYXRhLmZwYWdlLmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwoKICAgICAgICBpZiAodHVybkRhdGEub3B0cy5ncmFkaWVudHMpCiAgICAgICAgICBkYXRhLmFzaGFkb3cuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CgogICAgICAgIGlmIChmbGlwTWV0aG9kcy5fYmFja0dyYWRpZW50LmNhbGwodGhpcykpCiAgICAgICAgICBkYXRhLmJzaGFkb3cuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICAgIH0KCiAgICAgIGlmIChkYXRhLnBhcmVudC5pcygnOnZpc2libGUnKSkgewogICAgICAgIHZhciBvZmZzZXQgPSBmaW5kUG9zKGRhdGEucGFyZW50WzBdKTsKCiAgICAgICAgZGF0YS5md3JhcHBlci5jc3Moe3RvcDogb2Zmc2V0LnRvcCwKICAgICAgICAgIGxlZnQ6IG9mZnNldC5sZWZ0fSk7CgogICAgICAgIC8vaWYgKGRhdGEub3B0cy50dXJuKSB7CiAgICAgICAgIG9mZnNldCA9IGZpbmRQb3MoZGF0YS5vcHRzLnR1cm5bMF0pOwogICAgICAgICBkYXRhLmZwYXJlbnQuY3NzKHt0b3A6IC1vZmZzZXQudG9wLCBsZWZ0OiAtb2Zmc2V0LmxlZnR9KTsKICAgICAgICAvL30KICAgICAgfQoKICAgICAgdGhpcy5mbGlwKCd6JywgZGF0YS5vcHRzWyd6LWluZGV4J10pOwoKICAgICAgYnJlYWs7CiAgICB9CgogIH0sCgogIC8vIFByZXBhcmVzIHRoZSBwYWdlIGJ5IGFkZGluZyBhIGdlbmVyYWwgd3JhcHBlciBhbmQgYW5vdGhlciBvYmplY3RzCgogIF9hZGRQYWdlV3JhcHBlcjogZnVuY3Rpb24oKSB7CgogICAgdmFyIGF0dCwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHR1cm5EYXRhID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLAogICAgICBwYXJlbnQgPSB0aGlzLnBhcmVudCgpOwoKICAgIGRhdGEucGFyZW50ID0gcGFyZW50OwoKICBpZiAoIWRhdGEud3JhcHBlcikKICAgIHN3aXRjaCAoZGF0YS5lZmZlY3QpIHsKICAgICAgY2FzZSAnaGFyZCc6CiAgICAgICAgCiAgICAgICAgdmFyIGNzc1Byb3BlcnRpZXMgPSB7fTsKICAgICAgICBjc3NQcm9wZXJ0aWVzW3ZlbmRvciArICd0cmFuc2Zvcm0tc3R5bGUnXSA9ICdwcmVzZXJ2ZS0zZCc7CiAgICAgICAgY3NzUHJvcGVydGllc1t2ZW5kb3IgKyAnYmFja2ZhY2UtdmlzaWJpbGl0eSddID0gJ2hpZGRlbic7CgogICAgICAgIGRhdGEud3JhcHBlciA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAyKSkuCiAgICAgICAgICBjc3MoY3NzUHJvcGVydGllcykuCiAgICAgICAgICBhcHBlbmRUbyhwYXJlbnQpLgogICAgICAgICAgcHJlcGVuZCh0aGlzKTsKCiAgICAgICAgZGF0YS5mcGFnZSA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAxKSkuCiAgICAgICAgICBjc3MoY3NzUHJvcGVydGllcykuCiAgICAgICAgICBhcHBlbmRUbyhwYXJlbnQpOwogICAgICAgIAogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewogICAgICAgICAgZGF0YS5hc2hhZG93ID0gJCgnPGRpdi8+JywgZGl2QXR0KDAsIDAsICAwKSkuCiAgICAgICAgICAgIGhpZGUoKS4KICAgICAgICAgICAgYXBwZW5kVG8ocGFyZW50KTsKCiAgICAgICAgICBkYXRhLmJzaGFkb3cgPSAkKCc8ZGl2Lz4nLCBkaXZBdHQoMCwgMCwgIDApKTsKICAgICAgICB9CgogICAgICBicmVhazsKICAgICAgY2FzZSAnc2hlZXQnOgogICAgICAgIAogICAgICAgIHZhciB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCksCiAgICAgICAgICBzaXplID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3cod2lkdGgsIDIpK01hdGgucG93KGhlaWdodCwgMikpKTsKICAgICAgICAKICAgICAgICBkYXRhLmZwYXJlbnQgPSBkYXRhLm9wdHMudHVybi5kYXRhKCkuZnBhcmVudDsKCiAgICAgICAgaWYgKCFkYXRhLmZwYXJlbnQpIHsKICAgICAgICAgIHZhciBmcGFyZW50ID0gJCgnPGRpdi8+Jywge2Nzczogeydwb2ludGVyLWV2ZW50cyc6ICdub25lJ319KS5oaWRlKCk7CiAgICAgICAgICAgIGZwYXJlbnQuZGF0YSgpLmZsaXBzID0gMDsKICAgICAgICAgICAgZnBhcmVudC5jc3MoZGl2QXR0KDAsIDAsICdhdXRvJywgJ3Zpc2libGUnKS5jc3MpLgogICAgICAgICAgICBhcHBlbmRUbyhkYXRhLm9wdHMudHVybik7CiAgICAgICAgICAgIAogICAgICAgICAgICBkYXRhLm9wdHMudHVybi5kYXRhKCkuZnBhcmVudCA9IGZwYXJlbnQ7CiAgICAgICAgICAgIGRhdGEuZnBhcmVudCA9IGZwYXJlbnQ7CiAgICAgICAgfQoKICAgICAgICB0aGlzLmNzcyh7cG9zaXRpb246ICdhYnNvbHV0ZScsIHRvcDogMCwgbGVmdDogMCwgYm90dG9tOiAnYXV0bycsIHJpZ2h0OiAnYXV0byd9KTsKCiAgICAgICAgZGF0YS53cmFwcGVyID0gJCgnPGRpdi8+JywgZGl2QXR0KDAsIDAsIHRoaXMuY3NzKCd6LWluZGV4JykpKS4KICAgICAgICAgIGFwcGVuZFRvKHBhcmVudCkuCiAgICAgICAgICBwcmVwZW5kKHRoaXMpOwoKICAgICAgICBkYXRhLmZ3cmFwcGVyID0gJCgnPGRpdi8+JywgZGl2QXR0KHBhcmVudC5vZmZzZXQoKS50b3AsIHBhcmVudC5vZmZzZXQoKS5sZWZ0KSkuCiAgICAgICAgICBoaWRlKCkuCiAgICAgICAgICBhcHBlbmRUbyhkYXRhLmZwYXJlbnQpOwoKICAgICAgICBkYXRhLmZwYWdlID0gJCgnPGRpdi8+JywgZGl2QXR0KDAsIDAsIDAsICd2aXNpYmxlJykpLgogICAgICAgICAgY3NzKHtjdXJzb3I6ICdkZWZhdWx0J30pLgogICAgICAgICAgYXBwZW5kVG8oZGF0YS5md3JhcHBlcik7CgogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykKICAgICAgICAgIGRhdGEuYXNoYWRvdyA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAgMSkpLgogICAgICAgICAgYXBwZW5kVG8oZGF0YS5mcGFnZSk7CgogICAgICAgIGZsaXBNZXRob2RzLnNldERhdGEuY2FsbCh0aGlzLCBkYXRhKTsKCiAgICAgIGJyZWFrOwogICAgfQoKICAgIC8vIFNldCBzaXplCiAgICBmbGlwTWV0aG9kcy5yZXNpemUuY2FsbCh0aGlzLCB0cnVlKTsKCiAgfSwKCiAgLy8gVGFrZXMgYSAyUCBwb2ludCBmcm9tIHRoZSBzY3JlZW4gYW5kIGFwcGxpZXMgdGhlIHRyYW5zZm9ybWF0aW9uCgogIF9mb2xkOiBmdW5jdGlvbihwb2ludCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybkRhdGEgPSBkYXRhLm9wdHMudHVybi5kYXRhKCksCiAgICAgIG8gPSBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsIHBvaW50LmNvcm5lciksCiAgICAgIHdpZHRoID0gdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQgPSB0aGlzLmhlaWdodCgpOwoKICAgIHN3aXRjaCAoZGF0YS5lZmZlY3QpIHsKCiAgICAgIGNhc2UgJ2hhcmQnOgoKICAgICAgICBpZiAocG9pbnQuY29ybmVyPT0nbCcpCiAgICAgICAgICBwb2ludC54ID0gTWF0aC5taW4oTWF0aC5tYXgocG9pbnQueCwgMCksIHdpZHRoKjIpOwogICAgICAgIGVsc2UKICAgICAgICAgIHBvaW50LnggPSBNYXRoLm1heChNYXRoLm1pbihwb2ludC54LCB3aWR0aCksIC13aWR0aCk7CgogICAgICAgIHZhciBsZWZ0UG9zLAogICAgICAgICAgc2hhZG93LAogICAgICAgICAgZ3JhZGllbnRYLAogICAgICAgICAgZnBhZ2VPcmlnaW4sCiAgICAgICAgICBwYXJlbnRPcmlnaW4sCiAgICAgICAgICB0b3RhbFBhZ2VzID0gdHVybkRhdGEudG90YWxQYWdlcywKICAgICAgICAgIHpJbmRleCA9IGRhdGEub3B0c1snei1pbmRleCddIHx8IHRvdGFsUGFnZXMsCiAgICAgICAgICBwYXJlbnRDc3MgPSB7J292ZXJmbG93JzogJ3Zpc2libGUnfSwKICAgICAgICAgIHJlbFggPSAoby54KSA/IChvLnggLSBwb2ludC54KS93aWR0aCA6IHBvaW50Lngvd2lkdGgsCiAgICAgICAgICBhbmdsZSA9IHJlbFggKiA5MCwKICAgICAgICAgIGhhbGYgPSBhbmdsZTw5MDsKCiAgICAgICAgc3dpdGNoIChwb2ludC5jb3JuZXIpIHsKICAgICAgICAgIGNhc2UgJ2wnOgoKICAgICAgICAgICAgZnBhZ2VPcmlnaW4gPSAgJzAlIDUwJSc7CiAgICAgICAgICAgIHBhcmVudE9yaWdpbiA9ICAnMTAwJSA1MCUnOwoKICAgICAgICAgICAgaWYgKGhhbGYpIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gMDsKICAgICAgICAgICAgICBzaGFkb3cgPSBkYXRhLm9wdHMubmV4dC0xPjA7CiAgICAgICAgICAgICAgZ3JhZGllbnRYID0gMTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gJzEwMCUnOwogICAgICAgICAgICAgIHNoYWRvdyA9IGRhdGEub3B0cy5wYWdlKzE8dG90YWxQYWdlczsKICAgICAgICAgICAgICBncmFkaWVudFggPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdyJzoKCiAgICAgICAgICAgIGZwYWdlT3JpZ2luID0gICcxMDAlIDUwJSc7CiAgICAgICAgICAgIHBhcmVudE9yaWdpbiA9ICAnMCUgNTAlJzsKICAgICAgICAgICAgYW5nbGUgPSAtYW5nbGU7CiAgICAgICAgICAgIHdpZHRoID0gLXdpZHRoOwoKICAgICAgICAgICAgaWYgKGhhbGYpIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gMDsKICAgICAgICAgICAgICBzaGFkb3cgPSBkYXRhLm9wdHMubmV4dCsxPHRvdGFsUGFnZXM7CiAgICAgICAgICAgICAgZ3JhZGllbnRYID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gJy0xMDAlJzsKICAgICAgICAgICAgICBzaGFkb3cgPSBkYXRhLm9wdHMucGFnZSE9MTsKICAgICAgICAgICAgICBncmFkaWVudFggPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBwYXJlbnRDc3NbdmVuZG9yKydwZXJzcGVjdGl2ZS1vcmlnaW4nXSA9IHBhcmVudE9yaWdpbjsKCiAgICAgICAgZGF0YS53cmFwcGVyLnRyYW5zZm9ybSgncm90YXRlWSgnK2FuZ2xlKydkZWcpJyArCiAgICAgICAgICAndHJhbnNsYXRlM2QoMHB4LCAwcHgsICcrKHRoaXMuYXR0cignZGVwdGgnKXx8MCkrJ3B4KScsIHBhcmVudE9yaWdpbik7CgogICAgICAgIGRhdGEuZnBhZ2UudHJhbnNmb3JtKCd0cmFuc2xhdGVYKCcrd2lkdGgrJ3B4KSByb3RhdGVZKCcrKDE4MCthbmdsZSkrJ2RlZyknLCBmcGFnZU9yaWdpbik7CgogICAgICAgIGRhdGEucGFyZW50LmNzcyhwYXJlbnRDc3MpOwoKICAgICAgICBpZiAoaGFsZikgewogICAgICAgICAgcmVsWCA9IC1yZWxYKzE7CiAgICAgICAgICBkYXRhLndyYXBwZXIuY3NzKHt6SW5kZXg6IHpJbmRleCsxfSk7CiAgICAgICAgICBkYXRhLmZwYWdlLmNzcyh7ekluZGV4OiB6SW5kZXh9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVsWCA9IHJlbFgtMTsKICAgICAgICAgIGRhdGEud3JhcHBlci5jc3Moe3pJbmRleDogekluZGV4fSk7CiAgICAgICAgICBkYXRhLmZwYWdlLmNzcyh7ekluZGV4OiB6SW5kZXgrMX0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKHR1cm5EYXRhLm9wdHMuZ3JhZGllbnRzKSB7CiAgICAgICAgICBpZiAoc2hhZG93KQogICAgICAgICAgICBkYXRhLmFzaGFkb3cuY3NzKHsKICAgICAgICAgICAgICBkaXNwbGF5OiAnJywKICAgICAgICAgICAgICBsZWZ0OiBsZWZ0UG9zLAogICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsJysoMC41KnJlbFgpKycpJwogICAgICAgICAgICB9KS4KICAgICAgICAgICAgdHJhbnNmb3JtKCdyb3RhdGVZKDBkZWcpJyk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGRhdGEuYXNoYWRvdy5oaWRlKCk7CgogICAgICAgICAgZGF0YS5ic2hhZG93LmNzcyh7b3BhY2l0eTotcmVsWCArIDF9KTsKCiAgICAgICAgICBpZiAoaGFsZikgewogICAgICAgICAgICBpZiAoZGF0YS5ic2hhZG93LnBhcmVudCgpWzBdIT1kYXRhLndyYXBwZXJbMF0pIHsKICAgICAgICAgICAgICBkYXRhLmJzaGFkb3cuYXBwZW5kVG8oZGF0YS53cmFwcGVyKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGRhdGEuYnNoYWRvdy5wYXJlbnQoKVswXSE9ZGF0YS5mcGFnZVswXSkgewogICAgICAgICAgICAgIGRhdGEuYnNoYWRvdy5hcHBlbmRUbyhkYXRhLmZwYWdlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgLypkYXRhLmJzaGFkb3cuY3NzKHsKICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLDAsMCwnKygwLjEpKycpJwogICAgICAgICAgfSkqLwogICAgICAgICAgZ3JhZGllbnQoZGF0YS5ic2hhZG93LCBwb2ludDJEKGdyYWRpZW50WCAqIDEwMCwgMCksIHBvaW50MkQoKC1ncmFkaWVudFggKyAxKSoxMDAsIDApLAogICAgICAgICAgICBbWzAsICdyZ2JhKDAsMCwwLDAuMyknXSxbMSwgJ3JnYmEoMCwwLDAsMCknXV0sMik7CiAgICAgICAgICAKICAgICAgICB9CgogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGVldCc6CgogICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgIGEgPSAwLAogICAgICAgICAgYWxwaGEgPSAwLAogICAgICAgICAgYmV0YSwKICAgICAgICAgIHB4LAogICAgICAgICAgZ3JhZGllbnRFbmRQb2ludEEsCiAgICAgICAgICBncmFkaWVudEVuZFBvaW50QiwKICAgICAgICAgIGdyYWRpZW50U3RhcnRWYWwsCiAgICAgICAgICBncmFkaWVudFNpemUsCiAgICAgICAgICBncmFkaWVudE9wYWNpdHksCiAgICAgICAgICBzaGFkb3dWYWwsCiAgICAgICAgICBtdiA9IHBvaW50MkQoMCwgMCksCiAgICAgICAgICBkZiA9IHBvaW50MkQoMCwgMCksCiAgICAgICAgICB0ciA9IHBvaW50MkQoMCwgMCksCiAgICAgICAgICBmb2xkaW5nID0gZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcyksCiAgICAgICAgICB0YW4gPSBNYXRoLnRhbihhbHBoYSksCiAgICAgICAgICBhYyA9IHR1cm5EYXRhLm9wdHMuYWNjZWxlcmF0aW9uLAogICAgICAgICAgaCA9IGRhdGEud3JhcHBlci5oZWlnaHQoKSwKICAgICAgICAgIHRvcCA9IHBvaW50LmNvcm5lci5zdWJzdHIoMCwgMSkgPT0gJ3QnLAogICAgICAgICAgbGVmdCA9IHBvaW50LmNvcm5lci5zdWJzdHIoMSwgMSkgPT0gJ2wnLAoKICAgICAgY29tcHV0ZSA9IGZ1bmN0aW9uKCkgewoKICAgICAgICB2YXIgcmVsID0gcG9pbnQyRCgwLCAwKTsKICAgICAgICB2YXIgbWlkZGxlID0gcG9pbnQyRCgwLCAwKTsKCiAgICAgICAgcmVsLnggPSAoby54KSA/IG8ueCAtIHBvaW50LnggOiBwb2ludC54OwoKICAgICAgICBpZiAoIWhhc1JvdCkgewogICAgICAgICAgcmVsLnkgPSAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZWwueSA9IChvLnkpID8gby55IC0gcG9pbnQueSA6IHBvaW50Lnk7CiAgICAgICAgfQoKICAgICAgICBtaWRkbGUueCA9IChsZWZ0KT8gd2lkdGggLSByZWwueC8yIDogcG9pbnQueCArIHJlbC54LzI7CiAgICAgICAgbWlkZGxlLnkgPSByZWwueS8yOwogICAgICAgIAogICAgICAgIHZhciBhbHBoYSA9ICBBOTAtTWF0aC5hdGFuMihyZWwueSwgcmVsLngpLAogICAgICAgICAgZ2FtbWEgPSBhbHBoYSAtIE1hdGguYXRhbjIobWlkZGxlLnksIG1pZGRsZS54KSwKICAgICAgICAgIGRpc3RhbmNlID0gIE1hdGgubWF4KDAsIE1hdGguc2luKGdhbW1hKSAqIE1hdGguc3FydChNYXRoLnBvdyhtaWRkbGUueCwgMikgKyBNYXRoLnBvdyhtaWRkbGUueSwgMikpKTsKICAgICAgICAgIAogICAgICAgICAgYSA9IGRlZyhhbHBoYSk7CgogICAgICAgICAgdHIgPSBwb2ludDJEKGRpc3RhbmNlICogTWF0aC5zaW4oYWxwaGEpLCBkaXN0YW5jZSAqIE1hdGguY29zKGFscGhhKSk7CgogICAgICAgICAgaWYgKGFscGhhID4gQTkwKSB7CiAgICAgICAgICAgIHRyLnggPSB0ci54ICsgTWF0aC5hYnModHIueSAqIHJlbC55L3JlbC54KTsKICAgICAgICAgICAgdHIueSA9IDA7CiAgICAgICAgICAgIGlmIChNYXRoLnJvdW5kKHRyLngqTWF0aC50YW4oUEktYWxwaGEpKSA8IGhlaWdodCkgewogICAgICAgICAgICAgIHBvaW50LnkgPSBNYXRoLnNxcnQoTWF0aC5wb3coaGVpZ2h0LCAyKSsyICogbWlkZGxlLnggKiByZWwueCk7CiAgICAgICAgICAgICAgaWYgKHRvcCkgcG9pbnQueSA9ICBoZWlnaHQgLSBwb2ludC55OwogICAgICAgICAgICAgIHJldHVybiBjb21wdXRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgCiAgICAgICAgICBpZiAoYWxwaGE+QTkwKSB7CiAgICAgICAgICAgIHZhciBiZXRhID0gUEktYWxwaGEsIGRkID0gaCAtIGhlaWdodC9NYXRoLnNpbihiZXRhKTsKICAgICAgICAgICAgbXYgPSBwb2ludDJEKE1hdGgucm91bmQoZGQqTWF0aC5jb3MoYmV0YSkpLCBNYXRoLnJvdW5kKGRkKk1hdGguc2luKGJldGEpKSk7CiAgICAgICAgICAgIGlmIChsZWZ0KSBtdi54ID0gLSBtdi54OwogICAgICAgICAgICBpZiAodG9wKSBtdi55ID0gLSBtdi55OwogICAgICAgICAgfQoKICAgICAgICAgIHB4ID0gTWF0aC5yb3VuZCh0ci55L01hdGgudGFuKGFscGhhKSArIHRyLngpOwogICAgICAKICAgICAgICAgIHZhciBzaWRlID0gd2lkdGggLSBweCwKICAgICAgICAgICAgc2lkZVggPSBzaWRlKk1hdGguY29zKGFscGhhKjIpLAogICAgICAgICAgICBzaWRlWSA9IHNpZGUqTWF0aC5zaW4oYWxwaGEqMik7CiAgICAgICAgICAgIGRmID0gcG9pbnQyRCgKICAgICAgICAgICAgICBNYXRoLnJvdW5kKChsZWZ0ID8gc2lkZSAtc2lkZVggOiBweCtzaWRlWCkpLAogICAgICAgICAgICAgIE1hdGgucm91bmQoKHRvcCkgPyBzaWRlWSA6IGhlaWdodCAtIHNpZGVZKSk7CiAgICAgICAgICAKICAgICAgICAvLyBHcmFkaWVudHMKICAgICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewoKICAgICAgICAgICAgZ3JhZGllbnRTaXplID0gc2lkZSpNYXRoLnNpbihhbHBoYSk7CgogICAgICAgICAgICB2YXIgZW5kaW5nUG9pbnQgPSBmbGlwTWV0aG9kcy5fYzIuY2FsbCh0aGF0LCBwb2ludC5jb3JuZXIpLAogICAgICAgICAgICAgZmFyID0gTWF0aC5zcXJ0KE1hdGgucG93KGVuZGluZ1BvaW50LngtcG9pbnQueCwgMikrTWF0aC5wb3coZW5kaW5nUG9pbnQueS1wb2ludC55LCAyKSkvd2lkdGg7CgogICAgICAgICAgICBzaGFkb3dWYWwgPSBNYXRoLnNpbihBOTAqKChmYXI+MSkgPyAyIC0gZmFyIDogZmFyKSk7CgogICAgICAgICAgICBncmFkaWVudE9wYWNpdHkgPSBNYXRoLm1pbihmYXIsIDEpOwoKICAgICAgICAgICAKICAgICAgICAgICAgICBncmFkaWVudFN0YXJ0VmFsID0gZ3JhZGllbnRTaXplPjEwMCA/IChncmFkaWVudFNpemUtMTAwKS9ncmFkaWVudFNpemUgOiAwOwoKICAgICAgICAgICAgICBncmFkaWVudEVuZFBvaW50QSA9IHBvaW50MkQoCiAgICAgICAgICAgICAgICBncmFkaWVudFNpemUqTWF0aC5zaW4oYWxwaGEpL3dpZHRoKjEwMCwKICAgICAgICAgICAgICAgIGdyYWRpZW50U2l6ZSpNYXRoLmNvcyhhbHBoYSkvaGVpZ2h0KjEwMCk7CiAgICAgICAgICAgCgogICAgICAgICAgICAgIGlmIChmbGlwTWV0aG9kcy5fYmFja0dyYWRpZW50LmNhbGwodGhhdCkpIHsKCiAgICAgICAgICAgICAgICBncmFkaWVudEVuZFBvaW50QiA9IHBvaW50MkQoCiAgICAgICAgICAgICAgICAgIGdyYWRpZW50U2l6ZSoxLjIqTWF0aC5zaW4oYWxwaGEpL3dpZHRoKjEwMCwKICAgICAgICAgICAgICAgICAgZ3JhZGllbnRTaXplKjEuMipNYXRoLmNvcyhhbHBoYSkvaGVpZ2h0KjEwMCk7CgogICAgICAgICAgICAgICAgaWYgKCFsZWZ0KSBncmFkaWVudEVuZFBvaW50Qi54ID0gMTAwLWdyYWRpZW50RW5kUG9pbnRCLng7CiAgICAgICAgICAgICAgICBpZiAoIXRvcCkgZ3JhZGllbnRFbmRQb2ludEIueSA9IDEwMC1ncmFkaWVudEVuZFBvaW50Qi55OwoKICAgICAgICAgICAgICB9CgogICAgICAgICAgfQoKICAgICAgICAgIHRyLnggPSBNYXRoLnJvdW5kKHRyLngpOwogICAgICAgICAgdHIueSA9IE1hdGgucm91bmQodHIueSk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9LAoKICAgICAgdHJhbnNmb3JtID0gZnVuY3Rpb24odHIsIGMsIHgsIGEpIHsKICAgICAgCiAgICAgICAgdmFyIGYgPSBbJzAnLCAnYXV0byddLCBtdlcgPSAod2lkdGgtaCkqeFswXS8xMDAsIG12SCA9IChoZWlnaHQtaCkqeFsxXS8xMDAsCiAgICAgICAgICBjc3NBID0ge2xlZnQ6IGZbY1swXV0sIHRvcDogZltjWzFdXSwgcmlnaHQ6IGZbY1syXV0sIGJvdHRvbTogZltjWzNdXX0sCiAgICAgICAgICBjc3NCID0ge30sCiAgICAgICAgICBhbGlhc2luZ0ZrID0gKGEhPTkwICYmIGEhPS05MCkgPyAobGVmdCA/IC0xIDogMSkgOiAwLAogICAgICAgICAgb3JpZ2luID0geFswXSArICclICcgKyB4WzFdICsgJyUnOwoKICAgICAgICB0aGF0LmNzcyhjc3NBKS4KICAgICAgICAgIHRyYW5zZm9ybShyb3RhdGUoYSkgKyB0cmFuc2xhdGUodHIueCArIGFsaWFzaW5nRmssIHRyLnksIGFjKSwgb3JpZ2luKTsKCiAgICAgICAgZGF0YS5mcGFnZS5jc3MoY3NzQSkudHJhbnNmb3JtKAogICAgICAgICAgcm90YXRlKGEpICsKICAgICAgICAgIHRyYW5zbGF0ZSh0ci54ICsgZGYueCAtIG12LnggLSB3aWR0aCp4WzBdLzEwMCwgdHIueSArIGRmLnkgLSBtdi55IC0gaGVpZ2h0KnhbMV0vMTAwLCBhYykgKwogICAgICAgICAgcm90YXRlKCgxODAvYSAtIDIpKmEpLAogICAgICAgICAgb3JpZ2luKTsKCiAgICAgICAgZGF0YS53cmFwcGVyLnRyYW5zZm9ybSh0cmFuc2xhdGUoLXRyLnggKyBtdlctYWxpYXNpbmdGaywgLXRyLnkgKyBtdkgsIGFjKSArIHJvdGF0ZSgtYSksIG9yaWdpbik7CgogICAgICAgIGRhdGEuZndyYXBwZXIudHJhbnNmb3JtKHRyYW5zbGF0ZSgtdHIueCArIG12LnggKyBtdlcsIC10ci55ICsgbXYueSArIG12SCwgYWMpICsgcm90YXRlKC1hKSwgb3JpZ2luKTsKICAgICAgCiAgICAgICAgaWYgKHR1cm5EYXRhLm9wdHMuZ3JhZGllbnRzKSB7CgogICAgICAgICAgaWYgKHhbMF0pCiAgICAgICAgICAgIGdyYWRpZW50RW5kUG9pbnRBLnggPSAxMDAtZ3JhZGllbnRFbmRQb2ludEEueDsKCiAgICAgICAgICBpZiAoeFsxXSkKICAgICAgICAgICAgZ3JhZGllbnRFbmRQb2ludEEueSA9ICgxMDAtZ3JhZGllbnRFbmRQb2ludEEueSk7CgogICAgICAgICAgY3NzQlsnYm94LXNoYWRvdyddID0gJzAgMCAyMHB4IHJnYmEoMCwwLDAsJysoMC41KnNoYWRvd1ZhbCkrJyknOwogICAgICAgICAgZm9sZGluZy5jc3MoY3NzQik7CgogICAgICAgICAgZ3JhZGllbnQoZGF0YS5hc2hhZG93LAogICAgICAgICAgICAgIHBvaW50MkQobGVmdD8xMDA6MCwgdG9wPzA6MTAwKSwKICAgICAgICAgICAgICBwb2ludDJEKGdyYWRpZW50RW5kUG9pbnRBLngsIGdyYWRpZW50RW5kUG9pbnRBLnkpLAogICAgICAgICAgICAgIFtbZ3JhZGllbnRTdGFydFZhbCwgJ3JnYmEoMCwwLDAsMCknXSwKICAgICAgICAgICAgICBbKCgxLWdyYWRpZW50U3RhcnRWYWwpKjAuOCkrZ3JhZGllbnRTdGFydFZhbCwgJ3JnYmEoMCwwLDAsJysoMC4yKmdyYWRpZW50T3BhY2l0eSkrJyknXSwKICAgICAgICAgICAgICBbMSwgJ3JnYmEoMjU1LDI1NSwyNTUsJysoMC4yKmdyYWRpZW50T3BhY2l0eSkrJyknXV0sCiAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICBhbHBoYSk7CgogICAgICAgICAgaWYgKGZsaXBNZXRob2RzLl9iYWNrR3JhZGllbnQuY2FsbCh0aGF0KSkKICAgICAgICAgICAgZ3JhZGllbnQoZGF0YS5ic2hhZG93LAogICAgICAgICAgICAgICAgcG9pbnQyRChsZWZ0PzA6MTAwLCB0b3A/MDoxMDApLAogICAgICAgICAgICAgICAgcG9pbnQyRChncmFkaWVudEVuZFBvaW50Qi54LCBncmFkaWVudEVuZFBvaW50Qi55KSwKICAgICAgICAgICAgICAgIFtbMC42LCAncmdiYSgwLDAsMCwwKSddLAogICAgICAgICAgICAgICAgWzAuOCwgJ3JnYmEoMCwwLDAsJysoMC4zKmdyYWRpZW50T3BhY2l0eSkrJyknXSwKICAgICAgICAgICAgICAgIFsxLCAncmdiYSgwLDAsMCwwKSddCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgMyk7CiAgICAgICAgfQoKICAgICAgfTsKCiAgICAgIHN3aXRjaCAocG9pbnQuY29ybmVyKSB7CiAgICAgICAgY2FzZSAnbCcgOgoKCiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAncicgOgoKCiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndGwnIDoKICAgICAgICAgIHBvaW50LnggPSBNYXRoLm1heChwb2ludC54LCAxKTsKICAgICAgICAgIGNvbXB1dGUoKTsKICAgICAgICAgIHRyYW5zZm9ybSh0ciwgWzEsMCwwLDFdLCBbMTAwLCAwXSwgYSk7CiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndHInIDoKICAgICAgICAgIHBvaW50LnggPSBNYXRoLm1pbihwb2ludC54LCB3aWR0aC0xKTsKICAgICAgICAgIGNvbXB1dGUoKTsKICAgICAgICAgIHRyYW5zZm9ybShwb2ludDJEKC10ci54LCB0ci55KSwgWzAsMCwwLDFdLCBbMCwgMF0sIC1hKTsKICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdibCcgOgogICAgICAgICAgcG9pbnQueCA9IE1hdGgubWF4KHBvaW50LngsIDEpOwogICAgICAgICAgY29tcHV0ZSgpOwogICAgICAgICAgdHJhbnNmb3JtKHBvaW50MkQodHIueCwgLXRyLnkpLCBbMSwxLDAsMF0sIFsxMDAsIDEwMF0sIC1hKTsKICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdicicgOgogICAgICAgICAgcG9pbnQueCA9IE1hdGgubWluKHBvaW50LngsIHdpZHRoLTEpOwogICAgICAgICAgY29tcHV0ZSgpOwogICAgICAgICAgdHJhbnNmb3JtKHBvaW50MkQoLXRyLngsIC10ci55KSwgWzAsMSwxLDBdLCBbMCwgMTAwXSwgYSk7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICBicmVhazsKICB9CgogICAgZGF0YS5wb2ludCA9IHBvaW50OwogIAogIH0sCgogIF9tb3ZlRm9sZGluZ1BhZ2U6IGZ1bmN0aW9uKG1vdmUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhKQogICAgICByZXR1cm47CgogICAgdmFyIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKSwKICAgICAgcGxhY2UgPSB0dXJuRGF0YS5wYWdlUGxhY2U7CiAgICAgIAogICAgaWYgKG1vdmUpIHsKCiAgICAgIHZhciBuZXh0UGFnZSA9IGRhdGEub3B0cy5uZXh0OwogIAogICAgICBpZiAocGxhY2VbbmV4dFBhZ2VdIT1kYXRhLm9wdHMucGFnZSkgewoKICAgICAgICBpZiAoZGF0YS5mb2xkaW5nKQogICAgICAgICAgZmxpcE1ldGhvZHMuX21vdmVGb2xkaW5nUGFnZS5jYWxsKHRoaXMsIGZhbHNlKTsKCiAgICAgICAgdmFyIGZvbGRpbmcgPSBmbGlwTWV0aG9kcy5fZm9sZGluZ1BhZ2UuY2FsbCh0aGlzKTsKICAgICAgICAKICAgICAgICBmb2xkaW5nLmFwcGVuZFRvKGRhdGEuZnBhZ2UpOwogICAgICAgIHBsYWNlW25leHRQYWdlXSA9IGRhdGEub3B0cy5wYWdlOwogICAgICAgIGRhdGEuZm9sZGluZyA9IG5leHRQYWdlOwogICAgICB9CgogICAgICB0dXJuLnR1cm4oJ3VwZGF0ZScpOwoKICAgIH0gZWxzZSB7CgogICAgICBpZiAoZGF0YS5mb2xkaW5nKSB7CgogICAgICAgIGlmICh0dXJuRGF0YS5wYWdlc1tkYXRhLmZvbGRpbmddKSB7CiAgICAgICAgIAogICAgICAgICAgLy8gSWYgd2UgaGF2ZSBmbGlwIGF2YWlsYWJsZQoKICAgICAgICAgIHZhciBmbGlwRGF0YSA9IHR1cm5EYXRhLnBhZ2VzW2RhdGEuZm9sZGluZ10uZGF0YSgpLmY7CiAgICAgICAgICAKICAgICAgICAgIHR1cm5EYXRhLnBhZ2VPYmpzW2RhdGEuZm9sZGluZ10uCiAgICAgICAgICAgIGFwcGVuZFRvKGZsaXBEYXRhLndyYXBwZXIpOwoKICAgICAgICB9IGVsc2UgaWYgKHR1cm5EYXRhLnBhZ2VXcmFwW2RhdGEuZm9sZGluZ10pIHsKICAgICAgICAgIAogICAgICAgICAgLy8gSWYgd2UgaGF2ZSB0aGUgcGFnZVdyYXBwZXIKCiAgICAgICAgICB0dXJuRGF0YS5wYWdlT2Jqc1tkYXRhLmZvbGRpbmddLgogICAgICAgICAgICBhcHBlbmRUbyh0dXJuRGF0YS5wYWdlV3JhcFtkYXRhLmZvbGRpbmddKTsKCiAgICAgICAgfQoKICAgICAgICBpZiAoZGF0YS5mb2xkaW5nIGluIHBsYWNlKSB7CiAgICAgICAgICBwbGFjZVtkYXRhLmZvbGRpbmddID0gZGF0YS5mb2xkaW5nOwogICAgICAgIH0KCiAgICAgICAgZGVsZXRlIGRhdGEuZm9sZGluZzsKCiAgICAgIH0KICAgIH0KICB9LAoKICBfc2hvd0ZvbGRlZFBhZ2U6IGZ1bmN0aW9uKGMsIGFuaW1hdGUpIHsKCiAgICB2YXIgZm9sZGluZyA9IGZsaXBNZXRob2RzLl9mb2xkaW5nUGFnZS5jYWxsKHRoaXMpLAogICAgICBkZCA9IHRoaXMuZGF0YSgpLAogICAgICBkYXRhID0gZGQuZiwKICAgICAgdmlzaWJsZSA9IGRhdGEudmlzaWJsZTsKCiAgICBpZiAoZm9sZGluZykgewoKICAgICAgaWYgKCF2aXNpYmxlIHx8ICFkYXRhLnBvaW50IHx8IGRhdGEucG9pbnQuY29ybmVyIT1jLmNvcm5lcikgewoKICAgICAgICB2YXIgY29ybmVyID0gKAogICAgICAgICAgZGF0YS5zdGF0dXM9PSdob3ZlcicgfHwKICAgICAgICAgIGRhdGEuc3RhdHVzPT0ncGVlbCcgfHwKICAgICAgICAgIGRhdGEub3B0cy50dXJuLmRhdGEoKS5tb3VzZUFjdGlvbikgPwogICAgICAgIGMuY29ybmVyIDogbnVsbDsKCiAgICAgICAgdmlzaWJsZSA9IGZhbHNlOwoKICAgICAgICBpZiAodHJpZ2dlcignc3RhcnQnLCB0aGlzLCBbZGF0YS5vcHRzLCBjb3JuZXJdKT09J3ByZXZlbnRlZCcpCiAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICB9CgogICAgICBpZiAoYW5pbWF0ZSkgewogICAgICAgIAogICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgIHBvaW50ID0gKGRhdGEucG9pbnQgJiYgZGF0YS5wb2ludC5jb3JuZXI9PWMuY29ybmVyKSA/CiAgICAgICAgICBkYXRhLnBvaW50IDogZmxpcE1ldGhvZHMuX2MuY2FsbCh0aGlzLCBjLmNvcm5lciwgMSk7CiAgICAgIAogICAgICAgIHRoaXMuYW5pbWF0ZWYoewogICAgICAgICAgZnJvbTogW3BvaW50LngsIHBvaW50LnldLAogICAgICAgICAgdG86IFtjLngsIGMueV0sCiAgICAgICAgICBkdXJhdGlvbjogNTAwLAogICAgICAgICAgZnJhbWU6IGZ1bmN0aW9uKHYpIHsKICAgICAgICAgICAgYy54ID0gTWF0aC5yb3VuZCh2WzBdKTsKICAgICAgICAgICAgYy55ID0gTWF0aC5yb3VuZCh2WzFdKTsKICAgICAgICAgICAgZmxpcE1ldGhvZHMuX2ZvbGQuY2FsbCh0aGF0LCBjKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgIH0gZWxzZSAgewoKICAgICAgICBmbGlwTWV0aG9kcy5fZm9sZC5jYWxsKHRoaXMsIGMpOwoKICAgICAgICBpZiAoZGQuZWZmZWN0ICYmICFkZC5lZmZlY3QudHVybmluZykKICAgICAgICAgIHRoaXMuYW5pbWF0ZWYoZmFsc2UpOwoKICAgICAgfQoKICAgICAgaWYgKCF2aXNpYmxlKSB7CgogICAgICAgIHN3aXRjaChkYXRhLmVmZmVjdCkgewogICAgICAgICAgY2FzZSAnaGFyZCc6CgogICAgICAgICAgICBkYXRhLnZpc2libGUgPSB0cnVlOwogICAgICAgICAgICBmbGlwTWV0aG9kcy5fbW92ZUZvbGRpbmdQYWdlLmNhbGwodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIGRhdGEuZnBhZ2Uuc2hvdygpOwogICAgICAgICAgICBpZiAoZGF0YS5vcHRzLnNoYWRvd3MpCiAgICAgICAgICAgICAgZGF0YS5ic2hhZG93LnNob3coKTsKCiAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ3NoZWV0JzoKCiAgICAgICAgICAgIGRhdGEudmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgIGRhdGEuZnBhcmVudC5zaG93KCkuZGF0YSgpLmZsaXBzKys7CiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgICAgICAgZGF0YS5md3JhcHBlci5zaG93KCk7CiAgICAgICAgICAgIGlmIChkYXRhLmJzaGFkb3cpCiAgICAgICAgICAgICAgZGF0YS5ic2hhZG93LnNob3coKTsKCiAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICB9CgogICAgICByZXR1cm4gdHJ1ZTsKCiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIGhpZGU6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybkRhdGEgPSBkYXRhLm9wdHMudHVybi5kYXRhKCksCiAgICAgIGZvbGRpbmcgPSBmbGlwTWV0aG9kcy5fZm9sZGluZ1BhZ2UuY2FsbCh0aGlzKTsKCiAgICBzd2l0Y2ggKGRhdGEuZWZmZWN0KSB7CiAgICAgIGNhc2UgJ2hhcmQnOgogICAgICAgIAogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewogICAgICAgICAgZGF0YS5ic2hhZG93TG9jID0gMDsKICAgICAgICAgIGRhdGEuYnNoYWRvdy5yZW1vdmUoKTsKICAgICAgICAgIGRhdGEuYXNoYWRvdy5oaWRlKCk7CiAgICAgICAgfQoKICAgICAgICBkYXRhLndyYXBwZXIudHJhbnNmb3JtKCcnKTsKICAgICAgICBkYXRhLmZwYWdlLmhpZGUoKTsKCiAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGVldCc6CgogICAgICAgIGlmICgoLS1kYXRhLmZwYXJlbnQuZGF0YSgpLmZsaXBzKT09PTApCiAgICAgICAgICBkYXRhLmZwYXJlbnQuaGlkZSgpOwoKICAgICAgICB0aGlzLmNzcyh7bGVmdDogMCwgdG9wOiAwLCByaWdodDogJ2F1dG8nLCBib3R0b206ICdhdXRvJ30pLgogICAgICAgICAgdHJhbnNmb3JtKCcnKTsKCiAgICAgICAgZGF0YS53cmFwcGVyLnRyYW5zZm9ybSgnJyk7CgogICAgICAgIGRhdGEuZndyYXBwZXIuaGlkZSgpOwoKICAgICAgICBpZiAoZGF0YS5ic2hhZG93KQogICAgICAgICAgZGF0YS5ic2hhZG93LmhpZGUoKTsKCiAgICAgICAgZm9sZGluZy50cmFuc2Zvcm0oJycpOwoKICAgICAgYnJlYWs7CiAgICB9CgogICAgICBkYXRhLnZpc2libGUgPSBmYWxzZTsKCiAgICByZXR1cm4gdGhpczsKICB9LAoKICBoaWRlRm9sZGVkUGFnZTogZnVuY3Rpb24oYW5pbWF0ZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoIWRhdGEucG9pbnQpIHJldHVybjsKCiAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgIHAxID0gZGF0YS5wb2ludCwKICAgICAgaGlkZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIGRhdGEucG9pbnQgPSBudWxsOwogICAgICAgIGRhdGEuc3RhdHVzID0gJyc7CiAgICAgICAgdGhhdC5mbGlwKCdoaWRlJyk7CiAgICAgICAgdGhhdC50cmlnZ2VyKCdlbmQnLCBbZGF0YS5vcHRzLCBmYWxzZV0pOwogICAgICB9OwoKICAgIGlmIChhbmltYXRlKSB7CgogICAgICB2YXIgcDQgPSBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsIHAxLmNvcm5lciksCiAgICAgICAgdG9wID0gKHAxLmNvcm5lci5zdWJzdHIoMCwxKT09J3QnKSwKICAgICAgICBkZWx0YSA9ICh0b3ApID8gTWF0aC5taW4oMCwgcDEueS1wNC55KS8yIDogTWF0aC5tYXgoMCwgcDEueS1wNC55KS8yLAogICAgICAgIHAyID0gcG9pbnQyRChwMS54LCBwMS55K2RlbHRhKSwKICAgICAgICBwMyA9IHBvaW50MkQocDQueCwgcDQueS1kZWx0YSk7CiAgICAKICAgICAgdGhpcy5hbmltYXRlZih7CiAgICAgICAgZnJvbTogMCwKICAgICAgICB0bzogMSwKICAgICAgICBmcmFtZTogZnVuY3Rpb24odikgewogICAgICAgICAgdmFyIG5wID0gYmV6aWVyKHAxLCBwMiwgcDMsIHA0LCB2KTsKICAgICAgICAgIHAxLnggPSBucC54OwogICAgICAgICAgcDEueSA9IG5wLnk7CiAgICAgICAgICBmbGlwTWV0aG9kcy5fZm9sZC5jYWxsKHRoYXQsIHAxKTsKICAgICAgICB9LAogICAgICAgIGNvbXBsZXRlOiBoaWRlLAogICAgICAgIGR1cmF0aW9uOiA4MDAsCiAgICAgICAgaGlkaW5nOiB0cnVlCiAgICAgIH0pOwoKICAgIH0gZWxzZSB7CgogICAgICB0aGlzLmFuaW1hdGVmKGZhbHNlKTsKICAgICAgaGlkZSgpOwoKICAgIH0KICB9LAoKICB0dXJuUGFnZTogZnVuY3Rpb24oY29ybmVyKSB7CgogICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybkRhdGEgPSBkYXRhLm9wdHMudHVybi5kYXRhKCk7CgogICAgY29ybmVyID0ge2Nvcm5lcjogKGRhdGEuY29ybmVyKSA/CiAgICAgIGRhdGEuY29ybmVyLmNvcm5lciA6CiAgICAgIGNvcm5lciB8fCBmbGlwTWV0aG9kcy5fY0FsbG93ZWQuY2FsbCh0aGlzKVswXX07CgogICAgdmFyIHAxID0gZGF0YS5wb2ludCB8fAogICAgICBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsCiAgICAgICAgY29ybmVyLmNvcm5lciwKICAgICAgICAoZGF0YS5vcHRzLnR1cm4pID8gdHVybkRhdGEub3B0cy5lbGV2YXRpb24gOiAwKSwKICAgICAgcDQgPSBmbGlwTWV0aG9kcy5fYzIuY2FsbCh0aGlzLCBjb3JuZXIuY29ybmVyKTsKCiAgICAgIHRoaXMudHJpZ2dlcignZmxpcCcpLgogICAgICAgIGFuaW1hdGVmKHsKICAgICAgICAgIGZyb206IDAsCiAgICAgICAgICB0bzogMSwKICAgICAgICAgIGZyYW1lOiBmdW5jdGlvbih2KSB7CgogICAgICAgICAgICB2YXIgbnAgPSBiZXppZXIocDEsIHAxLCBwNCwgcDQsIHYpOwogICAgICAgICAgICBjb3JuZXIueCA9IG5wLng7CiAgICAgICAgICAgIGNvcm5lci55ID0gbnAueTsKICAgICAgICAgICAgZmxpcE1ldGhvZHMuX3Nob3dGb2xkZWRQYWdlLmNhbGwodGhhdCwgY29ybmVyKTsKCiAgICAgICAgICB9LAogICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAKICAgICAgICAgICAgdGhhdC50cmlnZ2VyKCdlbmQnLCBbZGF0YS5vcHRzLCB0cnVlXSk7CgogICAgICAgICAgfSwKICAgICAgICAgIGR1cmF0aW9uOiB0dXJuRGF0YS5vcHRzLmR1cmF0aW9uLAogICAgICAgICAgdHVybmluZzogdHJ1ZQogICAgICAgIH0pOwoKICAgICAgZGF0YS5jb3JuZXIgPSBudWxsOwogIH0sCgogIG1vdmluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuICdlZmZlY3QnIGluIHRoaXMuZGF0YSgpOwogIAogIH0sCgogIGlzVHVybmluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMuZmxpcCgnbW92aW5nJykgJiYgdGhpcy5kYXRhKCkuZWZmZWN0LnR1cm5pbmc7CiAgCiAgfSwKCiAgY29ybmVyOiBmdW5jdGlvbigpIHsKICAgIAogICAgcmV0dXJuIHRoaXMuZGF0YSgpLmYuY29ybmVyOwogICAgICAKICB9LAoKICBfZXZlbnRTdGFydDogZnVuY3Rpb24oZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybiA9IGRhdGEub3B0cy50dXJuOwoKICAgIGlmICghZGF0YS5jb3JuZXIgJiYgIWRhdGEuZGlzYWJsZWQgJiYgIXRoaXMuZmxpcCgnaXNUdXJuaW5nJykgJiYKICAgICAgZGF0YS5vcHRzLnBhZ2U9PXR1cm4uZGF0YSgpLnBhZ2VQbGFjZVtkYXRhLm9wdHMucGFnZV0pCiAgICB7CgogICAgICBkYXRhLmNvcm5lciA9IGZsaXBNZXRob2RzLl9pc0lBcmVhLmNhbGwodGhpcywgZSk7CgogICAgICBpZiAoZGF0YS5jb3JuZXIgJiYgZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcykpIHsKCiAgICAgICAgdGhpcy50cmlnZ2VyKCdwcmVzc2VkJywgW2RhdGEucG9pbnRdKTsKICAgICAgICBmbGlwTWV0aG9kcy5fc2hvd0ZvbGRlZFBhZ2UuY2FsbCh0aGlzLCBkYXRhLmNvcm5lcik7CgogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgIH0gZWxzZQogICAgICAgIGRhdGEuY29ybmVyID0gbnVsbDsKCiAgICB9CgogIH0sCgogIF9ldmVudE1vdmU6IGZ1bmN0aW9uKGUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhLmRpc2FibGVkKSB7CgogICAgICBlID0gKGlzVG91Y2gpID8gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgOiBbZV07CgogICAgICBpZiAoZGF0YS5jb3JuZXIpIHsKCiAgICAgICAgdmFyIHBvcyA9IGRhdGEucGFyZW50Lm9mZnNldCgpOwogICAgICAgIGRhdGEuY29ybmVyLnggPSBlWzBdLnBhZ2VYLXBvcy5sZWZ0OwogICAgICAgIGRhdGEuY29ybmVyLnkgPSBlWzBdLnBhZ2VZLXBvcy50b3A7CiAgICAgICAgZmxpcE1ldGhvZHMuX3Nob3dGb2xkZWRQYWdlLmNhbGwodGhpcywgZGF0YS5jb3JuZXIpOwoKICAgICAgfSBlbHNlIGlmIChkYXRhLmhvdmVyICYmICF0aGlzLmRhdGEoKS5lZmZlY3QgJiYgdGhpcy5pcygnOnZpc2libGUnKSkgewoKICAgICAgICB2YXIgcG9pbnQgPSBmbGlwTWV0aG9kcy5faXNJQXJlYS5jYWxsKHRoaXMsIGVbMF0pOwoKICAgICAgICBpZiAocG9pbnQpIHsKCiAgICAgICAgICBpZiAoKGRhdGEuZWZmZWN0PT0nc2hlZXQnICYmIHBvaW50LmNvcm5lci5sZW5ndGg9PTIpICB8fCBkYXRhLmVmZmVjdD09J2hhcmQnKSB7CiAgICAgICAgICAgIGRhdGEuc3RhdHVzID0gJ2hvdmVyJzsKICAgICAgICAgICAgdmFyIG9yaWdpbiA9IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgcG9pbnQuY29ybmVyLCBkYXRhLm9wdHMuY29ybmVyU2l6ZS8yKTsKICAgICAgICAgICAgcG9pbnQueCA9IG9yaWdpbi54OwogICAgICAgICAgICBwb2ludC55ID0gb3JpZ2luLnk7CiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoaXMsIHBvaW50LCB0cnVlKTsKICAgICAgICAgIH0KICAgICAgICAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgCiAgICAgICAgICBpZiAoZGF0YS5zdGF0dXM9PSdob3ZlcicpIHsKICAgICAgICAgICAgZGF0YS5zdGF0dXMgPSAnJzsKICAgICAgICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgfQoKICAgIH0KCiAgfSwKCiAgX2V2ZW50RW5kOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIGNvcm5lciA9IGRhdGEuY29ybmVyOwoKICAgIGlmICghZGF0YS5kaXNhYmxlZCAmJiBjb3JuZXIpIHsKICAgICAgaWYgKHRyaWdnZXIoJ3JlbGVhc2VkJywgdGhpcywgW2RhdGEucG9pbnQgfHwgY29ybmVyXSkhPSdwcmV2ZW50ZWQnKSB7CiAgICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgfQogICAgfQoKICAgIGRhdGEuY29ybmVyID0gbnVsbDsKCiAgfSwKCiAgZGlzYWJsZTogZnVuY3Rpb24oZGlzYWJsZSkgewoKICAgIGZsaXBNZXRob2RzLnNldERhdGEuY2FsbCh0aGlzLCB7J2Rpc2FibGVkJzogZGlzYWJsZX0pOwogICAgcmV0dXJuIHRoaXM7CgogIH0sCgogIGhvdmVyOiBmdW5jdGlvbihob3ZlcikgewogICAgCiAgICBmbGlwTWV0aG9kcy5zZXREYXRhLmNhbGwodGhpcywgeydob3Zlcic6IGhvdmVyfSk7CiAgICByZXR1cm4gdGhpczsKCiAgfSwKCiAgcGVlbDogZnVuY3Rpb24gKGNvcm5lciwgYW5pbWF0ZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoY29ybmVyKSB7CgogICAgICBpZiAoJC5pbkFycmF5KGNvcm5lciwgY29ybmVycy5hbGwpPT0tMSkKICAgICAgICB0aHJvdyB0dXJuRXJyb3IoJ0Nvcm5lciAnK2Nvcm5lcisnIGlzIG5vdCBwZXJtaXR0ZWQnKTsKCiAgICAgIGlmICgkLmluQXJyYXkoY29ybmVyLCBmbGlwTWV0aG9kcy5fY0FsbG93ZWQuY2FsbCh0aGlzKSkhPS0xKSB7CgogICAgICAgIHZhciBwb2ludCA9IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgY29ybmVyLCBkYXRhLm9wdHMuY29ybmVyU2l6ZS8yKTsKICAgICAgICAKICAgICAgICBkYXRhLnN0YXR1cyA9ICdwZWVsJzsKCiAgICAgICAgZmxpcE1ldGhvZHMuX3Nob3dGb2xkZWRQYWdlLmNhbGwodGhpcywKICAgICAgICB7CiAgICAgICAgICBjb3JuZXI6IGNvcm5lciwKICAgICAgICAgIHg6IHBvaW50LngsCiAgICAgICAgICB5OiBwb2ludC55CiAgICAgICAgfSwgYW5pbWF0ZSk7CgogICAgICB9CgoKICAgIH0gZWxzZSB7CgogICAgICBkYXRhLnN0YXR1cyA9ICcnOwoKICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCBhbmltYXRlKTsKICAgICAgCiAgICB9CgogICAgcmV0dXJuIHRoaXM7CiAgfQp9OwoKCi8vIFByb2Nlc3NlcyBjbGFzc2VzCgpmdW5jdGlvbiBkZWModGhhdCwgbWV0aG9kcywgYXJncykgewoKICBpZiAoIWFyZ3NbMF0gfHwgdHlwZW9mKGFyZ3NbMF0pPT0nb2JqZWN0JykKICAgIHJldHVybiBtZXRob2RzLmluaXQuYXBwbHkodGhhdCwgYXJncyk7CgogIGVsc2UgaWYgKG1ldGhvZHNbYXJnc1swXV0pCiAgICByZXR1cm4gbWV0aG9kc1thcmdzWzBdXS5hcHBseSh0aGF0LCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzLCAxKSk7CgogIGVsc2UKICAgIHRocm93IHR1cm5FcnJvcihhcmdzWzBdICsgJyBpcyBub3QgYSBtZXRob2Qgb3IgcHJvcGVydHknKTsKCn0KCgovLyBBdHRyaWJ1dGVzIGZvciBhIGxheWVyCgpmdW5jdGlvbiBkaXZBdHQodG9wLCBsZWZ0LCB6SW5kZXgsIG92ZXJmKSB7CiAgICAKICByZXR1cm4geydjc3MnOiB7CiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJywKICAgIHRvcDogdG9wLAogICAgbGVmdDogbGVmdCwKICAgICdvdmVyZmxvdyc6IG92ZXJmIHx8ICdoaWRkZW4nLAogICAgekluZGV4OiB6SW5kZXggfHwgJ2F1dG8nCiAgfQp9OwogICAgICAKfQoKLy8gR2V0cyBhIDJEIHBvaW50IGZyb20gYSBiZXppZXIgY3VydmUgb2YgZm91ciBwb2ludHMKCmZ1bmN0aW9uIGJlemllcihwMSwgcDIsIHAzLCBwNCwgdCkgewoKICB2YXIgYSA9IDEgLSB0LAogICAgYiA9IGEgKiBhICogYSwKICAgIGMgPSB0ICogdCAqIHQ7CiAgICAKICByZXR1cm4gcG9pbnQyRChNYXRoLnJvdW5kKGIqcDEueCArIDMqdCphKmEqcDIueCArIDMqdCp0KmEqcDMueCArIGMqcDQueCksCiAgICBNYXRoLnJvdW5kKGIqcDEueSArIDMqdCphKmEqcDIueSArIDMqdCp0KmEqcDMueSArIGMqcDQueSkpOwoKfQogIAovLyBDb252ZXJ0cyBhbiBhbmdsZSBmcm9tIGRlZ3JlZXMgdG8gcmFkaWFucwoKZnVuY3Rpb24gcmFkKGRlZ3JlZXMpIHsKICAKICByZXR1cm4gZGVncmVlcy8xODAqUEk7Cgp9CgovLyBDb252ZXJ0cyBhbiBhbmdsZSBmcm9tIHJhZGlhbnMgdG8gZGVncmVlcwoKZnVuY3Rpb24gZGVnKHJhZGlhbnMpIHsKICAKICByZXR1cm4gcmFkaWFucy9QSSoxODA7Cgp9CgovLyBHZXRzIGEgMkQgcG9pbnQKCmZ1bmN0aW9uIHBvaW50MkQoeCwgeSkgewogIAogIHJldHVybiB7eDogeCwgeTogeX07Cgp9CgovLyBXZWJraXQgNTM0LjMgb24gQW5kcm9pZCB3cm9uZ2x5IHJlcGFpbnRzIGVsZW1lbnRzIHRoYXQgdXNlIG92ZXJmbG93OmhpZGRlbiArIHJvdGF0aW9uCgpmdW5jdGlvbiByb3RhdGlvbkF2YWlsYWJsZSgpIHsKICB2YXIgcGFydHM7CgogIGlmICgocGFydHMgPSAvQXBwbGVXZWJraXRcLyhbMC05XC5dKykvaS5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpKSkgewogICAgdmFyIHdlYmtpdFZlcnNpb24gPSBwYXJzZUZsb2F0KHBhcnRzWzFdKTsKICAgIHJldHVybiAod2Via2l0VmVyc2lvbj41MzQuMyk7CiAgfSBlbHNlIHsKICAgIHJldHVybiB0cnVlOwogIH0KfQoKLy8gUmV0dXJucyB0aGUgdHJhc2xhdGUgdmFsdWUKCmZ1bmN0aW9uIHRyYW5zbGF0ZSh4LCB5LCB1c2UzZCkgewogIAogIHJldHVybiAoaGFzM2QgJiYgdXNlM2QpID8gJyB0cmFuc2xhdGUzZCgnICsgeCArICdweCwnICsgeSArICdweCwgMHB4KSAnCiAgOiAnIHRyYW5zbGF0ZSgnICsgeCArICdweCwgJyArIHkgKyAncHgpICc7Cgp9CgovLyBSZXR1cm5zIHRoZSByb3RhdGlvbiB2YWx1ZQoKZnVuY3Rpb24gcm90YXRlKGRlZ3JlZXMpIHsKICAKICByZXR1cm4gJyByb3RhdGUoJyArIGRlZ3JlZXMgKyAnZGVnKSAnOwoKfQoKLy8gQ2hlY2tzIGlmIGEgcHJvcGVydHkgYmVsb25ncyB0byBhbiBvYmplY3QKCmZ1bmN0aW9uIGhhcyhwcm9wZXJ0eSwgb2JqZWN0KSB7CiAgCiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsKCn0KCi8vIEdldHMgdGhlIENTUzMgdmVuZG9yIHByZWZpeAoKZnVuY3Rpb24gZ2V0UHJlZml4KCkgewoKICB2YXIgdmVuZG9yUHJlZml4ZXMgPSBbJ01veicsJ1dlYmtpdCcsJ0todG1sJywnTycsJ21zJ10sCiAgbGVuID0gdmVuZG9yUHJlZml4ZXMubGVuZ3RoLAogIHZlbmRvciA9ICcnOwoKICB3aGlsZSAobGVuLS0pCiAgICBpZiAoKHZlbmRvclByZWZpeGVzW2xlbl0gKyAnVHJhbnNmb3JtJykgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSkKICAgICAgdmVuZG9yPSctJyt2ZW5kb3JQcmVmaXhlc1tsZW5dLnRvTG93ZXJDYXNlKCkrJy0nOwoKICByZXR1cm4gdmVuZG9yOwoKfQoKLy8gRGV0ZWN0cyB0aGUgdHJhbnNpdGlvbkVuZCBFdmVudAoKZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbkVuZCgpIHsKCiAgdmFyIHQsCiAgICBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zha2VlbGVtZW50JyksCiAgICB0cmFuc2l0aW9ucyA9IHsKICAgICAgJ3RyYW5zaXRpb24nOid0cmFuc2l0aW9uZW5kJywKICAgICAgJ09UcmFuc2l0aW9uJzonb1RyYW5zaXRpb25FbmQnLAogICAgICAnTVNUcmFuc2l0aW9uJzondHJhbnNpdGlvbmVuZCcsCiAgICAgICdNb3pUcmFuc2l0aW9uJzondHJhbnNpdGlvbmVuZCcsCiAgICAgICdXZWJraXRUcmFuc2l0aW9uJzond2Via2l0VHJhbnNpdGlvbkVuZCcKICAgIH07CgogIGZvciAodCBpbiB0cmFuc2l0aW9ucykgewogICAgaWYgKGVsLnN0eWxlW3RdICE9PSB1bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIHRyYW5zaXRpb25zW3RdOwogICAgfQogIH0KfQoKLy8gR3JhZGllbnRzCgpmdW5jdGlvbiBncmFkaWVudChvYmosIHAwLCBwMSwgY29sb3JzLCBudW1Db2xvcnMpIHsKCiAgdmFyIGosIGNvbHMgPSBbXTsKCiAgaWYgKHZlbmRvcj09Jy13ZWJraXQtJykgewoKICAgIGZvciAoaiA9IDA7IGo8bnVtQ29sb3JzOyBqKyspCiAgICAgIGNvbHMucHVzaCgnY29sb3Itc3RvcCgnK2NvbG9yc1tqXVswXSsnLCAnK2NvbG9yc1tqXVsxXSsnKScpOwogICAgCiAgICBvYmouY3NzKHsnYmFja2dyb3VuZC1pbWFnZSc6CiAgICAgICAgJy13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAnKwogICAgICAgIHAwLngrJyUgJysKICAgICAgICBwMC55KyclLCcrCiAgICAgICAgcDEueCsnJSAnKwogICAgICAgIHAxLnkrJyUsICcrCiAgICAgICAgY29scy5qb2luKCcsJykgKyAnICknfSk7CiAgfSBlbHNlIHsKICAgIAogICAgcDAgPSB7eDpwMC54LzEwMCAqIG9iai53aWR0aCgpLCB5OnAwLnkvMTAwICogb2JqLmhlaWdodCgpfTsKICAgIHAxID0ge3g6cDEueC8xMDAgKiBvYmoud2lkdGgoKSwgeTpwMS55LzEwMCAqIG9iai5oZWlnaHQoKX07CgogICAgdmFyIGR4ID0gcDEueC1wMC54LAogICAgICBkeSA9IHAxLnktcDAueSwKICAgICAgYW5nbGUgPSBNYXRoLmF0YW4yKGR5LCBkeCksCiAgICAgIGFuZ2xlMiA9IGFuZ2xlIC0gTWF0aC5QSS8yLAogICAgICBkaWFnb25hbCA9IE1hdGguYWJzKG9iai53aWR0aCgpKk1hdGguc2luKGFuZ2xlMikpK01hdGguYWJzKG9iai5oZWlnaHQoKSpNYXRoLmNvcyhhbmdsZTIpKSwKICAgICAgZ3JhZGllbnREaWFnb25hbCA9IE1hdGguc3FydChkeSpkeSArIGR4KmR4KSwKICAgICAgY29ybmVyID0gcG9pbnQyRCgocDEueDxwMC54KSA/IG9iai53aWR0aCgpIDogMCwgKHAxLnk8cDAueSkgPyBvYmouaGVpZ2h0KCkgOiAwKSwKICAgICAgc2xvcGUgPSBNYXRoLnRhbihhbmdsZSksCiAgICAgIGludmVyc2UgPSAtMS9zbG9wZSwKICAgICAgeCA9IChpbnZlcnNlKmNvcm5lci54IC0gY29ybmVyLnkgLSBzbG9wZSpwMC54ICsgcDAueSkvKGludmVyc2Utc2xvcGUpLAogICAgICBjID0ge3g6IHgsIHk6IGludmVyc2UqeCAtIGludmVyc2UqY29ybmVyLnggKyBjb3JuZXIueX0sCiAgICAgIHNlZ0EgPSAoTWF0aC5zcXJ0KCBNYXRoLnBvdyhjLngtcDAueCwyKSArIE1hdGgucG93KGMueS1wMC55LDIpKSk7CgogICAgICBmb3IgKGogPSAwOyBqPG51bUNvbG9yczsgaisrKQogICAgICAgIGNvbHMucHVzaCgnICcrY29sb3JzW2pdWzFdKycgJysoKHNlZ0EgKyBncmFkaWVudERpYWdvbmFsKmNvbG9yc1tqXVswXSkqMTAwL2RpYWdvbmFsKSsnJScpOwoKICAgICAgb2JqLmNzcyh7J2JhY2tncm91bmQtaW1hZ2UnOiB2ZW5kb3IrJ2xpbmVhci1ncmFkaWVudCgnICsgKC1hbmdsZSkgKyAncmFkLCcgKyBjb2xzLmpvaW4oJywnKSArICcpJ30pOwogIH0KfQoKCi8vIFRyaWdnZXJzIGFuIGV2ZW50CgpmdW5jdGlvbiB0cmlnZ2VyKGV2ZW50TmFtZSwgY29udGV4dCwgYXJncykgewoKICB2YXIgZXZlbnQgPSAkLkV2ZW50KGV2ZW50TmFtZSk7CiAgY29udGV4dC50cmlnZ2VyKGV2ZW50LCBhcmdzKTsKICBpZiAoZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpCiAgICByZXR1cm4gJ3ByZXZlbnRlZCc7CiAgZWxzZSBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkKICAgIHJldHVybiAnc3RvcHBlZCc7CiAgZWxzZQogICAgcmV0dXJuICcnOwp9CgovLyBKUyBFcnJvcnMKCmZ1bmN0aW9uIHR1cm5FcnJvcihtZXNzYWdlKSB7CgogIGZ1bmN0aW9uIFR1cm5Kc0Vycm9yKG1lc3NhZ2UpIHsKICAgIHRoaXMubmFtZSA9ICJUdXJuSnNFcnJvciI7CiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOwogIH0KCiAgVHVybkpzRXJyb3IucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgVHVybkpzRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVHVybkpzRXJyb3I7CiAgcmV0dXJuIG5ldyBUdXJuSnNFcnJvcihtZXNzYWdlKTsKCn0KCi8vIEZpbmQgdGhlIG9mZnNldCBvZiBhbiBlbGVtZW50IGlnbm9yaW5nIGl0cyB0cmFuc2Zvcm1hdGlvbgoKZnVuY3Rpb24gZmluZFBvcyhvYmopIHsKCiAgdmFyIG9mZnNldCA9IHt0b3A6IDAsIGxlZnQ6IDB9OwoKICBkb3sKICAgIG9mZnNldC5sZWZ0ICs9IG9iai5vZmZzZXRMZWZ0OwogICAgb2Zmc2V0LnRvcCArPSBvYmoub2Zmc2V0VG9wOwogIH0gd2hpbGUgKChvYmogPSBvYmoub2Zmc2V0UGFyZW50KSk7CgogIHJldHVybiBvZmZzZXQ7Cgp9CgovLyBDaGVja3MgaWYgdGhlcmUncyBoYXJkIHBhZ2UgY29tcGF0aWJpbGl0eQovLyBJRTkgaXMgdGhlIG9ubHkgYnJvd3NlciB0aGF0IGRvZXMgbm90IHN1cHBvcnQgaGFyZCBwYWdlcwoKZnVuY3Rpb24gaGFzSGFyZFBhZ2UoKSB7CiAgcmV0dXJuIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ01TSUUgOS4wJyk9PS0xKTsKfQoKLy8gUmVxdWVzdCBhbiBhbmltYXRpb24KCndpbmRvdy5yZXF1ZXN0QW5pbSA9IChmdW5jdGlvbigpIHsKICByZXR1cm4gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgd2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgd2luZG93Lm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwKICAgIHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIDEwMDAgLyA2MCk7CiAgICB9OwoKfSkoKTsKCi8vIEV4dGVuZCAkLmZuCgokLmV4dGVuZCgkLmZuLCB7CgogIGZsaXA6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIGRlYygkKHRoaXNbMF0pLCBmbGlwTWV0aG9kcywgYXJndW1lbnRzKTsKICB9LAoKICB0dXJuOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBkZWMoJCh0aGlzWzBdKSwgdHVybk1ldGhvZHMsIGFyZ3VtZW50cyk7CiAgfSwKCiAgdHJhbnNmb3JtOiBmdW5jdGlvbih0cmFuc2Zvcm0sIG9yaWdpbikgewoKICAgIHZhciBwcm9wZXJ0aWVzID0ge307CiAgICAKICAgIGlmIChvcmlnaW4pCiAgICAgIHByb3BlcnRpZXNbdmVuZG9yKyd0cmFuc2Zvcm0tb3JpZ2luJ10gPSBvcmlnaW47CiAgICAKICAgIHByb3BlcnRpZXNbdmVuZG9yKyd0cmFuc2Zvcm0nXSA9IHRyYW5zZm9ybTsKICAKICAgIHJldHVybiB0aGlzLmNzcyhwcm9wZXJ0aWVzKTsKCiAgfSwKCiAgYW5pbWF0ZWY6IGZ1bmN0aW9uKHBvaW50KSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoZGF0YS5lZmZlY3QpCiAgICAgIGRhdGEuZWZmZWN0LnN0b3AoKTsKCiAgICBpZiAocG9pbnQpIHsKCiAgICAgIGlmICghcG9pbnQudG8ubGVuZ3RoKSBwb2ludC50byA9IFtwb2ludC50b107CiAgICAgIGlmICghcG9pbnQuZnJvbS5sZW5ndGgpIHBvaW50LmZyb20gPSBbcG9pbnQuZnJvbV07CgogICAgICB2YXIgZGlmZiA9IFtdLAogICAgICAgIGxlbiA9IHBvaW50LnRvLmxlbmd0aCwKICAgICAgICBhbmltYXRpbmcgPSB0cnVlLAogICAgICAgIHRoYXQgPSB0aGlzLAogICAgICAgIHRpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpLAogICAgICAgIGZyYW1lID0gZnVuY3Rpb24oKSB7CgogICAgICAgICAgaWYgKCFkYXRhLmVmZmVjdCB8fCAhYW5pbWF0aW5nKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgICAgdmFyIHYgPSBbXSwKICAgICAgICAgICAgdGltZURpZmYgPSBNYXRoLm1pbihwb2ludC5kdXJhdGlvbiwgKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAtIHRpbWUpOwoKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspCiAgICAgICAgICAgIHYucHVzaChkYXRhLmVmZmVjdC5lYXNpbmcoMSwgdGltZURpZmYsIHBvaW50LmZyb21baV0sIGRpZmZbaV0sIHBvaW50LmR1cmF0aW9uKSk7CgogICAgICAgICAgcG9pbnQuZnJhbWUoKGxlbj09MSkgPyB2WzBdIDogdik7CgogICAgICAgICAgaWYgKHRpbWVEaWZmPT1wb2ludC5kdXJhdGlvbikgewogICAgICAgICAgICBkZWxldGUgZGF0YVsnZWZmZWN0J107CiAgICAgICAgICAgIHRoYXQuZGF0YShkYXRhKTsKICAgICAgICAgICAgaWYgKHBvaW50LmNvbXBsZXRlKQogICAgICAgICAgICAgIHBvaW50LmNvbXBsZXRlKCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW0oZnJhbWUpOwogICAgICAgICAgfQogICAgICAgIH07CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKQogICAgICAgIGRpZmYucHVzaChwb2ludC50b1tpXSAtIHBvaW50LmZyb21baV0pOwoKICAgICAgZGF0YS5lZmZlY3QgPSAkLmV4dGVuZCh7CiAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICBhbmltYXRpbmcgPSBmYWxzZTsKICAgICAgICB9LAogICAgICAgIGVhc2luZzogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGRhdGEpIHsKICAgICAgICAgIHJldHVybiBjICogTWF0aC5zcXJ0KDEgLSAodD10L2RhdGEtMSkqdCkgKyBiOwogICAgICAgIH0KICAgICAgfSwgcG9pbnQpOwoKICAgICAgdGhpcy5kYXRhKGRhdGEpOwoKICAgICAgZnJhbWUoKTsKCiAgICB9IGVsc2UgewogICAgICAKICAgICAgZGVsZXRlIGRhdGFbJ2VmZmVjdCddOwoKICAgIH0KICB9Cn0pOwoKLy8gRXhwb3J0IHNvbWUgZ2xvYmFscwoKJC5pc1RvdWNoID0gaXNUb3VjaDsKJC5tb3VzZUV2ZW50cyA9IG1vdXNlRXZlbnRzOwokLmNzc1ByZWZpeCA9IGdldFByZWZpeDsKJC5jc3NUcmFuc2l0aW9uRW5kID0gZ2V0VHJhbnNpdGlvbkVuZDsKJC5maW5kUG9zID0gZmluZFBvczsKCn0pKGpRdWVyeSk7Cg=='],
//	nope: ['../../lib/turn.html4.min.js'],
//	both: ['../../lib/zoom.min.js', 'js/magazine.js', 'css/magazine.css'],
//	both: ['../../lib/zoom.min.js', 'css/magazine.css'],
//	both: ['css/magazine.css'],
//	both: [''],
	both: ['data:/text/plain;base64,LyoqCiAqIHR1cm4uanMgNHRoIHJlbGVhc2UKICogdHVybmpzLmNvbQogKiB0dXJuanMuY29tL2xpY2Vuc2UudHh0CiAqCiAqIENvcHlyaWdodCAoQykgMjAxMiBFbW1hbnVlbCBHYXJjaWEKICogQWxsIHJpZ2h0cyByZXNlcnZlZAogKiovCgooZnVuY3Rpb24oJCkgewoKJ3VzZSBzdHJpY3QnOwoKdmFyIGhhczNkLAogIAogIGhhc1JvdCwKCiAgdmVuZG9yID0gJycsCiAgCiAgdmVyc2lvbiA9ICc0LjEuMCcsCgogIFBJID0gTWF0aC5QSSwKCiAgQTkwID0gUEkvMiwKCiAgaXNUb3VjaCA9ICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdywKCiAgbW91c2VFdmVudHMgPSAoaXNUb3VjaCkgPwogICAgewogICAgICBkb3duOiAndG91Y2hzdGFydCcsCiAgICAgIG1vdmU6ICd0b3VjaG1vdmUnLAogICAgICB1cDogJ3RvdWNoZW5kJywKICAgICAgb3ZlcjogJ3RvdWNoc3RhcnQnLAogICAgICBvdXQ6ICd0b3VjaGVuZCcKICAgIH0KICAgIDoKICAgIHsKICAgICAgZG93bjogJ21vdXNlZG93bicsCiAgICAgIG1vdmU6ICdtb3VzZW1vdmUnLAogICAgICB1cDogJ21vdXNldXAnLAogICAgICBvdmVyOiAnbW91c2VvdmVyJywKICAgICAgb3V0OiAnbW91c2VvdXQnCiAgICB9LAoKICAvLyBDb250YW5zdHMgdXNlZCBmb3IgZWFjaCBjb3JuZXIKICAvLyAgIHwgdGwgKiB0ciB8CiAgLy8gbCB8ICogICAgICogfCByCiAgLy8gICB8IGJsICogYnIgfAoKICBjb3JuZXJzID0gewogICAgYmFja3dhcmQ6IFsnYmwnLCAndGwnXSwKICAgIGZvcndhcmQ6IFsnYnInLCAndHInXSwKICAgIGFsbDogWyd0bCcsICdibCcsICd0cicsICdicicsICdsJywgJ3InXQogIH0sCgogIC8vIERpc3BsYXkgdmFsdWVzCgogIGRpc3BsYXlzID0gWydzaW5nbGUnLCAnZG91YmxlJ10sCgogIC8vIERpcmVjdGlvbiB2YWx1ZXMKCiAgZGlyZWN0aW9ucyA9IFsnbHRyJywgJ3J0bCddLAoKICAvLyBEZWZhdWx0IG9wdGlvbnMKCiAgdHVybk9wdGlvbnMgPSB7CgogICAgLy8gRW5hYmxlcyBoYXJkd2FyZSBhY2NlbGVyYXRpb24KCiAgICBhY2NlbGVyYXRpb246IHRydWUsCgogICAgLy8gRGlzcGxheQoKICAgIGRpc3BsYXk6ICdkb3VibGUnLAoKICAgIC8vIER1cmF0aW9uIG9mIHRyYW5zaXRpb24gaW4gbWlsbGlzZWNvbmRzCgogICAgZHVyYXRpb246IDYwMCwKCiAgICAvLyBGaXJzdCBwYWdlCgogICAgcGFnZTogMSwKICAgIAogICAgLy8gRW5hYmxlcyBncmFkaWVudHMKCiAgICBncmFkaWVudHM6IHRydWUsCgogICAgLy8gQ29ybmVycyB1c2VkIHdoZW4gdHVybmluZyB0aGUgcGFnZQoKICAgIHR1cm5Db3JuZXJzOiAnYmwsYnInLAoKICAgIC8vIEV2ZW50cwoKICAgIHdoZW46IG51bGwKICB9LAoKICBmbGlwT3B0aW9ucyA9IHsKCiAgICAvLyBTaXplIG9mIHRoZSBhY3RpdmUgem9uZSBvZiBlYWNoIGNvcm5lcgoKICAgIGNvcm5lclNpemU6IDEwMAoKICB9LAoKICAvLyBOdW1iZXIgb2YgcGFnZXMgaW4gdGhlIERPTSwgbWluaW11bSB2YWx1ZTogNgoKICBwYWdlc0luRE9NID0gNiwKICAKCnR1cm5NZXRob2RzID0gewoKICAvLyBTaW5nbGV0b24gY29uc3RydWN0b3IKICAvLyAkKCcjc2VsZWN0b3InKS50dXJuKFtvcHRpb25zXSk7CgogIGluaXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCiAgICAvLyBEZWZpbmUgY29uc3RhbnRzCiAgICAKICAgIGhhczNkID0gJ1dlYktpdENTU01hdHJpeCcgaW4gd2luZG93IHx8ICdNb3pQZXJzcGVjdGl2ZScgaW4gZG9jdW1lbnQuYm9keS5zdHlsZTsKICAgIGhhc1JvdCA9IHJvdGF0aW9uQXZhaWxhYmxlKCk7CiAgICB2ZW5kb3IgPSBnZXRQcmVmaXgoKTsKCiAgICB2YXIgaSwgdGhhdCA9IHRoaXMsIHBhZ2VOdW0gPSAwLCBkYXRhID0gdGhpcy5kYXRhKCksIGNoID0gdGhpcy5jaGlsZHJlbigpOwoKICAgIC8vIFNldCBpbml0aWFsIGNvbmZpZ3VyYXRpb24KCiAgICBvcHRpb25zID0gJC5leHRlbmQoewogICAgICB3aWR0aDogdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0KCksCiAgICAgIGRpcmVjdGlvbjogdGhpcy5hdHRyKCdkaXInKSB8fCB0aGlzLmNzcygnZGlyZWN0aW9uJykgfHwgJ2x0cicKICAgIH0sIHR1cm5PcHRpb25zLCBvcHRpb25zKTsKCiAgICBkYXRhLm9wdHMgPSBvcHRpb25zOwogICAgZGF0YS5wYWdlT2JqcyA9IHt9OwogICAgZGF0YS5wYWdlcyA9IHt9OwogICAgZGF0YS5wYWdlV3JhcCA9IHt9OwogICAgZGF0YS5wYWdlWm9vbSA9IHt9OwogICAgZGF0YS5wYWdlUGxhY2UgPSB7fTsKICAgIGRhdGEucGFnZU12ID0gW107CiAgICBkYXRhLnpvb20gPSAxOwogICAgZGF0YS50b3RhbFBhZ2VzID0gb3B0aW9ucy5wYWdlcyB8fCAwOwogICAgZGF0YS5ldmVudEhhbmRsZXJzID0gewogICAgICB0b3VjaFN0YXJ0OiAkLnByb3h5KHR1cm5NZXRob2RzLl90b3VjaFN0YXJ0LCB0aGlzKSwKICAgICAgdG91Y2hNb3ZlOiAkLnByb3h5KHR1cm5NZXRob2RzLl90b3VjaE1vdmUsIHRoaXMpLAogICAgICB0b3VjaEVuZDogJC5wcm94eSh0dXJuTWV0aG9kcy5fdG91Y2hFbmQsIHRoaXMpLAogICAgICBzdGFydDogJC5wcm94eSh0dXJuTWV0aG9kcy5fZXZlbnRTdGFydCwgdGhpcykKICAgIH07CgoKCiAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXJzCgogICAgaWYgKG9wdGlvbnMud2hlbikKICAgICAgZm9yIChpIGluIG9wdGlvbnMud2hlbikKICAgICAgICBpZiAoaGFzKGksIG9wdGlvbnMud2hlbikpCiAgICAgICAgICB0aGlzLmJpbmQoaSwgb3B0aW9ucy53aGVuW2ldKTsKCiAgICAvLyBTZXQgdGhlIGNzcwoKICAgIHRoaXMuY3NzKHtwb3NpdGlvbjogJ3JlbGF0aXZlJywgd2lkdGg6IG9wdGlvbnMud2lkdGgsIGhlaWdodDogb3B0aW9ucy5oZWlnaHR9KTsKCiAgICAvLyBTZXQgdGhlIGluaXRpYWwgZGlzcGxheQoKICAgIHRoaXMudHVybignZGlzcGxheScsIG9wdGlvbnMuZGlzcGxheSk7CgogICAgLy8gU2V0IHRoZSBkaXJlY3Rpb24KCiAgICBpZiAob3B0aW9ucy5kaXJlY3Rpb24hPT0nJykKICAgICAgdGhpcy50dXJuKCdkaXJlY3Rpb24nLCBvcHRpb25zLmRpcmVjdGlvbik7CiAgICAKICAgIC8vIFByZXZlbnQgYmx1ZSBzY3JlZW4gcHJvYmxlbXMgb2Ygc3dpdGNoaW5nIHRvIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBtb2RlCiAgICAvLyBCeSBmb3JjaW5nIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmb3IgZXZlcgoKICAgIGlmIChoYXMzZCAmJiAhaXNUb3VjaCAmJiBvcHRpb25zLmFjY2VsZXJhdGlvbikKICAgICAgdGhpcy50cmFuc2Zvcm0odHJhbnNsYXRlKDAsIDAsIHRydWUpKTsKCiAgICAvLyBBZGQgcGFnZXMgZnJvbSB0aGUgRE9NCgogICAgZm9yIChpID0gMDsgaTxjaC5sZW5ndGg7IGkrKykgewogICAgICBpZiAoJChjaFtpXSkuYXR0cignaWdub3JlJykhPScxJykgewogICAgICAgIHRoaXMudHVybignYWRkUGFnZScsIGNoW2ldLCArK3BhZ2VOdW0pOwogICAgICB9CiAgICB9CgogICAgLy8gRXZlbnQgbGlzdGVuZXJzCgogICAgJCh0aGlzKS5iaW5kKG1vdXNlRXZlbnRzLmRvd24sIGRhdGEuZXZlbnRIYW5kbGVycy50b3VjaFN0YXJ0KS4KICAgICAgYmluZCgnZW5kJywgdHVybk1ldGhvZHMuX2V2ZW50RW5kKS4KICAgICAgYmluZCgncHJlc3NlZCcsIHR1cm5NZXRob2RzLl9ldmVudFByZXNzZWQpLgogICAgICBiaW5kKCdyZWxlYXNlZCcsIHR1cm5NZXRob2RzLl9ldmVudFJlbGVhc2VkKS4KICAgICAgYmluZCgnZmxpcCcsIHR1cm5NZXRob2RzLl9mbGlwKTsKCiAgICAkKHRoaXMpLnBhcmVudCgpLmJpbmQoJ3N0YXJ0JywgZGF0YS5ldmVudEhhbmRsZXJzLnN0YXJ0KTsKCiAgICAkKGRvY3VtZW50KS5iaW5kKG1vdXNlRXZlbnRzLm1vdmUsIGRhdGEuZXZlbnRIYW5kbGVycy50b3VjaE1vdmUpLgogICAgICBiaW5kKG1vdXNlRXZlbnRzLnVwLCBkYXRhLmV2ZW50SGFuZGxlcnMudG91Y2hFbmQpOwoKICAgIC8vIFNldCB0aGUgaW5pdGlhbCBwYWdlCgogICAgdGhpcy50dXJuKCdwYWdlJywgb3B0aW9ucy5wYWdlKTsKCiAgICAvLyBUaGlzIGZsaXBib29rIGlzIHJlYWR5CgogICAgZGF0YS5kb25lID0gdHJ1ZTsKCiAgICByZXR1cm4gdGhpczsKICB9LAoKICAvLyBBZGRzIGEgcGFnZSBmcm9tIGV4dGVybmFsIGRhdGEKCiAgYWRkUGFnZTogZnVuY3Rpb24oZWxlbWVudCwgcGFnZSkgewoKICAgIHZhciBjdXJyZW50UGFnZSwKICAgICAgY2xhc3NOYW1lLAogICAgICBpbmNQYWdlcyA9IGZhbHNlLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIGxhc3RQYWdlID0gZGF0YS50b3RhbFBhZ2VzKzE7CgogICAgaWYgKGRhdGEuZGVzdHJveWluZykKICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIC8vIFJlYWQgdGhlIHBhZ2UgbnVtYmVyIGZyb20gdGhlIGNsYXNzTmFtZSBvZiBgZWxlbWVudGAgLSBmb3JtYXQ6IHBbMC05XSsKCiAgICBpZiAoKGN1cnJlbnRQYWdlID0gL1xicChbMC05XSspXGIvLmV4ZWMoJChlbGVtZW50KS5hdHRyKCdjbGFzcycpKSkpCiAgICAgIHBhZ2UgPSBwYXJzZUludChjdXJyZW50UGFnZVsxXSwgMTApOwoKICAgIGlmIChwYWdlKSB7CiAgICAgIAogICAgICBpZiAocGFnZT09bGFzdFBhZ2UpCiAgICAgICAgaW5jUGFnZXMgPSB0cnVlOwogICAgICBlbHNlIGlmIChwYWdlPmxhc3RQYWdlKQogICAgICAgIHRocm93IHR1cm5FcnJvcignUGFnZSAiJytwYWdlKyciIGNhbm5vdCBiZSBpbnNlcnRlZCcpOwoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICBwYWdlID0gbGFzdFBhZ2U7CiAgICAgIGluY1BhZ2VzID0gdHJ1ZTsKCiAgICB9CgogICAgaWYgKHBhZ2U+PTEgJiYgcGFnZTw9bGFzdFBhZ2UpIHsKCiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKQogICAgICAgIGNsYXNzTmFtZSA9IChwYWdlJTIpID8gJyBvZGQnIDogJyBldmVuJzsKICAgICAgZWxzZQogICAgICAgIGNsYXNzTmFtZSA9ICcnOwoKICAgICAgLy8gU3RvcCBhbmltYXRpb25zCiAgICAgIGlmIChkYXRhLmRvbmUpCiAgICAgICAgdGhpcy50dXJuKCdzdG9wJyk7CgogICAgICAvLyBNb3ZlIHBhZ2VzIGlmIGl0J3MgbmVjZXNzYXJ5CiAgICAgIGlmIChwYWdlIGluIGRhdGEucGFnZU9ianMpCiAgICAgICAgdHVybk1ldGhvZHMuX21vdmVQYWdlcy5jYWxsKHRoaXMsIHBhZ2UsIDEpOwoKICAgICAgLy8gSW5jcmVhc2UgdGhlIG51bWJlciBvZiBwYWdlcwogICAgICBpZiAoaW5jUGFnZXMpCiAgICAgICAgZGF0YS50b3RhbFBhZ2VzID0gbGFzdFBhZ2U7CgogICAgICAvLyBBZGQgZWxlbWVudAogICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdID0gJChlbGVtZW50KS4KICAgICAgICBjc3MoeydmbG9hdCc6ICdsZWZ0J30pLgogICAgICAgIGFkZENsYXNzKCdwYWdlIHAnICsgcGFnZSArIGNsYXNzTmFtZSk7CgogICAgICBpZiAoIWhhc0hhcmRQYWdlKCkgJiYgIGRhdGEucGFnZU9ianNbcGFnZV0uaGFzQ2xhc3MoJ2hhcmQnKSkgewogICAgICAgIGRhdGEucGFnZU9ianNbcGFnZV0ucmVtb3ZlQ2xhc3MoJ2hhcmQnKTsKICAgICAgfQoKICAgICAgLy8gQWRkIHBhZ2UKICAgICAgdHVybk1ldGhvZHMuX2FkZFBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgIC8vIFJlbW92ZSBwYWdlcyBvdXQgb2YgcmFuZ2UKICAgICAgdHVybk1ldGhvZHMuX3JlbW92ZUZyb21ET00uY2FsbCh0aGlzKTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9LAoKICAvLyBBZGRzIGEgcGFnZQoKICBfYWRkUGFnZTogZnVuY3Rpb24ocGFnZSkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBlbGVtZW50ID0gZGF0YS5wYWdlT2Jqc1twYWdlXTsKCiAgICBpZiAoZWxlbWVudCkKICAgICAgaWYgKHR1cm5NZXRob2RzLl9uZWNlc3NQYWdlLmNhbGwodGhpcywgcGFnZSkpIHsKCiAgICAgICAgaWYgKCFkYXRhLnBhZ2VXcmFwW3BhZ2VdKSB7CgogICAgICAgICAgLy8gV3JhcHBlcgogICAgICAgICAgZGF0YS5wYWdlV3JhcFtwYWdlXSA9ICQoJzxkaXYvPicsCiAgICAgICAgICAgIHsnY2xhc3MnOiAncGFnZS13cmFwcGVyJywKICAgICAgICAgICAgICBwYWdlOiBwYWdlLAogICAgICAgICAgICAgIGNzczoge3Bvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ319KTsKCiAgICAgICAgICAvLyBBcHBlbmQgdG8gdGhpcyBmbGlwYm9vawogICAgICAgICAgdGhpcy5hcHBlbmQoZGF0YS5wYWdlV3JhcFtwYWdlXSk7CgogICAgICAgICAgaWYgKCFkYXRhLnBhZ2VQbGFjZVtwYWdlXSkgewogICAgICAgICAgICAKICAgICAgICAgICAgZGF0YS5wYWdlUGxhY2VbcGFnZV0gPSBwYWdlOwogICAgICAgICAgICAvLyBNb3ZlIGBwYWdlT2Jqc1twYWdlXWAgdG8gd3JhcHBlcgogICAgICAgICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdLmFwcGVuZFRvKGRhdGEucGFnZVdyYXBbcGFnZV0pOwogICAgICAgICAgCiAgICAgICAgIH0KCiAgICAgICAgICAvLyBTZXQgdGhlIHNpemUgb2YgdGhlIHBhZ2UKICAgICAgICAgIHZhciBwcm9wID0gdHVybk1ldGhvZHMuX3BhZ2VTaXplLmNhbGwodGhpcywgcGFnZSwgdHJ1ZSk7CiAgICAgICAgICBlbGVtZW50LmNzcyh7d2lkdGg6IHByb3Aud2lkdGgsIGhlaWdodDogcHJvcC5oZWlnaHR9KTsKICAgICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKHByb3ApOwoKICAgICAgICB9CgogICAgICAgIGlmIChkYXRhLnBhZ2VQbGFjZVtwYWdlXSA9PSBwYWdlKSB7CgogICAgICAgICAvLyBJZiB0aGUgcGFnZSBpc24ndCBpbiBhbm90aGVyIHBsYWNlLCBjcmVhdGUgdGhlIGZsaXAgZWZmZWN0CiAgICAgICAgICB0dXJuTWV0aG9kcy5fbWFrZUZsaXAuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgIH0KICAgICAgICAKICAgICAgfSBlbHNlIHsKCiAgICAgICAgLy8gUGxhY2UKICAgICAgICBkYXRhLnBhZ2VQbGFjZVtwYWdlXSA9IDA7CgogICAgICAgIC8vIFJlbW92ZSBlbGVtZW50IGZyb20gdGhlIERPTQogICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW3BhZ2VdKQogICAgICAgICAgZGF0YS5wYWdlT2Jqc1twYWdlXS5yZW1vdmUoKTsKCiAgICAgIH0KCiAgfSwKCiAgLy8gQ2hlY2tzIGlmIGEgcGFnZSBpcyBpbiBtZW1vcnkKICAKICBoYXNQYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgcmV0dXJuIGhhcyhwYWdlLCB0aGlzLmRhdGEoKS5wYWdlT2Jqcyk7CiAgCiAgfSwKCiAgLy8gQ2VudGVycyB0aGUgZmxpcGJvb2sKCiAgY2VudGVyOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHNpemUgPSAkKHRoaXMpLnR1cm4oJ3NpemUnKSwKICAgICAgbGVmdCA9IDA7CgogICAgaWYgKCFkYXRhLm5vQ2VudGVyKSB7CiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKSB7CiAgICAgICAgdmFyIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnLCBwYWdlIHx8IGRhdGEudHBhZ2UgfHwgZGF0YS5wYWdlKTsKCiAgICAgICAgaWYgKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgewogICAgICAgICAgaWYgKCF2aWV3WzBdKQogICAgICAgICAgICBsZWZ0IC09IHNpemUud2lkdGgvNDsKICAgICAgICAgIGVsc2UgaWYgKCF2aWV3WzFdKQogICAgICAgICAgICBsZWZ0ICs9IHNpemUud2lkdGgvNDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKCF2aWV3WzBdKQogICAgICAgICAgICBsZWZ0ICs9IHNpemUud2lkdGgvNDsKICAgICAgICAgIGVsc2UgaWYgKCF2aWV3WzFdKQogICAgICAgICAgICBsZWZ0IC09IHNpemUud2lkdGgvNDsKICAgICAgICB9CiAgICAgIAogICAgICB9CgogICAgICAkKHRoaXMpLmNzcyh7bWFyZ2luTGVmdDogbGVmdH0pOwogICAgfQoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEZXN0cm95cyB0aGUgZmxpcGJvb2sKCiAgZGVzdHJveTogZnVuY3Rpb24gKCkgewoKICAgIHZhciBwYWdlLAogICAgICBmbGlwYm9vayA9IHRoaXMsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgZXZlbnRzID0gWwogICAgICAgICdlbmQnLCAnZmlyc3QnLCAnZmxpcCcsICdsYXN0JywgJ3ByZXNzZWQnLAogICAgICAgICdyZWxlYXNlZCcsICdzdGFydCcsICd0dXJuaW5nJywgJ3R1cm5lZCcsCiAgICAgICAgJ3pvb21pbmcnLCAnbWlzc2luZyddOwoKICAgIGlmICh0cmlnZ2VyKCdkZXN0cm95aW5nJywgdGhpcyk9PSdwcmV2ZW50ZWQnKQogICAgICByZXR1cm47CgogICAgZGF0YS5kZXN0cm95aW5nID0gdHJ1ZTsKCiAgICAkLmVhY2goZXZlbnRzLCBmdW5jdGlvbihpbmRleCwgZXZlbnROYW1lKSB7CiAgICAgIGZsaXBib29rLnVuYmluZChldmVudE5hbWUpOwogICAgfSk7CgogICAgdGhpcy5wYXJlbnQoKS51bmJpbmQoJ3N0YXJ0JywgZGF0YS5ldmVudEhhbmRsZXJzLnN0YXJ0KTsKCiAgICAkKGRvY3VtZW50KS51bmJpbmQobW91c2VFdmVudHMubW92ZSwgZGF0YS5ldmVudEhhbmRsZXJzLnRvdWNoTW92ZSkuCiAgICAgIHVuYmluZChtb3VzZUV2ZW50cy51cCwgZGF0YS5ldmVudEhhbmRsZXJzLnRvdWNoRW5kKTsKICAgIAogICAgd2hpbGUgKGRhdGEudG90YWxQYWdlcyE9PTApIHsKICAgICAgdGhpcy50dXJuKCdyZW1vdmVQYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgIH0KCiAgICBpZiAoZGF0YS5mcGFyZW50KQogICAgICBkYXRhLmZwYXJlbnQucmVtb3ZlKCk7CgogICAgaWYgKGRhdGEuc2hhZG93KQogICAgICBkYXRhLnNoYWRvdy5yZW1vdmUoKTsKCiAgICB0aGlzLnJlbW92ZURhdGEoKTsKICAgIGRhdGEgPSBudWxsOwoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBDaGVja3MgaWYgdGhpcyBlbGVtZW50IGlzIGEgZmxpcGJvb2sKCiAgaXM6IGZ1bmN0aW9uKCkgewoKICAgIHJldHVybiB0eXBlb2YodGhpcy5kYXRhKCkucGFnZXMpPT0nb2JqZWN0JzsKCiAgfSwKCiAgLy8gU2V0cyBhbmQgZ2V0cyB0aGUgem9vbSB2YWx1ZQoKICB6b29tOiBmdW5jdGlvbihuZXdab29tKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHR5cGVvZihuZXdab29tKT09J251bWJlcicpIHsKCiAgICAgIGlmIChuZXdab29tPDAuMDAxIHx8IG5ld1pvb20+MTAwKQogICAgICAgIHRocm93IHR1cm5FcnJvcihuZXdab29tKyAnIGlzIG5vdCBhIHZhbHVlIGZvciB6b29tJyk7CiAgICAgIAogICAgICBpZiAodHJpZ2dlcignem9vbWluZycsIHRoaXMsIFtuZXdab29tLCBkYXRhLnpvb21dKT09J3ByZXZlbnRlZCcpCiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIAogICAgICB2YXIgc2l6ZSA9IHRoaXMudHVybignc2l6ZScpLAogICAgICAgIGN1cnJlbnRWaWV3ID0gdGhpcy50dXJuKCd2aWV3JyksCiAgICAgICAgaXogPSAxL2RhdGEuem9vbSwKICAgICAgICBuZXdXaWR0aCA9IE1hdGgucm91bmQoc2l6ZS53aWR0aCAqIGl6ICogbmV3Wm9vbSksCiAgICAgICAgbmV3SGVpZ2h0ID0gTWF0aC5yb3VuZChzaXplLmhlaWdodCAqIGl6ICogbmV3Wm9vbSk7CiAgICAKICAgICAgZGF0YS56b29tID0gbmV3Wm9vbTsKCiAgICAgICQodGhpcykudHVybignc3RvcCcpLgogICAgICAgIHR1cm4oJ3NpemUnLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKICAgICAgICAvKi4KICAgICAgICBjc3Moe21hcmdpblRvcDogc2l6ZS5oZWlnaHQgKiBpeiAvIDIgLSBuZXdIZWlnaHQgLyAyfSk7Ki8KCiAgICAgIGlmIChkYXRhLm9wdHMuYXV0b0NlbnRlcikKICAgICAgICB0aGlzLnR1cm4oJ2NlbnRlcicpOwogICAgICAvKmVsc2UKICAgICAgICAkKHRoaXMpLmNzcyh7bWFyZ2luTGVmdDogc2l6ZS53aWR0aCAqIGl6IC8gMiAtIG5ld1dpZHRoIC8gMn0pOyovCgogICAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwodGhpcyk7CgogICAgICBmb3IgKHZhciBpID0gMDsgaTxjdXJyZW50Vmlldy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChjdXJyZW50Vmlld1tpXSAmJiBkYXRhLnBhZ2Vab29tW2N1cnJlbnRWaWV3W2ldXSE9ZGF0YS56b29tKSB7CiAgCiAgICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb21lZCcsWwogICAgICAgICAgICBjdXJyZW50Vmlld1tpXSwKICAgICAgICAgICAgY3VycmVudFZpZXcsCiAgICAgICAgICAgIGRhdGEucGFnZVpvb21bY3VycmVudFZpZXdbaV1dLAogICAgICAgICAgICBkYXRhLnpvb21dKTsKCiAgICAgICAgICBkYXRhLnBhZ2Vab29tW2N1cnJlbnRWaWV3W2ldXSA9IGRhdGEuem9vbTsKICAgICAgfQogICAgfQoKICAgICAgcmV0dXJuIHRoaXM7CgogICAgfSBlbHNlCiAgICAgIHJldHVybiBkYXRhLnpvb207CgogIH0sCgogIC8vIEdldHMgdGhlIHNpemUgb2YgYSBwYWdlCgogIF9wYWdlU2l6ZTogZnVuY3Rpb24ocGFnZSwgcG9zaXRpb24pIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBwcm9wID0ge307CgogICAgaWYgKGRhdGEuZGlzcGxheT09J3NpbmdsZScpIHsKCiAgICAgIHByb3Aud2lkdGggPSB0aGlzLndpZHRoKCk7CiAgICAgIHByb3AuaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTsKCiAgICAgIGlmIChwb3NpdGlvbikgewogICAgICAgIHByb3AudG9wID0gMDsKICAgICAgICBwcm9wLmxlZnQgPSAwOwogICAgICAgIHByb3AucmlnaHQgPSAnYXV0byc7CiAgICAgIH0KCiAgICB9IGVsc2UgewoKICAgICAgdmFyIHBhZ2VXaWR0aCA9IHRoaXMud2lkdGgoKS8yLAogICAgICAgIHBhZ2VIZWlnaHQgPSB0aGlzLmhlaWdodCgpOwoKICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0uaGFzQ2xhc3MoJ293bi1zaXplJykpIHsKICAgICAgICBwcm9wLndpZHRoID0gZGF0YS5wYWdlT2Jqc1twYWdlXS53aWR0aCgpOwogICAgICAgIHByb3AuaGVpZ2h0ID0gZGF0YS5wYWdlT2Jqc1twYWdlXS5oZWlnaHQoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBwcm9wLndpZHRoID0gcGFnZVdpZHRoOwogICAgICAgIHByb3AuaGVpZ2h0ID0gcGFnZUhlaWdodDsKICAgICAgfQogICAgICAKICAgICAgaWYgKHBvc2l0aW9uKSB7CiAgICAgICAgdmFyIG9kZCA9IHBhZ2UlMjsKICAgICAgICBwcm9wLnRvcCA9IChwYWdlSGVpZ2h0LXByb3AuaGVpZ2h0KS8yOwoKICAgICAgICBpZiAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSB7CiAgICAgICAgICAKICAgICAgICAgIHByb3BbKG9kZCkgPyAncmlnaHQnIDogJ2xlZnQnXSA9IHBhZ2VXaWR0aC1wcm9wLndpZHRoOwogICAgICAgICAgcHJvcFsob2RkKSA/ICdsZWZ0JyA6ICdyaWdodCddID0gJ2F1dG8nOwoKICAgICAgICB9IGVsc2UgewogICAgICAgICAgCiAgICAgICAgICBwcm9wWyhvZGQpID8gJ2xlZnQnIDogJ3JpZ2h0J10gPSBwYWdlV2lkdGgtcHJvcC53aWR0aDsKICAgICAgICAgIHByb3BbKG9kZCkgPyAncmlnaHQnIDogJ2xlZnQnXSA9ICdhdXRvJzsKCiAgICAgICAgfQogICAgICAKICAgICAgfQogICAgfQoKICAgIHJldHVybiBwcm9wOwoKICB9LAoKICAvLyBQcmVwYXJlcyB0aGUgZmxpcCBlZmZlY3QgZm9yIGEgcGFnZQoKICBfbWFrZUZsaXA6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmICghZGF0YS5wYWdlc1twYWdlXSAmJiBkYXRhLnBhZ2VQbGFjZVtwYWdlXT09cGFnZSkgewogICAgICAKICAgICAgdmFyIHNpbmdsZSA9IGRhdGEuZGlzcGxheT09J3NpbmdsZScsCiAgICAgICAgb2RkID0gcGFnZSUyOwoKICAgICAgZGF0YS5wYWdlc1twYWdlXSA9IGRhdGEucGFnZU9ianNbcGFnZV0uCiAgICAgICAgY3NzKHR1cm5NZXRob2RzLl9wYWdlU2l6ZS5jYWxsKHRoaXMsIHBhZ2UpKS4KICAgICAgICBmbGlwKHsKICAgICAgICAgIHBhZ2U6IHBhZ2UsCiAgICAgICAgICBuZXh0OiAob2RkIHx8IHNpbmdsZSkgPyBwYWdlKzEgOiBwYWdlLTEsCiAgICAgICAgICB0dXJuOiB0aGlzCiAgICAgICAgfSkuCiAgICAgICAgZmxpcCgnZGlzYWJsZScsIGRhdGEuZGlzYWJsZWQpOwoKICAgICAgICAvLyBJc3N1ZSBhYm91dCB6LWluZGV4CiAgICAgICAgdHVybk1ldGhvZHMuX3NldFBhZ2VMb2MuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgICAgZGF0YS5wYWdlWm9vbVtwYWdlXSA9IGRhdGEuem9vbTsKICAgICAgICAKICAgIH0KCiAgICByZXR1cm4gZGF0YS5wYWdlc1twYWdlXTsKICB9LAoKICAvLyBNYWtlcyBwYWdlcyB3aXRoaW4gYSByYW5nZQoKICBfbWFrZVJhbmdlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwgcmFuZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoZGF0YS50b3RhbFBhZ2VzPDEpCiAgICAgIHJldHVybjsKCiAgICByYW5nZSA9IHRoaXMudHVybigncmFuZ2UnKTsKCiAgICBmb3IgKHBhZ2UgPSByYW5nZVswXTsgcGFnZTw9cmFuZ2VbMV07IHBhZ2UrKykKICAgICAgdHVybk1ldGhvZHMuX2FkZFBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKCiAgfSwKCiAgLy8gUmV0dXJucyBhIHJhbmdlIG9mIHBhZ2VzIHRoYXQgc2hvdWxkIGJlIGluIHRoZSBET00KICAvLyBFeGFtcGxlOgogIC8vIC0gcGFnZSBpbiB0aGUgY3VycmVudCB2aWV3LCByZXR1cm4gdHJ1ZQogIC8vICogcGFnZSBpcyBpbiB0aGUgcmFuZ2UsIHJldHVybiB0cnVlCiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UKICAvLwogIC8vIDEgMi0zIDQtNSA2LTcgOC05IDEwLTExIDEyLTEzCiAgLy8gICAqKiAgKiogIC0tICAgKiogICoqCgogIHJhbmdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIHJlbWFpbmluZ1BhZ2VzLCBsZWZ0LCByaWdodCwgdmlldywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgICAgcGFnZSA9IHBhZ2UgfHwgZGF0YS50cGFnZSB8fCBkYXRhLnBhZ2UgfHwgMTsKICAgICAgdmlldyA9IHR1cm5NZXRob2RzLl92aWV3LmNhbGwodGhpcywgcGFnZSk7CgogICAgICBpZiAocGFnZTwxIHx8IHBhZ2U+ZGF0YS50b3RhbFBhZ2VzKQogICAgICAgIHRocm93IHR1cm5FcnJvcignIicrcGFnZSsnIiBpcyBub3QgYSB2YWxpZCBwYWdlJyk7CgogICAgCiAgICAgIHZpZXdbMV0gPSB2aWV3WzFdIHx8IHZpZXdbMF07CiAgICAgIAogICAgICBpZiAodmlld1swXT49MSAmJiB2aWV3WzFdPD1kYXRhLnRvdGFsUGFnZXMpIHsKCiAgICAgICAgcmVtYWluaW5nUGFnZXMgPSBNYXRoLmZsb29yKChwYWdlc0luRE9NLTIpLzIpOwoKICAgICAgICBpZiAoZGF0YS50b3RhbFBhZ2VzLXZpZXdbMV0gPiB2aWV3WzBdKSB7CiAgICAgICAgICBsZWZ0ID0gTWF0aC5taW4odmlld1swXS0xLCByZW1haW5pbmdQYWdlcyk7CiAgICAgICAgICByaWdodCA9IDIqcmVtYWluaW5nUGFnZXMtbGVmdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmlnaHQgPSBNYXRoLm1pbihkYXRhLnRvdGFsUGFnZXMtdmlld1sxXSwgcmVtYWluaW5nUGFnZXMpOwogICAgICAgICAgbGVmdCA9IDIqcmVtYWluaW5nUGFnZXMtcmlnaHQ7CiAgICAgICAgfQoKICAgICAgfSBlbHNlIHsKICAgICAgICBsZWZ0ID0gcGFnZXNJbkRPTS0xOwogICAgICAgIHJpZ2h0ID0gcGFnZXNJbkRPTS0xOwogICAgICB9CgogICAgICByZXR1cm4gW01hdGgubWF4KDEsIHZpZXdbMF0tbGVmdCksCiAgICAgICAgICBNYXRoLm1pbihkYXRhLnRvdGFsUGFnZXMsIHZpZXdbMV0rcmlnaHQpXTsKCiAgfSwKCiAgLy8gRGV0ZWN0cyBpZiBhIHBhZ2UgaXMgd2l0aGluIHRoZSByYW5nZSBvZiBgcGFnZXNJbkRPTWAgZnJvbSB0aGUgY3VycmVudCB2aWV3CgogIF9uZWNlc3NQYWdlOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIGlmIChwYWdlPT09MCkKICAgICAgcmV0dXJuIHRydWU7CgogICAgdmFyIHJhbmdlID0gdGhpcy50dXJuKCdyYW5nZScpOwoKICAgIHJldHVybiB0aGlzLmRhdGEoKS5wYWdlT2Jqc1twYWdlXS5oYXNDbGFzcygnZml4ZWQnKSB8fAogICAgICAocGFnZT49cmFuZ2VbMF0gJiYgcGFnZTw9cmFuZ2VbMV0pOwogICAgCiAgfSwKCiAgLy8gUmVsZWFzZXMgbWVtb3J5IGJ5IHJlbW92aW5nIHBhZ2VzIGZyb20gdGhlIERPTQoKICBfcmVtb3ZlRnJvbURPTTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VXcmFwKSAmJgogICAgICAgICF0dXJuTWV0aG9kcy5fbmVjZXNzUGFnZS5jYWxsKHRoaXMsIHBhZ2UpKQogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKICAgIAogIH0sCgogIC8vIFJlbW92ZXMgYSBwYWdlIGZyb20gRE9NIGFuZCBpdHMgaW50ZXJuYWwgcmVmZXJlbmNlcwoKICBfcmVtb3ZlUGFnZUZyb21ET006IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKSB7CiAgICAgIHZhciBkZCA9IGRhdGEucGFnZXNbcGFnZV0uZGF0YSgpOwoKICAgICAgZmxpcE1ldGhvZHMuX21vdmVGb2xkaW5nUGFnZS5jYWxsKGRhdGEucGFnZXNbcGFnZV0sIGZhbHNlKTsKCiAgICAgIGlmIChkZC5mICYmIGRkLmYuZndyYXBwZXIpCiAgICAgICAgZGQuZi5md3JhcHBlci5yZW1vdmUoKTsKCiAgICAgIGRhdGEucGFnZXNbcGFnZV0ucmVtb3ZlRGF0YSgpOwogICAgICBkYXRhLnBhZ2VzW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlc1twYWdlXTsKICAgIH0KCiAgICBpZiAoZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgZGF0YS5wYWdlT2Jqc1twYWdlXS5yZW1vdmUoKTsKCiAgICBpZiAoZGF0YS5wYWdlV3JhcFtwYWdlXSkgewogICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlV3JhcFtwYWdlXTsKICAgIH0KCiAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlTXYuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICBkZWxldGUgZGF0YS5wYWdlUGxhY2VbcGFnZV07CiAgICBkZWxldGUgZGF0YS5wYWdlWm9vbVtwYWdlXTsKCiAgfSwKCiAgLy8gUmVtb3ZlcyBhIHBhZ2UKCiAgcmVtb3ZlUGFnZTogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgLy8gRGVsZXRlIGFsbCB0aGUgcGFnZXMKICAgIGlmIChwYWdlPT0nKicpIHsKICAgICAgCiAgICAgIHdoaWxlIChkYXRhLnRvdGFsUGFnZXMhPT0wKSB7CiAgICAgICAgdGhpcy50dXJuKCdyZW1vdmVQYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgICAgfQoKICAgIH0gZWxzZSB7CgogICAgICBpZiAocGFnZTwxIHx8IHBhZ2U+ZGF0YS50b3RhbFBhZ2VzKQogICAgICAgIHRocm93IHR1cm5FcnJvcignVGhlIHBhZ2UgJysgcGFnZSArICcgZG9lc25cJ3QgZXhpc3QnKTsKICAgICAgICAKICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0pIHsKCiAgICAgICAgLy8gU3RvcCBhbmltYXRpb25zCiAgICAgICAgdGhpcy50dXJuKCdzdG9wJyk7CgogICAgICAgIC8vIFJlbW92ZSBgcGFnZWAKICAgICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgICAgZGVsZXRlIGRhdGEucGFnZU9ianNbcGFnZV07CgogICAgICB9CgogICAgICAvLyBNb3ZlIHRoZSBwYWdlcwogICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgcGFnZSwgLTEpOwoKICAgICAgLy8gUmVzaXplIHRoZSBzaXplIG9mIHRoaXMgZmxpcGJvb2sKICAgICAgZGF0YS50b3RhbFBhZ2VzID0gZGF0YS50b3RhbFBhZ2VzLTE7CgogICAgICAvLyBDaGVjayB0aGUgY3VycmVudCB2aWV3CgogICAgICBpZiAoZGF0YS5wYWdlPmRhdGEudG90YWxQYWdlcykgewoKICAgICAgIGRhdGEucGFnZSA9IG51bGw7CiAgICAgICB0dXJuTWV0aG9kcy5fZml0UGFnZS5jYWxsKHRoaXMsIGRhdGEudG90YWxQYWdlcyk7CgogICAgICB9IGVsc2UgewoKICAgICAgICB0dXJuTWV0aG9kcy5fbWFrZVJhbmdlLmNhbGwodGhpcyk7CiAgICAgICAgdGhpcy50dXJuKCd1cGRhdGUnKTsKCiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdGhpczsKICAKICB9LAoKICAvLyBNb3ZlcyBwYWdlcwoKICBfbW92ZVBhZ2VzOiBmdW5jdGlvbihmcm9tLCBjaGFuZ2UpIHsKCiAgICB2YXIgcGFnZSwKICAgICAgdGhhdCA9IHRoaXMsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgc2luZ2xlID0gZGF0YS5kaXNwbGF5PT0nc2luZ2xlJywKICAgICAgbW92ZSA9IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICAgICAgdmFyIG5leHQgPSBwYWdlICsgY2hhbmdlLAogICAgICAgICAgb2RkID0gbmV4dCUyLAogICAgICAgICAgY2xhc3NOYW1lID0gKG9kZCkgPyAnIG9kZCAnIDogJyBldmVuICc7CgogICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW3BhZ2VdKQogICAgICAgICAgZGF0YS5wYWdlT2Jqc1tuZXh0XSA9IGRhdGEucGFnZU9ianNbcGFnZV0uCiAgICAgICAgICAgIHJlbW92ZUNsYXNzKCdwJyArIHBhZ2UgKyAnIG9kZCBldmVuJykuCiAgICAgICAgICAgIGFkZENsYXNzKCdwJyArIG5leHQgKyBjbGFzc05hbWUpOwoKICAgICAgICBpZiAoZGF0YS5wYWdlUGxhY2VbcGFnZV0gJiYgZGF0YS5wYWdlV3JhcFtwYWdlXSkgewoKICAgICAgICAgIGRhdGEucGFnZVBsYWNlW25leHRdID0gbmV4dDsKICAgICAgICAKICAgICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW25leHRdLmhhc0NsYXNzKCdmaXhlZCcpKQogICAgICAgICAgICBkYXRhLnBhZ2VXcmFwW25leHRdID0gZGF0YS5wYWdlV3JhcFtwYWdlXS4KICAgICAgICAgICAgICBhdHRyKCdwYWdlJywgbmV4dCk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGRhdGEucGFnZVdyYXBbbmV4dF0gPSBkYXRhLnBhZ2VXcmFwW3BhZ2VdLgogICAgICAgICAgICAgIGNzcyh0dXJuTWV0aG9kcy5fcGFnZVNpemUuY2FsbCh0aGF0LCBuZXh0LCB0cnVlKSkuCiAgICAgICAgICAgICAgYXR0cigncGFnZScsIG5leHQpOwogICAgICAKICAgICAgICAgICAgaWYgKGRhdGEucGFnZXNbcGFnZV0pCiAgICAgICAgICAgICAgZGF0YS5wYWdlc1tuZXh0XSA9IGRhdGEucGFnZXNbcGFnZV0uCiAgICAgICAgICAgICAgICBmbGlwKCdvcHRpb25zJywgewogICAgICAgICAgICAgICAgICBwYWdlOiBuZXh0LAogICAgICAgICAgICAgICAgICBuZXh0OiAoc2luZ2xlIHx8IG9kZCkgPyBuZXh0KzEgOiBuZXh0LTEKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKGNoYW5nZSkgewogICAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VzW3BhZ2VdOwogICAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VQbGFjZVtwYWdlXTsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlWm9vbVtwYWdlXTsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlT2Jqc1twYWdlXTsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlV3JhcFtwYWdlXTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICBpZiAoY2hhbmdlPjApCiAgICAgIGZvciAocGFnZT1kYXRhLnRvdGFsUGFnZXM7IHBhZ2U+PWZyb207IHBhZ2UtLSkKICAgICAgICBtb3ZlKHBhZ2UpOwogICAgZWxzZQogICAgICBmb3IgKHBhZ2U9ZnJvbTsgcGFnZTw9ZGF0YS50b3RhbFBhZ2VzOyBwYWdlKyspCiAgICAgICAgbW92ZShwYWdlKTsKCiAgfSwKCiAgLy8gU2V0cyBvciBHZXRzIHRoZSBkaXNwbGF5IG1vZGUKCiAgZGlzcGxheTogZnVuY3Rpb24oZGlzcGxheSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIGN1cnJlbnREaXNwbGF5ID0gZGF0YS5kaXNwbGF5OwoKICAgIGlmIChkaXNwbGF5PT09dW5kZWZpbmVkKSB7CiAgICAgIAogICAgICByZXR1cm4gY3VycmVudERpc3BsYXk7CgogICAgfSBlbHNlIHsKCiAgICAgIGlmICgkLmluQXJyYXkoZGlzcGxheSwgZGlzcGxheXMpPT0tMSkKICAgICAgICB0aHJvdyB0dXJuRXJyb3IoJyInK2Rpc3BsYXkgKyAnIiBpcyBub3QgYSB2YWx1ZSBmb3IgZGlzcGxheScpOwogICAgICAKICAgICAgc3dpdGNoKGRpc3BsYXkpIHsKICAgICAgICBjYXNlICdzaW5nbGUnOgoKICAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFsIHBhZ2UgdG8gdXNlIGFzIGZvbGRlZCBwYWdlCgogICAgICAgICAgaWYgKCFkYXRhLnBhZ2VPYmpzWzBdKSB7CiAgICAgICAgICAgIHRoaXMudHVybignc3RvcCcpLgogICAgICAgICAgICAgIGNzcyh7J292ZXJmbG93JzogJ2hpZGRlbid9KTsKCiAgICAgICAgICAgIGRhdGEucGFnZU9ianNbMF0gPSAkKCc8ZGl2IC8+JywKICAgICAgICAgICAgICAgIHsnY2xhc3MnOiAncGFnZSBwLXRlbXBvcmFsJ30pLgogICAgICAgICAgICAgIGNzcyh7d2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpfSkuCiAgICAgICAgICAgICAgYXBwZW5kVG8odGhpcyk7CiAgICAgICAgICB9CgogICAgICAgICAgdGhpcy5hZGRDbGFzcygnc2hhZG93Jyk7CgogICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2RvdWJsZSc6CgogICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZW1wb3JhbCBwYWdlCgogICAgICAgICAgaWYgKGRhdGEucGFnZU9ianNbMF0pIHsKICAgICAgICAgICAgdGhpcy50dXJuKCdzdG9wJykuY3NzKHsnb3ZlcmZsb3cnOiAnJ30pOwogICAgICAgICAgICBkYXRhLnBhZ2VPYmpzWzBdLnJlbW92ZSgpOwogICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlT2Jqc1swXTsKICAgICAgICAgIH0KCiAgICAgICAgICB0aGlzLnJlbW92ZUNsYXNzKCdzaGFkb3cnKTsKCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgCgogICAgICBkYXRhLmRpc3BsYXkgPSBkaXNwbGF5OwoKICAgICAgaWYgKGN1cnJlbnREaXNwbGF5KSB7CiAgICAgICAgdmFyIHNpemUgPSB0aGlzLnR1cm4oJ3NpemUnKTsKICAgICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgMSwgMCk7CiAgICAgICAgdGhpcy50dXJuKCdzaXplJywgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpLgogICAgICAgICAgdHVybigndXBkYXRlJyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzOwoKICAgIH0KICAKICB9LAogIAogIC8vIEdldHMgYW5kIHNldHMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxpcGJvb2sKCiAgZGlyZWN0aW9uOiBmdW5jdGlvbihkaXIpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkaXI9PT11bmRlZmluZWQpIHsKCiAgICAgIHJldHVybiBkYXRhLmRpcmVjdGlvbjsKCiAgICB9IGVsc2UgewoKICAgICAgZGlyID0gZGlyLnRvTG93ZXJDYXNlKCk7CgogICAgICBpZiAoJC5pbkFycmF5KGRpciwgZGlyZWN0aW9ucyk9PS0xKQogICAgICAgIHRocm93IHR1cm5FcnJvcignIicgKyBkaXIgKyAnIiBpcyBub3QgYSB2YWx1ZSBmb3IgZGlyZWN0aW9uJyk7CgogICAgICBpZiAoZGlyPT0ncnRsJykgewogICAgICAgICQodGhpcykuYXR0cignZGlyJywgJ2x0cicpLgogICAgICAgICAgY3NzKHtkaXJlY3Rpb246ICdsdHInfSk7CiAgICAgIH0KCiAgICAgIGRhdGEuZGlyZWN0aW9uID0gZGlyOwoKICAgICAgaWYgKGRhdGEuZG9uZSkKICAgICAgICB0aGlzLnR1cm4oJ3NpemUnLCAkKHRoaXMpLndpZHRoKCksICQodGhpcykuaGVpZ2h0KCkpOwoKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogIH0sCgogIC8vIERldGVjdHMgYW5pbWF0aW9uCgogIGFuaW1hdGluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMuZGF0YSgpLnBhZ2VNdi5sZW5ndGg+MDsKCiAgfSwKCiAgLy8gR2V0cyB0aGUgY3VycmVudCBhY3RpdmF0ZWQgY29ybmVyCgogIGNvcm5lcjogZnVuY3Rpb24oKSB7CiAgICAKICAgIHZhciBjb3JuZXIsCiAgICAgIHBhZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlcykgewogICAgICBpZiAoaGFzKHBhZ2UsIGRhdGEucGFnZXMpKQogICAgICAgIGlmICgoY29ybmVyID0gZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdjb3JuZXInKSkpIHsKICAgICAgICAgIHJldHVybiBjb3JuZXI7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBmYWxzZTsKICB9LAoKICAvLyBHZXRzIHRoZSBkYXRhIHN0b3JlZCBpbiB0aGUgZmxpcGJvb2sKCiAgZGF0YTogZnVuY3Rpb24oKSB7CiAgICAKICAgIHJldHVybiB0aGlzLmRhdGEoKTsKCiAgfSwKCiAgLy8gRGlzYWJsZXMgYW5kIGVuYWJsZXMgdGhlIGVmZmVjdAoKICBkaXNhYmxlOiBmdW5jdGlvbihkaXNhYmxlKSB7CgogICAgdmFyIHBhZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgIGRhdGEuZGlzYWJsZWQgPSBkaXNhYmxlPT09dW5kZWZpbmVkIHx8IGRpc2FibGU9PT10cnVlOwoKICAgIGZvciAocGFnZSBpbiBkYXRhLnBhZ2VzKSB7CiAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykpCiAgICAgICAgZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdkaXNhYmxlJywKICAgICAgICAgIChkYXRhLmRpc2FibGVkKSA/IHRydWUgOiAkLmluQXJyYXkocGFyc2VJbnQocGFnZSwgMTApLCB2aWV3KT09LTEpOwogICAgfQoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEaXNhYmxlcyBhbmQgZW5hYmxlcyB0aGUgZWZmZWN0CgogIGRpc2FibGVkOiBmdW5jdGlvbihkaXNhYmxlKSB7CgogICAgaWYgKGRpc2FibGU9PT11bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIHRoaXMuZGF0YSgpLmRpc2FibGVkPT09dHJ1ZTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB0aGlzLnR1cm4oJ2Rpc2FibGUnLCBkaXNhYmxlKTsKICAgIH0KCiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgc2l6ZQoKICBzaXplOiBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7CgogICAgaWYgKHdpZHRoPT09dW5kZWZpbmVkIHx8IGhlaWdodD09PXVuZGVmaW5lZCkgewogICAgICAKICAgICAgcmV0dXJuIHt3aWR0aDogdGhpcy53aWR0aCgpLCBoZWlnaHQ6IHRoaXMuaGVpZ2h0KCl9OwoKICAgIH0gZWxzZSB7CgogICAgICB0aGlzLnR1cm4oJ3N0b3AnKTsKCiAgICAgIHZhciBwYWdlLCBwcm9wLAogICAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgICBwYWdlV2lkdGggPSAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJykgPyB3aWR0aC8yIDogd2lkdGg7CgogICAgICB0aGlzLmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwoKICAgICAgaWYgKGRhdGEucGFnZU9ianNbMF0pCiAgICAgICAgZGF0YS5wYWdlT2Jqc1swXS5jc3Moe3dpZHRoOiBwYWdlV2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICAgIAogICAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkgewogICAgICAgIGlmICghaGFzKHBhZ2UsIGRhdGEucGFnZVdyYXApKSBjb250aW51ZTsKCiAgICAgICAgcHJvcCA9IHR1cm5NZXRob2RzLl9wYWdlU2l6ZS5jYWxsKHRoaXMsIHBhZ2UsIHRydWUpOwoKICAgICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdLmNzcyh7d2lkdGg6IHByb3Aud2lkdGgsIGhlaWdodDogcHJvcC5oZWlnaHR9KTsKICAgICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcyhwcm9wKTsKICAgICAgICAKICAgICAgICBpZiAoZGF0YS5wYWdlc1twYWdlXSkKICAgICAgICAgIGRhdGEucGFnZXNbcGFnZV0uY3NzKHt3aWR0aDogcHJvcC53aWR0aCwgaGVpZ2h0OiBwcm9wLmhlaWdodH0pOwogICAgICB9CgogICAgICB0aGlzLnR1cm4oJ3Jlc2l6ZScpOwoKICAgICAgcmV0dXJuIHRoaXM7CgogICAgfQogIH0sCgogIC8vIFJlc2l6ZXMgZWFjaCBwYWdlCgogIHJlc2l6ZTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoZGF0YS5wYWdlc1swXSkgewogICAgICBkYXRhLnBhZ2VXcmFwWzBdLmNzcyh7bGVmdDogLXRoaXMud2lkdGgoKX0pOwogICAgICBkYXRhLnBhZ2VzWzBdLmZsaXAoJ3Jlc2l6ZScsIHRydWUpOwogICAgfQoKICAgIGZvciAocGFnZSA9IDE7IHBhZ2UgPD0gZGF0YS50b3RhbFBhZ2VzOyBwYWdlKyspCiAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKQogICAgICAgIGRhdGEucGFnZXNbcGFnZV0uZmxpcCgncmVzaXplJywgdHJ1ZSk7CgogICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKHRoaXMpOwoKICAgIGlmIChkYXRhLm9wdHMuYXV0b0NlbnRlcikKICAgICAgdGhpcy50dXJuKCdjZW50ZXInKTsKCiAgfSwKCiAgLy8gUmVtb3ZlcyBhbiBhbmltYXRpb24gZnJvbSB0aGUgY2FjaGUKCiAgX3JlbW92ZU12OiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGksIGRhdGEgPSB0aGlzLmRhdGEoKTsKICAgICAgCiAgICBmb3IgKGk9MDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykKICAgICAgaWYgKGRhdGEucGFnZU12W2ldPT1wYWdlKSB7CiAgICAgICAgZGF0YS5wYWdlTXYuc3BsaWNlKGksIDEpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CgogICAgcmV0dXJuIGZhbHNlOwoKICB9LAoKICAvLyBBZGRzIGFuIGFuaW1hdGlvbiB0byB0aGUgY2FjaGUKICAKICBfYWRkTXY6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIHR1cm5NZXRob2RzLl9yZW1vdmVNdi5jYWxsKHRoaXMsIHBhZ2UpOwogICAgZGF0YS5wYWdlTXYucHVzaChwYWdlKTsKCiAgfSwKCiAgLy8gR2V0cyBpbmRleGVzIGZvciBhIHZpZXcKCiAgX3ZpZXc6IGZ1bmN0aW9uKHBhZ2UpIHsKICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICAKICAgIHBhZ2UgPSBwYWdlIHx8IGRhdGEucGFnZTsKCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJykKICAgICAgcmV0dXJuIChwYWdlJTIpID8gW3BhZ2UtMSwgcGFnZV0gOiBbcGFnZSwgcGFnZSsxXTsKICAgIGVsc2UKICAgICAgcmV0dXJuIFtwYWdlXTsKCiAgfSwKCiAgLy8gR2V0cyBhIHZpZXcKCiAgdmlldzogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0dXJuTWV0aG9kcy5fdmlldy5jYWxsKHRoaXMsIHBhZ2UpOwoKICAgIGlmIChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKQogICAgICByZXR1cm4gWyh2aWV3WzBdPjApID8gdmlld1swXSA6IDAsCiAgICAgICAgKHZpZXdbMV08PWRhdGEudG90YWxQYWdlcykgPyB2aWV3WzFdIDogMF07CiAgICBlbHNlCiAgICAgIHJldHVybiBbKHZpZXdbMF0+MCAmJiB2aWV3WzBdPD1kYXRhLnRvdGFsUGFnZXMpID8gdmlld1swXSA6IDBdOwoKICB9LAoKICAvLyBTdG9wcyBhbmltYXRpb25zCgogIHN0b3A6IGZ1bmN0aW9uKGlnbm9yZSwgYW5pbWF0ZSkgewoKICAgIGlmICh0aGlzLnR1cm4oJ2FuaW1hdGluZycpKSB7CiAgCiAgICAgIHZhciBpLCBvcHRzLCBwYWdlLAogICAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICAgIGlmIChkYXRhLnRwYWdlKSB7CiAgICAgICAgZGF0YS5wYWdlID0gZGF0YS50cGFnZTsKICAgICAgICBkZWxldGUgZGF0YVsndHBhZ2UnXTsKICAgICAgfQoKICAgICAgZm9yIChpID0gMDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykgewoKICAgICAgICBpZiAoIWRhdGEucGFnZU12W2ldIHx8IGRhdGEucGFnZU12W2ldPT09aWdub3JlKQogICAgICAgICAgY29udGludWU7CgogICAgICAgIHBhZ2UgPSBkYXRhLnBhZ2VzW2RhdGEucGFnZU12W2ldXTsKICAgICAgICBvcHRzID0gcGFnZS5kYXRhKCkuZi5vcHRzOwoKICAgICAgICBwYWdlLmZsaXAoJ2hpZGVGb2xkZWRQYWdlJywgYW5pbWF0ZSk7CgogICAgICAgIGlmICghYW5pbWF0ZSkKICAgICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbChwYWdlLCBmYWxzZSk7CgogICAgICAgIGlmIChvcHRzLmZvcmNlKSB7CiAgICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5wYWdlJTI9PT0wKSA/IG9wdHMucGFnZS0xIDogb3B0cy5wYWdlKzE7CiAgICAgICAgICBkZWxldGUgb3B0c1snZm9yY2UnXTsKICAgICAgICB9CgogICAgICB9CiAgICB9CiAgICAKICAgIHRoaXMudHVybigndXBkYXRlJyk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgbnVtYmVyIG9mIHBhZ2VzCgogIHBhZ2VzOiBmdW5jdGlvbihwYWdlcykgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHBhZ2VzKSB7CgogICAgICBpZiAocGFnZXM8ZGF0YS50b3RhbFBhZ2VzKSB7CgogICAgICAgIGZvciAodmFyIHBhZ2UgPSBkYXRhLnRvdGFsUGFnZXM7IHBhZ2U+cGFnZXM7IHBhZ2UtLSkKICAgICAgICAgIHRoaXMudHVybigncmVtb3ZlUGFnZScsIHBhZ2UpOwoKICAgICAgfQoKICAgICAgICBkYXRhLnRvdGFsUGFnZXMgPSBwYWdlczsKICAgICAgICB0dXJuTWV0aG9kcy5fZml0UGFnZS5jYWxsKHRoaXMsIGRhdGEucGFnZSk7CgogICAgICByZXR1cm4gdGhpczsKCiAgICB9IGVsc2UKICAgICAgcmV0dXJuIGRhdGEudG90YWxQYWdlczsKCiAgfSwKCiAgLy8gQ2hlY2tzIG1pc3NpbmcgcGFnZXMKCiAgX21pc3NpbmcgOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKGRhdGEudG90YWxQYWdlczwxKQogICAgICByZXR1cm47CgogICAgdmFyIHAsCiAgICAgICAgcmFuZ2UgPSB0aGlzLnR1cm4oJ3JhbmdlJywgcGFnZSksCiAgICAgICAgbWlzc2luZyA9IFtdOwoKICAgIGZvciAocCA9IHJhbmdlWzBdOyBwPD1yYW5nZVsxXTsgcCsrKSB7CiAgICAgIGlmICghZGF0YS5wYWdlT2Jqc1twXSkKICAgICAgICBtaXNzaW5nLnB1c2gocCk7CiAgICB9CgogICAgaWYgKG1pc3NpbmcubGVuZ3RoPjApCiAgICAgIHRoaXMudHJpZ2dlcignbWlzc2luZycsIFttaXNzaW5nXSk7CgogIH0sCgogIC8vIFNldHMgYSBwYWdlIHdpdGhvdXQgZWZmZWN0CgogIF9maXRQYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIHBhZ2UpOwoKICAgIHR1cm5NZXRob2RzLl9taXNzaW5nLmNhbGwodGhpcywgcGFnZSk7CiAgICAKICAgIGlmICghZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgcmV0dXJuOwoKICAgIGRhdGEucGFnZSA9IHBhZ2U7CiAgCiAgICB0aGlzLnR1cm4oJ3N0b3AnKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaTxuZXdWaWV3Lmxlbmd0aDsgaSsrKSB7CgogICAgICBpZiAobmV3Vmlld1tpXSAmJiBkYXRhLnBhZ2Vab29tW25ld1ZpZXdbaV1dIT1kYXRhLnpvb20pIHsKICAKICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb21lZCcsWwogICAgICAgICAgbmV3Vmlld1tpXSwKICAgICAgICAgIG5ld1ZpZXcsCiAgICAgICAgICBkYXRhLnBhZ2Vab29tW25ld1ZpZXdbaV1dLAogICAgICAgICAgZGF0YS56b29tXSk7CgogICAgICAgIGRhdGEucGFnZVpvb21bbmV3Vmlld1tpXV0gPSBkYXRhLnpvb207CgogICAgICB9CiAgICB9CgogICAgdHVybk1ldGhvZHMuX3JlbW92ZUZyb21ET00uY2FsbCh0aGlzKTsKICAgIHR1cm5NZXRob2RzLl9tYWtlUmFuZ2UuY2FsbCh0aGlzKTsKICAgIHR1cm5NZXRob2RzLl91cGRhdGVTaGFkb3cuY2FsbCh0aGlzKTsKICAgIHRoaXMudHJpZ2dlcigndHVybmVkJywgW3BhZ2UsIG5ld1ZpZXddKTsKICAgIHRoaXMudHVybigndXBkYXRlJyk7CgogICAgaWYgKGRhdGEub3B0cy5hdXRvQ2VudGVyKQogICAgICB0aGlzLnR1cm4oJ2NlbnRlcicpOwoKICB9LAogIAogIC8vIFR1cm5zIHRoZSBwYWdlCgogIF90dXJuUGFnZTogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBjdXJyZW50LAogICAgICBuZXh0LAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHBsYWNlID0gZGF0YS5wYWdlUGxhY2VbcGFnZV0sCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKSwKICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIHBhZ2UpOwoKCiAgICBpZiAoZGF0YS5wYWdlIT1wYWdlKSB7CgogICAgICB2YXIgY3VycmVudFBhZ2UgPSBkYXRhLnBhZ2U7CgogICAgICBpZiAodHJpZ2dlcigndHVybmluZycsIHRoaXMsIFtwYWdlLCBuZXdWaWV3XSk9PSdwcmV2ZW50ZWQnKSB7CgogICAgICAgIGlmIChjdXJyZW50UGFnZT09ZGF0YS5wYWdlICYmICQuaW5BcnJheShwbGFjZSwgZGF0YS5wYWdlTXYpIT0tMSkKICAgICAgICAgIGRhdGEucGFnZXNbcGxhY2VdLmZsaXAoJ2hpZGVGb2xkZWRQYWdlJywgdHJ1ZSk7CiAgICAgICAgCiAgICAgICAgcmV0dXJuOwoKICAgICAgfQoKICAgICAgaWYgKCQuaW5BcnJheSgxLCBuZXdWaWV3KSE9LTEpCiAgICAgICAgdGhpcy50cmlnZ2VyKCdmaXJzdCcpOwogICAgICBpZiAoJC5pbkFycmF5KGRhdGEudG90YWxQYWdlcywgbmV3VmlldykhPS0xKQogICAgICAgIHRoaXMudHJpZ2dlcignbGFzdCcpOwoKICAgIH0KCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nc2luZ2xlJykgewogICAgICBjdXJyZW50ID0gdmlld1swXTsKICAgICAgbmV4dCA9IG5ld1ZpZXdbMF07CiAgICB9IGVsc2UgaWYgKHZpZXdbMV0gJiYgcGFnZT52aWV3WzFdKSB7CiAgICAgIGN1cnJlbnQgPSB2aWV3WzFdOwogICAgICBuZXh0ID0gbmV3Vmlld1swXTsKICAgIH0gZWxzZSBpZiAodmlld1swXSAmJiBwYWdlPHZpZXdbMF0pIHsKICAgICAgY3VycmVudCA9IHZpZXdbMF07CiAgICAgIG5leHQgPSBuZXdWaWV3WzFdOwogICAgfQoKICAgIHZhciBvcHRzQ29ybmVycyA9IGRhdGEub3B0cy50dXJuQ29ybmVycy5zcGxpdCgnLCcpLAogICAgICBmbGlwRGF0YSA9IGRhdGEucGFnZXNbY3VycmVudF0uZGF0YSgpLmYsCiAgICAgIG9wdHMgPSBmbGlwRGF0YS5vcHRzLAogICAgICBhY3R1YWxQb2ludCA9IGZsaXBEYXRhLnBvaW50OwoKICAgIHR1cm5NZXRob2RzLl9taXNzaW5nLmNhbGwodGhpcywgcGFnZSk7CiAgICAKICAgIGlmICghZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgcmV0dXJuOwoKICAgIHRoaXMudHVybignc3RvcCcpOwoKICAgIGRhdGEucGFnZSA9IHBhZ2U7CgogICAgdHVybk1ldGhvZHMuX21ha2VSYW5nZS5jYWxsKHRoaXMpOwoKICAgIGRhdGEudHBhZ2UgPSBuZXh0OwoKICAgIGlmIChvcHRzLm5leHQhPW5leHQpIHsKICAgICAgb3B0cy5uZXh0ID0gbmV4dDsKICAgICAgb3B0cy5mb3JjZSA9IHRydWU7CiAgICB9CgogICAgdGhpcy50dXJuKCd1cGRhdGUnKTsKCiAgICBmbGlwRGF0YS5wb2ludCA9IGFjdHVhbFBvaW50OwogICAgCiAgICBpZiAoZmxpcERhdGEuZWZmZWN0PT0naGFyZCcpCiAgICAgIGlmIChkYXRhLmRpcmVjdGlvbj09J2x0cicpCiAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScsCiAgICAgICAgICAocGFnZT5jdXJyZW50KSA/ICdyJyA6ICdsJyk7CiAgICAgIGVsc2UKICAgICAgICBkYXRhLnBhZ2VzW2N1cnJlbnRdLmZsaXAoJ3R1cm5QYWdlJywKICAgICAgICAgIChwYWdlPmN1cnJlbnQpID8gJ2wnIDogJ3InKTsKICAgIGVsc2UgewogICAgICBpZiAoZGF0YS5kaXJlY3Rpb249PSdsdHInKQogICAgICAgIGRhdGEucGFnZXNbY3VycmVudF0uZmxpcCgndHVyblBhZ2UnLAogICAgICAgICAgb3B0c0Nvcm5lcnNbKHBhZ2U+Y3VycmVudCkgPyAxIDogMF0pOwogICAgICBlbHNlCiAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScsCiAgICAgICAgICBvcHRzQ29ybmVyc1socGFnZT5jdXJyZW50KSA/IDAgOiAxXSk7CiAgICB9CgogIH0sCgogIC8vIEdldHMgYW5kIHNldHMgYSBwYWdlCgogIHBhZ2U6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChwYWdlPT09dW5kZWZpbmVkKSB7CiAgICAgIAogICAgICByZXR1cm4gZGF0YS5wYWdlOwoKICAgIH0gZWxzZSB7CgogICAgICBpZiAoIWRhdGEuZGlzYWJsZWQgJiYgIWRhdGEuZGVzdHJveWluZykgewoKICAgICAgICBwYWdlID0gcGFyc2VJbnQocGFnZSwgMTApOwoKICAgICAgICBpZiAocGFnZT4wICYmIHBhZ2U8PWRhdGEudG90YWxQYWdlcykgewoKICAgICAgICAgIGlmIChwYWdlIT1kYXRhLnBhZ2UpIHsKICAgICAgICAgICAgaWYgKCFkYXRhLmRvbmUgfHwgJC5pbkFycmF5KHBhZ2UsIHRoaXMudHVybigndmlldycpKSE9LTEpCiAgICAgICAgICAgICAgdHVybk1ldGhvZHMuX2ZpdFBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHR1cm5NZXRob2RzLl90dXJuUGFnZS5jYWxsKHRoaXMsIHBhZ2UpOwogICAgICAgICAgfQogICAgICAKICAgICAgICAgIHJldHVybiB0aGlzOwoKICAgICAgICB9IGVsc2UgewogICAgICAgIAogICAgICAgICAgdGhyb3cgdHVybkVycm9yKCdUaGUgcGFnZSAnICsgcGFnZSArICcgZG9lcyBub3QgZXhpc3QnKTsKCiAgICAgICAgfQoKICAgICAgfQoKICAgIH0KCiAgfSwKCiAgLy8gVHVybnMgdG8gdGhlIG5leHQgdmlldwoKICBuZXh0OiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gdGhpcy50dXJuKCdwYWdlJywgTWF0aC5taW4odGhpcy5kYXRhKCkudG90YWxQYWdlcywKICAgICAgdHVybk1ldGhvZHMuX3ZpZXcuY2FsbCh0aGlzLCB0aGlzLmRhdGEoKS5wYWdlKS5wb3AoKSArIDEpKTsKICAKICB9LAoKICAvLyBUdXJucyB0byB0aGUgcHJldmlvdXMgdmlldwoKICBwcmV2aW91czogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMudHVybigncGFnZScsIE1hdGgubWF4KDEsCiAgICAgIHR1cm5NZXRob2RzLl92aWV3LmNhbGwodGhpcywgdGhpcy5kYXRhKCkucGFnZSkuc2hpZnQoKSAtIDEpKTsKCiAgfSwKCiAgLy8gU2hvd3MgYSBwZWVsaW5nIGNvcm5lcgoKICBwZWVsOiBmdW5jdGlvbihjb3JuZXIsIGFuaW1hdGUpIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgIGFuaW1hdGUgPSAoYW5pbWF0ZT09PXVuZGVmaW5lZCkgPyB0cnVlIDogYW5pbWF0ZT09PXRydWU7CgogICAgaWYgKGNvcm5lcj09PWZhbHNlKSB7CiAgICAgIAogICAgICB0aGlzLnR1cm4oJ3N0b3AnLCBudWxsLCBhbmltYXRlKTsKCiAgICB9IGVsc2UgewogICAgCiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICAgIGRhdGEucGFnZXNbZGF0YS5wYWdlXS5mbGlwKCdwZWVsJywgY29ybmVyLCBhbmltYXRlKTsKCiAgICAgIH0gZWxzZSB7CgogICAgICAgIHZhciBwYWdlOwoKICAgICAgICBpZiAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSB7CiAgICAgICAgICAKICAgICAgICAgIHBhZ2UgPSAoY29ybmVyLmluZGV4T2YoJ2wnKSE9LTEpID8gdmlld1swXSA6IHZpZXdbMV07CgogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAKICAgICAgICAgIHBhZ2UgPSAoY29ybmVyLmluZGV4T2YoJ2wnKSE9LTEpID8gdmlld1sxXSA6IHZpZXdbMF07CgogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoZGF0YS5wYWdlc1twYWdlXSkKICAgICAgICAgIGRhdGEucGFnZXNbcGFnZV0uZmxpcCgncGVlbCcsIGNvcm5lciwgYW5pbWF0ZSk7CgogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRoaXM7CgogIH0sCgogIC8vIEFkZHMgYSBtb3Rpb24gdG8gdGhlIGludGVybmFsIGxpc3QKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2FkZE1vdGlvblBhZ2U6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBvcHRzID0gJCh0aGlzKS5kYXRhKCkuZi5vcHRzLAogICAgICB0dXJuID0gb3B0cy50dXJuLAogICAgICBkZCA9IHR1cm4uZGF0YSgpOwoKICAgIHR1cm5NZXRob2RzLl9hZGRNdi5jYWxsKHR1cm4sIG9wdHMucGFnZSk7CgogIH0sCgogIC8vIFRoaXMgZXZlbnQgaXMgY2FsbGVkIGluIGNvbnRleHQgb2YgZmxpcAoKICBfZXZlbnRTdGFydDogZnVuY3Rpb24oZSwgb3B0cywgY29ybmVyKSB7CgogICAgdmFyIGRhdGEgPSBvcHRzLnR1cm4uZGF0YSgpLAogICAgICBhY3R1YWxab29tID0gZGF0YS5wYWdlWm9vbVtvcHRzLnBhZ2VdOwoKICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CiAgICAgIHR1cm5NZXRob2RzLl91cGRhdGVTaGFkb3cuY2FsbChvcHRzLnR1cm4pOwogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKGFjdHVhbFpvb20gJiYgYWN0dWFsWm9vbSE9ZGF0YS56b29tKSB7CiAgICAgIAogICAgICBvcHRzLnR1cm4udHJpZ2dlcignem9vbWVkJyxbCiAgICAgICAgb3B0cy5wYWdlLAogICAgICAgIG9wdHMudHVybi50dXJuKCd2aWV3Jywgb3B0cy5wYWdlKSwKICAgICAgICBhY3R1YWxab29tLAogICAgICAgIGRhdGEuem9vbV0pOwoKICAgICAgZGF0YS5wYWdlWm9vbVtvcHRzLnBhZ2VdID0gZGF0YS56b29tOwoKICAgIH0KCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nc2luZ2xlJyAmJiBjb3JuZXIpIHsKCiAgICAgIGlmICgoY29ybmVyLmNoYXJBdCgxKT09J2wnICYmIGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgfHwKICAgICAgICAoY29ybmVyLmNoYXJBdCgxKT09J3InICYmIGRhdGEuZGlyZWN0aW9uPT0ncnRsJykpCiAgICAgIHsKICAgICAgICAKICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5uZXh0PG9wdHMucGFnZSkgPyBvcHRzLm5leHQgOiBvcHRzLnBhZ2UtMTsKICAgICAgICBvcHRzLmZvcmNlID0gdHJ1ZTsKCiAgICAgIH0gZWxzZSB7CiAgICAgICAgCiAgICAgICAgb3B0cy5uZXh0ID0gKG9wdHMubmV4dD5vcHRzLnBhZ2UpID8gb3B0cy5uZXh0IDogb3B0cy5wYWdlKzE7CgogICAgICB9CgogICAgfQoKICAgIHR1cm5NZXRob2RzLl9hZGRNb3Rpb25QYWdlLmNhbGwoZS50YXJnZXQpOwogICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKG9wdHMudHVybik7CiAgfSwKCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCgogIF9ldmVudEVuZDogZnVuY3Rpb24oZSwgb3B0cywgdHVybmVkKSB7CiAgCiAgICB2YXIgdGhhdCA9ICQoZS50YXJnZXQpLAogICAgICBkYXRhID0gdGhhdC5kYXRhKCkuZiwKICAgICAgdHVybiA9IG9wdHMudHVybiwKICAgICAgZGQgPSB0dXJuLmRhdGEoKTsKCiAgICBpZiAodHVybmVkKSB7CgogICAgICB2YXIgdHBhZ2UgPSBkZC50cGFnZSB8fCBkZC5wYWdlOwogICAgCiAgICAgIGlmICh0cGFnZT09b3B0cy5uZXh0IHx8IHRwYWdlPT1vcHRzLnBhZ2UpIHsKICAgICAgICBkZWxldGUgZGQudHBhZ2U7CgogICAgICAgIHR1cm5NZXRob2RzLl9maXRQYWdlLmNhbGwodHVybiwgdHBhZ2UgfHwgb3B0cy5uZXh0LCB0cnVlKTsKICAgICAgfQoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlTXYuY2FsbCh0dXJuLCBvcHRzLnBhZ2UpOwogICAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwodHVybik7CiAgICAgIHR1cm4udHVybigndXBkYXRlJyk7CgogICAgfQogICAgCiAgfSwKICAKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2V2ZW50UHJlc3NlZDogZnVuY3Rpb24oZSkgewoKICAgIHZhciBwYWdlLAogICAgICBkYXRhID0gJChlLnRhcmdldCkuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKSwKICAgICAgcGFnZXMgPSB0dXJuRGF0YS5wYWdlczsKICAgIAogICAgdHVybkRhdGEubW91c2VBY3Rpb24gPSB0cnVlOwoKICAgIHR1cm4udHVybigndXBkYXRlJyk7CgogICAgcmV0dXJuIGRhdGEudGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwoKICB9LAoKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2V2ZW50UmVsZWFzZWQ6IGZ1bmN0aW9uKGUsIHBvaW50KSB7CgogICAgdmFyIG91dEFyZWEsCiAgICAgIHBhZ2UgPSAkKGUudGFyZ2V0KSwKICAgICAgZGF0YSA9IHBhZ2UuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKTsKICAgIAogICAgaWYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CiAgICAgIG91dEFyZWEgPSAocG9pbnQuY29ybmVyPT0nYnInIHx8IHBvaW50LmNvcm5lcj09J3RyJykgPwogICAgICAgIHBvaW50Lng8cGFnZS53aWR0aCgpLzI6CiAgICAgICAgcG9pbnQueD5wYWdlLndpZHRoKCkvMjsKICAgIH0gZWxzZSB7CiAgICAgIG91dEFyZWEgPSBwb2ludC54PDAgfHwgcG9pbnQueD5wYWdlLndpZHRoKCk7CiAgICB9CgogICAgaWYgKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCktZGF0YS50aW1lPDIwMCB8fCBvdXRBcmVhKSB7CgogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHR1cm5NZXRob2RzLl90dXJuUGFnZS5jYWxsKHR1cm4sIGRhdGEub3B0cy5uZXh0KTsKCiAgICB9CgogICAgdHVybkRhdGEubW91c2VBY3Rpb24gPSBmYWxzZTsKCiAgfSwKCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCiAgCiAgX2ZsaXA6IGZ1bmN0aW9uKGUpIHsKCiAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwoKICAgIHZhciBvcHRzID0gJChlLnRhcmdldCkuZGF0YSgpLmYub3B0czsKCiAgICBvcHRzLnR1cm4udHJpZ2dlcigndHVybicsIFtvcHRzLm5leHRdKTsKCiAgICBpZiAob3B0cy50dXJuLmRhdGEoKS5vcHRzLmF1dG9DZW50ZXIpIHsKICAgICAgb3B0cy50dXJuLnR1cm4oJ2NlbnRlcicsIG9wdHMubmV4dCk7CiAgICB9CgogIH0sCgogLy8KICBfdG91Y2hTdGFydDogZnVuY3Rpb24oKSB7CiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwogICAgZm9yICh2YXIgcGFnZSBpbiBkYXRhLnBhZ2VzKSB7CiAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykgJiYKICAgICAgICBmbGlwTWV0aG9kcy5fZXZlbnRTdGFydC5hcHBseShkYXRhLnBhZ2VzW3BhZ2VdLCBhcmd1bWVudHMpPT09ZmFsc2UpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQogIH0sCiAgCiAgLy8KICBfdG91Y2hNb3ZlOiBmdW5jdGlvbigpIHsKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpIHsKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VzKSkgewogICAgICAgIGZsaXBNZXRob2RzLl9ldmVudE1vdmUuYXBwbHkoZGF0YS5wYWdlc1twYWdlXSwgYXJndW1lbnRzKTsKICAgICAgfQogICAgfQogIH0sCgogIC8vCiAgX3RvdWNoRW5kOiBmdW5jdGlvbigpIHsKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpIHsKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VzKSkgewogICAgICAgIGZsaXBNZXRob2RzLl9ldmVudEVuZC5hcHBseShkYXRhLnBhZ2VzW3BhZ2VdLCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9CiAgfSwKCiAgLy8gQ2FsY3VsYXRlIHRoZSB6LWluZGV4IHZhbHVlIGZvciBwYWdlcyBkdXJpbmcgdGhlIGFuaW1hdGlvbgoKICBjYWxjdWxhdGVaOiBmdW5jdGlvbihtdikgewoKICAgIHZhciBpLCBwYWdlLCBuZXh0UGFnZSwgcGxhY2VQYWdlLCBkcGFnZSwKICAgICAgdGhhdCA9IHRoaXMsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpLAogICAgICBjdXJyZW50UGFnZSA9IHZpZXdbMF0gfHwgdmlld1sxXSwKICAgICAgdG90YWwgPSBtdi5sZW5ndGgtMSwKICAgICAgciA9IHtwYWdlWjoge30sIHBhcnRaOiB7fSwgcGFnZVY6IHt9fSwKCiAgICAgIGFkZFZpZXcgPSBmdW5jdGlvbihwYWdlKSB7CiAgICAgICAgdmFyIHZpZXcgPSB0aGF0LnR1cm4oJ3ZpZXcnLCBwYWdlKTsKICAgICAgICBpZiAodmlld1swXSkgci5wYWdlVlt2aWV3WzBdXSA9IHRydWU7CiAgICAgICAgaWYgKHZpZXdbMV0pIHIucGFnZVZbdmlld1sxXV0gPSB0cnVlOwogICAgICB9OwogICAgCiAgICBmb3IgKGkgPSAwOyBpPD10b3RhbDsgaSsrKSB7CiAgICAgIHBhZ2UgPSBtdltpXTsKICAgICAgbmV4dFBhZ2UgPSBkYXRhLnBhZ2VzW3BhZ2VdLmRhdGEoKS5mLm9wdHMubmV4dDsKICAgICAgcGxhY2VQYWdlID0gZGF0YS5wYWdlUGxhY2VbcGFnZV07CiAgICAgIGFkZFZpZXcocGFnZSk7CiAgICAgIGFkZFZpZXcobmV4dFBhZ2UpOwogICAgICBkcGFnZSA9IChkYXRhLnBhZ2VQbGFjZVtuZXh0UGFnZV09PW5leHRQYWdlKSA/IG5leHRQYWdlIDogcGFnZTsKICAgICAgci5wYWdlWltkcGFnZV0gPSBkYXRhLnRvdGFsUGFnZXMgLSBNYXRoLmFicyhjdXJyZW50UGFnZS1kcGFnZSk7CiAgICAgIHIucGFydFpbcGxhY2VQYWdlXSA9IGRhdGEudG90YWxQYWdlcyoyIC0gIHRvdGFsICsgaTsKICAgIH0KCiAgICByZXR1cm4gcjsKICB9LAoKICAvLyBVcGRhdGVzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGV2ZXJ5IHBhZ2UKCiAgdXBkYXRlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmICh0aGlzLnR1cm4oJ2FuaW1hdGluZycpICYmIGRhdGEucGFnZU12WzBdIT09MCkgewoKICAgICAgLy8gVXBkYXRlIG1vdGlvbgoKICAgICAgdmFyIHAsIGFwYWdlLCBmaXhlZCwKICAgICAgICBwb3MgPSB0aGlzLnR1cm4oJ2NhbGN1bGF0ZVonLCBkYXRhLnBhZ2VNdiksCiAgICAgICAgY29ybmVyID0gdGhpcy50dXJuKCdjb3JuZXInKSwKICAgICAgICBhY3R1YWxWaWV3ID0gdGhpcy50dXJuKCd2aWV3JyksCiAgICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEudHBhZ2UpOwogIAogICAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkgewoKICAgICAgICBpZiAoIWhhcyhwYWdlLCBkYXRhLnBhZ2VXcmFwKSkKICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICBmaXhlZCA9IGRhdGEucGFnZU9ianNbcGFnZV0uaGFzQ2xhc3MoJ2ZpeGVkJyk7CgogICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKHsKICAgICAgICAgIGRpc3BsYXk6IChwb3MucGFnZVZbcGFnZV0gfHwgZml4ZWQpID8gJycgOiAnbm9uZScsCiAgICAgICAgICB6SW5kZXg6CiAgICAgICAgICAgIChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdoYXJkJykgPwogICAgICAgICAgICAgIHBvcy5wYXJ0WltwYWdlXQogICAgICAgICAgICAgIDoKICAgICAgICAgICAgICBwb3MucGFnZVpbcGFnZV0KICAgICAgICAgICAgKSB8fCAoZml4ZWQgPyAtMSA6IDApCiAgICAgICAgfSk7CgogICAgICAgIGlmICgocCA9IGRhdGEucGFnZXNbcGFnZV0pKSB7CgogICAgICAgICAgcC5mbGlwKCd6JywgcG9zLnBhcnRaW3BhZ2VdIHx8IG51bGwpOwoKICAgICAgICAgIGlmIChwb3MucGFnZVZbcGFnZV0pCiAgICAgICAgICAgIHAuZmxpcCgncmVzaXplJyk7CiAgICAgICAgICAKICAgICAgICAgIGlmIChkYXRhLnRwYWdlKSB7IC8vIElzIGl0IHR1cm5pbmcgdGhlIHBhZ2UgdG8gYHRwYWdlYD8KCiAgICAgICAgICAgIHAuZmxpcCgnaG92ZXInLCBmYWxzZSkuCiAgICAgICAgICAgICAgZmxpcCgnZGlzYWJsZScsCiAgICAgICAgICAgICAgICAkLmluQXJyYXkocGFyc2VJbnQocGFnZSwgMTApLCBkYXRhLnBhZ2VNdik9PS0xICYmCiAgICAgICAgICAgICAgICBwYWdlIT1uZXdWaWV3WzBdICYmCiAgICAgICAgICAgICAgICBwYWdlIT1uZXdWaWV3WzFdKTsKCiAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgcC5mbGlwKCdob3ZlcicsIGNvcm5lcj09PWZhbHNlKS4KICAgICAgICAgICAgICBmbGlwKCdkaXNhYmxlJywgcGFnZSE9YWN0dWFsVmlld1swXSAmJiBwYWdlIT1hY3R1YWxWaWV3WzFdKTsKCiAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgIH0KCiAgICB9IGVsc2UgewoKICAgICAgLy8gVXBkYXRlIHN0YXRpYyBwYWdlcwoKICAgICAgZm9yIChwYWdlIGluIGRhdGEucGFnZVdyYXApIHsKCiAgICAgICAgaWYgKCFoYXMocGFnZSwgZGF0YS5wYWdlV3JhcCkpCiAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgdmFyIHBhZ2VMb2NhdGlvbiA9IHR1cm5NZXRob2RzLl9zZXRQYWdlTG9jLmNhbGwodGhpcywgcGFnZSk7CgogICAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKSB7CiAgICAgICAgICBkYXRhLnBhZ2VzW3BhZ2VdLgogICAgICAgICAgICBmbGlwKCdkaXNhYmxlJywgZGF0YS5kaXNhYmxlZCB8fCBwYWdlTG9jYXRpb24hPTEpLgogICAgICAgICAgICBmbGlwKCdob3ZlcicsIHRydWUpLgogICAgICAgICAgICBmbGlwKCd6JywgbnVsbCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgLy8gVXBkYXRlcyB0aGUgcG9zaXRpb24gYW5kIHNpemUgb2YgdGhlIGZsaXBib29rJ3Mgc2hhZG93CgogIF91cGRhdGVTaGFkb3c6IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgdmlldywgdmlldzIsIHNoYWRvdywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKSwKICAgICAgcGFnZVdpZHRoID0gKGRhdGEuZGlzcGxheT09J3NpbmdsZScpID8gd2lkdGggOiB3aWR0aC8yOwoKICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKTsKCiAgICBpZiAoIWRhdGEuc2hhZG93KSB7CiAgICAgIGRhdGEuc2hhZG93ID0gJCgnPGRpdiAvPicsIHsKICAgICAgICAgICdjbGFzcyc6ICdzaGFkb3cnLAogICAgICAgICAgJ2Nzcyc6IGRpdkF0dCgwLCAwLCAwKS5jc3MKICAgICAgICB9KS4KICAgICAgICBhcHBlbmRUbyh0aGlzKTsKICAgIH0KCiAgICBmb3IgKHZhciBpID0gMDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykgewogICAgICBpZiAoIXZpZXdbMF0gfHwgIXZpZXdbMV0pCiAgICAgICAgYnJlYWs7CiAgICAKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEucGFnZXNbZGF0YS5wYWdlTXZbaV1dLmRhdGEoKS5mLm9wdHMubmV4dCk7CiAgICAgIHZpZXcyID0gdGhpcy50dXJuKCd2aWV3JywgZGF0YS5wYWdlTXZbaV0pOwoKICAgICAgdmlld1swXSA9IHZpZXdbMF0gJiYgdmlldzJbMF07CiAgICAgIHZpZXdbMV0gPSB2aWV3WzFdICYmIHZpZXcyWzFdOwogICAgfQoKICAgIGlmICghdmlld1swXSkgc2hhZG93ID0gKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPyAxIDogMjsKICAgIGVsc2UgaWYgKCF2aWV3WzFdKSBzaGFkb3cgPSAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSA/IDIgOiAxOwogICAgZWxzZSBzaGFkb3cgPSAzOwoKICAgIHN3aXRjaCAoc2hhZG93KSB7CiAgICAgIGNhc2UgMToKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogcGFnZVdpZHRoCiAgICAgICAgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMjoKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDM6CiAgICAgICAgZGF0YS5zaGFkb3cuY3NzKHsKICAgICAgICAgIHdpZHRoOiB3aWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgfQoKICB9LAoKICAvLyBTZXRzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGEgcGFnZQogIC8vIEl0IGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgdmlldwoKICBfc2V0UGFnZUxvYzogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKSwKICAgICAgbG9jID0gMDsKCiAgICAKICAgIGlmIChwYWdlPT12aWV3WzBdIHx8IHBhZ2U9PXZpZXdbMV0pCiAgICAgIGxvYyA9IDE7CiAgICBlbHNlIGlmICgKICAgICAgKGRhdGEuZGlzcGxheT09J3NpbmdsZScgJiYgcGFnZT09dmlld1swXSsxKSB8fAogICAgICAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJyAmJiBwYWdlPT12aWV3WzBdLTIgfHwgcGFnZT09dmlld1sxXSsyKQogICAgKQogICAgICBsb2MgPSAyOwoKICAgIGlmICghdGhpcy50dXJuKCdhbmltYXRpbmcnKSkKICAgICAgc3dpdGNoIChsb2MpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcygKICAgICAgICAgIHsKICAgICAgICAgICAgekluZGV4OiBkYXRhLnRvdGFsUGFnZXMsCiAgICAgICAgICAgIGRpc3BsYXk6ICcnCiAgICAgICAgICB9KTsKICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6CiAgICAgICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcygKICAgICAgICAgIHsKICAgICAgICAgICAgekluZGV4OiBkYXRhLnRvdGFsUGFnZXMtMSwKICAgICAgICAgICAgZGlzcGxheTogJycKICAgICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMDoKICAgICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKAogICAgICAgICAgewogICAgICAgICAgICB6SW5kZXg6IDAsCiAgICAgICAgICAgIGRpc3BsYXk6IChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdmaXhlZCcpKSA/ICcnIDogJ25vbmUnfQogICAgICAgICAgKTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgCiAgICByZXR1cm4gbG9jOwogIH0sCgogIC8vIEdldHMgYW5kIHNldHMgdGhlIG9wdGlvbnMKCiAgb3B0aW9uczogZnVuY3Rpb24ob3B0aW9ucykgewogICAgCiAgICBpZiAob3B0aW9ucz09PXVuZGVmaW5lZCkgewogICAgICAKICAgICAgcmV0dXJuIHRoaXMuZGF0YSgpLm9wdHM7CgogICAgfSBlbHNlIHsKCiAgICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgICAvLyBTZXQgbmV3IHZhbHVlcwoKICAgICAgJC5leHRlbmQoZGF0YS5vcHRzLCBvcHRpb25zKTsKICAgICAgCiAgICAgIC8vIFNldCBwYWdlcwoKICAgICAgaWYgKG9wdGlvbnMucGFnZXMpCiAgICAgICAgdGhpcy50dXJuKCdwYWdlcycsIG9wdGlvbnMucGFnZXMpOwoKICAgICAgLy8gU2V0IHBhZ2UKCiAgICAgIGlmIChvcHRpb25zLnBhZ2UpCiAgICAgICAgdGhpcy50dXJuKCdwYWdlJywgb3B0aW9ucy5wYWdlKTsKCiAgICAgIC8vIFNldCBkaXNwbGF5CgogICAgICBpZiAob3B0aW9ucy5kaXNwbGF5KQogICAgICAgIHRoaXMudHVybignZGlzcGxheScsIG9wdGlvbnMuZGlzcGxheSk7CiAgICAgIAogICAgICAvLyBTZXQgZGlyZWN0aW9uCgogICAgICBpZiAob3B0aW9ucy5kaXJlY3Rpb24pCiAgICAgICAgdGhpcy50dXJuKCdkaXJlY3Rpb24nLCBvcHRpb25zLmRpcmVjdGlvbik7CgogICAgICAvLyBTZXQgc2l6ZQoKICAgICAgaWYgKG9wdGlvbnMud2lkdGggJiYgb3B0aW9ucy5oZWlnaHQpCiAgICAgICAgdGhpcy50dXJuKCdzaXplJywgb3B0aW9ucy53aWR0aCwgb3B0aW9ucy5oZWlnaHQpOwogICAgICAKICAgICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVycwoKICAgICAgaWYgKG9wdGlvbnMud2hlbikKICAgICAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gb3B0aW9ucy53aGVuKQogICAgICAgICAgaWYgKGhhcyhldmVudE5hbWUsIG9wdGlvbnMud2hlbikpIHsKICAgICAgICAgICAgdGhpcy51bmJpbmQoZXZlbnROYW1lKS4KICAgICAgICAgICAgICBiaW5kKGV2ZW50TmFtZSwgb3B0aW9ucy53aGVuW2V2ZW50TmFtZV0pOwogICAgICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogIH0sCgogIC8vIEdldHMgdGhlIGN1cnJlbnQgdmVyc2lvbgoKICB2ZXJzaW9uOiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gdmVyc2lvbjsKCiAgfQp9LAoKLy8gTWV0aG9kcyBhbmQgcHJvcGVydGllcyBmb3IgdGhlIGZsaXAgcGFnZSBlZmZlY3QKCmZsaXBNZXRob2RzID0gewoKICAvLyBDb25zdHJ1Y3RvcgoKICBpbml0OiBmdW5jdGlvbihvcHRzKSB7CgogICAgdGhpcy5kYXRhKHtmOiB7CiAgICAgIGRpc2FibGVkOiBmYWxzZSwKICAgICAgaG92ZXI6IGZhbHNlLAogICAgICBlZmZlY3Q6ICh0aGlzLmhhc0NsYXNzKCdoYXJkJykpID8gJ2hhcmQnIDogJ3NoZWV0JwogICAgfX0pOwogIAogICAgdGhpcy5mbGlwKCdvcHRpb25zJywgb3B0cyk7CgogICAgZmxpcE1ldGhvZHMuX2FkZFBhZ2VXcmFwcGVyLmNhbGwodGhpcyk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgc2V0RGF0YTogZnVuY3Rpb24oZCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGRhdGEuZiA9ICQuZXh0ZW5kKGRhdGEuZiwgZCk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgb3B0aW9uczogZnVuY3Rpb24ob3B0cykgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKG9wdHMpIHsKICAgICAgZmxpcE1ldGhvZHMuc2V0RGF0YS5jYWxsKHRoaXMsCiAgICAgICAge29wdHM6ICQuZXh0ZW5kKHt9LCBkYXRhLm9wdHMgfHwgZmxpcE9wdGlvbnMsIG9wdHMpfSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSBlbHNlCiAgICAgIHJldHVybiBkYXRhLm9wdHM7CgogIH0sCgogIHo6IGZ1bmN0aW9uKHopIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mOwoKICAgIGRhdGEub3B0c1snei1pbmRleCddID0gejsKCiAgICBpZiAoZGF0YS5md3JhcHBlcikKICAgICAgZGF0YS5md3JhcHBlci5jc3MoewogICAgICAgIHpJbmRleDogeiB8fCBwYXJzZUludChkYXRhLnBhcmVudC5jc3MoJ3otaW5kZXgnKSwgMTApIHx8IDAKICAgICAgfSk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgX2NBbGxvd2VkOiBmdW5jdGlvbigpIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICBwYWdlID0gZGF0YS5vcHRzLnBhZ2UsCiAgICAgIHR1cm5EYXRhID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLAogICAgICBvZGQgPSBwYWdlJTI7CiAgICAKICAgIGlmIChkYXRhLmVmZmVjdD09J2hhcmQnKSB7CiAgICAKICAgICAgcmV0dXJuICh0dXJuRGF0YS5kaXJlY3Rpb249PSdsdHInKSA/CiAgICAgICAgWyhvZGQpID8gJ3InIDogJ2wnXSA6CiAgICAgICAgWyhvZGQpID8gJ2wnIDogJ3InXTsKCiAgICB9IGVsc2UgewoKICAgICAgaWYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICAgIGlmIChwYWdlPT0xKQogICAgICAgICAgcmV0dXJuICh0dXJuRGF0YS5kaXJlY3Rpb249PSdsdHInKSA/CiAgICAgICAgICAgIGNvcm5lcnNbJ2ZvcndhcmQnXSA6IGNvcm5lcnNbJ2JhY2t3YXJkJ107CiAgICAgICAgZWxzZSBpZiAocGFnZT09dHVybkRhdGEudG90YWxQYWdlcykKICAgICAgICAgIHJldHVybiAodHVybkRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPwogICAgICAgICAgICBjb3JuZXJzWydiYWNrd2FyZCddIDogY29ybmVyc1snZm9yd2FyZCddOwogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiBjb3JuZXJzWydhbGwnXTsKCiAgICAgIH0gZWxzZSB7CgogICAgICAgIHJldHVybiAodHVybkRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPwogICAgICAgICAgY29ybmVyc1sob2RkKSA/ICdmb3J3YXJkJyA6ICdiYWNrd2FyZCddCiAgICAgICAgICA6CiAgICAgICAgICBjb3JuZXJzWyhvZGQpID8gJ2JhY2t3YXJkJyA6ICdmb3J3YXJkJ107CgogICAgICB9CgogICAgfQoKICB9LAoKICBfY29ybmVyQWN0aXZhdGVkOiBmdW5jdGlvbihwKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKSwKICAgICAgcG9pbnQgPSB7eDogcC54LCB5OiBwLnksIGNvcm5lcjogJyd9LAogICAgICBjc3ogPSBkYXRhLm9wdHMuY29ybmVyU2l6ZTsKCiAgICBpZiAocG9pbnQueDw9MCB8fCBwb2ludC55PD0wIHx8IHBvaW50Lng+PXdpZHRoIHx8IHBvaW50Lnk+PWhlaWdodCkKICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIHZhciBhbGxvd2VkQ29ybmVycyA9IGZsaXBNZXRob2RzLl9jQWxsb3dlZC5jYWxsKHRoaXMpOwoKICAgIHN3aXRjaCAoZGF0YS5lZmZlY3QpIHsKICAgICAgY2FzZSAnaGFyZCc6CiAgICAgICAgCiAgICAgICAgaWYgKHBvaW50Lng+d2lkdGgtY3N6KQogICAgICAgICAgcG9pbnQuY29ybmVyID0gJ3InOwogICAgICAgIGVsc2UgaWYgKHBvaW50Lng8Y3N6KQogICAgICAgICAgcG9pbnQuY29ybmVyID0gJ2wnOwogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgCiAgICAgICAgYnJlYWs7CgogICAgICBjYXNlICdzaGVldCc6CiAgICAgICAgCiAgICAgICAgaWYgKHBvaW50Lnk8Y3N6KQogICAgICAgICAgcG9pbnQuY29ybmVyKz0gJ3QnOwogICAgICAgIGVsc2UgaWYgKHBvaW50Lnk+PWhlaWdodC1jc3opCiAgICAgICAgICBwb2ludC5jb3JuZXIrPSAnYic7CiAgICAgICAgZWxzZQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgCiAgICAgICAgaWYgKHBvaW50Lng8PWNzeikKICAgICAgICAgIHBvaW50LmNvcm5lcis9ICdsJzsKICAgICAgICBlbHNlIGlmIChwb2ludC54Pj13aWR0aC1jc3opCiAgICAgICAgICBwb2ludC5jb3JuZXIrPSAncic7CiAgICAgICAgZWxzZQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgICAgIGJyZWFrOwogICAgICB9CgogICAgcmV0dXJuICghcG9pbnQuY29ybmVyIHx8ICQuaW5BcnJheShwb2ludC5jb3JuZXIsIGFsbG93ZWRDb3JuZXJzKT09LTEpID8KICAgICAgZmFsc2UgOiBwb2ludDsKCiAgfSwKCiAgX2lzSUFyZWE6IGZ1bmN0aW9uKGUpIHsKCiAgICB2YXIgcG9zID0gdGhpcy5kYXRhKCkuZi5wYXJlbnQub2Zmc2V0KCk7CgogICAgZSA9IChpc1RvdWNoICYmIGUub3JpZ2luYWxFdmVudCkgPyBlLm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXSA6IGU7CgogICAgcmV0dXJuIGZsaXBNZXRob2RzLl9jb3JuZXJBY3RpdmF0ZWQuY2FsbCh0aGlzLAogICAgICB7CiAgICAgICAgeDogZS5wYWdlWC1wb3MubGVmdCwKICAgICAgICB5OiBlLnBhZ2VZLXBvcy50b3AKICAgICAgfSk7CgogIH0sCgogIF9jOiBmdW5jdGlvbihjb3JuZXIsIG9wdHMpIHsKCiAgICBvcHRzID0gb3B0cyB8fCAwOwoKICAgIHN3aXRjaCAoY29ybmVyKSB7CiAgICAgIGNhc2UgJ3RsJzoKICAgICAgICByZXR1cm4gcG9pbnQyRChvcHRzLCBvcHRzKTsKICAgICAgY2FzZSAndHInOgogICAgICAgIHJldHVybiBwb2ludDJEKHRoaXMud2lkdGgoKS1vcHRzLCBvcHRzKTsKICAgICAgY2FzZSAnYmwnOgogICAgICAgIHJldHVybiBwb2ludDJEKG9wdHMsIHRoaXMuaGVpZ2h0KCktb3B0cyk7CiAgICAgIGNhc2UgJ2JyJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCh0aGlzLndpZHRoKCktb3B0cywgdGhpcy5oZWlnaHQoKS1vcHRzKTsKICAgICAgY2FzZSAnbCc6CiAgICAgICAgcmV0dXJuIHBvaW50MkQob3B0cywgMCk7CiAgICAgIGNhc2UgJ3InOgogICAgICAgIHJldHVybiBwb2ludDJEKHRoaXMud2lkdGgoKS1vcHRzLCAwKTsKICAgIH0KCiAgfSwKCiAgX2MyOiBmdW5jdGlvbihjb3JuZXIpIHsKCiAgICBzd2l0Y2ggKGNvcm5lcikgewogICAgICBjYXNlICd0bCc6CiAgICAgICAgcmV0dXJuIHBvaW50MkQodGhpcy53aWR0aCgpKjIsIDApOwogICAgICBjYXNlICd0cic6CiAgICAgICAgcmV0dXJuIHBvaW50MkQoLXRoaXMud2lkdGgoKSwgMCk7CiAgICAgIGNhc2UgJ2JsJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCh0aGlzLndpZHRoKCkqMiwgdGhpcy5oZWlnaHQoKSk7CiAgICAgIGNhc2UgJ2JyJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCgtdGhpcy53aWR0aCgpLCB0aGlzLmhlaWdodCgpKTsKICAgICAgY2FzZSAnbCc6CiAgICAgICAgcmV0dXJuIHBvaW50MkQodGhpcy53aWR0aCgpKjIsIDApOwogICAgICBjYXNlICdyJzoKICAgICAgICByZXR1cm4gcG9pbnQyRCgtdGhpcy53aWR0aCgpLCAwKTsKICAgIH0KCiAgfSwKCiAgX2ZvbGRpbmdQYWdlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhKQogICAgICByZXR1cm47CgogICAgdmFyIG9wdHMgPSBkYXRhLm9wdHM7CgogICAgaWYgKG9wdHMudHVybikgewogICAgICBkYXRhID0gb3B0cy50dXJuLmRhdGEoKTsKICAgICAgaWYgKGRhdGEuZGlzcGxheSA9PSAnc2luZ2xlJykKICAgICAgICByZXR1cm4gKG9wdHMubmV4dD4xIHx8IG9wdHMucGFnZT4xKSA/IGRhdGEucGFnZU9ianNbMF0gOiBudWxsOwogICAgICBlbHNlCiAgICAgICAgcmV0dXJuIGRhdGEucGFnZU9ianNbb3B0cy5uZXh0XTsKICAgIH0KCiAgfSwKCiAgX2JhY2tHcmFkaWVudDogZnVuY3Rpb24oKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICB0dXJuRGF0YSA9IGRhdGEub3B0cy50dXJuLmRhdGEoKSwKICAgICAgZ3JhZGllbnQgPSAgdHVybkRhdGEub3B0cy5ncmFkaWVudHMgJiYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnIHx8CiAgICAgICAgIChkYXRhLm9wdHMucGFnZSE9MiAmJiBkYXRhLm9wdHMucGFnZSE9dHVybkRhdGEudG90YWxQYWdlcy0xKSk7CgogICAgaWYgKGdyYWRpZW50ICYmICFkYXRhLmJzaGFkb3cpCiAgICAgIGRhdGEuYnNoYWRvdyA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAxKSkuCiAgICAgICAgY3NzKHsncG9zaXRpb24nOiAnJywgd2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpfSkuCiAgICAgICAgYXBwZW5kVG8oZGF0YS5wYXJlbnQpOwoKICAgIHJldHVybiBncmFkaWVudDsKCiAgfSwKCiAgdHlwZTogZnVuY3Rpb24gKCkgewogICAgCiAgICByZXR1cm4gdGhpcy5kYXRhKCkuZi5lZmZlY3Q7CgogIH0sCgogIHJlc2l6ZTogZnVuY3Rpb24oZnVsbCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHR1cm5EYXRhID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLAogICAgICB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTsKCiAgICBzd2l0Y2ggKGRhdGEuZWZmZWN0KSB7CiAgICAgIGNhc2UgJ2hhcmQnOgogICAgICAgIAogICAgICBpZiAoZnVsbCkgewogICAgICAgIGRhdGEud3JhcHBlci5jc3Moe3dpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHR9KTsKICAgICAgICBkYXRhLmZwYWdlLmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewogICAgICAgICAgZGF0YS5hc2hhZG93LmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwogICAgICAgICAgZGF0YS5ic2hhZG93LmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwogICAgICAgIH0KICAgICAgfQoKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3NoZWV0JzoKCiAgICAgIGlmIChmdWxsKSB7CiAgICAgICAgdmFyIHNpemUgPSBNYXRoLnJvdW5kKE1hdGguc3FydChNYXRoLnBvdyh3aWR0aCwgMikrTWF0aC5wb3coaGVpZ2h0LCAyKSkpOwoKICAgICAgICBkYXRhLndyYXBwZXIuY3NzKHt3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfSk7CiAgICAgICAgZGF0YS5md3JhcHBlci5jc3Moe3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9KS4KICAgICAgICAgIGNoaWxkcmVuKCc6Zmlyc3QtY2hpbGQnKS4KICAgICAgICAgIGNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwoKICAgICAgICBkYXRhLmZwYWdlLmNzcyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0pOwoKICAgICAgICBpZiAodHVybkRhdGEub3B0cy5ncmFkaWVudHMpCiAgICAgICAgICBkYXRhLmFzaGFkb3cuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CgogICAgICAgIGlmIChmbGlwTWV0aG9kcy5fYmFja0dyYWRpZW50LmNhbGwodGhpcykpCiAgICAgICAgICBkYXRhLmJzaGFkb3cuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICAgIH0KCiAgICAgIGlmIChkYXRhLnBhcmVudC5pcygnOnZpc2libGUnKSkgewogICAgICAgIHZhciBvZmZzZXQgPSBmaW5kUG9zKGRhdGEucGFyZW50WzBdKTsKCiAgICAgICAgZGF0YS5md3JhcHBlci5jc3Moe3RvcDogb2Zmc2V0LnRvcCwKICAgICAgICAgIGxlZnQ6IG9mZnNldC5sZWZ0fSk7CgogICAgICAgIC8vaWYgKGRhdGEub3B0cy50dXJuKSB7CiAgICAgICAgIG9mZnNldCA9IGZpbmRQb3MoZGF0YS5vcHRzLnR1cm5bMF0pOwogICAgICAgICBkYXRhLmZwYXJlbnQuY3NzKHt0b3A6IC1vZmZzZXQudG9wLCBsZWZ0OiAtb2Zmc2V0LmxlZnR9KTsKICAgICAgICAvL30KICAgICAgfQoKICAgICAgdGhpcy5mbGlwKCd6JywgZGF0YS5vcHRzWyd6LWluZGV4J10pOwoKICAgICAgYnJlYWs7CiAgICB9CgogIH0sCgogIC8vIFByZXBhcmVzIHRoZSBwYWdlIGJ5IGFkZGluZyBhIGdlbmVyYWwgd3JhcHBlciBhbmQgYW5vdGhlciBvYmplY3RzCgogIF9hZGRQYWdlV3JhcHBlcjogZnVuY3Rpb24oKSB7CgogICAgdmFyIGF0dCwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHR1cm5EYXRhID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLAogICAgICBwYXJlbnQgPSB0aGlzLnBhcmVudCgpOwoKICAgIGRhdGEucGFyZW50ID0gcGFyZW50OwoKICBpZiAoIWRhdGEud3JhcHBlcikKICAgIHN3aXRjaCAoZGF0YS5lZmZlY3QpIHsKICAgICAgY2FzZSAnaGFyZCc6CiAgICAgICAgCiAgICAgICAgdmFyIGNzc1Byb3BlcnRpZXMgPSB7fTsKICAgICAgICBjc3NQcm9wZXJ0aWVzW3ZlbmRvciArICd0cmFuc2Zvcm0tc3R5bGUnXSA9ICdwcmVzZXJ2ZS0zZCc7CiAgICAgICAgY3NzUHJvcGVydGllc1t2ZW5kb3IgKyAnYmFja2ZhY2UtdmlzaWJpbGl0eSddID0gJ2hpZGRlbic7CgogICAgICAgIGRhdGEud3JhcHBlciA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAyKSkuCiAgICAgICAgICBjc3MoY3NzUHJvcGVydGllcykuCiAgICAgICAgICBhcHBlbmRUbyhwYXJlbnQpLgogICAgICAgICAgcHJlcGVuZCh0aGlzKTsKCiAgICAgICAgZGF0YS5mcGFnZSA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAxKSkuCiAgICAgICAgICBjc3MoY3NzUHJvcGVydGllcykuCiAgICAgICAgICBhcHBlbmRUbyhwYXJlbnQpOwogICAgICAgIAogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewogICAgICAgICAgZGF0YS5hc2hhZG93ID0gJCgnPGRpdi8+JywgZGl2QXR0KDAsIDAsICAwKSkuCiAgICAgICAgICAgIGhpZGUoKS4KICAgICAgICAgICAgYXBwZW5kVG8ocGFyZW50KTsKCiAgICAgICAgICBkYXRhLmJzaGFkb3cgPSAkKCc8ZGl2Lz4nLCBkaXZBdHQoMCwgMCwgIDApKTsKICAgICAgICB9CgogICAgICBicmVhazsKICAgICAgY2FzZSAnc2hlZXQnOgogICAgICAgIAogICAgICAgIHZhciB3aWR0aCA9IHRoaXMud2lkdGgoKSwKICAgICAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCksCiAgICAgICAgICBzaXplID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3cod2lkdGgsIDIpK01hdGgucG93KGhlaWdodCwgMikpKTsKICAgICAgICAKICAgICAgICBkYXRhLmZwYXJlbnQgPSBkYXRhLm9wdHMudHVybi5kYXRhKCkuZnBhcmVudDsKCiAgICAgICAgaWYgKCFkYXRhLmZwYXJlbnQpIHsKICAgICAgICAgIHZhciBmcGFyZW50ID0gJCgnPGRpdi8+Jywge2Nzczogeydwb2ludGVyLWV2ZW50cyc6ICdub25lJ319KS5oaWRlKCk7CiAgICAgICAgICAgIGZwYXJlbnQuZGF0YSgpLmZsaXBzID0gMDsKICAgICAgICAgICAgZnBhcmVudC5jc3MoZGl2QXR0KDAsIDAsICdhdXRvJywgJ3Zpc2libGUnKS5jc3MpLgogICAgICAgICAgICBhcHBlbmRUbyhkYXRhLm9wdHMudHVybik7CiAgICAgICAgICAgIAogICAgICAgICAgICBkYXRhLm9wdHMudHVybi5kYXRhKCkuZnBhcmVudCA9IGZwYXJlbnQ7CiAgICAgICAgICAgIGRhdGEuZnBhcmVudCA9IGZwYXJlbnQ7CiAgICAgICAgfQoKICAgICAgICB0aGlzLmNzcyh7cG9zaXRpb246ICdhYnNvbHV0ZScsIHRvcDogMCwgbGVmdDogMCwgYm90dG9tOiAnYXV0bycsIHJpZ2h0OiAnYXV0byd9KTsKCiAgICAgICAgZGF0YS53cmFwcGVyID0gJCgnPGRpdi8+JywgZGl2QXR0KDAsIDAsIHRoaXMuY3NzKCd6LWluZGV4JykpKS4KICAgICAgICAgIGFwcGVuZFRvKHBhcmVudCkuCiAgICAgICAgICBwcmVwZW5kKHRoaXMpOwoKICAgICAgICBkYXRhLmZ3cmFwcGVyID0gJCgnPGRpdi8+JywgZGl2QXR0KHBhcmVudC5vZmZzZXQoKS50b3AsIHBhcmVudC5vZmZzZXQoKS5sZWZ0KSkuCiAgICAgICAgICBoaWRlKCkuCiAgICAgICAgICBhcHBlbmRUbyhkYXRhLmZwYXJlbnQpOwoKICAgICAgICBkYXRhLmZwYWdlID0gJCgnPGRpdi8+JywgZGl2QXR0KDAsIDAsIDAsICd2aXNpYmxlJykpLgogICAgICAgICAgY3NzKHtjdXJzb3I6ICdkZWZhdWx0J30pLgogICAgICAgICAgYXBwZW5kVG8oZGF0YS5md3JhcHBlcik7CgogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykKICAgICAgICAgIGRhdGEuYXNoYWRvdyA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAgMSkpLgogICAgICAgICAgYXBwZW5kVG8oZGF0YS5mcGFnZSk7CgogICAgICAgIGZsaXBNZXRob2RzLnNldERhdGEuY2FsbCh0aGlzLCBkYXRhKTsKCiAgICAgIGJyZWFrOwogICAgfQoKICAgIC8vIFNldCBzaXplCiAgICBmbGlwTWV0aG9kcy5yZXNpemUuY2FsbCh0aGlzLCB0cnVlKTsKCiAgfSwKCiAgLy8gVGFrZXMgYSAyUCBwb2ludCBmcm9tIHRoZSBzY3JlZW4gYW5kIGFwcGxpZXMgdGhlIHRyYW5zZm9ybWF0aW9uCgogIF9mb2xkOiBmdW5jdGlvbihwb2ludCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybkRhdGEgPSBkYXRhLm9wdHMudHVybi5kYXRhKCksCiAgICAgIG8gPSBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsIHBvaW50LmNvcm5lciksCiAgICAgIHdpZHRoID0gdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQgPSB0aGlzLmhlaWdodCgpOwoKICAgIHN3aXRjaCAoZGF0YS5lZmZlY3QpIHsKCiAgICAgIGNhc2UgJ2hhcmQnOgoKICAgICAgICBpZiAocG9pbnQuY29ybmVyPT0nbCcpCiAgICAgICAgICBwb2ludC54ID0gTWF0aC5taW4oTWF0aC5tYXgocG9pbnQueCwgMCksIHdpZHRoKjIpOwogICAgICAgIGVsc2UKICAgICAgICAgIHBvaW50LnggPSBNYXRoLm1heChNYXRoLm1pbihwb2ludC54LCB3aWR0aCksIC13aWR0aCk7CgogICAgICAgIHZhciBsZWZ0UG9zLAogICAgICAgICAgc2hhZG93LAogICAgICAgICAgZ3JhZGllbnRYLAogICAgICAgICAgZnBhZ2VPcmlnaW4sCiAgICAgICAgICBwYXJlbnRPcmlnaW4sCiAgICAgICAgICB0b3RhbFBhZ2VzID0gdHVybkRhdGEudG90YWxQYWdlcywKICAgICAgICAgIHpJbmRleCA9IGRhdGEub3B0c1snei1pbmRleCddIHx8IHRvdGFsUGFnZXMsCiAgICAgICAgICBwYXJlbnRDc3MgPSB7J292ZXJmbG93JzogJ3Zpc2libGUnfSwKICAgICAgICAgIHJlbFggPSAoby54KSA/IChvLnggLSBwb2ludC54KS93aWR0aCA6IHBvaW50Lngvd2lkdGgsCiAgICAgICAgICBhbmdsZSA9IHJlbFggKiA5MCwKICAgICAgICAgIGhhbGYgPSBhbmdsZTw5MDsKCiAgICAgICAgc3dpdGNoIChwb2ludC5jb3JuZXIpIHsKICAgICAgICAgIGNhc2UgJ2wnOgoKICAgICAgICAgICAgZnBhZ2VPcmlnaW4gPSAgJzAlIDUwJSc7CiAgICAgICAgICAgIHBhcmVudE9yaWdpbiA9ICAnMTAwJSA1MCUnOwoKICAgICAgICAgICAgaWYgKGhhbGYpIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gMDsKICAgICAgICAgICAgICBzaGFkb3cgPSBkYXRhLm9wdHMubmV4dC0xPjA7CiAgICAgICAgICAgICAgZ3JhZGllbnRYID0gMTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gJzEwMCUnOwogICAgICAgICAgICAgIHNoYWRvdyA9IGRhdGEub3B0cy5wYWdlKzE8dG90YWxQYWdlczsKICAgICAgICAgICAgICBncmFkaWVudFggPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdyJzoKCiAgICAgICAgICAgIGZwYWdlT3JpZ2luID0gICcxMDAlIDUwJSc7CiAgICAgICAgICAgIHBhcmVudE9yaWdpbiA9ICAnMCUgNTAlJzsKICAgICAgICAgICAgYW5nbGUgPSAtYW5nbGU7CiAgICAgICAgICAgIHdpZHRoID0gLXdpZHRoOwoKICAgICAgICAgICAgaWYgKGhhbGYpIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gMDsKICAgICAgICAgICAgICBzaGFkb3cgPSBkYXRhLm9wdHMubmV4dCsxPHRvdGFsUGFnZXM7CiAgICAgICAgICAgICAgZ3JhZGllbnRYID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBsZWZ0UG9zID0gJy0xMDAlJzsKICAgICAgICAgICAgICBzaGFkb3cgPSBkYXRhLm9wdHMucGFnZSE9MTsKICAgICAgICAgICAgICBncmFkaWVudFggPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBwYXJlbnRDc3NbdmVuZG9yKydwZXJzcGVjdGl2ZS1vcmlnaW4nXSA9IHBhcmVudE9yaWdpbjsKCiAgICAgICAgZGF0YS53cmFwcGVyLnRyYW5zZm9ybSgncm90YXRlWSgnK2FuZ2xlKydkZWcpJyArCiAgICAgICAgICAndHJhbnNsYXRlM2QoMHB4LCAwcHgsICcrKHRoaXMuYXR0cignZGVwdGgnKXx8MCkrJ3B4KScsIHBhcmVudE9yaWdpbik7CgogICAgICAgIGRhdGEuZnBhZ2UudHJhbnNmb3JtKCd0cmFuc2xhdGVYKCcrd2lkdGgrJ3B4KSByb3RhdGVZKCcrKDE4MCthbmdsZSkrJ2RlZyknLCBmcGFnZU9yaWdpbik7CgogICAgICAgIGRhdGEucGFyZW50LmNzcyhwYXJlbnRDc3MpOwoKICAgICAgICBpZiAoaGFsZikgewogICAgICAgICAgcmVsWCA9IC1yZWxYKzE7CiAgICAgICAgICBkYXRhLndyYXBwZXIuY3NzKHt6SW5kZXg6IHpJbmRleCsxfSk7CiAgICAgICAgICBkYXRhLmZwYWdlLmNzcyh7ekluZGV4OiB6SW5kZXh9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVsWCA9IHJlbFgtMTsKICAgICAgICAgIGRhdGEud3JhcHBlci5jc3Moe3pJbmRleDogekluZGV4fSk7CiAgICAgICAgICBkYXRhLmZwYWdlLmNzcyh7ekluZGV4OiB6SW5kZXgrMX0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKHR1cm5EYXRhLm9wdHMuZ3JhZGllbnRzKSB7CiAgICAgICAgICBpZiAoc2hhZG93KQogICAgICAgICAgICBkYXRhLmFzaGFkb3cuY3NzKHsKICAgICAgICAgICAgICBkaXNwbGF5OiAnJywKICAgICAgICAgICAgICBsZWZ0OiBsZWZ0UG9zLAogICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsJysoMC41KnJlbFgpKycpJwogICAgICAgICAgICB9KS4KICAgICAgICAgICAgdHJhbnNmb3JtKCdyb3RhdGVZKDBkZWcpJyk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGRhdGEuYXNoYWRvdy5oaWRlKCk7CgogICAgICAgICAgZGF0YS5ic2hhZG93LmNzcyh7b3BhY2l0eTotcmVsWCArIDF9KTsKCiAgICAgICAgICBpZiAoaGFsZikgewogICAgICAgICAgICBpZiAoZGF0YS5ic2hhZG93LnBhcmVudCgpWzBdIT1kYXRhLndyYXBwZXJbMF0pIHsKICAgICAgICAgICAgICBkYXRhLmJzaGFkb3cuYXBwZW5kVG8oZGF0YS53cmFwcGVyKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGRhdGEuYnNoYWRvdy5wYXJlbnQoKVswXSE9ZGF0YS5mcGFnZVswXSkgewogICAgICAgICAgICAgIGRhdGEuYnNoYWRvdy5hcHBlbmRUbyhkYXRhLmZwYWdlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgLypkYXRhLmJzaGFkb3cuY3NzKHsKICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLDAsMCwnKygwLjEpKycpJwogICAgICAgICAgfSkqLwogICAgICAgICAgZ3JhZGllbnQoZGF0YS5ic2hhZG93LCBwb2ludDJEKGdyYWRpZW50WCAqIDEwMCwgMCksIHBvaW50MkQoKC1ncmFkaWVudFggKyAxKSoxMDAsIDApLAogICAgICAgICAgICBbWzAsICdyZ2JhKDAsMCwwLDAuMyknXSxbMSwgJ3JnYmEoMCwwLDAsMCknXV0sMik7CiAgICAgICAgICAKICAgICAgICB9CgogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGVldCc6CgogICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgIGEgPSAwLAogICAgICAgICAgYWxwaGEgPSAwLAogICAgICAgICAgYmV0YSwKICAgICAgICAgIHB4LAogICAgICAgICAgZ3JhZGllbnRFbmRQb2ludEEsCiAgICAgICAgICBncmFkaWVudEVuZFBvaW50QiwKICAgICAgICAgIGdyYWRpZW50U3RhcnRWYWwsCiAgICAgICAgICBncmFkaWVudFNpemUsCiAgICAgICAgICBncmFkaWVudE9wYWNpdHksCiAgICAgICAgICBzaGFkb3dWYWwsCiAgICAgICAgICBtdiA9IHBvaW50MkQoMCwgMCksCiAgICAgICAgICBkZiA9IHBvaW50MkQoMCwgMCksCiAgICAgICAgICB0ciA9IHBvaW50MkQoMCwgMCksCiAgICAgICAgICBmb2xkaW5nID0gZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcyksCiAgICAgICAgICB0YW4gPSBNYXRoLnRhbihhbHBoYSksCiAgICAgICAgICBhYyA9IHR1cm5EYXRhLm9wdHMuYWNjZWxlcmF0aW9uLAogICAgICAgICAgaCA9IGRhdGEud3JhcHBlci5oZWlnaHQoKSwKICAgICAgICAgIHRvcCA9IHBvaW50LmNvcm5lci5zdWJzdHIoMCwgMSkgPT0gJ3QnLAogICAgICAgICAgbGVmdCA9IHBvaW50LmNvcm5lci5zdWJzdHIoMSwgMSkgPT0gJ2wnLAoKICAgICAgY29tcHV0ZSA9IGZ1bmN0aW9uKCkgewoKICAgICAgICB2YXIgcmVsID0gcG9pbnQyRCgwLCAwKTsKICAgICAgICB2YXIgbWlkZGxlID0gcG9pbnQyRCgwLCAwKTsKCiAgICAgICAgcmVsLnggPSAoby54KSA/IG8ueCAtIHBvaW50LnggOiBwb2ludC54OwoKICAgICAgICBpZiAoIWhhc1JvdCkgewogICAgICAgICAgcmVsLnkgPSAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZWwueSA9IChvLnkpID8gby55IC0gcG9pbnQueSA6IHBvaW50Lnk7CiAgICAgICAgfQoKICAgICAgICBtaWRkbGUueCA9IChsZWZ0KT8gd2lkdGggLSByZWwueC8yIDogcG9pbnQueCArIHJlbC54LzI7CiAgICAgICAgbWlkZGxlLnkgPSByZWwueS8yOwogICAgICAgIAogICAgICAgIHZhciBhbHBoYSA9ICBBOTAtTWF0aC5hdGFuMihyZWwueSwgcmVsLngpLAogICAgICAgICAgZ2FtbWEgPSBhbHBoYSAtIE1hdGguYXRhbjIobWlkZGxlLnksIG1pZGRsZS54KSwKICAgICAgICAgIGRpc3RhbmNlID0gIE1hdGgubWF4KDAsIE1hdGguc2luKGdhbW1hKSAqIE1hdGguc3FydChNYXRoLnBvdyhtaWRkbGUueCwgMikgKyBNYXRoLnBvdyhtaWRkbGUueSwgMikpKTsKICAgICAgICAgIAogICAgICAgICAgYSA9IGRlZyhhbHBoYSk7CgogICAgICAgICAgdHIgPSBwb2ludDJEKGRpc3RhbmNlICogTWF0aC5zaW4oYWxwaGEpLCBkaXN0YW5jZSAqIE1hdGguY29zKGFscGhhKSk7CgogICAgICAgICAgaWYgKGFscGhhID4gQTkwKSB7CiAgICAgICAgICAgIHRyLnggPSB0ci54ICsgTWF0aC5hYnModHIueSAqIHJlbC55L3JlbC54KTsKICAgICAgICAgICAgdHIueSA9IDA7CiAgICAgICAgICAgIGlmIChNYXRoLnJvdW5kKHRyLngqTWF0aC50YW4oUEktYWxwaGEpKSA8IGhlaWdodCkgewogICAgICAgICAgICAgIHBvaW50LnkgPSBNYXRoLnNxcnQoTWF0aC5wb3coaGVpZ2h0LCAyKSsyICogbWlkZGxlLnggKiByZWwueCk7CiAgICAgICAgICAgICAgaWYgKHRvcCkgcG9pbnQueSA9ICBoZWlnaHQgLSBwb2ludC55OwogICAgICAgICAgICAgIHJldHVybiBjb21wdXRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgCiAgICAgICAgICBpZiAoYWxwaGE+QTkwKSB7CiAgICAgICAgICAgIHZhciBiZXRhID0gUEktYWxwaGEsIGRkID0gaCAtIGhlaWdodC9NYXRoLnNpbihiZXRhKTsKICAgICAgICAgICAgbXYgPSBwb2ludDJEKE1hdGgucm91bmQoZGQqTWF0aC5jb3MoYmV0YSkpLCBNYXRoLnJvdW5kKGRkKk1hdGguc2luKGJldGEpKSk7CiAgICAgICAgICAgIGlmIChsZWZ0KSBtdi54ID0gLSBtdi54OwogICAgICAgICAgICBpZiAodG9wKSBtdi55ID0gLSBtdi55OwogICAgICAgICAgfQoKICAgICAgICAgIHB4ID0gTWF0aC5yb3VuZCh0ci55L01hdGgudGFuKGFscGhhKSArIHRyLngpOwogICAgICAKICAgICAgICAgIHZhciBzaWRlID0gd2lkdGggLSBweCwKICAgICAgICAgICAgc2lkZVggPSBzaWRlKk1hdGguY29zKGFscGhhKjIpLAogICAgICAgICAgICBzaWRlWSA9IHNpZGUqTWF0aC5zaW4oYWxwaGEqMik7CiAgICAgICAgICAgIGRmID0gcG9pbnQyRCgKICAgICAgICAgICAgICBNYXRoLnJvdW5kKChsZWZ0ID8gc2lkZSAtc2lkZVggOiBweCtzaWRlWCkpLAogICAgICAgICAgICAgIE1hdGgucm91bmQoKHRvcCkgPyBzaWRlWSA6IGhlaWdodCAtIHNpZGVZKSk7CiAgICAgICAgICAKICAgICAgICAvLyBHcmFkaWVudHMKICAgICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewoKICAgICAgICAgICAgZ3JhZGllbnRTaXplID0gc2lkZSpNYXRoLnNpbihhbHBoYSk7CgogICAgICAgICAgICB2YXIgZW5kaW5nUG9pbnQgPSBmbGlwTWV0aG9kcy5fYzIuY2FsbCh0aGF0LCBwb2ludC5jb3JuZXIpLAogICAgICAgICAgICAgZmFyID0gTWF0aC5zcXJ0KE1hdGgucG93KGVuZGluZ1BvaW50LngtcG9pbnQueCwgMikrTWF0aC5wb3coZW5kaW5nUG9pbnQueS1wb2ludC55LCAyKSkvd2lkdGg7CgogICAgICAgICAgICBzaGFkb3dWYWwgPSBNYXRoLnNpbihBOTAqKChmYXI+MSkgPyAyIC0gZmFyIDogZmFyKSk7CgogICAgICAgICAgICBncmFkaWVudE9wYWNpdHkgPSBNYXRoLm1pbihmYXIsIDEpOwoKICAgICAgICAgICAKICAgICAgICAgICAgICBncmFkaWVudFN0YXJ0VmFsID0gZ3JhZGllbnRTaXplPjEwMCA/IChncmFkaWVudFNpemUtMTAwKS9ncmFkaWVudFNpemUgOiAwOwoKICAgICAgICAgICAgICBncmFkaWVudEVuZFBvaW50QSA9IHBvaW50MkQoCiAgICAgICAgICAgICAgICBncmFkaWVudFNpemUqTWF0aC5zaW4oYWxwaGEpL3dpZHRoKjEwMCwKICAgICAgICAgICAgICAgIGdyYWRpZW50U2l6ZSpNYXRoLmNvcyhhbHBoYSkvaGVpZ2h0KjEwMCk7CiAgICAgICAgICAgCgogICAgICAgICAgICAgIGlmIChmbGlwTWV0aG9kcy5fYmFja0dyYWRpZW50LmNhbGwodGhhdCkpIHsKCiAgICAgICAgICAgICAgICBncmFkaWVudEVuZFBvaW50QiA9IHBvaW50MkQoCiAgICAgICAgICAgICAgICAgIGdyYWRpZW50U2l6ZSoxLjIqTWF0aC5zaW4oYWxwaGEpL3dpZHRoKjEwMCwKICAgICAgICAgICAgICAgICAgZ3JhZGllbnRTaXplKjEuMipNYXRoLmNvcyhhbHBoYSkvaGVpZ2h0KjEwMCk7CgogICAgICAgICAgICAgICAgaWYgKCFsZWZ0KSBncmFkaWVudEVuZFBvaW50Qi54ID0gMTAwLWdyYWRpZW50RW5kUG9pbnRCLng7CiAgICAgICAgICAgICAgICBpZiAoIXRvcCkgZ3JhZGllbnRFbmRQb2ludEIueSA9IDEwMC1ncmFkaWVudEVuZFBvaW50Qi55OwoKICAgICAgICAgICAgICB9CgogICAgICAgICAgfQoKICAgICAgICAgIHRyLnggPSBNYXRoLnJvdW5kKHRyLngpOwogICAgICAgICAgdHIueSA9IE1hdGgucm91bmQodHIueSk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9LAoKICAgICAgdHJhbnNmb3JtID0gZnVuY3Rpb24odHIsIGMsIHgsIGEpIHsKICAgICAgCiAgICAgICAgdmFyIGYgPSBbJzAnLCAnYXV0byddLCBtdlcgPSAod2lkdGgtaCkqeFswXS8xMDAsIG12SCA9IChoZWlnaHQtaCkqeFsxXS8xMDAsCiAgICAgICAgICBjc3NBID0ge2xlZnQ6IGZbY1swXV0sIHRvcDogZltjWzFdXSwgcmlnaHQ6IGZbY1syXV0sIGJvdHRvbTogZltjWzNdXX0sCiAgICAgICAgICBjc3NCID0ge30sCiAgICAgICAgICBhbGlhc2luZ0ZrID0gKGEhPTkwICYmIGEhPS05MCkgPyAobGVmdCA/IC0xIDogMSkgOiAwLAogICAgICAgICAgb3JpZ2luID0geFswXSArICclICcgKyB4WzFdICsgJyUnOwoKICAgICAgICB0aGF0LmNzcyhjc3NBKS4KICAgICAgICAgIHRyYW5zZm9ybShyb3RhdGUoYSkgKyB0cmFuc2xhdGUodHIueCArIGFsaWFzaW5nRmssIHRyLnksIGFjKSwgb3JpZ2luKTsKCiAgICAgICAgZGF0YS5mcGFnZS5jc3MoY3NzQSkudHJhbnNmb3JtKAogICAgICAgICAgcm90YXRlKGEpICsKICAgICAgICAgIHRyYW5zbGF0ZSh0ci54ICsgZGYueCAtIG12LnggLSB3aWR0aCp4WzBdLzEwMCwgdHIueSArIGRmLnkgLSBtdi55IC0gaGVpZ2h0KnhbMV0vMTAwLCBhYykgKwogICAgICAgICAgcm90YXRlKCgxODAvYSAtIDIpKmEpLAogICAgICAgICAgb3JpZ2luKTsKCiAgICAgICAgZGF0YS53cmFwcGVyLnRyYW5zZm9ybSh0cmFuc2xhdGUoLXRyLnggKyBtdlctYWxpYXNpbmdGaywgLXRyLnkgKyBtdkgsIGFjKSArIHJvdGF0ZSgtYSksIG9yaWdpbik7CgogICAgICAgIGRhdGEuZndyYXBwZXIudHJhbnNmb3JtKHRyYW5zbGF0ZSgtdHIueCArIG12LnggKyBtdlcsIC10ci55ICsgbXYueSArIG12SCwgYWMpICsgcm90YXRlKC1hKSwgb3JpZ2luKTsKICAgICAgCiAgICAgICAgaWYgKHR1cm5EYXRhLm9wdHMuZ3JhZGllbnRzKSB7CgogICAgICAgICAgaWYgKHhbMF0pCiAgICAgICAgICAgIGdyYWRpZW50RW5kUG9pbnRBLnggPSAxMDAtZ3JhZGllbnRFbmRQb2ludEEueDsKCiAgICAgICAgICBpZiAoeFsxXSkKICAgICAgICAgICAgZ3JhZGllbnRFbmRQb2ludEEueSA9ICgxMDAtZ3JhZGllbnRFbmRQb2ludEEueSk7CgogICAgICAgICAgY3NzQlsnYm94LXNoYWRvdyddID0gJzAgMCAyMHB4IHJnYmEoMCwwLDAsJysoMC41KnNoYWRvd1ZhbCkrJyknOwogICAgICAgICAgZm9sZGluZy5jc3MoY3NzQik7CgogICAgICAgICAgZ3JhZGllbnQoZGF0YS5hc2hhZG93LAogICAgICAgICAgICAgIHBvaW50MkQobGVmdD8xMDA6MCwgdG9wPzA6MTAwKSwKICAgICAgICAgICAgICBwb2ludDJEKGdyYWRpZW50RW5kUG9pbnRBLngsIGdyYWRpZW50RW5kUG9pbnRBLnkpLAogICAgICAgICAgICAgIFtbZ3JhZGllbnRTdGFydFZhbCwgJ3JnYmEoMCwwLDAsMCknXSwKICAgICAgICAgICAgICBbKCgxLWdyYWRpZW50U3RhcnRWYWwpKjAuOCkrZ3JhZGllbnRTdGFydFZhbCwgJ3JnYmEoMCwwLDAsJysoMC4yKmdyYWRpZW50T3BhY2l0eSkrJyknXSwKICAgICAgICAgICAgICBbMSwgJ3JnYmEoMjU1LDI1NSwyNTUsJysoMC4yKmdyYWRpZW50T3BhY2l0eSkrJyknXV0sCiAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICBhbHBoYSk7CgogICAgICAgICAgaWYgKGZsaXBNZXRob2RzLl9iYWNrR3JhZGllbnQuY2FsbCh0aGF0KSkKICAgICAgICAgICAgZ3JhZGllbnQoZGF0YS5ic2hhZG93LAogICAgICAgICAgICAgICAgcG9pbnQyRChsZWZ0PzA6MTAwLCB0b3A/MDoxMDApLAogICAgICAgICAgICAgICAgcG9pbnQyRChncmFkaWVudEVuZFBvaW50Qi54LCBncmFkaWVudEVuZFBvaW50Qi55KSwKICAgICAgICAgICAgICAgIFtbMC42LCAncmdiYSgwLDAsMCwwKSddLAogICAgICAgICAgICAgICAgWzAuOCwgJ3JnYmEoMCwwLDAsJysoMC4zKmdyYWRpZW50T3BhY2l0eSkrJyknXSwKICAgICAgICAgICAgICAgIFsxLCAncmdiYSgwLDAsMCwwKSddCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgMyk7CiAgICAgICAgfQoKICAgICAgfTsKCiAgICAgIHN3aXRjaCAocG9pbnQuY29ybmVyKSB7CiAgICAgICAgY2FzZSAnbCcgOgoKCiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAncicgOgoKCiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndGwnIDoKICAgICAgICAgIHBvaW50LnggPSBNYXRoLm1heChwb2ludC54LCAxKTsKICAgICAgICAgIGNvbXB1dGUoKTsKICAgICAgICAgIHRyYW5zZm9ybSh0ciwgWzEsMCwwLDFdLCBbMTAwLCAwXSwgYSk7CiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndHInIDoKICAgICAgICAgIHBvaW50LnggPSBNYXRoLm1pbihwb2ludC54LCB3aWR0aC0xKTsKICAgICAgICAgIGNvbXB1dGUoKTsKICAgICAgICAgIHRyYW5zZm9ybShwb2ludDJEKC10ci54LCB0ci55KSwgWzAsMCwwLDFdLCBbMCwgMF0sIC1hKTsKICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdibCcgOgogICAgICAgICAgcG9pbnQueCA9IE1hdGgubWF4KHBvaW50LngsIDEpOwogICAgICAgICAgY29tcHV0ZSgpOwogICAgICAgICAgdHJhbnNmb3JtKHBvaW50MkQodHIueCwgLXRyLnkpLCBbMSwxLDAsMF0sIFsxMDAsIDEwMF0sIC1hKTsKICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdicicgOgogICAgICAgICAgcG9pbnQueCA9IE1hdGgubWluKHBvaW50LngsIHdpZHRoLTEpOwogICAgICAgICAgY29tcHV0ZSgpOwogICAgICAgICAgdHJhbnNmb3JtKHBvaW50MkQoLXRyLngsIC10ci55KSwgWzAsMSwxLDBdLCBbMCwgMTAwXSwgYSk7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICBicmVhazsKICB9CgogICAgZGF0YS5wb2ludCA9IHBvaW50OwogIAogIH0sCgogIF9tb3ZlRm9sZGluZ1BhZ2U6IGZ1bmN0aW9uKG1vdmUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhKQogICAgICByZXR1cm47CgogICAgdmFyIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKSwKICAgICAgcGxhY2UgPSB0dXJuRGF0YS5wYWdlUGxhY2U7CiAgICAgIAogICAgaWYgKG1vdmUpIHsKCiAgICAgIHZhciBuZXh0UGFnZSA9IGRhdGEub3B0cy5uZXh0OwogIAogICAgICBpZiAocGxhY2VbbmV4dFBhZ2VdIT1kYXRhLm9wdHMucGFnZSkgewoKICAgICAgICBpZiAoZGF0YS5mb2xkaW5nKQogICAgICAgICAgZmxpcE1ldGhvZHMuX21vdmVGb2xkaW5nUGFnZS5jYWxsKHRoaXMsIGZhbHNlKTsKCiAgICAgICAgdmFyIGZvbGRpbmcgPSBmbGlwTWV0aG9kcy5fZm9sZGluZ1BhZ2UuY2FsbCh0aGlzKTsKICAgICAgICAKICAgICAgICBmb2xkaW5nLmFwcGVuZFRvKGRhdGEuZnBhZ2UpOwogICAgICAgIHBsYWNlW25leHRQYWdlXSA9IGRhdGEub3B0cy5wYWdlOwogICAgICAgIGRhdGEuZm9sZGluZyA9IG5leHRQYWdlOwogICAgICB9CgogICAgICB0dXJuLnR1cm4oJ3VwZGF0ZScpOwoKICAgIH0gZWxzZSB7CgogICAgICBpZiAoZGF0YS5mb2xkaW5nKSB7CgogICAgICAgIGlmICh0dXJuRGF0YS5wYWdlc1tkYXRhLmZvbGRpbmddKSB7CiAgICAgICAgIAogICAgICAgICAgLy8gSWYgd2UgaGF2ZSBmbGlwIGF2YWlsYWJsZQoKICAgICAgICAgIHZhciBmbGlwRGF0YSA9IHR1cm5EYXRhLnBhZ2VzW2RhdGEuZm9sZGluZ10uZGF0YSgpLmY7CiAgICAgICAgICAKICAgICAgICAgIHR1cm5EYXRhLnBhZ2VPYmpzW2RhdGEuZm9sZGluZ10uCiAgICAgICAgICAgIGFwcGVuZFRvKGZsaXBEYXRhLndyYXBwZXIpOwoKICAgICAgICB9IGVsc2UgaWYgKHR1cm5EYXRhLnBhZ2VXcmFwW2RhdGEuZm9sZGluZ10pIHsKICAgICAgICAgIAogICAgICAgICAgLy8gSWYgd2UgaGF2ZSB0aGUgcGFnZVdyYXBwZXIKCiAgICAgICAgICB0dXJuRGF0YS5wYWdlT2Jqc1tkYXRhLmZvbGRpbmddLgogICAgICAgICAgICBhcHBlbmRUbyh0dXJuRGF0YS5wYWdlV3JhcFtkYXRhLmZvbGRpbmddKTsKCiAgICAgICAgfQoKICAgICAgICBpZiAoZGF0YS5mb2xkaW5nIGluIHBsYWNlKSB7CiAgICAgICAgICBwbGFjZVtkYXRhLmZvbGRpbmddID0gZGF0YS5mb2xkaW5nOwogICAgICAgIH0KCiAgICAgICAgZGVsZXRlIGRhdGEuZm9sZGluZzsKCiAgICAgIH0KICAgIH0KICB9LAoKICBfc2hvd0ZvbGRlZFBhZ2U6IGZ1bmN0aW9uKGMsIGFuaW1hdGUpIHsKCiAgICB2YXIgZm9sZGluZyA9IGZsaXBNZXRob2RzLl9mb2xkaW5nUGFnZS5jYWxsKHRoaXMpLAogICAgICBkZCA9IHRoaXMuZGF0YSgpLAogICAgICBkYXRhID0gZGQuZiwKICAgICAgdmlzaWJsZSA9IGRhdGEudmlzaWJsZTsKCiAgICBpZiAoZm9sZGluZykgewoKICAgICAgaWYgKCF2aXNpYmxlIHx8ICFkYXRhLnBvaW50IHx8IGRhdGEucG9pbnQuY29ybmVyIT1jLmNvcm5lcikgewoKICAgICAgICB2YXIgY29ybmVyID0gKAogICAgICAgICAgZGF0YS5zdGF0dXM9PSdob3ZlcicgfHwKICAgICAgICAgIGRhdGEuc3RhdHVzPT0ncGVlbCcgfHwKICAgICAgICAgIGRhdGEub3B0cy50dXJuLmRhdGEoKS5tb3VzZUFjdGlvbikgPwogICAgICAgIGMuY29ybmVyIDogbnVsbDsKCiAgICAgICAgdmlzaWJsZSA9IGZhbHNlOwoKICAgICAgICBpZiAodHJpZ2dlcignc3RhcnQnLCB0aGlzLCBbZGF0YS5vcHRzLCBjb3JuZXJdKT09J3ByZXZlbnRlZCcpCiAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICB9CgogICAgICBpZiAoYW5pbWF0ZSkgewogICAgICAgIAogICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgIHBvaW50ID0gKGRhdGEucG9pbnQgJiYgZGF0YS5wb2ludC5jb3JuZXI9PWMuY29ybmVyKSA/CiAgICAgICAgICBkYXRhLnBvaW50IDogZmxpcE1ldGhvZHMuX2MuY2FsbCh0aGlzLCBjLmNvcm5lciwgMSk7CiAgICAgIAogICAgICAgIHRoaXMuYW5pbWF0ZWYoewogICAgICAgICAgZnJvbTogW3BvaW50LngsIHBvaW50LnldLAogICAgICAgICAgdG86IFtjLngsIGMueV0sCiAgICAgICAgICBkdXJhdGlvbjogNTAwLAogICAgICAgICAgZnJhbWU6IGZ1bmN0aW9uKHYpIHsKICAgICAgICAgICAgYy54ID0gTWF0aC5yb3VuZCh2WzBdKTsKICAgICAgICAgICAgYy55ID0gTWF0aC5yb3VuZCh2WzFdKTsKICAgICAgICAgICAgZmxpcE1ldGhvZHMuX2ZvbGQuY2FsbCh0aGF0LCBjKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgIH0gZWxzZSAgewoKICAgICAgICBmbGlwTWV0aG9kcy5fZm9sZC5jYWxsKHRoaXMsIGMpOwoKICAgICAgICBpZiAoZGQuZWZmZWN0ICYmICFkZC5lZmZlY3QudHVybmluZykKICAgICAgICAgIHRoaXMuYW5pbWF0ZWYoZmFsc2UpOwoKICAgICAgfQoKICAgICAgaWYgKCF2aXNpYmxlKSB7CgogICAgICAgIHN3aXRjaChkYXRhLmVmZmVjdCkgewogICAgICAgICAgY2FzZSAnaGFyZCc6CgogICAgICAgICAgICBkYXRhLnZpc2libGUgPSB0cnVlOwogICAgICAgICAgICBmbGlwTWV0aG9kcy5fbW92ZUZvbGRpbmdQYWdlLmNhbGwodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIGRhdGEuZnBhZ2Uuc2hvdygpOwogICAgICAgICAgICBpZiAoZGF0YS5vcHRzLnNoYWRvd3MpCiAgICAgICAgICAgICAgZGF0YS5ic2hhZG93LnNob3coKTsKCiAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ3NoZWV0JzoKCiAgICAgICAgICAgIGRhdGEudmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgIGRhdGEuZnBhcmVudC5zaG93KCkuZGF0YSgpLmZsaXBzKys7CiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgICAgICAgZGF0YS5md3JhcHBlci5zaG93KCk7CiAgICAgICAgICAgIGlmIChkYXRhLmJzaGFkb3cpCiAgICAgICAgICAgICAgZGF0YS5ic2hhZG93LnNob3coKTsKCiAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICB9CgogICAgICByZXR1cm4gdHJ1ZTsKCiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIGhpZGU6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybkRhdGEgPSBkYXRhLm9wdHMudHVybi5kYXRhKCksCiAgICAgIGZvbGRpbmcgPSBmbGlwTWV0aG9kcy5fZm9sZGluZ1BhZ2UuY2FsbCh0aGlzKTsKCiAgICBzd2l0Y2ggKGRhdGEuZWZmZWN0KSB7CiAgICAgIGNhc2UgJ2hhcmQnOgogICAgICAgIAogICAgICAgIGlmICh0dXJuRGF0YS5vcHRzLmdyYWRpZW50cykgewogICAgICAgICAgZGF0YS5ic2hhZG93TG9jID0gMDsKICAgICAgICAgIGRhdGEuYnNoYWRvdy5yZW1vdmUoKTsKICAgICAgICAgIGRhdGEuYXNoYWRvdy5oaWRlKCk7CiAgICAgICAgfQoKICAgICAgICBkYXRhLndyYXBwZXIudHJhbnNmb3JtKCcnKTsKICAgICAgICBkYXRhLmZwYWdlLmhpZGUoKTsKCiAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGVldCc6CgogICAgICAgIGlmICgoLS1kYXRhLmZwYXJlbnQuZGF0YSgpLmZsaXBzKT09PTApCiAgICAgICAgICBkYXRhLmZwYXJlbnQuaGlkZSgpOwoKICAgICAgICB0aGlzLmNzcyh7bGVmdDogMCwgdG9wOiAwLCByaWdodDogJ2F1dG8nLCBib3R0b206ICdhdXRvJ30pLgogICAgICAgICAgdHJhbnNmb3JtKCcnKTsKCiAgICAgICAgZGF0YS53cmFwcGVyLnRyYW5zZm9ybSgnJyk7CgogICAgICAgIGRhdGEuZndyYXBwZXIuaGlkZSgpOwoKICAgICAgICBpZiAoZGF0YS5ic2hhZG93KQogICAgICAgICAgZGF0YS5ic2hhZG93LmhpZGUoKTsKCiAgICAgICAgZm9sZGluZy50cmFuc2Zvcm0oJycpOwoKICAgICAgYnJlYWs7CiAgICB9CgogICAgICBkYXRhLnZpc2libGUgPSBmYWxzZTsKCiAgICByZXR1cm4gdGhpczsKICB9LAoKICBoaWRlRm9sZGVkUGFnZTogZnVuY3Rpb24oYW5pbWF0ZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoIWRhdGEucG9pbnQpIHJldHVybjsKCiAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgIHAxID0gZGF0YS5wb2ludCwKICAgICAgaGlkZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIGRhdGEucG9pbnQgPSBudWxsOwogICAgICAgIGRhdGEuc3RhdHVzID0gJyc7CiAgICAgICAgdGhhdC5mbGlwKCdoaWRlJyk7CiAgICAgICAgdGhhdC50cmlnZ2VyKCdlbmQnLCBbZGF0YS5vcHRzLCBmYWxzZV0pOwogICAgICB9OwoKICAgIGlmIChhbmltYXRlKSB7CgogICAgICB2YXIgcDQgPSBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsIHAxLmNvcm5lciksCiAgICAgICAgdG9wID0gKHAxLmNvcm5lci5zdWJzdHIoMCwxKT09J3QnKSwKICAgICAgICBkZWx0YSA9ICh0b3ApID8gTWF0aC5taW4oMCwgcDEueS1wNC55KS8yIDogTWF0aC5tYXgoMCwgcDEueS1wNC55KS8yLAogICAgICAgIHAyID0gcG9pbnQyRChwMS54LCBwMS55K2RlbHRhKSwKICAgICAgICBwMyA9IHBvaW50MkQocDQueCwgcDQueS1kZWx0YSk7CiAgICAKICAgICAgdGhpcy5hbmltYXRlZih7CiAgICAgICAgZnJvbTogMCwKICAgICAgICB0bzogMSwKICAgICAgICBmcmFtZTogZnVuY3Rpb24odikgewogICAgICAgICAgdmFyIG5wID0gYmV6aWVyKHAxLCBwMiwgcDMsIHA0LCB2KTsKICAgICAgICAgIHAxLnggPSBucC54OwogICAgICAgICAgcDEueSA9IG5wLnk7CiAgICAgICAgICBmbGlwTWV0aG9kcy5fZm9sZC5jYWxsKHRoYXQsIHAxKTsKICAgICAgICB9LAogICAgICAgIGNvbXBsZXRlOiBoaWRlLAogICAgICAgIGR1cmF0aW9uOiA4MDAsCiAgICAgICAgaGlkaW5nOiB0cnVlCiAgICAgIH0pOwoKICAgIH0gZWxzZSB7CgogICAgICB0aGlzLmFuaW1hdGVmKGZhbHNlKTsKICAgICAgaGlkZSgpOwoKICAgIH0KICB9LAoKICB0dXJuUGFnZTogZnVuY3Rpb24oY29ybmVyKSB7CgogICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybkRhdGEgPSBkYXRhLm9wdHMudHVybi5kYXRhKCk7CgogICAgY29ybmVyID0ge2Nvcm5lcjogKGRhdGEuY29ybmVyKSA/CiAgICAgIGRhdGEuY29ybmVyLmNvcm5lciA6CiAgICAgIGNvcm5lciB8fCBmbGlwTWV0aG9kcy5fY0FsbG93ZWQuY2FsbCh0aGlzKVswXX07CgogICAgdmFyIHAxID0gZGF0YS5wb2ludCB8fAogICAgICBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsCiAgICAgICAgY29ybmVyLmNvcm5lciwKICAgICAgICAoZGF0YS5vcHRzLnR1cm4pID8gdHVybkRhdGEub3B0cy5lbGV2YXRpb24gOiAwKSwKICAgICAgcDQgPSBmbGlwTWV0aG9kcy5fYzIuY2FsbCh0aGlzLCBjb3JuZXIuY29ybmVyKTsKCiAgICAgIHRoaXMudHJpZ2dlcignZmxpcCcpLgogICAgICAgIGFuaW1hdGVmKHsKICAgICAgICAgIGZyb206IDAsCiAgICAgICAgICB0bzogMSwKICAgICAgICAgIGZyYW1lOiBmdW5jdGlvbih2KSB7CgogICAgICAgICAgICB2YXIgbnAgPSBiZXppZXIocDEsIHAxLCBwNCwgcDQsIHYpOwogICAgICAgICAgICBjb3JuZXIueCA9IG5wLng7CiAgICAgICAgICAgIGNvcm5lci55ID0gbnAueTsKICAgICAgICAgICAgZmxpcE1ldGhvZHMuX3Nob3dGb2xkZWRQYWdlLmNhbGwodGhhdCwgY29ybmVyKTsKCiAgICAgICAgICB9LAogICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAKICAgICAgICAgICAgdGhhdC50cmlnZ2VyKCdlbmQnLCBbZGF0YS5vcHRzLCB0cnVlXSk7CgogICAgICAgICAgfSwKICAgICAgICAgIGR1cmF0aW9uOiB0dXJuRGF0YS5vcHRzLmR1cmF0aW9uLAogICAgICAgICAgdHVybmluZzogdHJ1ZQogICAgICAgIH0pOwoKICAgICAgZGF0YS5jb3JuZXIgPSBudWxsOwogIH0sCgogIG1vdmluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuICdlZmZlY3QnIGluIHRoaXMuZGF0YSgpOwogIAogIH0sCgogIGlzVHVybmluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMuZmxpcCgnbW92aW5nJykgJiYgdGhpcy5kYXRhKCkuZWZmZWN0LnR1cm5pbmc7CiAgCiAgfSwKCiAgY29ybmVyOiBmdW5jdGlvbigpIHsKICAgIAogICAgcmV0dXJuIHRoaXMuZGF0YSgpLmYuY29ybmVyOwogICAgICAKICB9LAoKICBfZXZlbnRTdGFydDogZnVuY3Rpb24oZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgdHVybiA9IGRhdGEub3B0cy50dXJuOwoKICAgIGlmICghZGF0YS5jb3JuZXIgJiYgIWRhdGEuZGlzYWJsZWQgJiYgIXRoaXMuZmxpcCgnaXNUdXJuaW5nJykgJiYKICAgICAgZGF0YS5vcHRzLnBhZ2U9PXR1cm4uZGF0YSgpLnBhZ2VQbGFjZVtkYXRhLm9wdHMucGFnZV0pCiAgICB7CgogICAgICBkYXRhLmNvcm5lciA9IGZsaXBNZXRob2RzLl9pc0lBcmVhLmNhbGwodGhpcywgZSk7CgogICAgICBpZiAoZGF0YS5jb3JuZXIgJiYgZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcykpIHsKCiAgICAgICAgdGhpcy50cmlnZ2VyKCdwcmVzc2VkJywgW2RhdGEucG9pbnRdKTsKICAgICAgICBmbGlwTWV0aG9kcy5fc2hvd0ZvbGRlZFBhZ2UuY2FsbCh0aGlzLCBkYXRhLmNvcm5lcik7CgogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgIH0gZWxzZQogICAgICAgIGRhdGEuY29ybmVyID0gbnVsbDsKCiAgICB9CgogIH0sCgogIF9ldmVudE1vdmU6IGZ1bmN0aW9uKGUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhLmRpc2FibGVkKSB7CgogICAgICBlID0gKGlzVG91Y2gpID8gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgOiBbZV07CgogICAgICBpZiAoZGF0YS5jb3JuZXIpIHsKCiAgICAgICAgdmFyIHBvcyA9IGRhdGEucGFyZW50Lm9mZnNldCgpOwogICAgICAgIGRhdGEuY29ybmVyLnggPSBlWzBdLnBhZ2VYLXBvcy5sZWZ0OwogICAgICAgIGRhdGEuY29ybmVyLnkgPSBlWzBdLnBhZ2VZLXBvcy50b3A7CiAgICAgICAgZmxpcE1ldGhvZHMuX3Nob3dGb2xkZWRQYWdlLmNhbGwodGhpcywgZGF0YS5jb3JuZXIpOwoKICAgICAgfSBlbHNlIGlmIChkYXRhLmhvdmVyICYmICF0aGlzLmRhdGEoKS5lZmZlY3QgJiYgdGhpcy5pcygnOnZpc2libGUnKSkgewoKICAgICAgICB2YXIgcG9pbnQgPSBmbGlwTWV0aG9kcy5faXNJQXJlYS5jYWxsKHRoaXMsIGVbMF0pOwoKICAgICAgICBpZiAocG9pbnQpIHsKCiAgICAgICAgICBpZiAoKGRhdGEuZWZmZWN0PT0nc2hlZXQnICYmIHBvaW50LmNvcm5lci5sZW5ndGg9PTIpICB8fCBkYXRhLmVmZmVjdD09J2hhcmQnKSB7CiAgICAgICAgICAgIGRhdGEuc3RhdHVzID0gJ2hvdmVyJzsKICAgICAgICAgICAgdmFyIG9yaWdpbiA9IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgcG9pbnQuY29ybmVyLCBkYXRhLm9wdHMuY29ybmVyU2l6ZS8yKTsKICAgICAgICAgICAgcG9pbnQueCA9IG9yaWdpbi54OwogICAgICAgICAgICBwb2ludC55ID0gb3JpZ2luLnk7CiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoaXMsIHBvaW50LCB0cnVlKTsKICAgICAgICAgIH0KICAgICAgICAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgCiAgICAgICAgICBpZiAoZGF0YS5zdGF0dXM9PSdob3ZlcicpIHsKICAgICAgICAgICAgZGF0YS5zdGF0dXMgPSAnJzsKICAgICAgICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgfQoKICAgIH0KCiAgfSwKCiAgX2V2ZW50RW5kOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIGNvcm5lciA9IGRhdGEuY29ybmVyOwoKICAgIGlmICghZGF0YS5kaXNhYmxlZCAmJiBjb3JuZXIpIHsKICAgICAgaWYgKHRyaWdnZXIoJ3JlbGVhc2VkJywgdGhpcywgW2RhdGEucG9pbnQgfHwgY29ybmVyXSkhPSdwcmV2ZW50ZWQnKSB7CiAgICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgfQogICAgfQoKICAgIGRhdGEuY29ybmVyID0gbnVsbDsKCiAgfSwKCiAgZGlzYWJsZTogZnVuY3Rpb24oZGlzYWJsZSkgewoKICAgIGZsaXBNZXRob2RzLnNldERhdGEuY2FsbCh0aGlzLCB7J2Rpc2FibGVkJzogZGlzYWJsZX0pOwogICAgcmV0dXJuIHRoaXM7CgogIH0sCgogIGhvdmVyOiBmdW5jdGlvbihob3ZlcikgewogICAgCiAgICBmbGlwTWV0aG9kcy5zZXREYXRhLmNhbGwodGhpcywgeydob3Zlcic6IGhvdmVyfSk7CiAgICByZXR1cm4gdGhpczsKCiAgfSwKCiAgcGVlbDogZnVuY3Rpb24gKGNvcm5lciwgYW5pbWF0ZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoY29ybmVyKSB7CgogICAgICBpZiAoJC5pbkFycmF5KGNvcm5lciwgY29ybmVycy5hbGwpPT0tMSkKICAgICAgICB0aHJvdyB0dXJuRXJyb3IoJ0Nvcm5lciAnK2Nvcm5lcisnIGlzIG5vdCBwZXJtaXR0ZWQnKTsKCiAgICAgIGlmICgkLmluQXJyYXkoY29ybmVyLCBmbGlwTWV0aG9kcy5fY0FsbG93ZWQuY2FsbCh0aGlzKSkhPS0xKSB7CgogICAgICAgIHZhciBwb2ludCA9IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgY29ybmVyLCBkYXRhLm9wdHMuY29ybmVyU2l6ZS8yKTsKICAgICAgICAKICAgICAgICBkYXRhLnN0YXR1cyA9ICdwZWVsJzsKCiAgICAgICAgZmxpcE1ldGhvZHMuX3Nob3dGb2xkZWRQYWdlLmNhbGwodGhpcywKICAgICAgICB7CiAgICAgICAgICBjb3JuZXI6IGNvcm5lciwKICAgICAgICAgIHg6IHBvaW50LngsCiAgICAgICAgICB5OiBwb2ludC55CiAgICAgICAgfSwgYW5pbWF0ZSk7CgogICAgICB9CgoKICAgIH0gZWxzZSB7CgogICAgICBkYXRhLnN0YXR1cyA9ICcnOwoKICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCBhbmltYXRlKTsKICAgICAgCiAgICB9CgogICAgcmV0dXJuIHRoaXM7CiAgfQp9OwoKCi8vIFByb2Nlc3NlcyBjbGFzc2VzCgpmdW5jdGlvbiBkZWModGhhdCwgbWV0aG9kcywgYXJncykgewoKICBpZiAoIWFyZ3NbMF0gfHwgdHlwZW9mKGFyZ3NbMF0pPT0nb2JqZWN0JykKICAgIHJldHVybiBtZXRob2RzLmluaXQuYXBwbHkodGhhdCwgYXJncyk7CgogIGVsc2UgaWYgKG1ldGhvZHNbYXJnc1swXV0pCiAgICByZXR1cm4gbWV0aG9kc1thcmdzWzBdXS5hcHBseSh0aGF0LCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzLCAxKSk7CgogIGVsc2UKICAgIHRocm93IHR1cm5FcnJvcihhcmdzWzBdICsgJyBpcyBub3QgYSBtZXRob2Qgb3IgcHJvcGVydHknKTsKCn0KCgovLyBBdHRyaWJ1dGVzIGZvciBhIGxheWVyCgpmdW5jdGlvbiBkaXZBdHQodG9wLCBsZWZ0LCB6SW5kZXgsIG92ZXJmKSB7CiAgICAKICByZXR1cm4geydjc3MnOiB7CiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJywKICAgIHRvcDogdG9wLAogICAgbGVmdDogbGVmdCwKICAgICdvdmVyZmxvdyc6IG92ZXJmIHx8ICdoaWRkZW4nLAogICAgekluZGV4OiB6SW5kZXggfHwgJ2F1dG8nCiAgfQp9OwogICAgICAKfQoKLy8gR2V0cyBhIDJEIHBvaW50IGZyb20gYSBiZXppZXIgY3VydmUgb2YgZm91ciBwb2ludHMKCmZ1bmN0aW9uIGJlemllcihwMSwgcDIsIHAzLCBwNCwgdCkgewoKICB2YXIgYSA9IDEgLSB0LAogICAgYiA9IGEgKiBhICogYSwKICAgIGMgPSB0ICogdCAqIHQ7CiAgICAKICByZXR1cm4gcG9pbnQyRChNYXRoLnJvdW5kKGIqcDEueCArIDMqdCphKmEqcDIueCArIDMqdCp0KmEqcDMueCArIGMqcDQueCksCiAgICBNYXRoLnJvdW5kKGIqcDEueSArIDMqdCphKmEqcDIueSArIDMqdCp0KmEqcDMueSArIGMqcDQueSkpOwoKfQogIAovLyBDb252ZXJ0cyBhbiBhbmdsZSBmcm9tIGRlZ3JlZXMgdG8gcmFkaWFucwoKZnVuY3Rpb24gcmFkKGRlZ3JlZXMpIHsKICAKICByZXR1cm4gZGVncmVlcy8xODAqUEk7Cgp9CgovLyBDb252ZXJ0cyBhbiBhbmdsZSBmcm9tIHJhZGlhbnMgdG8gZGVncmVlcwoKZnVuY3Rpb24gZGVnKHJhZGlhbnMpIHsKICAKICByZXR1cm4gcmFkaWFucy9QSSoxODA7Cgp9CgovLyBHZXRzIGEgMkQgcG9pbnQKCmZ1bmN0aW9uIHBvaW50MkQoeCwgeSkgewogIAogIHJldHVybiB7eDogeCwgeTogeX07Cgp9CgovLyBXZWJraXQgNTM0LjMgb24gQW5kcm9pZCB3cm9uZ2x5IHJlcGFpbnRzIGVsZW1lbnRzIHRoYXQgdXNlIG92ZXJmbG93OmhpZGRlbiArIHJvdGF0aW9uCgpmdW5jdGlvbiByb3RhdGlvbkF2YWlsYWJsZSgpIHsKICB2YXIgcGFydHM7CgogIGlmICgocGFydHMgPSAvQXBwbGVXZWJraXRcLyhbMC05XC5dKykvaS5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpKSkgewogICAgdmFyIHdlYmtpdFZlcnNpb24gPSBwYXJzZUZsb2F0KHBhcnRzWzFdKTsKICAgIHJldHVybiAod2Via2l0VmVyc2lvbj41MzQuMyk7CiAgfSBlbHNlIHsKICAgIHJldHVybiB0cnVlOwogIH0KfQoKLy8gUmV0dXJucyB0aGUgdHJhc2xhdGUgdmFsdWUKCmZ1bmN0aW9uIHRyYW5zbGF0ZSh4LCB5LCB1c2UzZCkgewogIAogIHJldHVybiAoaGFzM2QgJiYgdXNlM2QpID8gJyB0cmFuc2xhdGUzZCgnICsgeCArICdweCwnICsgeSArICdweCwgMHB4KSAnCiAgOiAnIHRyYW5zbGF0ZSgnICsgeCArICdweCwgJyArIHkgKyAncHgpICc7Cgp9CgovLyBSZXR1cm5zIHRoZSByb3RhdGlvbiB2YWx1ZQoKZnVuY3Rpb24gcm90YXRlKGRlZ3JlZXMpIHsKICAKICByZXR1cm4gJyByb3RhdGUoJyArIGRlZ3JlZXMgKyAnZGVnKSAnOwoKfQoKLy8gQ2hlY2tzIGlmIGEgcHJvcGVydHkgYmVsb25ncyB0byBhbiBvYmplY3QKCmZ1bmN0aW9uIGhhcyhwcm9wZXJ0eSwgb2JqZWN0KSB7CiAgCiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsKCn0KCi8vIEdldHMgdGhlIENTUzMgdmVuZG9yIHByZWZpeAoKZnVuY3Rpb24gZ2V0UHJlZml4KCkgewoKICB2YXIgdmVuZG9yUHJlZml4ZXMgPSBbJ01veicsJ1dlYmtpdCcsJ0todG1sJywnTycsJ21zJ10sCiAgbGVuID0gdmVuZG9yUHJlZml4ZXMubGVuZ3RoLAogIHZlbmRvciA9ICcnOwoKICB3aGlsZSAobGVuLS0pCiAgICBpZiAoKHZlbmRvclByZWZpeGVzW2xlbl0gKyAnVHJhbnNmb3JtJykgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSkKICAgICAgdmVuZG9yPSctJyt2ZW5kb3JQcmVmaXhlc1tsZW5dLnRvTG93ZXJDYXNlKCkrJy0nOwoKICByZXR1cm4gdmVuZG9yOwoKfQoKLy8gRGV0ZWN0cyB0aGUgdHJhbnNpdGlvbkVuZCBFdmVudAoKZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbkVuZCgpIHsKCiAgdmFyIHQsCiAgICBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zha2VlbGVtZW50JyksCiAgICB0cmFuc2l0aW9ucyA9IHsKICAgICAgJ3RyYW5zaXRpb24nOid0cmFuc2l0aW9uZW5kJywKICAgICAgJ09UcmFuc2l0aW9uJzonb1RyYW5zaXRpb25FbmQnLAogICAgICAnTVNUcmFuc2l0aW9uJzondHJhbnNpdGlvbmVuZCcsCiAgICAgICdNb3pUcmFuc2l0aW9uJzondHJhbnNpdGlvbmVuZCcsCiAgICAgICdXZWJraXRUcmFuc2l0aW9uJzond2Via2l0VHJhbnNpdGlvbkVuZCcKICAgIH07CgogIGZvciAodCBpbiB0cmFuc2l0aW9ucykgewogICAgaWYgKGVsLnN0eWxlW3RdICE9PSB1bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIHRyYW5zaXRpb25zW3RdOwogICAgfQogIH0KfQoKLy8gR3JhZGllbnRzCgpmdW5jdGlvbiBncmFkaWVudChvYmosIHAwLCBwMSwgY29sb3JzLCBudW1Db2xvcnMpIHsKCiAgdmFyIGosIGNvbHMgPSBbXTsKCiAgaWYgKHZlbmRvcj09Jy13ZWJraXQtJykgewoKICAgIGZvciAoaiA9IDA7IGo8bnVtQ29sb3JzOyBqKyspCiAgICAgIGNvbHMucHVzaCgnY29sb3Itc3RvcCgnK2NvbG9yc1tqXVswXSsnLCAnK2NvbG9yc1tqXVsxXSsnKScpOwogICAgCiAgICBvYmouY3NzKHsnYmFja2dyb3VuZC1pbWFnZSc6CiAgICAgICAgJy13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAnKwogICAgICAgIHAwLngrJyUgJysKICAgICAgICBwMC55KyclLCcrCiAgICAgICAgcDEueCsnJSAnKwogICAgICAgIHAxLnkrJyUsICcrCiAgICAgICAgY29scy5qb2luKCcsJykgKyAnICknfSk7CiAgfSBlbHNlIHsKICAgIAogICAgcDAgPSB7eDpwMC54LzEwMCAqIG9iai53aWR0aCgpLCB5OnAwLnkvMTAwICogb2JqLmhlaWdodCgpfTsKICAgIHAxID0ge3g6cDEueC8xMDAgKiBvYmoud2lkdGgoKSwgeTpwMS55LzEwMCAqIG9iai5oZWlnaHQoKX07CgogICAgdmFyIGR4ID0gcDEueC1wMC54LAogICAgICBkeSA9IHAxLnktcDAueSwKICAgICAgYW5nbGUgPSBNYXRoLmF0YW4yKGR5LCBkeCksCiAgICAgIGFuZ2xlMiA9IGFuZ2xlIC0gTWF0aC5QSS8yLAogICAgICBkaWFnb25hbCA9IE1hdGguYWJzKG9iai53aWR0aCgpKk1hdGguc2luKGFuZ2xlMikpK01hdGguYWJzKG9iai5oZWlnaHQoKSpNYXRoLmNvcyhhbmdsZTIpKSwKICAgICAgZ3JhZGllbnREaWFnb25hbCA9IE1hdGguc3FydChkeSpkeSArIGR4KmR4KSwKICAgICAgY29ybmVyID0gcG9pbnQyRCgocDEueDxwMC54KSA/IG9iai53aWR0aCgpIDogMCwgKHAxLnk8cDAueSkgPyBvYmouaGVpZ2h0KCkgOiAwKSwKICAgICAgc2xvcGUgPSBNYXRoLnRhbihhbmdsZSksCiAgICAgIGludmVyc2UgPSAtMS9zbG9wZSwKICAgICAgeCA9IChpbnZlcnNlKmNvcm5lci54IC0gY29ybmVyLnkgLSBzbG9wZSpwMC54ICsgcDAueSkvKGludmVyc2Utc2xvcGUpLAogICAgICBjID0ge3g6IHgsIHk6IGludmVyc2UqeCAtIGludmVyc2UqY29ybmVyLnggKyBjb3JuZXIueX0sCiAgICAgIHNlZ0EgPSAoTWF0aC5zcXJ0KCBNYXRoLnBvdyhjLngtcDAueCwyKSArIE1hdGgucG93KGMueS1wMC55LDIpKSk7CgogICAgICBmb3IgKGogPSAwOyBqPG51bUNvbG9yczsgaisrKQogICAgICAgIGNvbHMucHVzaCgnICcrY29sb3JzW2pdWzFdKycgJysoKHNlZ0EgKyBncmFkaWVudERpYWdvbmFsKmNvbG9yc1tqXVswXSkqMTAwL2RpYWdvbmFsKSsnJScpOwoKICAgICAgb2JqLmNzcyh7J2JhY2tncm91bmQtaW1hZ2UnOiB2ZW5kb3IrJ2xpbmVhci1ncmFkaWVudCgnICsgKC1hbmdsZSkgKyAncmFkLCcgKyBjb2xzLmpvaW4oJywnKSArICcpJ30pOwogIH0KfQoKCi8vIFRyaWdnZXJzIGFuIGV2ZW50CgpmdW5jdGlvbiB0cmlnZ2VyKGV2ZW50TmFtZSwgY29udGV4dCwgYXJncykgewoKICB2YXIgZXZlbnQgPSAkLkV2ZW50KGV2ZW50TmFtZSk7CiAgY29udGV4dC50cmlnZ2VyKGV2ZW50LCBhcmdzKTsKICBpZiAoZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpCiAgICByZXR1cm4gJ3ByZXZlbnRlZCc7CiAgZWxzZSBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkKICAgIHJldHVybiAnc3RvcHBlZCc7CiAgZWxzZQogICAgcmV0dXJuICcnOwp9CgovLyBKUyBFcnJvcnMKCmZ1bmN0aW9uIHR1cm5FcnJvcihtZXNzYWdlKSB7CgogIGZ1bmN0aW9uIFR1cm5Kc0Vycm9yKG1lc3NhZ2UpIHsKICAgIHRoaXMubmFtZSA9ICJUdXJuSnNFcnJvciI7CiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOwogIH0KCiAgVHVybkpzRXJyb3IucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgVHVybkpzRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVHVybkpzRXJyb3I7CiAgcmV0dXJuIG5ldyBUdXJuSnNFcnJvcihtZXNzYWdlKTsKCn0KCi8vIEZpbmQgdGhlIG9mZnNldCBvZiBhbiBlbGVtZW50IGlnbm9yaW5nIGl0cyB0cmFuc2Zvcm1hdGlvbgoKZnVuY3Rpb24gZmluZFBvcyhvYmopIHsKCiAgdmFyIG9mZnNldCA9IHt0b3A6IDAsIGxlZnQ6IDB9OwoKICBkb3sKICAgIG9mZnNldC5sZWZ0ICs9IG9iai5vZmZzZXRMZWZ0OwogICAgb2Zmc2V0LnRvcCArPSBvYmoub2Zmc2V0VG9wOwogIH0gd2hpbGUgKChvYmogPSBvYmoub2Zmc2V0UGFyZW50KSk7CgogIHJldHVybiBvZmZzZXQ7Cgp9CgovLyBDaGVja3MgaWYgdGhlcmUncyBoYXJkIHBhZ2UgY29tcGF0aWJpbGl0eQovLyBJRTkgaXMgdGhlIG9ubHkgYnJvd3NlciB0aGF0IGRvZXMgbm90IHN1cHBvcnQgaGFyZCBwYWdlcwoKZnVuY3Rpb24gaGFzSGFyZFBhZ2UoKSB7CiAgcmV0dXJuIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ01TSUUgOS4wJyk9PS0xKTsKfQoKLy8gUmVxdWVzdCBhbiBhbmltYXRpb24KCndpbmRvdy5yZXF1ZXN0QW5pbSA9IChmdW5jdGlvbigpIHsKICByZXR1cm4gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgd2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgd2luZG93Lm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwKICAgIHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIDEwMDAgLyA2MCk7CiAgICB9OwoKfSkoKTsKCi8vIEV4dGVuZCAkLmZuCgokLmV4dGVuZCgkLmZuLCB7CgogIGZsaXA6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIGRlYygkKHRoaXNbMF0pLCBmbGlwTWV0aG9kcywgYXJndW1lbnRzKTsKICB9LAoKICB0dXJuOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBkZWMoJCh0aGlzWzBdKSwgdHVybk1ldGhvZHMsIGFyZ3VtZW50cyk7CiAgfSwKCiAgdHJhbnNmb3JtOiBmdW5jdGlvbih0cmFuc2Zvcm0sIG9yaWdpbikgewoKICAgIHZhciBwcm9wZXJ0aWVzID0ge307CiAgICAKICAgIGlmIChvcmlnaW4pCiAgICAgIHByb3BlcnRpZXNbdmVuZG9yKyd0cmFuc2Zvcm0tb3JpZ2luJ10gPSBvcmlnaW47CiAgICAKICAgIHByb3BlcnRpZXNbdmVuZG9yKyd0cmFuc2Zvcm0nXSA9IHRyYW5zZm9ybTsKICAKICAgIHJldHVybiB0aGlzLmNzcyhwcm9wZXJ0aWVzKTsKCiAgfSwKCiAgYW5pbWF0ZWY6IGZ1bmN0aW9uKHBvaW50KSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoZGF0YS5lZmZlY3QpCiAgICAgIGRhdGEuZWZmZWN0LnN0b3AoKTsKCiAgICBpZiAocG9pbnQpIHsKCiAgICAgIGlmICghcG9pbnQudG8ubGVuZ3RoKSBwb2ludC50byA9IFtwb2ludC50b107CiAgICAgIGlmICghcG9pbnQuZnJvbS5sZW5ndGgpIHBvaW50LmZyb20gPSBbcG9pbnQuZnJvbV07CgogICAgICB2YXIgZGlmZiA9IFtdLAogICAgICAgIGxlbiA9IHBvaW50LnRvLmxlbmd0aCwKICAgICAgICBhbmltYXRpbmcgPSB0cnVlLAogICAgICAgIHRoYXQgPSB0aGlzLAogICAgICAgIHRpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpLAogICAgICAgIGZyYW1lID0gZnVuY3Rpb24oKSB7CgogICAgICAgICAgaWYgKCFkYXRhLmVmZmVjdCB8fCAhYW5pbWF0aW5nKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgICAgdmFyIHYgPSBbXSwKICAgICAgICAgICAgdGltZURpZmYgPSBNYXRoLm1pbihwb2ludC5kdXJhdGlvbiwgKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAtIHRpbWUpOwoKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspCiAgICAgICAgICAgIHYucHVzaChkYXRhLmVmZmVjdC5lYXNpbmcoMSwgdGltZURpZmYsIHBvaW50LmZyb21baV0sIGRpZmZbaV0sIHBvaW50LmR1cmF0aW9uKSk7CgogICAgICAgICAgcG9pbnQuZnJhbWUoKGxlbj09MSkgPyB2WzBdIDogdik7CgogICAgICAgICAgaWYgKHRpbWVEaWZmPT1wb2ludC5kdXJhdGlvbikgewogICAgICAgICAgICBkZWxldGUgZGF0YVsnZWZmZWN0J107CiAgICAgICAgICAgIHRoYXQuZGF0YShkYXRhKTsKICAgICAgICAgICAgaWYgKHBvaW50LmNvbXBsZXRlKQogICAgICAgICAgICAgIHBvaW50LmNvbXBsZXRlKCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW0oZnJhbWUpOwogICAgICAgICAgfQogICAgICAgIH07CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKQogICAgICAgIGRpZmYucHVzaChwb2ludC50b1tpXSAtIHBvaW50LmZyb21baV0pOwoKICAgICAgZGF0YS5lZmZlY3QgPSAkLmV4dGVuZCh7CiAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICBhbmltYXRpbmcgPSBmYWxzZTsKICAgICAgICB9LAogICAgICAgIGVhc2luZzogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGRhdGEpIHsKICAgICAgICAgIHJldHVybiBjICogTWF0aC5zcXJ0KDEgLSAodD10L2RhdGEtMSkqdCkgKyBiOwogICAgICAgIH0KICAgICAgfSwgcG9pbnQpOwoKICAgICAgdGhpcy5kYXRhKGRhdGEpOwoKICAgICAgZnJhbWUoKTsKCiAgICB9IGVsc2UgewogICAgICAKICAgICAgZGVsZXRlIGRhdGFbJ2VmZmVjdCddOwoKICAgIH0KICB9Cn0pOwoKLy8gRXhwb3J0IHNvbWUgZ2xvYmFscwoKJC5pc1RvdWNoID0gaXNUb3VjaDsKJC5tb3VzZUV2ZW50cyA9IG1vdXNlRXZlbnRzOwokLmNzc1ByZWZpeCA9IGdldFByZWZpeDsKJC5jc3NUcmFuc2l0aW9uRW5kID0gZ2V0VHJhbnNpdGlvbkVuZDsKJC5maW5kUG9zID0gZmluZFBvczsKCn0pKGpRdWVyeSk7Cg=='],
//	complete: loadApp
	complete: fbload
});

	</script id=script_fbload>



<!--
	<script id=script_loadfile>
		function loadfile() {
			var xhttp = new XMLHttpRequest();
			xhttp.onreadystatechange = function() {
				if (this.readyState == 4 && this.status == 200) {
					document.getElementById("loadfile").innerHTML =
					this.responseText;
					}
				};
			xhttp.open("GET", "index_fb_mag.psv", true);
			xhttp.send();
			}
		</script id=script_loadfile_end>
	-->


<!--
	<script id=script_ajaxrequest> 
		function ajaxRequest(){
			var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; //activeX versions to check for in IE
			if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
				for (var i=0; i<activexmodes.length; i++){
					try{
						return new ActiveXObject(activexmodes[i]);
						}
					catch(e){
//suppress error
						}
					}
				}
			else if (window.XMLHttpRequest) // if Mozilla, Safari etc
				return new XMLHttpRequest();
			else
				return false;
				}
 
	function ajaxpost(){
		var mypostrequest=new ajaxRequest();
		mypostrequest.onreadystatechange=function(){
			if (mypostrequest.readyState==4){
				if (mypostrequest.status==200 || window.location.href.indexOf("http")==-1){
					document.getElementById("result").innerHTML = mypostrequest.responseText;
					}
				else{
					alert("An error has occured making the request");
					}
				}
			}
    
		var userId = encodeURIComponent(document.getElementById("userId").value);
		var password = encodeURIComponent(document.getElementById("password").value);
		var parameters="userId="+userId+"&password="+password;
		mypostrequest.open("POST", "http://localhost:8080/AjaxTest/Login", true);
		mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		mypostrequest.send(parameters);
		}
		</script id=script_ajaxrequest_end> 
	-->
 


<!--
	<form method="get" action="">
        <table>
            <tr>
                <td>User Id:</td>
                <td><input type="text" id="userId" name="userId" size="30" />
                </td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><input type="password" id="password" name="password"
                    size="30" />
                </td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td><input type="button" value="submit" onClick="ajaxpost()" />
                </td>
            </tr>
		</table>
		</form>
 
	<div id="result"></div>
	-->

	<script id=script_gethint_ajax>
		function showHint(str) {
			if (str.length == 0) {
				document.getElementById("txtHint").innerHTML = "";
				return;
				} 
			else {
				var xmlhttp = new XMLHttpRequest();
				xmlhttp.onreadystatechange = function() {
					if (this.readyState == 4 && this.status == 200) {
						document.getElementById("txtHint").innerHTML = this.responseText;
						}
					};
				xmlhttp.open("GET", "gethint.php?q=" + str, true);
				xmlhttp.send();
				}
			}
		</script id=script_gethint_ajax_end>

	<script id=script_ajaxjs>
		function js_ajax() {
			$(document).ready(function() {
				$.ajax({
					url: 'idx.php',
					type: 'get',
					dataType: 'JSON',
					success: function(response) {
						var len = response.length;
						for(var i=0; i<len; i++) {
							var id = response[i].id;
							var username = response[i].username;
							var name = response[i].name;
							var email = response[i].email;
		
							var tr_str = "<tr>" +
							"<td align='center'>" + (i+1) + "</td>" +
							"<td align='center'>" + username + "</td>" +
							"<td align='center'>" + name + "</td>" +
							"<td align='center'>" + email + "</td>" +
							"</tr>";
							$("#userTable tbody").append(tr_str);
							}
						}
					});
				});
			return( $ajaxjs );
			}
		</script id=script_ajaxjs_end>

<!--
		<script id=script_gethint_ajax>
			function showHint(str) {
				if (str.length == 0) {
					document.getElementById("txtHint").innerHTML = "";
					return;
					} 
				else {
					var xmlhttp = new XMLHttpRequest();
					xmlhttp.onreadystatechange = function() {
						if (this.readyState == 4 && this.status == 200) {
							document.getElementById("txtHint").innerHTML = this.responseText;
							}
						};
					xmlhttp.open("POST", "idx.php?hint=" + str, true);
					xmlhttp.send();
					}
				}
			</script id=script_gethint_ajax_end>
	-->

		<br>
		<hr color=white>
		<img id=div_fbs title="          div_fbs" src=/imgs/btn/koeye.png onclick="toggle('div_fbs',''); return false;" height=20 border=0>div_fbs
		<div id=div_fbs>
			<h2>div_fbs</h1>
			</div id=div_fbs_end>

	<div id=div_startup_tests hidden>
<img src="/imgs/btn/kop1234.png" onclick="startup(''); return false;">
&nbsp &nbsp &nbsp &nbsp
<img src="/imgs/btn/kop23.png" onclick="startup('fb.txt'); return false;">
<img src="/imgs/btn/kop23.png" onclick="startup('/fb/fb.txt'); return false;">
<img src="/imgs/btn/kop23.png" onclick="startup('/fb/konet/fb.txt'); return false;">
<img src="/imgs/btn/kop23.png" onclick="startup('/fb/iperms/fb.txt'); return false;">
<img src="/imgs/btn/kop23.png" onclick="startup('/fb/ko1/fb.txt'); return false;">
<hr color=white>
<h2>div_yts<h2>
<img src="/imgs/btn/kop14.png" onclick="startup('/yt/txt/ytlist.txt'); return false;">
<img src="/imgs/btn/kop14.png" onclick="startup('/yt/txt/ytlist_20200401.txt'); return false;">
<img src="/imgs/btn/kop14.png" onclick="startup('/yt/txt/ytlist_20200402.txt'); return false;">
<img src="/imgs/btn/kop12.png" onclick="startup('/yt/txt/ytlist_20200403.txt'); return false;">
<hr color=white>
<h2>div_notes</h2>
<img src="/imgs/btn/kop14.png" onclick="startup('notfound.txt'); return false;">
<img src="/imgs/btn/kop14.png" onclick="startup('notes.txt'); return false;">
<img src="/imgs/btn/kop14.png" onclick="startup('find_jtfdcr_mp4.txt'); return false;">
<img src="/imgs/btn/kop1.png" onclick="startup('notfound.txt'); return false;">
<img src="/imgs/btn/kop4.png" onclick="startup('notfound.txt'); return false;">
	</div id=div_startup_tests_end >
<hr color=white>
<hr color=black>



	<img id=div_kojax title="          div_kojax" src=/imgs/btn/koeyeb.png onclick="toggle('div_kojax',''); return false;" height=20 border=0>div_kojax
	<div id=div_kojax hidden>
		<h2>div_kojax<h2>
		<button onclick="jax('/lists_items.txt');" >lists_items.txt</button>
		<button onclick="jax('/lists_contacts.txt');" >lists_contacts.txt</button>
		<button onclick="jax('/lists_letter.txt');" >lists_letter.txt</button>
		<button onclick="jax('/lists_postturtles.txt');" >lists_postturtles.txt</button>
		<button onclick="jax('/lists_monkeytraps.txt');" >lists_monkeytraps.txt</button>
		<button onclick="jax('/lists_floods.txt');" >lists_floods.txt</button>
		<button onclick="jax('/lists_coffee.txt');" >lists_coffee.txt</button>
		<button onclick="jax('/lists_leds.txt');" >lists_leds.txt</button>
		<hr color=white>
		<button onclick="jax('/ko.php?lists=items');" >ko.php?lists=items</button>
		<button onclick="jax('/ko.php?lists=contacts');" >ko.php?lists=contacts</button>
		<button onclick="jax('/ko.php?lists=letter');" >ko.php?lists=letter</button>
		<button onclick="jax('/ko.php?lists=postturtles');" >ko.php?lists=postturtles</button>
		<button onclick="jax('/ko.php?lists=monkeytraps');" >ko.php?lists=monkeytraps</button>
		<button onclick="jax('/ko.php?lists=floods');" >ko.php?lists=floods</button>
		<button onclick="jax('/ko.php?lists=coffee');" >ko.php?lists=coffee</button>
		<br>
		<hr color=white>
		<div id=div_jax> <h1>div_jax</h1> </div id=div_jax_end>
		<br>
		<hr color=white>
		</div id=div_kojax_end>

		<script id=script_kojax>
			var default_jaxurl = "jax.html";
			var jaxurl = default_jaxurl;
//			alert( "BUGS_5120 jax default_jaxurl="+default_jaxurl );
//			alert( "BUGS_5120 jax jaxurl="+jaxurl );
			function jax(jaxurl,divid) {
				$.ajax({
					url: jaxurl,
					context: document.body,
					success: function(responseText) {
						alert( "BUGS_5141 jax responseText="+responseText );
						$("#div_jax").html(responseText);
						if( divid != "" ) {
							$("#".divid).html(responseText);
							if( document.Get.ElementById('divid')) {
								document.Get.ElementById('divid').innerHTML=responseText;
								}
							}
						$("#div_jax").find("script").each(function(i) {
						eval($(this).text());
						alert( "BUGS_5142 jax responseText="+responseText );
						return(responseText);
						});
					}
				});
			};
		</script id=script_kojax_end>
	<br>
	<hr color=white>
	<hr color=white>
	</body>
	</html>
		</div id=div_view_end>
			</div id=div_fb_end>
		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_dd title="          div_dd" src=/imgs/btn/koeye.png onclick="toggle('div_dd',''); return false;" height=20 border=0>div_dd
		<div id=div_dd hidden>
			<h1>div_dd</h1>
			</div id=div_dd>
		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_tl title="          div_tl" src=/imgs/btn/koeye.png onclick="toggle('div_tl',''); return false;" height=20 border=0>div_tl
		<div id=div_tl hidden>
			<h1>div_tl</h1>
			</div id=div_tl>
		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_zm title="          div_zm" src=/imgs/btn/koeye.png onclick="toggle('div_zm',''); return false;" height=20 border=0>div_zm
		<div id=div_zm hidden>
			<h1>div_zm</h1>
			</div id=div_zm>
		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_pn title="          div_pn" src=/imgs/btn/koeye.png onclick="toggle('div_pn',''); return false;" height=20 border=0>div_pn
		<div id=div_pn hidden>
			<h1>div_pn</h1>
			</div id=div_pn_end>
		<br>


		</div id=div_fb_end>
	<br>
	<hr color=white>
	<hr color=black>
	<br>
		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_groups title="          div_groups" src=/imgs/btn/koeye.png onclick="toggle('div_groups',''); return false;" height=20 border=0>div_groups
		<div id=div_groups hidden>
			<h1>div_groups</h1>

		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_ka title="          div_ka" src=/imgs/btn/koeye.png onclick="toggle('div_ka',''); return false;" height=20 border=0>div_ka
		<div id=div_ka hidden>
			<h1>div_ka</h1>
			</div id=div_ka>
		<br>


		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_konet title="          div_konet" src=/imgs/btn/koeye.png onclick="toggle('div_konet',''); return false;" height=20 border=0>div_konet
		<div id=div_konet hidden>
			<h1>div_konet</h1>
			</div id=div_konet_end>
		<br>


		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_iperms title="          div_iperms" src=/imgs/btn/koeye.png onclick="toggle('div_iperms',''); return false;" height=20 border=0>div_iperms
		<div id=div_iperms hidden>
			<h1>div_iperms</h1>
			</div id=div_iperms_end>
		<br>


		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_law title="          div_law" src=/imgs/btn/koeye.png onclick="toggle('div_law',''); return false;" height=20 border=0>div_law
		<div id=div_law hidden>
			<h1>div_law</h1>
			</div id=div_law_end>
		<br>


		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_jtfdcr title="          div_jtfdcr" src=/imgs/btn/koeye.png onclick="toggle('div_jtfdcr',''); return false;" height=20 border=0>div_jtfdcr
		<div id=div_jtfdcr hidden>
			<h1>div_jtfdcr</h1>
			</div id=div_jtfdcr_end>
		<br>


		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_jtfdc title="          div_jtfdc" src=/imgs/btn/koeye.png onclick="toggle('div_jtfdc',''); return false;" height=20 border=0>div_jtfdc
		<div id=div_jtfdc hidden>
			<h1>div_jtfdc</h1>
			</div id=div_jtfdc_end>
		<br>


		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_jtfinc title="          div_jtfinc" src=/imgs/btn/koeye.png onclick="toggle('div_jtfinc',''); return false;" height=20 border=0>div_jtfinc
		<div id=div_jtfinc hidden>
			<h1>div_jtfinc</h1>
			</div id=div_jtfinc_end>
		<br>


		<br>
		<hr color=white>
		<hr color=white>
		<img id=img_med title="          div_med" src=/imgs/btn/koeye.png onclick="toggle('div_med',''); return false;" height=20 border=0>div_med
		<div id=div_med hidden>
			<h1>div_med</h1>
			</div id=div_med_end>
		<br>

		</div id=div_groups_end>


<script script_tail>
	alert( "BUGS_18800<br>\n" );
kolists['cfg']='
leds_flag="on";
leds_size="10";
';
	</script script_tail_end>

<script id=script_kogrids>
kolists['items']=`
/mgs/btn/koeye.png
/mgs/btn/koeyeb.png
/mgs/btn/koeyew.png
`;

		function kogrids(args) {
			htmout=""; j=0; k=0;
			alert( "BUGS_010 kogrids args="+args );

			htmout+="<h1>KOGRIDS</h1>\n";

			mykoeyeb=new Array();
			mykoeyew=new Array();


			rand1=random_int(0,10);
			rand2=random_int(0,10);
			rand3=random_int(0,10);
			rand4=random_int(0,10);
			randc=random_int(0,10);
			color="b";
			if( randc == 0 ) { color="w"; }

			if( rand1 == 0 ) { tn1="/imgs/kogrids/tn/tn_koeye"+color+""+rand1; }
			else { tn1="/imgs/kogrids/tn/tn_koeye"+color_"_grid.gif"; }
			if( rand2 == 0 ) { tn2="/imgs/kogrids/tn/tn_koeye"+color+""+rand2; }
			else { tn2="/imgs/kogrids/tn/tn_koeye"+color_"_grid.gif"; }
			if( rand3== 0 ) { tn3="/imgs/kogrids/tn/tn_koeye"+color+""+rand3; }
			else { tn3="/imgs/kogrids/tn/tn_koeye"+color_"_grid.gif"; }
			if( rand4 == 0 ) { tn4="/imgs/kogrids/tn/tn_koeye"+color+""+rand4; }
			else { tn4="/imgs/kogrids/tn/tn_koeye"+color_"_grid.gif"; }


//			/imgs/kogrids/tn/tn_kob_grid0.png
//			/imgs/kogrids/tn/tn_kow_grid0.png
//			/imgs/kogrids/tn/tn_koeyeb_grid0.png
//			/imgs/kogrids/tn/tn_koeyew_grid0.png



			htmout  = '\n';
			htmout += '<a href="/index.html" class="ko_thumbnail"  target=_blank>';
			htmout += '<img src="'+tn1+'" height=75 alt=kob border=0>';
//			htmout += '<span><img src="/imgs/kogrids/tn/tn_links_ko2us.png" height=400 alt="ko2.us" border=0></span>';
			htmout += '<span><img src="/imgs/kogrids/links_ko2us.png" height=400 alt="ko2.us" border=0></span>';
			htmout += '</a>';
			htmout += '&nbsp  &nbsp';
			htmout += '<a href="/ko_center/ko_center.php?q=login" class="ko_thumbnail" target=_blank>';
			htmout += '<img src="'+tn2+'" height=75 alt=koeyeb border=0>';
//			htmout += '<span><img src="/imgs/kogrids/tn/tn_links_kologin.png" height=400 alt="kolgin" border=0></span>';
			htmout += '<span><img src="/imgs/kogrids/links_kologin.png" height=400 alt="kolgin" border=0></span>';
			htmout += '</a>';
			htmout += '&nbsp  &nbsp';
			htmout += '<a href="/cfaa.html" class="ko_thumbnail" target=_blank>';
			htmout += '<img src="'+tn3+'"  height=75 alt=koeyew border=0>';
//			htmout += '<span><img src="/imgs/kogrids/tn/tn_links_cfaa.png" height=400 alt="ko2.us" border=0></span>';
			htmout += '<span><img src="/imgs/kogrids/links_cfaa.png" height=400 alt="ko2.us" border=0></span>';
			htmout += '</a>';
			htmout += '&nbsp &nbsp &nbsp';
			htmout += '<a href="https://www.bluehost.com/?utm_source=%28direct%29&utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype" class="ko_thumbnail" target=_blank>';
			htmout += '<img src="'+tn4+'" height=75 alt=kow border=0>';
//			htmout += '<span><img src="/imgs/kogrids/tn/tn_links_bluehost.png" height=400 alt="bluehost.com" border=0></span>';
			htmout += '<span><img src="/imgs/kogrids/links_bluehost.png" height=400 alt="bluehost.com" border=0></span>';
			htmout += '</a>';


			htmout += '\n';
			if( document.getElementById('div_kogrids')) {
				alert( "BUGS_11 ById div_kogrids KOGRIDS args="+args );
				document.getElementById('div_kogrids').innerHTML=htmout;
				}
			return(htmout);
			}

		function kogrids0(args) {
//			alert( "BUGS_760 POSTTURTLE BEG" );
			postturtles_monkeytraps(args);
//			alert( "BUGS_770 POSTTURTLE END" );
//			var kolist = jkload('divids').split(" ");
			var len=kolist.length;


			for ( j=0; j<len; j++ ) {
				var rand = random_int(len,1);
				var id=kolist[rand-1];
				id="id_"+j;
				if( /alloff/.test(id)) {continue;}
				if( /allon/.test(id)) {continue;}
				if( /toggle/.test(id)) {continue;}
				if( /</.test(id)) {continue;}
//				script_ko_toggle('alloff');
				var divid="div_"+id;
//				alert( "BUGS_1881 j="+j+" ko_toggle id="+id+" rand="+rand );
//				script_hideshow('fb');
//				script_hideshow('yt');
//				script_ko_toggle(divid);
//				alert( "BUGS_1882 j="+j+" hideshow id="+id+" rand="+rand );
////				script_hideshow1('allon');
				break;
				}

			var myko = new Array();
			var mykob = new Array();
			var mykow = new Array();
			var mykoeyeb = new Array();
			var mykoeyew = new Array();

mykob = `/imgs/kogrids/tn/tn_kob_grid1.png
/imgs/kogrids/tn/tn_kob_grid2.png
/imgs/kogrids/tn/tn_kob_grid3.png
/imgs/kogrids/tn/tn_kob_grid4.png
/imgs/kogrids/tn/tn_kob_grid5.png
/imgs/kogrids/tn/tn_kob_grid6.png
/imgs/kogrids/tn/tn_kob_grid7.png
/imgs/kogrids/tn/tn_kob_grid8.png
/imgs/kogrids/tn/tn_kob_grid9.png
/imgs/kogrids/tn/tn_kob_grid.gif`.split("\n");

mykow = `/imgs/kogrids/tn/tn_kow_grid1.png
/imgs/kogrids/tn/tn_kow_grid2.png
/imgs/kogrids/tn/tn_kow_grid3.png
/imgs/kogrids/tn/tn_kow_grid4.png
/imgs/kogrids/tn/tn_kow_grid5.png
/imgs/kogrids/tn/tn_kow_grid6.png
/imgs/kogrids/tn/tn_kow_grid7.png
/imgs/kogrids/tn/tn_kow_grid8.png
/imgs/kogrids/tn/tn_kow_grid9.png
/imgs/kogrids/tn/tn_kow_grip.gif`.split("\n");

mykoeyeb = `/imgs/kogrids/tn/tn_koeyeb_grid1.png
/imgs/kogrids/tn/tn_koeyeb_grid2.png
/imgs/kogrids/tn/tn_koeyeb_grid3.png
/imgs/kogrids/tn/tn_koeyeb_grid4.png
/imgs/kogrids/tn/tn_koeyeb_grid5.png
/imgs/kogrids/tn/tn_koeyeb_grid6.png
/imgs/kogrids/tn/tn_koeyeb_grid7.png
/imgs/kogrids/tn/tn_koeyeb_grid8.png
/imgs/kogrids/tn/tn_koeyeb_grid9.png
/imgs/kogrids/tn/tn_koeyeb_grid_delay5.gif`.split("\n");

mykoeyew = `/imgs/kogrids/tn/tn_koeyew_grid1.png
/imgs/kogrids/tn/tn_koeyew_grid2.png
/imgs/kogrids/tn/tn_koeyew_grid3.png
/imgs/kogrids/tn/tn_koeyew_grid4.png
/imgs/kogrids/tn/tn_koeyew_grid5.png
/imgs/kogrids/tn/tn_koeyew_grid6.png
/imgs/kogrids/tn/tn_koeyew_grid7.png
/imgs/kogrids/tn/tn_koeyew_grid8.png
/imgs/kogrids/tn/tn_koeyew_grid9.png
/imgs/kogrids/tn/tn_koeyew_grip_delay5.gif`.split("\n");

				alert( "BUGS_90 kogrids <br>\n" );	

				var ko=Math.floor(Math.random()*myko.length);
				var kob=Math.floor(Math.random()*mykob.length);
				var kow=Math.floor(Math.random()*mykow.length);
				var koeyeb=Math.floor(Math.random()*mykoeyeb.length);
				var koeyew=Math.floor(Math.random()*mykoeyew.length);
				var koeyeb1=Math.floor(Math.random()*mykoeyeb.length);
				var koeyew1=Math.floor(Math.random()*mykoeyew.length);
				var koeyeb2=Math.floor(Math.random()*mykoeyeb.length);
				var koeyew2=Math.floor(Math.random()*mykoeyew.length);

				var max=4; var min=1;
				var delay1=random_int(max,min);
				var delay2=random_int(max,min);
				var delay3=random_int(max,min);
				var delay4=random_int(max,min);

//				var random_toggle = random_int(jkload('divids').split(" ").length,1);
//				script_hideshow('alloff');
//				script_hideshow(jkload('divids').split(" ")[random_toggle-1] );

				if( delay1 = 1 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay100.gif";
				if( delay1 = 2 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay25.gif";
				if( delay1 = 3 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay50.gif";
				if( delay1 = 4 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay5.gif";
				if( delay2 = 1 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay100.gif";
				if( delay2 = 2 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay25.gif";
				if( delay2 = 3 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay50.gif";
				if( delay2 = 4 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay5.gif";

				if (ko==0) ko=10;
				if (kob==0) kob=10;
				if (kow==0) kow=10;
				if (koeyeb==0) koeyeb=10;
				if (koeyew==0) koeyew=10;
				if (koeyeb1==0) koeyeb1=10;
				if (koeyew1==0) koeyew1=10;
				if (koeyeb2==0) koeyeb2=10;
				if (koeyew2==0) koeyew2=10;

				alert( "BUGS_130 kogrids<br>\n" );

var htmout_spacer = `
<br><br><br><br>
<hr color=red>
<hr color=white>
<hr color=blue>
`;



				htmout  = '\n';
				htmout += '<a href="/index.html" class="ko_thumbnail"  target=_blank>';
				htmout += '<img src="'+mykoeyeb[koeyeb1]+'" height=75 alt=kob border=0>';
//				htmout += '<span><img src="/imgs/kogrids/tn/tn_links_ko2us.png" height=400 alt="ko2.us" border=0></span>';
				htmout += '<span><img src="/imgs/kogrids/links_ko2us.png" height=400 alt="ko2.us" border=0></span>';
				htmout += '</a>';
				htmout += '&nbsp  &nbsp';
				htmout += '<a href="/ko_center/ko_center.php?q=login" class="ko_thumbnail" target=_blank>';
				htmout += '<img src="'+mykoeyew[koeyew1]+'" height=75 alt=koeyeb border=0>';
//				htmout += '<span><img src="/imgs/kogrids/tn/tn_links_kologin.png" height=400 alt="kolgin" border=0></span>';
				htmout += '<span><img src="/imgs/kogrids/links_kologin.png" height=400 alt="kolgin" border=0></span>';
				htmout += '</a>';
				htmout += '&nbsp  &nbsp';
				htmout += '<a href="/cfaa.html" class="ko_thumbnail" target=_blank>';
				htmout += '<img src="'+mykoeyeb[koeyeb2]+'"  height=75 alt=koeyew border=0>';
//				htmout += '<span><img src="/imgs/kogrids/tn/tn_links_cfaa.png" height=400 alt="ko2.us" border=0></span>';
				htmout += '<span><img src="/imgs/kogrids/links_cfaa.png" height=400 alt="ko2.us" border=0></span>';
				htmout += '</a>';
				htmout += '&nbsp &nbsp &nbsp';
				htmout += '<a href="https://www.bluehost.com/?utm_source=%28direct%29&utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype" class="ko_thumbnail" target=_blank>';
				htmout += '<img src="'+mykoeyew[koeyew2]+'" height=75 alt=kow border=0>';
//				htmout += '<span><img src="/imgs/kogrids/tn/tn_links_bluehost.png" height=400 alt="bluehost.com" border=0></span>';
				htmout += '<span><img src="/imgs/kogrids/links_bluehost.png" height=400 alt="bluehost.com" border=0></span>';
				htmout += '</a>';
				htmout += '\n';

				htmout_kogrids=htmout;


				htmout_lever_left = "";
				htmout_lever_left += '<a href=# class="ko_popover" >\n';	
				htmout_lever_left += '	<img src=/imgs/btn/kop1.png onclick="kogrids(\'left\'); return false;" border=0>\n';
				htmout_lever_left += '	<span><img src=/imgs/btn/kop2.png onclick="kogrids(\'left\'); return false;" border=0></span>\n';
				htmout_lever_left += '	</a>\n';

				htmout_lever_right = "";
				htmout_lever_right += '<a href=# class="ko_popover" >\n';	
				htmout_lever_right += '	<img src=/imgs/btn/kop4.png onclick="kogrids(\'right\'); return false;" border=0>\n';
				htmout_lever_right += '	<span><img src=/imgs/btn/kop3.png onclick="kogrids(\'right\'); return false;" border=0></span>\n';
				htmout_lever_right += '	</a>\n';

				htmout_kogrids_head = "";
				htmout_kogrids_head += htmout_lever_left;
				htmout_kogrids_head += htmout_kogrids;
				htmout_kogrids_head += htmout_spacer;

				htmout_kogrids_body = "";
				htmout_kogrids_body += htmout_lever_left;
				htmout_kogrids_body += htmout_kogrids;
				htmout_kogrids_body += htmout_lever_right;
				htmout_kogrids_body += htmout_spacer;

				htmout_kogrids_tail = "";
				htmout_kogrids_tail += htmout_kogrids;
				htmout_kogrids_tail += htmout_lever_right;
				htmout_kogrids_tail += htmout_spacer;


				htmout_kogrids="";
				htmout_kogrids += htmout_kogrids_head;
				htmout_kogrids += htmout_kogrids_body;
				htmout_kogrids += htmout_kogrids_tail;
				alert( "BUGS_200 kogrids div_kogrids htmout_kogrids="+htmout_kogrids );
				if(document.getElementById('div_kogrids')){
					document.getElementById('div_kogrids').innerHTML=htmout_kogrids;
					}
//				document.getElementById('div_kogrids').innerHTML=htmout;
				}
			</script id=script_kogrids_end>

		<script id=script_random_int>
			function random_int(max,min) {
				min = Math.ceil(min);
				max = Math.floor(max);
				return Math.floor(Math.random() * (max - min + 1)) + min;	
				}
			</script id=script_random_int_end>

	<script id=script_postturtles_monkeytraps>
		function postturtles_monkeytraps(args) {
			htmout=""; j=0; k=0;
			$items_postturtles=kolists['postturtles'];
			$items_postturtles_cnt=count($items_postturtles);
			$items_monkeytraps=kolists['monkeytraps'];
			$items_monkeytraps_cnt=count($items_monkeytraps);
			$items_floods=kolists['floods'];
			$items_floods_cnt=count($items_floods);
			$items_coffee=kolists['coffee'];
			$items_coffee_cnt=count($items_coffee);
			$items_iframes=kolists['iframes'];
			$items_iframes_cnt=count($items_iframes);


			randp=random_int(0,count($items_postturtles));
			randm=random_int(0,count($items_monkeytraps));
			randf=random_int(0,count($items_floods));
			randc=random_int(0,count($items_coffee));
			randi=random_int(0,count($items_iframes));

			if( document.getElementById('img_postturtles')) {
				document.getElementById('img_postturtles').src=kolists['postturtles'].split("\n")[randp];
				}
			if( document.getElementById('img_monkeytraps')) {
				document.getElementById('img_monkeytraps').src=kolists['monkeytraps'].split("\n")[randm];
				}
			if( document.getElementById('img_floods')) {
				document.getElementById('img_floods').src=kolists['floods'].split("\n")[randf];
				}
			if( document.getElementById('img_coffee')) {
				document.getElementById('img_coffee').src=kolists['coffee'].split("\n")[randc];
				}
			if( document.getElementById('iframe_ko')) {
				document.getElementById('iframe_ko').src=kolists['iframes'].split("\n")[randi];
				}
			
			alert( "BUGS_301 postturtles_monkeytraps args="+args );
			return(htmout);
			}
		</script id=script_postturtles_monkytraps_end>

	</script id=script_kogrids_end>


	</body>
	</html>
//


koh5_pano



Your browser does not support the HTML5 canvas element.


Drag mouse to navigate.

Navigation





17.Aug.2010, Martin Wengenmayer