<?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>135578</bug_id>
          
          <creation_ts>2014-08-04 15:57:27 -0700</creation_ts>
          <short_desc>The JIT should cache property lookup misses.</short_desc>
          <delta_ts>2014-11-10 19:10:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          <dependson>135635</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1026710</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-08-04 15:57:27 -0700</bug_when>
    <thetext>Because why not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026711</commentid>
    <comment_count>1</comment_count>
      <attachid>235987</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-08-04 15:57:44 -0700</bug_when>
    <thetext>Created attachment 235987
Pork in wogress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026871</commentid>
    <comment_count>2</comment_count>
      <attachid>236033</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-08-05 10:10:16 -0700</bug_when>
    <thetext>Created attachment 236033
Kinda works</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026974</commentid>
    <comment_count>3</comment_count>
      <attachid>236058</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-08-05 15:45:50 -0700</bug_when>
    <thetext>Created attachment 236058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026978</commentid>
    <comment_count>4</comment_count>
      <attachid>236058</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-08-05 16:00:32 -0700</bug_when>
    <thetext>Comment on attachment 236058
Patch

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

r=me

&gt; LayoutTests/js/regress/script-tests/undefined-property-access.js:3
&gt; +    var someGlobal = 0;

Ruh roh. This is not a global, so this test might get over-optimized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026990</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-08-05 16:10:58 -0700</bug_when>
    <thetext>Committed r172099: &lt;http://trac.webkit.org/changeset/172099&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027049</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-08-05 19:20:39 -0700</bug_when>
    <thetext>I believe that this change needs to be reverted until we get it right: it needs some real tests, a clear story for how the new caching style communicates to the DFG, a clear story for polymorphic cases, and a clear story for prototype chain caching safety checks.

REAL TESTS

For starters, this should have included a test for the counterexamples:

- We cached a miss but the field appeared on the prototype chain.
- We cached a miss but the field appeared on the object itself.
- Tests for all of the counterexamples I come up with below.

INTEGRATION WITH THE DFG

It also appears that you are essentially relying on luck to get the DFG to ignore such inline caches.  This is not a good thing.  The Repatch.cpp logic needs to communicate explicitly to the logic beneath GetByIdStatus/PutByIdStatus/CallLinkStatus, so that when the DFG sees an inline cache of a certain form it either soundly inlines it, or ignores it.  In this case, you have no DFG changes to support such misses so you want the DFG to ignore it.  But you&apos;re doing this:

        list-&gt;addAccess(GetByIdAccess(
            *vm, codeBlock-&gt;ownerExecutable(),
            GetByIdAccess::SimpleInline,
            stubRoutine, structure, prototypeChain, count));

Which is an emphatic claim to the DFG that at the given chain count, there will be the property that we&apos;re looking for.  This is of course false in this case.  The correct way to do this is to introduce a new GetByIdAccess enumeration value, like GetByIdAccess::SimpleMiss

POLYMORPHIC CASES

I am surprised that you put this case inside tryCacheGetByID().  It doesn&apos;t belong there.  All caching that results in a stub should funnel into tryBuildGetByIDList().  Not only is this the consistent thing to do - and consistency is crucial to reasoning about this code - but it will give you a significant speed increase.  Consider that the object either may have the field or may not.  Your patch will *only* produce a speed-up if it *always* does not have the field.  That&apos;s not what we really want.  We want a speed-up in cases where it may or may not have the field, also.

Also, it looks like you&apos;re missing out of the proxy logic in tryBuildGetByIDList().  Literally moving your code into there would give you loads of benefit.

I realize that this could be viewed as a request for improvement.  But it&apos;s extremely important for compiler and runtime optimizations to be implemented to their fullest generality on the first try.  Otherwise, future contributors will think that the optimization was done in a limited fashion on purpose.  This is very confusing and we had a nightmare with this in the baseline JIT&apos;s old inline caching.  I don&apos;t want a repeat of that disaster.

PROTOTYPE CHAIN SOUNDNESS

