<?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>123805</bug_id>
          
          <creation_ts>2013-11-05 09:04:37 -0800</creation_ts>
          <short_desc>Update ReducedFTL</short_desc>
          <delta_ts>2013-11-05 10:48:40 -0800</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>528+ (Nightly build)</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>947206</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-05 09:04:37 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947212</commentid>
    <comment_count>1</comment_count>
      <attachid>216043</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-05 09:06:59 -0800</bug_when>
    <thetext>Created attachment 216043
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947240</commentid>
    <comment_count>2</comment_count>
      <attachid>216043</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-11-05 10:10:16 -0800</bug_when>
    <thetext>Comment on attachment 216043
the patch

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

&gt; Tools/ChangeLog:11
&gt; +          memory leaps and attaching a profiler.

You probably meant &quot;memory leaks&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947251</commentid>
    <comment_count>3</comment_count>
      <attachid>216043</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-05 10:44:41 -0800</bug_when>
    <thetext>Comment on attachment 216043
the patch

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

&gt; Tools/ReducedFTL/ReducedFTL.c:66
&gt; +    printf(&quot;--fast-isel      Enable the \&quot;fast\&quot; instruction selector.\n&quot;);

Does --fast-isel work anymore? The new LLVM intrinsics don&apos;t support --fast-isel, and nobody seems to be working on supporting it right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947253</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-05 10:47:47 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 216043 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=216043&amp;action=review
&gt; 
&gt; &gt; Tools/ReducedFTL/ReducedFTL.c:66
&gt; &gt; +    printf(&quot;--fast-isel      Enable the \&quot;fast\&quot; instruction selector.\n&quot;);
&gt; 
&gt; Does --fast-isel work anymore? The new LLVM intrinsics don&apos;t support --fast-isel, and nobody seems to be working on supporting it right now.

It depends on what you mean by &quot;working&quot;.

Enable fast isel means that, on a per-basic-block basis, the instruction selector will attempt fast isel.  If it encounters an instruction that it cannot handle, it will silently fall back to the selection dag.

Our basic blocks are fairly small and most of them don&apos;t have a call to any of our intrinsics.

Hence enabling fast isel is a valid thing to consider.  Current experiments show that it&apos;s not a good idea (20% compile time savings but a 30% throughput reduction) but that does&apos;t mean we can&apos;t sometimes try it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947254</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-05 10:48:06 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 216043 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=216043&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:11
&gt; &gt; +          memory leaps and attaching a profiler.
&gt; 
&gt; You probably meant &quot;memory leaks&quot;

But memory leaps are so much cooler!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947255</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-05 10:48:40 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/158679</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216043</attachid>
            <date>2013-11-05 09:06:59 -0800</date>
            <delta_ts>2013-11-05 10:44:41 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18985</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1ODY3NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI2IEBACisyMDEzLTExLTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgVXBkYXRlIFJlZHVjZWRGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMzgwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgLSBNYWtlIFJlZHVjZWRGVEwgYnVpbGQgd2l0aCBk
