From jreidinger@suse.cz Mon May 25 12:41:12 2009 From: Josef Reidinger To: yast-devel@lists.opensuse.org Subject: [yast-devel] WebYast server side path completion Date: Mon, 25 May 2009 14:43:00 +0200 Message-ID: <4A1A9254.3070305@suse.cz> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6934799917214417731==" --===============6934799917214417731== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Hi, I think that might be useful for some modules to allows enhanced specify path of target machine. Usual java script browsing cannot be used, as it uses browser pc and not server pc. As base I use this script http://www.pengoworks.com/workshop/jquery/autocomplete.htm , but must disable caching and losing focus, as it doesn't work after submit first part of path (no hint on another parts). If you want try it, just add to public/javascript attached js file and to public/stylesheets attached css and gif. Additional you must define for some controller response: for path finding I use this: def pathcompl path = params[:q] if (path[0].chr != "/") path = "/"+path end dir = path[0..path.rindex("/")] pre = path[path.rindex("/")+1..path.size] result = `ls -1 '#{dir}' | sed "s:^\\(.\\+\\)$:#{dir}\\1:"| grep '#{dir}#{pre}'` render :text => result end How to use...fast way is add this to your RoR view (home_controller contain pathcompl method) and: and to head of view: What do you think about this enhancement? I welcome any comments as I am just learning AJAX, RoR and js. Josef --===============6934799917214417731== Content-Type: application/javascript Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="jquery.autocomplete.js" MIME-Version: 1.0 alF1ZXJ5LmF1dG9jb21wbGV0ZSA9IGZ1bmN0aW9uKGlucHV0LCBvcHRpb25zKSB7CgkvLyBDcmVh dGUgYSBsaW5rIHRvIHNlbGYKCXZhciBtZSA9IHRoaXM7CgoJLy8gQ3JlYXRlIGpRdWVyeSBvYmpl Y3QgZm9yIGlucHV0IGVsZW1lbnQKCXZhciAkaW5wdXQgPSAkKGlucHV0KS5hdHRyKCJhdXRvY29t cGxldGUiLCAib2ZmIik7CgoJLy8gQXBwbHkgaW5wdXRDbGFzcyBpZiBuZWNlc3NhcnkKCWlmIChv cHRpb25zLmlucHV0Q2xhc3MpICRpbnB1dC5hZGRDbGFzcyhvcHRpb25zLmlucHV0Q2xhc3MpOwoK CS8vIENyZWF0ZSByZXN1bHRzCgl2YXIgcmVzdWx0cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo ImRpdiIpOwoJLy8gQ3JlYXRlIGpRdWVyeSBvYmplY3QgZm9yIHJlc3VsdHMKCXZhciAkcmVzdWx0 cyA9ICQocmVzdWx0cyk7CgkkcmVzdWx0cy5oaWRlKCkuYWRkQ2xhc3Mob3B0aW9ucy5yZXN1bHRz Q2xhc3MpLmNzcygicG9zaXRpb24iLCAiYWJzb2x1dGUiKTsKCWlmKCBvcHRpb25zLndpZHRoID4g MCApICRyZXN1bHRzLmNzcygid2lkdGgiLCBvcHRpb25zLndpZHRoKTsKCgkvLyBBZGQgdG8gYm9k eSBlbGVtZW50CgkkKCJib2R5IikuYXBwZW5kKHJlc3VsdHMpOwoKCWlucHV0LmF1dG9jb21wbGV0 ZXIgPSBtZTsKCgl2YXIgdGltZW91dCA9IG51bGw7Cgl2YXIgcHJldiA9ICIiOwoJdmFyIGFjdGl2 ZSA9IC0xOwoJdmFyIGNhY2hlID0ge307Cgl2YXIga2V5YiA9IGZhbHNlOwoJdmFyIGhhc0ZvY3Vz ID0gZmFsc2U7Cgl2YXIgbGFzdEtleVByZXNzQ29kZSA9IG51bGw7CgoJLy8gZmx1c2ggY2FjaGUK CWZ1bmN0aW9uIGZsdXNoQ2FjaGUoKXsKCQljYWNoZSA9IHt9OwoJCWNhY2hlLmRhdGEgPSB7fTsK CQljYWNoZS5sZW5ndGggPSAwOwoJfTsKCgkvLyBmbHVzaCBjYWNoZQoJZmx1c2hDYWNoZSgpOwoK CS8vIGlmIHRoZXJlIGlzIGEgZGF0YSBhcnJheSBzdXBwbGllZAoJaWYoIG9wdGlvbnMuZGF0YSAh PSBudWxsICl7CgkJdmFyIHNGaXJzdENoYXIgPSAiIiwgc3RNYXRjaFNldHMgPSB7fSwgcm93ID0g W107CgoJCS8vIG5vIHVybCB3YXMgc3BlY2lmaWVkLCB3ZSBuZWVkIHRvIGFkanVzdCB0aGUgY2Fj aGUgbGVuZ3RoIHRvIG1ha2Ugc3VyZSBpdCBmaXRzIHRoZSBsb2NhbCBkYXRhIHN0b3JlCgkJaWYo IHR5cGVvZiBvcHRpb25zLnVybCAhPSAic3RyaW5nIiApIG9wdGlvbnMuY2FjaGVMZW5ndGggPSAx OwoKCQkvLyBsb29wIHRocm91Z2ggdGhlIGFycmF5IGFuZCBjcmVhdGUgYSBsb29rdXAgc3RydWN0 dXJlCgkJZm9yKCB2YXIgaT0wOyBpIDwgb3B0aW9ucy5kYXRhLmxlbmd0aDsgaSsrICl7CgkJCS8v IGlmIHJvdyBpcyBhIHN0cmluZywgbWFrZSBhbiBhcnJheSBvdGhlcndpc2UganVzdCByZWZlcmVu Y2UgdGhlIGFycmF5CgkJCXJvdyA9ICgodHlwZW9mIG9wdGlvbnMuZGF0YVtpXSA9PSAic3RyaW5n IikgPyBbb3B0aW9ucy5kYXRhW2ldXSA6IG9wdGlvbnMuZGF0YVtpXSk7CgoJCQkvLyBpZiB0aGUg bGVuZ3RoIGlzIHplcm8sIGRvbid0IGFkZCB0byBsaXN0CgkJCWlmKCByb3dbMF0ubGVuZ3RoID4g MCApewoJCQkJLy8gZ2V0IHRoZSBmaXJzdCBjaGFyYWN0ZXIKCQkJCXNGaXJzdENoYXIgPSByb3db MF0uc3Vic3RyaW5nKDAsIDEpLnRvTG93ZXJDYXNlKCk7CgkJCQkvLyBpZiBubyBsb29rdXAgYXJy YXkgZm9yIHRoaXMgY2hhcmFjdGVyIGV4aXN0cywgbG9vayBpdCB1cCBub3cKCQkJCWlmKCAhc3RN YXRjaFNldHNbc0ZpcnN0Q2hhcl0gKSBzdE1hdGNoU2V0c1tzRmlyc3RDaGFyXSA9IFtdOwoJCQkJ Ly8gaWYgdGhlIG1hdGNoIGlzIGEgc3RyaW5nCgkJCQlzdE1hdGNoU2V0c1tzRmlyc3RDaGFyXS5w dXNoKHJvdyk7CgkJCX0KCQl9CgoJCS8vIGFkZCB0aGUgZGF0YSBpdGVtcyB0byB0aGUgY2FjaGUK CQlmb3IoIHZhciBrIGluIHN0TWF0Y2hTZXRzICl7CgkJCS8vIGluY3JlYXNlIHRoZSBjYWNoZSBz aXplCgkJCW9wdGlvbnMuY2FjaGVMZW5ndGgrKzsKCQkJLy8gYWRkIHRvIHRoZSBjYWNoZQoJCQlh ZGRUb0NhY2hlKGssIHN0TWF0Y2hTZXRzW2tdKTsKCQl9Cgl9CgoJJGlucHV0Cgkua2V5ZG93bihm dW5jdGlvbihlKSB7CgkJLy8gdHJhY2sgbGFzdCBrZXkgcHJlc3NlZAoJCWxhc3RLZXlQcmVzc0Nv ZGUgPSBlLmtleUNvZGU7CgkJc3dpdGNoKGUua2V5Q29kZSkgewoJCQljYXNlIDM4OiAvLyB1cAoJ CQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQkJbW92ZVNlbGVjdCgtMSk7CgkJCQlicmVhazsKCQkJ Y2FzZSA0MDogLy8gZG93bgoJCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQkJbW92ZVNlbGVjdCgx KTsKCQkJCWJyZWFrOwoJCQljYXNlIDk6ICAvLyB0YWIKCQkJY2FzZSAxMzogLy8gcmV0dXJuCgkJ CQlpZiggc2VsZWN0Q3VycmVudCgpICl7CgkJCQkJLy8gbWFrZSBzdXJlIHRvIGJsdXIgb2ZmIHRo ZSBjdXJyZW50IGZpZWxkCgkJCQkJLy8kaW5wdXQuZ2V0KDApLmJsdXIoKTsKCQkJCQllLnByZXZl bnREZWZhdWx0KCk7CgkJCQl9CgkJCQlicmVhazsKCQkJZGVmYXVsdDoKCQkJCWFjdGl2ZSA9IC0x OwoJCQkJaWYgKHRpbWVvdXQpIGNsZWFyVGltZW91dCh0aW1lb3V0KTsKCQkJCXRpbWVvdXQgPSBz ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7b25DaGFuZ2UoKTt9LCBvcHRpb25zLmRlbGF5KTsKCQkJCWJy ZWFrOwoJCX0KCX0pCgkuZm9jdXMoZnVuY3Rpb24oKXsKCQkvLyB0cmFjayB3aGV0aGVyIHRoZSBm aWVsZCBoYXMgZm9jdXMsIHdlIHNob3VsZG4ndCBwcm9jZXNzIGFueSByZXN1bHRzIGlmIHRoZSBm aWVsZCBubyBsb25nZXIgaGFzIGZvY3VzCgkJaGFzRm9jdXMgPSB0cnVlOwoJfSkKCS5ibHVyKGZ1 bmN0aW9uKCkgewoJCS8vIHRyYWNrIHdoZXRoZXIgdGhlIGZpZWxkIGhhcyBmb2N1cwoJCWhhc0Zv Y3VzID0gZmFsc2U7CgkJaGlkZVJlc3VsdHMoKTsKCX0pOwoKCWhpZGVSZXN1bHRzTm93KCk7CgoJ ZnVuY3Rpb24gb25DaGFuZ2UoKSB7CgkJLy8gaWdub3JlIGlmIHRoZSBmb2xsb3dpbmcga2V5cyBh cmUgcHJlc3NlZDogW2RlbF0gW3NoaWZ0XSBbY2Fwc2xvY2tdCgkJaWYoIGxhc3RLZXlQcmVzc0Nv ZGUgPT0gNDYgfHwgKGxhc3RLZXlQcmVzc0NvZGUgPiA4ICYmIGxhc3RLZXlQcmVzc0NvZGUgPCAz MikgKSByZXR1cm4gJHJlc3VsdHMuaGlkZSgpOwoJCXZhciB2ID0gJGlucHV0LnZhbCgpOwoJCWlm ICh2ID09IHByZXYpIHJldHVybjsKCQlwcmV2ID0gdjsKICAgICAgICAgICAgICAgIGZsdXNoQ2Fj aGUoKQoJCWlmICh2Lmxlbmd0aCA+PSBvcHRpb25zLm1pbkNoYXJzKSB7CgkJCSRpbnB1dC5hZGRD bGFzcyhvcHRpb25zLmxvYWRpbmdDbGFzcyk7CgkJCXJlcXVlc3REYXRhKHYpOwoJCX0gZWxzZSB7 CgkJCSRpbnB1dC5yZW1vdmVDbGFzcyhvcHRpb25zLmxvYWRpbmdDbGFzcyk7CgkJCSRyZXN1bHRz LmhpZGUoKTsKCQl9Cgl9OwoKIAlmdW5jdGlvbiBtb3ZlU2VsZWN0KHN0ZXApIHsKCgkJdmFyIGxp cyA9ICQoImxpIiwgcmVzdWx0cyk7CgkJaWYgKCFsaXMpIHJldHVybjsKCgkJYWN0aXZlICs9IHN0 ZXA7CgoJCWlmIChhY3RpdmUgPCAwKSB7CgkJCWFjdGl2ZSA9IDA7CgkJfSBlbHNlIGlmIChhY3Rp dmUgPj0gbGlzLnNpemUoKSkgewoJCQlhY3RpdmUgPSBsaXMuc2l6ZSgpIC0gMTsKCQl9CgoJCWxp cy5yZW1vdmVDbGFzcygiYWNfb3ZlciIpOwoKCQkkKGxpc1thY3RpdmVdKS5hZGRDbGFzcygiYWNf b3ZlciIpOwoKCQkvLyBXZWlyZCBiZWhhdmlvdXIgaW4gSUUKCQkvLyBpZiAobGlzW2FjdGl2ZV0g JiYgbGlzW2FjdGl2ZV0uc2Nyb2xsSW50b1ZpZXcpIHsKCQkvLyAJbGlzW2FjdGl2ZV0uc2Nyb2xs SW50b1ZpZXcoZmFsc2UpOwoJCS8vIH0KCgl9OwoKCWZ1bmN0aW9uIHNlbGVjdEN1cnJlbnQoKSB7 CgkJdmFyIGxpID0gJCgibGkuYWNfb3ZlciIsIHJlc3VsdHMpWzBdOwoJCWlmICghbGkpIHsKCQkJ dmFyICRsaSA9ICQoImxpIiwgcmVzdWx0cyk7CgkJCWlmIChvcHRpb25zLnNlbGVjdE9ubHkpIHsK CQkJCWlmICgkbGkubGVuZ3RoID09IDEpIGxpID0gJGxpWzBdOwoJCQl9IGVsc2UgaWYgKG9wdGlv bnMuc2VsZWN0Rmlyc3QpIHsKCQkJCWxpID0gJGxpWzBdOwoJCQl9CgkJfQoJCWlmIChsaSkgewoJ CQlzZWxlY3RJdGVtKGxpKTsKCQkJcmV0dXJuIHRydWU7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIGZh bHNlOwoJCX0KCX07CgoJZnVuY3Rpb24gc2VsZWN0SXRlbShsaSkgewoJCWlmICghbGkpIHsKCQkJ bGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwoJCQlsaS5leHRyYSA9IFtdOwoJCQls aS5zZWxlY3RWYWx1ZSA9ICIiOwoJCX0KCQl2YXIgdiA9ICQudHJpbShsaS5zZWxlY3RWYWx1ZSA/ IGxpLnNlbGVjdFZhbHVlIDogbGkuaW5uZXJIVE1MKTsKCQlpbnB1dC5sYXN0U2VsZWN0ZWQgPSB2 OwoJCXByZXYgPSB2OwoJCSRyZXN1bHRzLmh0bWwoIiIpOwoJCSRpbnB1dC52YWwodik7CgkJaGlk ZVJlc3VsdHNOb3coKTsKCQlpZiAob3B0aW9ucy5vbkl0ZW1TZWxlY3QpIHNldFRpbWVvdXQoZnVu Y3Rpb24oKSB7IG9wdGlvbnMub25JdGVtU2VsZWN0KGxpKSB9LCAxKTsKCX07CgoJLy8gc2VsZWN0 cyBhIHBvcnRpb24gb2YgdGhlIGlucHV0IHN0cmluZwoJZnVuY3Rpb24gY3JlYXRlU2VsZWN0aW9u KHN0YXJ0LCBlbmQpewoJCS8vIGdldCBhIHJlZmVyZW5jZSB0byB0aGUgaW5wdXQgZWxlbWVudAoJ CXZhciBmaWVsZCA9ICRpbnB1dC5nZXQoMCk7CgkJaWYoIGZpZWxkLmNyZWF0ZVRleHRSYW5nZSAp ewoJCQl2YXIgc2VsUmFuZ2UgPSBmaWVsZC5jcmVhdGVUZXh0UmFuZ2UoKTsKCQkJc2VsUmFuZ2Uu Y29sbGFwc2UodHJ1ZSk7CgkJCXNlbFJhbmdlLm1vdmVTdGFydCgiY2hhcmFjdGVyIiwgc3RhcnQp OwoJCQlzZWxSYW5nZS5tb3ZlRW5kKCJjaGFyYWN0ZXIiLCBlbmQpOwoJCQlzZWxSYW5nZS5zZWxl Y3QoKTsKCQl9IGVsc2UgaWYoIGZpZWxkLnNldFNlbGVjdGlvblJhbmdlICl7CgkJCWZpZWxkLnNl dFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQpOwoJCX0gZWxzZSB7CgkJCWlmKCBmaWVsZC5zZWxl Y3Rpb25TdGFydCApewoJCQkJZmllbGQuc2VsZWN0aW9uU3RhcnQgPSBzdGFydDsKCQkJCWZpZWxk LnNlbGVjdGlvbkVuZCA9IGVuZDsKCQkJfQoJCX0KCQlmaWVsZC5mb2N1cygpOwoJfTsKCgkvLyBm aWxscyBpbiB0aGUgaW5wdXQgYm94IHcvdGhlIGZpcnN0IG1hdGNoIChhc3N1bWVkIHRvIGJlIHRo ZSBiZXN0IG1hdGNoKQoJZnVuY3Rpb24gYXV0b0ZpbGwoc1ZhbHVlKXsKCQkvLyBpZiB0aGUgbGFz dCB1c2VyIGtleSBwcmVzc2VkIHdhcyBiYWNrc3BhY2UsIGRvbid0IGF1dG9maWxsCgkJaWYoIGxh c3RLZXlQcmVzc0NvZGUgIT0gOCApewoJCQkvLyBmaWxsIGluIHRoZSB2YWx1ZSAoa2VlcCB0aGUg Y2FzZSB0aGUgdXNlciBoYXMgdHlwZWQpCgkJCSRpbnB1dC52YWwoJGlucHV0LnZhbCgpICsgc1Zh bHVlLnN1YnN0cmluZyhwcmV2Lmxlbmd0aCkpOwoJCQkvLyBzZWxlY3QgdGhlIHBvcnRpb24gb2Yg dGhlIHZhbHVlIG5vdCB0eXBlZCBieSB0aGUgdXNlciAoc28gdGhlIG5leHQgY2hhcmFjdGVyIHdp bGwgZXJhc2UpCgkJCWNyZWF0ZVNlbGVjdGlvbihwcmV2Lmxlbmd0aCwgc1ZhbHVlLmxlbmd0aCk7 CgkJfQoJfTsKCglmdW5jdGlvbiBzaG93UmVzdWx0cygpIHsKCQkvLyBnZXQgdGhlIHBvc2l0aW9u IG9mIHRoZSBpbnB1dCBmaWVsZCByaWdodCBub3cgKGluIGNhc2UgdGhlIERPTSBpcyBzaGlmdGVk KQoJCXZhciBwb3MgPSBmaW5kUG9zKGlucHV0KTsKCQkvLyBlaXRoZXIgdXNlIHRoZSBzcGVjaWZp ZWQgd2lkdGgsIG9yIGF1dG9jYWxjdWxhdGUgYmFzZWQgb24gZm9ybSBlbGVtZW50CgkJdmFyIGlX aWR0aCA9IChvcHRpb25zLndpZHRoID4gMCkgPyBvcHRpb25zLndpZHRoIDogJGlucHV0LndpZHRo KCk7CgkJLy8gcmVwb3NpdGlvbgoJCSRyZXN1bHRzLmNzcyh7CgkJCXdpZHRoOiBwYXJzZUludChp V2lkdGgpICsgInB4IiwKCQkJdG9wOiAocG9zLnkgKyBpbnB1dC5vZmZzZXRIZWlnaHQpICsgInB4 IiwKCQkJbGVmdDogcG9zLnggKyAicHgiCgkJfSkuc2hvdygpOwoJfTsKCglmdW5jdGlvbiBoaWRl UmVzdWx0cygpIHsKCQlpZiAodGltZW91dCkgY2xlYXJUaW1lb3V0KHRpbWVvdXQpOwoJCXRpbWVv dXQgPSBzZXRUaW1lb3V0KGhpZGVSZXN1bHRzTm93LCAyMDApOwoJfTsKCglmdW5jdGlvbiBoaWRl UmVzdWx0c05vdygpIHsKCQlpZiAodGltZW91dCkgY2xlYXJUaW1lb3V0KHRpbWVvdXQpOwoJCSRp bnB1dC5yZW1vdmVDbGFzcyhvcHRpb25zLmxvYWRpbmdDbGFzcyk7CgkJaWYgKCRyZXN1bHRzLmlz KCI6dmlzaWJsZSIpKSB7CgkJCSRyZXN1bHRzLmhpZGUoKTsKCQl9CgkJaWYgKG9wdGlvbnMubXVz dE1hdGNoKSB7CgkJCXZhciB2ID0gJGlucHV0LnZhbCgpOwoJCQlpZiAodiAhPSBpbnB1dC5sYXN0 U2VsZWN0ZWQpIHsKCQkJCXNlbGVjdEl0ZW0obnVsbCk7CgkJCX0KCQl9Cgl9OwoKCWZ1bmN0aW9u IHJlY2VpdmVEYXRhKHEsIGRhdGEpIHsKCQlpZiAoZGF0YSkgewoJCQkkaW5wdXQucmVtb3ZlQ2xh c3Mob3B0aW9ucy5sb2FkaW5nQ2xhc3MpOwoJCQlyZXN1bHRzLmlubmVySFRNTCA9ICIiOwoKCQkJ Ly8gaWYgdGhlIGZpZWxkIG5vIGxvbmdlciBoYXMgZm9jdXMgb3IgaWYgdGhlcmUgYXJlIG5vIG1h dGNoZXMsIGRvIG5vdCBkaXNwbGF5IHRoZSBkcm9wIGRvd24KCQkJaWYoICFoYXNGb2N1cyB8fCBk YXRhLmxlbmd0aCA9PSAwICkgcmV0dXJuIGhpZGVSZXN1bHRzTm93KCk7CgoJCQlpZiAoJC5icm93 c2VyLm1zaWUpIHsKCQkJCS8vIHdlIHB1dCBhIHN0eWxlZCBpZnJhbWUgYmVoaW5kIHRoZSBjYWxl bmRhciBzbyBIVE1MIFNFTEVDVCBlbGVtZW50cyBkb24ndCBzaG93IHRocm91Z2gKCQkJCSRyZXN1 bHRzLmFwcGVuZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKSk7CgkJCX0KCQkJcmVz dWx0cy5hcHBlbmRDaGlsZChkYXRhVG9Eb20oZGF0YSkpOwoJCQkvLyBhdXRvZmlsbCBpbiB0aGUg Y29tcGxldGUgYm94IHcvdGhlIGZpcnN0IG1hdGNoIGFzIGxvbmcgYXMgdGhlIHVzZXIgaGFzbid0 IGVudGVyZWQgaW4gbW9yZSBkYXRhCgkJCWlmKCBvcHRpb25zLmF1dG9GaWxsICYmICgkaW5wdXQu dmFsKCkudG9Mb3dlckNhc2UoKSA9PSBxLnRvTG93ZXJDYXNlKCkpICkgYXV0b0ZpbGwoZGF0YVsw XVswXSk7CgkJCXNob3dSZXN1bHRzKCk7CgkJfSBlbHNlIHsKCQkJaGlkZVJlc3VsdHNOb3coKTsK CQl9Cgl9OwoKCWZ1bmN0aW9uIHBhcnNlRGF0YShkYXRhKSB7CgkJaWYgKCFkYXRhKSByZXR1cm4g bnVsbDsKCQl2YXIgcGFyc2VkID0gW107CgkJdmFyIHJvd3MgPSBkYXRhLnNwbGl0KG9wdGlvbnMu bGluZVNlcGFyYXRvcik7CgkJZm9yICh2YXIgaT0wOyBpIDwgcm93cy5sZW5ndGg7IGkrKykgewoJ CQl2YXIgcm93ID0gJC50cmltKHJvd3NbaV0pOwoJCQlpZiAocm93KSB7CgkJCQlwYXJzZWRbcGFy c2VkLmxlbmd0aF0gPSByb3cuc3BsaXQob3B0aW9ucy5jZWxsU2VwYXJhdG9yKTsKCQkJfQoJCX0K CQlyZXR1cm4gcGFyc2VkOwoJfTsKCglmdW5jdGlvbiBkYXRhVG9Eb20oZGF0YSkgewoJCXZhciB1 bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInVsIik7CgkJdmFyIG51bSA9IGRhdGEubGVuZ3Ro OwoKCQkvLyBsaW1pdGVkIHJlc3VsdHMgdG8gYSBtYXggbnVtYmVyCgkJaWYoIChvcHRpb25zLm1h eEl0ZW1zVG9TaG93ID4gMCkgJiYgKG9wdGlvbnMubWF4SXRlbXNUb1Nob3cgPCBudW0pICkgbnVt ID0gb3B0aW9ucy5tYXhJdGVtc1RvU2hvdzsKCgkJZm9yICh2YXIgaT0wOyBpIDwgbnVtOyBpKysp IHsKCQkJdmFyIHJvdyA9IGRhdGFbaV07CgkJCWlmICghcm93KSBjb250aW51ZTsKCQkJdmFyIGxp ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKCQkJaWYgKG9wdGlvbnMuZm9ybWF0SXRl bSkgewoJCQkJbGkuaW5uZXJIVE1MID0gb3B0aW9ucy5mb3JtYXRJdGVtKHJvdywgaSwgbnVtKTsK CQkJCWxpLnNlbGVjdFZhbHVlID0gcm93WzBdOwoJCQl9IGVsc2UgewoJCQkJbGkuaW5uZXJIVE1M ID0gcm93WzBdOwoJCQkJbGkuc2VsZWN0VmFsdWUgPSByb3dbMF07CgkJCX0KCQkJdmFyIGV4dHJh ID0gbnVsbDsKCQkJaWYgKHJvdy5sZW5ndGggPiAxKSB7CgkJCQlleHRyYSA9IFtdOwoJCQkJZm9y ICh2YXIgaj0xOyBqIDwgcm93Lmxlbmd0aDsgaisrKSB7CgkJCQkJZXh0cmFbZXh0cmEubGVuZ3Ro XSA9IHJvd1tqXTsKCQkJCX0KCQkJfQoJCQlsaS5leHRyYSA9IGV4dHJhOwoJCQl1bC5hcHBlbmRD aGlsZChsaSk7CgkJCSQobGkpLmhvdmVyKAoJCQkJZnVuY3Rpb24oKSB7ICQoImxpIiwgdWwpLnJl bW92ZUNsYXNzKCJhY19vdmVyIik7ICQodGhpcykuYWRkQ2xhc3MoImFjX292ZXIiKTsgYWN0aXZl ID0gJCgibGkiLCB1bCkuaW5kZXhPZigkKHRoaXMpLmdldCgwKSk7IH0sCgkJCQlmdW5jdGlvbigp IHsgJCh0aGlzKS5yZW1vdmVDbGFzcygiYWNfb3ZlciIpOyB9CgkJCSkuY2xpY2soZnVuY3Rpb24o ZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IHNlbGVjdEl0ZW0o dGhpcykgfSk7CgkJfQoJCXJldHVybiB1bDsKCX07CgoJZnVuY3Rpb24gcmVxdWVzdERhdGEocSkg ewoJCWlmICghb3B0aW9ucy5tYXRjaENhc2UpIHEgPSBxLnRvTG93ZXJDYXNlKCk7CgkJdmFyIGRh dGEgPSBvcHRpb25zLmNhY2hlTGVuZ3RoID8gbG9hZEZyb21DYWNoZShxKSA6IG51bGw7CgkJLy8g cmVjaWV2ZSB0aGUgY2FjaGVkIGRhdGEKCQlpZiAoZGF0YSkgewoJCQlyZWNlaXZlRGF0YShxLCBk YXRhKTsKCQkvLyBpZiBhbiBBSkFYIHVybCBoYXMgYmVlbiBzdXBwbGllZCwgdHJ5IGxvYWRpbmcg dGhlIGRhdGEgbm93CgkJfSBlbHNlIGlmKCAodHlwZW9mIG9wdGlvbnMudXJsID09ICJzdHJpbmci KSAmJiAob3B0aW9ucy51cmwubGVuZ3RoID4gMCkgKXsKCQkJJC5nZXQobWFrZVVybChxKSwgZnVu Y3Rpb24oZGF0YSkgewoJCQkJZGF0YSA9IHBhcnNlRGF0YShkYXRhKTsKCQkJCWFkZFRvQ2FjaGUo cSwgZGF0YSk7CgkJCQlyZWNlaXZlRGF0YShxLCBkYXRhKTsKCQkJfSk7CgkJLy8gaWYgdGhlcmUn cyBiZWVuIG5vIGRhdGEgZm91bmQsIHJlbW92ZSB0aGUgbG9hZGluZyBjbGFzcwoJCX0gZWxzZSB7 CgkJCSRpbnB1dC5yZW1vdmVDbGFzcyhvcHRpb25zLmxvYWRpbmdDbGFzcyk7CgkJfQoJfTsKCglm dW5jdGlvbiBtYWtlVXJsKHEpIHsKCQl2YXIgdXJsID0gb3B0aW9ucy51cmwgKyAiP3E9IiArIGVu Y29kZVVSSShxKTsKCQlmb3IgKHZhciBpIGluIG9wdGlvbnMuZXh0cmFQYXJhbXMpIHsKCQkJdXJs ICs9ICImIiArIGkgKyAiPSIgKyBlbmNvZGVVUkkob3B0aW9ucy5leHRyYVBhcmFtc1tpXSk7CgkJ fQoJCXJldHVybiB1cmw7Cgl9OwoKCWZ1bmN0aW9uIGxvYWRGcm9tQ2FjaGUocSkgewoJCWlmICgh cSkgcmV0dXJuIG51bGw7CgkJaWYgKGNhY2hlLmRhdGFbcV0pIHJldHVybiBjYWNoZS5kYXRhW3Fd OwoJCWlmIChvcHRpb25zLm1hdGNoU3Vic2V0KSB7CgkJCWZvciAodmFyIGkgPSBxLmxlbmd0aCAt IDE7IGkgPj0gb3B0aW9ucy5taW5DaGFyczsgaS0tKSB7CgkJCQl2YXIgcXMgPSBxLnN1YnN0cigw LCBpKTsKCQkJCXZhciBjID0gY2FjaGUuZGF0YVtxc107CgkJCQlpZiAoYykgewoJCQkJCXZhciBj c3ViID0gW107CgkJCQkJZm9yICh2YXIgaiA9IDA7IGogPCBjLmxlbmd0aDsgaisrKSB7CgkJCQkJ CXZhciB4ID0gY1tqXTsKCQkJCQkJdmFyIHgwID0geFswXTsKCQkJCQkJaWYgKG1hdGNoU3Vic2V0 KHgwLCBxKSkgewoJCQkJCQkJY3N1Yltjc3ViLmxlbmd0aF0gPSB4OwoJCQkJCQl9CgkJCQkJfQoJ CQkJCXJldHVybiBjc3ViOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiBudWxsOwoJfTsKCglmdW5j dGlvbiBtYXRjaFN1YnNldChzLCBzdWIpIHsKCQlpZiAoIW9wdGlvbnMubWF0Y2hDYXNlKSBzID0g cy50b0xvd2VyQ2FzZSgpOwoJCXZhciBpID0gcy5pbmRleE9mKHN1Yik7CgkJaWYgKGkgPT0gLTEp IHJldHVybiBmYWxzZTsKCQlyZXR1cm4gaSA9PSAwIHx8IG9wdGlvbnMubWF0Y2hDb250YWluczsK CX07CgoJdGhpcy5mbHVzaENhY2hlID0gZnVuY3Rpb24oKSB7CgkJZmx1c2hDYWNoZSgpOwoJfTsK Cgl0aGlzLnNldEV4dHJhUGFyYW1zID0gZnVuY3Rpb24ocCkgewoJCW9wdGlvbnMuZXh0cmFQYXJh bXMgPSBwOwoJfTsKCgl0aGlzLmZpbmRWYWx1ZSA9IGZ1bmN0aW9uKCl7CgkJdmFyIHEgPSAkaW5w dXQudmFsKCk7CgoJCWlmICghb3B0aW9ucy5tYXRjaENhc2UpIHEgPSBxLnRvTG93ZXJDYXNlKCk7 CgkJdmFyIGRhdGEgPSBvcHRpb25zLmNhY2hlTGVuZ3RoID8gbG9hZEZyb21DYWNoZShxKSA6IG51 bGw7CgkJaWYgKGRhdGEpIHsKCQkJZmluZFZhbHVlQ2FsbGJhY2socSwgZGF0YSk7CgkJfSBlbHNl IGlmKCAodHlwZW9mIG9wdGlvbnMudXJsID09ICJzdHJpbmciKSAmJiAob3B0aW9ucy51cmwubGVu Z3RoID4gMCkgKXsKCQkJJC5nZXQobWFrZVVybChxKSwgZnVuY3Rpb24oZGF0YSkgewoJCQkJZGF0 YSA9IHBhcnNlRGF0YShkYXRhKQoJCQkJYWRkVG9DYWNoZShxLCBkYXRhKTsKCQkJCWZpbmRWYWx1 ZUNhbGxiYWNrKHEsIGRhdGEpOwoJCQl9KTsKCQl9IGVsc2UgewoJCQkvLyBubyBtYXRjaGVzCgkJ CWZpbmRWYWx1ZUNhbGxiYWNrKHEsIG51bGwpOwoJCX0KCX0KCglmdW5jdGlvbiBmaW5kVmFsdWVD YWxsYmFjayhxLCBkYXRhKXsKCQlpZiAoZGF0YSkgJGlucHV0LnJlbW92ZUNsYXNzKG9wdGlvbnMu bG9hZGluZ0NsYXNzKTsKCgkJdmFyIG51bSA9IChkYXRhKSA/IGRhdGEubGVuZ3RoIDogMDsKCQl2 YXIgbGkgPSBudWxsOwoKCQlmb3IgKHZhciBpPTA7IGkgPCBudW07IGkrKykgewoJCQl2YXIgcm93 ID0gZGF0YVtpXTsKCgkJCWlmKCByb3dbMF0udG9Mb3dlckNhc2UoKSA9PSBxLnRvTG93ZXJDYXNl KCkgKXsKCQkJCWxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKCQkJCWlmIChvcHRp b25zLmZvcm1hdEl0ZW0pIHsKCQkJCQlsaS5pbm5lckhUTUwgPSBvcHRpb25zLmZvcm1hdEl0ZW0o cm93LCBpLCBudW0pOwoJCQkJCWxpLnNlbGVjdFZhbHVlID0gcm93WzBdOwoJCQkJfSBlbHNlIHsK CQkJCQlsaS5pbm5lckhUTUwgPSByb3dbMF07CgkJCQkJbGkuc2VsZWN0VmFsdWUgPSByb3dbMF07 CgkJCQl9CgkJCQl2YXIgZXh0cmEgPSBudWxsOwoJCQkJaWYoIHJvdy5sZW5ndGggPiAxICl7CgkJ CQkJZXh0cmEgPSBbXTsKCQkJCQlmb3IgKHZhciBqPTE7IGogPCByb3cubGVuZ3RoOyBqKyspIHsK CQkJCQkJZXh0cmFbZXh0cmEubGVuZ3RoXSA9IHJvd1tqXTsKCQkJCQl9CgkJCQl9CgkJCQlsaS5l eHRyYSA9IGV4dHJhOwoJCQl9CgkJfQoKCQlpZiggb3B0aW9ucy5vbkZpbmRWYWx1ZSApIHNldFRp bWVvdXQoZnVuY3Rpb24oKSB7IG9wdGlvbnMub25GaW5kVmFsdWUobGkpIH0sIDEpOwoJfQoKCWZ1 bmN0aW9uIGFkZFRvQ2FjaGUocSwgZGF0YSkgewoJCWlmICghZGF0YSB8fCAhcSB8fCAhb3B0aW9u cy5jYWNoZUxlbmd0aCkgcmV0dXJuOwoJCWlmICghY2FjaGUubGVuZ3RoIHx8IGNhY2hlLmxlbmd0 aCA+IG9wdGlvbnMuY2FjaGVMZW5ndGgpIHsKCQkJZmx1c2hDYWNoZSgpOwoJCQljYWNoZS5sZW5n dGgrKzsKCQl9IGVsc2UgaWYgKCFjYWNoZVtxXSkgewoJCQljYWNoZS5sZW5ndGgrKzsKCQl9CgkJ Y2FjaGUuZGF0YVtxXSA9IGRhdGE7Cgl9OwoKCWZ1bmN0aW9uIGZpbmRQb3Mob2JqKSB7CgkJdmFy IGN1cmxlZnQgPSBvYmoub2Zmc2V0TGVmdCB8fCAwOwoJCXZhciBjdXJ0b3AgPSBvYmoub2Zmc2V0 VG9wIHx8IDA7CgkJd2hpbGUgKG9iaiA9IG9iai5vZmZzZXRQYXJlbnQpIHsKCQkJY3VybGVmdCAr PSBvYmoub2Zmc2V0TGVmdAoJCQljdXJ0b3AgKz0gb2JqLm9mZnNldFRvcAoJCX0KCQlyZXR1cm4g e3g6Y3VybGVmdCx5OmN1cnRvcH07Cgl9Cn0KCmpRdWVyeS5mbi5hdXRvY29tcGxldGUgPSBmdW5j dGlvbih1cmwsIG9wdGlvbnMsIGRhdGEpIHsKCS8vIE1ha2Ugc3VyZSBvcHRpb25zIGV4aXN0cwoJ b3B0aW9ucyA9IG9wdGlvbnMgfHwge307CgkvLyBTZXQgdXJsIGFzIG9wdGlvbgoJb3B0aW9ucy51 cmwgPSB1cmw7CgkvLyBzZXQgc29tZSBidWxrIGxvY2FsIGRhdGEKCW9wdGlvbnMuZGF0YSA9ICgo dHlwZW9mIGRhdGEgPT0gIm9iamVjdCIpICYmIChkYXRhLmNvbnN0cnVjdG9yID09IEFycmF5KSkg PyBkYXRhIDogbnVsbDsKCgkvLyBTZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIHJlcXVpcmVkIG9wdGlv bnMKCW9wdGlvbnMuaW5wdXRDbGFzcyA9IG9wdGlvbnMuaW5wdXRDbGFzcyB8fCAiYWNfaW5wdXQi OwoJb3B0aW9ucy5yZXN1bHRzQ2xhc3MgPSBvcHRpb25zLnJlc3VsdHNDbGFzcyB8fCAiYWNfcmVz dWx0cyI7CglvcHRpb25zLmxpbmVTZXBhcmF0b3IgPSBvcHRpb25zLmxpbmVTZXBhcmF0b3IgfHwg IlxuIjsKCW9wdGlvbnMuY2VsbFNlcGFyYXRvciA9IG9wdGlvbnMuY2VsbFNlcGFyYXRvciB8fCAi fCI7CglvcHRpb25zLm1pbkNoYXJzID0gb3B0aW9ucy5taW5DaGFycyB8fCAxOwoJb3B0aW9ucy5k ZWxheSA9IG9wdGlvbnMuZGVsYXkgfHwgNDAwOwoJb3B0aW9ucy5tYXRjaENhc2UgPSBvcHRpb25z Lm1hdGNoQ2FzZSB8fCAwOwoJb3B0aW9ucy5tYXRjaFN1YnNldCA9IG9wdGlvbnMubWF0Y2hTdWJz ZXQgfHwgMTsKCW9wdGlvbnMubWF0Y2hDb250YWlucyA9IG9wdGlvbnMubWF0Y2hDb250YWlucyB8 fCAwOwoJb3B0aW9ucy5jYWNoZUxlbmd0aCA9IG9wdGlvbnMuY2FjaGVMZW5ndGggfHwgMTsKCW9w dGlvbnMubXVzdE1hdGNoID0gb3B0aW9ucy5tdXN0TWF0Y2ggfHwgMDsKCW9wdGlvbnMuZXh0cmFQ YXJhbXMgPSBvcHRpb25zLmV4dHJhUGFyYW1zIHx8IHt9OwoJb3B0aW9ucy5sb2FkaW5nQ2xhc3Mg PSBvcHRpb25zLmxvYWRpbmdDbGFzcyB8fCAiYWNfbG9hZGluZyI7CglvcHRpb25zLnNlbGVjdEZp cnN0ID0gb3B0aW9ucy5zZWxlY3RGaXJzdCB8fCBmYWxzZTsKCW9wdGlvbnMuc2VsZWN0T25seSA9 IG9wdGlvbnMuc2VsZWN0T25seSB8fCBmYWxzZTsKCW9wdGlvbnMubWF4SXRlbXNUb1Nob3cgPSBv cHRpb25zLm1heEl0ZW1zVG9TaG93IHx8IC0xOwoJb3B0aW9ucy5hdXRvRmlsbCA9IG9wdGlvbnMu YXV0b0ZpbGwgfHwgZmFsc2U7CglvcHRpb25zLndpZHRoID0gcGFyc2VJbnQob3B0aW9ucy53aWR0 aCwgMTApIHx8IDA7CgoJdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCXZhciBpbnB1dCA9IHRoaXM7 CgkJbmV3IGpRdWVyeS5hdXRvY29tcGxldGUoaW5wdXQsIG9wdGlvbnMpOwoJfSk7CgoJLy8gRG9u J3QgYnJlYWsgdGhlIGNoYWluCglyZXR1cm4gdGhpczsKfQoKalF1ZXJ5LmZuLmF1dG9jb21wbGV0 ZUFycmF5ID0gZnVuY3Rpb24oZGF0YSwgb3B0aW9ucykgewoJcmV0dXJuIHRoaXMuYXV0b2NvbXBs ZXRlKG51bGwsIG9wdGlvbnMsIGRhdGEpOwp9CgpqUXVlcnkuZm4uaW5kZXhPZiA9IGZ1bmN0aW9u KGUpewoJZm9yKCB2YXIgaT0wOyBpPHRoaXMubGVuZ3RoOyBpKysgKXsKCQlpZiggdGhpc1tpXSA9 PSBlICkgcmV0dXJuIGk7Cgl9CglyZXR1cm4gLTE7Cn07Cg== --===============6934799917214417731== Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="indicator.gif" MIME-Version: 1.0 R0lGODlhEAAQAMQAAP///+7u7t3d3bu7u6qqqpmZmYiIiHd3d2ZmZlVVVURERDMzMyIiIhEREQAR AAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05F VFNDQVBFMi4wAwEAAAAh+QQFBwAQACwAAAAAEAAQAAAFdyAkQgGJJOWoQgIjBM8jkKsoPEzgyMGs CjPDw7ADpkQBxRDmSCRetpRA6Rj4kFBkgLC4IlUGhbNQIwXOYYWCXDufzYPDMaoKGBoKb886OjAK dgZAAgQkfCwzAgsDBAUCgl8jAQkHEAVkAoA1AgczlyIDczUDA2UhACH5BAUHABAALAAAAAAPABAA AAVjICSO0IGIATkqIiMKDaGKC8Q49jPMYsE0hQdrlABCGgvT45FKiRKQhWA0mPKGPAgBcTjsspBC AoH4gl+FmXNEUEBVAYHToJAVZK/XWoQQDAgBZioHaX8igigFKYYQVlkCjiMhACH5BAUHABAALAAA AAAQAA8AAAVgICSOUGGQqIiIChMESyo6CdQGdRqUENESI8FAdFgAFwqDISYwPB4CVSMnEhSej+Fo gNhtHyfRQFmIol5owmEta/fcKITB6y4choMBmk7yGgSAEAJ8JAVDgQFmKUCCZnwhACH5BAUHABAA LAAAAAAQABAAAAViICSOYkGe4hFAiSImAwotB+si6Co2QxvjAYHIgBAqDoWCK2Bq6A40iA4yYMgg NZKwGFgVCAQZotFwwJIF4QnxaC9IsZNgLtAJDKbraJCGzPVSIgEDXVNXA0JdgH6ChoCKKCEAIfkE BQcAEAAsAAAAABAADgAABUkgJI7QcZComIjPw6bs2kINLB5uW9Bo0gyQx8LkKgVHiccKVdyRlqjF SAApOKOtR810StVeU9RAmLqOxi0qRG3LptikAVQEh4UAACH5BAUHABAALAAAAAAQABAAAAVxICSO 0DCQKBQQonGIh5AGB2sYkMHIqYAIN0EDRxoQZIaC6bAoMRSiwMAwCIwCggRkwRMJWKSAomBVCc5l UiGRUBjO6FSBwWggwijBooDCdiFfIlBRAlYBZQ0PWRANaSkED1oQYHgjDA8nM3kPfCmejiEAIfkE BQcAEAAsAAAAABAAEAAABWAgJI6QIJCoOIhFwabsSbiFAotGMEMKgZoB3cBUQIgURpFgmEI0EqjA CYXwiYJBGAGBgGIDWsVicbiNEgSsGbKCIMCwA4IBCRgXt8bDACkvYQF6U1OADg8mDlaACQtwJCEA IfkEBQcAEAAsAAABABAADwAABV4gJEKCOAwiMa4Q2qIDwq4wiriBmItCCREHUsIwCgh2q8MiyEKO DK7ZbHCoqqSjWGKI1d2kRp+RAWGyHg+DQUEmKliGx4HBKECIMwG61AgssAQPKA19EAxRKz4QCVIh ACH5BAUHABAALAAAAAAQABAAAAVjICSOUBCQqHhCgiAOKyqcLVvEZOC2geGiK5NpQBAZCilgAYFM ogo/J0lgqEpHgoO2+GIMUL6p4vFojhQNg8rxWLgYBQJCASkwEKLC17hYFJtRIwwBfRAJDk4Obwsi dEkrWkkhACH5BAUHABAALAAAAQAQAA8AAAVcICSOUGAGAqmKpjis6vmuqSrUxQyPhDEEtpUOgmgY ETCCcrB4OBWwQsGHEhQatVFhB/mNAojFVsQgBhgKpSHRTRxEhGwhoRg0CCXYAkKHHPZCZRAKUERZ MAYGMCEAIfkEBQcAEAAsAAABABAADwAABV0gJI4kFJToGAilwKLCST6PUcrB8A70844CXenwILRk IoYyBRk4BQlHo3FIOQmvAEGBMpYSop/IgPBCFpCqIuEsIESHgkgoJxwQAjSzwb1DClwwgQhgAVVM IgVyKCEAIfkECQcAEAAsAAAAABAAEAAABWQgJI5kSQ6NYK7Dw6xr8hCw+ELC85hCIAq3Am0U6JUK jkHJNzIsFAqDqShQHRhY6bKqgvgGCZOSFDhAUiWCYQwJSxGHKqGAE/5EqIHBjOgyRQELCBB7EAQH fySDhGYQdDWGQyUhADs= --===============6934799917214417731== Content-Type: text/css Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="jquery.autocomplete.css" MIME-Version: 1.0 LmFjX3Jlc3VsdHMgewoJcGFkZGluZzogMHB4OwoJYm9yZGVyOiAxcHggc29saWQgV2luZG93RnJh bWU7CgliYWNrZ3JvdW5kLWNvbG9yOiBXaW5kb3c7CglvdmVyZmxvdzogaGlkZGVuOwp9CgouYWNf cmVzdWx0cyB1bCB7Cgl3aWR0aDogMTAwJTsKCWxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGU7 CglsaXN0LXN0eWxlOiBub25lOwoJcGFkZGluZzogMDsKCW1hcmdpbjogMDsKfQoKLmFjX3Jlc3Vs dHMgaWZyYW1lIHsKCWRpc3BsYXk6bm9uZTsvKnNvcnJ5IGZvciBJRTUqLwoJZGlzcGxheS8qKi86 YmxvY2s7Lypzb3JyeSBmb3IgSUU1Ki8KCXBvc2l0aW9uOmFic29sdXRlOwoJdG9wOjA7CglsZWZ0 OjA7Cgl6LWluZGV4Oi0xOwoJZmlsdGVyOm1hc2soKTsKCXdpZHRoOjMwMDBweDsKCWhlaWdodDoz MDAwcHg7Cn0KCi5hY19yZXN1bHRzIGxpIHsKCW1hcmdpbjogMHB4OwoJcGFkZGluZzogMnB4IDVw eDsKCWN1cnNvcjogcG9pbnRlcjsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDEwMCU7Cglmb250 OiBtZW51OwoJZm9udC1zaXplOiAxMnB4OwoJb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmFjX2xvYWRp bmcgewoJYmFja2dyb3VuZCA6IFdpbmRvdyB1cmwoJy4vaW5kaWNhdG9yLmdpZicpIHJpZ2h0IGNl bnRlciBuby1yZXBlYXQ7Cn0KCi5hY19vdmVyIHsKCWJhY2tncm91bmQtY29sb3I6IEhpZ2hsaWdo dDsKCWNvbG9yOiBIaWdobGlnaHRUZXh0Owp9Cg== --===============6934799917214417731==--