<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>174601</bug_id>
          
          <creation_ts>2017-07-17 17:12:07 -0700</creation_ts>
          <short_desc>[JSC] There should be a debug option to dump a compiled RegExp Pattern</short_desc>
          <delta_ts>2017-07-18 09:25:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1329780</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-07-17 17:12:07 -0700</bug_when>
    <thetext>To aid in debugging, it makes sense to add a JSC option to dump RegExp Patterns.  This is effectively the intermediate form before the pattern is consumed by the YARR interpreter or JIT.  This would be similar to the DFG, FTL, AIR &amp; B3 IR dumping options.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1329783</commentid>
    <comment_count>1</comment_count>
      <attachid>315736</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-07-17 17:23:30 -0700</bug_when>
    <thetext>Created attachment 315736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1329788</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-07-17 17:36:54 -0700</bug_when>
    <thetext>I replaced the &quot;U_FALLTHROUGH&quot; that Xcode recommended with &quot;FALLTHROUGH&quot; in my local tree.  That should fix the &quot;jsc&quot; build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1329818</commentid>
    <comment_count>3</comment_count>
      <attachid>315747</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-07-17 19:10:32 -0700</bug_when>
    <thetext>Created attachment 315747
Updated patch - replaced U_FALLTHROUGH with FALLTHROUGH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1329903</commentid>
    <comment_count>4</comment_count>
      <attachid>315747</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-07-18 00:02:38 -0700</bug_when>
    <thetext>Comment on attachment 315747
Updated patch - replaced U_FALLTHROUGH with FALLTHROUGH

View in context: https://bugs.webkit.org/attachment.cgi?id=315747&amp;action=review

&gt; Source/JavaScriptCore/runtime/Options.h:435
&gt; +    v(bool, dumpCompiledRegExpPatterns, false, Normal, nullptr) \

Would it be useful to make this an option, not a compile time flag?  Could you use NDEBUG instead?

&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:1004
&gt; +

extra whitespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1329933</commentid>
    <comment_count>5</comment_count>
      <attachid>315747</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-07-18 00:52:57 -0700</bug_when>
    <thetext>Comment on attachment 315747
Updated patch - replaced U_FALLTHROUGH with FALLTHROUGH

View in context: https://bugs.webkit.org/attachment.cgi?id=315747&amp;action=review

&gt;&gt; Source/JavaScriptCore/runtime/Options.h:435
&gt;&gt; +    v(bool, dumpCompiledRegExpPatterns, false, Normal, nullptr) \
&gt; 
&gt; Would it be useful to make this an option, not a compile time flag?  Could you use NDEBUG instead?

Not sure I follow — these are runtime options. We tend to never turn on options that print things by default in any build style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330003</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-07-18 09:25:43 -0700</bug_when>
    <thetext>Committed r219611: &lt;http://trac.webkit.org/changeset/219611&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315736</attachid>
            <date>2017-07-17 17:23:30 -0700</date>
            <delta_ts>2017-07-17 19:10:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>174601.patch</filename>
            <type>text/plain</type>
            <size>14467</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE5NTg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE3LTA3LTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFtKU0NdIFRoZXJlIHNob3VsZCBiZSBhIGRlYnVnIG9wdGlvbiB0byBkdW1wIGEgY29tcGls