ZWJ1ZyBpbmZvLgorICAgICAgICAKKyAgICAgICAgLSBHaXZlIFJlZHVjZWRGVEwgYSAtLWxvb3Ag
bW9kZSB0aGF0IHJ1bnMgZXZlcnl0aGluZyBpbiBhIGxvb3AuIEdyZWF0IGZvciBmaW5kaW5nCisg
ICAgICAgICAgbWVtb3J5IGxlYXBzIGFuZCBhdHRhY2hpbmcgYSBwcm9maWxlci4KKyAgICAgICAg
CisgICAgICAgIC0gUmVvcmRlciB0aGUgcGFzc2VzIHNvIHRoYXQgdGhleSBtYXRjaCB0aGUgRlRM
LgorICAgICAgICAKKyAgICAgICAgLSBNYWtlIGl0IHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgYmFj
a2VuZCBvcHQgbGV2ZWwgYW5kIGVuYWJsZSB0aGUgZmFzdCBpc2VsLgorCisgICAgICAgICogUmVk
dWNlZEZUTC9SZWR1Y2VkRlRMLmM6CisgICAgICAgICh1c2FnZSk6CisgICAgICAgIChyb3VuZFVw
U2l6ZSk6CisgICAgICAgIChtbUFsbG9jYXRlQ29kZVNlY3Rpb24pOgorICAgICAgICAobWFpbik6
CisgICAgICAgICogUmVkdWNlZEZUTC9idWlsZC5zaDoKKwogMjAxMy0xMS0wNSAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBzd2l0Y2ggRFJUIEFY
IG1ldGhvZHMgdG8gdXNlIG51bGxwdHIKSW5kZXg6IFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZU
TC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZUTC5jCShyZXZpc2lv
biAxNTg1NTYpCisrKyBUb29scy9SZWR1Y2VkRlRML1JlZHVjZWRGVEwuYwkod29ya2luZyBjb3B5
KQpAQCAtNjIsNiArNjIsOCBAQCBzdGF0aWMgdm9pZCB1c2FnZSgpCiAgICAgcHJpbnRmKCItLWRp
c2Fzc2VtYmxlICAgIERpc2Fzc2VtYmxlIGFsbCBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUgYXQgdGhl
IGVuZC5cbiIpOwogICAgIHByaW50ZigiLS1tb2RlIDxtb2RlPiAgICBTZXQgdGhlIG9wdGltaXph
dGlvbiBtb2RlIChlaXRoZXIgXCJzaW1wbGVcIiBvciBcIm9wdFwiKS5cbiIpOwogICAgIHByaW50
ZigiLS1jb250ZXh0cyA8YXJnPiBTZXQgdGhlIG51bWJlciBvZiBjb250ZXh0cyAoZWl0aGVyIFwi
b25lXCIgb3IgXCJtYW55XCIpLlxuIik7CisgICAgcHJpbnRmKCItLWxvb3AgICAgICAgICAgIEtl
ZXAgcmVjb21waWxpbmcgZm9yZXZlci4gVXNlZnVsIHdoZW4gYXR0YWNoaW5nIGEgcHJvZmlsZXIu
XG4iKTsKKyAgICBwcmludGYoIi0tZmFzdC1pc2VsICAgICAgRW5hYmxlIHRoZSBcImZhc3RcIiBp
bnN0cnVjdGlvbiBzZWxlY3Rvci5cbiIpOwogICAgIHByaW50ZigiLS1oZWxwICAgICAgICAgICBQ
cmludCB0aGlzIG1lc3NhZ2UuXG4iKTsKICAgICBwcmludGYoIlxuIik7CiAgICAgcHJpbnRmKCJV
bmxlc3MgeW91IHNwZWNpZnkgb25lIG9mIC0tdmVyYm9zZSwgLS10aW1pbmcsIG9yIC0tZGlzYXNz
ZW1ibGUsIHlvdSB3aWxsXG4iKTsKQEAgLTg0LDEzICs4NiwxOCBAQCBzdHJ1Y3QgTWVtb3J5U2Vj
dGlvbiB7CiAKIHN0YXRpYyBzdHJ1Y3QgTWVtb3J5U2VjdGlvbiogc2VjdGlvbkhlYWQ7CiAKLXN0
YXRpYyB1aW50OF90ICptbUFsbG9jYXRlQ29kZVNlY3Rpb24oCi0gICAgdm9pZCAqb3BhcXVlU3Rh
dGUsIHVpbnRwdHJfdCBzaXplLCB1bnNpZ25lZCBhbGlnbm1lbnQsIHVuc2lnbmVkIHNlY3Rpb25J
RCkKK3N0YXRpYyBzaXplX3Qgcm91bmRVcFNpemUoc2l6ZV90IHNpemUpCiB7CiAgICAgc2l6ZV90
IHBhZ2VTaXplID0gZ2V0cGFnZXNpemUoKTsKICAgICAKKyAgICByZXR1cm4gKHNpemUgKyBwYWdl
U2l6ZSAtIDEpICYgfnBhZ2VTaXplOworfQorCitzdGF0aWMgdWludDhfdCAqbW1BbGxvY2F0ZUNv
ZGVTZWN0aW9uKAorICAgIHZvaWQgKm9wYXF1ZVN0YXRlLCB1aW50cHRyX3Qgc2l6ZSwgdW5zaWdu
ZWQgYWxpZ25tZW50LCB1bnNpZ25lZCBzZWN0aW9uSUQpCit7CiAgICAgdWludDhfdCAqc3RhcnQg
PSBtbWFwKAotICAgICAgICAwLCAoc2l6ZSArIHBhZ2VTaXplIC0gMSkgJiB+cGFnZVNpemUsIAor
ICAgICAgICAwLCAgcm91bmRVcFNpemUoc2l6ZSksCiAgICAgICAgIFBST1RfV1JJVEUgfCBQUk9U
X1JFQUQgfCBQUk9UX0VYRUMsCiAgICAgICAgIE1BUF9BTk9OIHwgTUFQX1BSSVZBVEUsIC0xLCAw
KTsKICAgICBpZiAoc3RhcnQgPT0gKHVpbnQ4X3QqKS0xKSB7CkBAIC0xNjUsNyArMTcyLDExIEBA
IGludCBtYWluKGludCBjLCBjaGFyICoqdikKICAgICBzdGF0aWMgaW50IHRpbWluZ0ZsYWcgPSAw
OwogICAgIHN0YXRpYyBpbnQgZGlzYXNzZW1ibGVGbGFnID0gMDsKICAgICBib29sIG1hbnlDb250
ZXh0cyA9IHRydWU7CisgICAgYm9vbCBsb29wID0gZmFsc2U7CiAgICAgZG91YmxlIGJlZm9yZUFs
bDsKKyAgICBib29sIGZhc3RJc2VsID0gZmFsc2U7CisgICAgaW50IGppdE9wdExldmVsID0gMjsK
KyAgICBzdHJ1Y3QgTWVtb3J5U2VjdGlvbiAqc2VjdGlvbjsKICAgICAKICAgICBpZiAoYyA9PSAx
KQogICAgICAgICB1c2FnZSgpOwpAQCAtMTc4LDYgKzE4OSw5IEBAIGludCBtYWluKGludCBjLCBj
aGFyICoqdikKICAgICAgICAgICAgIHsiZGlzYXNzZW1ibGUiLCBub19hcmd1bWVudCwgJmRpc2Fz
c2VtYmxlRmxhZywgMX0sCiAgICAgICAgICAgICB7Im1vZGUiLCByZXF1aXJlZF9hcmd1bWVudCwg
MCwgMH0sCiAgICAgICAgICAgICB7ImNvbnRleHRzIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIDB9
LAorICAgICAgICAgICAgeyJsb29wIiwgbm9fYXJndW1lbnQsIDAsIDB9LAorICAgICAgICAgICAg
eyJmYXN0LWlzZWwiLCBub19hcmd1bWVudCwgMCwgMH0sCisgICAgICAgICAgICB7ImppdC1vcHQi
LCByZXF1aXJlZF9hcmd1bWVudCwgMCwgMH0sCiAgICAgICAgICAgICB7ImhlbHAiLCBub19hcmd1
bWVudCwgMCwgMH0KICAgICAgICAgfTsKICAgICAgICAgCkBAIC0xOTUsNiArMjA5LDEwIEBAIGlu
dCBtYWluKGludCBjLCBjaGFyICoqdikKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRoaXNPcHRp
b24gPSBsb25nT3B0aW9uc1tvcHRpb25JbmRleF0ubmFtZTsKICAgICAgICAgICAgIGlmICghc3Ry
Y21wKHRoaXNPcHRpb24sICJoZWxwIikpCiAgICAgICAgICAgICAgICAgdXNhZ2UoKTsKKyAgICAg
ICAgICAgIGlmICghc3RyY21wKHRoaXNPcHRpb24sICJsb29wIikpCisgICAgICAgICAgICAgICAg
bG9vcCA9IHRydWU7CisgICAgICAgICAgICBpZiAoIXN0cmNtcCh0aGlzT3B0aW9uLCAiZmFzdC1p
c2VsIikpCisgICAgICAgICAgICAgICAgZmFzdElzZWwgPSB0cnVlOwogICAgICAgICAgICAgaWYg
KCFzdHJjbXAodGhpc09wdGlvbiwgImNvbnRleHRzIikpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXN0cmNhc2VjbXAob3B0YXJnLCAib25lIikpCiAgICAgICAgICAgICAgICAgICAgIG1hbnlDb250
ZXh0cyA9IGZhbHNlOwpAQCAtMjA2LDYgKzIyNCwxMyBAQCBpbnQgbWFpbihpbnQgYywgY2hhciAq
KnYpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKCFzdHJjbXAodGhpc09wdGlvbiwgImppdC1vcHQiKSkgewor
ICAgICAgICAgICAgICAgIGlmIChzc2NhbmYob3B0YXJnLCAiJWQiLCAmaml0T3B0TGV2ZWwpICE9
IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIGFyZ3Vt
ZW50IGZvciAtLWppdC1vcHQuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoIXN0cmNtcCh0aGlzT3B0aW9uLCAibW9kZSIpKSB7CiAgICAgICAgICAg
ICAgICAgbW9kZSA9IHN0cmR1cChvcHRhcmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MjMyLDE3OCArMjU3LDIwMCBAQCBpbnQgbWFpbihpbnQgYywgY2hhciAqKnYpCiAgICAgZmlsZW5h
bWVzID0gKGNvbnN0IGNoYXIgKiopKHYgKyBvcHRpbmQpOwogICAgIG51bUZpbGVzID0gYyAtIG9w
dGluZDsKICAgICAKLSAgICBjb250ZXh0cyA9IG1hbGxvYyhzaXplb2YoTExWTUNvbnRleHRSZWYp
ICogbnVtRmlsZXMpOwotICAgIG1vZHVsZXMgPSBtYWxsb2Moc2l6ZW9mKExMVk1Nb2R1bGVSZWYp
ICogbnVtRmlsZXMpOwotICAgIAotICAgIGlmIChtYW55Q29udGV4dHMpIHsKLSAgICAgICAgZm9y
IChpID0gMDsgaSA8IG51bUZpbGVzOyArK2kpCi0gICAgICAgICAgICBjb250ZXh0c1tpXSA9IExM
Vk1Db250ZXh0Q3JlYXRlKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgTExWTUNvbnRleHRSZWYg
Y29udGV4dCA9IExMVk1Db250ZXh0Q3JlYXRlKCk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBu
dW1GaWxlczsgKytpKQotICAgICAgICAgICAgY29udGV4dHNbaV0gPSBjb250ZXh0OwotICAgIH0K
KyAgICBpZiAoIW51bUZpbGVzKQorICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBmb3IgKGkg
PSAwOyBpIDwgbnVtRmlsZXM7ICsraSkgewotICAgICAgICBMTFZNTWVtb3J5QnVmZmVyUmVmIGJ1
ZmZlcjsKLSAgICAgICAgY29uc3QgY2hhciogZmlsZW5hbWUgPSBmaWxlbmFtZXNbaV07Ci0gICAg
ICAgIAotICAgICAgICBpZiAoTExWTUNyZWF0ZU1lbW9yeUJ1ZmZlcldpdGhDb250ZW50c09mRmls
ZShmaWxlbmFtZSwgJmJ1ZmZlciwgJmVycm9yKSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRl
cnIsICJFcnJvciByZWFkaW5nIGZpbGUgJXM6ICVzXG4iLCBmaWxlbmFtZSwgZXJyb3IpOwotICAg
ICAgICAgICAgZXhpdCgxKTsKKyAgICBkbyB7CisgICAgICAgIGNvbnRleHRzID0gbWFsbG9jKHNp
emVvZihMTFZNQ29udGV4dFJlZikgKiBudW1GaWxlcyk7CisgICAgICAgIG1vZHVsZXMgPSBtYWxs
b2Moc2l6ZW9mKExMVk1Nb2R1bGVSZWYpICogbnVtRmlsZXMpOworICAgIAorICAgICAgICBpZiAo
bWFueUNvbnRleHRzKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtRmlsZXM7ICsr
aSkKKyAgICAgICAgICAgICAgICBjb250ZXh0c1tpXSA9IExMVk1Db250ZXh0Q3JlYXRlKCk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMTFZNQ29udGV4dFJlZiBjb250ZXh0ID0gTExW
TUNvbnRleHRDcmVhdGUoKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1GaWxlczsg
KytpKQorICAgICAgICAgICAgICAgIGNvbnRleHRzW2ldID0gY29udGV4dDsKICAgICAgICAgfQor
ICAgIAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtRmlsZXM7ICsraSkgeworICAgICAgICAg
ICAgTExWTU1lbW9yeUJ1ZmZlclJlZiBidWZmZXI7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBm
aWxlbmFtZSA9IGZpbGVuYW1lc1tpXTsKKyAgICAgICAgCisgICAgICAgICAgICBpZiAoTExWTUNy
ZWF0ZU1lbW9yeUJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlbmFtZSwgJmJ1ZmZlciwgJmVy
cm9yKSkgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgcmVhZGluZyBm
aWxlICVzOiAlc1xuIiwgZmlsZW5hbWUsIGVycm9yKTsKKyAgICAgICAgICAgICAgICBleGl0KDEp
OworICAgICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKExMVk1QYXJzZUJpdGNvZGVJ
bkNvbnRleHQoY29udGV4dHNbaV0sIGJ1ZmZlciwgbW9kdWxlcyArIGksICZlcnJvcikpIHsKLSAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgcGFyc2luZyBmaWxlICVzOiAlc1xuIiwg
ZmlsZW5hbWUsIGVycm9yKTsKLSAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChMTFZNUGFyc2VCaXRjb2RlSW5Db250ZXh0KGNvbnRleHRzW2ldLCBidWZmZXIs
IG1vZHVsZXMgKyBpLCAmZXJyb3IpKSB7CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJFcnJvciBwYXJzaW5nIGZpbGUgJXM6ICVzXG4iLCBmaWxlbmFtZSwgZXJyb3IpOworICAgICAg
ICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBMTFZN
RGlzcG9zZU1lbW9yeUJ1ZmZlcihidWZmZXIpOworICAgICAgICAgICAgTExWTURpc3Bvc2VNZW1v
cnlCdWZmZXIoYnVmZmVyKTsKICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlRmxhZykgewot
ICAgICAgICAgICAgcHJpbnRmKCJNb2R1bGUgIyV1ICglcykgYWZ0ZXIgcGFyc2luZzpcbiIsIGks
IGZpbGVuYW1lKTsKLSAgICAgICAgICAgIExMVk1EdW1wTW9kdWxlKG1vZHVsZXNbaV0pOworICAg
ICAgICAgICAgaWYgKHZlcmJvc2VGbGFnKSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJNb2R1
bGUgIyV1ICglcykgYWZ0ZXIgcGFyc2luZzpcbiIsIGksIGZpbGVuYW1lKTsKKyAgICAgICAgICAg
ICAgICBMTFZNRHVtcE1vZHVsZShtb2R1bGVzW2ldKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgIH0KIAotICAgIGlmICh2ZXJib3NlRmxhZykKLSAgICAgICAgcHJpbnRmKCJHZW5lcmF0
aW5nIGNvZGUgZm9yIG1vZHVsZXMuLi5cbiIpOworICAgICAgICBpZiAodmVyYm9zZUZsYWcpCisg
ICAgICAgICAgICBwcmludGYoIkdlbmVyYXRpbmcgY29kZSBmb3IgbW9kdWxlcy4uLlxuIik7CiAg
ICAgCi0gICAgaWYgKHRpbWluZ0ZsYWcpCi0gICAgICAgIGJlZm9yZUFsbCA9IGN1cnJlbnRUaW1l
KCk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG51bUZpbGVzOyArK2kpIHsKLSAgICAgICAgTExWTU1v
ZHVsZVJlZiBtb2R1bGU7Ci0gICAgICAgIExMVk1FeGVjdXRpb25FbmdpbmVSZWYgZW5naW5lOwot
ICAgICAgICBzdHJ1Y3QgTExWTU1DSklUQ29tcGlsZXJPcHRpb25zIG9wdGlvbnM7Ci0gICAgICAg
IExMVk1WYWx1ZVJlZiB2YWx1ZTsKLSAgICAgICAgTExWTVBhc3NNYW5hZ2VyUmVmIGZ1bmN0aW9u
UGFzc2VzID0gMDsKLSAgICAgICAgTExWTVBhc3NNYW5hZ2VyUmVmIG1vZHVsZVBhc3NlcyA9IDA7
Ci0gICAgICAgIAotICAgICAgICBkb3VibGUgYmVmb3JlOwotICAgICAgICAKICAgICAgICAgaWYg
KHRpbWluZ0ZsYWcpCi0gICAgICAgICAgICBiZWZvcmUgPSBjdXJyZW50VGltZSgpOwotICAgICAg
ICAKLSAgICAgICAgbW9kdWxlID0gbW9kdWxlc1tpXTsKLQotICAgICAgICBMTFZNSW5pdGlhbGl6
ZU1DSklUQ29tcGlsZXJPcHRpb25zKCZvcHRpb25zLCBzaXplb2Yob3B0aW9ucykpOwotICAgICAg
ICBvcHRpb25zLk9wdExldmVsID0gMjsKLSAgICAgICAgb3B0aW9ucy5FbmFibGVGYXN0SVNlbCA9
IDA7Ci0gICAgICAgIG9wdGlvbnMuTUNKTU0gPSBMTFZNQ3JlYXRlU2ltcGxlTUNKSVRNZW1vcnlN
YW5hZ2VyKAotICAgICAgICAgICAgMCwgbW1BbGxvY2F0ZUNvZGVTZWN0aW9uLCBtbUFsbG9jYXRl
RGF0YVNlY3Rpb24sIG1tQXBwbHlQZXJtaXNzaW9ucywgbW1EZXN0cm95KTsKLSAgICAKLSAgICAg
ICAgaWYgKExMVk1DcmVhdGVNQ0pJVENvbXBpbGVyRm9yTW9kdWxlKCZlbmdpbmUsIG1vZHVsZSwg
Jm9wdGlvbnMsIHNpemVvZihvcHRpb25zKSwgJmVycm9yKSkgewotICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICJFcnJvciBidWlsZGluZyBNQ0pJVDogJXNcbiIsIGVycm9yKTsKLSAgICAgICAg
ICAgIGV4aXQoMSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGJlZm9yZUFsbCA9IGN1cnJlbnRU
aW1lKCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1GaWxlczsgKytpKSB7CisgICAgICAg
ICAgICBMTFZNTW9kdWxlUmVmIG1vZHVsZTsKKyAgICAgICAgICAgIExMVk1FeGVjdXRpb25Fbmdp
bmVSZWYgZW5naW5lOworICAgICAgICAgICAgc3RydWN0IExMVk1NQ0pJVENvbXBpbGVyT3B0aW9u
cyBvcHRpb25zOworICAgICAgICAgICAgTExWTVZhbHVlUmVmIHZhbHVlOworICAgICAgICAgICAg
TExWTVBhc3NNYW5hZ2VyUmVmIGZ1bmN0aW9uUGFzc2VzID0gMDsKKyAgICAgICAgICAgIExMVk1Q
YXNzTWFuYWdlclJlZiBtb2R1bGVQYXNzZXMgPSAwOworICAgICAgICAKKyAgICAgICAgICAgIGRv
dWJsZSBiZWZvcmU7CisgICAgICAgIAorICAgICAgICAgICAgaWYgKHRpbWluZ0ZsYWcpCisgICAg
ICAgICAgICAgICAgYmVmb3JlID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgCisgICAgICAgICAg
ICBtb2R1bGUgPSBtb2R1bGVzW2ldOworCisgICAgICAgICAgICBMTFZNSW5pdGlhbGl6ZU1DSklU
Q29tcGlsZXJPcHRpb25zKCZvcHRpb25zLCBzaXplb2Yob3B0aW9ucykpOworICAgICAgICAgICAg
b3B0aW9ucy5PcHRMZXZlbCA9IGppdE9wdExldmVsOworICAgICAgICAgICAgb3B0aW9ucy5FbmFi
bGVGYXN0SVNlbCA9IGZhc3RJc2VsOworICAgICAgICAgICAgb3B0aW9ucy5NQ0pNTSA9IExMVk1D
cmVhdGVTaW1wbGVNQ0pJVE1lbW9yeU1hbmFnZXIoCisgICAgICAgICAgICAgICAgMCwgbW1BbGxv
Y2F0ZUNvZGVTZWN0aW9uLCBtbUFsbG9jYXRlRGF0YVNlY3Rpb24sIG1tQXBwbHlQZXJtaXNzaW9u
cywgbW1EZXN0cm95KTsKKyAgICAKKyAgICAgICAgICAgIGlmIChMTFZNQ3JlYXRlTUNKSVRDb21w
aWxlckZvck1vZHVsZSgmZW5naW5lLCBtb2R1bGUsICZvcHRpb25zLCBzaXplb2Yob3B0aW9ucyks
ICZlcnJvcikpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGJ1aWxk
aW5nIE1DSklUOiAlc1xuIiwgZXJyb3IpOworICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAg
ICAgICAgICB9CiAgICAgCi0gICAgICAgIGlmICghc3RyY2FzZWNtcChtb2RlLCAic2ltcGxlIikp
IHsKLSAgICAgICAgICAgIG1vZHVsZVBhc3NlcyA9IExMVk1DcmVhdGVQYXNzTWFuYWdlcigpOwot
ICAgICAgICAgICAgTExWTUFkZFRhcmdldERhdGEoTExWTUdldEV4ZWN1dGlvbkVuZ2luZVRhcmdl
dERhdGEoZW5naW5lKSwgbW9kdWxlUGFzc2VzKTsKLSAgICAgICAgICAgIExMVk1BZGRDb25zdGFu
dFByb3BhZ2F0aW9uUGFzcyhtb2R1bGVQYXNzZXMpOwotICAgICAgICAgICAgTExWTUFkZEluc3Ry
dWN0aW9uQ29tYmluaW5nUGFzcyhtb2R1bGVQYXNzZXMpOwotICAgICAgICAgICAgTExWTUFkZFBy
b21vdGVNZW1vcnlUb1JlZ2lzdGVyUGFzcyhtb2R1bGVQYXNzZXMpOwotICAgICAgICAgICAgTExW
TUFkZEJhc2ljQWxpYXNBbmFseXNpc1Bhc3MobW9kdWxlUGFzc2VzKTsKLSAgICAgICAgICAgIExM
Vk1BZGRUeXBlQmFzZWRBbGlhc0FuYWx5c2lzUGFzcyhtb2R1bGVQYXNzZXMpOwotICAgICAgICAg
ICAgTExWTUFkZEdWTlBhc3MobW9kdWxlUGFzc2VzKTsKLSAgICAgICAgICAgIExMVk1BZGRDRkdT
aW1wbGlmaWNhdGlvblBhc3MobW9kdWxlUGFzc2VzKTsKLSAgICAgICAgICAgIExMVk1SdW5QYXNz
TWFuYWdlcihtb2R1bGVQYXNzZXMsIG1vZHVsZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXN0cmNh
c2VjbXAobW9kZSwgIm9wdCIpKSB7Ci0gICAgICAgICAgICBMTFZNUGFzc01hbmFnZXJCdWlsZGVy
UmVmIHBhc3NCdWlsZGVyOwotCi0gICAgICAgICAgICBwYXNzQnVpbGRlciA9IExMVk1QYXNzTWFu
YWdlckJ1aWxkZXJDcmVhdGUoKTsKLSAgICAgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxkZXJT
ZXRPcHRMZXZlbChwYXNzQnVpbGRlciwgMik7Ci0gICAgICAgICAgICBMTFZNUGFzc01hbmFnZXJC
dWlsZGVyU2V0U2l6ZUxldmVsKHBhc3NCdWlsZGVyLCAwKTsKLSAgICAgICAgCi0gICAgICAgICAg
ICBmdW5jdGlvblBhc3NlcyA9IExMVk1DcmVhdGVGdW5jdGlvblBhc3NNYW5hZ2VyRm9yTW9kdWxl
KG1vZHVsZSk7Ci0gICAgICAgICAgICBtb2R1bGVQYXNzZXMgPSBMTFZNQ3JlYXRlUGFzc01hbmFn
ZXIoKTsKLSAgICAgICAgCi0gICAgICAgICAgICBMTFZNQWRkVGFyZ2V0RGF0YShMTFZNR2V0RXhl
Y3V0aW9uRW5naW5lVGFyZ2V0RGF0YShlbmdpbmUpLCBtb2R1bGVQYXNzZXMpOwotICAgICAgICAK
LSAgICAgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxkZXJQb3B1bGF0ZUZ1bmN0aW9uUGFzc01h
bmFnZXIocGFzc0J1aWxkZXIsIGZ1bmN0aW9uUGFzc2VzKTsKLSAgICAgICAgICAgIExMVk1QYXNz
TWFuYWdlckJ1aWxkZXJQb3B1bGF0ZU1vZHVsZVBhc3NNYW5hZ2VyKHBhc3NCdWlsZGVyLCBtb2R1
bGVQYXNzZXMpOwotICAgICAgICAKLSAgICAgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxkZXJE
aXNwb3NlKHBhc3NCdWlsZGVyKTsKLSAgICAgICAgCi0gICAgICAgICAgICBMTFZNSW5pdGlhbGl6
ZUZ1bmN0aW9uUGFzc01hbmFnZXIoZnVuY3Rpb25QYXNzZXMpOwotICAgICAgICAgICAgZm9yICh2
YWx1ZSA9IExMVk1HZXRGaXJzdEZ1bmN0aW9uKG1vZHVsZSk7IHZhbHVlOyB2YWx1ZSA9IExMVk1H
ZXROZXh0RnVuY3Rpb24odmFsdWUpKQotICAgICAgICAgICAgICAgIExMVk1SdW5GdW5jdGlvblBh
c3NNYW5hZ2VyKGZ1bmN0aW9uUGFzc2VzLCB2YWx1ZSk7Ci0gICAgICAgICAgICBMTFZNRmluYWxp
emVGdW5jdGlvblBhc3NNYW5hZ2VyKGZ1bmN0aW9uUGFzc2VzKTsKLSAgICAgICAgCi0gICAgICAg
ICAgICBMTFZNUnVuUGFzc01hbmFnZXIobW9kdWxlUGFzc2VzLCBtb2R1bGUpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJCYWQgb3B0aW1pemF0aW9uIG1v
ZGU6ICVzLlxuIiwgbW9kZSk7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlZhbGlkIG1v
ZGVzIGFyZTogXCJzaW1wbGVcIiBvciBcIm9wdFwiLlxuIik7Ci0gICAgICAgICAgICBleGl0KDEp
OwotICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXN0cmNhc2VjbXAobW9kZSwgInNpbXBsZSIp
KSB7CisgICAgICAgICAgICAgICAgbW9kdWxlUGFzc2VzID0gTExWTUNyZWF0ZVBhc3NNYW5hZ2Vy
KCk7CisgICAgICAgICAgICAgICAgTExWTUFkZFRhcmdldERhdGEoTExWTUdldEV4ZWN1dGlvbkVu
Z2luZVRhcmdldERhdGEoZW5naW5lKSwgbW9kdWxlUGFzc2VzKTsKKyAgICAgICAgICAgICAgICBM
TFZNQWRkUHJvbW90ZU1lbW9yeVRvUmVnaXN0ZXJQYXNzKG1vZHVsZVBhc3Nlcyk7CisgICAgICAg
ICAgICAgICAgTExWTUFkZENvbnN0YW50UHJvcGFnYXRpb25QYXNzKG1vZHVsZVBhc3Nlcyk7Cisg
ICAgICAgICAgICAgICAgTExWTUFkZEluc3RydWN0aW9uQ29tYmluaW5nUGFzcyhtb2R1bGVQYXNz
ZXMpOworICAgICAgICAgICAgICAgIExMVk1BZGRCYXNpY0FsaWFzQW5hbHlzaXNQYXNzKG1vZHVs
ZVBhc3Nlcyk7CisgICAgICAgICAgICAgICAgTExWTUFkZFR5cGVCYXNlZEFsaWFzQW5hbHlzaXNQ
YXNzKG1vZHVsZVBhc3Nlcyk7CisgICAgICAgICAgICAgICAgTExWTUFkZEdWTlBhc3MobW9kdWxl
UGFzc2VzKTsKKyAgICAgICAgICAgICAgICBMTFZNQWRkQ0ZHU2ltcGxpZmljYXRpb25QYXNzKG1v
ZHVsZVBhc3Nlcyk7CisgICAgICAgICAgICAgICAgTExWTVJ1blBhc3NNYW5hZ2VyKG1vZHVsZVBh
c3NlcywgbW9kdWxlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNhc2VjbXAobW9kZSwg
Im9wdCIpKSB7CisgICAgICAgICAgICAgICAgTExWTVBhc3NNYW5hZ2VyQnVpbGRlclJlZiBwYXNz
QnVpbGRlcjsKKworICAgICAgICAgICAgICAgIHBhc3NCdWlsZGVyID0gTExWTVBhc3NNYW5hZ2Vy
QnVpbGRlckNyZWF0ZSgpOworICAgICAgICAgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxkZXJT
ZXRPcHRMZXZlbChwYXNzQnVpbGRlciwgMik7CisgICAgICAgICAgICAgICAgTExWTVBhc3NNYW5h
Z2VyQnVpbGRlclNldFNpemVMZXZlbChwYXNzQnVpbGRlciwgMCk7CisgICAgICAgIAorICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uUGFzc2VzID0gTExWTUNyZWF0ZUZ1bmN0aW9uUGFzc01hbmFnZXJG
b3JNb2R1bGUobW9kdWxlKTsKKyAgICAgICAgICAgICAgICBtb2R1bGVQYXNzZXMgPSBMTFZNQ3Jl
YXRlUGFzc01hbmFnZXIoKTsKKyAgICAgICAgCisgICAgICAgICAgICAgICAgTExWTUFkZFRhcmdl
dERhdGEoTExWTUdldEV4ZWN1dGlvbkVuZ2luZVRhcmdldERhdGEoZW5naW5lKSwgbW9kdWxlUGFz
c2VzKTsKKyAgICAgICAgCisgICAgICAgICAgICAgICAgTExWTVBhc3NNYW5hZ2VyQnVpbGRlclBv
cHVsYXRlRnVuY3Rpb25QYXNzTWFuYWdlcihwYXNzQnVpbGRlciwgZnVuY3Rpb25QYXNzZXMpOwor
ICAgICAgICAgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxkZXJQb3B1bGF0ZU1vZHVsZVBhc3NN
YW5hZ2VyKHBhc3NCdWlsZGVyLCBtb2R1bGVQYXNzZXMpOworICAgICAgICAKKyAgICAgICAgICAg
ICAgICBMTFZNUGFzc01hbmFnZXJCdWlsZGVyRGlzcG9zZShwYXNzQnVpbGRlcik7CisgICAgICAg
IAorICAgICAgICAgICAgICAgIExMVk1Jbml0aWFsaXplRnVuY3Rpb25QYXNzTWFuYWdlcihmdW5j
dGlvblBhc3Nlcyk7CisgICAgICAgICAgICAgICAgZm9yICh2YWx1ZSA9IExMVk1HZXRGaXJzdEZ1
bmN0aW9uKG1vZHVsZSk7IHZhbHVlOyB2YWx1ZSA9IExMVk1HZXROZXh0RnVuY3Rpb24odmFsdWUp
KQorICAgICAgICAgICAgICAgICAgICBMTFZNUnVuRnVuY3Rpb25QYXNzTWFuYWdlcihmdW5jdGlv
blBhc3NlcywgdmFsdWUpOworICAgICAgICAgICAgICAgIExMVk1GaW5hbGl6ZUZ1bmN0aW9uUGFz
c01hbmFnZXIoZnVuY3Rpb25QYXNzZXMpOworICAgICAgICAKKyAgICAgICAgICAgICAgICBMTFZN
UnVuUGFzc01hbmFnZXIobW9kdWxlUGFzc2VzLCBtb2R1bGUpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkJhZCBvcHRpbWl6YXRpb24gbW9k
ZTogJXMuXG4iLCBtb2RlKTsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlZhbGlk
IG1vZGVzIGFyZTogXCJzaW1wbGVcIiBvciBcIm9wdFwiLlxuIik7CisgICAgICAgICAgICAgICAg
ZXhpdCgxKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBpZiAodmVyYm9zZUZsYWcpIHsKLSAg
ICAgICAgICAgIHByaW50ZigiTW9kdWxlICMlZCAoJXMpIGFmdGVyIG9wdGltaXphdGlvbjpcbiIs
IGksIGZpbGVuYW1lc1tpXSk7Ci0gICAgICAgICAgICBMTFZNRHVtcE1vZHVsZShtb2R1bGUpOwot
ICAgICAgICB9CisgICAgICAgICAgICBpZiAodmVyYm9zZUZsYWcpIHsKKyAgICAgICAgICAgICAg
ICBwcmludGYoIk1vZHVsZSAjJWQgKCVzKSBhZnRlciBvcHRpbWl6YXRpb246XG4iLCBpLCBmaWxl
bmFtZXNbaV0pOworICAgICAgICAgICAgICAgIExMVk1EdW1wTW9kdWxlKG1vZHVsZSk7CisgICAg
ICAgICAgICB9CiAgICAgCi0gICAgICAgIGZvciAodmFsdWUgPSBMTFZNR2V0Rmlyc3RGdW5jdGlv
bihtb2R1bGUpOyB2YWx1ZTsgdmFsdWUgPSBMTFZNR2V0TmV4dEZ1bmN0aW9uKHZhbHVlKSkgewot
ICAgICAgICAgICAgaWYgKExMVk1Jc0RlY2xhcmF0aW9uKHZhbHVlKSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIExMVk1HZXRQb2ludGVyVG9HbG9iYWwoZW5naW5lLCB2
YWx1ZSk7CisgICAgICAgICAgICBmb3IgKHZhbHVlID0gTExWTUdldEZpcnN0RnVuY3Rpb24obW9k
dWxlKTsgdmFsdWU7IHZhbHVlID0gTExWTUdldE5leHRGdW5jdGlvbih2YWx1ZSkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoTExWTUlzRGVjbGFyYXRpb24odmFsdWUpKQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBMTFZNR2V0UG9pbnRlclRvR2xvYmFsKGVu
Z2luZSwgdmFsdWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZnVuY3Rpb25Q
YXNzZXMpCisgICAgICAgICAgICAgICAgTExWTURpc3Bvc2VQYXNzTWFuYWdlcihmdW5jdGlvblBh
c3Nlcyk7CisgICAgICAgICAgICBpZiAobW9kdWxlUGFzc2VzKQorICAgICAgICAgICAgICAgIExM
Vk1EaXNwb3NlUGFzc01hbmFnZXIobW9kdWxlUGFzc2VzKTsKKyAgICAKKyAgICAgICAgICAgIExM
Vk1EaXNwb3NlRXhlY3V0aW9uRW5naW5lKGVuZ2luZSk7CisgICAgICAgIAorICAgICAgICAgICAg
aWYgKHRpbWluZ0ZsYWcpIHsKKyAgICAgICAgICAgICAgICBkb3VibGUgYWZ0ZXIgPSBjdXJyZW50
VGltZSgpOworICAgICAgICAgICAgICAgIHByaW50ZigiTW9kdWxlICMlZCAoJXMpIHRvb2sgJWxm
IG1zLlxuIiwgaSwgZmlsZW5hbWVzW2ldLCAoYWZ0ZXIgLSBiZWZvcmUpICogMTAwMCk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZnVuY3Rpb25QYXNzZXMpCi0gICAg
ICAgICAgICBMTFZNRGlzcG9zZVBhc3NNYW5hZ2VyKGZ1bmN0aW9uUGFzc2VzKTsKLSAgICAgICAg
aWYgKG1vZHVsZVBhc3NlcykKLSAgICAgICAgICAgIExMVk1EaXNwb3NlUGFzc01hbmFnZXIobW9k
dWxlUGFzc2VzKTsKLSAgICAKLSAgICAgICAgTExWTURpc3Bvc2VFeGVjdXRpb25FbmdpbmUoZW5n
aW5lKTsKKyAgICAgICAgaWYgKG1hbnlDb250ZXh0cykgeworICAgICAgICAgICAgZm9yIChpID0g
MDsgaSA8IG51bUZpbGVzOyArK2kpCisgICAgICAgICAgICAgICAgTExWTUNvbnRleHREaXNwb3Nl
KGNvbnRleHRzW2ldKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBMTFZNQ29udGV4dERp
c3Bvc2UoY29udGV4dHNbMF0pOwogICAgICAgICAKICAgICAgICAgaWYgKHRpbWluZ0ZsYWcpIHsK
ICAgICAgICAgICAgIGRvdWJsZSBhZnRlciA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgICAgICAgICBw
cmludGYoIk1vZHVsZSAjJWQgKCVzKSB0b29rICVsZiBtcy5cbiIsIGksIGZpbGVuYW1lc1tpXSwg
KGFmdGVyIC0gYmVmb3JlKSAqIDEwMDApOworICAgICAgICAgICAgcHJpbnRmKCJDb21waWxhdGlv
biB0b29rIGEgdG90YWwgb2YgJWxmIG1zLlxuIiwgKGFmdGVyIC0gYmVmb3JlQWxsKSAqIDEwMDAp
OwogICAgICAgICB9Ci0gICAgfQotICAgIGlmICh0aW1pbmdGbGFnKSB7Ci0gICAgICAgIGRvdWJs
ZSBhZnRlciA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgICAgIHByaW50ZigiQ29tcGlsYXRpb24gdG9v
ayBhIHRvdGFsIG9mICVsZiBtcy5cbiIsIChhZnRlciAtIGJlZm9yZUFsbCkgKiAxMDAwKTsKLSAg
ICB9CiAgICAgCi0gICAgaWYgKGRpc2Fzc2VtYmxlRmxhZykgewotICAgICAgICBMTFZNRGlzYXNt
Q29udGV4dFJlZiBkaXNhc3NlbWJsZXI7Ci0gICAgICAgIHN0cnVjdCBNZW1vcnlTZWN0aW9uICpz
ZWN0aW9uOwotICAgICAgICAKLSAgICAgICAgZGlzYXNzZW1ibGVyID0gTExWTUNyZWF0ZURpc2Fz
bSgieDg2XzY0LWFwcGxlLWRhcndpbiIsIDAsIDAsIDAsIHN5bWJvbExvb2t1cENhbGxiYWNrKTsK
LSAgICAgICAgaWYgKCFkaXNhc3NlbWJsZXIpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiRXJyb3IgYnVpbGRpbmcgZGlzYXNzZW1ibGVyLlxuIik7Ci0gICAgICAgICAgICBleGl0KDEp
OwotICAgICAgICB9CisgICAgICAgIGlmIChkaXNhc3NlbWJsZUZsYWcpIHsKKyAgICAgICAgICAg
IExMVk1EaXNhc21Db250ZXh0UmVmIGRpc2Fzc2VtYmxlcjsKKyAgICAgICAgCisgICAgICAgICAg
ICBkaXNhc3NlbWJsZXIgPSBMTFZNQ3JlYXRlRGlzYXNtKCJ4ODZfNjQtYXBwbGUtZGFyd2luIiwg
MCwgMCwgMCwgc3ltYm9sTG9va3VwQ2FsbGJhY2spOworICAgICAgICAgICAgaWYgKCFkaXNhc3Nl
bWJsZXIpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGJ1aWxkaW5n
IGRpc2Fzc2VtYmxlci5cbiIpOworICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAg
ICB9CiAgICAgCi0gICAgICAgIGZvciAoc2VjdGlvbiA9IHNlY3Rpb25IZWFkOyBzZWN0aW9uOyBz
ZWN0aW9uID0gc2VjdGlvbi0+bmV4dCkgewotICAgICAgICAgICAgcHJpbnRmKCJEaXNhc3NlbWJs
eSBmb3Igc2VjdGlvbiAlcDpcbiIsIHNlY3Rpb24pOworICAgICAgICAgICAgZm9yIChzZWN0aW9u
ID0gc2VjdGlvbkhlYWQ7IHNlY3Rpb247IHNlY3Rpb24gPSBzZWN0aW9uLT5uZXh0KSB7CisgICAg
ICAgICAgICAgICAgcHJpbnRmKCJEaXNhc3NlbWJseSBmb3Igc2VjdGlvbiAlcDpcbiIsIHNlY3Rp
b24pOwogICAgICAgICAKLSAgICAgICAgICAgIGNoYXIgcGNTdHJpbmdbMjBdOwotICAgICAgICAg
ICAgY2hhciBpbnN0cnVjdGlvblN0cmluZ1sxMDAwXTsKLSAgICAgICAgICAgIHVpbnQ4X3QgKnBj
OwotICAgICAgICAgICAgdWludDhfdCAqZW5kOwotICAgICAgICAKLSAgICAgICAgICAgIHBjID0g
c2VjdGlvbi0+c3RhcnQ7Ci0gICAgICAgICAgICBlbmQgPSBwYyArIHNlY3Rpb24tPnNpemU7Ci0g
ICAgICAgIAotICAgICAgICAgICAgd2hpbGUgKHBjIDwgZW5kKSB7Ci0gICAgICAgICAgICAgICAg
c25wcmludGYoCi0gICAgICAgICAgICAgICAgICAgIHBjU3RyaW5nLCBzaXplb2YocGNTdHJpbmcp
LCAiMHglbHgiLAotICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykodWludHB0cl90
KXBjKTsKKyAgICAgICAgICAgICAgICBjaGFyIHBjU3RyaW5nWzIwXTsKKyAgICAgICAgICAgICAg
ICBjaGFyIGluc3RydWN0aW9uU3RyaW5nWzEwMDBdOworICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
KnBjOworICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmVuZDsKKyAgICAgICAgCisgICAgICAgICAg
ICAgICAgcGMgPSBzZWN0aW9uLT5zdGFydDsKKyAgICAgICAgICAgICAgICBlbmQgPSBwYyArIHNl
Y3Rpb24tPnNpemU7CisgICAgICAgIAorICAgICAgICAgICAgICAgIHdoaWxlIChwYyA8IGVuZCkg
eworICAgICAgICAgICAgICAgICAgICBzbnByaW50ZigKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBjU3RyaW5nLCBzaXplb2YocGNTdHJpbmcpLCAiMHglbHgiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgKHVuc2lnbmVkIGxvbmcpKHVpbnRwdHJfdClwYyk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBzaXplX3QgaW5zdHJ1Y3Rpb25TaXplID0gTExWTURpc2FzbUluc3RydWN0aW9u
KAotICAgICAgICAgICAgICAgICAgICBkaXNhc3NlbWJsZXIsIHBjLCBlbmQgLSBwYywgKHVpbnRw
dHJfdClwYywKLSAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25TdHJpbmcsIHNpemVvZihp
bnN0cnVjdGlvblN0cmluZykpOworICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5zdHJ1Y3Rp
b25TaXplID0gTExWTURpc2FzbUluc3RydWN0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAg
ZGlzYXNzZW1ibGVyLCBwYywgZW5kIC0gcGMsICh1aW50cHRyX3QpcGMsCisgICAgICAgICAgICAg
ICAgICAgICAgICBpbnN0cnVjdGlvblN0cmluZywgc2l6ZW9mKGluc3RydWN0aW9uU3RyaW5nKSk7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoIWluc3RydWN0aW9uU2l6ZSkKLSAg
ICAgICAgICAgICAgICAgICAgc25wcmludGYoaW5zdHJ1Y3Rpb25TdHJpbmcsIHNpemVvZihpbnN0
cnVjdGlvblN0cmluZyksICIuYnl0ZSAweCUwMngiLCAqcGMrKyk7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBwYyArPSBpbnN0cnVjdGlvblNpemU7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghaW5zdHJ1Y3Rpb25TaXplKQorICAgICAgICAgICAgICAgICAgICAg
ICAgc25wcmludGYoaW5zdHJ1Y3Rpb25TdHJpbmcsIHNpemVvZihpbnN0cnVjdGlvblN0cmluZyks
ICIuYnl0ZSAweCUwMngiLCAqcGMrKyk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHBjICs9IGluc3RydWN0aW9uU2l6ZTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIHByaW50ZigiICAgICUxNnM6ICVzXG4iLCBwY1N0cmluZywgaW5zdHJ1
Y3Rpb25TdHJpbmcpOworICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgICAlMTZzOiAlc1xu
IiwgcGNTdHJpbmcsIGluc3RydWN0aW9uU3RyaW5nKTsKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9CisgICAgICAgIAorICAgICAgICBmb3IgKHNlY3Rp
b24gPSBzZWN0aW9uSGVhZDsgc2VjdGlvbjspIHsKKyAgICAgICAgICAgIHN0cnVjdCBNZW1vcnlT
ZWN0aW9uKiBuZXh0U2VjdGlvbiA9IHNlY3Rpb24tPm5leHQ7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIG11bm1hcChzZWN0aW9uLT5zdGFydCwgcm91bmRVcFNpemUoc2VjdGlvbi0+c2l6ZSkp
OworICAgICAgICAgICAgZnJlZShzZWN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
c2VjdGlvbiA9IG5leHRTZWN0aW9uOworICAgICAgICB9CisgICAgICAgIHNlY3Rpb25IZWFkID0g
MDsKKyAgICAgICAgCisgICAgfSB3aGlsZSAobG9vcCk7CiAgICAgCiAgICAgcmV0dXJuIDA7CiB9
CkluZGV4OiBUb29scy9SZWR1Y2VkRlRML2J1aWxkLnNoCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Jl
ZHVjZWRGVEwvYnVpbGQuc2gJKHJldmlzaW9uIDE1ODU1NikKKysrIFRvb2xzL1JlZHVjZWRGVEwv
YnVpbGQuc2gJKHdvcmtpbmcgY29weSkKQEAgLTEwLDUgKzEwLDUgQEAgZWxzZQogICAgIGNvbmZp
Z1BhdGg9IiR7TExWTV9QQVRIfS9iaW4vbGx2bS1jb25maWciCiBmaQogCi1jbGFuZyAtYyAtbyBS
ZWR1Y2VkRlRMLm8gUmVkdWNlZEZUTC5jIGAke2NvbmZpZ1BhdGh9IC0tY3BwZmxhZ3MgLS1jZmxh
Z3NgCitjbGFuZyAtYyAtbyBSZWR1Y2VkRlRMLm8gUmVkdWNlZEZUTC5jIGAke2NvbmZpZ1BhdGh9
IC0tY3BwZmxhZ3MgLS1jZmxhZ3NgIC1nCiBjbGFuZysrIC1vIFJlZHVjZWRGVEwgUmVkdWNlZEZU
TC5vIC1zdGRsaWI9bGliYysrIGAke2NvbmZpZ1BhdGh9IC0tbGRmbGFncyAtLWxpYnNgIC1sY3Vy
c2VzCg==
</data>
<flag name="review"
          id="238934"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>