<?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>144111</bug_id>
          
          <creation_ts>2015-04-23 12:08:35 -0700</creation_ts>
          <short_desc>[ES6] Destructuring assignment need to accept iterables</short_desc>
          <delta_ts>2015-06-20 04:05:16 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1087916</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-23 12:08:35 -0700</bug_when>
    <thetext>Current destructuring assignment is implemented for object and array.
In array case, we need to take a generic way. Iterating the provided value through iterator interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102657</commentid>
    <comment_count>1</comment_count>
      <attachid>255038</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-17 14:51:50 -0700</bug_when>
    <thetext>Created attachment 255038
Prototype

Initial prototype</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103367</commentid>
    <comment_count>2</comment_count>
      <attachid>255213</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-19 12:33:09 -0700</bug_when>
    <thetext>Created attachment 255213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103368</commentid>
    <comment_count>3</comment_count>
      <attachid>255214</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-19 12:38:28 -0700</bug_when>
    <thetext>Created attachment 255214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103370</commentid>
    <comment_count>4</comment_count>
      <attachid>255216</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-19 12:43:46 -0700</bug_when>
    <thetext>Created attachment 255216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103411</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-19 14:39:17 -0700</bug_when>
    <thetext>OK, now the patch is ready.
Could anyone take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103472</commentid>
    <comment_count>6</comment_count>
      <attachid>255216</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-19 16:21:19 -0700</bug_when>
    <thetext>Comment on attachment 255216
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        The iteration becomes different from the for-of cahse.

stray &quot;h&quot; here

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3134
&gt; +    RefPtr&lt;RegisterID&gt; iterator = nullptr;

No need to explicitly state &quot;= nullptr&quot;. I think it’s fine to leave it out.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3136
&gt; +        iterator = generator.emitGetById(generator.newTemporary(), rhs, generator.propertyNames().iteratorSymbol);

But why not initialize iterator outside the scope instead of here? No need to set it to null first.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3142
&gt; +    RefPtr&lt;RegisterID&gt; done = generator.newTemporary();