Because you implemented this separately from the existing prototype chain logic in tryBuildGetByIDList(), you missed some safety checks, like:

    if (slot.slotBase() != baseValue) {
        if (typeInfo.prohibitsPropertyCaching() || structure-&gt;isDictionary())
            return GiveUpOnCache;

That&apos;s a pretty bad bug.

I think that it&apos;s best to revert this change because it introduces a lot of regressions.  I think it&apos;s better to revert and fix those before relanding this rather than filing a ton of bugs about all of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027056</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-05 19:27:40 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 135635</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047696</commentid>
    <comment_count>8</comment_count>
      <attachid>241319</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-11-10 16:59:42 -0800</bug_when>
    <thetext>Created attachment 241319
Patch

Moved the logic to tryBuildGetByIDList(), duplicated less code, and added more test coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047697</commentid>
    <comment_count>9</comment_count>
      <attachid>241319</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-11-10 17:03:27 -0800</bug_when>
    <thetext>Comment on attachment 241319
Patch

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

&gt; Source/JavaScriptCore/bytecode/GetByIdStatus.cpp:180
&gt; +                case GetByIdAccess::SimpleMiss:

This seems wrong - you should put it along with the CustomGetter/WatchedStub because you haven&apos;t written the code that would make the DFG support this.  So, currently, if you end up in the DFG with this kind of cache you might have a bad time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047700</commentid>
    <comment_count>10</comment_count>
      <attachid>241321</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-11-10 17:09:48 -0800</bug_when>
    <thetext>Created attachment 241321
Patch

Fixed per Filip&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047710</commentid>
    <comment_count>11</comment_count>
      <attachid>241321</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-11-10 17:22:46 -0800</bug_when>
    <thetext>Comment on attachment 241321
Patch

It seems like it would be good to have a test for the case that you just fixed in this patch. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047726</commentid>
    <comment_count>12</comment_count>
      <attachid>241321</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-10 19:10:16 -0800</bug_when>
    <thetext>Comment on attachment 241321
Patch

Clearing flags on attachment: 241321

Committed r175846: &lt;http://trac.webkit.org/changeset/175846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047727</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-10 19:10:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235987</attachid>
            <date>2014-08-04 15:57:44 -0700</date>
            <delta_ts>2014-08-05 10:10:33 -0700</delta_ts>
            <desc>Pork in wogress</desc>
            <filename>wip.diff</filename>
            <type>text/plain</type>
            <size>6127</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGRiYzdkNjYuLmI1MTllNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTIsNiArNTIsOCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAorc3RhdGljIHZvaWQgcGF0Y2hKdW1wVG9HZXRCeUlkU3R1YihD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEpJVFN0dWJSb3V0aW5lKik7CisKIC8vIEJl
d2FyZTogaW4gdGhpcyBjb2RlLCBpdCBpcyBub3Qgc2FmZSB0byBhc3N1bWUgYW55dGhpbmcgYWJv
dXQgdGhlIGZvbGxvd2luZyByZWdpc3RlcnMKIC8vIHRoYXQgd291bGQgb3JkaW5hcmlseSBoYXZl
IHdlbGwta25vd24gdmFsdWVzOgogLy8gLSB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIKQEAgLTIyNiw2
ICsyMjgsNyBAQCBzdGF0aWMgdm9pZCBsaW5rUmVzdG9yZVNjcmF0Y2goTGlua0J1ZmZlciYgcGF0
Y2hCdWZmZXIsIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0YwogCiBlbnVtIEJ5SWRTdHViS2luZCB7
CiAgICAgR2V0VmFsdWUsCisgICAgR2V0VW5kZWZpbmVkLAogICAgIENhbGxHZXR0ZXIsCiAgICAg
Q2FsbEN1c3RvbUdldHRlciwKICAgICBDYWxsU2V0dGVyLApAQCAtMjM3LDYgKzI0MCw4IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiB0b1N0cmluZyhCeUlkU3R1YktpbmQga2luZCkKICAgICBzd2l0Y2gg
KGtpbmQpIHsKICAgICBjYXNlIEdldFZhbHVlOgogICAgICAgICByZXR1cm4gIkdldFZhbHVlIjsK
KyAgICBjYXNlIEdldFVuZGVmaW5lZDoKKyAgICAgICAgcmV0dXJuICJHZXRVbmRlZmluZWQiOwog
ICAgIGNhc2UgQ2FsbEdldHRlcjoKICAgICAgICAgcmV0dXJuICJDYWxsR2V0dGVyIjsKICAgICBj
YXNlIENhbGxDdXN0b21HZXR0ZXI6CkBAIC0yNTUsNiArMjYwLDggQEAgc3RhdGljIEJ5SWRTdHVi
S2luZCBraW5kRm9yKGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAoc2xvdC5p
c0NhY2hlYWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBHZXRWYWx1ZTsKKyAgICBpZiAoc2xv
dC5pc1Vuc2V0KCkpCisgICAgICAgIHJldHVybiBHZXRVbmRlZmluZWQ7CiAgICAgaWYgKHNsb3Qu
aXNDYWNoZWFibGVDdXN0b20oKSkKICAgICAgICAgcmV0dXJuIENhbGxDdXN0b21HZXR0ZXI7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKTsKQEAgLTI5OSw3ICsz
MDYsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUJ5SWRTdHViKAogICAgICAgICBzdGF0aWNfY2Fz
dDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlR1BSKSk7CiAgICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBUZW1wUmVnaXN0ZXJTZXQoc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycykuZ2V0RnJl
ZUdQUigpOwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBzY3JhdGNoR1BSID09IElu
dmFsaWRHUFJSZWc7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIW5lZWRUb1Jlc3RvcmVTY3JhdGNoIHx8
IGtpbmQgPT0gR2V0VmFsdWUpOworICAgIFJFTEVBU0VfQVNTRVJUKCFuZWVkVG9SZXN0b3JlU2Ny
YXRjaCB8fCAoa2luZCA9PSBHZXRWYWx1ZSB8fCBraW5kID09IEdldFVuZGVmaW5lZCkpOwogICAg
IAogICAgIENDYWxsSGVscGVycyBzdHViSml0KCZleGVjLT52bSgpLCBleGVjLT5jb2RlQmxvY2so
KSk7CiAgICAgaWYgKG5lZWRUb1Jlc3RvcmVTY3JhdGNoKSB7CkBAIC0zNTcsNyArMzY0LDggQEAg
c3RhdGljIHZvaWQgZ2VuZXJhdGVCeUlkU3R1YigKICAgICAgICAgfQogICAgIH0KICAgICAKLSAg
ICBHUFJSZWcgYmFzZUZvckFjY2Vzc0dQUjsKKyAgICBHUFJSZWcgYmFzZUZvckFjY2Vzc0dQUiA9
IEludmFsaWRHUFJSZWc7CisgICAgaWYgKGtpbmQgIT0gR2V0VW5kZWZpbmVkKSB7CiAgICAgaWYg
KGNoYWluKSB7CiAgICAgICAgIC8vIFdlIGNvdWxkIGhhdmUgY2xvYmJlcmVkIHNjcmF0Y2hHUFIg
ZWFybGllciwgc28gd2UgaGF2ZSB0byByZWxvYWQgZnJvbSBiYXNlR1BSIHRvIGdldCB0aGUgdGFy
Z2V0LgogICAgICAgICBpZiAobG9hZFRhcmdldEZyb21Qcm94eSkKQEAgLTM3Miw5ICszODAsMTMg
QEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVCeUlkU3R1YigKICAgICAgICAgICAgIHN0dWJKaXQubW92
ZShzY3JhdGNoR1BSLCBiYXNlRm9yR2V0R1BSKTsKICAgICAgICAgYmFzZUZvckFjY2Vzc0dQUiA9
IGJhc2VGb3JHZXRHUFI7CiAgICAgfQorICAgIH0KIAogICAgIEdQUlJlZyBsb2FkZWRWYWx1ZUdQ
UiA9IEludmFsaWRHUFJSZWc7Ci0gICAgaWYgKGtpbmQgIT0gQ2FsbEN1c3RvbUdldHRlciAmJiBr
aW5kICE9IENhbGxDdXN0b21TZXR0ZXIpIHsKKworICAgIGlmIChraW5kID09IEdldFVuZGVmaW5l
ZCkgeworICAgICAgICBzdHViSml0Lm1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgdmFs
dWVSZWdzKTsKKyAgICB9IGVsc2UgaWYgKGtpbmQgIT0gQ2FsbEN1c3RvbUdldHRlciAmJiBraW5k
ICE9IENhbGxDdXN0b21TZXR0ZXIpIHsKICAgICAgICAgaWYgKGtpbmQgPT0gR2V0VmFsdWUpCiAg
ICAgICAgICAgICBsb2FkZWRWYWx1ZUdQUiA9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCk7CiAgICAg
ICAgIGVsc2UKQEAgLTQwOCw3ICs0MjAsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUJ5SWRTdHVi
KAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua0luZm8+IGNhbGxMaW5rSW5mbzsKIAogICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIHN1Y2Nlc3MsIGZhaWw7Ci0gICAgaWYgKGtpbmQgIT0gR2V0
VmFsdWUpIHsKKyAgICBpZiAoa2luZCAhPSBHZXRWYWx1ZSAmJiBraW5kICE9IEdldFVuZGVmaW5l
ZCkgewogICAgICAgICAvLyBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdoZW5ldmVyIHRoaXMgY2Fs
bCBpcyBtYWRlIGluIHRoZSBmdXR1cmUsIHdlIHJlbWVtYmVyIHRoZQogICAgICAgICAvLyBwbGFj
ZSB0aGF0IHdlIG1hZGUgaXQgZnJvbS4gSXQganVzdCBzbyBoYXBwZW5zIHRvIGJlIHRoZSBwbGFj
ZSB0aGF0IHdlIGFyZSBhdAogICAgICAgICAvLyByaWdodCBub3chCkBAIC03MzEsNiArNzQzLDQw
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uCiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hl
OwogICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisKKyAgICBpZiAoc2xvdC5p
c1Vuc2V0KCkpIHsKKyAgICAgICAgLy8gUHJvcGVydHkgbG9va3VwIG1pc3MgLSBsZXQncyB0cnkg
dG8gY2FjaGUgdGhhdC4KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlk
T2Zmc2V0OworICAgICAgICBzaXplX3QgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihl
eGVjLCBiYXNlQ2VsbCk7CisgICAgICAgIGlmIChjb3VudCA9PSBJbnZhbGlkUHJvdG90eXBlQ2hh
aW4pCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgU3RydWN0dXJl
Q2hhaW4qIHByb3RvdHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsK
KworICAgICAgICBQb2x5bW9ycGhpY0dldEJ5SWRMaXN0KiBsaXN0ID0gUG9seW1vcnBoaWNHZXRC
eUlkTGlzdDo6ZnJvbShzdHViSW5mbyk7CisgICAgICAgIGlmIChsaXN0LT5pc0Z1bGwoKSkgewor
ICAgICAgICAgICAgLy8gV2UgbmVlZCB0aGlzIGV4dHJhIGNoZWNrIGJlY2F1c2Ugb2YgcmVjdXJz
aW9uLgorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBGSVhNRTogSXMgaXQgcmVhbGx5IE9LIHRvIGNhY2hlIGlmIHRoZXJlIGlzIGEgUHJv
cGVydHlTbG90Ojp3YXRjaHBvaW50U2V0KCk/CisgICAgICAgIFJlZlB0cjxKSVRTdHViUm91dGlu
ZT4gc3R1YlJvdXRpbmU7CisgICAgICAgIGdlbmVyYXRlQnlJZFN0dWIoCisgICAgICAgICAgICBl
eGVjLCBHZXRVbmRlZmluZWQsIHByb3BlcnR5TmFtZSwgRnVuY3Rpb25QdHIoKSwgc3R1YkluZm8s
IHByb3RvdHlwZUNoYWluLCBjb3VudCwgb2Zmc2V0LAorICAgICAgICAgICAgc3RydWN0dXJlLCBm
YWxzZSwgc2xvdC53YXRjaHBvaW50U2V0KCksCisgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUp
LAorICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlzdC0+Y3VycmVudFNsb3dQYXRoVGFy
Z2V0KHN0dWJJbmZvKSksIHN0dWJSb3V0aW5lKTsKKyAgICAKKyAgICAgICAgbGlzdC0+YWRkQWNj
ZXNzKEdldEJ5SWRBY2Nlc3MoCisgICAgICAgICAgICAqdm0sIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksCisgICAgICAgICAgICBzbG90LndhdGNocG9pbnRTZXQoKSA/IEdldEJ5SWRBY2Nl
c3M6OldhdGNoZWRTdHViIDogR2V0QnlJZEFjY2Vzczo6U2ltcGxlU3R1YiwKKyAgICAgICAgICAg
IHN0dWJSb3V0aW5lLCBzdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluLCBjb3VudCkpOworICAgIAor
ICAgICAgICBwYXRjaEp1bXBUb0dldEJ5SWRTdHViKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJS
b3V0aW5lLmdldCgpKTsKKyAgICAKKyAgICAgICAgcmV0dXJuIGxpc3QtPmlzRnVsbCgpID8gR2l2
ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKKyAgICB9CisKICAgICBpZiAoIXNsb3QuaXND
YWNoZWFibGUoKSkKICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKQEAgLTc2MCw3ICs4
MDYsNyBAQCB2b2lkIHJlcGF0Y2hHZXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNl
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcgogICAgICAgICByZXBhdGNoQ2FsbChleGVj
LT5jb2RlQmxvY2soKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRC
eUlkKTsKIH0KIAotc3RhdGljIHZvaWQgcGF0Y2hKdW1wVG9HZXRCeUlkU3R1YihDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBKSVRTdHViUm91dGluZSog
c3R1YlJvdXRpbmUpCit2b2lkIHBhdGNoSnVtcFRvR2V0QnlJZFN0dWIoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSklUU3R1YlJvdXRpbmUqIHN0dWJS
b3V0aW5lKQogewogICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJbmZvLmFjY2Vzc1R5cGUgPT0gYWNj
ZXNzX2dldF9ieV9pZF9saXN0KTsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29k
ZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgK
aW5kZXggZjQ2MDQ4OC4uYmJjZTAzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlTbG90LmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAgIEpTVmFsdWUg
Z2V0VmFsdWUoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKIAogICAg
IGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlYWJpbGl0eSA9PSBDYWNo
aW5nQWxsb3dlZCAmJiBtX29mZnNldCAhPSBpbnZhbGlkT2Zmc2V0OyB9CisgICAgYm9vbCBpc1Vu
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUgPT0gVHlwZVVuc2V0OyB9CiAgICAg
Ym9vbCBpc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUgPT0gVHlwZVZhbHVl
OyB9CiAgICAgYm9vbCBpc0FjY2Vzc29yKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUg
PT0gVHlwZUdldHRlcjsgfQogICAgIGJvb2wgaXNDdXN0b20oKSBjb25zdCB7IHJldHVybiBtX3By
b3BlcnR5VHlwZSA9PSBUeXBlQ3VzdG9tOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236033</attachid>
            <date>2014-08-05 10:10:16 -0700</date>
            <delta_ts>2014-08-05 15:45:50 -0700</delta_ts>
            <desc>Kinda works</desc>
            <filename>wip-135578.diff</filename>
            <type>text/plain</type>
            <size>7642</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGRiYzdkNjYuLmY5YWVjNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTIsNiArNTIsOCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAorc3RhdGljIHZvaWQgcGF0Y2hKdW1wVG9HZXRCeUlkU3R1YihD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEpJVFN0dWJSb3V0aW5lKik7CisKIC8vIEJl
d2FyZTogaW4gdGhpcyBjb2RlLCBpdCBpcyBub3Qgc2FmZSB0byBhc3N1bWUgYW55dGhpbmcgYWJv
dXQgdGhlIGZvbGxvd2luZyByZWdpc3RlcnMKIC8vIHRoYXQgd291bGQgb3JkaW5hcmlseSBoYXZl
IHdlbGwta25vd24gdmFsdWVzOgogLy8gLSB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIKQEAgLTIyNiw2
ICsyMjgsNyBAQCBzdGF0aWMgdm9pZCBsaW5rUmVzdG9yZVNjcmF0Y2goTGlua0J1ZmZlciYgcGF0
Y2hCdWZmZXIsIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0YwogCiBlbnVtIEJ5SWRTdHViS2luZCB7
CiAgICAgR2V0VmFsdWUsCisgICAgR2V0VW5kZWZpbmVkLAogICAgIENhbGxHZXR0ZXIsCiAgICAg
Q2FsbEN1c3RvbUdldHRlciwKICAgICBDYWxsU2V0dGVyLApAQCAtMjM3LDYgKzI0MCw4IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiB0b1N0cmluZyhCeUlkU3R1YktpbmQga2luZCkKICAgICBzd2l0Y2gg
KGtpbmQpIHsKICAgICBjYXNlIEdldFZhbHVlOgogICAgICAgICByZXR1cm4gIkdldFZhbHVlIjsK
KyAgICBjYXNlIEdldFVuZGVmaW5lZDoKKyAgICAgICAgcmV0dXJuICJHZXRVbmRlZmluZWQiOwog
ICAgIGNhc2UgQ2FsbEdldHRlcjoKICAgICAgICAgcmV0dXJuICJDYWxsR2V0dGVyIjsKICAgICBj
YXNlIENhbGxDdXN0b21HZXR0ZXI6CkBAIC0yNTUsNiArMjYwLDggQEAgc3RhdGljIEJ5SWRTdHVi
S2luZCBraW5kRm9yKGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAoc2xvdC5p
c0NhY2hlYWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBHZXRWYWx1ZTsKKyAgICBpZiAoc2xv
dC5pc1Vuc2V0KCkpCisgICAgICAgIHJldHVybiBHZXRVbmRlZmluZWQ7CiAgICAgaWYgKHNsb3Qu
aXNDYWNoZWFibGVDdXN0b20oKSkKICAgICAgICAgcmV0dXJuIENhbGxDdXN0b21HZXR0ZXI7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKTsKQEAgLTI5OSw3ICsz
MDYsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUJ5SWRTdHViKAogICAgICAgICBzdGF0aWNfY2Fz
dDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlR1BSKSk7CiAgICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBUZW1wUmVnaXN0ZXJTZXQoc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycykuZ2V0RnJl
ZUdQUigpOwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBzY3JhdGNoR1BSID09IElu
dmFsaWRHUFJSZWc7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIW5lZWRUb1Jlc3RvcmVTY3JhdGNoIHx8
IGtpbmQgPT0gR2V0VmFsdWUpOworICAgIFJFTEVBU0VfQVNTRVJUKCFuZWVkVG9SZXN0b3JlU2Ny
YXRjaCB8fCAoa2luZCA9PSBHZXRWYWx1ZSB8fCBraW5kID09IEdldFVuZGVmaW5lZCkpOwogICAg
IAogICAgIENDYWxsSGVscGVycyBzdHViSml0KCZleGVjLT52bSgpLCBleGVjLT5jb2RlQmxvY2so
KSk7CiAgICAgaWYgKG5lZWRUb1Jlc3RvcmVTY3JhdGNoKSB7CkBAIC0zNTcsMjQgKzM2NCwyOCBA
QCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUJ5SWRTdHViKAogICAgICAgICB9CiAgICAgfQogICAgIAot
ICAgIEdQUlJlZyBiYXNlRm9yQWNjZXNzR1BSOwotICAgIGlmIChjaGFpbikgewotICAgICAgICAv
LyBXZSBjb3VsZCBoYXZlIGNsb2JiZXJlZCBzY3JhdGNoR1BSIGVhcmxpZXIsIHNvIHdlIGhhdmUg
dG8gcmVsb2FkIGZyb20gYmFzZUdQUiB0byBnZXQgdGhlIHRhcmdldC4KLSAgICAgICAgaWYgKGxv
YWRUYXJnZXRGcm9tUHJveHkpCi0gICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNQcm94eTo6dGFyZ2V0T2Zmc2V0KCkpLCBiYXNlRm9y
R2V0R1BSKTsKLSAgICAgICAgc3R1YkppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHByb3RvT2JqZWN0KSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIGJhc2VGb3JBY2Nlc3NHUFIg
PSBzY3JhdGNoR1BSOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEZvciBwcm94eSBvYmplY3Rz
LCB3ZSBuZWVkIHRvIGRvIGFsbCB0aGUgU3RydWN0dXJlIGNoZWNrcyBiZWZvcmUgbW92aW5nIHRo
ZSBiYXNlR1BSIGludG8gCi0gICAgICAgIC8vIGJhc2VGb3JHZXRHUFIgYmVjYXVzZSBpZiB3ZSBm
YWlsIGFueSBvZiB0aGUgY2hlY2tzIHRoZW4gd2Ugd291bGQgaGF2ZSB0aGUgd3JvbmcgdmFsdWUg
aW4gYmFzZUdQUgotICAgICAgICAvLyBvbiB0aGUgc2xvdyBwYXRoLgotICAgICAgICBpZiAobG9h
ZFRhcmdldEZyb21Qcm94eSkKLSAgICAgICAgICAgIHN0dWJKaXQubW92ZShzY3JhdGNoR1BSLCBi
YXNlRm9yR2V0R1BSKTsKLSAgICAgICAgYmFzZUZvckFjY2Vzc0dQUiA9IGJhc2VGb3JHZXRHUFI7
CisgICAgR1BSUmVnIGJhc2VGb3JBY2Nlc3NHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChr
aW5kICE9IEdldFVuZGVmaW5lZCkgeworICAgICAgICBpZiAoY2hhaW4pIHsKKyAgICAgICAgICAg
IC8vIFdlIGNvdWxkIGhhdmUgY2xvYmJlcmVkIHNjcmF0Y2hHUFIgZWFybGllciwgc28gd2UgaGF2
ZSB0byByZWxvYWQgZnJvbSBiYXNlR1BSIHRvIGdldCB0aGUgdGFyZ2V0LgorICAgICAgICAgICAg
aWYgKGxvYWRUYXJnZXRGcm9tUHJveHkpCisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTUHJveHk6OnRhcmdldE9mZnNldCgp
KSwgYmFzZUZvckdldEdQUik7CisgICAgICAgICAgICBzdHViSml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIocHJvdG9PYmplY3QpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAg
IGJhc2VGb3JBY2Nlc3NHUFIgPSBzY3JhdGNoR1BSOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgLy8gRm9yIHByb3h5IG9iamVjdHMsIHdlIG5lZWQgdG8gZG8gYWxsIHRoZSBTdHJ1Y3R1
cmUgY2hlY2tzIGJlZm9yZSBtb3ZpbmcgdGhlIGJhc2VHUFIgaW50bworICAgICAgICAgICAgLy8g
YmFzZUZvckdldEdQUiBiZWNhdXNlIGlmIHdlIGZhaWwgYW55IG9mIHRoZSBjaGVja3MgdGhlbiB3
ZSB3b3VsZCBoYXZlIHRoZSB3cm9uZyB2YWx1ZSBpbiBiYXNlR1BSCisgICAgICAgICAgICAvLyBv
biB0aGUgc2xvdyBwYXRoLgorICAgICAgICAgICAgaWYgKGxvYWRUYXJnZXRGcm9tUHJveHkpCisg
ICAgICAgICAgICAgICAgc3R1YkppdC5tb3ZlKHNjcmF0Y2hHUFIsIGJhc2VGb3JHZXRHUFIpOwor
ICAgICAgICAgICAgYmFzZUZvckFjY2Vzc0dQUiA9IGJhc2VGb3JHZXRHUFI7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBHUFJSZWcgbG9hZGVkVmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAg
IGlmIChraW5kICE9IENhbGxDdXN0b21HZXR0ZXIgJiYga2luZCAhPSBDYWxsQ3VzdG9tU2V0dGVy
KSB7CisgICAgaWYgKGtpbmQgPT0gR2V0VW5kZWZpbmVkKSB7CisgICAgICAgIHN0dWJKaXQubW92
ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCB2YWx1ZVJlZ3MpOworICAgIH0gZWxzZSBpZiAo
a2luZCAhPSBDYWxsQ3VzdG9tR2V0dGVyICYmIGtpbmQgIT0gQ2FsbEN1c3RvbVNldHRlcikgewog
ICAgICAgICBpZiAoa2luZCA9PSBHZXRWYWx1ZSkKICAgICAgICAgICAgIGxvYWRlZFZhbHVlR1BS
ID0gdmFsdWVSZWdzLnBheWxvYWRHUFIoKTsKICAgICAgICAgZWxzZQpAQCAtNDA4LDcgKzQxOSw3
IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlQnlJZFN0dWIoCiAgICAgc3RkOjp1bmlxdWVfcHRyPENh
bGxMaW5rSW5mbz4gY2FsbExpbmtJbmZvOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3Vj
Y2VzcywgZmFpbDsKLSAgICBpZiAoa2luZCAhPSBHZXRWYWx1ZSkgeworICAgIGlmIChraW5kICE9
IEdldFZhbHVlICYmIGtpbmQgIT0gR2V0VW5kZWZpbmVkKSB7CiAgICAgICAgIC8vIE5lZWQgdG8g
bWFrZSBzdXJlIHRoYXQgd2hlbmV2ZXIgdGhpcyBjYWxsIGlzIG1hZGUgaW4gdGhlIGZ1dHVyZSwg
d2UgcmVtZW1iZXIgdGhlCiAgICAgICAgIC8vIHBsYWNlIHRoYXQgd2UgbWFkZSBpdCBmcm9tLiBJ
dCBqdXN0IHNvIGhhcHBlbnMgdG8gYmUgdGhlIHBsYWNlIHRoYXQgd2UgYXJlIGF0CiAgICAgICAg
IC8vIHJpZ2h0IG5vdyEKQEAgLTcyOSwxNSArNzQwLDQ3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
Y29uCiAgICAgLy8gRklYTUU6IENhY2hlIHByb3BlcnR5IGFjY2VzcyBmb3IgaW1tZWRpYXRlcy4K
ICAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2Fj
aGU7CisKKyAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGUoKSAmJiAhc2xvdC5pc1Vuc2V0KCkpCisg
ICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCiAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJh
c2VWYWx1ZS5hc0NlbGwoKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5z
dHJ1Y3R1cmUoKTsKLSAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGUoKSkKLSAgICAgICAgcmV0dXJu
IEdpdmVVcE9uQ2FjaGU7CiAKICAgICBJbmxpbmVDYWNoZUFjdGlvbiBhY3Rpb24gPSBhY3Rpb25G
b3JDZWxsKCp2bSwgYmFzZUNlbGwpOwogICAgIGlmIChhY3Rpb24gIT0gQXR0ZW1wdFRvQ2FjaGUp
CiAgICAgICAgIHJldHVybiBhY3Rpb247CiAKKyAgICBpZiAoc2xvdC5pc1Vuc2V0KCkpIHsKKyAg
ICAgICAgLy8gUHJvcGVydHkgbG9va3VwIG1pc3MgLSBsZXQncyB0cnkgdG8gY2FjaGUgdGhhdC4K
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKKyAgICAgICAg
c2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwor
ICAgICAgICBpZiAoY291bnQgPT0gSW52YWxpZFByb3RvdHlwZUNoYWluKQorICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5cGVD
aGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CisgICAgICAgIFBvbHltb3Jw
aGljR2V0QnlJZExpc3QqIGxpc3QgPSBQb2x5bW9ycGhpY0dldEJ5SWRMaXN0Ojpmcm9tKHN0dWJJ
bmZvKTsKKyAgICAgICAgaWYgKGxpc3QtPmlzRnVsbCgpKSB7CisgICAgICAgICAgICAvLyBXZSBu
ZWVkIHRoaXMgZXh0cmEgY2hlY2sgYmVjYXVzZSBvZiByZWN1cnNpb24uCisgICAgICAgICAgICBy
ZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxKSVRTdHVi
Um91dGluZT4gc3R1YlJvdXRpbmU7CisgICAgICAgIGdlbmVyYXRlQnlJZFN0dWIoCisgICAgICAg
ICAgICBleGVjLCBHZXRVbmRlZmluZWQsIHByb3BlcnR5TmFtZSwgRnVuY3Rpb25QdHIoKSwgc3R1
YkluZm8sIHByb3RvdHlwZUNoYWluLCBjb3VudCwgb2Zmc2V0LAorICAgICAgICAgICAgc3RydWN0
dXJlLCBmYWxzZSwgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSksCisgICAg
ICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChsaXN0LT5jdXJyZW50U2xvd1BhdGhUYXJnZXQoc3R1
YkluZm8pKSwgc3R1YlJvdXRpbmUpOworCisgICAgICAgIGxpc3QtPmFkZEFjY2VzcyhHZXRCeUlk
QWNjZXNzKAorICAgICAgICAgICAgKnZtLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAor
ICAgICAgICAgICAgR2V0QnlJZEFjY2Vzczo6U2ltcGxlSW5saW5lLAorICAgICAgICAgICAgc3R1
YlJvdXRpbmUsIHN0cnVjdHVyZSwgcHJvdG90eXBlQ2hhaW4sIGNvdW50KSk7CisKKyAgICAgICAg
cGF0Y2hKdW1wVG9HZXRCeUlkU3R1Yihjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViUm91dGluZS5n
ZXQoKSk7CisgICAgCisgICAgICAgIHJldHVybiBsaXN0LT5pc0Z1bGwoKSA/IEdpdmVVcE9uQ2Fj
aGUgOiBSZXRyeUNhY2hlTGF0ZXI7CisgICAgfQorCiAgICAgLy8gT3B0aW1pemUgc2VsZiBhY2Nl
c3MuCiAgICAgaWYgKHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKICAgICAgICAgJiYgc2xv
dC5pc0NhY2hlYWJsZVZhbHVlKCkKQEAgLTc2MCw3ICs4MDMsNyBAQCB2b2lkIHJlcGF0Y2hHZXRC
eUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcgogICAgICAgICByZXBhdGNoQ2FsbChleGVjLT5jb2RlQmxvY2soKSwgc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkKTsKIH0KIAotc3RhdGljIHZvaWQg
cGF0Y2hKdW1wVG9HZXRCeUlkU3R1YihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBKSVRTdHViUm91dGluZSogc3R1YlJvdXRpbmUpCit2b2lkIHBhdGNo
SnVtcFRvR2V0QnlJZFN0dWIoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbywgSklUU3R1YlJvdXRpbmUqIHN0dWJSb3V0aW5lKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKHN0dWJJbmZvLmFjY2Vzc1R5cGUgPT0gYWNjZXNzX2dldF9ieV9pZF9saXN0KTsKICAg
ICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggZjQ2MDQ4OC4uYmJjZTAzYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTc4
LDYgKzc4LDcgQEAgcHVibGljOgogICAgIEpTVmFsdWUgZ2V0VmFsdWUoRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKIAogICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlYWJpbGl0eSA9PSBDYWNoaW5nQWxsb3dlZCAmJiBtX29mZnNldCAh
PSBpbnZhbGlkT2Zmc2V0OyB9CisgICAgYm9vbCBpc1Vuc2V0KCkgY29uc3QgeyByZXR1cm4gbV9w
cm9wZXJ0eVR5cGUgPT0gVHlwZVVuc2V0OyB9CiAgICAgYm9vbCBpc1ZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9wZXJ0eVR5cGUgPT0gVHlwZVZhbHVlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc29y
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUdldHRlcjsgfQogICAgIGJv
b2wgaXNDdXN0b20oKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VHlwZSA9PSBUeXBlQ3VzdG9t
OyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236058</attachid>
            <date>2014-08-05 15:45:50 -0700</date>
            <delta_ts>2014-11-10 16:59:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135578.diff</filename>
            <type>text/plain</type>
            <size>11150</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMTQ3YTFiLi43YmRmZDQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDgt
MDUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFRoZSBKSVQg
c2hvdWxkIGNhY2hlIHByb3BlcnR5IGxvb2t1cCBtaXNzZXMuCisgICAgICAgIDxodHRwczovL3dl
YmtpdC5vcmcvYi8xMzU1Nzg+CisKKyAgICAgICAgQWRkIGEgSlMgbWljcm9iZW5jaG1hcmsgdGhh
dCBhY2Nlc3NlcyBhbiB1bmRlZmluZWQgcHJvcGVydHkgaW4gYSBob3QgbG9vcC4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3VuZGVmaW5lZC1wcm9wZXJ0eS1hY2Nlc3MuanM6IEFkZGVkLgorICAgICAgICAo
Zm9vKToKKyAgICAgICAgKiBqcy9yZWdyZXNzL3VuZGVmaW5lZC1wcm9wZXJ0eS1hY2Nlc3MtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3VuZGVmaW5lZC1wcm9wZXJ0
eS1hY2Nlc3MuaHRtbDogQWRkZWQuCisKIDIwMTQtMDgtMDUgIE1hcnRpbiBIb2RvdmFuICA8bWhv
ZG92YW4udS1zemVnZWRAcGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04g
RkFJTEVEOiBuYW1lWzBdID09ICdAJyAmJiBsZW5ndGggPj0gMiBpbiBXZWJDb3JlOjpDU1NQYXJz
ZXI6OmRldGVjdEF0VG9rZW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3VuZGVmaW5lZC1wcm9wZXJ0eS1hY2Nlc3MuanMgYi9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy91bmRlZmluZWQtcHJvcGVydHktYWNjZXNzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5MGNhZWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy91bmRlZmluZWQtcHJvcGVydHktYWNj
ZXNzLmpzCkBAIC0wLDAgKzEsMTAgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKworICAgIHZhciBzb21l
R2xvYmFsID0gMDsKKyAgICB2YXIgbXlPYmplY3QgPSB7fTsKKworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDAwMDA7ICsraSkgeworICAgICAgICBzb21lR2xvYmFsID0gbXlPYmplY3QudW5k
ZWZpbmVkUHJvcGVydHk7CisgICAgfQorfQorZm9vKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3VuZGVmaW5lZC1wcm9wZXJ0eS1hY2Nlc3MtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy91bmRlZmluZWQtcHJvcGVydHktYWNjZXNzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTUxZjc4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy91bmRlZmluZWQtcHJvcGVydHktYWNjZXNz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvdW5kZWZpbmVkLXByb3Bl
cnR5LWFjY2VzcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNl
cHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy91bmRlZmluZWQtcHJv
cGVydHktYWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3VuZGVmaW5lZC1wcm9w
ZXJ0eS1hY2Nlc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDRj
N2U3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy91bmRlZmluZWQt
cHJvcGVydHktYWNjZXNzLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvdW5kZWZpbmVkLXByb3BlcnR5LWFjY2Vzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCA0ZDEzZWMwLi43NjFiMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAxNC0wOC0wNSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgVGhlIEpJVCBzaG91bGQgY2FjaGUgcHJvcGVydHkgbG9va3VwIG1pc3Nlcy4KKyAgICAg
ICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEzNTU3OD4KKworICAgICAgICBBZGQgc3VwcG9ydCBm
b3IgaW5saW5lIGNhY2hpbmcgb2Ygb2JqZWN0IHByb3BlcnRpZXMgdGhhdCBkb24ndCBleGlzdC4K
KyAgICAgICAgUHJldmlvdXNseSB3ZSdkIGZhbGwgYmFjayB0byB0aGUgQysrIHNsb3ctcGF0aCB3
aGVuZXZlciBhIHByb3BlcnR5IHdhcyBtaXNzaW5nLgorCisgICAgICAgIEl0J3MgaW1wbGVtZW50
ZWQgYXMgYSBzaW1wbGUgR2V0QnlJZC1zdHlsZSBzdHViIHRoYXQgcmV0dXJucyBqc1VuZGVmaW5l
ZCgpIGFzCisgICAgICAgIGxvbmcgYXMgdGhlIFN0cnVjdHVyZSBjaGFpbiBjaGVjayBwYXNzZXMu
CisKKyAgICAgICAgMTB4IHNwZWVkdXAgb24gdGhlIGluY2x1ZGVkIG1pY3JvYmVuY2htYXJrLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaml0L1Jl
cGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0b1N0cmluZyk6CisgICAgICAgIChKU0M6OmtpbmRG
b3IpOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUJ5SWRTdHViKToKKyAgICAgICAgKEpTQzo6dHJ5
Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6cGF0Y2hKdW1wVG9HZXRCeUlkU3R1Yik6Cisg
ICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlT
bG90Ojppc1Vuc2V0KToKKwogMjAxNC0wOC0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWlu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEgZmxhZyBmb3IgdGhlIENTUyBTZWxlY3RvcnMg
bGV2ZWwgNCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
aW5kZXggZGJjN2Q2Ni4uNzcxMTkzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCkBAIC01Miw2ICs1Miw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitzdGF0aWMgdm9pZCBw
YXRjaEp1bXBUb0dldEJ5SWRTdHViKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgSklU
U3R1YlJvdXRpbmUqKTsKKwogLy8gQmV3YXJlOiBpbiB0aGlzIGNvZGUsIGl0IGlzIG5vdCBzYWZl
IHRvIGFzc3VtZSBhbnl0aGluZyBhYm91dCB0aGUgZm9sbG93aW5nIHJlZ2lzdGVycwogLy8gdGhh
dCB3b3VsZCBvcmRpbmFyaWx5IGhhdmUgd2VsbC1rbm93biB2YWx1ZXM6CiAvLyAtIHRhZ1R5cGVO
dW1iZXJSZWdpc3RlcgpAQCAtMjI2LDYgKzIyOCw3IEBAIHN0YXRpYyB2b2lkIGxpbmtSZXN0b3Jl
U2NyYXRjaChMaW5rQnVmZmVyJiBwYXRjaEJ1ZmZlciwgYm9vbCBuZWVkVG9SZXN0b3JlU2NyYXRj
CiAKIGVudW0gQnlJZFN0dWJLaW5kIHsKICAgICBHZXRWYWx1ZSwKKyAgICBHZXRVbmRlZmluZWQs
CiAgICAgQ2FsbEdldHRlciwKICAgICBDYWxsQ3VzdG9tR2V0dGVyLAogICAgIENhbGxTZXR0ZXIs
CkBAIC0yMzcsNiArMjQwLDggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHRvU3RyaW5nKEJ5SWRTdHVi
S2luZCBraW5kKQogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgR2V0VmFsdWU6CiAgICAg
ICAgIHJldHVybiAiR2V0VmFsdWUiOworICAgIGNhc2UgR2V0VW5kZWZpbmVkOgorICAgICAgICBy
ZXR1cm4gIkdldFVuZGVmaW5lZCI7CiAgICAgY2FzZSBDYWxsR2V0dGVyOgogICAgICAgICByZXR1
cm4gIkNhbGxHZXR0ZXIiOwogICAgIGNhc2UgQ2FsbEN1c3RvbUdldHRlcjoKQEAgLTI1NSw2ICsy
NjAsOCBAQCBzdGF0aWMgQnlJZFN0dWJLaW5kIGtpbmRGb3IoY29uc3QgUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSkKICAgICAgICAgcmV0dXJu
IEdldFZhbHVlOworICAgIGlmIChzbG90LmlzVW5zZXQoKSkKKyAgICAgICAgcmV0dXJuIEdldFVu
ZGVmaW5lZDsKICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpKQogICAgICAgICByZXR1
cm4gQ2FsbEN1c3RvbUdldHRlcjsKICAgICBSRUxFQVNFX0FTU0VSVChzbG90LmlzQ2FjaGVhYmxl
R2V0dGVyKCkpOwpAQCAtMjk5LDcgKzMwNiw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlQnlJZFN0
dWIoCiAgICAgICAgIHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVHUFIp
KTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IFRlbXBSZWdpc3RlclNldChzdHViSW5mby5wYXRj
aC51c2VkUmVnaXN0ZXJzKS5nZXRGcmVlR1BSKCk7CiAgICAgYm9vbCBuZWVkVG9SZXN0b3JlU2Ny
YXRjaCA9IHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZzsKLSAgICBSRUxFQVNFX0FTU0VSVCgh
bmVlZFRvUmVzdG9yZVNjcmF0Y2ggfHwga2luZCA9PSBHZXRWYWx1ZSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoIW5lZWRUb1Jlc3RvcmVTY3JhdGNoIHx8IChraW5kID09IEdldFZhbHVlIHx8IGtpbmQg
PT0gR2V0VW5kZWZpbmVkKSk7CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQoJmV4ZWMt
PnZtKCksIGV4ZWMtPmNvZGVCbG9jaygpKTsKICAgICBpZiAobmVlZFRvUmVzdG9yZVNjcmF0Y2gp
IHsKQEAgLTM1NywyNCArMzY0LDI4IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlQnlJZFN0dWIoCiAg
ICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgR1BSUmVnIGJhc2VGb3JBY2Nlc3NHUFI7Ci0gICAg
aWYgKGNoYWluKSB7Ci0gICAgICAgIC8vIFdlIGNvdWxkIGhhdmUgY2xvYmJlcmVkIHNjcmF0Y2hH
UFIgZWFybGllciwgc28gd2UgaGF2ZSB0byByZWxvYWQgZnJvbSBiYXNlR1BSIHRvIGdldCB0aGUg
dGFyZ2V0LgotICAgICAgICBpZiAobG9hZFRhcmdldEZyb21Qcm94eSkKLSAgICAgICAgICAgIHN0
dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU1Byb3h5Ojp0
YXJnZXRPZmZzZXQoKSksIGJhc2VGb3JHZXRHUFIpOwotICAgICAgICBzdHViSml0Lm1vdmUoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocHJvdG9PYmplY3QpLCBzY3JhdGNoR1BSKTsKLSAg
ICAgICAgYmFzZUZvckFjY2Vzc0dQUiA9IHNjcmF0Y2hHUFI7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgLy8gRm9yIHByb3h5IG9iamVjdHMsIHdlIG5lZWQgdG8gZG8gYWxsIHRoZSBTdHJ1Y3R1cmUg
Y2hlY2tzIGJlZm9yZSBtb3ZpbmcgdGhlIGJhc2VHUFIgaW50byAKLSAgICAgICAgLy8gYmFzZUZv
ckdldEdQUiBiZWNhdXNlIGlmIHdlIGZhaWwgYW55IG9mIHRoZSBjaGVja3MgdGhlbiB3ZSB3b3Vs
ZCBoYXZlIHRoZSB3cm9uZyB2YWx1ZSBpbiBiYXNlR1BSCi0gICAgICAgIC8vIG9uIHRoZSBzbG93
IHBhdGguCi0gICAgICAgIGlmIChsb2FkVGFyZ2V0RnJvbVByb3h5KQotICAgICAgICAgICAgc3R1
YkppdC5tb3ZlKHNjcmF0Y2hHUFIsIGJhc2VGb3JHZXRHUFIpOwotICAgICAgICBiYXNlRm9yQWNj
ZXNzR1BSID0gYmFzZUZvckdldEdQUjsKKyAgICBHUFJSZWcgYmFzZUZvckFjY2Vzc0dQUiA9IElu
dmFsaWRHUFJSZWc7CisgICAgaWYgKGtpbmQgIT0gR2V0VW5kZWZpbmVkKSB7CisgICAgICAgIGlm
IChjaGFpbikgeworICAgICAgICAgICAgLy8gV2UgY291bGQgaGF2ZSBjbG9iYmVyZWQgc2NyYXRj
aEdQUiBlYXJsaWVyLCBzbyB3ZSBoYXZlIHRvIHJlbG9hZCBmcm9tIGJhc2VHUFIgdG8gZ2V0IHRo
ZSB0YXJnZXQuCisgICAgICAgICAgICBpZiAobG9hZFRhcmdldEZyb21Qcm94eSkKKyAgICAgICAg
ICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNQcm94eTo6dGFyZ2V0T2Zmc2V0KCkpLCBiYXNlRm9yR2V0R1BSKTsKKyAgICAgICAgICAgIHN0
dWJKaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihwcm90b09iamVjdCksIHNj
cmF0Y2hHUFIpOworICAgICAgICAgICAgYmFzZUZvckFjY2Vzc0dQUiA9IHNjcmF0Y2hHUFI7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBGb3IgcHJveHkgb2JqZWN0cywgd2UgbmVl
ZCB0byBkbyBhbGwgdGhlIFN0cnVjdHVyZSBjaGVja3MgYmVmb3JlIG1vdmluZyB0aGUgYmFzZUdQ
UiBpbnRvCisgICAgICAgICAgICAvLyBiYXNlRm9yR2V0R1BSIGJlY2F1c2UgaWYgd2UgZmFpbCBh
bnkgb2YgdGhlIGNoZWNrcyB0aGVuIHdlIHdvdWxkIGhhdmUgdGhlIHdyb25nIHZhbHVlIGluIGJh
c2VHUFIKKyAgICAgICAgICAgIC8vIG9uIHRoZSBzbG93IHBhdGguCisgICAgICAgICAgICBpZiAo
bG9hZFRhcmdldEZyb21Qcm94eSkKKyAgICAgICAgICAgICAgICBzdHViSml0Lm1vdmUoc2NyYXRj
aEdQUiwgYmFzZUZvckdldEdQUik7CisgICAgICAgICAgICBiYXNlRm9yQWNjZXNzR1BSID0gYmFz
ZUZvckdldEdQUjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEdQUlJlZyBsb2FkZWRWYWx1ZUdQ
UiA9IEludmFsaWRHUFJSZWc7Ci0gICAgaWYgKGtpbmQgIT0gQ2FsbEN1c3RvbUdldHRlciAmJiBr
aW5kICE9IENhbGxDdXN0b21TZXR0ZXIpIHsKKyAgICBpZiAoa2luZCA9PSBHZXRVbmRlZmluZWQp
CisgICAgICAgIHN0dWJKaXQubW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCB2YWx1ZVJl
Z3MpOworICAgIGVsc2UgaWYgKGtpbmQgIT0gQ2FsbEN1c3RvbUdldHRlciAmJiBraW5kICE9IENh
bGxDdXN0b21TZXR0ZXIpIHsKICAgICAgICAgaWYgKGtpbmQgPT0gR2V0VmFsdWUpCiAgICAgICAg
ICAgICBsb2FkZWRWYWx1ZUdQUiA9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCk7CiAgICAgICAgIGVs
c2UKQEAgLTQwOCw3ICs0MTksNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUJ5SWRTdHViKAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua0luZm8+IGNhbGxMaW5rSW5mbzsKIAogICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHN1Y2Nlc3MsIGZhaWw7Ci0gICAgaWYgKGtpbmQgIT0gR2V0VmFsdWUp
IHsKKyAgICBpZiAoa2luZCAhPSBHZXRWYWx1ZSAmJiBraW5kICE9IEdldFVuZGVmaW5lZCkgewog
ICAgICAgICAvLyBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdoZW5ldmVyIHRoaXMgY2FsbCBpcyBt
YWRlIGluIHRoZSBmdXR1cmUsIHdlIHJlbWVtYmVyIHRoZQogICAgICAgICAvLyBwbGFjZSB0aGF0
IHdlIG1hZGUgaXQgZnJvbS4gSXQganVzdCBzbyBoYXBwZW5zIHRvIGJlIHRoZSBwbGFjZSB0aGF0
IHdlIGFyZSBhdAogICAgICAgICAvLyByaWdodCBub3chCkBAIC03MjksMTUgKzc0MCw0NiBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBiYXNlVmFsdWUsIGNvbgogICAgIC8vIEZJWE1FOiBDYWNoZSBwcm9wZXJ0eSBhY2Nl
c3MgZm9yIGltbWVkaWF0ZXMuCiAgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkpCiAgICAgICAg
IHJldHVybiBHaXZlVXBPbkNhY2hlOworCisgICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlKCkgJiYg
IXNsb3QuaXNVbnNldCgpKQorICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKwogICAgIEpT
Q2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CiAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7Ci0gICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxl
KCkpCi0gICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgSW5saW5lQ2FjaGVBY3Rp
b24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCgqdm0sIGJhc2VDZWxsKTsKICAgICBpZiAoYWN0aW9u
ICE9IEF0dGVtcHRUb0NhY2hlKQogICAgICAgICByZXR1cm4gYWN0aW9uOwogCisgICAgaWYgKHNs
b3QuaXNVbnNldCgpKSB7CisgICAgICAgIC8vIFByb3BlcnR5IGxvb2t1cCBtaXNzIC0gbGV0J3Mg
dHJ5IHRvIGNhY2hlIHRoYXQuCisgICAgICAgIHNpemVfdCBjb3VudCA9IG5vcm1hbGl6ZVByb3Rv
dHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAgICAgICAgaWYgKGNvdW50ID09IEludmFsaWRQ
cm90b3R5cGVDaGFpbikKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAg
ICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNo
YWluKGV4ZWMpOworICAgICAgICBQb2x5bW9ycGhpY0dldEJ5SWRMaXN0KiBsaXN0ID0gUG9seW1v
cnBoaWNHZXRCeUlkTGlzdDo6ZnJvbShzdHViSW5mbyk7CisgICAgICAgIGlmIChsaXN0LT5pc0Z1
bGwoKSkgeworICAgICAgICAgICAgLy8gV2UgbmVlZCB0aGlzIGV4dHJhIGNoZWNrIGJlY2F1c2Ug
b2YgcmVjdXJzaW9uLgorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAg
IH0KKworICAgICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lOworICAgICAg
ICBnZW5lcmF0ZUJ5SWRTdHViKAorICAgICAgICAgICAgZXhlYywgR2V0VW5kZWZpbmVkLCBwcm9w
ZXJ0eU5hbWUsIEZ1bmN0aW9uUHRyKCksIHN0dWJJbmZvLCBwcm90b3R5cGVDaGFpbiwgY291bnQs
IGludmFsaWRPZmZzZXQsCisgICAgICAgICAgICBzdHJ1Y3R1cmUsIGZhbHNlLCBudWxscHRyLAor
ICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1
YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25lKSwKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkxh
YmVsKGxpc3QtPmN1cnJlbnRTbG93UGF0aFRhcmdldChzdHViSW5mbykpLCBzdHViUm91dGluZSk7
CisKKyAgICAgICAgbGlzdC0+YWRkQWNjZXNzKEdldEJ5SWRBY2Nlc3MoCisgICAgICAgICAgICAq
dm0sIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCisgICAgICAgICAgICBHZXRCeUlkQWNj
ZXNzOjpTaW1wbGVJbmxpbmUsCisgICAgICAgICAgICBzdHViUm91dGluZSwgc3RydWN0dXJlLCBw
cm90b3R5cGVDaGFpbiwgY291bnQpKTsKKworICAgICAgICBwYXRjaEp1bXBUb0dldEJ5SWRTdHVi
KGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJSb3V0aW5lLmdldCgpKTsKKworICAgICAgICByZXR1
cm4gbGlzdC0+aXNGdWxsKCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOworICAg
IH0KKwogICAgIC8vIE9wdGltaXplIHNlbGYgYWNjZXNzLgogICAgIGlmIChzbG90LnNsb3RCYXNl
KCkgPT0gYmFzZVZhbHVlCiAgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpCkBAIC03
NjAsNyArODAyLDcgQEAgdm9pZCByZXBhdGNoR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXIKICAgICAgICAgcmVwYXRjaENh
bGwoZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgb3BlcmF0
aW9uR2V0QnlJZCk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhdGNoSnVtcFRvR2V0QnlJZFN0dWIoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSklUU3R1YlJv
dXRpbmUqIHN0dWJSb3V0aW5lKQordm9pZCBwYXRjaEp1bXBUb0dldEJ5SWRTdHViKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEpJVFN0dWJSb3V0aW5l
KiBzdHViUm91dGluZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChzdHViSW5mby5hY2Nlc3NUeXBl
ID09IGFjY2Vzc19nZXRfYnlfaWRfbGlzdCk7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVm
ZmVyKGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
U2xvdC5oCmluZGV4IGY0NjA0ODguLmJiY2UwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICBK
U1ZhbHVlIGdldFZhbHVlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7
CiAKICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWFiaWxpdHkg
PT0gQ2FjaGluZ0FsbG93ZWQgJiYgbV9vZmZzZXQgIT0gaW52YWxpZE9mZnNldDsgfQorICAgIGJv
b2wgaXNVbnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUeXBlID09IFR5cGVVbnNldDsg
fQogICAgIGJvb2wgaXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUeXBlID09IFR5
cGVWYWx1ZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NvcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVy
dHlUeXBlID09IFR5cGVHZXR0ZXI7IH0KICAgICBib29sIGlzQ3VzdG9tKCkgY29uc3QgeyByZXR1
cm4gbV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUN1c3RvbTsgfQo=
</data>
<flag name="review"
          id="260645"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241319</attachid>
            <date>2014-11-10 16:59:42 -0800</date>
            <delta_ts>2014-11-10 17:09:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135578-2.diff</filename>
            <type>text/plain</type>
            <size>14554</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMTA2ZmU5Li4yMzI4NGU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTQtMTEt
MTAgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFRoZSBKSVQg
c2hvdWxkIGNhY2hlIHByb3BlcnR5IGxvb2t1cCBtaXNzZXMuCisgICAgICAgIDxodHRwczovL3dl
YmtpdC5vcmcvYi8xMzU1Nzg+CisKKyAgICAgICAgQWRkIGEgSlNSZWdyZXNzIHRlc3QgZm9yIGNh
Y2hpbmcgb2YgcHJvcGVydHkgbG9va3VwIG1pc3Nlcy4KKyAgICAgICAgVGhlcmUgYXJlIHRocmVl
IHN1YnRlc3RzOgorCisgICAgICAgICAgICAxLiBQdXJlIHNwZWVkIHRlc3QuCisgICAgICAgICAg
ICAyLiBUZXN0IGZvciB3aGVuIGEgcHJvcGVydHkgcHJldmlvdXNseSBjYWNoZWQgYXMgbWlzc2lu
ZyBzdWRkZW5seQorICAgICAgICAgICAgICAgYXBwZWFycyBvbiB0aGUgb2JqZWN0LgorICAgICAg
ICAgICAgMy4gU2FtZSBhcyAoMiksIGJ1dCBpdCBhcHBlYXJzIG9uIHRoZSBwcm90b3R5cGUuCisK
KyAgICAgICAgVGhlIHRlc3QgcnVucyB+NS41eCBmYXN0ZXIgd2l0aCB0aGUgb3B0aW1pemF0aW9u
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvdW5kZWZpbmVkLXByb3BlcnR5LWFjY2Vzcy5qczogQWRkZWQu
CisgICAgICAgIChmb28pOgorICAgICAgICAoYmFyKToKKyAgICAgICAgKGJheik6CisgICAgICAg
ICoganMvcmVncmVzcy91bmRlZmluZWQtcHJvcGVydHktYWNjZXNzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICoganMvcmVncmVzcy91bmRlZmluZWQtcHJvcGVydHktYWNjZXNzLmh0bWw6
IEFkZGVkLgorCiAyMDE0LTExLTA0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04ocjE3NDgyMyk6IFNldmVyYWwgdGVzdHMgZmFpbCBkdWUgdG8g
Y2FucGxheXRocm91Z2ggZmlyaW5nIGJlZm9yZSB0cmFja3MgYXJlIGF2YWlsYWJsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvdW5kZWZpbmVkLXByb3Bl
cnR5LWFjY2Vzcy5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3VuZGVm
aW5lZC1wcm9wZXJ0eS1hY2Nlc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uN2E2YTg0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3VuZGVmaW5lZC1wcm9wZXJ0eS1hY2Nlc3MuanMKQEAgLTAsMCArMSw0OCBAQAor
dmFyIHNvbWVHbG9iYWw7CisKKy8vIFRoaXMgaXMgYSBzaW1wbGUgc3BlZWQgdGVzdC4gSXQgc2hv
dWxkIGdvIGZhc3QuCisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICB2YXIgbXlPYmplY3QgPSB7fTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICAgICAgc29tZUds
b2JhbCA9IG15T2JqZWN0LnVuZGVmaW5lZFByb3BlcnR5OworICAgIH0KKyAgICByZXR1cm4gc29t
ZUdsb2JhbDsKK30KK3Jlc3VsdCA9IGZvbygpOworaWYgKHJlc3VsdCAhPSB1bmRlZmluZWQpCisg
ICAgdGhyb3cgIkJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisKKy8vIFRoaXMgdGVzdCBjaGVja3Mg
dGhhdCBhIGNhY2hlZCBwcm9wZXJ0eSBsb29rdXAgbWlzcyBkb2Vzbid0IGNvbnRpbnVlIHRvIGZp
cmUgd2hlbiB0aGUgcHJvcGVydHkgc3VkZGVubHkgYXBwZWFycyBvbiB0aGUgb2JqZWN0LgorCitm
dW5jdGlvbiBiYXIoKSB7CisgICAgdmFyIG15T2JqZWN0ID0ge307CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDAwMDA7ICsraSkgeworICAgICAgICBzb21lR2xvYmFsID0gbXlPYmplY3Qu
c29tZVByb3BlcnR5OworICAgICAgICBpZiAoaSA9PSA1MDAwMDAwMCkKKyAgICAgICAgICAgIG15
T2JqZWN0LnNvbWVQcm9wZXJ0eSA9IDE7CisgICAgfQorICAgIHJldHVybiBzb21lR2xvYmFsOwor
fQordmFyIHJlc3VsdCA9IGJhcigpOworaWYgKHJlc3VsdCAhPSAxKQorICAgIHRocm93ICJCYWQg
cmVzdWx0OiAiICsgcmVzdWx0Oworc29tZUdsb2JhbCA9IHVuZGVmaW5lZDsKKworLy8gVGhpcyB0
ZXN0IGNoZWNrcyB0aGF0IGEgY2FjaGVkIHByb3BlcnR5IGxvb2t1cCBtaXNzIGRvZXNuJ3QgY29u
dGludWUgdG8gZmlyZSB3aGVuIHRoZSBwcm9wZXJ0eSBzdWRkZW5seSBhcHBlYXJzIG9uIHRoZSBv
YmplY3QncyBwcm90b3R5cGUuCisKK2Z1bmN0aW9uIGJheigpIHsKKyAgICB2YXIgbXlQcm90b3R5
cGUgPSB7fQorICAgIHZhciBteU9iamVjdCA9IHt9OworICAgIG15T2JqZWN0Ll9fcHJvdG9fXyA9
IG15UHJvdG90eXBlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDAwOyArK2kpIHsK
KyAgICAgICAgc29tZUdsb2JhbCA9IG15T2JqZWN0LnNvbWVQcm9wZXJ0eTsKKyAgICAgICAgaWYg
KGkgPT0gNTAwMDAwMDApCisgICAgICAgICAgICBteVByb3RvdHlwZS5zb21lUHJvcGVydHkgPSAy
OworICAgIH0KKyAgICByZXR1cm4gc29tZUdsb2JhbDsKK30KK3ZhciByZXN1bHQgPSBiYXooKTsK
K2lmIChyZXN1bHQgIT0gMikKKyAgICB0aHJvdyAiQmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy91bmRlZmluZWQtcHJvcGVydHktYWNj
ZXNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvdW5kZWZpbmVkLXByb3Bl
cnR5LWFjY2Vzcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMTk1MWY3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvdW5k
ZWZpbmVkLXByb3BlcnR5LWFjY2Vzcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNS
ZWdyZXNzL3VuZGVmaW5lZC1wcm9wZXJ0eS1hY2Nlc3MKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvdW5kZWZpbmVkLXByb3BlcnR5LWFjY2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy91bmRlZmluZWQtcHJvcGVydHktYWNjZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMjQ0YzdlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvdW5kZWZpbmVkLXByb3BlcnR5LWFjY2Vzcy5odG1sCkBAIC0wLDAgKzEsMTIg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9y
ZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3VuZGVm
aW5lZC1wcm9wZXJ0eS1hY2Nlc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYTBlYmI5OS4uOTJlMTQ3NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTQtMTEtMTAgIEFuZHJlYXMgS2xpbmcgIDxh
a2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFRoZSBKSVQgc2hvdWxkIGNhY2hlIHByb3BlcnR5
IGxvb2t1cCBtaXNzZXMuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzU1Nzg+CisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlubGluZSBjYWNoaW5nIG9mIG1pc3NlZCBwcm9wZXJ0
eSBsb29rdXBzLgorICAgICAgICBQcmV2aW91c2x5IHRoaXMgd291bGQgYmFuaXNoIHVzIHRvIEMr
KyBzbG93IHBhdGguCisKKyAgICAgICAgSXQncyBpbXBsZW1lbnRlZCBhcyBhIHNpbXBsZSBHZXRC
eUlkIGNhY2hlIHRoYXQgcmV0dXJucyBqc1VuZGVmaW5lZCgpCisgICAgICAgIGFzIGxvbmcgYXMg
dGhlIFN0cnVjdHVyZSBjaGFpbiBjaGVjayBwYXNzZXMuIFRoZXJlJ3Mgbm8gREZHIGV4cGxvaXRh
dGlvbgorICAgICAgICBvZiB0aGlzIGtub3dsZWRnZSBpbiB0aGlzIHBhdGNoLgorCisgICAgICAg
IFRlc3Q6IGpzL3JlZ3Jlc3MvdW5kZWZpbmVkLXByb3BlcnR5LWFjY2Vzcy5qcyAofjUuNXggc3Bl
ZWR1cCkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGJ5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaDoKKyAgICAgICAgKiBieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
clN0dWJJbmZvKToKKworICAgICAgICAgICAgQWRkIEdldEJ5SWRBY2Nlc3M6OlNpbXBsZU1pc3Mg
c28gd2UgY2FuIGNvbW11bmljYXRlIHRvIHRoZSBERkcgdGhhdAorICAgICAgICAgICAgdGhlIGFj
Y2VzcyBoYXMgYmVlbiBjYWNoZWQuCisKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAg
ICAgIChKU0M6OnRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6a2luZEZvcik6CisgICAgICAgIChK
U0M6OmdlbmVyYXRlQnlJZFN0dWIpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgor
ICAgICAgICAoSlNDOjp0cnlCdWlsZEdldEJ5SURMaXN0KToKKworICAgICAgICAgICAgQWRkZWQg
YSBHZXRVbmRlZmluZWQgc3R1YiBraW5kLCBqdXN0IGEgc2ltcGxlICJzdG9yZSBqc1VuZGVmaW5l
ZCgpIiBzbmlwcGV0LgorICAgICAgICAgICAgVXNlIHRoaXMgdG8gY2FjaGUgbWlzc2VkIGxvb2t1
cHMsIHBpZ2d5YmFja2luZyBtb3N0bHkgb24gdGhlIEdldFZhbHVlIGtpbmQuCisKKyAgICAgICAg
KiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6Omlz
VW5zZXQpOgorCisgICAgICAgICAgICBFeHBvc2VkIHRoZSB1bnNldCBzdGF0ZSBzbyBQcm9wZXJ0
eVNsb3QgY2FuIGNvbW11bmljYXRlIHRoYXQgbG9va3VwIGZhaWxlZC4KKwogMjAxNC0xMS0wOSAg
QWtvcyBLaXNzICA8YWtpc3NAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIEZpeCAnbm9yZXR1
cm4nIGZ1bmN0aW9uIGRvZXMgcmV0dXJuIHdhcm5pbmcgaW4gTExWTU92ZXJyaWRlcy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAppbmRl
eCAxMTMzNDdhLi5iOGM3YTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBAIC0xNzcsNiArMTc3LDcgQEAgR2V0QnlJZFN0YXR1cyBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCiAgICAgICAgICAgICBjYXNlIENvbXBs
ZXhHZXRTdGF0dXM6OklubGluZWFibGU6IHsKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q2FsbExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzOwogICAgICAgICAgICAgICAgIHN3aXRj
aCAobGlzdC0+YXQobGlzdEluZGV4KS50eXBlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdl
dEJ5SWRBY2Nlc3M6OlNpbXBsZU1pc3M6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRCeUlkQWNj
ZXNzOjpTaW1wbGVJbmxpbmU6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRCeUlkQWNjZXNzOjpT
aW1wbGVTdHViOiB7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0dldEJ5SWRMaXN0LmgKaW5k
ZXggMjY1YjBhZC4uNDg2N2Q0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNHZXRCeUlkTGlzdC5oCkBAIC00Nyw3ICs0Nyw4IEBAIHB1
YmxpYzoKICAgICAgICAgU2ltcGxlU3R1YiwgLy8gVGhpcyBpcyBhIHN0dWIuCiAgICAgICAgIFdh
dGNoZWRTdHViLAogICAgICAgICBHZXR0ZXIsCi0gICAgICAgIEN1c3RvbUdldHRlcgorICAgICAg
ICBDdXN0b21HZXR0ZXIsCisgICAgICAgIFNpbXBsZU1pc3MsCiAgICAgfTsKICAgICAKICAgICBH
ZXRCeUlkQWNjZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDkw
ZDhmYWUuLjEzOTZiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAt
MjI4LDYgKzIyOCw3IEBAIHN0YXRpYyB2b2lkIGxpbmtSZXN0b3JlU2NyYXRjaChMaW5rQnVmZmVy
JiBwYXRjaEJ1ZmZlciwgYm9vbCBuZWVkVG9SZXN0b3JlU2NyYXRjCiAKIGVudW0gQnlJZFN0dWJL
aW5kIHsKICAgICBHZXRWYWx1ZSwKKyAgICBHZXRVbmRlZmluZWQsCiAgICAgQ2FsbEdldHRlciwK
ICAgICBDYWxsQ3VzdG9tR2V0dGVyLAogICAgIENhbGxTZXR0ZXIsCkBAIC0yMzksNiArMjQwLDgg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIHRvU3RyaW5nKEJ5SWRTdHViS2luZCBraW5kKQogICAgIHN3
aXRjaCAoa2luZCkgewogICAgIGNhc2UgR2V0VmFsdWU6CiAgICAgICAgIHJldHVybiAiR2V0VmFs
dWUiOworICAgIGNhc2UgR2V0VW5kZWZpbmVkOgorICAgICAgICByZXR1cm4gIkdldFVuZGVmaW5l
ZCI7CiAgICAgY2FzZSBDYWxsR2V0dGVyOgogICAgICAgICByZXR1cm4gIkNhbGxHZXR0ZXIiOwog
ICAgIGNhc2UgQ2FsbEN1c3RvbUdldHRlcjoKQEAgLTI1Nyw2ICsyNjAsOCBAQCBzdGF0aWMgQnlJ
ZFN0dWJLaW5kIGtpbmRGb3IoY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChz
bG90LmlzQ2FjaGVhYmxlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEdldFZhbHVlOworICAgIGlm
IChzbG90LmlzVW5zZXQoKSkKKyAgICAgICAgcmV0dXJuIEdldFVuZGVmaW5lZDsKICAgICBpZiAo
c2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpKQogICAgICAgICByZXR1cm4gQ2FsbEN1c3RvbUdldHRl
cjsKICAgICBSRUxFQVNFX0FTU0VSVChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpOwpAQCAtMzAx
LDcgKzMwNiw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlQnlJZFN0dWIoCiAgICAgICAgIHN0YXRp
Y19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVHUFIpKTsKICAgICBHUFJSZWcgc2Ny
YXRjaEdQUiA9IFRlbXBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzKS5n
ZXRGcmVlR1BSKCk7CiAgICAgYm9vbCBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IHNjcmF0Y2hHUFIg
PT0gSW52YWxpZEdQUlJlZzsKLSAgICBSRUxFQVNFX0FTU0VSVCghbmVlZFRvUmVzdG9yZVNjcmF0
Y2ggfHwga2luZCA9PSBHZXRWYWx1ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIW5lZWRUb1Jlc3Rv
cmVTY3JhdGNoIHx8IChraW5kID09IEdldFZhbHVlIHx8IGtpbmQgPT0gR2V0VW5kZWZpbmVkKSk7
CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQoJmV4ZWMtPnZtKCksIGV4ZWMtPmNvZGVC
bG9jaygpKTsKICAgICBpZiAobmVlZFRvUmVzdG9yZVNjcmF0Y2gpIHsKQEAgLTM2MSwyNCArMzY2
LDI4IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlQnlJZFN0dWIoCiAgICAgfQogICAgIAogICAgIGN1
cnJTdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cygqdm0sIG9m
ZnNldCk7Ci0gICAgR1BSUmVnIGJhc2VGb3JBY2Nlc3NHUFI7Ci0gICAgaWYgKGNoYWluKSB7Ci0g
ICAgICAgIC8vIFdlIGNvdWxkIGhhdmUgY2xvYmJlcmVkIHNjcmF0Y2hHUFIgZWFybGllciwgc28g
d2UgaGF2ZSB0byByZWxvYWQgZnJvbSBiYXNlR1BSIHRvIGdldCB0aGUgdGFyZ2V0LgotICAgICAg
ICBpZiAobG9hZFRhcmdldEZyb21Qcm94eSkKLSAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU1Byb3h5Ojp0YXJnZXRPZmZzZXQoKSks
IGJhc2VGb3JHZXRHUFIpOwotICAgICAgICBzdHViSml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIocHJvdG9PYmplY3QpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgYmFzZUZvckFj
Y2Vzc0dQUiA9IHNjcmF0Y2hHUFI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRm9yIHByb3h5
IG9iamVjdHMsIHdlIG5lZWQgdG8gZG8gYWxsIHRoZSBTdHJ1Y3R1cmUgY2hlY2tzIGJlZm9yZSBt
b3ZpbmcgdGhlIGJhc2VHUFIgaW50byAKLSAgICAgICAgLy8gYmFzZUZvckdldEdQUiBiZWNhdXNl
IGlmIHdlIGZhaWwgYW55IG9mIHRoZSBjaGVja3MgdGhlbiB3ZSB3b3VsZCBoYXZlIHRoZSB3cm9u
ZyB2YWx1ZSBpbiBiYXNlR1BSCi0gICAgICAgIC8vIG9uIHRoZSBzbG93IHBhdGguCi0gICAgICAg
IGlmIChsb2FkVGFyZ2V0RnJvbVByb3h5KQotICAgICAgICAgICAgc3R1YkppdC5tb3ZlKHNjcmF0
Y2hHUFIsIGJhc2VGb3JHZXRHUFIpOwotICAgICAgICBiYXNlRm9yQWNjZXNzR1BSID0gYmFzZUZv
ckdldEdQUjsKKyAgICBHUFJSZWcgYmFzZUZvckFjY2Vzc0dQUiA9IEludmFsaWRHUFJSZWc7Cisg
ICAgaWYgKGtpbmQgIT0gR2V0VW5kZWZpbmVkKSB7CisgICAgICAgIGlmIChjaGFpbikgeworICAg
ICAgICAgICAgLy8gV2UgY291bGQgaGF2ZSBjbG9iYmVyZWQgc2NyYXRjaEdQUiBlYXJsaWVyLCBz
byB3ZSBoYXZlIHRvIHJlbG9hZCBmcm9tIGJhc2VHUFIgdG8gZ2V0IHRoZSB0YXJnZXQuCisgICAg
ICAgICAgICBpZiAobG9hZFRhcmdldEZyb21Qcm94eSkKKyAgICAgICAgICAgICAgICBzdHViSml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNQcm94eTo6dGFyZ2V0
T2Zmc2V0KCkpLCBiYXNlRm9yR2V0R1BSKTsKKyAgICAgICAgICAgIHN0dWJKaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihwcm90b09iamVjdCksIHNjcmF0Y2hHUFIpOworICAg
ICAgICAgICAgYmFzZUZvckFjY2Vzc0dQUiA9IHNjcmF0Y2hHUFI7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyBGb3IgcHJveHkgb2JqZWN0cywgd2UgbmVlZCB0byBkbyBhbGwgdGhl
IFN0cnVjdHVyZSBjaGVja3MgYmVmb3JlIG1vdmluZyB0aGUgYmFzZUdQUiBpbnRvCisgICAgICAg
ICAgICAvLyBiYXNlRm9yR2V0R1BSIGJlY2F1c2UgaWYgd2UgZmFpbCBhbnkgb2YgdGhlIGNoZWNr
cyB0aGVuIHdlIHdvdWxkIGhhdmUgdGhlIHdyb25nIHZhbHVlIGluIGJhc2VHUFIKKyAgICAgICAg
ICAgIC8vIG9uIHRoZSBzbG93IHBhdGguCisgICAgICAgICAgICBpZiAobG9hZFRhcmdldEZyb21Q
cm94eSkKKyAgICAgICAgICAgICAgICBzdHViSml0Lm1vdmUoc2NyYXRjaEdQUiwgYmFzZUZvckdl
dEdQUik7CisgICAgICAgICAgICBiYXNlRm9yQWNjZXNzR1BSID0gYmFzZUZvckdldEdQUjsKKyAg
ICAgICAgfQogICAgIH0KIAogICAgIEdQUlJlZyBsb2FkZWRWYWx1ZUdQUiA9IEludmFsaWRHUFJS
ZWc7Ci0gICAgaWYgKGtpbmQgIT0gQ2FsbEN1c3RvbUdldHRlciAmJiBraW5kICE9IENhbGxDdXN0
b21TZXR0ZXIpIHsKKyAgICBpZiAoa2luZCA9PSBHZXRVbmRlZmluZWQpCisgICAgICAgIHN0dWJK
aXQubW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCB2YWx1ZVJlZ3MpOworICAgIGVsc2Ug
aWYgKGtpbmQgIT0gQ2FsbEN1c3RvbUdldHRlciAmJiBraW5kICE9IENhbGxDdXN0b21TZXR0ZXIp
IHsKICAgICAgICAgaWYgKGtpbmQgPT0gR2V0VmFsdWUpCiAgICAgICAgICAgICBsb2FkZWRWYWx1
ZUdQUiA9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCk7CiAgICAgICAgIGVsc2UKQEAgLTQxMiw3ICs0
MjEsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUJ5SWRTdHViKAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxDYWxsTGlua0luZm8+IGNhbGxMaW5rSW5mbzsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IHN1Y2Nlc3MsIGZhaWw7Ci0gICAgaWYgKGtpbmQgIT0gR2V0VmFsdWUpIHsKKyAgICBpZiAoa2lu
ZCAhPSBHZXRWYWx1ZSAmJiBraW5kICE9IEdldFVuZGVmaW5lZCkgewogICAgICAgICAvLyBOZWVk
IHRvIG1ha2Ugc3VyZSB0aGF0IHdoZW5ldmVyIHRoaXMgY2FsbCBpcyBtYWRlIGluIHRoZSBmdXR1
cmUsIHdlIHJlbWVtYmVyIHRoZQogICAgICAgICAvLyBwbGFjZSB0aGF0IHdlIG1hZGUgaXQgZnJv
bS4gSXQganVzdCBzbyBoYXBwZW5zIHRvIGJlIHRoZSBwbGFjZSB0aGF0IHdlIGFyZSBhdAogICAg
ICAgICAvLyByaWdodCBub3chCkBAIC03MzMsMTAgKzc0MiwxMiBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFs
dWUsIGNvbgogICAgIC8vIEZJWE1FOiBDYWNoZSBwcm9wZXJ0eSBhY2Nlc3MgZm9yIGltbWVkaWF0
ZXMuCiAgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBHaXZlVXBP
bkNhY2hlOworCisgICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlKCkgJiYgIXNsb3QuaXNVbnNldCgp
KQorICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKwogICAgIEpTQ2VsbCogYmFzZUNlbGwg
PSBiYXNlVmFsdWUuYXNDZWxsKCk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2Vs
bC0+c3RydWN0dXJlKCk7Ci0gICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlKCkpCi0gICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgSW5saW5lQ2FjaGVBY3Rpb24gYWN0aW9uID0gYWN0
aW9uRm9yQ2VsbCgqdm0sIGJhc2VDZWxsKTsKICAgICBpZiAoYWN0aW9uICE9IEF0dGVtcHRUb0Nh
Y2hlKQpAQCAtNzgzLDcgKzc5NCw3IEBAIHN0YXRpYyB2b2lkIHBhdGNoSnVtcFRvR2V0QnlJZFN0
dWIoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViCiBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYgKCFiYXNl
VmFsdWUuaXNDZWxsKCkKLSAgICAgICAgfHwgIXNsb3QuaXNDYWNoZWFibGUoKSkKKyAgICAgICAg
fHwgKCFzbG90LmlzQ2FjaGVhYmxlKCkgJiYgIXNsb3QuaXNVbnNldCgpKSkKICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7CiAKICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFz
Q2VsbCgpOwpAQCAtODA4LDIwICs4MTksMjMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwKICAg
ICAgICAgLy8gV2UgY2Fubm90IGRvIGFzIG11Y2ggaW5saW5lIGNhY2hpbmcgaWYgdGhlIHJlZ2lz
dGVycyB3ZXJlIG5vdCBmbHVzaGVkIHByaW9yIHRvIHRoaXMgR2V0QnlJZC4gSW4gcGFydGljdWxh
ciwKICAgICAgICAgLy8gbm9uLVZhbHVlIGNhY2hlZCBwcm9wZXJ0aWVzIHJlcXVpcmUgcGxhbnRp
bmcgY2FsbHMsIHdoaWNoIHJlcXVpcmVzIHJlZ2lzdGVycyB0byBoYXZlIGJlZW4gZmx1c2hlZC4g
VGh1cywKICAgICAgICAgLy8gaWYgcmVnaXN0ZXJzIHdlcmUgbm90IGZsdXNoZWQsIGRvbid0IGRv
IG5vbi1WYWx1ZSBjYWNoaW5nLgotICAgICAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGVWYWx1ZSgp
KQorICAgICAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFzbG90LmlzVW5zZXQo
KSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgIH0KLSAgICAKLSAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworCisgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5pc1Vuc2V0KCkgPyBpbnZhbGlkT2Zmc2V0IDogc2xvdC5j
YWNoZWRPZmZzZXQoKTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4gPSAwOwog
ICAgIHNpemVfdCBjb3VudCA9IDA7CiAgICAgCi0gICAgaWYgKHNsb3Quc2xvdEJhc2UoKSAhPSBi
YXNlVmFsdWUpIHsKKyAgICBpZiAoc2xvdC5pc1Vuc2V0KCkgfHwgc2xvdC5zbG90QmFzZSgpICE9
IGJhc2VWYWx1ZSkgewogICAgICAgICBpZiAodHlwZUluZm8ucHJvaGliaXRzUHJvcGVydHlDYWNo
aW5nKCkgfHwgc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOwotICAgICAgICAKLSAgICAgICAgY291bnQgPSBub3JtYWxpemVQcm90b3R5
cGVDaGFpbkZvckNoYWluQWNjZXNzKAotICAgICAgICAgICAgZXhlYywgYmFzZVZhbHVlLCBzbG90
LnNsb3RCYXNlKCksIGlkZW50LCBvZmZzZXQpOworCisgICAgICAgIGlmIChzbG90LmlzVW5zZXQo
KSkKKyAgICAgICAgICAgIGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFz
ZUNlbGwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb3VudCA9IG5vcm1hbGl6ZVByb3Rv
dHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoCisgICAgICAgICAgICAgICAgZXhlYywgYmFzZVZhbHVl
LCBzbG90LnNsb3RCYXNlKCksIGlkZW50LCBvZmZzZXQpOwogICAgICAgICBpZiAoY291bnQgPT0g
SW52YWxpZFByb3RvdHlwZUNoYWluKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7
CiAgICAgICAgIHByb3RvdHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVj
KTsKQEAgLTg0Myw2ICs4NTcsOCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5QnVpbGRH
ZXRCeUlETGlzdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLAogICAgIEdldEJ5
SWRBY2Nlc3M6OkFjY2Vzc1R5cGUgYWNjZXNzVHlwZTsKICAgICBpZiAoc2xvdC5pc0NhY2hlYWJs
ZVZhbHVlKCkpCiAgICAgICAgIGFjY2Vzc1R5cGUgPSBzbG90LndhdGNocG9pbnRTZXQoKSA/IEdl
dEJ5SWRBY2Nlc3M6OldhdGNoZWRTdHViIDogR2V0QnlJZEFjY2Vzczo6U2ltcGxlU3R1YjsKKyAg
ICBlbHNlIGlmIChzbG90LmlzVW5zZXQoKSkKKyAgICAgICAgYWNjZXNzVHlwZSA9IEdldEJ5SWRB
Y2Nlc3M6OlNpbXBsZU1pc3M7CiAgICAgZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigp
KQogICAgICAgICBhY2Nlc3NUeXBlID0gR2V0QnlJZEFjY2Vzczo6R2V0dGVyOwogICAgIGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggZjJi
Y2VhMS4uMDliOWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlTbG90LmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAgIEpTVmFsdWUgZ2V0VmFsdWUo
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKIAogICAgIGJvb2wgaXND
YWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlYWJpbGl0eSA9PSBDYWNoaW5nQWxsb3dl
ZCAmJiBtX29mZnNldCAhPSBpbnZhbGlkT2Zmc2V0OyB9CisgICAgYm9vbCBpc1Vuc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUgPT0gVHlwZVVuc2V0OyB9CiAgICAgYm9vbCBpc1Zh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUgPT0gVHlwZVZhbHVlOyB9CiAgICAg
Ym9vbCBpc0FjY2Vzc29yKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUdl
dHRlcjsgfQogICAgIGJvb2wgaXNDdXN0b20oKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VHlw
ZSA9PSBUeXBlQ3VzdG9tOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241321</attachid>
            <date>2014-11-10 17:09:48 -0800</date>
            <delta_ts>2014-11-10 19:10:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135578-3.diff</filename>
            <type>text/plain</type>
            <size>14600</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMTA2ZmU5Li4yMzI4NGU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTQtMTEt
MTAgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFRoZSBKSVQg
c2hvdWxkIGNhY2hlIHByb3BlcnR5IGxvb2t1cCBtaXNzZXMuCisgICAgICAgIDxodHRwczovL3dl
YmtpdC5vcmcvYi8xMzU1Nzg+CisKKyAgICAgICAgQWRkIGEgSlNSZWdyZXNzIHRlc3QgZm9yIGNh
Y2hpbmcgb2YgcHJvcGVydHkgbG9va3VwIG1pc3Nlcy4KKyAgICAgICAgVGhlcmUgYXJlIHRocmVl
IHN1YnRlc3RzOgorCisgICAgICAgICAgICAxLiBQdXJlIHNwZWVkIHRlc3QuCisgICAgICAgICAg
ICAyLiBUZXN0IGZvciB3aGVuIGEgcHJvcGVydHkgcHJldmlvdXNseSBjYWNoZWQgYXMgbWlzc2lu
ZyBzdWRkZW5seQorICAgICAgICAgICAgICAgYXBwZWFycyBvbiB0aGUgb2JqZWN0LgorICAgICAg
ICAgICAgMy4gU2FtZSBhcyAoMiksIGJ1dCBpdCBhcHBlYXJzIG9uIHRoZSBwcm90b3R5cGUuCisK
KyAgICAgICAgVGhlIHRlc3QgcnVucyB+NS41eCBmYXN0ZXIgd2l0aCB0aGUgb3B0aW1pemF0aW9u
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvdW5kZWZpbmVkLXByb3BlcnR5LWFjY2Vzcy5qczogQWRkZWQu
CisgICAgICAgIChmb28pOgorICAgICAgICAoYmFyKToKKyAgICAgICAgKGJheik6CisgICAgICAg
ICoganMvcmVncmVzcy91bmRlZmluZWQtcHJvcGVydHktYWNjZXNzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICoganMvcmVncmVzcy91bmRlZmluZWQtcHJvcGVydHktYWNjZXNzLmh0bWw6
IEFkZGVkLgorCiAyMDE0LTExLTA0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04ocjE3NDgyMyk6IFNldmVyYWwgdGVzdHMgZmFpbCBkdWUgdG8g
Y2FucGxheXRocm91Z2ggZmlyaW5nIGJlZm9yZSB0cmFja3MgYXJlIGF2YWlsYWJsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvdW5kZWZpbmVkLXByb3Bl
cnR5LWFjY2Vzcy5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3VuZGVm
aW5lZC1wcm9wZXJ0eS1hY2Nlc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uN2E2YTg0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3VuZGVmaW5lZC1wcm9wZXJ0eS1hY2Nlc3MuanMKQEAgLTAsMCArMSw0OCBAQAor
dmFyIHNvbWVHbG9iYWw7CisKKy8vIFRoaXMgaXMgYSBzaW1wbGUgc3BlZWQgdGVzdC4gSXQgc2hv
dWxkIGdvIGZhc3QuCisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICB2YXIgbXlPYmplY3QgPSB7fTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICAgICAgc29tZUds
b2JhbCA9IG15T2JqZWN0LnVuZGVmaW5lZFByb3BlcnR5OworICAgIH0KKyAgICByZXR1cm4gc29t
ZUdsb2JhbDsKK30KK3Jlc3VsdCA9IGZvbygpOworaWYgKHJlc3VsdCAhPSB1bmRlZmluZWQpCisg
ICAgdGhyb3cgIkJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisKKy8vIFRoaXMgdGVzdCBjaGVja3Mg
dGhhdCBhIGNhY2hlZCBwcm9wZXJ0eSBsb29rdXAgbWlzcyBkb2Vzbid0IGNvbnRpbnVlIHRvIGZp
cmUgd2hlbiB0aGUgcHJvcGVydHkgc3VkZGVubHkgYXBwZWFycyBvbiB0aGUgb2JqZWN0LgorCitm
dW5jdGlvbiBiYXIoKSB7CisgICAgdmFyIG15T2JqZWN0ID0ge307CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDAwMDA7ICsraSkgeworICAgICAgICBzb21lR2xvYmFsID0gbXlPYmplY3Qu
c29tZVByb3BlcnR5OworICAgICAgICBpZiAoaSA9PSA1MDAwMDAwMCkKKyAgICAgICAgICAgIG15
T2JqZWN0LnNvbWVQcm9wZXJ0eSA9IDE7CisgICAgfQorICAgIHJldHVybiBzb21lR2xvYmFsOwor
fQordmFyIHJlc3VsdCA9IGJhcigpOworaWYgKHJlc3VsdCAhPSAxKQorICAgIHRocm93ICJCYWQg
cmVzdWx0OiAiICsgcmVzdWx0Oworc29tZUdsb2JhbCA9IHVuZGVmaW5lZDsKKworLy8gVGhpcyB0
ZXN0IGNoZWNrcyB0aGF0IGEgY2FjaGVkIHByb3BlcnR5IGxvb2t1cCBtaXNzIGRvZXNuJ3QgY29u
dGludWUgdG8gZmlyZSB3aGVuIHRoZSBwcm9wZXJ0eSBzdWRkZW5seSBhcHBlYXJzIG9uIHRoZSBv
YmplY3QncyBwcm90b3R5cGUuCisKK2Z1bmN0aW9uIGJheigpIHsKKyAgICB2YXIgbXlQcm90b3R5
cGUgPSB7fQorICAgIHZhciBteU9iamVjdCA9IHt9OworICAgIG15T2JqZWN0Ll9fcHJvdG9fXyA9
IG15UHJvdG90eXBlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDAwOyArK2kpIHsK
KyAgICAgICAgc29tZUdsb2JhbCA9IG15T2JqZWN0LnNvbWVQcm9wZXJ0eTsKKyAgICAgICAgaWYg
KGkgPT0gNTAwMDAwMDApCisgICAgICAgICAgICBteVByb3RvdHlwZS5zb21lUHJvcGVydHkgPSAy
OworICAgIH0KKyAgICByZXR1cm4gc29tZUdsb2JhbDsKK30KK3ZhciByZXN1bHQgPSBiYXooKTsK
K2lmIChyZXN1bHQgIT0gMikKKyAgICB0aHJvdyAiQmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy91bmRlZmluZWQtcHJvcGVydHktYWNj
ZXNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvdW5kZWZpbmVkLXByb3Bl
cnR5LWFjY2Vzcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMTk1MWY3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvdW5k
ZWZpbmVkLXByb3BlcnR5LWFjY2Vzcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNS
ZWdyZXNzL3VuZGVmaW5lZC1wcm9wZXJ0eS1hY2Nlc3MKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvdW5kZWZpbmVkLXByb3BlcnR5LWFjY2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy91bmRlZmluZWQtcHJvcGVydHktYWNjZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMjQ0YzdlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvdW5kZWZpbmVkLXByb3BlcnR5LWFjY2Vzcy5odG1sCkBAIC0wLDAgKzEsMTIg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9y
ZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3VuZGVm
aW5lZC1wcm9wZXJ0eS1hY2Nlc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYTBlYmI5OS4uOTJlMTQ3NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTQtMTEtMTAgIEFuZHJlYXMgS2xpbmcgIDxh
a2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFRoZSBKSVQgc2hvdWxkIGNhY2hlIHByb3BlcnR5
IGxvb2t1cCBtaXNzZXMuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzU1Nzg+CisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlubGluZSBjYWNoaW5nIG9mIG1pc3NlZCBwcm9wZXJ0
eSBsb29rdXBzLgorICAgICAgICBQcmV2aW91c2x5IHRoaXMgd291bGQgYmFuaXNoIHVzIHRvIEMr
KyBzbG93IHBhdGguCisKKyAgICAgICAgSXQncyBpbXBsZW1lbnRlZCBhcyBhIHNpbXBsZSBHZXRC
eUlkIGNhY2hlIHRoYXQgcmV0dXJucyBqc1VuZGVmaW5lZCgpCisgICAgICAgIGFzIGxvbmcgYXMg
dGhlIFN0cnVjdHVyZSBjaGFpbiBjaGVjayBwYXNzZXMuIFRoZXJlJ3Mgbm8gREZHIGV4cGxvaXRh
dGlvbgorICAgICAgICBvZiB0aGlzIGtub3dsZWRnZSBpbiB0aGlzIHBhdGNoLgorCisgICAgICAg
IFRlc3Q6IGpzL3JlZ3Jlc3MvdW5kZWZpbmVkLXByb3BlcnR5LWFjY2Vzcy5qcyAofjUuNXggc3Bl
ZWR1cCkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGJ5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaDoKKyAgICAgICAgKiBieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
clN0dWJJbmZvKToKKworICAgICAgICAgICAgQWRkIEdldEJ5SWRBY2Nlc3M6OlNpbXBsZU1pc3Mg
c28gd2UgY2FuIGNvbW11bmljYXRlIHRvIHRoZSBERkcgdGhhdAorICAgICAgICAgICAgdGhlIGFj
Y2VzcyBoYXMgYmVlbiBjYWNoZWQuCisKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAg
ICAgIChKU0M6OnRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6a2luZEZvcik6CisgICAgICAgIChK
U0M6OmdlbmVyYXRlQnlJZFN0dWIpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgor
ICAgICAgICAoSlNDOjp0cnlCdWlsZEdldEJ5SURMaXN0KToKKworICAgICAgICAgICAgQWRkZWQg
YSBHZXRVbmRlZmluZWQgc3R1YiBraW5kLCBqdXN0IGEgc2ltcGxlICJzdG9yZSBqc1VuZGVmaW5l
ZCgpIiBzbmlwcGV0LgorICAgICAgICAgICAgVXNlIHRoaXMgdG8gY2FjaGUgbWlzc2VkIGxvb2t1
cHMsIHBpZ2d5YmFja2luZyBtb3N0bHkgb24gdGhlIEdldFZhbHVlIGtpbmQuCisKKyAgICAgICAg
KiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6Omlz
VW5zZXQpOgorCisgICAgICAgICAgICBFeHBvc2VkIHRoZSB1bnNldCBzdGF0ZSBzbyBQcm9wZXJ0
eVNsb3QgY2FuIGNvbW11bmljYXRlIHRoYXQgbG9va3VwIGZhaWxlZC4KKwogMjAxNC0xMS0wOSAg
QWtvcyBLaXNzICA8YWtpc3NAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIEZpeCAnbm9yZXR1
cm4nIGZ1bmN0aW9uIGRvZXMgcmV0dXJuIHdhcm5pbmcgaW4gTExWTU92ZXJyaWRlcy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAppbmRl
eCAxMTMzNDdhLi5lODNhZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBAIC0xODksNiArMTg5LDcgQEAgR2V0QnlJZFN0YXR1cyBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqc3R1Yi0+bV9jYWxsTGlua0luZm8sIGNhbGxF
eGl0U2l0ZURhdGEpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR2V0QnlJZEFjY2Vzczo6U2ltcGxlTWlzczoKICAg
ICAgICAgICAgICAgICBjYXNlIEdldEJ5SWRBY2Nlc3M6OkN1c3RvbUdldHRlcjoKICAgICAgICAg
ICAgICAgICBjYXNlIEdldEJ5SWRBY2Nlc3M6OldhdGNoZWRTdHViOnsKICAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIHRvdGFsbHkgc3dlZXQgdG8gc3VwcG9ydCB0aGlz
IGF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0dldEJ5SWRMaXN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNHZXRCeUlkTGlzdC5oCmluZGV4IDI2NWIwYWQu
LjQ4NjdkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
bW9ycGhpY0dldEJ5SWRMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljR2V0QnlJZExpc3QuaApAQCAtNDcsNyArNDcsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIFNpbXBsZVN0dWIsIC8vIFRoaXMgaXMgYSBzdHViLgogICAgICAgICBXYXRjaGVkU3R1YiwK
ICAgICAgICAgR2V0dGVyLAotICAgICAgICBDdXN0b21HZXR0ZXIKKyAgICAgICAgQ3VzdG9tR2V0
dGVyLAorICAgICAgICBTaW1wbGVNaXNzLAogICAgIH07CiAgICAgCiAgICAgR2V0QnlJZEFjY2Vz
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA5MGQ4ZmFlLi4xMzk2
YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTIyOCw2ICsyMjgs
NyBAQCBzdGF0aWMgdm9pZCBsaW5rUmVzdG9yZVNjcmF0Y2goTGlua0J1ZmZlciYgcGF0Y2hCdWZm
ZXIsIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0YwogCiBlbnVtIEJ5SWRTdHViS2luZCB7CiAgICAg
R2V0VmFsdWUsCisgICAgR2V0VW5kZWZpbmVkLAogICAgIENhbGxHZXR0ZXIsCiAgICAgQ2FsbEN1
c3RvbUdldHRlciwKICAgICBDYWxsU2V0dGVyLApAQCAtMjM5LDYgKzI0MCw4IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiB0b1N0cmluZyhCeUlkU3R1YktpbmQga2luZCkKICAgICBzd2l0Y2ggKGtpbmQp
IHsKICAgICBjYXNlIEdldFZhbHVlOgogICAgICAgICByZXR1cm4gIkdldFZhbHVlIjsKKyAgICBj
YXNlIEdldFVuZGVmaW5lZDoKKyAgICAgICAgcmV0dXJuICJHZXRVbmRlZmluZWQiOwogICAgIGNh
c2UgQ2FsbEdldHRlcjoKICAgICAgICAgcmV0dXJuICJDYWxsR2V0dGVyIjsKICAgICBjYXNlIENh
bGxDdXN0b21HZXR0ZXI6CkBAIC0yNTcsNiArMjYwLDggQEAgc3RhdGljIEJ5SWRTdHViS2luZCBr
aW5kRm9yKGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAoc2xvdC5pc0NhY2hl
YWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBHZXRWYWx1ZTsKKyAgICBpZiAoc2xvdC5pc1Vu
c2V0KCkpCisgICAgICAgIHJldHVybiBHZXRVbmRlZmluZWQ7CiAgICAgaWYgKHNsb3QuaXNDYWNo
ZWFibGVDdXN0b20oKSkKICAgICAgICAgcmV0dXJuIENhbGxDdXN0b21HZXR0ZXI7CiAgICAgUkVM
RUFTRV9BU1NFUlQoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKTsKQEAgLTMwMSw3ICszMDYsNyBA
QCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUJ5SWRTdHViKAogICAgICAgICBzdGF0aWNfY2FzdDxHUFJS
ZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlR1BSKSk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBU
ZW1wUmVnaXN0ZXJTZXQoc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigp
OwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBzY3JhdGNoR1BSID09IEludmFsaWRH
UFJSZWc7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIW5lZWRUb1Jlc3RvcmVTY3JhdGNoIHx8IGtpbmQg
PT0gR2V0VmFsdWUpOworICAgIFJFTEVBU0VfQVNTRVJUKCFuZWVkVG9SZXN0b3JlU2NyYXRjaCB8
fCAoa2luZCA9PSBHZXRWYWx1ZSB8fCBraW5kID09IEdldFVuZGVmaW5lZCkpOwogICAgIAogICAg
IENDYWxsSGVscGVycyBzdHViSml0KCZleGVjLT52bSgpLCBleGVjLT5jb2RlQmxvY2soKSk7CiAg
ICAgaWYgKG5lZWRUb1Jlc3RvcmVTY3JhdGNoKSB7CkBAIC0zNjEsMjQgKzM2NiwyOCBAQCBzdGF0
aWMgdm9pZCBnZW5lcmF0ZUJ5SWRTdHViKAogICAgIH0KICAgICAKICAgICBjdXJyU3RydWN0dXJl
LT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHMoKnZtLCBvZmZzZXQpOwotICAg
IEdQUlJlZyBiYXNlRm9yQWNjZXNzR1BSOwotICAgIGlmIChjaGFpbikgewotICAgICAgICAvLyBX
ZSBjb3VsZCBoYXZlIGNsb2JiZXJlZCBzY3JhdGNoR1BSIGVhcmxpZXIsIHNvIHdlIGhhdmUgdG8g
cmVsb2FkIGZyb20gYmFzZUdQUiB0byBnZXQgdGhlIHRhcmdldC4KLSAgICAgICAgaWYgKGxvYWRU
YXJnZXRGcm9tUHJveHkpCi0gICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNQcm94eTo6dGFyZ2V0T2Zmc2V0KCkpLCBiYXNlRm9yR2V0
R1BSKTsKLSAgICAgICAgc3R1YkppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHByb3RvT2JqZWN0KSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIGJhc2VGb3JBY2Nlc3NHUFIgPSBz
Y3JhdGNoR1BSOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEZvciBwcm94eSBvYmplY3RzLCB3
ZSBuZWVkIHRvIGRvIGFsbCB0aGUgU3RydWN0dXJlIGNoZWNrcyBiZWZvcmUgbW92aW5nIHRoZSBi
YXNlR1BSIGludG8gCi0gICAgICAgIC8vIGJhc2VGb3JHZXRHUFIgYmVjYXVzZSBpZiB3ZSBmYWls
IGFueSBvZiB0aGUgY2hlY2tzIHRoZW4gd2Ugd291bGQgaGF2ZSB0aGUgd3JvbmcgdmFsdWUgaW4g
YmFzZUdQUgotICAgICAgICAvLyBvbiB0aGUgc2xvdyBwYXRoLgotICAgICAgICBpZiAobG9hZFRh
cmdldEZyb21Qcm94eSkKLSAgICAgICAgICAgIHN0dWJKaXQubW92ZShzY3JhdGNoR1BSLCBiYXNl
Rm9yR2V0R1BSKTsKLSAgICAgICAgYmFzZUZvckFjY2Vzc0dQUiA9IGJhc2VGb3JHZXRHUFI7Cisg
ICAgR1BSUmVnIGJhc2VGb3JBY2Nlc3NHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChraW5k
ICE9IEdldFVuZGVmaW5lZCkgeworICAgICAgICBpZiAoY2hhaW4pIHsKKyAgICAgICAgICAgIC8v
IFdlIGNvdWxkIGhhdmUgY2xvYmJlcmVkIHNjcmF0Y2hHUFIgZWFybGllciwgc28gd2UgaGF2ZSB0
byByZWxvYWQgZnJvbSBiYXNlR1BSIHRvIGdldCB0aGUgdGFyZ2V0LgorICAgICAgICAgICAgaWYg
KGxvYWRUYXJnZXRGcm9tUHJveHkpCisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTUHJveHk6OnRhcmdldE9mZnNldCgpKSwg
YmFzZUZvckdldEdQUik7CisgICAgICAgICAgICBzdHViSml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIocHJvdG9PYmplY3QpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGJh
c2VGb3JBY2Nlc3NHUFIgPSBzY3JhdGNoR1BSOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gRm9yIHByb3h5IG9iamVjdHMsIHdlIG5lZWQgdG8gZG8gYWxsIHRoZSBTdHJ1Y3R1cmUg
Y2hlY2tzIGJlZm9yZSBtb3ZpbmcgdGhlIGJhc2VHUFIgaW50bworICAgICAgICAgICAgLy8gYmFz
ZUZvckdldEdQUiBiZWNhdXNlIGlmIHdlIGZhaWwgYW55IG9mIHRoZSBjaGVja3MgdGhlbiB3ZSB3
b3VsZCBoYXZlIHRoZSB3cm9uZyB2YWx1ZSBpbiBiYXNlR1BSCisgICAgICAgICAgICAvLyBvbiB0
aGUgc2xvdyBwYXRoLgorICAgICAgICAgICAgaWYgKGxvYWRUYXJnZXRGcm9tUHJveHkpCisgICAg
ICAgICAgICAgICAgc3R1YkppdC5tb3ZlKHNjcmF0Y2hHUFIsIGJhc2VGb3JHZXRHUFIpOworICAg
ICAgICAgICAgYmFzZUZvckFjY2Vzc0dQUiA9IGJhc2VGb3JHZXRHUFI7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBHUFJSZWcgbG9hZGVkVmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgIGlm
IChraW5kICE9IENhbGxDdXN0b21HZXR0ZXIgJiYga2luZCAhPSBDYWxsQ3VzdG9tU2V0dGVyKSB7
CisgICAgaWYgKGtpbmQgPT0gR2V0VW5kZWZpbmVkKQorICAgICAgICBzdHViSml0Lm1vdmVUcnVz
dGVkVmFsdWUoanNVbmRlZmluZWQoKSwgdmFsdWVSZWdzKTsKKyAgICBlbHNlIGlmIChraW5kICE9
IENhbGxDdXN0b21HZXR0ZXIgJiYga2luZCAhPSBDYWxsQ3VzdG9tU2V0dGVyKSB7CiAgICAgICAg
IGlmIChraW5kID09IEdldFZhbHVlKQogICAgICAgICAgICAgbG9hZGVkVmFsdWVHUFIgPSB2YWx1
ZVJlZ3MucGF5bG9hZEdQUigpOwogICAgICAgICBlbHNlCkBAIC00MTIsNyArNDIxLDcgQEAgc3Rh
dGljIHZvaWQgZ2VuZXJhdGVCeUlkU3R1YigKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtJ
bmZvPiBjYWxsTGlua0luZm87CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzLCBm
YWlsOwotICAgIGlmIChraW5kICE9IEdldFZhbHVlKSB7CisgICAgaWYgKGtpbmQgIT0gR2V0VmFs
dWUgJiYga2luZCAhPSBHZXRVbmRlZmluZWQpIHsKICAgICAgICAgLy8gTmVlZCB0byBtYWtlIHN1
cmUgdGhhdCB3aGVuZXZlciB0aGlzIGNhbGwgaXMgbWFkZSBpbiB0aGUgZnV0dXJlLCB3ZSByZW1l
bWJlciB0aGUKICAgICAgICAgLy8gcGxhY2UgdGhhdCB3ZSBtYWRlIGl0IGZyb20uIEl0IGp1c3Qg
c28gaGFwcGVucyB0byBiZSB0aGUgcGxhY2UgdGhhdCB3ZSBhcmUgYXQKICAgICAgICAgLy8gcmln
aHQgbm93IQpAQCAtNzMzLDEwICs3NDIsMTIgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KICAg
ICAvLyBGSVhNRTogQ2FjaGUgcHJvcGVydHkgYWNjZXNzIGZvciBpbW1lZGlhdGVzLgogICAgIGlm
ICghYmFzZVZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKwor
ICAgIGlmICghc2xvdC5pc0NhY2hlYWJsZSgpICYmICFzbG90LmlzVW5zZXQoKSkKKyAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVl
LmFzQ2VsbCgpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVy
ZSgpOwotICAgIGlmICghc2xvdC5pc0NhY2hlYWJsZSgpKQotICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKIAogICAgIElubGluZUNhY2hlQWN0aW9uIGFjdGlvbiA9IGFjdGlvbkZvckNlbGwo
KnZtLCBiYXNlQ2VsbCk7CiAgICAgaWYgKGFjdGlvbiAhPSBBdHRlbXB0VG9DYWNoZSkKQEAgLTc4
Myw3ICs3OTQsNyBAQCBzdGF0aWMgdm9pZCBwYXRjaEp1bXBUb0dldEJ5SWRTdHViKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Ygogc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIGlmICghYmFzZVZhbHVlLmlzQ2Vs
bCgpCi0gICAgICAgIHx8ICFzbG90LmlzQ2FjaGVhYmxlKCkpCisgICAgICAgIHx8ICghc2xvdC5p
c0NhY2hlYWJsZSgpICYmICFzbG90LmlzVW5zZXQoKSkpCiAgICAgICAgIHJldHVybiBHaXZlVXBP
bkNhY2hlOwogCiAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKQEAg
LTgwOCwyMCArODE5LDIzIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlCdWlsZEdldEJ5
SURMaXN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsCiAgICAgICAgIC8vIFdl
IGNhbm5vdCBkbyBhcyBtdWNoIGlubGluZSBjYWNoaW5nIGlmIHRoZSByZWdpc3RlcnMgd2VyZSBu
b3QgZmx1c2hlZCBwcmlvciB0byB0aGlzIEdldEJ5SWQuIEluIHBhcnRpY3VsYXIsCiAgICAgICAg
IC8vIG5vbi1WYWx1ZSBjYWNoZWQgcHJvcGVydGllcyByZXF1aXJlIHBsYW50aW5nIGNhbGxzLCB3
aGljaCByZXF1aXJlcyByZWdpc3RlcnMgdG8gaGF2ZSBiZWVuIGZsdXNoZWQuIFRodXMsCiAgICAg
ICAgIC8vIGlmIHJlZ2lzdGVycyB3ZXJlIG5vdCBmbHVzaGVkLCBkb24ndCBkbyBub24tVmFsdWUg
Y2FjaGluZy4KLSAgICAgICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSkKKyAgICAgICAg
aWYgKCFzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhc2xvdC5pc1Vuc2V0KCkpCiAgICAgICAg
ICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICB9Ci0gICAgCi0gICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKworICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHNsb3QuaXNVbnNldCgpID8gaW52YWxpZE9mZnNldCA6IHNsb3QuY2FjaGVkT2Zmc2V0
KCk7CiAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluID0gMDsKICAgICBzaXplX3Qg
Y291bnQgPSAwOwogICAgIAotICAgIGlmIChzbG90LnNsb3RCYXNlKCkgIT0gYmFzZVZhbHVlKSB7
CisgICAgaWYgKHNsb3QuaXNVbnNldCgpIHx8IHNsb3Quc2xvdEJhc2UoKSAhPSBiYXNlVmFsdWUp
IHsKICAgICAgICAgaWYgKHR5cGVJbmZvLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpIHx8IHN0
cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKLSAgICAgICAgCi0gICAgICAgIGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW5Gb3JD
aGFpbkFjY2VzcygKLSAgICAgICAgICAgIGV4ZWMsIGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFzZSgp
LCBpZGVudCwgb2Zmc2V0KTsKKworICAgICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkpCisgICAgICAg
ICAgICBjb3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZv
ckNoYWluQWNjZXNzKAorICAgICAgICAgICAgICAgIGV4ZWMsIGJhc2VWYWx1ZSwgc2xvdC5zbG90
QmFzZSgpLCBpZGVudCwgb2Zmc2V0KTsKICAgICAgICAgaWYgKGNvdW50ID09IEludmFsaWRQcm90
b3R5cGVDaGFpbikKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICBw
cm90b3R5cGVDaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CkBAIC04NDMs
NiArODU3LDggQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUJ1aWxkR2V0QnlJRExpc3Qo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwKICAgICBHZXRCeUlkQWNjZXNzOjpB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGU7CiAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpKQog
ICAgICAgICBhY2Nlc3NUeXBlID0gc2xvdC53YXRjaHBvaW50U2V0KCkgPyBHZXRCeUlkQWNjZXNz
OjpXYXRjaGVkU3R1YiA6IEdldEJ5SWRBY2Nlc3M6OlNpbXBsZVN0dWI7CisgICAgZWxzZSBpZiAo
c2xvdC5pc1Vuc2V0KCkpCisgICAgICAgIGFjY2Vzc1R5cGUgPSBHZXRCeUlkQWNjZXNzOjpTaW1w
bGVNaXNzOwogICAgIGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSkKICAgICAgICAg
YWNjZXNzVHlwZSA9IEdldEJ5SWRBY2Nlc3M6OkdldHRlcjsKICAgICBlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmluZGV4IGYyYmNlYTEuLjA5Yjli
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBA
IC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlIGdldFZhbHVlKEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAKICAgICBib29sIGlzQ2FjaGVhYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWFiaWxpdHkgPT0gQ2FjaGluZ0FsbG93ZWQgJiYgbV9vZmZz
ZXQgIT0gaW52YWxpZE9mZnNldDsgfQorICAgIGJvb2wgaXNVbnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvcGVydHlUeXBlID09IFR5cGVVbnNldDsgfQogICAgIGJvb2wgaXNWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvcGVydHlUeXBlID09IFR5cGVWYWx1ZTsgfQogICAgIGJvb2wgaXNBY2Nl
c3NvcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUeXBlID09IFR5cGVHZXR0ZXI7IH0KICAg
ICBib29sIGlzQ3VzdG9tKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUN1
c3RvbTsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>