ZWQgUmVnRXhwIFBhdHRlcm4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGVkIHRoZSBkZWJ1ZyBvcHRpb24gZHVtcENvbXBpbGVkUmVnRXhwUGF0dGVy
bnMgd2hpY2ggd2lsbCBkdW1wIHRoZSBZYXJyUGF0dGVybiBhbmQgcmVsYXRlZAorICAgICAgICBv
YmplY3RzIGFmdGVyIGEgcmVndWxhciBleHByZXNzaW9uIGhhcyBiZWVuIGNvbXBpbGVkLgorCisg
ICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5j
cHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpjb21waWxlKToKKyAgICAgICAg
KEpTQzo6WWFycjo6aW5kZW50Rm9yTmVzdGluZ0xldmVsKToKKyAgICAgICAgKEpTQzo6WWFycjo6
ZHVtcFVDaGFyMzIpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuQWx0ZXJuYXRpdmU6OmR1
bXApOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuVGVybTo6ZHVtcFF1YW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuVGVybTo6ZHVtcCk6CisgICAgICAgIChKU0M6Ollh
cnI6OlBhdHRlcm5EaXNqdW5jdGlvbjo6ZHVtcCk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQ
YXR0ZXJuOjpkdW1wUGF0dGVybik6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5oOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6Z2xvYmFsKToKKwogMjAxNy0wNy0xNyAgTWlj
aGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtl
XSBNYWNyb3MgaW4gV2ViS2l0TWFjcm9zLmNtYWtlIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoIFdF
QktJVF8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCShyZXZpc2lvbiAyMTk0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzMiw2ICs0MzIsOCBAQCB0eXBlZGVmIGNvbnN0
IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICBcCiAgICAgdih1bnNpZ25lZCwgcHJvdG90eXBlSGl0
Q291bnRGb3JMTEludENhY2hpbmcsIDIsIE5vcm1hbCwgIk51bWJlciBvZiBwcm90b3R5cGUgcHJv
cGVydHkgaGl0cyBiZWZvcmUgY2FjaGluZyBhIHByb3RvdHlwZSBpbiB0aGUgTExJbnQuIEEgY291
bnQgb2YgMCBtZWFucyBuZXZlciBjYWNoZS4iKSBcCiAgICAgXAorICAgIHYoYm9vbCwgZHVtcENv
bXBpbGVkUmVnRXhwUGF0dGVybnMsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICBcCiAg
ICAgdihib29sLCBkdW1wTW9kdWxlUmVjb3JkLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihib29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwgTm9ybWFsLCBudWxscHRy
KSBcCiAgICAgdihib29sLCBleHBvc2VJbnRlcm5hbE1vZHVsZUxvYWRlciwgZmFsc2UsIE5vcm1h
bCwgImV4cG9zZSB0aGUgaW50ZXJuYWwgbW9kdWxlIGxvYWRlciBvYmplY3QgdG8gdGhlIGdsb2Jh
bCBzcGFjZSBmb3IgZGVidWdnaW5nIikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclBhdHRlcm4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJQYXR0ZXJuLmNwcAkocmV2aXNpb24gMjE5NDA2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsyNywx
MSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIllhcnJQYXR0ZXJuLmgiCiAKKyNp
bmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiWWFyci5oIgogI2luY2x1ZGUgIllhcnJDYW5v
bmljYWxpemUuaCIKICNpbmNsdWRlICJZYXJyUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL0RhdGFM
b2cuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERh
dGEuaD4KIApAQCAtOTU4LDYgKzk2MCw5IEBAIGNvbnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjpjb21w
aWxlKGNvbnN0IFMKICAgICBpZiAoY29uc3QgY2hhciogZXJyb3IgPSBjb25zdHJ1Y3Rvci5zZXR1
cE9mZnNldHMoKSkKICAgICAgICAgcmV0dXJuIGVycm9yOwogCisgICAgaWYgKE9wdGlvbnM6OmR1
bXBDb21waWxlZFJlZ0V4cFBhdHRlcm5zKCkpCisgICAgICAgIGR1bXBQYXR0ZXJuKHBhdHRlcm5T
dHJpbmcpOworCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTk4Myw0ICs5ODgsMjgyIEBA
IFlhcnJQYXR0ZXJuOjpZYXJyUGF0dGVybihjb25zdCBTdHJpbmcmIHAKICAgICAqZXJyb3IgPSBj
b21waWxlKHBhdHRlcm4sIHN0YWNrTGltaXQpOwogfQogCitzdGF0aWMgdm9pZCBpbmRlbnRGb3JO
ZXN0aW5nTGV2ZWwoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgbmVzdGluZ0RlcHRoKQorewor
ICAgIG91dC5wcmludCgiICAgICIpOworICAgIGZvciAoOyBuZXN0aW5nRGVwdGg7IC0tbmVzdGlu
Z0RlcHRoKQorICAgICAgICBvdXQucHJpbnQoIiAgIik7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBV
Q2hhcjMyKFByaW50U3RyZWFtJiBvdXQsIFVDaGFyMzIgYykKK3sKKyAgICBpZiAoYyA+PSAnICcm
JiBjIDw9IDB4ZmYpCisgICAgICAgIG91dC5wcmludGYoIiclYyciLCBzdGF0aWNfY2FzdDxjaGFy
PihjKSk7CisgICAgZWxzZQorICAgICAgICBvdXQucHJpbnRmKCIweCUwNHgiLCBjKTsKKworfQor
Cit2b2lkIFBhdHRlcm5BbHRlcm5hdGl2ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBZYXJyUGF0
dGVybiogdGhpc1BhdHRlcm4sIHVuc2lnbmVkIG5lc3RpbmdEZXB0aCkKK3sKKyAgICBvdXQucHJp
bnQoIm1pbmltdW0gc2l6ZTogIiwgbV9taW5pbXVtU2l6ZSk7CisgICAgaWYgKG1faGFzRml4ZWRT
aXplKQorICAgICAgICBvdXQucHJpbnQoIixmaXhlZCBzaXplIik7CisgICAgaWYgKG1fb25jZVRo
cm91Z2gpCisgICAgICAgIG91dC5wcmludCgiLG9uY2UgdGhyb3VnaCIpOworICAgIGlmIChtX3N0
YXJ0c1dpdGhCT0wpCisgICAgICAgIG91dC5wcmludCgiLHN0YXJ0cyB3aXRoIF4iKTsKKyAgICBp
ZiAobV9jb250YWluc0JPTCkKKyAgICAgICAgb3V0LnByaW50KCIsY29udGFpbnMgXiIpOworICAg
IG91dC5wcmludCgiXG4iKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90ZXJtcy5z
aXplKCk7ICsraSkKKyAgICAgICAgbV90ZXJtc1tpXS5kdW1wKG91dCwgdGhpc1BhdHRlcm4sIG5l
c3RpbmdEZXB0aCk7Cit9CisKK3ZvaWQgUGF0dGVyblRlcm06OmR1bXBRdWFudGlmaWVyKFByaW50
U3RyZWFtJiBvdXQpCit7CisgICAgaWYgKHF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRD
b3VudCAmJiBxdWFudGl0eU1pbkNvdW50ID09IDEgJiYgcXVhbnRpdHlNYXhDb3VudCA9PSAxKQor
ICAgICAgICByZXR1cm47CisgICAgb3V0LnByaW50KCIgeyIsIHF1YW50aXR5TWluQ291bnQudW5z
YWZlR2V0KCkpOworICAgIGlmIChxdWFudGl0eU1pbkNvdW50ICE9IHF1YW50aXR5TWF4Q291bnQp
IHsKKyAgICAgICAgaWYgKHF1YW50aXR5TWF4Q291bnQgPT0gVUlOVF9NQVgpCisgICAgICAgICAg
ICBvdXQucHJpbnQoIiwuLi4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0LnByaW50
KCIsIiwgcXVhbnRpdHlNYXhDb3VudC51bnNhZmVHZXQoKSk7CisgICAgfQorICAgIG91dC5wcmlu
dCgifSIpOworICAgIGlmIChxdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckdyZWVkeSkKKyAgICAg
ICAgb3V0LnByaW50KCIgZ3JlZWR5Iik7CisgICAgZWxzZSBpZiAocXVhbnRpdHlUeXBlID09IFF1
YW50aWZpZXJOb25HcmVlZHkpCisgICAgICAgIG91dC5wcmludCgiIG5vbi1ncmVlZHkiKTsKK30K
Kwordm9pZCBQYXR0ZXJuVGVybTo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBZYXJyUGF0dGVybiog
dGhpc1BhdHRlcm4sIHVuc2lnbmVkIG5lc3RpbmdEZXB0aCkKK3sKKyAgICBpbmRlbnRGb3JOZXN0
aW5nTGV2ZWwob3V0LCBuZXN0aW5nRGVwdGgpOworCisgICAgaWYgKGludmVydCgpICYmICh0eXBl
ICE9IFR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4gJiYgdHlwZSAhPSBUeXBlUGFyZW50aGV0aWNh
bEFzc2VydGlvbikpCisgICAgICAgIG91dC5wcmludCgibm90ICIpOworCisgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBUeXBlQXNzZXJ0aW9uQk9MOgorICAgICAgICBvdXQucHJpbnRsbigi
Qk9MIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZUFzc2VydGlvbkVPTDoKKyAgICAg
ICAgb3V0LnByaW50bG4oIkVPTCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGVBc3Nl
cnRpb25Xb3JkQm91bmRhcnk6CisgICAgICAgIG91dC5wcmludGxuKCJ3b3JkIGJvdW5kYXJ5Iik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZVBhdHRlcm5DaGFyYWN0ZXI6CisgICAgICAg
IG91dC5wcmludGYoImNoYXJhY3RlciAiKTsKKyAgICAgICAgaWYgKHRoaXNQYXR0ZXJuLT5pZ25v
cmVDYXNlKCkgJiYgaXNBU0NJSUFscGhhKHBhdHRlcm5DaGFyYWN0ZXIpKSB7CisgICAgICAgICAg
ICBkdW1wVUNoYXIzMihvdXQsIHRvQVNDSUlVcHBlcihwYXR0ZXJuQ2hhcmFjdGVyKSk7CisgICAg
ICAgICAgICBvdXQucHJpbnQoIi8iKTsKKyAgICAgICAgICAgIGR1bXBVQ2hhcjMyKG91dCwgdG9B
U0NJSUxvd2VyKHBhdHRlcm5DaGFyYWN0ZXIpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBkdW1wVUNoYXIzMihvdXQsIHBhdHRlcm5DaGFyYWN0ZXIpOworICAgICAgICBkdW1wUXVhbnRp
ZmllcihvdXQpOworICAgICAgICBpZiAocXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENv
dW50KQorICAgICAgICAgICAgb3V0LnByaW50KCIsZnJhbWUgbG9jYXRpb24gIiwgZnJhbWVMb2Nh
dGlvbik7CisgICAgICAgIG91dC5wcmludGxuKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VHlwZUNoYXJhY3RlckNsYXNzOgorICAgICAgICBvdXQucHJpbnQoImNoYXJhY3RlciBjbGFzcyAi
KTsKKyAgICAgICAgaWYgKGNoYXJhY3RlckNsYXNzID09IHRoaXNQYXR0ZXJuLT5uZXdsaW5lQ2hh
cmFjdGVyQ2xhc3MoKSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPG5ld2xpbmU+Iik7CisgICAg
ICAgIGVsc2UgaWYgKGNoYXJhY3RlckNsYXNzID09IHRoaXNQYXR0ZXJuLT5kaWdpdHNDaGFyYWN0
ZXJDbGFzcygpKQorICAgICAgICAgICAgb3V0LnByaW50KCI8ZGlnaXRzPiIpOworICAgICAgICBl
bHNlIGlmIChjaGFyYWN0ZXJDbGFzcyA9PSB0aGlzUGF0dGVybi0+c3BhY2VzQ2hhcmFjdGVyQ2xh
c3MoKSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPHdoaXRlc3BhY2U+Iik7CisgICAgICAgIGVs
c2UgaWYgKGNoYXJhY3RlckNsYXNzID09IHRoaXNQYXR0ZXJuLT53b3JkY2hhckNoYXJhY3RlckNs
YXNzKCkpCisgICAgICAgICAgICBvdXQucHJpbnQoIjx3b3JkPiIpOworICAgICAgICBlbHNlIGlm
IChjaGFyYWN0ZXJDbGFzcyA9PSB0aGlzUGF0dGVybi0+d29yZFVuaWNvZGVJZ25vcmVDYXNlQ2hh
ckNoYXJhY3RlckNsYXNzKCkpCisgICAgICAgICAgICBvdXQucHJpbnQoIjx1bmljb2RlIGlnbm9y
ZSBjYXNlPiIpOworICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXJDbGFzcyA9PSB0aGlzUGF0dGVy
bi0+bm9uZGlnaXRzQ2hhcmFjdGVyQ2xhc3MoKSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPG5v
bi1kaWdpdHM+Iik7CisgICAgICAgIGVsc2UgaWYgKGNoYXJhY3RlckNsYXNzID09IHRoaXNQYXR0
ZXJuLT5ub25zcGFjZXNDaGFyYWN0ZXJDbGFzcygpKQorICAgICAgICAgICAgb3V0LnByaW50KCI8
bm9uLXdoaXRlc3BhY2U+Iik7CisgICAgICAgIGVsc2UgaWYgKGNoYXJhY3RlckNsYXNzID09IHRo
aXNQYXR0ZXJuLT5ub253b3JkY2hhckNoYXJhY3RlckNsYXNzKCkpCisgICAgICAgICAgICBvdXQu
cHJpbnQoIjxub24td29yZD4iKTsKKyAgICAgICAgZWxzZSBpZiAoY2hhcmFjdGVyQ2xhc3MgPT0g
dGhpc1BhdHRlcm4tPm5vbndvcmRVbmljb2RlSWdub3JlQ2FzZUNoYXJDaGFyYWN0ZXJDbGFzcygp
KQorICAgICAgICAgICAgb3V0LnByaW50KCI8dW5pY29kZSBub24taWdub3JlIGNhc2U+Iik7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgYm9vbCBuZWVkTWF0Y2hlc1Jhbmdlc1NlcGVyYXRv
ciA9IGZhbHNlOworCisgICAgICAgICAgICBhdXRvIGR1bXBNYXRjaGVzID0gWyZdIChjb25zdCBj
aGFyKiBwcmVmaXgsIFZlY3RvcjxVQ2hhcjMyPiBtYXRjaGVzKSB7CisgICAgICAgICAgICAgICAg
c2l6ZV90IG1hdGNoZXNTaXplID0gbWF0Y2hlcy5zaXplKCk7CisgICAgICAgICAgICAgICAgaWYg
KG1hdGNoZXNTaXplKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZWVkTWF0Y2hlc1Jhbmdl
c1NlcGVyYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiLCIpOworICAg
ICAgICAgICAgICAgICAgICBuZWVkTWF0Y2hlc1Jhbmdlc1NlcGVyYXRvciA9IHRydWU7CisKKyAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIjooIik7CisgICAgICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF0Y2hlc1NpemU7ICsraSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50KCIsIik7CisgICAgICAgICAgICAgICAgICAgICAgICBkdW1wVUNoYXIzMihvdXQsIG1h
dGNoZXNbaV0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludCgiKSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAg
ICAgICAgIGF1dG8gZHVtcFJhbmdlcyA9IFsmXSAoY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8
Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlcykgeworICAgICAgICAgICAgICAgIHNpemVfdCByYW5nZVNp
emUgPSByYW5nZXMuc2l6ZSgpOworICAgICAgICAgICAgICAgIGlmIChyYW5nZVNpemUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG5lZWRNYXRjaGVzUmFuZ2VzU2VwZXJhdG9yKQorICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIsIik7CisgICAgICAgICAgICAgICAgICAgIG5l
ZWRNYXRjaGVzUmFuZ2VzU2VwZXJhdG9yID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAgICBv
dXQucHJpbnQocHJlZml4LCAicmFuZ2VzOigiKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByYW5nZVNpemU7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIsIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJSYW5nZSByYW5nZSA9IHJhbmdlc1tpXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiKCIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZHVtcFVDaGFyMzIob3V0LCByYW5nZS5iZWdpbik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoIi4uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBkdW1wVUNo
YXIzMihvdXQsIHJhbmdlLmVuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQo
IikiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIikiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworCisgICAgICAgICAg
ICBvdXQucHJpbnQoIlsiKTsKKyAgICAgICAgICAgIGR1bXBNYXRjaGVzKCJBU0NJSSIsIGNoYXJh
Y3RlckNsYXNzLT5tX21hdGNoZXMpOworICAgICAgICAgICAgZHVtcFJhbmdlcygiQVNDSUkiLCBj
aGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMpOworICAgICAgICAgICAgZHVtcE1hdGNoZXMoIlVuaWNv
ZGUiLCBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzVW5pY29kZSk7CisgICAgICAgICAgICBkdW1w
UmFuZ2VzKCJVbmljb2RlIiwgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzVW5pY29kZSk7CisgICAg
ICAgICAgICBvdXQucHJpbnQoIl0iKTsKKyAgICAgICAgfQorICAgICAgICBkdW1wUXVhbnRpZmll
cihvdXQpOworICAgICAgICBpZiAocXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50
IHx8IHRoaXNQYXR0ZXJuLT51bmljb2RlKCkpCisgICAgICAgICAgICBvdXQucHJpbnQoIixmcmFt
ZSBsb2NhdGlvbiAiLCBmcmFtZUxvY2F0aW9uKTsKKyAgICAgICAgb3V0LnByaW50bG4oKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlQmFja1JlZmVyZW5jZToKKyAgICAgICAgb3V0LnBy
aW50KCJiYWNrIHJlZmVyZW5jZSB0byBzdWJwYXR0ZXJuICMiLCBiYWNrUmVmZXJlbmNlU3VicGF0
dGVybklkKTsKKyAgICAgICAgb3V0LnByaW50bG4oIixmcmFtZSBsb2NhdGlvbiAiLCBmcmFtZUxv
Y2F0aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlRm9yd2FyZFJlZmVyZW5jZToK
KyAgICAgICAgb3V0LnByaW50bG4oImZvcndhcmQgcmVmZXJlbmNlIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVHlwZVBhcmVudGhlc2VzU3VicGF0dGVybjoKKyAgICAgICAgaWYgKG1fY2Fw
dHVyZSkKKyAgICAgICAgICAgIG91dC5wcmludCgiY2FwdHVyZWQgIik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG91dC5wcmludCgibm9uLWNhcHR1cmVkICIpOworCisgICAgICAgIFVfRkFM
TFRIUk9VR0g7CisgICAgY2FzZSBUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbjoKKyAgICAgICAg
aWYgKG1faW52ZXJ0KQorICAgICAgICAgICAgb3V0LnByaW50KCJpbnZlcnRlZCAiKTsKKworICAg
ICAgICBpZiAodHlwZSA9PSBUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuKQorICAgICAgICAgICAg
b3V0LnByaW50KCJzdWJwYXR0ZXJuIik7CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gVHlwZVBh
cmVudGhldGljYWxBc3NlcnRpb24pCisgICAgICAgICAgICBvdXQucHJpbnQoImFzc2VydGlvbiIp
OworCisgICAgICAgIGlmIChtX2NhcHR1cmUpCisgICAgICAgICAgICBvdXQucHJpbnQoIiAjIiwg
cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKKworICAgICAgICBkdW1wUXVhbnRpZmllcihvdXQp
OworCisgICAgICAgIGlmIChwYXJlbnRoZXNlcy5pc0NvcHkpCisgICAgICAgICAgICBvdXQucHJp
bnQoIixjb3B5Iik7CisKKyAgICAgICAgaWYgKHBhcmVudGhlc2VzLmlzVGVybWluYWwpCisgICAg
ICAgICAgICBvdXQucHJpbnQoIix0ZXJtaW5hbCIpOworCisgICAgICAgIGlmIChxdWFudGl0eU1h
eENvdW50ICE9IDEgfHwgcGFyZW50aGVzZXMuaXNDb3B5IHx8IHF1YW50aXR5VHlwZSAhPSBRdWFu
dGlmaWVyRml4ZWRDb3VudCkKKyAgICAgICAgICAgIG91dC5wcmludGxuKCIsZnJhbWUgbG9jYXRp
b24gIiwgZnJhbWVMb2NhdGlvbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmlu
dGxuKCk7CisKKyAgICAgICAgaWYgKHBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX2FsdGVybmF0
aXZlcy5zaXplKCkgPiAxKSB7CisgICAgICAgICAgICBpbmRlbnRGb3JOZXN0aW5nTGV2ZWwob3V0
LCBuZXN0aW5nRGVwdGggKyAxKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGFsdGVybmF0aXZlRnJh
bWVMb2NhdGlvbiA9IGZyYW1lTG9jYXRpb247CisgICAgICAgICAgICBpZiAocXVhbnRpdHlUeXBl
ICE9IFF1YW50aWZpZXJGaXhlZENvdW50KQorICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlRnJh
bWVMb2NhdGlvbiArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09u
Y2U7CisgICAgICAgICAgICBvdXQucHJpbnRsbigiYWx0ZXJuYXRpdmUgbGlzdCxmcmFtZSBsb2Nh
dGlvbiAiLCBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24pOworICAgICAgICB9CisKKyAgICAgICAg
cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPmR1bXAob3V0LCB0aGlzUGF0dGVybiwgbmVzdGluZ0Rl
cHRoICsgMSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZURvdFN0YXJFbmNsb3N1cmU6
CisgICAgICAgIG91dC5wcmludGxuKCIuKiBlbmNsb3N1cmUsZnJhbWUgbG9jYXRpb24gIiwgdGhp
c1BhdHRlcm4tPm1faW5pdGlhbFN0YXJ0VmFsdWVGcmFtZUxvY2F0aW9uKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCit2b2lkIFBhdHRlcm5EaXNqdW5jdGlvbjo6ZHVtcChQcmludFN0cmVh
bSYgb3V0LCBZYXJyUGF0dGVybiogdGhpc1BhdHRlcm4sIHVuc2lnbmVkIG5lc3RpbmdEZXB0aCA9
IDApCit7CisgICAgdW5zaWduZWQgYWx0ZXJuYXRpdmVDb3VudCA9IG1fYWx0ZXJuYXRpdmVzLnNp
emUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWx0ZXJuYXRpdmVDb3VudDsgKytp
KSB7CisgICAgICAgIGluZGVudEZvck5lc3RpbmdMZXZlbChvdXQsIG5lc3RpbmdEZXB0aCk7Cisg
ICAgICAgIGlmIChhbHRlcm5hdGl2ZUNvdW50ID4gMSkKKyAgICAgICAgICAgIG91dC5wcmludCgi
YWx0ZXJuYXRpdmUgIyIsIGksICI6ICIpOworICAgICAgICBtX2FsdGVybmF0aXZlc1tpXS5nZXQo
KS0+ZHVtcChvdXQsIHRoaXNQYXR0ZXJuLCBuZXN0aW5nRGVwdGggKyAoYWx0ZXJuYXRpdmVDb3Vu
dCA+IDEpKTsKKyAgICB9Cit9CisKK3ZvaWQgWWFyclBhdHRlcm46OmR1bXBQYXR0ZXJuKGNvbnN0
IFN0cmluZyYgcGF0dGVyblN0cmluZykKK3sKKyAgICBkdW1wUGF0dGVybihXVEY6OmRhdGFGaWxl
KCksIHBhdHRlcm5TdHJpbmcpOworfQorCit2b2lkIFlhcnJQYXR0ZXJuOjpkdW1wUGF0dGVybihQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcpCit7CisgICAgb3V0
LnByaW50KCJSZWdFeHAgcGF0dGVybiBmb3IgLyIpOworICAgIG91dC5wcmludChwYXR0ZXJuU3Ry
aW5nKTsKKyAgICBvdXQucHJpbnQoIi8iKTsKKyAgICBpZiAoZ2xvYmFsKCkpCisgICAgICAgIG91
dC5wcmludCgiZyIpOworICAgIGlmIChpZ25vcmVDYXNlKCkpCisgICAgICAgIG91dC5wcmludCgi
aSIpOworICAgIGlmIChtdWx0aWxpbmUoKSkKKyAgICAgICAgb3V0LnByaW50KCJtIik7CisgICAg
aWYgKHVuaWNvZGUoKSkKKyAgICAgICAgb3V0LnByaW50KCJ1Iik7CisgICAgaWYgKHN0aWNreSgp
KQorICAgICAgICBvdXQucHJpbnQoInkiKTsKKyAgICBpZiAobV9mbGFncyAhPSBOb0ZsYWdzKSB7
CisgICAgICAgIGJvb2wgcHJpbnRTZXBlcmF0b3IgPSBmYWxzZTsKKyAgICAgICAgb3V0LnByaW50
KCIgKCIpOworICAgICAgICBpZiAoZ2xvYmFsKCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludCgi
Z2xvYmFsIik7CisgICAgICAgICAgICBwcmludFNlcGVyYXRvciA9IHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGlnbm9yZUNhc2UoKSkgeworICAgICAgICAgICAgaWYgKHByaW50U2VwZXJh
dG9yKQorICAgICAgICAgICAgICAgIG91dC5wcmludCgifCIpOworICAgICAgICAgICAgb3V0LnBy
aW50KCJpZ25vcmUgY2FzZSIpOworICAgICAgICAgICAgcHJpbnRTZXBlcmF0b3IgPSB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIGlmIChtdWx0aWxpbmUoKSkgeworICAgICAgICAgICAgaWYgKHBy
aW50U2VwZXJhdG9yKQorICAgICAgICAgICAgICAgIG91dC5wcmludCgifCIpOworICAgICAgICAg
ICAgb3V0LnByaW50KCJtdWx0aWxpbmUiKTsKKyAgICAgICAgICAgIHByaW50U2VwZXJhdG9yID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodW5pY29kZSgpKSB7CisgICAgICAgICAgICBp
ZiAocHJpbnRTZXBlcmF0b3IpCisgICAgICAgICAgICAgICAgb3V0LnByaW50KCJ8Iik7CisgICAg
ICAgICAgICBvdXQucHJpbnQoInVuaWNvZGUiKTsKKyAgICAgICAgICAgIHByaW50U2VwZXJhdG9y
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RpY2t5KCkpIHsKKyAgICAgICAgICAg
IGlmIChwcmludFNlcGVyYXRvcikKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoInwiKTsKKyAg
ICAgICAgICAgIG91dC5wcmludCgic3RpY2t5Iik7CisgICAgICAgICAgICBwcmludFNlcGVyYXRv
ciA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgb3V0LnByaW50KCIpIik7CisgICAgfQorICAg
IG91dC5wcmludCgiOlxuIik7CisgICAgbV9ib2R5LT5kdW1wKG91dCwgdGhpcyk7Cit9CisKIH0g
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCShyZXZpc2lv
biAyMTk0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTMgQEAKIAogI2luY2x1ZGUgIlJlZ0V4cEtleS5o
IgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgorI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKIAorc3RydWN0
IFlhcnJQYXR0ZXJuOwogc3RydWN0IFBhdHRlcm5EaXNqdW5jdGlvbjsKIAogc3RydWN0IENoYXJh
Y3RlclJhbmdlIHsKQEAgLTIyMiw2ICsyMjQsOSBAQCBzdHJ1Y3QgUGF0dGVyblRlcm0gewogICAg
ICAgICBxdWFudGl0eU1heENvdW50ID0gbWF4Q291bnQ7CiAgICAgICAgIHF1YW50aXR5VHlwZSA9
IHR5cGU7CiAgICAgfQorCisgICAgdm9pZCBkdW1wUXVhbnRpZmllcihQcmludFN0cmVhbSYpOwor
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYsIFlhcnJQYXR0ZXJuKiwgdW5zaWduZWQpOwogfTsK
IAogc3RydWN0IFBhdHRlcm5BbHRlcm5hdGl2ZSB7CkBAIC0yNTgsNiArMjYzLDggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9vbmNlVGhyb3VnaDsKICAgICB9CiAKKyAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mLCBZYXJyUGF0dGVybiosIHVuc2lnbmVkKTsKKwogICAgIFZlY3RvcjxQYXR0
ZXJuVGVybT4gbV90ZXJtczsKICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIG1fcGFyZW50OwogICAg
IHVuc2lnbmVkIG1fbWluaW11bVNpemU7CkBAIC0yODIsNiArMjg5LDggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGF0dGVybkFsdGVybmF0aXZlKj4obV9hbHRlcm5hdGl2
ZXMubGFzdCgpLmdldCgpKTsKICAgICB9CiAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBZ
YXJyUGF0dGVybiosIHVuc2lnbmVkKTsKKwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGF0
dGVybkFsdGVybmF0aXZlPj4gbV9hbHRlcm5hdGl2ZXM7CiAgICAgUGF0dGVybkFsdGVybmF0aXZl
KiBtX3BhcmVudDsKICAgICB1bnNpZ25lZCBtX21pbmltdW1TaXplOwpAQCAtNDQ4LDYgKzQ1Nywx
MCBAQCBzdHJ1Y3QgWWFyclBhdHRlcm4gewogICAgICAgICByZXR1cm4gbm9ud29yZFVuaWNvZGVJ
Z25vcmVDYXNlY2hhckNhY2hlZDsKICAgICB9CiAKKyAgICB2b2lkIGR1bXBQYXR0ZXJuKGNvbnN0
IFN0cmluZyYgcGF0dGVybik7CisgICAgdm9pZCBkdW1wUGF0dGVybihQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBTdHJpbmcmIHBhdHRlcm4pOworCisgICAgYm9vbCBnbG9iYWwoKSBjb25zdCB7IHJl
dHVybiBtX2ZsYWdzICYgRmxhZ0dsb2JhbDsgfQogICAgIGJvb2wgaWdub3JlQ2FzZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnSWdub3JlQ2FzZTsgfQogICAgIGJvb2wgbXVsdGlsaW5l
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdNdWx0aWxpbmU7IH0KICAgICBib29sIHN0
aWNreSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnU3RpY2t5OyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315747</attachid>
            <date>2017-07-17 19:10:32 -0700</date>
            <delta_ts>2017-07-18 00:02:38 -0700</delta_ts>
            <desc>Updated patch - replaced U_FALLTHROUGH with FALLTHROUGH</desc>
            <filename>174601-2.patch</filename>
            <type>text/plain</type>
            <size>14465</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE5NTg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE3LTA3LTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFtKU0NdIFRoZXJlIHNob3VsZCBiZSBhIGRlYnVnIG9wdGlvbiB0byBkdW1wIGEgY29tcGls