I have an idea for a slightly different structure that can use a modern for loop. Leave done initialized to nullptr here.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3145
&gt;      for (size_t i = 0; i &lt; m_targetPatterns.size(); i++) {

Use a modern for loop here:

    for (auto&amp; target : m_targetPatterns) {

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3150
&gt; +        if (i)
&gt; +            generator.emitJumpIfTrue(done.get(), iterationSkipped.get());

Then, here, write:

    if (!done)
        done = generator.newTemporary();
    else
        generator.emitJumpIfTrue(done.get(), iterationSkipped.get());

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3176
&gt; +        auto&amp; target = m_targetPatterns[i];

And you don’t need this line of code. Seems slightly cleaner to me.

&gt; Source/JavaScriptCore/parser/Parser.cpp:626
&gt; +        JSTextPosition divotEnd = lastTokenEndPosition();

Not sure we need a local variable for divotEnd.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103607</commentid>
    <comment_count>7</comment_count>
      <attachid>255216</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-20 04:03:40 -0700</bug_when>
    <thetext>Comment on attachment 255216
Patch

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

Thank you for your review!

&gt;&gt; Source/JavaScriptCore/ChangeLog:12
&gt;&gt; +        The iteration becomes different from the for-of cahse.
&gt; 
&gt; stray &quot;h&quot; here

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3136
&gt;&gt; +        iterator = generator.emitGetById(generator.newTemporary(), rhs, generator.propertyNames().iteratorSymbol);
&gt; 
&gt; But why not initialize iterator outside the scope instead of here? No need to set it to null first.

OK, I&apos;ll initialize iterator as `generator.newTemporary()`.
This block early releases CallArguments.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3176
&gt;&gt; +        auto&amp; target = m_targetPatterns[i];
&gt; 
&gt; And you don’t need this line of code. Seems slightly cleaner to me.

Oh, that looks very nice! I&apos;ve changed it. Thank you!

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:626
&gt;&gt; +        JSTextPosition divotEnd = lastTokenEndPosition();
&gt; 
&gt; Not sure we need a local variable for divotEnd.

OK, just using `lastTokenEndPosition()` directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103608</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-20 04:05:16 -0700</bug_when>
    <thetext>Committed r185791: &lt;http://trac.webkit.org/changeset/185791&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255038</attachid>
            <date>2015-06-17 14:51:50 -0700</date>
            <delta_ts>2015-06-19 12:33:04 -0700</delta_ts>
            <desc>Prototype</desc>
            <filename>bug-144111-20150618065113.patch</filename>
            <type>text/plain</type>
            <size>13533</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MmNlMDkwYTNmYTYzY2U5NzhjZmIzMTQ4ZmY5ZWI4ODI1YThkM2NjLi4zZWFmODE1MmI3ZGVjYzky
NGI0N2RmZWU0Zjc2ZWFhMWRjY2RhMGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNS0wNi0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBEZXN0cnVjdHVyaW5nIGFzc2lnbm1lbnQgbmVlZCB0byBh
Y2NlcHQgaXRlcmFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDQxMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0dsb2JhbE9iamVjdC5qczoKKyAgICAgICAgKEdldEl0ZXJhdG9y
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cHVzaEl0ZXJhdG9yQ2xvc2VDb250ZXh0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6
YmluZFZhbHVlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorCiAyMDE1LTA2LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgMzItYml0IGJ1aWxkIGZpeCBhZnRlciByMTg1NjQwLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMKaW5kZXggMzk3NzNiYzc1
MGVhYWFkZGQyZjYyZjM1ZmEwMzRhNzFjYTZhNDE3YS4uMjZhZjc5ZDI0MjYzMTk1MmE5NjNiMDk3
ZmI2ODhjMWI4OTY2MDJlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0dsb2JhbE9iamVjdC5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
R2xvYmFsT2JqZWN0LmpzCkBAIC00NiwzICs0NiwxNiBAQCBmdW5jdGlvbiBUb0xlbmd0aCh0YXJn
ZXQpIHsKICAgICAvLyBvcmlnaW5hbGx5IE1hdGgubWluKE1hdGgubWF4KGxlbmd0aCwgMCksIG1h
eFNhZmVJbnRlZ2VyKSk7CiAgICAgcmV0dXJuIGxlbmd0aCA+IDAgPyAobGVuZ3RoIDwgbWF4U2Fm
ZUludGVnZXIgPyBsZW5ndGggOiBtYXhTYWZlSW50ZWdlcikgOiAwOwogfQorCitmdW5jdGlvbiBH
ZXRJdGVyYXRvcihvYmplY3QsIG1ldGhvZCkKK3sKKyAgICBpZiAobWV0aG9kID09PSB1bmRlZmlu
ZWQpCisgICAgICAgIG1ldGhvZCA9IG9iamVjdFtAc3ltYm9sSXRlcmF0b3JdOworCisgICAgdmFy
IGl0ZXJhdG9yID0gbWV0aG9kLkBjYWxsKG9iamVjdCk7CisKKyAgICBpZiAodHlwZW9mIGl0ZXJh
dG9yICE9PSAnb2JqZWN0JyB8fCBpdGVyYXRvciA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4i
KTsKKworICAgIHJldHVybiBpdGVyYXRvcjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYWJiYTU0
OWE5MzAzMzQwYzkzZjMxYmI3NmNmZjBhODk5Njk3OTRhOS4uZTY0ODFhYzBhOGQxN2UxNzRhOTQ1
YzI4NzAzZmIwMTJiMmM3MDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTIyMzUsNyArMjIzNSw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hGaW5hbGx5Q29udGV4dChTdGF0ZW1lbnRO
b2RlKiBmaW5hbGx5QmxvY2spCiAgICAgbV9maW5hbGx5RGVwdGgrKzsKIH0KIAotdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6cHVzaEl0ZXJhdG9yQ2xvc2VDb250ZXh0KFJlZ2lzdGVySUQqIGl0ZXJh
dG9yLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OnB1c2hJdGVyYXRvckNsb3NlQ29udGV4dChSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3Qg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAgLy8gUmVjbGFpbSBmcmVlIGxh
YmVsIHNjb3Blcy4KICAgICB3aGlsZSAobV9sYWJlbFNjb3Blcy5zaXplKCkgJiYgIW1fbGFiZWxT
Y29wZXMubGFzdCgpLnJlZkNvdW50KCkpCkBAIC0yOTMzLDcgKzI5MzMsNyBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzVW5kZWZpbmVkKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjKQogICAgIHJldHVybiBkc3Q7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNs
b3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSkKIHsKICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBuZXdMYWJlbCgpOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwg
aXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCBjYmM5NjU4OTRjYmJhODQwMTg3YTU5OTBiOTE5ZWQzZWIxZTY3NjU2Li5lNzI0NTZjNDMwNWU5
ODUwMmNjM2QwNTM2MTljZjg2MTA0MjU1YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC04NSw3ICs4NSw3
IEBACiAgICAgc3RydWN0IEZpbmFsbHlDb250ZXh0IHsKICAgICAgICAgU3RhdGVtZW50Tm9kZSog
ZmluYWxseUJsb2NrOwogICAgICAgICBSZWdpc3RlcklEKiBpdGVyYXRvcjsKLSAgICAgICAgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZTsKKyAgICAgICAgY29uc3QgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZTsKICAgICAgICAgdW5zaWduZWQg
c2NvcGVDb250ZXh0U3RhY2tTaXplOwogICAgICAgICB1bnNpZ25lZCBzd2l0Y2hDb250ZXh0U3Rh
Y2tTaXplOwogICAgICAgICB1bnNpZ25lZCBmb3JJbkNvbnRleHRTdGFja1NpemU7CkBAIC01NDYs
NyArNTQ2LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzT2JqZWN0KFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzVW5kZWZp
bmVkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKIAotICAgICAgICB2b2lkIGVt
aXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSogbm9kZSk7CisgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCog
aXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKIAogICAgICAg
ICB2b2lkIGVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKCk7CiAKQEAgLTU3OCw3ICs1Nzgs
NyBAQAogCiAgICAgICAgIHZvaWQgcHVzaEZpbmFsbHlDb250ZXh0KFN0YXRlbWVudE5vZGUqIGZp
bmFsbHlCbG9jayk7CiAgICAgICAgIHZvaWQgcG9wRmluYWxseUNvbnRleHQoKTsKLSAgICAgICAg
dm9pZCBwdXNoSXRlcmF0b3JDbG9zZUNvbnRleHQoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUpOworICAgICAgICB2b2lkIHB1c2hJ
dGVyYXRvckNsb3NlQ29udGV4dChSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSk7CiAgICAgICAgIHZvaWQgcG9wSXRlcmF0
b3JDbG9zZUNvbnRleHQoKTsKIAogICAgICAgICB2b2lkIHB1c2hJbmRleGVkRm9ySW5TY29wZShS
ZWdpc3RlcklEKiBsb2NhbCwgUmVnaXN0ZXJJRCogaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDI0YmI5ODdm
ODNkZDYzNWYxMDU1NmQ2YWE1YzRkOWQxNjA2MjM3MGUuLjU1YjA0MTA5NGYyNzcwODUyM2YwMjYx
NTM0N2VkN2M0NTA4MzhkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTMxMTksMTggKzMxMTksMTExIEBAIFJlZ2lz
dGVySUQqIERlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhCiBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlOjp+RGVjb25zdHJ1
Y3Rpb25QYXR0ZXJuTm9kZSgpCiB7CiB9Ci0gICAgCisKIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6
YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykg
Y29uc3QKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGFyZ2V0UGF0dGVybnMuc2l6
ZSgpOyBpKyspIHsKLSAgICAgICAgYXV0byB0YXJnZXQgPSBtX3RhcmdldFBhdHRlcm5zW2ldOwot
ICAgICAgICBpZiAoIXRhcmdldCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGVtcCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRMb2FkKHRlbXAuZ2V0KCksIGpzTnVtYmVyKGkpKTsKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRCeVZhbCh0ZW1wLmdldCgpLCByaHMsIHRlbXAuZ2V0KCkpOwotICAgICAg
ICB0YXJnZXQtPmJpbmRWYWx1ZShnZW5lcmF0b3IsIHRlbXAuZ2V0KCkpOworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBpdGVyYXRvciA9IG51bGxwdHI7CisgICAgeworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZ2V0SXRlcmF0b3IgPSBudWxscHRyOworICAgICAgICBWYXJpYWJsZSB2YXIgPSBn
ZW5lcmF0b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMo
KS5HZXRJdGVyYXRvclByaXZhdGVOYW1lKCkpOworICAgICAgICBpZiAoUmVnaXN0ZXJJRCogbG9j
YWwgPSB2YXIubG9jYWwoKSkKKyAgICAgICAgICAgIGdldEl0ZXJhdG9yID0gZ2VuZXJhdG9yLmVt
aXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgbG9jYWwpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIGdldEl0ZXJhdG9yID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoc2Nv
cGUuZ2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXIpKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdldEl0ZXJhdG9yLmdldCgp
LCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworICAgICAgICB9CisKKyAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbnVsbHB0ciwgMik7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBq
c1VuZGVmaW5lZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMu
YXJndW1lbnRSZWdpc3RlcigwKSwgcmhzKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNh
bGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigxKSwganNVbmRlZmluZWQoKSk7CisgICAgICAg
IGl0ZXJhdG9yID0gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
Z2V0SXRlcmF0b3IuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9CisKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZG9uZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKworICAgIFJlZlB0cjxM
YWJlbD4gdHJ5U3RhcnRMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwodHJ5U3RhcnRMYWJlbC5nZXQoKSk7CisgICAgVHJ5RGF0YSogdHJ5RGF0YSA9
IGdlbmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0TGFiZWwuZ2V0KCkpOworICAgIHsKKyAgICAgICAg
QVNTRVJUKCFtX3RhcmdldFBhdHRlcm5zLmlzRW1wdHkoKSk7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworCisg
ICAgICAgICAgICBSZWZQdHI8TGFiZWw+IGl0ZXJhdGlvblNraXBwZWQgPSBnZW5lcmF0b3IubmV3
TGFiZWwoKTsKKyAgICAgICAgICAgIGlmIChpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRpb25Ta2lwcGVkLmdldCgpKTsKKworICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0
KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkubmV4dCk7CisgICAgICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKGdlbmVyYXRvciwgbnVsbHB0cik7CisgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0
ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwodmFsdWUu
Z2V0KCksIG5leHQuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHR5cGVJc09iamVjdCA9IGdlbmVy
YXRvci5uZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1
ZShnZW5lcmF0b3IuZW1pdElzT2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFsdWUu
Z2V0KCkpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNl
IGlzIG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChkb25lLmdldCgpLCB2YWx1ZS5n
ZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5kb25lKTsKKyAgICAgICAgICAgICAgICBS
ZWZQdHI8TGFiZWw+IHZhbHVlSXNTZXQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tp
cHBlZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHZhbHVl
LmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS52YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKHZhbHVlSXNTZXQuZ2V0KCkpOworICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoaXRlcmF0aW9uU2tpcHBlZC5nZXQoKSk7
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKHZhbHVlLmdldCgpLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHZhbHVlSXNTZXQu
Z2V0KCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIHRhcmdldCA9IG1fdGFy
Z2V0UGF0dGVybnNbaV07CisgICAgICAgICAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgdGFyZ2V0LT5iaW5kVmFsdWUoZ2VuZXJhdG9yLCB2
YWx1ZS5nZXQoKSk7CisgICAgICAgIH0KICAgICB9CisgICAgUmVmUHRyPExhYmVsPiBpdGVyYXRv
ckNsb3NpbmcgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICBnZW5lcmF0b3IuZW1pdEp1bXAo
aXRlcmF0b3JDbG9zaW5nLmdldCgpKTsKKworICAgIC8vIEZvciB0aHJvdy1lZCBjb250cm9sIGZs
b3cuCisgICAgeworICAgICAgICBSZWZQdHI8TGFiZWw+IGNhdGNoSGVyZSA9IGdlbmVyYXRvci5l
bWl0TGFiZWwoZ2VuZXJhdG9yLm5ld0xhYmVsKCkuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZXhjZXB0aW9uUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd25WYWx1ZVJlZ2lzdGVyID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IucG9wVHJ5QW5kRW1pdENhdGNoKHRy
eURhdGEsIGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgp
LCBjYXRjaEhlcmUuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVzaXplZEZpbmFsbHkpOworCisg
ICAgICAgIFJlZlB0cjxMYWJlbD4gY2F0Y2hEb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dEp1bXBJZlRydWUoZ2VuZXJhdG9yLmVtaXRJc1VuZGVmaW5lZChnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIGNhdGNoRG9uZS5nZXQoKSk7CisKKyAgICAgICAg
UmVmUHRyPExhYmVsPiByZXR1cm5DYWxsVHJ5U3RhcnQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZXR1cm5DYWxsVHJ5U3RhcnQuZ2V0KCkpOwor
ICAgICAgICBUcnlEYXRhKiByZXR1cm5DYWxsVHJ5RGF0YSA9IGdlbmVyYXRvci5wdXNoVHJ5KHJl
dHVybkNhbGxUcnlTdGFydC5nZXQoKSk7CisKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5B
cmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRyKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3Zl
KHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRo
b2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1lbnRzLCBkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwo
Y2F0Y2hEb25lLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhleGNlcHRpb25S
ZWdpc3Rlci5nZXQoKSk7CisKKyAgICAgICAgLy8gQWJzb3JiIGV4Y2VwdGlvbi4KKyAgICAgICAg
Z2VuZXJhdG9yLnBvcFRyeUFuZEVtaXRDYXRjaChyZXR1cm5DYWxsVHJ5RGF0YSwgZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGNhdGNoRG9uZS5nZXQo
KSwgSGFuZGxlclR5cGU6OlN5bnRoZXNpemVkRmluYWxseSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0VGhyb3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworICAgIH0KKworICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwoaXRlcmF0b3JDbG9zaW5nLmdldCgpKTsKKworICAgIFJlZlB0cjxMYWJlbD4g
aXRlcmF0b3JDbG9zZWQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICBnZW5lcmF0b3IuZW1p
dEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0b3JDbG9zZWQuZ2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgdGhpcyk7CisgICAgZ2VuZXJh
dG9yLmVtaXRMYWJlbChpdGVyYXRvckNsb3NlZC5nZXQoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIEFy
cmF5UGF0dGVybk5vZGU6OmVtaXREaXJlY3RCaW5kaW5nKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgRXhwcmVzc2lvbk5vZGUqIHJocykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA3YjAwYzdmZTEzNzZiNzY4OTM2OGVmZTYzZTRjMDEw
ZmM2NDQ0ZWY3Li43NDdmNjA0ZjZlMDU3OTRjODAwOWNjNjE3NmUyNGU5NTVhNmQ5ZWYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNzYyLDcgKzE3NjIsNyBAQAogICAg
IH07CiAjZW5kaWYKIAotICAgIGNsYXNzIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUgOiBwdWJs
aWMgUmVmQ291bnRlZDxEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlPiB7CisgICAgY2xhc3MgRGVj
b25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPERlY29uc3RydWN0aW9u
UGF0dGVybk5vZGU+LCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKTsKICAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwMTY1ZGM2N2ZmYWYzMTJjMTc3YWZiMzc0
ODc3ZjcxNTM3YmE1YjBiLi5iZjBiYzcxZmMzOWUyMWI2NmFiNmE5ZDVlY2FiODAyNWNiYjJjMzg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC00NTQsNiArNDU0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0p
CiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNHZXRUZW1wbGF0ZU9iamVjdCA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdldFRlbXBsYXRlT2JqZWN0KTsKICAg
ICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1RvTGVuZ3RoID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVp
bHRpbkZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3RUb0xlbmd0aENvZGVHZW5lcmF0b3Iodm0pLCB0
aGlzKTsKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1RvSW50ZWdlciA9IEpTRnVuY3Rpb246
OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0VG9JbnRlZ2VyQ29kZUdlbmVy
YXRvcih2bSksIHRoaXMpOworICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jR2V0SXRlcmF0b3Ig
PSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdEdldEl0
ZXJhdG9yQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpOwogCiAgICAgR2xvYmFsUHJvcGVydHlJbmZv
IHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LApAQCAtNDgxLDYgKzQ4Miw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQog
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+c3ltYm9sSXRlcmF0
b3JQcml2YXRlTmFtZSwgU3ltYm9sOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwm
Pigqdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wuaW1wbCgpKSksIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlRvTGVuZ3RoUHJpdmF0ZU5hbWUoKSwgcHJpdmF0
ZUZ1bmNUb0xlbmd0aCwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuVG9J
bnRlZ2VyUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUb0ludGVnZXIsIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkdldEl0ZXJhdG9yUHJpdmF0ZU5hbWUoKSwgcHJpdmF0
ZUZ1bmNHZXRJdGVyYXRvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAg
IH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RI
KHN0YXRpY0dsb2JhbHMpKTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255213</attachid>
            <date>2015-06-19 12:33:09 -0700</date>
            <delta_ts>2015-06-19 12:38:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144111-20150620043230.patch</filename>
            <type>text/plain</type>
            <size>24665</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YWQ3N2NkNzYyZDBlOTQ5YmM5OWE0NjYzYWRlZWU4MmMxYTBhODQxLi5jMWRjYzNmNzRkODY3NWE2
ODYwMWEwMmUyNWI4NmYzNWMxNjgxZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNS0wNi0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBEZXN0cnVjdHVyaW5nIGFzc2lnbm1lbnQgbmVlZCB0byBh
Y2NlcHQgaXRlcmFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDQxMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHRoYXQgZGVzdHJ1Y3R1cmluZyBhc3NpZ25tZW50cyB0
byBhcnJheSBiaW5kaW5nIHBhdHRlcm5zIGFjY2VwdCBpdGVyYWJsZXMuCisgICAgICAgIFByZXZp
b3VzbHksIGl0IGp1c3QgYWNjZXNzIHRoZSBpbmRleGVkIHByb3BlcnRpZXMuCisgICAgICAgIEFm
dGVyIHRoaXMgcGF0Y2gsIGl0IGl0ZXJhdGUgdGhlIGdpdmVuIHZhbHVlIGJ5IHVzaW5nIEVTNiBp
dGVyYXRvciBwcm90b2NvbC4KKworICAgICAgICBUaGUgaXRlcmF0aW9uIGJlY29tZXMgZGlmZmVy
ZW50IGZyb20gdGhlIGZvci1vZiBjYWhzZS4KKyAgICAgICAgMS4gU2luY2UgdGhlcmUncyBubyBi
cmVhay9jb250aW51ZSBjYXNlLCBmaW5hbGx5IHNjb3BlIGlzIG5vdCBuZWNlc3NhcnkuCisgICAg
ICAgIDIuIFdoZW4gdGhlIGVycm9yIGlzIHJhaXNlZCwgdGhlIGNsb3NlIHN0YXR1cyBvZiB0aGUg
aXRlcmF0b3IgYmVjb21lcyB0cnVlLiBTbyBJdGVyYXRvckNsb3NlIGlzIG5vdCBjYWxsZWQgZm9y
IHRoYXQuCisgICAgICAgIDMuIFNpbmNlIHRoZSBhcnJheSBiaW5kaW5nIHBhdHRlcm5zIHJlcXVp
cmVzIGEgbGltaXRlZCBjb3VudCBvZiBpdGVyYXRpb25zIChpZiB0aGVyZSBpcyBubyByZXN0KC4u
LnJlc3QpIGNhc2UpLCBJdGVyYXRvckNsb3NlIGlzIGNhbGxlZCB3aGVuIHRoZSBpdGVyYXRpb24g
ZG9lcyBub3QgY29uc3VtZSB0aGUgYWxsIHZhbHVlcyBvZiB0aGUgaXRlcmF0b3IuCisgICAgICAg
IDMuIFNpbmNlIHRoZSBhcnJheSBiaW5kaW5nIHBhdHRlcm5zIHJlcXVpcmVzIGEgc3BlY2lmaWVk
IGNvdW50IG9mIGl0ZXJhdGlvbnMsIGl0ZXJhdG9yJ3MgbmV4dCBjYWxsIGlzIHNraXBwZWQgd2hl
biBpdGVyYXRvciBiZWNvbWVzIGNsb3NlZC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNo
SXRlcmF0b3JDbG9zZUNvbnRleHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEl0ZXJhdG9yQ2xvc2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAg
ICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUpOgorICAgICAgICAqIHBhcnNlci9B
U1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmZpbmlzaEFycmF5UGF0dGVy
bik6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlY29uc3RydWN0aW9u
UGF0dGVybik6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1hY2NlcHRzLWl0ZXJhYmxlcy5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICgu
c2V0IHNob3VsZFRocm93KToKKwogMjAxNS0wNi0xOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbREZHXSBBdm9pZCBPU1IgZXhpdCBpbiB0aGUgbWlk
ZGxlIG9mIHN0cmluZyBjb25jYXRlbmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGFiYmE1NDlh
OTMwMzM0MGM5M2YzMWJiNzZjZmYwYTg5OTY5Nzk0YTkuLmU2NDgxYWMwYThkMTdlMTc0YTk0NWMy
ODcwM2ZiMDEyYjJjNzA2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMjM1LDcgKzIyMzUsNyBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoRmluYWxseUNvbnRleHQoU3RhdGVtZW50Tm9k
ZSogZmluYWxseUJsb2NrKQogICAgIG1fZmluYWxseURlcHRoKys7CiB9CiAKLXZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OnB1c2hJdGVyYXRvckNsb3NlQ29udGV4dChSZWdpc3RlcklEKiBpdGVyYXRv
ciwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjpwdXNoSXRlcmF0b3JDbG9zZUNvbnRleHQoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIC8vIFJlY2xhaW0gZnJlZSBsYWJl
bCBzY29wZXMuCiAgICAgd2hpbGUgKG1fbGFiZWxTY29wZXMuc2l6ZSgpICYmICFtX2xhYmVsU2Nv
cGVzLmxhc3QoKS5yZWZDb3VudCgpKQpAQCAtMjkzMyw3ICsyOTMzLDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc1VuZGVmaW5lZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIHNyYykKICAgICByZXR1cm4gZHN0OwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEqIG5vZGUpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9z
ZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5v
ZGUpCiB7CiAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gbmV3TGFiZWwoKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0
ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
Y2JjOTY1ODk0Y2JiYTg0MDE4N2E1OTkwYjkxOWVkM2ViMWU2NzY1Ni4uZTcyNDU2YzQzMDVlOTg1
MDJjYzNkMDUzNjE5Y2Y4NjEwNDI1NWJmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtODUsNyArODUsNyBA
QAogICAgIHN0cnVjdCBGaW5hbGx5Q29udGV4dCB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIGZp
bmFsbHlCbG9jazsKICAgICAgICAgUmVnaXN0ZXJJRCogaXRlcmF0b3I7Ci0gICAgICAgIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGU7CisgICAgICAgIGNvbnN0IFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGU7CiAgICAgICAgIHVuc2lnbmVkIHNj
b3BlQ29udGV4dFN0YWNrU2l6ZTsKICAgICAgICAgdW5zaWduZWQgc3dpdGNoQ29udGV4dFN0YWNr
U2l6ZTsKICAgICAgICAgdW5zaWduZWQgZm9ySW5Db250ZXh0U3RhY2tTaXplOwpAQCAtNTQ2LDcg
KzU0Niw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc09iamVjdChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1VuZGVmaW5l
ZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAKLSAgICAgICAgdm9pZCBlbWl0
SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUpOworICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0
ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAKICAgICAgICAg
dm9pZCBlbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpOwogCkBAIC01NzgsNyArNTc4LDcg
QEAKIAogICAgICAgICB2b2lkIHB1c2hGaW5hbGx5Q29udGV4dChTdGF0ZW1lbnROb2RlKiBmaW5h
bGx5QmxvY2spOwogICAgICAgICB2b2lkIHBvcEZpbmFsbHlDb250ZXh0KCk7Ci0gICAgICAgIHZv
aWQgcHVzaEl0ZXJhdG9yQ2xvc2VDb250ZXh0KFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlKTsKKyAgICAgICAgdm9pZCBwdXNoSXRl
cmF0b3JDbG9zZUNvbnRleHQoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUpOwogICAgICAgICB2b2lkIHBvcEl0ZXJhdG9y
Q2xvc2VDb250ZXh0KCk7CiAKICAgICAgICAgdm9pZCBwdXNoSW5kZXhlZEZvckluU2NvcGUoUmVn
aXN0ZXJJRCogbG9jYWwsIFJlZ2lzdGVySUQqIGluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBkMDcxMGQ0OGM5
NWFiOTg3MTIxZGM2YmQ5MjEzMmFiYjFlM2VmZmQzLi4zZThmYTZiYjM3ZTRlYTBjODg4MWVjOGZh
OWY1MTFiZmRlNDdhYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zMTI4LDIwICszMTI4LDY3IEBAIHN0YXRpYyB2
b2lkIGFzc2lnbkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVyCiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG1heWJlVW5kZWZpbmVkLCBk
ZWZhdWx0VmFsdWUpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoaXNOb3RVbmRlZmluZWQuZ2V0
KCkpOwogfQotICAgIAorCiB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpIGNvbnN0CiB7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3RhcmdldFBhdHRlcm5zLnNpemUoKTsgaSsrKSB7Ci0gICAg
ICAgIGF1dG8gdGFyZ2V0ID0gbV90YXJnZXRQYXR0ZXJuc1tpXTsKLSAgICAgICAgaWYgKCF0YXJn
ZXQucGF0dGVybikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGVtcCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMb2FkKHRlbXAuZ2V0KCksIGpzTnVtYmVyKGkpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRHZXRCeVZhbCh0ZW1wLmdldCgpLCByaHMsIHRlbXAuZ2V0KCkpOwotICAgICAgICBpZiAodGFy
Z2V0LmRlZmF1bHRWYWx1ZSkKLSAgICAgICAgICAgIGFzc2lnbkRlZmF1bHRWYWx1ZUlmVW5kZWZp
bmVkKGdlbmVyYXRvciwgdGVtcC5nZXQoKSwgdGFyZ2V0LmRlZmF1bHRWYWx1ZSk7Ci0gICAgICAg
IHRhcmdldC5wYXR0ZXJuLT5iaW5kVmFsdWUoZ2VuZXJhdG9yLCB0ZW1wLmdldCgpKTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBudWxscHRyOworICAgIHsKKyAgICAgICAgaXRl
cmF0b3IgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBy
aHMsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOworICAgICAgICBD
YWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRNb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIHJocyk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbChpdGVyYXRvci5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgYXJncywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CisKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gZG9uZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKwor
ICAgIFJlZlB0cjxMYWJlbD4gdHJ5U3RhcnRMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwor
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodHJ5U3RhcnRMYWJlbC5nZXQoKSk7CisgICAgeworICAg
ICAgICBBU1NFUlQoIW1fdGFyZ2V0UGF0dGVybnMuaXNFbXB0eSgpKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3RhcmdldFBhdHRlcm5zLnNpemUoKTsgaSsrKSB7CisgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
CisKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gaXRlcmF0aW9uU2tpcHBlZCA9IGdlbmVyYXRv
ci5uZXdMYWJlbCgpOworICAgICAgICAgICAgaWYgKGkpCisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvblNraXBwZWQuZ2V0KCkpOwor
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHQg
PSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBpdGVyYXRv
ci5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5uZXh0KTsKKyAgICAgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRyKTsKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgaXRlcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbCh2
YWx1ZS5nZXQoKSwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0g
Z2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1w
SWZUcnVlKGdlbmVyYXRvci5lbWl0SXNPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2
YWx1ZS5nZXQoKSksIHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRl
cmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRvbmUuZ2V0KCksIHZh
bHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmRvbmUpOworICAgICAgICAgICAg
ICAgIFJlZlB0cjxMYWJlbD4gdmFsdWVJc1NldCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRp
b25Ta2lwcGVkLmdldCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
dmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnZhbHVl
KTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAodmFsdWVJc1NldC5nZXQoKSk7
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChpdGVyYXRpb25Ta2lwcGVkLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQodmFsdWUuZ2V0KCksIGpz
VW5kZWZpbmVkKCkpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodmFsdWVJ
c1NldC5nZXQoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8mIHRhcmdldCA9
IG1fdGFyZ2V0UGF0dGVybnNbaV07CisgICAgICAgICAgICBpZiAoIXRhcmdldC5wYXR0ZXJuKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHRhcmdldC5kZWZhdWx0
VmFsdWUpCisgICAgICAgICAgICAgICAgYXNzaWduRGVmYXVsdFZhbHVlSWZVbmRlZmluZWQoZ2Vu
ZXJhdG9yLCB2YWx1ZS5nZXQoKSwgdGFyZ2V0LmRlZmF1bHRWYWx1ZSk7CisgICAgICAgICAgICB0
YXJnZXQucGF0dGVybi0+YmluZFZhbHVlKGdlbmVyYXRvciwgdmFsdWUuZ2V0KCkpOworICAgICAg
ICB9CisgICAgfQorCisgICAgUmVmUHRyPExhYmVsPiBpdGVyYXRvckNsb3NlZCA9IGdlbmVyYXRv
ci5uZXdMYWJlbCgpOworICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBp
dGVyYXRvckNsb3NlZC5nZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRJdGVyYXRvckNsb3NlKGl0
ZXJhdG9yLmdldCgpLCB0aGlzKTsKKyAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGl0ZXJhdG9yQ2xv
c2VkLmdldCgpKTsKIH0KIAogUmVnaXN0ZXJJRCogQXJyYXlQYXR0ZXJuTm9kZTo6ZW1pdERpcmVj
dEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBF
eHByZXNzaW9uTm9kZSogcmhzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaAppbmRleCA3ODc1ZmE4NzcwNDQxYjBiMDY5MGIzZmI4Y2RlZWVlODhlODFhMDczLi5jM2Jl
NjBkYWJlODZlNDk3MmRmMjQxYzgzNDhkZjUwNDliMGY4ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtNzQ0LDYgKzc0NCwxMSBAQCBjbGFzcyBBU1RC
dWlsZGVyIHsKICAgICB7CiAgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KGxvY2F0aW9uLCBwYXR0
ZXJuLmdldCgpLCBkZWZhdWx0VmFsdWUpOwogICAgIH0KKworICAgIHZvaWQgZmluaXNoQXJyYXlQ
YXR0ZXJuKEFycmF5UGF0dGVybiBub2RlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpCisgICAgeworICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLmdldCgpLCBk
aXZvdFN0YXJ0LCBkaXZvdCwgZGl2b3RFbmQpOworICAgIH0KICAgICAKICAgICBPYmplY3RQYXR0
ZXJuIGNyZWF0ZU9iamVjdFBhdHRlcm4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJikKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggNzliYjQyNmNhYWIyZjUxYjA2YzIz
NjE4ZjAwNThmOTA1YWU4ZjIzYS4uNzllMWRjODNkNzc2ZWFmODhkOWRmMWU0YzU3ODJlYjBmMzhm
YzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTc4MCw3ICsxNzgw
LDcgQEAKICAgICAgICAgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSgpOwogICAgIH07CiAKLSAg
ICBjbGFzcyBBcnJheVBhdHRlcm5Ob2RlIDogcHVibGljIERlY29uc3RydWN0aW9uUGF0dGVybk5v
ZGUgeworICAgIGNsYXNzIEFycmF5UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVjb25zdHJ1Y3Rpb25Q
YXR0ZXJuTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBSZWY8QXJyYXlQYXR0ZXJuTm9kZT4gY3JlYXRlKCk7CiAgICAgICAg
IHZvaWQgYXBwZW5kSW5kZXgoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRGVjb25zdHJ1Y3Rpb25Q
YXR0ZXJuTm9kZSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmZmQzNDc4ZjA4ZTgyMzE3OGYxZjU2
N2NmOTZhOWNiNThjMmFjNDE1Li5jMDJlMjc4NTBkNzRiMjc5NDY1ZTkxZDE5ZjBjNThmMjNjMDM5
NzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC01OTcsNiAr
NTk3LDcgQEAKICAgICBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHBhdHRlcm47CiAgICAgc3dp
dGNoIChtX3Rva2VuLm1fdHlwZSkgewogICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsKKyAgICAgICAg
SlNUZXh0UG9zaXRpb24gZGl2b3RTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogICAgICAg
ICBhdXRvIGFycmF5UGF0dGVybiA9IGNvbnRleHQuY3JlYXRlQXJyYXlQYXR0ZXJuKG1fdG9rZW4u
bV9sb2NhdGlvbik7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25z
dHJ1Y3RUb0V4cHJlc3Npb25zICYmIG1hdGNoKENMT1NFQlJBQ0tFVCkpCkBAIC02MjIsNiArNjIz
LDggQEAKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xP
U0VCUkFDS0VULCAiRXhwZWN0ZWQgZWl0aGVyIGEgY2xvc2luZyAnXScgb3IgYSAnLCcgZm9sbG93
aW5nIGFuIGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybiIpOworICAgICAgICBKU1RleHRQ
b3NpdGlvbiBkaXZvdEVuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7CisgICAgICAgIGNvbnRl
eHQuZmluaXNoQXJyYXlQYXR0ZXJuKGFycmF5UGF0dGVybiwgZGl2b3RTdGFydCwgZGl2b3RTdGFy
dCwgZGl2b3RFbmQpOwogICAgICAgICBwYXR0ZXJuID0gYXJyYXlQYXR0ZXJuOwogICAgICAgICBi
cmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5
bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCmluZGV4IDdmNmUzZTEwYTljNDlhMGU5N2YyNGQ2Nzg5ODRlMzM0NTBjNGMzNTMuLmJlNDYy
MWQzN2JjMTdjYWQ1ODk2YjQ4ZDE4NmRmNDA0ZTExYmNjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0zMTEsNiArMzExLDkgQEAgY2xhc3Mg
U3ludGF4Q2hlY2tlciB7CiAgICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5FbnRyeShBcnJheVBh
dHRlcm4sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIERlY29uc3RydWN0aW9uUGF0dGVybiwgaW50
KQogICAgIHsKICAgICB9CisgICAgdm9pZCBmaW5pc2hBcnJheVBhdHRlcm4oQXJyYXlQYXR0ZXJu
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mKQorICAgIHsKKyAgICB9CiAgICAgT2JqZWN0UGF0dGVybiBjcmVhdGVPYmpl
Y3RQYXR0ZXJuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpCiAgICAgewogICAgICAgICByZXR1cm4g
T2JqZWN0RGVjb25zdHJ1Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1hY2NlcHRzLWl0ZXJhYmxlcy5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGVzdHJ1Y3R1cmluZy1hc3Np
Z25tZW50LWFjY2VwdHMtaXRlcmFibGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNDY4OGIzNzMyZDZjNmQ3
ZWNmMDM3OGNiYmQ4NTI0N2IzYmJlNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1hY2NlcHRzLWl0
ZXJhYmxlcy5qcwpAQCAtMCwwICsxLDQ0MSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRo
cm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOwor
ICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9
IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2Up
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7
Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIFthLCBiLCBjXSA9IFsxLCAyLCAzXTsKKyAg
ICBzaG91bGRCZShhLCAxKTsKKyAgICBzaG91bGRCZShiLCAyKTsKKyAgICBzaG91bGRCZShjLCAz
KTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIFthLCBiLCBjXSA9IFsxLCAyLCAz
XS5rZXlzKCk7CisgICAgc2hvdWxkQmUoYSwgMCk7CisgICAgc2hvdWxkQmUoYiwgMSk7CisgICAg
c2hvdWxkQmUoYywgMik7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIHZhciBbYSwgYiwg
Y10gPSBbMSwgMiwgM10udmFsdWVzKCk7CisgICAgc2hvdWxkQmUoYSwgMSk7CisgICAgc2hvdWxk
QmUoYiwgMik7CisgICAgc2hvdWxkQmUoYywgMyk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIHZhciBbYSwgLCBjXSA9IFsxLCAyLCAzXS52YWx1ZXMoKTsKKyAgICBzaG91bGRCZShhLCAx
KTsKKyAgICBzaG91bGRCZShjLCAzKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFy
IFthLCBiLCBjXSA9IFsxLCAsIDNdLnZhbHVlcygpOworICAgIHNob3VsZEJlKGEsIDEpOworICAg
IHNob3VsZEJlKGIsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoYywgMyk7Cit9KCkpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIHZhciBbLCBiLCBjXSA9IFsxLCAyLCAzLCA0LCA1LCA2XS52YWx1
ZXMoKTsKKyAgICBzaG91bGRCZShiLCAyKTsKKyAgICBzaG91bGRCZShjLCAzKTsKK30oKSk7CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIFthLCBiLCBjXSA9IFsxXS52YWx1ZXMoKTsKKyAgICBz
aG91bGRCZShhLCAxKTsKKyAgICBzaG91bGRCZShiLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJl
KGMsIHVuZGVmaW5lZCk7Cit9KCkpOworCisoZnVuY3Rpb24gKFthLCBiLCBjXSkgeworICAgIHNo
b3VsZEJlKGEsIDEpOworICAgIHNob3VsZEJlKGIsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUo
YywgdW5kZWZpbmVkKTsKK30oWzFdLnZhbHVlcygpKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
dmFyIFthID0gMCwgYiA9IDIsIGMgPSAzXSA9IFsxXS52YWx1ZXMoKTsKKyAgICBzaG91bGRCZShh
LCAxKTsKKyAgICBzaG91bGRCZShiLCAyKTsKKyAgICBzaG91bGRCZShjLCAzKTsKK30oKSk7CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIFthID0gMSwgYiA9IDIsIGMgPSAzXSA9IFt1bmRlZmlu
ZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXTsKKyAgICBzaG91bGRCZShhLCAxKTsKKyAgICBzaG91
bGRCZShiLCAyKTsKKyAgICBzaG91bGRCZShjLCAzKTsKK30oKSk7CisKKy8vIFN0cmluZyB3aXRo
IGEgc3Vycm9nYXRlIHBhaXIuCisoZnVuY3Rpb24gKCkgeworICAgIHZhciBzdHJpbmcgPSAi8KCu
t+mHjuWutiI7CisgICAgdmFyIFthLCBiLCBjXSA9IHN0cmluZzsKKyAgICBzaG91bGRCZShzdHJp
bmcubGVuZ3RoLCA0KTsKKyAgICBzaG91bGRCZShhLCAn8KCutycpOworICAgIHNob3VsZEJlKGIs
ICfph44nKTsKKyAgICBzaG91bGRCZShjLCAn5a62Jyk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkg
eworICAgIHZhciBzZXQgPSBuZXcgU2V0KFsxLCAyLCAzXSk7CisgICAgdmFyIFthLCBiLCBjXSA9
IHNldDsKKyAgICBzaG91bGRCZShzZXQuaGFzKGEpLCB0cnVlKTsKKyAgICBzaG91bGRCZShzZXQu
aGFzKGIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShzZXQuaGFzKGMpLCB0cnVlKTsKK30oKSk7CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIG1hcCA9IG5ldyBNYXAoW1sxLCAxXSwgWzIsIDJdLCBb
MywgM11dKTsKKyAgICB2YXIgW2EsIGIsIGNdID0gbWFwOworICAgIHNob3VsZEJlKEFycmF5Lmlz
QXJyYXkoYSksIHRydWUpOworICAgIHNob3VsZEJlKEFycmF5LmlzQXJyYXkoYiksIHRydWUpOwor
ICAgIHNob3VsZEJlKEFycmF5LmlzQXJyYXkoYyksIHRydWUpOworICAgIHNob3VsZEJlKG1hcC5o
YXMoYVswXSksIHRydWUpOworICAgIHNob3VsZEJlKG1hcC5oYXMoYlswXSksIHRydWUpOworICAg
IHNob3VsZEJlKG1hcC5oYXMoY1swXSksIHRydWUpOworfSgpKTsKKworLy8gRXJyb3JzCisKK3No
b3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgW2EsIGIsIGNdID0geworICAgICAgICBb
U3ltYm9sLml0ZXJhdG9yXSgpIHsKKyAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQor
ICAgIH07Cit9LCAiVHlwZUVycm9yOiBbYSwgYiwgY10gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
W2EsIGIsIGNdJywgJ1thLCBiLCBjXScgaXMgdW5kZWZpbmVkKSIpOworCitzaG91bGRUaHJvdyhm
dW5jdGlvbiAoKSB7CisgICAgdmFyIFthLCBiLCBjXSA9IHsKKyAgICAgICAgW1N5bWJvbC5pdGVy
YXRvcl0oKSB7CisgICAgICAgICAgICByZXR1cm4ge307CisgICAgICAgIH0KKyAgICB9OworfSwg
IlR5cGVFcnJvcjogW2EsIGIsIGNdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ1thLCBiLCBjXScs
ICdbYSwgYiwgY10nIGlzIHVuZGVmaW5lZCkiKTsKKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkg
eworICAgIHZhciBbYSwgYiwgY10gPSB7CisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgewor
ICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0sCisKKyAgICAgICAgbmV4dCgpIHsK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignb3V0Jyk7CisgICAgICAgIH0KKyAgICB9Owor
fSwgJ0Vycm9yOiBvdXQnKTsKKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgeworICAgIHZhciBb
YSwgYiwgY10gPSB7CisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeworICAgICAgICAgICAg
cmV0dXJuIHRoaXM7CisgICAgICAgIH0sCisKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAg
IHJldHVybiA0MjsKKyAgICAgICAgfQorICAgIH07Cit9LCAnVHlwZUVycm9yOiBJdGVyYXRvciBy
ZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuJyk7CisKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgdmFyIG9rID0gMDsKKyAgICBzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgICAgIHZh
ciBbYSwgYiwgY10gPSB7CisgICAgICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIHJl
dHVybigpIHsKKyAgICAgICAgICAgICAgICBvaysrOworICAgICAgICAgICAgfSwKKworICAgICAg
ICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgICAgICB9
CisgICAgICAgIH07CisgICAgfSwgJ1R5cGVFcnJvcjogSXRlcmF0b3IgcmVzdWx0IGludGVyZmFj
ZSBpcyBub3QgYW4gb2JqZWN0LicpOworCisgICAgc2hvdWxkQmUob2ssIDApOworfSgpKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgb2sgPSAwOworICAgIHNob3VsZFRocm93KGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgdmFyIFthLCBiLCBjXSA9IHsKKyAgICAgICAgICAgIFtTeW1ib2wuaXRl
cmF0b3JdKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgfSwK
KworICAgICAgICAgICAgcmV0dXJuKCkgeworICAgICAgICAgICAgICAgIG9rKys7CisgICAgICAg
ICAgICB9LAorCisgICAgICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiB7
IHZhbHVlOiAyMCwgZG9uZTogZmFsc2UgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAg
ICB9LCAnVHlwZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmpl
Y3QuJyk7CisKKyAgICBzaG91bGRCZShvaywgMSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIHZhciBvayA9IDA7CisKKyAgICB2YXIgW2EsIGIsIGNdID0geworICAgICAgICBbU3ltYm9s
Lml0ZXJhdG9yXSgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9LAorCisg
ICAgICAgIHJldHVybigpIHsKKyAgICAgICAgICAgIG9rKys7CisgICAgICAgIH0sCisKKyAgICAg
ICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiAyMCwgZG9uZTogdHJ1ZSB9
OworICAgICAgICB9CisgICAgfTsKKworICAgIHNob3VsZEJlKGEsIHVuZGVmaW5lZCk7CisgICAg
c2hvdWxkQmUoYiwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShjLCB1bmRlZmluZWQpOworICAg
IHNob3VsZEJlKG9rLCAwKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIG9rID0g
MDsKKyAgICB2YXIgbiA9IDA7CisKKyAgICB2YXIgZG9uZSA9IGZhbHNlOworICAgIHZhciBbYSwg
YiwgY10gPSB7CisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgICAgIH0sCisKKyAgICAgICAgcmV0dXJuKCkgeworICAgICAgICAgICAg
b2srKzsKKyAgICAgICAgfSwKKworICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgdmFyIHBy
ZXYgPSBkb25lOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICArK247Cisg
ICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogMjAsIGRvbmU6IHByZXYgfTsKKyAgICAgICAgfQor
ICAgIH07CisKKyAgICBzaG91bGRCZShhLCAyMCk7CisgICAgc2hvdWxkQmUoYiwgdW5kZWZpbmVk
KTsKKyAgICBzaG91bGRCZShjLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKG4sIDIpOworICAg
IHNob3VsZEJlKG9rLCAwKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIG9rID0g
MDsKKyAgICB2YXIgbiA9IDA7CisKKyAgICB2YXIgZG9uZSA9IGZhbHNlOworICAgIHZhciBbYSwg
YiwgY10gPSB7CisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgICAgIH0sCisKKyAgICAgICAgcmV0dXJuKCkgeworICAgICAgICAgICAg
KytvazsKKyAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUgfTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgKytuOworICAgICAgICAgICAgcmV0dXJuIHsg
dmFsdWU6IDIwLCBkb25lOiBmYWxzZSB9OworICAgICAgICB9CisgICAgfTsKKworICAgIHNob3Vs
ZEJlKGEsIDIwKTsKKyAgICBzaG91bGRCZShiLCAyMCk7CisgICAgc2hvdWxkQmUoYywgMjApOwor
ICAgIHNob3VsZEJlKG4sIDMpOworICAgIHNob3VsZEJlKG9rLCAxKTsKK30oKSk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgdmFyIG9rID0gMDsKKyAgICB2YXIgbiA9IDA7CisKKyAgICB2YXIgZG9u
ZSA9IGZhbHNlOworICAgIHZhciBbYSwgYiwgY10gPSB7CisgICAgICAgIFtTeW1ib2wuaXRlcmF0
b3JdKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0sCisKKyAgICAgICAg
cmV0dXJuKCkgeworICAgICAgICAgICAgKytvazsKKyAgICAgICAgICAgIHJldHVybiB7IGRvbmU6
IHRydWUgfTsKKyAgICAgICAgfSwKKworICAgICAgICBjb3VudDogMCwKKworICAgICAgICBuZXh0
KCkgeworICAgICAgICAgICAgKytuOworICAgICAgICAgICAgdmFyIGRvbmUgPSArK3RoaXMuY291
bnQgPT09IDM7CisgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogMjAsIGRvbmUgfTsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICBzaG91bGRCZShhLCAyMCk7CisgICAgc2hvdWxkQmUoYiwgMjAp
OworICAgIHNob3VsZEJlKGMsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUobiwgMyk7CisgICAg
c2hvdWxkQmUob2ssIDApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgb2sgPSAw
OworICAgIHZhciBuID0gMDsKKworICAgIHZhciBkb25lID0gZmFsc2U7CisgICAgdmFyIFthLCBi
LCBjXSA9IHsKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7CisgICAgICAgICAgICByZXR1
cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICAr
K29rOworICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9OworICAgICAgICB9LAorCisg
ICAgICAgIGNvdW50OiAwLAorCisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICArK247Cisg
ICAgICAgICAgICB2YXIgZG9uZSA9ICsrdGhpcy5jb3VudCA9PT0gNDsKKyAgICAgICAgICAgIHJl
dHVybiB7IHZhbHVlOiAyMCwgZG9uZSB9OworICAgICAgICB9CisgICAgfTsKKworICAgIHNob3Vs
ZEJlKGEsIDIwKTsKKyAgICBzaG91bGRCZShiLCAyMCk7CisgICAgc2hvdWxkQmUoYywgMjApOwor
ICAgIHNob3VsZEJlKG4sIDMpOworICAgIHNob3VsZEJlKG9rLCAxKTsKK30oKSk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgdmFyIG9rID0gMDsKKyAgICB2YXIgbiA9IDA7CisgICAgc2hvdWxkVGhy
b3coZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgW2EsIGIsIGNdID0geworICAgICAgICAgICAg
W1N5bWJvbC5pdGVyYXRvcl0oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAg
ICAgICAgICB9LAorCisgICAgICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICAgICAgb2sr
KzsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ291dCcpOworICAgICAgICAgICAg
fSwKKworICAgICAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgICAgICBuKys7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IDIwLCBkb25lOiBmYWxzZSB9OworICAgICAgICAgICAg
fQorICAgICAgICB9OworICAgIH0sICdFcnJvcjogb3V0Jyk7CisKKyAgICBzaG91bGRCZShuLCAz
KTsKKyAgICBzaG91bGRCZShvaywgMSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIHZh
ciBvayA9IDA7CisgICAgdmFyIG4gPSAwOworICAgIHNob3VsZFRocm93KGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgdmFyIFthLCBiLCBjXSA9IHsKKyAgICAgICAgICAgIFtTeW1ib2wuaXRlcmF0b3Jd
KCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgfSwKKworICAg
ICAgICAgICAgZ2V0IHJldHVybigpIHsKKyAgICAgICAgICAgICAgICBvaysrOworICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcignb3V0Jyk7CisgICAgICAgICAgICB9LAorCisgICAgICAg
ICAgICBuZXh0KCkgeworICAgICAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAgICAgICByZXR1
cm4geyB2YWx1ZTogMjAsIGRvbmU6IGZhbHNlIH07CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisgICAgfSwgJ0Vycm9yOiBvdXQnKTsKKworICAgIHNob3VsZEJlKG4sIDMpOworICAgIHNob3Vs
ZEJlKG9rLCAxKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIG9rID0gMDsKKyAg
ICB2YXIgbiA9IDA7CisgICAgc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIg
W2EsIGIsIGNdID0geworICAgICAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBnZXQg
cmV0dXJuKCkgeworICAgICAgICAgICAgICAgIG9rKys7CisgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCduZycpOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgbmV4dCgpIHsK
KyAgICAgICAgICAgICAgICBuKys7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdv
dXQnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9LCAnRXJyb3I6IG91dCcpOwor
CisgICAgc2hvdWxkQmUobiwgMSk7CisgICAgc2hvdWxkQmUob2ssIDApOworfSgpKTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICB2YXIgb2sgPSAwOworICAgIHZhciBuID0gMDsKKyAgICBzaG91bGRU
aHJvdyhmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBbYSwgYiwgY10gPSB7CisgICAgICAgICAg
ICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAg
ICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIGdldCByZXR1cm4oKSB7CisgICAgICAgICAgICAg
ICAgb2srKzsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25nJyk7CisgICAgICAg
ICAgICB9LAorCisgICAgICAgICAgICBnZXQgbmV4dCgpIHsKKyAgICAgICAgICAgICAgICArK247
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdvdXQnKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfTsKKyAgICB9LCAnRXJyb3I6IG91dCcpOworCisgICAgc2hvdWxkQmUobiwgMSk7
CisgICAgc2hvdWxkQmUob2ssIDApOworfSgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4MGI2YjgzMjQ1YzAzZjdmNWUy
MWU2YzFhYzQyNzQyNDk5MDRhNzQ1Li45NzA2MTJlY2Y4YjQyM2FkM2VhMzk2YjMwYThmOGIwZGQ5
NjdlZmIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDYtMTkgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gRGVzdHJ1Y3R1cmluZyBh
c3NpZ25tZW50IG5lZWQgdG8gYWNjZXB0IGl0ZXJhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJvbSB0aGlzIHBhdGNoLCB3ZSB1c2UgaXRlcmF0
b3JzIGZvciBkZXN0cnVjdHVyaW5nIGFzc2lnbm1lbnRzIHRvIGFycmF5IGJpbmRpbmcgcGF0dGVy
bnMuCisgICAgICAgIFNvIHRlc3QgcmVzdWx0cyBiZWNvbWUgZGlmZmVyZW50LgorCisgICAgICAg
ICoganMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBq
cy9wYXJzZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQt
dGVzdHMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LmpzOgorCiAyMDE1LTA2LTE4ICBEZWFuIEph
Y2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBQcm92aWRlIGEgd2F5IGZvciB3ZWIg
ZGV2ZWxvcGVycyB0byBkcmF3IGEgVGhlbWUtc3BlY2lmaWMgV2lyZWxlc3MgUGxheWJhY2sgaWNv
bgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1leHBl
Y3RlZC50eHQKaW5kZXggZmE1ZGVmMmE4NzdiM2JiNjE4M2M3ZGJjMmFiOTIwMDlmMTgzYTQ2ZS4u
OTNiNTc4OGYwOTZkZDEzN2IxOWEwMjBkNGMwYzYzM2E1MThkMWU5OCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQtZXhwZWN0ZWQudHh0CkBAIC04
MCw3ICs4MCw3IEBAIFBBU1MgYStiIGlzICcxMTIyJwogUEFTUyBhK2IgaXMgJzIyMTEnCiBQQVNT
IHRlc3REZWNvbnN0cnVjdEFyZ3MoJzEnLCAnMicpIGlzICcxMicKIFBBU1MgdGVzdERlY29uc3Ry
dWN0QXJnTGVuZ3RoKCcxJywgJzInKSBpcyAyCi1QQVNTIHRlc3REZWNvbnN0cnVjdEFyZ3MoJzIn
KSBpcyAnMjMnCitQQVNTIHRlc3REZWNvbnN0cnVjdEFyZ3MoJzInKSBpcyAnMnVuZGVmaW5lZCcK
IFBBU1MgYSBpcyAxCiBQQVNTIGIgaXMgMgogUEFTUyBjIGlzIDMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3BhcnNlci1zeW50YXgtY2hlY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
anMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQKaW5kZXggZGE4YmI1N2JkMDQ4YjU5
YzA5ZjA5MWE4ZTdhNjA5YTZkNGZiOGFiYy4uMDAwOWY5YjI3MGViODZjMTk0N2EyZmI5ZGU0NTM5
YTUxYjRjNTE3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvcGFyc2VyLXN5bnRheC1jaGVj
ay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvcGFyc2VyLXN5bnRheC1jaGVjay1l
eHBlY3RlZC50eHQKQEAgLTc3NSwxMyArNzc1LDEzIEBAIFBBU1MgVmFsaWQ6ICAgInZhciB7eH09
MSIKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IHZhciB7eH09MSB9IgogUEFTUyBWYWxp
ZDogICAidmFyIHt4LCB5fT0xIgogUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgdmFyIHt4
LCB5fT0xIH0iCi1QQVNTIFZhbGlkOiAgICJ2YXIgW3hdPTEiCitQQVNTIFZhbGlkOiAgICJ2YXIg
W3hdPTEiIHdpdGggVHlwZUVycm9yCiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyB2YXIg
W3hdPTEgfSIKLVBBU1MgVmFsaWQ6ICAgInZhciBbeCwgeV09MSIKK1BBU1MgVmFsaWQ6ICAgInZh
ciBbeCwgeV09MSIgd2l0aCBUeXBlRXJyb3IKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7
IHZhciBbeCwgeV09MSB9IgotUEFTUyBWYWxpZDogICAiW3hdPTEiCitQQVNTIFZhbGlkOiAgICJb
eF09MSIgd2l0aCBUeXBlRXJyb3IKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IFt4XT0x
IH0iCi1QQVNTIFZhbGlkOiAgICJ2YXIgW3hdPTEiCitQQVNTIFZhbGlkOiAgICJ2YXIgW3hdPTEi
IHdpdGggVHlwZUVycm9yCiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyB2YXIgW3hdPTEg
fSIKIFBBU1MgVmFsaWQ6ICAgIih7W3hdOiAxfSkiCiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBm
KCkgeyAoe1t4XTogMX0pIH0iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC5qcwppbmRleCA3MWRiYzM2YWJlMjE2YzgzOWUw
NTMwYTU4NzIzMmRjZDE1ZjY1ODdkLi45MmQ2NzE4ZjkzYTNjMTY1YmNmNDg3NDk3MDY0NTFhYzE1
YmEyN2QwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1
cmluZy1hc3NpZ25tZW50LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9kZXN0
cnVjdHVyaW5nLWFzc2lnbm1lbnQuanMKQEAgLTQ4LDcgKzQ4LDcgQEAgZnVuY3Rpb24gdGVzdERl
Y29uc3RydWN0QXJnTGVuZ3RoKCkgewogc2hvdWxkQmUoInRlc3REZWNvbnN0cnVjdEFyZ0xlbmd0
aCgnMScsICcyJykiLCAiMiIpOwogdmFyIHRleHQgPSAnMyc7CiBPYmplY3QucHJvdG90eXBlLl9f
ZGVmaW5lR2V0dGVyX18oMSwgZnVuY3Rpb24oKXsgdmFyIHIgPSB0ZXh0OyB0ZXh0ID0gImZhaWwi
OyByZXR1cm4gcjsgfSkKLXNob3VsZEJlKCJ0ZXN0RGVjb25zdHJ1Y3RBcmdzKCcyJykiLCAiJzIz
JyIpOworc2hvdWxkQmUoInRlc3REZWNvbnN0cnVjdEFyZ3MoJzInKSIsICInMnVuZGVmaW5lZCci
KTsKIAogdmFyIFthLGJdID0gWzEsMl0sIFtjLGRdID0gWzMsNF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255214</attachid>
            <date>2015-06-19 12:38:28 -0700</date>
            <delta_ts>2015-06-19 12:43:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144111-20150620043749.patch</filename>
            <type>text/plain</type>
            <size>23362</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YWQ3N2NkNzYyZDBlOTQ5YmM5OWE0NjYzYWRlZWU4MmMxYTBhODQxLi45MDY3ZTA1ZTMxZDUxODc5
NGEwOGQ2NTc4OTAxYTA1NWY2NzBhODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxNS0wNi0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBEZXN0cnVjdHVyaW5nIGFzc2lnbm1lbnQgbmVlZCB0byBh
Y2NlcHQgaXRlcmFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDQxMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHRoYXQgZGVzdHJ1Y3R1cmluZyBhc3NpZ25tZW50cyB0
byBhcnJheSBiaW5kaW5nIHBhdHRlcm5zIGFjY2VwdCBpdGVyYWJsZXMuCisgICAgICAgIFByZXZp
b3VzbHksIGl0IGp1c3QgYWNjZXNzIHRoZSBpbmRleGVkIHByb3BlcnRpZXMuCisgICAgICAgIEFm
dGVyIHRoaXMgcGF0Y2gsIGl0IGl0ZXJhdGUgdGhlIGdpdmVuIHZhbHVlIGJ5IHVzaW5nIEVTNiBp
dGVyYXRvciBwcm90b2NvbC4KKworICAgICAgICBUaGUgaXRlcmF0aW9uIGJlY29tZXMgZGlmZmVy
ZW50IGZyb20gdGhlIGZvci1vZiBjYWhzZS4KKyAgICAgICAgMS4gU2luY2UgdGhlcmUncyBubyBi
cmVhay9jb250aW51ZSBjYXNlLCBmaW5hbGx5IHNjb3BlIGlzIG5vdCBuZWNlc3NhcnkuCisgICAg
ICAgIDIuIFdoZW4gdGhlIGVycm9yIGlzIHJhaXNlZCwgdGhlIGNsb3NlIHN0YXR1cyBvZiB0aGUg
aXRlcmF0b3IgYmVjb21lcyB0cnVlLiBTbyBJdGVyYXRvckNsb3NlIGlzIG5vdCBjYWxsZWQgZm9y
IHRoYXQuCisgICAgICAgIDMuIFNpbmNlIHRoZSBhcnJheSBiaW5kaW5nIHBhdHRlcm5zIHJlcXVp
cmVzIGEgbGltaXRlZCBjb3VudCBvZiBpdGVyYXRpb25zIChpZiB0aGVyZSBpcyBubyByZXN0KC4u
LnJlc3QpIGNhc2UpLCBJdGVyYXRvckNsb3NlIGlzIGNhbGxlZCB3aGVuIHRoZSBpdGVyYXRpb24g
ZG9lcyBub3QgY29uc3VtZSB0aGUgYWxsIHZhbHVlcyBvZiB0aGUgaXRlcmF0b3IuCisgICAgICAg
IDMuIFNpbmNlIHRoZSBhcnJheSBiaW5kaW5nIHBhdHRlcm5zIHJlcXVpcmVzIGEgc3BlY2lmaWVk
IGNvdW50IG9mIGl0ZXJhdGlvbnMsIGl0ZXJhdG9yJ3MgbmV4dCBjYWxsIGlzIHNraXBwZWQgd2hl
biBpdGVyYXRvciBiZWNvbWVzIGNsb3NlZC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SXRlcmF0b3JDbG9zZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6ZmluaXNoQXJyYXlQYXR0ZXJuKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0
ZXJuKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
ZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWFjY2VwdHMtaXRlcmFibGVzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKC5zZXQg
c2hvdWxkVGhyb3cpOgorCiAyMDE1LTA2LTE4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFtERkddIEF2b2lkIE9TUiBleGl0IGluIHRoZSBtaWRkbGUg
b2Ygc3RyaW5nIGNvbmNhdGVuYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYWJiYTU0OWE5MzAz
MzQwYzkzZjMxYmI3NmNmZjBhODk5Njk3OTRhOS4uMWM4ODE4MTY3NjUyZWFhMjVlYzVhOGQ1MDU5
NDM5MGZiMzZhODcxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI5MzMsNyArMjkzMyw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNVbmRlZmluZWQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0
ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBv
cmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCmluZGV4IGNiYzk2NTg5NGNiYmE4NDAxODdhNTk5MGI5MTllZDNlYjFlNjc2NTYuLjVkNzY4
Y2YzMjg1MjZmNTlhZGNiNTUwZmFmYmJiMThkMzY4YWM2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTU0
Niw3ICs1NDYsNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNPYmplY3QoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNVbmRl
ZmluZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogCi0gICAgICAgIHZvaWQg
ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlKTsKKyAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklE
KiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwogCiAgICAg
ICAgIHZvaWQgZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGQw
NzEwZDQ4Yzk1YWI5ODcxMjFkYzZiZDkyMTMyYWJiMWUzZWZmZDMuLjNlOGZhNmJiMzdlNGVhMGM4
ODgxZWM4ZmE5ZjUxMWJmZGU0N2FiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTMxMjgsMjAgKzMxMjgsNjcgQEAg
c3RhdGljIHZvaWQgYXNzaWduRGVmYXVsdFZhbHVlSWZVbmRlZmluZWQoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUobWF5YmVVbmRl
ZmluZWQsIGRlZmF1bHRWYWx1ZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChpc05vdFVuZGVm
aW5lZC5nZXQoKSk7CiB9Ci0gICAgCisKIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykgY29uc3QKIHsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGFyZ2V0UGF0dGVybnMuc2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgYXV0byB0YXJnZXQgPSBtX3RhcmdldFBhdHRlcm5zW2ldOwotICAgICAgICBp
ZiAoIXRhcmdldC5wYXR0ZXJuKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0ZW1wID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdExvYWQodGVtcC5nZXQoKSwganNOdW1iZXIoaSkpOwotICAgICAgICBnZW5l
cmF0b3IuZW1pdEdldEJ5VmFsKHRlbXAuZ2V0KCksIHJocywgdGVtcC5nZXQoKSk7Ci0gICAgICAg
IGlmICh0YXJnZXQuZGVmYXVsdFZhbHVlKQotICAgICAgICAgICAgYXNzaWduRGVmYXVsdFZhbHVl
SWZVbmRlZmluZWQoZ2VuZXJhdG9yLCB0ZW1wLmdldCgpLCB0YXJnZXQuZGVmYXVsdFZhbHVlKTsK
LSAgICAgICAgdGFyZ2V0LnBhdHRlcm4tPmJpbmRWYWx1ZShnZW5lcmF0b3IsIHRlbXAuZ2V0KCkp
OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IG51bGxwdHI7CisgICAgeworICAg
ICAgICBpdGVyYXRvciA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIHJocywgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7Cisg
ICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgcmhzKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKGl0ZXJhdG9yLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
IH0KKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkb25lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOworCisgICAgUmVmUHRyPExhYmVsPiB0cnlTdGFydExhYmVsID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7CisgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0cnlTdGFydExhYmVsLmdldCgpKTsKKyAg
ICB7CisgICAgICAgIEFTU0VSVCghbV90YXJnZXRQYXR0ZXJucy5pc0VtcHR5KCkpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGFyZ2V0UGF0dGVybnMuc2l6ZSgpOyBpKyspIHsK
KyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKKworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBpdGVyYXRpb25Ta2lwcGVkID0g
Z2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgICAgICBpZiAoaSkKKyAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tpcHBlZC5n
ZXQoKSk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gbmV4dCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IGl0ZXJhdG9yLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLm5leHQpOworICAgICAg
ICAgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxwdHIp
OworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShuZXh0QXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHZhbHVlLmdldCgpLCBuZXh0LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5leHRB
cmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiB0eXBlSXNP
YmplY3QgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEp1bXBJZlRydWUoZ2VuZXJhdG9yLmVtaXRJc09iamVjdChnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIHZhbHVlLmdldCgpKSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVz
dWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5n
ZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZG9uZSk7CisgICAg
ICAgICAgICAgICAgUmVmUHRyPExhYmVsPiB2YWx1ZUlzU2V0ID0gZ2VuZXJhdG9yLm5ld0xhYmVs
KCk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCks
IGl0ZXJhdGlvblNraXBwZWQuZ2V0KCkpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCkudmFsdWUpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcCh2YWx1ZUlzU2V0
LmdldCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGl0ZXJhdGlvblNr
aXBwZWQuZ2V0KCkpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZCh2YWx1ZS5n
ZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJl
bCh2YWx1ZUlzU2V0LmdldCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byYg
dGFyZ2V0ID0gbV90YXJnZXRQYXR0ZXJuc1tpXTsKKyAgICAgICAgICAgIGlmICghdGFyZ2V0LnBh
dHRlcm4pCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAodGFyZ2V0
LmRlZmF1bHRWYWx1ZSkKKyAgICAgICAgICAgICAgICBhc3NpZ25EZWZhdWx0VmFsdWVJZlVuZGVm
aW5lZChnZW5lcmF0b3IsIHZhbHVlLmdldCgpLCB0YXJnZXQuZGVmYXVsdFZhbHVlKTsKKyAgICAg
ICAgICAgIHRhcmdldC5wYXR0ZXJuLT5iaW5kVmFsdWUoZ2VuZXJhdG9yLCB2YWx1ZS5nZXQoKSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBSZWZQdHI8TGFiZWw+IGl0ZXJhdG9yQ2xvc2VkID0g
Z2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUu
Z2V0KCksIGl0ZXJhdG9yQ2xvc2VkLmdldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9y
Q2xvc2UoaXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoaXRl
cmF0b3JDbG9zZWQuZ2V0KCkpOwogfQogCiBSZWdpc3RlcklEKiBBcnJheVBhdHRlcm5Ob2RlOjpl
bWl0RGlyZWN0QmluZGluZyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QsIEV4cHJlc3Npb25Ob2RlKiByaHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oCmluZGV4IDc4NzVmYTg3NzA0NDFiMGIwNjkwYjNmYjhjZGVlZWU4OGU4MWEw
NzMuLmMzYmU2MGRhYmU4NmU0OTcyZGYyNDFjODM0OGRmNTA0OWIwZjhkMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC03NDQsNiArNzQ0LDExIEBAIGNs
YXNzIEFTVEJ1aWxkZXIgewogICAgIHsKICAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgobG9jYXRp
b24sIHBhdHRlcm4uZ2V0KCksIGRlZmF1bHRWYWx1ZSk7CiAgICAgfQorCisgICAgdm9pZCBmaW5p
c2hBcnJheVBhdHRlcm4oQXJyYXlQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCkKKyAgICB7CisgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUu
Z2V0KCksIGRpdm90U3RhcnQsIGRpdm90LCBkaXZvdEVuZCk7CisgICAgfQogICAgIAogICAgIE9i
amVjdFBhdHRlcm4gY3JlYXRlT2JqZWN0UGF0dGVybihjb25zdCBKU1Rva2VuTG9jYXRpb24mKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA3OWJiNDI2Y2FhYjJm
NTFiMDZjMjM2MThmMDA1OGY5MDVhZThmMjNhLi43OWUxZGM4M2Q3NzZlYWY4OGQ5ZGYxZTRjNTc4
MmViMGYzOGZjM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNzgw
LDcgKzE3ODAsNyBAQAogICAgICAgICBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKCk7CiAgICAg
fTsKIAotICAgIGNsYXNzIEFycmF5UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVjb25zdHJ1Y3Rpb25Q
YXR0ZXJuTm9kZSB7CisgICAgY2xhc3MgQXJyYXlQYXR0ZXJuTm9kZSA6IHB1YmxpYyBEZWNvbnN0
cnVjdGlvblBhdHRlcm5Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxBcnJheVBhdHRlcm5Ob2RlPiBjcmVhdGUoKTsK
ICAgICAgICAgdm9pZCBhcHBlbmRJbmRleChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBEZWNvbnN0
cnVjdGlvblBhdHRlcm5Ob2RlKiBub2RlLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGZmZDM0NzhmMDhlODIz
MTc4ZjFmNTY3Y2Y5NmE5Y2I1OGMyYWM0MTUuLmMwMmUyNzg1MGQ3NGIyNzk0NjVlOTFkMTlmMGM1
OGYyM2MwMzk3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTU5Nyw2ICs1OTcsNyBAQAogICAgIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gcGF0dGVybjsK
ICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgY2FzZSBPUEVOQlJBQ0tFVDogewor
ICAgICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7
CiAgICAgICAgIGF1dG8gYXJyYXlQYXR0ZXJuID0gY29udGV4dC5jcmVhdGVBcnJheVBhdHRlcm4o
bV90b2tlbi5tX2xvY2F0aW9uKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAoa2luZCA9
PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYgbWF0Y2goQ0xPU0VCUkFDS0VUKSkKQEAgLTYy
Miw2ICs2MjMsOCBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgY29uc3VtZU9y
RmFpbChDTE9TRUJSQUNLRVQsICJFeHBlY3RlZCBlaXRoZXIgYSBjbG9zaW5nICddJyBvciBhICcs
JyBmb2xsb3dpbmcgYW4gZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuIik7CisgICAgICAg
IEpTVGV4dFBvc2l0aW9uIGRpdm90RW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKKyAgICAg
ICAgY29udGV4dC5maW5pc2hBcnJheVBhdHRlcm4oYXJyYXlQYXR0ZXJuLCBkaXZvdFN0YXJ0LCBk
aXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgICAgIHBhdHRlcm4gPSBhcnJheVBhdHRlcm47CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50
YXhDaGVja2VyLmgKaW5kZXggN2Y2ZTNlMTBhOWM0OWEwZTk3ZjI0ZDY3ODk4NGUzMzQ1MGM0YzM1
My4uYmU0NjIxZDM3YmMxN2NhZDU4OTZiNDhkMTg2ZGY0MDRlMTFiY2M5YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTMxMSw2ICszMTEsOSBA
QCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVybkVudHJ5
KEFycmF5UGF0dGVybiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRGVjb25zdHJ1Y3Rpb25QYXR0
ZXJuLCBpbnQpCiAgICAgewogICAgIH0KKyAgICB2b2lkIGZpbmlzaEFycmF5UGF0dGVybihBcnJh
eVBhdHRlcm4sIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYpCisgICAgeworICAgIH0KICAgICBPYmplY3RQYXR0ZXJuIGNy
ZWF0ZU9iamVjdFBhdHRlcm4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJikKICAgICB7CiAgICAgICAg
IHJldHVybiBPYmplY3REZWNvbnN0cnVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWFjY2VwdHMtaXRl
cmFibGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9kZXN0cnVjdHVy
aW5nLWFzc2lnbm1lbnQtYWNjZXB0cy1pdGVyYWJsZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE0Njg4YjM3
MzJkNmM2ZDdlY2YwMzc4Y2JiZDg1MjQ3YjNiYmU3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWFj
Y2VwdHMtaXRlcmFibGVzLmpzCkBAIC0wLDAgKzEsNDQxIEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24g
c2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0g
ZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAg
IGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9y
TWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVy
cm9yKX1gKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgW2EsIGIsIGNdID0gWzEsIDIs
IDNdOworICAgIHNob3VsZEJlKGEsIDEpOworICAgIHNob3VsZEJlKGIsIDIpOworICAgIHNob3Vs
ZEJlKGMsIDMpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgW2EsIGIsIGNdID0g
WzEsIDIsIDNdLmtleXMoKTsKKyAgICBzaG91bGRCZShhLCAwKTsKKyAgICBzaG91bGRCZShiLCAx
KTsKKyAgICBzaG91bGRCZShjLCAyKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFy
IFthLCBiLCBjXSA9IFsxLCAyLCAzXS52YWx1ZXMoKTsKKyAgICBzaG91bGRCZShhLCAxKTsKKyAg
ICBzaG91bGRCZShiLCAyKTsKKyAgICBzaG91bGRCZShjLCAzKTsKK30oKSk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgdmFyIFthLCAsIGNdID0gWzEsIDIsIDNdLnZhbHVlcygpOworICAgIHNob3Vs
ZEJlKGEsIDEpOworICAgIHNob3VsZEJlKGMsIDMpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsK
KyAgICB2YXIgW2EsIGIsIGNdID0gWzEsICwgM10udmFsdWVzKCk7CisgICAgc2hvdWxkQmUoYSwg
MSk7CisgICAgc2hvdWxkQmUoYiwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShjLCAzKTsKK30o
KSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIFssIGIsIGNdID0gWzEsIDIsIDMsIDQsIDUs
IDZdLnZhbHVlcygpOworICAgIHNob3VsZEJlKGIsIDIpOworICAgIHNob3VsZEJlKGMsIDMpOwor
fSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgW2EsIGIsIGNdID0gWzFdLnZhbHVlcygp
OworICAgIHNob3VsZEJlKGEsIDEpOworICAgIHNob3VsZEJlKGIsIHVuZGVmaW5lZCk7CisgICAg
c2hvdWxkQmUoYywgdW5kZWZpbmVkKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoW2EsIGIsIGNdKSB7
CisgICAgc2hvdWxkQmUoYSwgMSk7CisgICAgc2hvdWxkQmUoYiwgdW5kZWZpbmVkKTsKKyAgICBz
aG91bGRCZShjLCB1bmRlZmluZWQpOworfShbMV0udmFsdWVzKCkpKTsKKworKGZ1bmN0aW9uICgp
IHsKKyAgICB2YXIgW2EgPSAwLCBiID0gMiwgYyA9IDNdID0gWzFdLnZhbHVlcygpOworICAgIHNo
b3VsZEJlKGEsIDEpOworICAgIHNob3VsZEJlKGIsIDIpOworICAgIHNob3VsZEJlKGMsIDMpOwor
fSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgW2EgPSAxLCBiID0gMiwgYyA9IDNdID0g
W3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdOworICAgIHNob3VsZEJlKGEsIDEpOwor
ICAgIHNob3VsZEJlKGIsIDIpOworICAgIHNob3VsZEJlKGMsIDMpOworfSgpKTsKKworLy8gU3Ry
aW5nIHdpdGggYSBzdXJyb2dhdGUgcGFpci4KKyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIHN0cmlu
ZyA9ICLwoK636YeO5a62IjsKKyAgICB2YXIgW2EsIGIsIGNdID0gc3RyaW5nOworICAgIHNob3Vs
ZEJlKHN0cmluZy5sZW5ndGgsIDQpOworICAgIHNob3VsZEJlKGEsICfwoK63Jyk7CisgICAgc2hv
dWxkQmUoYiwgJ+mHjicpOworICAgIHNob3VsZEJlKGMsICflrrYnKTsKK30oKSk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgdmFyIHNldCA9IG5ldyBTZXQoWzEsIDIsIDNdKTsKKyAgICB2YXIgW2Es
IGIsIGNdID0gc2V0OworICAgIHNob3VsZEJlKHNldC5oYXMoYSksIHRydWUpOworICAgIHNob3Vs
ZEJlKHNldC5oYXMoYiksIHRydWUpOworICAgIHNob3VsZEJlKHNldC5oYXMoYyksIHRydWUpOwor
fSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgbWFwID0gbmV3IE1hcChbWzEsIDFdLCBb
MiwgMl0sIFszLCAzXV0pOworICAgIHZhciBbYSwgYiwgY10gPSBtYXA7CisgICAgc2hvdWxkQmUo
QXJyYXkuaXNBcnJheShhKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoQXJyYXkuaXNBcnJheShiKSwg
dHJ1ZSk7CisgICAgc2hvdWxkQmUoQXJyYXkuaXNBcnJheShjKSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUobWFwLmhhcyhhWzBdKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUobWFwLmhhcyhiWzBdKSwgdHJ1
ZSk7CisgICAgc2hvdWxkQmUobWFwLmhhcyhjWzBdKSwgdHJ1ZSk7Cit9KCkpOworCisvLyBFcnJv
cnMKKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgeworICAgIHZhciBbYSwgYiwgY10gPSB7Cisg
ICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAg
ICAgICB9CisgICAgfTsKK30sICJUeXBlRXJyb3I6IFthLCBiLCBjXSBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICdbYSwgYiwgY10nLCAnW2EsIGIsIGNdJyBpcyB1bmRlZmluZWQpIik7CisKK3Nob3Vs
ZFRocm93KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgW2EsIGIsIGNdID0geworICAgICAgICBbU3lt
Ym9sLml0ZXJhdG9yXSgpIHsKKyAgICAgICAgICAgIHJldHVybiB7fTsKKyAgICAgICAgfQorICAg
IH07Cit9LCAiVHlwZUVycm9yOiBbYSwgYiwgY10gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnW2Es
IGIsIGNdJywgJ1thLCBiLCBjXScgaXMgdW5kZWZpbmVkKSIpOworCitzaG91bGRUaHJvdyhmdW5j
dGlvbiAoKSB7CisgICAgdmFyIFthLCBiLCBjXSA9IHsKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRv
cl0oKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICBu
ZXh0KCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdvdXQnKTsKKyAgICAgICAgfQor
ICAgIH07Cit9LCAnRXJyb3I6IG91dCcpOworCitzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7Cisg
ICAgdmFyIFthLCBiLCBjXSA9IHsKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7CisgICAg
ICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICBuZXh0KCkgeworICAg
ICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9CisgICAgfTsKK30sICdUeXBlRXJyb3I6IEl0
ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4nKTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICB2YXIgb2sgPSAwOworICAgIHNob3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgdmFyIFthLCBiLCBjXSA9IHsKKyAgICAgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkg
eworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgfSwKKworICAgICAg
ICAgICAgcmV0dXJuKCkgeworICAgICAgICAgICAgICAgIG9rKys7CisgICAgICAgICAgICB9LAor
CisgICAgICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9LCAnVHlwZUVycm9yOiBJdGVyYXRvciByZXN1bHQg
aW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuJyk7CisKKyAgICBzaG91bGRCZShvaywgMCk7Cit9
KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIHZhciBvayA9IDA7CisgICAgc2hvdWxkVGhyb3co
ZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgW2EsIGIsIGNdID0geworICAgICAgICAgICAgW1N5
bWJvbC5pdGVyYXRvcl0oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAg
ICAgICB9LAorCisgICAgICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICAgICAgb2srKzsK
KyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHsgdmFsdWU6IDIwLCBkb25lOiBmYWxzZSB9OworICAgICAgICAgICAgfQorICAgICAg
ICB9OworICAgIH0sICdUeXBlRXJyb3I6IEl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4nKTsKKworICAgIHNob3VsZEJlKG9rLCAxKTsKK30oKSk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgdmFyIG9rID0gMDsKKworICAgIHZhciBbYSwgYiwgY10gPSB7CisgICAgICAg
IFtTeW1ib2wuaXRlcmF0b3JdKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAg
IH0sCisKKyAgICAgICAgcmV0dXJuKCkgeworICAgICAgICAgICAgb2srKzsKKyAgICAgICAgfSwK
KworICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IDIwLCBkb25l
OiB0cnVlIH07CisgICAgICAgIH0KKyAgICB9OworCisgICAgc2hvdWxkQmUoYSwgdW5kZWZpbmVk
KTsKKyAgICBzaG91bGRCZShiLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKGMsIHVuZGVmaW5l
ZCk7CisgICAgc2hvdWxkQmUob2ssIDApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2
YXIgb2sgPSAwOworICAgIHZhciBuID0gMDsKKworICAgIHZhciBkb25lID0gZmFsc2U7CisgICAg
dmFyIFthLCBiLCBjXSA9IHsKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7CisgICAgICAg
ICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICByZXR1cm4oKSB7CisgICAg
ICAgICAgICBvaysrOworICAgICAgICB9LAorCisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAg
ICB2YXIgcHJldiA9IGRvbmU7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAg
ICsrbjsKKyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiAyMCwgZG9uZTogcHJldiB9OworICAg
ICAgICB9CisgICAgfTsKKworICAgIHNob3VsZEJlKGEsIDIwKTsKKyAgICBzaG91bGRCZShiLCB1
bmRlZmluZWQpOworICAgIHNob3VsZEJlKGMsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUobiwg
Mik7CisgICAgc2hvdWxkQmUob2ssIDApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2
YXIgb2sgPSAwOworICAgIHZhciBuID0gMDsKKworICAgIHZhciBkb25lID0gZmFsc2U7CisgICAg
dmFyIFthLCBiLCBjXSA9IHsKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7CisgICAgICAg
ICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICByZXR1cm4oKSB7CisgICAg
ICAgICAgICArK29rOworICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9OworICAgICAg
ICB9LAorCisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICArK247CisgICAgICAgICAgICBy
ZXR1cm4geyB2YWx1ZTogMjAsIGRvbmU6IGZhbHNlIH07CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgc2hvdWxkQmUoYSwgMjApOworICAgIHNob3VsZEJlKGIsIDIwKTsKKyAgICBzaG91bGRCZShj
LCAyMCk7CisgICAgc2hvdWxkQmUobiwgMyk7CisgICAgc2hvdWxkQmUob2ssIDEpOworfSgpKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgb2sgPSAwOworICAgIHZhciBuID0gMDsKKworICAg
IHZhciBkb25lID0gZmFsc2U7CisgICAgdmFyIFthLCBiLCBjXSA9IHsKKyAgICAgICAgW1N5bWJv
bC5pdGVyYXRvcl0oKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKwor
ICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICArK29rOworICAgICAgICAgICAgcmV0dXJu
IHsgZG9uZTogdHJ1ZSB9OworICAgICAgICB9LAorCisgICAgICAgIGNvdW50OiAwLAorCisgICAg
ICAgIG5leHQoKSB7CisgICAgICAgICAgICArK247CisgICAgICAgICAgICB2YXIgZG9uZSA9ICsr
dGhpcy5jb3VudCA9PT0gMzsKKyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiAyMCwgZG9uZSB9
OworICAgICAgICB9CisgICAgfTsKKworICAgIHNob3VsZEJlKGEsIDIwKTsKKyAgICBzaG91bGRC
ZShiLCAyMCk7CisgICAgc2hvdWxkQmUoYywgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShuLCAz
KTsKKyAgICBzaG91bGRCZShvaywgMCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIHZh
ciBvayA9IDA7CisgICAgdmFyIG4gPSAwOworCisgICAgdmFyIGRvbmUgPSBmYWxzZTsKKyAgICB2
YXIgW2EsIGIsIGNdID0geworICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzOworICAgICAgICB9LAorCisgICAgICAgIHJldHVybigpIHsKKyAgICAg
ICAgICAgICsrb2s7CisgICAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlIH07CisgICAgICAg
IH0sCisKKyAgICAgICAgY291bnQ6IDAsCisKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAg
ICsrbjsKKyAgICAgICAgICAgIHZhciBkb25lID0gKyt0aGlzLmNvdW50ID09PSA0OworICAgICAg
ICAgICAgcmV0dXJuIHsgdmFsdWU6IDIwLCBkb25lIH07CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgc2hvdWxkQmUoYSwgMjApOworICAgIHNob3VsZEJlKGIsIDIwKTsKKyAgICBzaG91bGRCZShj
LCAyMCk7CisgICAgc2hvdWxkQmUobiwgMyk7CisgICAgc2hvdWxkQmUob2ssIDEpOworfSgpKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgb2sgPSAwOworICAgIHZhciBuID0gMDsKKyAgICBz
aG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBbYSwgYiwgY10gPSB7CisgICAg
ICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhp
czsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIHJldHVybigpIHsKKyAgICAgICAgICAg
ICAgICBvaysrOworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignb3V0Jyk7CisgICAg
ICAgICAgICB9LAorCisgICAgICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgICAgIG4rKzsK
KyAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogMjAsIGRvbmU6IGZhbHNlIH07CisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisgICAgfSwgJ0Vycm9yOiBvdXQnKTsKKworICAgIHNob3Vs
ZEJlKG4sIDMpOworICAgIHNob3VsZEJlKG9rLCAxKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgdmFyIG9rID0gMDsKKyAgICB2YXIgbiA9IDA7CisgICAgc2hvdWxkVGhyb3coZnVuY3Rp
b24gKCkgeworICAgICAgICB2YXIgW2EsIGIsIGNdID0geworICAgICAgICAgICAgW1N5bWJvbC5p
dGVyYXRvcl0oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9
LAorCisgICAgICAgICAgICBnZXQgcmV0dXJuKCkgeworICAgICAgICAgICAgICAgIG9rKys7Cisg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdvdXQnKTsKKyAgICAgICAgICAgIH0sCisK
KyAgICAgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICAgICAgbisrOworICAgICAgICAgICAg
ICAgIHJldHVybiB7IHZhbHVlOiAyMCwgZG9uZTogZmFsc2UgfTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKyAgICB9LCAnRXJyb3I6IG91dCcpOworCisgICAgc2hvdWxkQmUobiwgMyk7Cisg
ICAgc2hvdWxkQmUob2ssIDEpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgb2sg
PSAwOworICAgIHZhciBuID0gMDsKKyAgICBzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAg
ICAgIHZhciBbYSwgYiwgY10gPSB7CisgICAgICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAg
ICAgIGdldCByZXR1cm4oKSB7CisgICAgICAgICAgICAgICAgb2srKzsKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ25nJyk7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBu
ZXh0KCkgeworICAgICAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ291dCcpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0sICdFcnJvcjog
b3V0Jyk7CisKKyAgICBzaG91bGRCZShuLCAxKTsKKyAgICBzaG91bGRCZShvaywgMCk7Cit9KCkp
OworCisoZnVuY3Rpb24gKCkgeworICAgIHZhciBvayA9IDA7CisgICAgdmFyIG4gPSAwOworICAg
IHNob3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIFthLCBiLCBjXSA9IHsKKyAg
ICAgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgZ2V0IHJldHVybigpIHsKKyAgICAg
ICAgICAgICAgICBvaysrOworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbmcnKTsK
KyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIGdldCBuZXh0KCkgeworICAgICAgICAgICAg
ICAgICsrbjsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ291dCcpOworICAgICAg
ICAgICAgfQorICAgICAgICB9OworICAgIH0sICdFcnJvcjogb3V0Jyk7CisKKyAgICBzaG91bGRC
ZShuLCAxKTsKKyAgICBzaG91bGRCZShvaywgMCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgwYjZiODMyNDVj
MDNmN2Y1ZTIxZTZjMWFjNDI3NDI0OTkwNGE3NDUuLjk3MDYxMmVjZjhiNDIzYWQzZWEzOTZiMzBh
OGY4YjBkZDk2N2VmYjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wNi0xOSAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBEZXN0cnVj
dHVyaW5nIGFzc2lnbm1lbnQgbmVlZCB0byBhY2NlcHQgaXRlcmFibGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQxMTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcm9tIHRoaXMgcGF0Y2gsIHdlIHVz
ZSBpdGVyYXRvcnMgZm9yIGRlc3RydWN0dXJpbmcgYXNzaWdubWVudHMgdG8gYXJyYXkgYmluZGlu
ZyBwYXR0ZXJucy4KKyAgICAgICAgU28gdGVzdCByZXN1bHRzIGJlY29tZSBkaWZmZXJlbnQuCisK
KyAgICAgICAgKiBqcy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGpzL3BhcnNlci1zeW50YXgtY2hlY2stZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpz
L3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQuanM6CisKIDIwMTUtMDYtMTgg
IERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgYSB3YXkg
Zm9yIHdlYiBkZXZlbG9wZXJzIHRvIGRyYXcgYSBUaGVtZS1zcGVjaWZpYyBXaXJlbGVzcyBQbGF5
YmFjayBpY29uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLWFzc2ln
bm1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25t
ZW50LWV4cGVjdGVkLnR4dAppbmRleCBmYTVkZWYyYTg3N2IzYmI2MTgzYzdkYmMyYWI5MjAwOWYx
ODNhNDZlLi45M2I1Nzg4ZjA5NmRkMTM3YjE5YTAyMGQ0YzBjNjMzYTUxOGQxZTk4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50
eHQKQEAgLTgwLDcgKzgwLDcgQEAgUEFTUyBhK2IgaXMgJzExMjInCiBQQVNTIGErYiBpcyAnMjIx
MScKIFBBU1MgdGVzdERlY29uc3RydWN0QXJncygnMScsICcyJykgaXMgJzEyJwogUEFTUyB0ZXN0
RGVjb25zdHJ1Y3RBcmdMZW5ndGgoJzEnLCAnMicpIGlzIDIKLVBBU1MgdGVzdERlY29uc3RydWN0
QXJncygnMicpIGlzICcyMycKK1BBU1MgdGVzdERlY29uc3RydWN0QXJncygnMicpIGlzICcydW5k
ZWZpbmVkJwogUEFTUyBhIGlzIDEKIFBBU1MgYiBpcyAyCiBQQVNTIGMgaXMgMwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9wYXJzZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4dAppbmRleCBkYThiYjU3
YmQwNDhiNTljMDlmMDkxYThlN2E2MDlhNmQ0ZmI4YWJjLi4wMDA5ZjliMjcwZWI4NmMxOTQ3YTJm
YjlkZTQ1MzlhNTFiNGM1MTc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9wYXJzZXItc3lu
dGF4LWNoZWNrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9wYXJzZXItc3ludGF4
LWNoZWNrLWV4cGVjdGVkLnR4dApAQCAtNzc1LDEzICs3NzUsMTMgQEAgUEFTUyBWYWxpZDogICAi
dmFyIHt4fT0xIgogUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgdmFyIHt4fT0xIH0iCiBQ
QVNTIFZhbGlkOiAgICJ2YXIge3gsIHl9PTEiCiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkg
eyB2YXIge3gsIHl9PTEgfSIKLVBBU1MgVmFsaWQ6ICAgInZhciBbeF09MSIKK1BBU1MgVmFsaWQ6
ICAgInZhciBbeF09MSIgd2l0aCBUeXBlRXJyb3IKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYo
KSB7IHZhciBbeF09MSB9IgotUEFTUyBWYWxpZDogICAidmFyIFt4LCB5XT0xIgorUEFTUyBWYWxp
ZDogICAidmFyIFt4LCB5XT0xIiB3aXRoIFR5cGVFcnJvcgogUEFTUyBWYWxpZDogICAiZnVuY3Rp
b24gZigpIHsgdmFyIFt4LCB5XT0xIH0iCi1QQVNTIFZhbGlkOiAgICJbeF09MSIKK1BBU1MgVmFs
aWQ6ICAgIlt4XT0xIiB3aXRoIFR5cGVFcnJvcgogUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigp
IHsgW3hdPTEgfSIKLVBBU1MgVmFsaWQ6ICAgInZhciBbeF09MSIKK1BBU1MgVmFsaWQ6ICAgInZh
ciBbeF09MSIgd2l0aCBUeXBlRXJyb3IKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IHZh
ciBbeF09MSB9IgogUEFTUyBWYWxpZDogICAiKHtbeF06IDF9KSIKIFBBU1MgVmFsaWQ6ICAgImZ1
bmN0aW9uIGYoKSB7ICh7W3hdOiAxfSkgfSIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQuanMgYi9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LmpzCmluZGV4IDcxZGJjMzZhYmUy
MTZjODM5ZTA1MzBhNTg3MjMyZGNkMTVmNjU4N2QuLjkyZDY3MThmOTNhM2MxNjViY2Y0ODc0OTcw
NjQ1MWFjMTViYTI3ZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9k
ZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC5qcwpAQCAtNDgsNyArNDgsNyBAQCBmdW5jdGlv
biB0ZXN0RGVjb25zdHJ1Y3RBcmdMZW5ndGgoKSB7CiBzaG91bGRCZSgidGVzdERlY29uc3RydWN0
QXJnTGVuZ3RoKCcxJywgJzInKSIsICIyIik7CiB2YXIgdGV4dCA9ICczJzsKIE9iamVjdC5wcm90
b3R5cGUuX19kZWZpbmVHZXR0ZXJfXygxLCBmdW5jdGlvbigpeyB2YXIgciA9IHRleHQ7IHRleHQg
PSAiZmFpbCI7IHJldHVybiByOyB9KQotc2hvdWxkQmUoInRlc3REZWNvbnN0cnVjdEFyZ3MoJzIn
KSIsICInMjMnIik7CitzaG91bGRCZSgidGVzdERlY29uc3RydWN0QXJncygnMicpIiwgIicydW5k
ZWZpbmVkJyIpOwogCiB2YXIgW2EsYl0gPSBbMSwyXSwgW2MsZF0gPSBbMyw0XQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255216</attachid>
            <date>2015-06-19 12:43:46 -0700</date>
            <delta_ts>2015-06-19 16:21:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144111-20150620044307.patch</filename>
            <type>text/plain</type>
            <size>22957</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YWQ3N2NkNzYyZDBlOTQ5YmM5OWE0NjYzYWRlZWU4MmMxYTBhODQxLi45MDY3ZTA1ZTMxZDUxODc5
NGEwOGQ2NTc4OTAxYTA1NWY2NzBhODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxNS0wNi0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBEZXN0cnVjdHVyaW5nIGFzc2lnbm1lbnQgbmVlZCB0byBh
Y2NlcHQgaXRlcmFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDQxMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHRoYXQgZGVzdHJ1Y3R1cmluZyBhc3NpZ25tZW50cyB0
byBhcnJheSBiaW5kaW5nIHBhdHRlcm5zIGFjY2VwdCBpdGVyYWJsZXMuCisgICAgICAgIFByZXZp
b3VzbHksIGl0IGp1c3QgYWNjZXNzIHRoZSBpbmRleGVkIHByb3BlcnRpZXMuCisgICAgICAgIEFm
dGVyIHRoaXMgcGF0Y2gsIGl0IGl0ZXJhdGUgdGhlIGdpdmVuIHZhbHVlIGJ5IHVzaW5nIEVTNiBp
dGVyYXRvciBwcm90b2NvbC4KKworICAgICAgICBUaGUgaXRlcmF0aW9uIGJlY29tZXMgZGlmZmVy
ZW50IGZyb20gdGhlIGZvci1vZiBjYWhzZS4KKyAgICAgICAgMS4gU2luY2UgdGhlcmUncyBubyBi
cmVhay9jb250aW51ZSBjYXNlLCBmaW5hbGx5IHNjb3BlIGlzIG5vdCBuZWNlc3NhcnkuCisgICAg
ICAgIDIuIFdoZW4gdGhlIGVycm9yIGlzIHJhaXNlZCwgdGhlIGNsb3NlIHN0YXR1cyBvZiB0aGUg
aXRlcmF0b3IgYmVjb21lcyB0cnVlLiBTbyBJdGVyYXRvckNsb3NlIGlzIG5vdCBjYWxsZWQgZm9y
IHRoYXQuCisgICAgICAgIDMuIFNpbmNlIHRoZSBhcnJheSBiaW5kaW5nIHBhdHRlcm5zIHJlcXVp
cmVzIGEgbGltaXRlZCBjb3VudCBvZiBpdGVyYXRpb25zIChpZiB0aGVyZSBpcyBubyByZXN0KC4u
LnJlc3QpIGNhc2UpLCBJdGVyYXRvckNsb3NlIGlzIGNhbGxlZCB3aGVuIHRoZSBpdGVyYXRpb24g
ZG9lcyBub3QgY29uc3VtZSB0aGUgYWxsIHZhbHVlcyBvZiB0aGUgaXRlcmF0b3IuCisgICAgICAg
IDMuIFNpbmNlIHRoZSBhcnJheSBiaW5kaW5nIHBhdHRlcm5zIHJlcXVpcmVzIGEgc3BlY2lmaWVk
IGNvdW50IG9mIGl0ZXJhdGlvbnMsIGl0ZXJhdG9yJ3MgbmV4dCBjYWxsIGlzIHNraXBwZWQgd2hl
biBpdGVyYXRvciBiZWNvbWVzIGNsb3NlZC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SXRlcmF0b3JDbG9zZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6ZmluaXNoQXJyYXlQYXR0ZXJuKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0
ZXJuKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
ZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWFjY2VwdHMtaXRlcmFibGVzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKC5zZXQg
c2hvdWxkVGhyb3cpOgorCiAyMDE1LTA2LTE4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFtERkddIEF2b2lkIE9TUiBleGl0IGluIHRoZSBtaWRkbGUg
b2Ygc3RyaW5nIGNvbmNhdGVuYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYWJiYTU0OWE5MzAz
MzQwYzkzZjMxYmI3NmNmZjBhODk5Njk3OTRhOS4uMWM4ODE4MTY3NjUyZWFhMjVlYzVhOGQ1MDU5
NDM5MGZiMzZhODcxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI5MzMsNyArMjkzMyw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNVbmRlZmluZWQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0
ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBv
cmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCmluZGV4IGNiYzk2NTg5NGNiYmE4NDAxODdhNTk5MGI5MTllZDNlYjFlNjc2NTYuLjVkNzY4
Y2YzMjg1MjZmNTlhZGNiNTUwZmFmYmJiMThkMzY4YWM2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTU0
Niw3ICs1NDYsNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNPYmplY3QoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNVbmRl
ZmluZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogCi0gICAgICAgIHZvaWQg
ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlKTsKKyAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklE
KiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwogCiAgICAg
ICAgIHZvaWQgZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGQw
NzEwZDQ4Yzk1YWI5ODcxMjFkYzZiZDkyMTMyYWJiMWUzZWZmZDMuLmNlNjc3ZDFlODhiMDc5MDVh
YzA4YzJhN2Q2YTA1Y2Y0NDhkYTBkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTMxMjgsMjAgKzMxMjgsNjMgQEAg
c3RhdGljIHZvaWQgYXNzaWduRGVmYXVsdFZhbHVlSWZVbmRlZmluZWQoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUobWF5YmVVbmRl
ZmluZWQsIGRlZmF1bHRWYWx1ZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChpc05vdFVuZGVm
aW5lZC5nZXQoKSk7CiB9Ci0gICAgCisKIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykgY29uc3QKIHsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBudWxscHRyOworICAgIHsKKyAgICAg
ICAgaXRlcmF0b3IgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCByaHMsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOworICAg
ICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIHJocyk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2FsbChpdGVyYXRvci5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgYXJncywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9
CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZG9uZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKKworICAgIEFTU0VSVCghbV90YXJnZXRQYXR0ZXJucy5pc0VtcHR5KCkpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkrKykgewotICAgICAg
ICBhdXRvIHRhcmdldCA9IG1fdGFyZ2V0UGF0dGVybnNbaV07CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKworICAgICAgICBSZWZQ
dHI8TGFiZWw+IGl0ZXJhdGlvblNraXBwZWQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAg
ICAgaWYgKGkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZG9uZS5nZXQo
KSwgaXRlcmF0aW9uU2tpcHBlZC5nZXQoKSk7CisKKyAgICAgICAgeworICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IG5leHQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5u
ZXh0KTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cyhnZW5lcmF0b3Is
IG51bGxwdHIpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKG5leHRBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbCh2YWx1ZS5nZXQoKSwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICB9
CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gZ2Vu
ZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUo
Z2VuZXJhdG9yLmVtaXRJc09iamVjdChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdl
dCgpKSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhy
b3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5v
dCBhbiBvYmplY3QuIikpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0eXBlSXNP
YmplY3QuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKGRvbmUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLmRvbmUpOworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiB2YWx1ZUlzU2V0ID0g
Z2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRy
dWUoZG9uZS5nZXQoKSwgaXRlcmF0aW9uU2tpcHBlZC5nZXQoKSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcCh2YWx1
ZUlzU2V0LmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoaXRlcmF0aW9u
U2tpcHBlZC5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQodmFsdWUuZ2V0
KCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh2YWx1
ZUlzU2V0LmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8mIHRhcmdldCA9IG1fdGFy
Z2V0UGF0dGVybnNbaV07CiAgICAgICAgIGlmICghdGFyZ2V0LnBhdHRlcm4pCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXAgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZCh0ZW1wLmdldCgpLCBq
c051bWJlcihpKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlWYWwodGVtcC5nZXQoKSwg
cmhzLCB0ZW1wLmdldCgpKTsKICAgICAgICAgaWYgKHRhcmdldC5kZWZhdWx0VmFsdWUpCi0gICAg
ICAgICAgICBhc3NpZ25EZWZhdWx0VmFsdWVJZlVuZGVmaW5lZChnZW5lcmF0b3IsIHRlbXAuZ2V0
KCksIHRhcmdldC5kZWZhdWx0VmFsdWUpOwotICAgICAgICB0YXJnZXQucGF0dGVybi0+YmluZFZh
bHVlKGdlbmVyYXRvciwgdGVtcC5nZXQoKSk7CisgICAgICAgICAgICBhc3NpZ25EZWZhdWx0VmFs
dWVJZlVuZGVmaW5lZChnZW5lcmF0b3IsIHZhbHVlLmdldCgpLCB0YXJnZXQuZGVmYXVsdFZhbHVl
KTsKKyAgICAgICAgdGFyZ2V0LnBhdHRlcm4tPmJpbmRWYWx1ZShnZW5lcmF0b3IsIHZhbHVlLmdl
dCgpKTsKICAgICB9CisKKyAgICBSZWZQdHI8TGFiZWw+IGl0ZXJhdG9yQ2xvc2VkID0gZ2VuZXJh
dG9yLm5ld0xhYmVsKCk7CisgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCks
IGl0ZXJhdG9yQ2xvc2VkLmdldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEl0ZXJhdG9yQ2xvc2Uo
aXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoaXRlcmF0b3JD
bG9zZWQuZ2V0KCkpOwogfQogCiBSZWdpc3RlcklEKiBBcnJheVBhdHRlcm5Ob2RlOjplbWl0RGly
ZWN0QmluZGluZyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IEV4cHJlc3Npb25Ob2RlKiByaHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCmluZGV4IDc4NzVmYTg3NzA0NDFiMGIwNjkwYjNmYjhjZGVlZWU4OGU4MWEwNzMuLmMz
YmU2MGRhYmU4NmU0OTcyZGYyNDFjODM0OGRmNTA0OWIwZjhkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC03NDQsNiArNzQ0LDExIEBAIGNsYXNzIEFT
VEJ1aWxkZXIgewogICAgIHsKICAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgobG9jYXRpb24sIHBh
dHRlcm4uZ2V0KCksIGRlZmF1bHRWYWx1ZSk7CiAgICAgfQorCisgICAgdm9pZCBmaW5pc2hBcnJh
eVBhdHRlcm4oQXJyYXlQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdEVuZCkKKyAgICB7CisgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUuZ2V0KCks
IGRpdm90U3RhcnQsIGRpdm90LCBkaXZvdEVuZCk7CisgICAgfQogICAgIAogICAgIE9iamVjdFBh
dHRlcm4gY3JlYXRlT2JqZWN0UGF0dGVybihjb25zdCBKU1Rva2VuTG9jYXRpb24mKQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA3OWJiNDI2Y2FhYjJmNTFiMDZj
MjM2MThmMDA1OGY5MDVhZThmMjNhLi43OWUxZGM4M2Q3NzZlYWY4OGQ5ZGYxZTRjNTc4MmViMGYz
OGZjM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNzgwLDcgKzE3
ODAsNyBAQAogICAgICAgICBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKCk7CiAgICAgfTsKIAot
ICAgIGNsYXNzIEFycmF5UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJu
Tm9kZSB7CisgICAgY2xhc3MgQXJyYXlQYXR0ZXJuTm9kZSA6IHB1YmxpYyBEZWNvbnN0cnVjdGlv
blBhdHRlcm5Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIFJlZjxBcnJheVBhdHRlcm5Ob2RlPiBjcmVhdGUoKTsKICAgICAg
ICAgdm9pZCBhcHBlbmRJbmRleChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBEZWNvbnN0cnVjdGlv
blBhdHRlcm5Ob2RlKiBub2RlLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGZmZDM0NzhmMDhlODIzMTc4ZjFm
NTY3Y2Y5NmE5Y2I1OGMyYWM0MTUuLmMwMmUyNzg1MGQ3NGIyNzk0NjVlOTFkMTlmMGM1OGYyM2Mw
Mzk3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTU5Nyw2
ICs1OTcsNyBAQAogICAgIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gcGF0dGVybjsKICAgICBz
d2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgY2FzZSBPUEVOQlJBQ0tFVDogeworICAgICAg
ICBKU1RleHRQb3NpdGlvbiBkaXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAg
ICAgIGF1dG8gYXJyYXlQYXR0ZXJuID0gY29udGV4dC5jcmVhdGVBcnJheVBhdHRlcm4obV90b2tl
bi5tX2xvY2F0aW9uKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAoa2luZCA9PSBEZWNv
bnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYgbWF0Y2goQ0xPU0VCUkFDS0VUKSkKQEAgLTYyMiw2ICs2
MjMsOCBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgY29uc3VtZU9yRmFpbChD
TE9TRUJSQUNLRVQsICJFeHBlY3RlZCBlaXRoZXIgYSBjbG9zaW5nICddJyBvciBhICcsJyBmb2xs
b3dpbmcgYW4gZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuIik7CisgICAgICAgIEpTVGV4
dFBvc2l0aW9uIGRpdm90RW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKKyAgICAgICAgY29u
dGV4dC5maW5pc2hBcnJheVBhdHRlcm4oYXJyYXlQYXR0ZXJuLCBkaXZvdFN0YXJ0LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCk7CiAgICAgICAgIHBhdHRlcm4gPSBhcnJheVBhdHRlcm47CiAgICAgICAg
IGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVj
a2VyLmgKaW5kZXggN2Y2ZTNlMTBhOWM0OWEwZTk3ZjI0ZDY3ODk4NGUzMzQ1MGM0YzM1My4uYmU0
NjIxZDM3YmMxN2NhZDU4OTZiNDhkMTg2ZGY0MDRlMTFiY2M5YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTMxMSw2ICszMTEsOSBAQCBjbGFz
cyBTeW50YXhDaGVja2VyIHsKICAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVybkVudHJ5KEFycmF5
UGF0dGVybiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuLCBp
bnQpCiAgICAgewogICAgIH0KKyAgICB2b2lkIGZpbmlzaEFycmF5UGF0dGVybihBcnJheVBhdHRl
cm4sIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYpCisgICAgeworICAgIH0KICAgICBPYmplY3RQYXR0ZXJuIGNyZWF0ZU9i
amVjdFBhdHRlcm4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJikKICAgICB7CiAgICAgICAgIHJldHVy
biBPYmplY3REZWNvbnN0cnVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWFjY2VwdHMtaXRlcmFibGVz
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9kZXN0cnVjdHVyaW5nLWFz
c2lnbm1lbnQtYWNjZXB0cy1pdGVyYWJsZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE0Njg4YjM3MzJkNmM2
ZDdlY2YwMzc4Y2JiZDg1MjQ3YjNiYmU3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWFjY2VwdHMt
aXRlcmFibGVzLmpzCkBAIC0wLDAgKzEsNDQxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7
CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9y
ID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2Fn
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1g
KTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgW2EsIGIsIGNdID0gWzEsIDIsIDNdOwor
ICAgIHNob3VsZEJlKGEsIDEpOworICAgIHNob3VsZEJlKGIsIDIpOworICAgIHNob3VsZEJlKGMs
IDMpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgW2EsIGIsIGNdID0gWzEsIDIs
IDNdLmtleXMoKTsKKyAgICBzaG91bGRCZShhLCAwKTsKKyAgICBzaG91bGRCZShiLCAxKTsKKyAg
ICBzaG91bGRCZShjLCAyKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIFthLCBi
LCBjXSA9IFsxLCAyLCAzXS52YWx1ZXMoKTsKKyAgICBzaG91bGRCZShhLCAxKTsKKyAgICBzaG91
bGRCZShiLCAyKTsKKyAgICBzaG91bGRCZShjLCAzKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgdmFyIFthLCAsIGNdID0gWzEsIDIsIDNdLnZhbHVlcygpOworICAgIHNob3VsZEJlKGEs
IDEpOworICAgIHNob3VsZEJlKGMsIDMpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2
YXIgW2EsIGIsIGNdID0gWzEsICwgM10udmFsdWVzKCk7CisgICAgc2hvdWxkQmUoYSwgMSk7Cisg
ICAgc2hvdWxkQmUoYiwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShjLCAzKTsKK30oKSk7CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIFssIGIsIGNdID0gWzEsIDIsIDMsIDQsIDUsIDZdLnZh
bHVlcygpOworICAgIHNob3VsZEJlKGIsIDIpOworICAgIHNob3VsZEJlKGMsIDMpOworfSgpKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgW2EsIGIsIGNdID0gWzFdLnZhbHVlcygpOworICAg
IHNob3VsZEJlKGEsIDEpOworICAgIHNob3VsZEJlKGIsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxk
QmUoYywgdW5kZWZpbmVkKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoW2EsIGIsIGNdKSB7CisgICAg
c2hvdWxkQmUoYSwgMSk7CisgICAgc2hvdWxkQmUoYiwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRC
ZShjLCB1bmRlZmluZWQpOworfShbMV0udmFsdWVzKCkpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICB2YXIgW2EgPSAwLCBiID0gMiwgYyA9IDNdID0gWzFdLnZhbHVlcygpOworICAgIHNob3VsZEJl
KGEsIDEpOworICAgIHNob3VsZEJlKGIsIDIpOworICAgIHNob3VsZEJlKGMsIDMpOworfSgpKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgW2EgPSAxLCBiID0gMiwgYyA9IDNdID0gW3VuZGVm
aW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdOworICAgIHNob3VsZEJlKGEsIDEpOworICAgIHNo
b3VsZEJlKGIsIDIpOworICAgIHNob3VsZEJlKGMsIDMpOworfSgpKTsKKworLy8gU3RyaW5nIHdp
dGggYSBzdXJyb2dhdGUgcGFpci4KKyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIHN0cmluZyA9ICLw
oK636YeO5a62IjsKKyAgICB2YXIgW2EsIGIsIGNdID0gc3RyaW5nOworICAgIHNob3VsZEJlKHN0
cmluZy5sZW5ndGgsIDQpOworICAgIHNob3VsZEJlKGEsICfwoK63Jyk7CisgICAgc2hvdWxkQmUo
YiwgJ+mHjicpOworICAgIHNob3VsZEJlKGMsICflrrYnKTsKK30oKSk7CisKKyhmdW5jdGlvbiAo
KSB7CisgICAgdmFyIHNldCA9IG5ldyBTZXQoWzEsIDIsIDNdKTsKKyAgICB2YXIgW2EsIGIsIGNd
ID0gc2V0OworICAgIHNob3VsZEJlKHNldC5oYXMoYSksIHRydWUpOworICAgIHNob3VsZEJlKHNl
dC5oYXMoYiksIHRydWUpOworICAgIHNob3VsZEJlKHNldC5oYXMoYyksIHRydWUpOworfSgpKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgbWFwID0gbmV3IE1hcChbWzEsIDFdLCBbMiwgMl0s
IFszLCAzXV0pOworICAgIHZhciBbYSwgYiwgY10gPSBtYXA7CisgICAgc2hvdWxkQmUoQXJyYXku
aXNBcnJheShhKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoQXJyYXkuaXNBcnJheShiKSwgdHJ1ZSk7
CisgICAgc2hvdWxkQmUoQXJyYXkuaXNBcnJheShjKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUobWFw
LmhhcyhhWzBdKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUobWFwLmhhcyhiWzBdKSwgdHJ1ZSk7Cisg
ICAgc2hvdWxkQmUobWFwLmhhcyhjWzBdKSwgdHJ1ZSk7Cit9KCkpOworCisvLyBFcnJvcnMKKwor
c2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgeworICAgIHZhciBbYSwgYiwgY10gPSB7CisgICAgICAg
IFtTeW1ib2wuaXRlcmF0b3JdKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9
CisgICAgfTsKK30sICJUeXBlRXJyb3I6IFthLCBiLCBjXSBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICdbYSwgYiwgY10nLCAnW2EsIGIsIGNdJyBpcyB1bmRlZmluZWQpIik7CisKK3Nob3VsZFRocm93
KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgW2EsIGIsIGNdID0geworICAgICAgICBbU3ltYm9sLml0
ZXJhdG9yXSgpIHsKKyAgICAgICAgICAgIHJldHVybiB7fTsKKyAgICAgICAgfQorICAgIH07Cit9
LCAiVHlwZUVycm9yOiBbYSwgYiwgY10gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnW2EsIGIsIGNd
JywgJ1thLCBiLCBjXScgaXMgdW5kZWZpbmVkKSIpOworCitzaG91bGRUaHJvdyhmdW5jdGlvbiAo
KSB7CisgICAgdmFyIFthLCBiLCBjXSA9IHsKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7
CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICBuZXh0KCkg
eworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdvdXQnKTsKKyAgICAgICAgfQorICAgIH07
Cit9LCAnRXJyb3I6IG91dCcpOworCitzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgdmFy
IFthLCBiLCBjXSA9IHsKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7CisgICAgICAgICAg
ICByZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICBuZXh0KCkgeworICAgICAgICAg
ICAgcmV0dXJuIDQyOworICAgICAgICB9CisgICAgfTsKK30sICdUeXBlRXJyb3I6IEl0ZXJhdG9y
IHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4nKTsKKworKGZ1bmN0aW9uICgpIHsK
KyAgICB2YXIgb2sgPSAwOworICAgIHNob3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
dmFyIFthLCBiLCBjXSA9IHsKKyAgICAgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeworICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAg
cmV0dXJuKCkgeworICAgICAgICAgICAgICAgIG9rKys7CisgICAgICAgICAgICB9LAorCisgICAg
ICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfTsKKyAgICB9LCAnVHlwZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJm
YWNlIGlzIG5vdCBhbiBvYmplY3QuJyk7CisKKyAgICBzaG91bGRCZShvaywgMCk7Cit9KCkpOwor
CisoZnVuY3Rpb24gKCkgeworICAgIHZhciBvayA9IDA7CisgICAgc2hvdWxkVGhyb3coZnVuY3Rp
b24gKCkgeworICAgICAgICB2YXIgW2EsIGIsIGNdID0geworICAgICAgICAgICAgW1N5bWJvbC5p
dGVyYXRvcl0oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9
LAorCisgICAgICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICAgICAgb2srKzsKKyAgICAg
ICAgICAgIH0sCisKKyAgICAgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHsgdmFsdWU6IDIwLCBkb25lOiBmYWxzZSB9OworICAgICAgICAgICAgfQorICAgICAgICB9Owor
ICAgIH0sICdUeXBlRXJyb3I6IEl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4nKTsKKworICAgIHNob3VsZEJlKG9rLCAxKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgdmFyIG9rID0gMDsKKworICAgIHZhciBbYSwgYiwgY10gPSB7CisgICAgICAgIFtTeW1i
b2wuaXRlcmF0b3JdKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0sCisK
KyAgICAgICAgcmV0dXJuKCkgeworICAgICAgICAgICAgb2srKzsKKyAgICAgICAgfSwKKworICAg
ICAgICBuZXh0KCkgeworICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IDIwLCBkb25lOiB0cnVl
IH07CisgICAgICAgIH0KKyAgICB9OworCisgICAgc2hvdWxkQmUoYSwgdW5kZWZpbmVkKTsKKyAg
ICBzaG91bGRCZShiLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKGMsIHVuZGVmaW5lZCk7Cisg
ICAgc2hvdWxkQmUob2ssIDApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgb2sg
PSAwOworICAgIHZhciBuID0gMDsKKworICAgIHZhciBkb25lID0gZmFsc2U7CisgICAgdmFyIFth
LCBiLCBjXSA9IHsKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAg
ICBvaysrOworICAgICAgICB9LAorCisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICB2YXIg
cHJldiA9IGRvbmU7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgICsrbjsK
KyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiAyMCwgZG9uZTogcHJldiB9OworICAgICAgICB9
CisgICAgfTsKKworICAgIHNob3VsZEJlKGEsIDIwKTsKKyAgICBzaG91bGRCZShiLCB1bmRlZmlu
ZWQpOworICAgIHNob3VsZEJlKGMsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUobiwgMik7Cisg
ICAgc2hvdWxkQmUob2ssIDApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgb2sg
PSAwOworICAgIHZhciBuID0gMDsKKworICAgIHZhciBkb25lID0gZmFsc2U7CisgICAgdmFyIFth
LCBiLCBjXSA9IHsKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAg
ICArK29rOworICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9OworICAgICAgICB9LAor
CisgICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICArK247CisgICAgICAgICAgICByZXR1cm4g
eyB2YWx1ZTogMjAsIGRvbmU6IGZhbHNlIH07CisgICAgICAgIH0KKyAgICB9OworCisgICAgc2hv
dWxkQmUoYSwgMjApOworICAgIHNob3VsZEJlKGIsIDIwKTsKKyAgICBzaG91bGRCZShjLCAyMCk7
CisgICAgc2hvdWxkQmUobiwgMyk7CisgICAgc2hvdWxkQmUob2ssIDEpOworfSgpKTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICB2YXIgb2sgPSAwOworICAgIHZhciBuID0gMDsKKworICAgIHZhciBk
b25lID0gZmFsc2U7CisgICAgdmFyIFthLCBiLCBjXSA9IHsKKyAgICAgICAgW1N5bWJvbC5pdGVy
YXRvcl0oKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAg
ICByZXR1cm4oKSB7CisgICAgICAgICAgICArK29rOworICAgICAgICAgICAgcmV0dXJuIHsgZG9u
ZTogdHJ1ZSB9OworICAgICAgICB9LAorCisgICAgICAgIGNvdW50OiAwLAorCisgICAgICAgIG5l
eHQoKSB7CisgICAgICAgICAgICArK247CisgICAgICAgICAgICB2YXIgZG9uZSA9ICsrdGhpcy5j
b3VudCA9PT0gMzsKKyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiAyMCwgZG9uZSB9OworICAg
ICAgICB9CisgICAgfTsKKworICAgIHNob3VsZEJlKGEsIDIwKTsKKyAgICBzaG91bGRCZShiLCAy
MCk7CisgICAgc2hvdWxkQmUoYywgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShuLCAzKTsKKyAg
ICBzaG91bGRCZShvaywgMCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIHZhciBvayA9
IDA7CisgICAgdmFyIG4gPSAwOworCisgICAgdmFyIGRvbmUgPSBmYWxzZTsKKyAgICB2YXIgW2Es
IGIsIGNdID0geworICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzOworICAgICAgICB9LAorCisgICAgICAgIHJldHVybigpIHsKKyAgICAgICAgICAg
ICsrb2s7CisgICAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlIH07CisgICAgICAgIH0sCisK
KyAgICAgICAgY291bnQ6IDAsCisKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgICsrbjsK
KyAgICAgICAgICAgIHZhciBkb25lID0gKyt0aGlzLmNvdW50ID09PSA0OworICAgICAgICAgICAg
cmV0dXJuIHsgdmFsdWU6IDIwLCBkb25lIH07CisgICAgICAgIH0KKyAgICB9OworCisgICAgc2hv
dWxkQmUoYSwgMjApOworICAgIHNob3VsZEJlKGIsIDIwKTsKKyAgICBzaG91bGRCZShjLCAyMCk7
CisgICAgc2hvdWxkQmUobiwgMyk7CisgICAgc2hvdWxkQmUob2ssIDEpOworfSgpKTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICB2YXIgb2sgPSAwOworICAgIHZhciBuID0gMDsKKyAgICBzaG91bGRU
aHJvdyhmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBbYSwgYiwgY10gPSB7CisgICAgICAgICAg
ICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAg
ICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIHJldHVybigpIHsKKyAgICAgICAgICAgICAgICBv
aysrOworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignb3V0Jyk7CisgICAgICAgICAg
ICB9LAorCisgICAgICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgICAgIG4rKzsKKyAgICAg
ICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogMjAsIGRvbmU6IGZhbHNlIH07CisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisgICAgfSwgJ0Vycm9yOiBvdXQnKTsKKworICAgIHNob3VsZEJlKG4s
IDMpOworICAgIHNob3VsZEJlKG9rLCAxKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
dmFyIG9rID0gMDsKKyAgICB2YXIgbiA9IDA7CisgICAgc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkg
eworICAgICAgICB2YXIgW2EsIGIsIGNdID0geworICAgICAgICAgICAgW1N5bWJvbC5pdGVyYXRv
cl0oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9LAorCisg
ICAgICAgICAgICBnZXQgcmV0dXJuKCkgeworICAgICAgICAgICAgICAgIG9rKys7CisgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdvdXQnKTsKKyAgICAgICAgICAgIH0sCisKKyAgICAg
ICAgICAgIG5leHQoKSB7CisgICAgICAgICAgICAgICAgbisrOworICAgICAgICAgICAgICAgIHJl
dHVybiB7IHZhbHVlOiAyMCwgZG9uZTogZmFsc2UgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKyAgICB9LCAnRXJyb3I6IG91dCcpOworCisgICAgc2hvdWxkQmUobiwgMyk7CisgICAgc2hv
dWxkQmUob2ssIDEpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgb2sgPSAwOwor
ICAgIHZhciBuID0gMDsKKyAgICBzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgICAgIHZh
ciBbYSwgYiwgY10gPSB7CisgICAgICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIGdl
dCByZXR1cm4oKSB7CisgICAgICAgICAgICAgICAgb2srKzsKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ25nJyk7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBuZXh0KCkg
eworICAgICAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J291dCcpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0sICdFcnJvcjogb3V0Jyk7
CisKKyAgICBzaG91bGRCZShuLCAxKTsKKyAgICBzaG91bGRCZShvaywgMCk7Cit9KCkpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIHZhciBvayA9IDA7CisgICAgdmFyIG4gPSAwOworICAgIHNob3Vs
ZFRocm93KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIFthLCBiLCBjXSA9IHsKKyAgICAgICAg
ICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwor
ICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgZ2V0IHJldHVybigpIHsKKyAgICAgICAgICAg
ICAgICBvaysrOworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbmcnKTsKKyAgICAg
ICAgICAgIH0sCisKKyAgICAgICAgICAgIGdldCBuZXh0KCkgeworICAgICAgICAgICAgICAgICsr
bjsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ291dCcpOworICAgICAgICAgICAg
fQorICAgICAgICB9OworICAgIH0sICdFcnJvcjogb3V0Jyk7CisKKyAgICBzaG91bGRCZShuLCAx
KTsKKyAgICBzaG91bGRCZShvaywgMCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgwYjZiODMyNDVjMDNmN2Y1
ZTIxZTZjMWFjNDI3NDI0OTkwNGE3NDUuLjk3MDYxMmVjZjhiNDIzYWQzZWEzOTZiMzBhOGY4YjBk
ZDk2N2VmYjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wNi0xOSAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBEZXN0cnVjdHVyaW5n
IGFzc2lnbm1lbnQgbmVlZCB0byBhY2NlcHQgaXRlcmFibGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQxMTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcm9tIHRoaXMgcGF0Y2gsIHdlIHVzZSBpdGVy
YXRvcnMgZm9yIGRlc3RydWN0dXJpbmcgYXNzaWdubWVudHMgdG8gYXJyYXkgYmluZGluZyBwYXR0
ZXJucy4KKyAgICAgICAgU28gdGVzdCByZXN1bHRzIGJlY29tZSBkaWZmZXJlbnQuCisKKyAgICAg
ICAgKiBqcy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGpzL3BhcnNlci1zeW50YXgtY2hlY2stZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3Njcmlw
dC10ZXN0cy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQuanM6CisKIDIwMTUtMDYtMTggIERlYW4g
SmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgYSB3YXkgZm9yIHdl
YiBkZXZlbG9wZXJzIHRvIGRyYXcgYSBUaGVtZS1zcGVjaWZpYyBXaXJlbGVzcyBQbGF5YmFjayBp
Y29uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWV4
cGVjdGVkLnR4dAppbmRleCBmYTVkZWYyYTg3N2IzYmI2MTgzYzdkYmMyYWI5MjAwOWYxODNhNDZl
Li45M2I1Nzg4ZjA5NmRkMTM3YjE5YTAyMGQ0YzBjNjMzYTUxOGQxZTk4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50eHQKQEAg
LTgwLDcgKzgwLDcgQEAgUEFTUyBhK2IgaXMgJzExMjInCiBQQVNTIGErYiBpcyAnMjIxMScKIFBB
U1MgdGVzdERlY29uc3RydWN0QXJncygnMScsICcyJykgaXMgJzEyJwogUEFTUyB0ZXN0RGVjb25z
dHJ1Y3RBcmdMZW5ndGgoJzEnLCAnMicpIGlzIDIKLVBBU1MgdGVzdERlY29uc3RydWN0QXJncygn
MicpIGlzICcyMycKK1BBU1MgdGVzdERlY29uc3RydWN0QXJncygnMicpIGlzICcydW5kZWZpbmVk
JwogUEFTUyBhIGlzIDEKIFBBU1MgYiBpcyAyCiBQQVNTIGMgaXMgMwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9qcy9wYXJzZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4dAppbmRleCBkYThiYjU3YmQwNDhi
NTljMDlmMDkxYThlN2E2MDlhNmQ0ZmI4YWJjLi4wMDA5ZjliMjcwZWI4NmMxOTQ3YTJmYjlkZTQ1
MzlhNTFiNGM1MTc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9wYXJzZXItc3ludGF4LWNo
ZWNrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9wYXJzZXItc3ludGF4LWNoZWNr
LWV4cGVjdGVkLnR4dApAQCAtNzc1LDEzICs3NzUsMTMgQEAgUEFTUyBWYWxpZDogICAidmFyIHt4
fT0xIgogUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgdmFyIHt4fT0xIH0iCiBQQVNTIFZh
bGlkOiAgICJ2YXIge3gsIHl9PTEiCiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyB2YXIg
e3gsIHl9PTEgfSIKLVBBU1MgVmFsaWQ6ICAgInZhciBbeF09MSIKK1BBU1MgVmFsaWQ6ICAgInZh
ciBbeF09MSIgd2l0aCBUeXBlRXJyb3IKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IHZh
ciBbeF09MSB9IgotUEFTUyBWYWxpZDogICAidmFyIFt4LCB5XT0xIgorUEFTUyBWYWxpZDogICAi
dmFyIFt4LCB5XT0xIiB3aXRoIFR5cGVFcnJvcgogUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigp
IHsgdmFyIFt4LCB5XT0xIH0iCi1QQVNTIFZhbGlkOiAgICJbeF09MSIKK1BBU1MgVmFsaWQ6ICAg
Ilt4XT0xIiB3aXRoIFR5cGVFcnJvcgogUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgW3hd
PTEgfSIKLVBBU1MgVmFsaWQ6ICAgInZhciBbeF09MSIKK1BBU1MgVmFsaWQ6ICAgInZhciBbeF09
MSIgd2l0aCBUeXBlRXJyb3IKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IHZhciBbeF09
MSB9IgogUEFTUyBWYWxpZDogICAiKHtbeF06IDF9KSIKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9u
IGYoKSB7ICh7W3hdOiAxfSkgfSIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LmpzCmluZGV4IDcxZGJjMzZhYmUyMTZjODM5
ZTA1MzBhNTg3MjMyZGNkMTVmNjU4N2QuLjkyZDY3MThmOTNhM2MxNjViY2Y0ODc0OTcwNjQ1MWFj
MTViYTI3ZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9kZXN0cnVj
dHVyaW5nLWFzc2lnbm1lbnQuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Rl
c3RydWN0dXJpbmctYXNzaWdubWVudC5qcwpAQCAtNDgsNyArNDgsNyBAQCBmdW5jdGlvbiB0ZXN0
RGVjb25zdHJ1Y3RBcmdMZW5ndGgoKSB7CiBzaG91bGRCZSgidGVzdERlY29uc3RydWN0QXJnTGVu
Z3RoKCcxJywgJzInKSIsICIyIik7CiB2YXIgdGV4dCA9ICczJzsKIE9iamVjdC5wcm90b3R5cGUu
X19kZWZpbmVHZXR0ZXJfXygxLCBmdW5jdGlvbigpeyB2YXIgciA9IHRleHQ7IHRleHQgPSAiZmFp
bCI7IHJldHVybiByOyB9KQotc2hvdWxkQmUoInRlc3REZWNvbnN0cnVjdEFyZ3MoJzInKSIsICIn
MjMnIik7CitzaG91bGRCZSgidGVzdERlY29uc3RydWN0QXJncygnMicpIiwgIicydW5kZWZpbmVk
JyIpOwogCiB2YXIgW2EsYl0gPSBbMSwyXSwgW2MsZF0gPSBbMyw0XQogCg==
</data>
<flag name="review"
          id="280273"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>