ZWQgUmVnRXhwIFBhdHRlcm4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGVkIHRoZSBkZWJ1ZyBvcHRpb24gZHVtcENvbXBpbGVkUmVnRXhwUGF0dGVy
bnMgd2hpY2ggd2lsbCBkdW1wIHRoZSBZYXJyUGF0dGVybiBhbmQgcmVsYXRlZAorICAgICAgICBv
YmplY3RzIGFmdGVyIGEgcmVndWxhciBleHByZXNzaW9uIGhhcyBiZWVuIGNvbXBpbGVkLgorCisg
ICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5j
cHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpjb21waWxlKToKKyAgICAgICAg
KEpTQzo6WWFycjo6aW5kZW50Rm9yTmVzdGluZ0xldmVsKToKKyAgICAgICAgKEpTQzo6WWFycjo6
ZHVtcFVDaGFyMzIpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuQWx0ZXJuYXRpdmU6OmR1
bXApOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuVGVybTo6ZHVtcFF1YW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuVGVybTo6ZHVtcCk6CisgICAgICAgIChKU0M6Ollh
cnI6OlBhdHRlcm5EaXNqdW5jdGlvbjo6ZHVtcCk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQ
YXR0ZXJuOjpkdW1wUGF0dGVybik6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5oOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6Z2xvYmFsKToKKwogMjAxNy0wNy0xNyAgTWlj
aGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtl
XSBNYWNyb3MgaW4gV2ViS2l0TWFjcm9zLmNtYWtlIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoIFdF
QktJVF8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCShyZXZpc2lvbiAyMTk0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzMiw2ICs0MzIsOCBAQCB0eXBlZGVmIGNvbnN0
IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICBcCiAgICAgdih1bnNpZ25lZCwgcHJvdG90eXBlSGl0
Q291bnRGb3JMTEludENhY2hpbmcsIDIsIE5vcm1hbCwgIk51bWJlciBvZiBwcm90b3R5cGUgcHJv
cGVydHkgaGl0cyBiZWZvcmUgY2FjaGluZyBhIHByb3RvdHlwZSBpbiB0aGUgTExJbnQuIEEgY291
bnQgb2YgMCBtZWFucyBuZXZlciBjYWNoZS4iKSBcCiAgICAgXAorICAgIHYoYm9vbCwgZHVtcENv
bXBpbGVkUmVnRXhwUGF0dGVybnMsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICBcCiAg
ICAgdihib29sLCBkdW1wTW9kdWxlUmVjb3JkLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihib29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwgTm9ybWFsLCBudWxscHRy
KSBcCiAgICAgdihib29sLCBleHBvc2VJbnRlcm5hbE1vZHVsZUxvYWRlciwgZmFsc2UsIE5vcm1h
bCwgImV4cG9zZSB0aGUgaW50ZXJuYWwgbW9kdWxlIGxvYWRlciBvYmplY3QgdG8gdGhlIGdsb2Jh
bCBzcGFjZSBmb3IgZGVidWdnaW5nIikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclBhdHRlcm4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJQYXR0ZXJuLmNwcAkocmV2aXNpb24gMjE5NDA2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsyNywx
MSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIllhcnJQYXR0ZXJuLmgiCiAKKyNp
bmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiWWFyci5oIgogI2luY2x1ZGUgIllhcnJDYW5v
bmljYWxpemUuaCIKICNpbmNsdWRlICJZYXJyUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL0RhdGFM
b2cuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERh
dGEuaD4KIApAQCAtOTU4LDYgKzk2MCw5IEBAIGNvbnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjpjb21w
aWxlKGNvbnN0IFMKICAgICBpZiAoY29uc3QgY2hhciogZXJyb3IgPSBjb25zdHJ1Y3Rvci5zZXR1
cE9mZnNldHMoKSkKICAgICAgICAgcmV0dXJuIGVycm9yOwogCisgICAgaWYgKE9wdGlvbnM6OmR1
bXBDb21waWxlZFJlZ0V4cFBhdHRlcm5zKCkpCisgICAgICAgIGR1bXBQYXR0ZXJuKHBhdHRlcm5T
dHJpbmcpOworCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTk4Myw0ICs5ODgsMjgyIEBA
IFlhcnJQYXR0ZXJuOjpZYXJyUGF0dGVybihjb25zdCBTdHJpbmcmIHAKICAgICAqZXJyb3IgPSBj
b21waWxlKHBhdHRlcm4sIHN0YWNrTGltaXQpOwogfQogCitzdGF0aWMgdm9pZCBpbmRlbnRGb3JO
ZXN0aW5nTGV2ZWwoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgbmVzdGluZ0RlcHRoKQorewor
ICAgIG91dC5wcmludCgiICAgICIpOworICAgIGZvciAoOyBuZXN0aW5nRGVwdGg7IC0tbmVzdGlu
Z0RlcHRoKQorICAgICAgICBvdXQucHJpbnQoIiAgIik7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBV
Q2hhcjMyKFByaW50U3RyZWFtJiBvdXQsIFVDaGFyMzIgYykKK3sKKyAgICBpZiAoYyA+PSAnICcm
JiBjIDw9IDB4ZmYpCisgICAgICAgIG91dC5wcmludGYoIiclYyciLCBzdGF0aWNfY2FzdDxjaGFy
PihjKSk7CisgICAgZWxzZQorICAgICAgICBvdXQucHJpbnRmKCIweCUwNHgiLCBjKTsKKworfQor
Cit2b2lkIFBhdHRlcm5BbHRlcm5hdGl2ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBZYXJyUGF0
dGVybiogdGhpc1BhdHRlcm4sIHVuc2lnbmVkIG5lc3RpbmdEZXB0aCkKK3sKKyAgICBvdXQucHJp
bnQoIm1pbmltdW0gc2l6ZTogIiwgbV9taW5pbXVtU2l6ZSk7CisgICAgaWYgKG1faGFzRml4ZWRT
aXplKQorICAgICAgICBvdXQucHJpbnQoIixmaXhlZCBzaXplIik7CisgICAgaWYgKG1fb25jZVRo
cm91Z2gpCisgICAgICAgIG91dC5wcmludCgiLG9uY2UgdGhyb3VnaCIpOworICAgIGlmIChtX3N0
YXJ0c1dpdGhCT0wpCisgICAgICAgIG91dC5wcmludCgiLHN0YXJ0cyB3aXRoIF4iKTsKKyAgICBp
ZiAobV9jb250YWluc0JPTCkKKyAgICAgICAgb3V0LnByaW50KCIsY29udGFpbnMgXiIpOworICAg
IG91dC5wcmludCgiXG4iKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90ZXJtcy5z
aXplKCk7ICsraSkKKyAgICAgICAgbV90ZXJtc1tpXS5kdW1wKG91dCwgdGhpc1BhdHRlcm4sIG5l
c3RpbmdEZXB0aCk7Cit9CisKK3ZvaWQgUGF0dGVyblRlcm06OmR1bXBRdWFudGlmaWVyKFByaW50
U3RyZWFtJiBvdXQpCit7CisgICAgaWYgKHF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRD
b3VudCAmJiBxdWFudGl0eU1pbkNvdW50ID09IDEgJiYgcXVhbnRpdHlNYXhDb3VudCA9PSAxKQor
ICAgICAgICByZXR1cm47CisgICAgb3V0LnByaW50KCIgeyIsIHF1YW50aXR5TWluQ291bnQudW5z
YWZlR2V0KCkpOworICAgIGlmIChxdWFudGl0eU1pbkNvdW50ICE9IHF1YW50aXR5TWF4Q291bnQp
IHsKKyAgICAgICAgaWYgKHF1YW50aXR5TWF4Q291bnQgPT0gVUlOVF9NQVgpCisgICAgICAgICAg
ICBvdXQucHJpbnQoIiwuLi4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0LnByaW50
KCIsIiwgcXVhbnRpdHlNYXhDb3VudC51bnNhZmVHZXQoKSk7CisgICAgfQorICAgIG91dC5wcmlu
dCgifSIpOworICAgIGlmIChxdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckdyZWVkeSkKKyAgICAg
ICAgb3V0LnByaW50KCIgZ3JlZWR5Iik7CisgICAgZWxzZSBpZiAocXVhbnRpdHlUeXBlID09IFF1
YW50aWZpZXJOb25HcmVlZHkpCisgICAgICAgIG91dC5wcmludCgiIG5vbi1ncmVlZHkiKTsKK30K
Kwordm9pZCBQYXR0ZXJuVGVybTo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBZYXJyUGF0dGVybiog
dGhpc1BhdHRlcm4sIHVuc2lnbmVkIG5lc3RpbmdEZXB0aCkKK3sKKyAgICBpbmRlbnRGb3JOZXN0
aW5nTGV2ZWwob3V0LCBuZXN0aW5nRGVwdGgpOworCisgICAgaWYgKGludmVydCgpICYmICh0eXBl
ICE9IFR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4gJiYgdHlwZSAhPSBUeXBlUGFyZW50aGV0aWNh
bEFzc2VydGlvbikpCisgICAgICAgIG91dC5wcmludCgibm90ICIpOworCisgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBUeXBlQXNzZXJ0aW9uQk9MOgorICAgICAgICBvdXQucHJpbnRsbigi
Qk9MIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZUFzc2VydGlvbkVPTDoKKyAgICAg
ICAgb3V0LnByaW50bG4oIkVPTCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGVBc3Nl
cnRpb25Xb3JkQm91bmRhcnk6CisgICAgICAgIG91dC5wcmludGxuKCJ3b3JkIGJvdW5kYXJ5Iik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZVBhdHRlcm5DaGFyYWN0ZXI6CisgICAgICAg
IG91dC5wcmludGYoImNoYXJhY3RlciAiKTsKKyAgICAgICAgaWYgKHRoaXNQYXR0ZXJuLT5pZ25v
cmVDYXNlKCkgJiYgaXNBU0NJSUFscGhhKHBhdHRlcm5DaGFyYWN0ZXIpKSB7CisgICAgICAgICAg
ICBkdW1wVUNoYXIzMihvdXQsIHRvQVNDSUlVcHBlcihwYXR0ZXJuQ2hhcmFjdGVyKSk7CisgICAg
ICAgICAgICBvdXQucHJpbnQoIi8iKTsKKyAgICAgICAgICAgIGR1bXBVQ2hhcjMyKG91dCwgdG9B
U0NJSUxvd2VyKHBhdHRlcm5DaGFyYWN0ZXIpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBkdW1wVUNoYXIzMihvdXQsIHBhdHRlcm5DaGFyYWN0ZXIpOworICAgICAgICBkdW1wUXVhbnRp
ZmllcihvdXQpOworICAgICAgICBpZiAocXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENv
dW50KQorICAgICAgICAgICAgb3V0LnByaW50KCIsZnJhbWUgbG9jYXRpb24gIiwgZnJhbWVMb2Nh
dGlvbik7CisgICAgICAgIG91dC5wcmludGxuKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VHlwZUNoYXJhY3RlckNsYXNzOgorICAgICAgICBvdXQucHJpbnQoImNoYXJhY3RlciBjbGFzcyAi
KTsKKyAgICAgICAgaWYgKGNoYXJhY3RlckNsYXNzID09IHRoaXNQYXR0ZXJuLT5uZXdsaW5lQ2hh
cmFjdGVyQ2xhc3MoKSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPG5ld2xpbmU+Iik7CisgICAg
ICAgIGVsc2UgaWYgKGNoYXJhY3RlckNsYXNzID09IHRoaXNQYXR0ZXJuLT5kaWdpdHNDaGFyYWN0
ZXJDbGFzcygpKQorICAgICAgICAgICAgb3V0LnByaW50KCI8ZGlnaXRzPiIpOworICAgICAgICBl
bHNlIGlmIChjaGFyYWN0ZXJDbGFzcyA9PSB0aGlzUGF0dGVybi0+c3BhY2VzQ2hhcmFjdGVyQ2xh
c3MoKSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPHdoaXRlc3BhY2U+Iik7CisgICAgICAgIGVs
c2UgaWYgKGNoYXJhY3RlckNsYXNzID09IHRoaXNQYXR0ZXJuLT53b3JkY2hhckNoYXJhY3RlckNs
YXNzKCkpCisgICAgICAgICAgICBvdXQucHJpbnQoIjx3b3JkPiIpOworICAgICAgICBlbHNlIGlm
IChjaGFyYWN0ZXJDbGFzcyA9PSB0aGlzUGF0dGVybi0+d29yZFVuaWNvZGVJZ25vcmVDYXNlQ2hh
ckNoYXJhY3RlckNsYXNzKCkpCisgICAgICAgICAgICBvdXQucHJpbnQoIjx1bmljb2RlIGlnbm9y
ZSBjYXNlPiIpOworICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXJDbGFzcyA9PSB0aGlzUGF0dGVy
bi0+bm9uZGlnaXRzQ2hhcmFjdGVyQ2xhc3MoKSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPG5v
bi1kaWdpdHM+Iik7CisgICAgICAgIGVsc2UgaWYgKGNoYXJhY3RlckNsYXNzID09IHRoaXNQYXR0
ZXJuLT5ub25zcGFjZXNDaGFyYWN0ZXJDbGFzcygpKQorICAgICAgICAgICAgb3V0LnByaW50KCI8
bm9uLXdoaXRlc3BhY2U+Iik7CisgICAgICAgIGVsc2UgaWYgKGNoYXJhY3RlckNsYXNzID09IHRo
aXNQYXR0ZXJuLT5ub253b3JkY2hhckNoYXJhY3RlckNsYXNzKCkpCisgICAgICAgICAgICBvdXQu
cHJpbnQoIjxub24td29yZD4iKTsKKyAgICAgICAgZWxzZSBpZiAoY2hhcmFjdGVyQ2xhc3MgPT0g
dGhpc1BhdHRlcm4tPm5vbndvcmRVbmljb2RlSWdub3JlQ2FzZUNoYXJDaGFyYWN0ZXJDbGFzcygp
KQorICAgICAgICAgICAgb3V0LnByaW50KCI8dW5pY29kZSBub24taWdub3JlIGNhc2U+Iik7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgYm9vbCBuZWVkTWF0Y2hlc1Jhbmdlc1NlcGVyYXRv
ciA9IGZhbHNlOworCisgICAgICAgICAgICBhdXRvIGR1bXBNYXRjaGVzID0gWyZdIChjb25zdCBj
aGFyKiBwcmVmaXgsIFZlY3RvcjxVQ2hhcjMyPiBtYXRjaGVzKSB7CisgICAgICAgICAgICAgICAg
c2l6ZV90IG1hdGNoZXNTaXplID0gbWF0Y2hlcy5zaXplKCk7CisgICAgICAgICAgICAgICAgaWYg
KG1hdGNoZXNTaXplKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZWVkTWF0Y2hlc1Jhbmdl
c1NlcGVyYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiLCIpOworICAg
ICAgICAgICAgICAgICAgICBuZWVkTWF0Y2hlc1Jhbmdlc1NlcGVyYXRvciA9IHRydWU7CisKKyAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIjooIik7CisgICAgICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF0Y2hlc1NpemU7ICsraSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50KCIsIik7CisgICAgICAgICAgICAgICAgICAgICAgICBkdW1wVUNoYXIzMihvdXQsIG1h
dGNoZXNbaV0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludCgiKSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAg
ICAgICAgIGF1dG8gZHVtcFJhbmdlcyA9IFsmXSAoY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8
Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlcykgeworICAgICAgICAgICAgICAgIHNpemVfdCByYW5nZVNp
emUgPSByYW5nZXMuc2l6ZSgpOworICAgICAgICAgICAgICAgIGlmIChyYW5nZVNpemUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG5lZWRNYXRjaGVzUmFuZ2VzU2VwZXJhdG9yKQorICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIsIik7CisgICAgICAgICAgICAgICAgICAgIG5l
ZWRNYXRjaGVzUmFuZ2VzU2VwZXJhdG9yID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAgICBv
dXQucHJpbnQocHJlZml4LCAicmFuZ2VzOigiKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByYW5nZVNpemU7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIsIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJSYW5nZSByYW5nZSA9IHJhbmdlc1tpXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiKCIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZHVtcFVDaGFyMzIob3V0LCByYW5nZS5iZWdpbik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoIi4uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBkdW1wVUNo
YXIzMihvdXQsIHJhbmdlLmVuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQo
IikiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIikiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworCisgICAgICAgICAg
ICBvdXQucHJpbnQoIlsiKTsKKyAgICAgICAgICAgIGR1bXBNYXRjaGVzKCJBU0NJSSIsIGNoYXJh
Y3RlckNsYXNzLT5tX21hdGNoZXMpOworICAgICAgICAgICAgZHVtcFJhbmdlcygiQVNDSUkiLCBj
aGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMpOworICAgICAgICAgICAgZHVtcE1hdGNoZXMoIlVuaWNv
ZGUiLCBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzVW5pY29kZSk7CisgICAgICAgICAgICBkdW1w
UmFuZ2VzKCJVbmljb2RlIiwgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzVW5pY29kZSk7CisgICAg
ICAgICAgICBvdXQucHJpbnQoIl0iKTsKKyAgICAgICAgfQorICAgICAgICBkdW1wUXVhbnRpZmll
cihvdXQpOworICAgICAgICBpZiAocXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50
IHx8IHRoaXNQYXR0ZXJuLT51bmljb2RlKCkpCisgICAgICAgICAgICBvdXQucHJpbnQoIixmcmFt
ZSBsb2NhdGlvbiAiLCBmcmFtZUxvY2F0aW9uKTsKKyAgICAgICAgb3V0LnByaW50bG4oKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlQmFja1JlZmVyZW5jZToKKyAgICAgICAgb3V0LnBy
aW50KCJiYWNrIHJlZmVyZW5jZSB0byBzdWJwYXR0ZXJuICMiLCBiYWNrUmVmZXJlbmNlU3VicGF0
dGVybklkKTsKKyAgICAgICAgb3V0LnByaW50bG4oIixmcmFtZSBsb2NhdGlvbiAiLCBmcmFtZUxv
Y2F0aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlRm9yd2FyZFJlZmVyZW5jZToK
KyAgICAgICAgb3V0LnByaW50bG4oImZvcndhcmQgcmVmZXJlbmNlIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVHlwZVBhcmVudGhlc2VzU3VicGF0dGVybjoKKyAgICAgICAgaWYgKG1fY2Fw
dHVyZSkKKyAgICAgICAgICAgIG91dC5wcmludCgiY2FwdHVyZWQgIik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG91dC5wcmludCgibm9uLWNhcHR1cmVkICIpOworCisgICAgICAgIEZBTExU
SFJPVUdIOworICAgIGNhc2UgVHlwZVBhcmVudGhldGljYWxBc3NlcnRpb246CisgICAgICAgIGlm
IChtX2ludmVydCkKKyAgICAgICAgICAgIG91dC5wcmludCgiaW52ZXJ0ZWQgIik7CisKKyAgICAg
ICAgaWYgKHR5cGUgPT0gVHlwZVBhcmVudGhlc2VzU3VicGF0dGVybikKKyAgICAgICAgICAgIG91
dC5wcmludCgic3VicGF0dGVybiIpOworICAgICAgICBlbHNlIGlmICh0eXBlID09IFR5cGVQYXJl
bnRoZXRpY2FsQXNzZXJ0aW9uKQorICAgICAgICAgICAgb3V0LnByaW50KCJhc3NlcnRpb24iKTsK
KworICAgICAgICBpZiAobV9jYXB0dXJlKQorICAgICAgICAgICAgb3V0LnByaW50KCIgIyIsIHBh
cmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CisKKyAgICAgICAgZHVtcFF1YW50aWZpZXIob3V0KTsK
KworICAgICAgICBpZiAocGFyZW50aGVzZXMuaXNDb3B5KQorICAgICAgICAgICAgb3V0LnByaW50
KCIsY29weSIpOworCisgICAgICAgIGlmIChwYXJlbnRoZXNlcy5pc1Rlcm1pbmFsKQorICAgICAg
ICAgICAgb3V0LnByaW50KCIsdGVybWluYWwiKTsKKworICAgICAgICBpZiAocXVhbnRpdHlNYXhD
b3VudCAhPSAxIHx8IHBhcmVudGhlc2VzLmlzQ29weSB8fCBxdWFudGl0eVR5cGUgIT0gUXVhbnRp
ZmllckZpeGVkQ291bnQpCisgICAgICAgICAgICBvdXQucHJpbnRsbigiLGZyYW1lIGxvY2F0aW9u
ICIsIGZyYW1lTG9jYXRpb24pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQucHJpbnRs
bigpOworCisgICAgICAgIGlmIChwYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2
ZXMuc2l6ZSgpID4gMSkgeworICAgICAgICAgICAgaW5kZW50Rm9yTmVzdGluZ0xldmVsKG91dCwg
bmVzdGluZ0RlcHRoICsgMSk7CisgICAgICAgICAgICB1bnNpZ25lZCBhbHRlcm5hdGl2ZUZyYW1l
TG9jYXRpb24gPSBmcmFtZUxvY2F0aW9uOworICAgICAgICAgICAgaWYgKHF1YW50aXR5VHlwZSAh
PSBRdWFudGlmaWVyRml4ZWRDb3VudCkKKyAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZUZyYW1l
TG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXNPbmNl
OworICAgICAgICAgICAgb3V0LnByaW50bG4oImFsdGVybmF0aXZlIGxpc3QsZnJhbWUgbG9jYXRp
b24gIiwgYWx0ZXJuYXRpdmVGcmFtZUxvY2F0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIHBh
cmVudGhlc2VzLmRpc2p1bmN0aW9uLT5kdW1wKG91dCwgdGhpc1BhdHRlcm4sIG5lc3RpbmdEZXB0
aCArIDEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGVEb3RTdGFyRW5jbG9zdXJlOgor
ICAgICAgICBvdXQucHJpbnRsbigiLiogZW5jbG9zdXJlLGZyYW1lIGxvY2F0aW9uICIsIHRoaXNQ
YXR0ZXJuLT5tX2luaXRpYWxTdGFydFZhbHVlRnJhbWVMb2NhdGlvbik7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKwordm9pZCBQYXR0ZXJuRGlzanVuY3Rpb246OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCwgWWFyclBhdHRlcm4qIHRoaXNQYXR0ZXJuLCB1bnNpZ25lZCBuZXN0aW5nRGVwdGggPSAw
KQoreworICAgIHVuc2lnbmVkIGFsdGVybmF0aXZlQ291bnQgPSBtX2FsdGVybmF0aXZlcy5zaXpl
KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFsdGVybmF0aXZlQ291bnQ7ICsraSkg
eworICAgICAgICBpbmRlbnRGb3JOZXN0aW5nTGV2ZWwob3V0LCBuZXN0aW5nRGVwdGgpOworICAg
ICAgICBpZiAoYWx0ZXJuYXRpdmVDb3VudCA+IDEpCisgICAgICAgICAgICBvdXQucHJpbnQoImFs
dGVybmF0aXZlICMiLCBpLCAiOiAiKTsKKyAgICAgICAgbV9hbHRlcm5hdGl2ZXNbaV0uZ2V0KCkt
PmR1bXAob3V0LCB0aGlzUGF0dGVybiwgbmVzdGluZ0RlcHRoICsgKGFsdGVybmF0aXZlQ291bnQg
PiAxKSk7CisgICAgfQorfQorCit2b2lkIFlhcnJQYXR0ZXJuOjpkdW1wUGF0dGVybihjb25zdCBT
dHJpbmcmIHBhdHRlcm5TdHJpbmcpCit7CisgICAgZHVtcFBhdHRlcm4oV1RGOjpkYXRhRmlsZSgp
LCBwYXR0ZXJuU3RyaW5nKTsKK30KKwordm9pZCBZYXJyUGF0dGVybjo6ZHVtcFBhdHRlcm4oUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nKQoreworICAgIG91dC5w
cmludCgiUmVnRXhwIHBhdHRlcm4gZm9yIC8iKTsKKyAgICBvdXQucHJpbnQocGF0dGVyblN0cmlu
Zyk7CisgICAgb3V0LnByaW50KCIvIik7CisgICAgaWYgKGdsb2JhbCgpKQorICAgICAgICBvdXQu
cHJpbnQoImciKTsKKyAgICBpZiAoaWdub3JlQ2FzZSgpKQorICAgICAgICBvdXQucHJpbnQoImki
KTsKKyAgICBpZiAobXVsdGlsaW5lKCkpCisgICAgICAgIG91dC5wcmludCgibSIpOworICAgIGlm
ICh1bmljb2RlKCkpCisgICAgICAgIG91dC5wcmludCgidSIpOworICAgIGlmIChzdGlja3koKSkK
KyAgICAgICAgb3V0LnByaW50KCJ5Iik7CisgICAgaWYgKG1fZmxhZ3MgIT0gTm9GbGFncykgewor
ICAgICAgICBib29sIHByaW50U2VwZXJhdG9yID0gZmFsc2U7CisgICAgICAgIG91dC5wcmludCgi
ICgiKTsKKyAgICAgICAgaWYgKGdsb2JhbCgpKSB7CisgICAgICAgICAgICBvdXQucHJpbnQoImds
b2JhbCIpOworICAgICAgICAgICAgcHJpbnRTZXBlcmF0b3IgPSB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIGlmIChpZ25vcmVDYXNlKCkpIHsKKyAgICAgICAgICAgIGlmIChwcmludFNlcGVyYXRv
cikKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoInwiKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dCgiaWdub3JlIGNhc2UiKTsKKyAgICAgICAgICAgIHByaW50U2VwZXJhdG9yID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAobXVsdGlsaW5lKCkpIHsKKyAgICAgICAgICAgIGlmIChwcmlu
dFNlcGVyYXRvcikKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoInwiKTsKKyAgICAgICAgICAg
IG91dC5wcmludCgibXVsdGlsaW5lIik7CisgICAgICAgICAgICBwcmludFNlcGVyYXRvciA9IHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHVuaWNvZGUoKSkgeworICAgICAgICAgICAgaWYg
KHByaW50U2VwZXJhdG9yKQorICAgICAgICAgICAgICAgIG91dC5wcmludCgifCIpOworICAgICAg
ICAgICAgb3V0LnByaW50KCJ1bmljb2RlIik7CisgICAgICAgICAgICBwcmludFNlcGVyYXRvciA9
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0aWNreSgpKSB7CisgICAgICAgICAgICBp
ZiAocHJpbnRTZXBlcmF0b3IpCisgICAgICAgICAgICAgICAgb3V0LnByaW50KCJ8Iik7CisgICAg
ICAgICAgICBvdXQucHJpbnQoInN0aWNreSIpOworICAgICAgICAgICAgcHJpbnRTZXBlcmF0b3Ig
PSB0cnVlOworICAgICAgICB9CisgICAgICAgIG91dC5wcmludCgiKSIpOworICAgIH0KKyAgICBv
dXQucHJpbnQoIjpcbiIpOworICAgIG1fYm9keS0+ZHVtcChvdXQsIHRoaXMpOworfQorCiB9IH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkocmV2aXNpb24g
MjE5NDA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDEzIEBACiAKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIK
ICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKK3N0cnVjdCBZ
YXJyUGF0dGVybjsKIHN0cnVjdCBQYXR0ZXJuRGlzanVuY3Rpb247CiAKIHN0cnVjdCBDaGFyYWN0
ZXJSYW5nZSB7CkBAIC0yMjIsNiArMjI0LDkgQEAgc3RydWN0IFBhdHRlcm5UZXJtIHsKICAgICAg
ICAgcXVhbnRpdHlNYXhDb3VudCA9IG1heENvdW50OwogICAgICAgICBxdWFudGl0eVR5cGUgPSB0
eXBlOwogICAgIH0KKworICAgIHZvaWQgZHVtcFF1YW50aWZpZXIoUHJpbnRTdHJlYW0mKTsKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBZYXJyUGF0dGVybiosIHVuc2lnbmVkKTsKIH07CiAK
IHN0cnVjdCBQYXR0ZXJuQWx0ZXJuYXRpdmUgewpAQCAtMjU4LDYgKzI2Myw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1fb25jZVRocm91Z2g7CiAgICAgfQogCisgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJiwgWWFyclBhdHRlcm4qLCB1bnNpZ25lZCk7CisKICAgICBWZWN0b3I8UGF0dGVy
blRlcm0+IG1fdGVybXM7CiAgICAgUGF0dGVybkRpc2p1bmN0aW9uKiBtX3BhcmVudDsKICAgICB1
bnNpZ25lZCBtX21pbmltdW1TaXplOwpAQCAtMjgyLDYgKzI4OSw4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhdHRlcm5BbHRlcm5hdGl2ZSo+KG1fYWx0ZXJuYXRpdmVz
Lmxhc3QoKS5nZXQoKSk7CiAgICAgfQogCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiwgWWFy
clBhdHRlcm4qLCB1bnNpZ25lZCk7CisKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBhdHRl
cm5BbHRlcm5hdGl2ZT4+IG1fYWx0ZXJuYXRpdmVzOwogICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSog
bV9wYXJlbnQ7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtU2l6ZTsKQEAgLTQ0OCw2ICs0NTcsMTAg
QEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsKICAgICAgICAgcmV0dXJuIG5vbndvcmRVbmljb2RlSWdu
b3JlQ2FzZWNoYXJDYWNoZWQ7CiAgICAgfQogCisgICAgdm9pZCBkdW1wUGF0dGVybihjb25zdCBT
dHJpbmcmIHBhdHRlcm4pOworICAgIHZvaWQgZHVtcFBhdHRlcm4oUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgU3RyaW5nJiBwYXR0ZXJuKTsKKworICAgIGJvb2wgZ2xvYmFsKCkgY29uc3QgeyByZXR1
cm4gbV9mbGFncyAmIEZsYWdHbG9iYWw7IH0KICAgICBib29sIGlnbm9yZUNhc2UoKSBjb25zdCB7
IHJldHVybiBtX2ZsYWdzICYgRmxhZ0lnbm9yZUNhc2U7IH0KICAgICBib29sIG11bHRpbGluZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnTXVsdGlsaW5lOyB9CiAgICAgYm9vbCBzdGlj
a3koKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ1N0aWNreTsgfQo=
</data>
<flag name="review"
          id="336524"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>