<?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>72255</bug_id>
          
          <creation_ts>2011-11-14 03:17:02 -0800</creation_ts>
          <short_desc>Make CodeGeneratorJS.pm generate Event constructors</short_desc>
          <delta_ts>2011-11-17 06:39:18 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>72577</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>71379</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dominicc</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>501767</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-14 03:17:02 -0800</bug_when>
    <thetext>Now CodeGeneratorV8.pm can generate Event constructors using [ConstructorTemplate=Event] IDL (bug 72055). CodeGeneratorJS.pm should also generate the Event constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501774</commentid>
    <comment_count>1</comment_count>
      <attachid>114911</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-14 03:39:16 -0800</bug_when>
    <thetext>Created attachment 114911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501950</commentid>
    <comment_count>2</comment_count>
      <attachid>114911</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-14 08:48:09 -0800</bug_when>
    <thetext>Comment on attachment 114911
Patch

Looks like the win-ews is red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502054</commentid>
    <comment_count>3</comment_count>
      <attachid>114975</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-14 10:21:39 -0800</bug_when>
    <thetext>Created attachment 114975
Try again to see if build succeeds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502855</commentid>
    <comment_count>4</comment_count>
      <attachid>115152</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-15 06:23:38 -0800</bug_when>
    <thetext>Created attachment 115152
Try again to see if the win build looks happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502884</commentid>
    <comment_count>5</comment_count>
      <attachid>115159</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-15 07:04:15 -0800</bug_when>
    <thetext>Created attachment 115159
To see if win build looks happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504137</commentid>
    <comment_count>6</comment_count>
      <attachid>115422</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-16 12:30:13 -0800</bug_when>
    <thetext>Created attachment 115422
Another try</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504260</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-16 14:30:24 -0800</bug_when>
    <thetext>Adam: The patch has not yet passed win build... The problem seems to be related to how a template definition in a header file (i.e. JSDictionary::tryGetProperty) is treated when we try to separately compile cpp files which are using the header file and link them. 

By the way, this problem is just a &quot;temporal&quot; problem. If we land all the patches for bug 71379 and thus JSEventConstructors.cpp is removed, this problem will go away. (No error is occurring in win build with the WIP patch for bug 71379.) In summary, trying to address this problem is not so important in the end.

So is it OK to give up this patch and land the WIP patch for bug 71379 at a breath? (If it is OK, I will create a new bug for it and upload the patch for review again.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504402</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-16 16:56:58 -0800</bug_when>
    <thetext>Sure.  That&apos;s fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504809</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-17 06:39:18 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 72577 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114911</attachid>
            <date>2011-11-14 03:39:16 -0800</date>
            <delta_ts>2011-11-14 08:48:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>17735</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OWZjMjE0Li40OGEyNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDMg
QEAKIDIwMTEtMTEtMTQgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIE1ha2UgQ29kZUdlbmVyYXRvckpTLnBtIGdlbmVyYXRlIEV2ZW50IGNvbnN0cnVjdG9y
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIyNTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgQ29k
ZUdlbmVyYXRvclY4LnBtIGNhbiBnZW5lcmF0ZSBFdmVudCBjb25zdHJ1Y3RvcnMgdXNpbmcKKyAg
ICAgICAgW0NvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnRdIElETCAoYnVnIDcyMDU1KS4KKyAgICAg
ICAgVGhpcyBwYXRjaCBtYWtlcyBDb2RlR2VuZXJhdG9ySlMucG0gYWxzbyBnZW5lcmF0ZSB0aGUg
RXZlbnQgY29uc3RydWN0b3JzCisgICAgICAgIGFuZCByZXBsYWNlcyBhIGN1c3RvbSBjb25zdHJ1
Y3RvciBvZiBFdmVudCB3aXRoIHRoZSBnZW5lcmF0ZWQgb25lLgorICAgICAgICBBZnRlciB0aGlz
IHBhdGNoIGlzIGxhbmRlZCB3aXRob3V0IHJlZ3Jlc3Npb25zLAorICAgICAgICBJIHdpbGwgcmVw
bGFjZSBjdXN0b20gY29uc3RydWN0b3JzIG9mIGFsbCBvdGhlciBFdmVudHMgaW4gSlNDLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvZXZlbnQtY29uc3RydWN0b3Jz
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9jdXN0b20tZXZl
bnQtY29uc3RydWN0b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvY29uc3RydWN0
b3JzL3Byb2dyZXNzLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBB
ZGRlZCBKU0RpY3Rpb25hcnkuaC4KKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJh
dGlvbik6IEFkZGVkIGEgaGVhZGVyIGZvciBmaWxsWFhYWEV2ZW50SW5pdCguLi4pLgorICAgICAg
ICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOiBHZW5lcmF0ZXMgYW4gRXZlbnQgY29u
c3RydWN0b3IuIFRoZSBnZW5lcmF0ZWQgY29kZSBpcyB0aGUgc2FtZSBhcyB0aGUgY29kZSB0aGF0
IGhhZCBiZWVuIHdyaXR0ZW4gaW4gSlNFdmVudENvbnN0cnVjdG9ycy5jcHAuCisgICAgICAgIChJ
c0NvbnN0cnVjdGFibGUpOiBKdWRnZXMgaWYgYSBnaXZlbiBpbnRlcmZhY2UgaXMgY29uc3RydWN0
YWJsZS4KKyAgICAgICAgKElzQ29uc3RydWN0b3JUZW1wbGF0ZSk6IEp1ZGdlcyBpZiBhIGdpdmVu
IGludGVyZmFjZSBoYXMgYSBnaXZlbiB0ZW1wbGF0ZSwgZS5nLiBqdWRnZXMgaWYgYW4gaW50ZXJm
YWNlIGhhcyBbQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudF0uCisKKyAgICAgICAgKiBiaW5kaW5n
cy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmg6IFJlbW92ZWQgYSBjdXN0b20gY29uc3RydWN0
b3Igb2YgRXZlbnQuCisgICAgICAgICogZG9tL0V2ZW50LmlkbDogSW4gZXNzZW5jZSwgcmVwbGFj
ZWQgW0pTQ3VzdG9tQ29uc3RydWN0b3JdIElETCB3aXRoIFtKU0NvbnN0cnVjdG9yVGVtcGxhdGU9
RXZlbnRdIElETC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXZlbnRD
b25zdHJ1Y3Rvci5pZGw6IENoYW5nZWQgJ0N1c3RvbUNvbnN0cnVjdG9yPUV2ZW50JyB0byAnQ29u
c3RydWN0b3JUZW1wbGF0ZT1FdmVudCcuIFdlIHNob3VsZCBoYXZlIGNoYW5nZWQgdGhpcyBpbiBy
MTAwMTA4LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmNwcDogVXBkYXRlZCBhIHJ1bi1iaW5kaW5ncy10ZXN0cyByZXN1bHQuCisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFRlc3RFdmVu
dENvbnN0cnVjdG9ySW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50Q29uc3RydWN0b3IuaDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6ZmlsbFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaDogRGl0dG8u
CisKKzIwMTEtMTEtMTQgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCiAg
ICAgICAgIFJlbW92ZSBhbGwgY3VzdG9tIGNvbnN0cnVjdG9ycyBvZiBFdmVudHMgaW4gVjgKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDc0CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvRXZlbnRDb25zdHJ1Y3Rv
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvRXZlbnRDb25zdHJ1Y3RvcnMu
aAppbmRleCBkYTAxOGIzLi44MmIzMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9FdmVudENvbnN0cnVjdG9ycy5oCkBAIC0xNDYsNyArMTQ2LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNkZWZpbmUgSU5TVEFOVElBVEVfQUxMX0VWRU5U
X0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUlMoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9F
TkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpIFwKLSAgICBJTlNUQU5U
SUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX0VWRU5UKERJQ1RJT05BUllfU1RBUlQs
IERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBc
CiAgICAgSU5TVEFOVElBVEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9DVVNUT01fRVZF
TlQoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJ
RVMsIEZJTExfUFJPUEVSVFkpIFwKICAgICBJTlNUQU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RS
VUNUT1JfRk9SX1BST0dSRVNTX0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5E
LCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBcCiAgICAgSU5TVEFOVElB
VEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9XRUJLSVRfQU5JTUFUSU9OX0VWRU5UKERJ
Q1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBG
SUxMX1BST1BFUlRZKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDI1MDA1NjIuLmQ0NTdiZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC03MjMs
NiArNzIzLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAgQWRkQ2xhc3NGb3J3
YXJkSWZOZWVkZWQoIkpTRE9NV2luZG93U2hlbGwiKSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRE9N
V2luZG93IjsKKyAgICBBZGRDbGFzc0ZvcndhcmRJZk5lZWRlZCgiSlNEaWN0aW9uYXJ5IikgaWYg
SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwgIkV2ZW50Iik7CiAKICAgICAjIENsYXNz
IGRlY2xhcmF0aW9uCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzICRjbGFzc05hbWUg
OiBwdWJsaWMgJHBhcmVudENsYXNzTmFtZSB7XG4iKTsKQEAgLTEwNzIsNyArMTA3Myw3IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJPbWl0Q29uc3RydWN0b3IifSkgewogICAgICAgICAkaGVhZGVySW5jbHVkZXN7IkpTRE9N
QmluZGluZy5oIn0gPSAxOwotICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24o
XEBoZWFkZXJDb250ZW50LCAkY2xhc3NOYW1lLCAkZGF0YU5vZGUpOworICAgICAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBoZWFkZXJDb250ZW50LCAkY2xhc3NOYW1lLCAkZGF0
YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICB9CiAKICAgICBpZiAoJG51bUZ1bmN0aW9ucyA+
IDApIHsKQEAgLTMxODksOSArMzE5MCw5IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFy
YXRpb24KICAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKICAgICBteSAkY2xhc3NOYW1lID0g
c2hpZnQ7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5hbWUg
PSBzaGlmdDsKIAogICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICIke2NsYXNzTmFtZX1D
b25zdHJ1Y3RvciI7Ci0gICAgbXkgJGNhbkNvbnN0cnVjdCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn07CiAgICAgbXkgJGNhbGxXaXRoID0gJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKIAogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgImNsYXNzICR7Y29uc3RydWN0b3JDbGFzc05hbWV9IDogcHVibGljIERPTUNvbnN0cnVj
dG9yT2JqZWN0IHtcbiIpOwpAQCAtMzIyMCwxMSArMzIyMSwxNSBAQCBzdWIgR2VuZXJhdGVDb25z
dHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAicHJvdGVjdGVkOlxu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJ
bXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxh
Z3M7XG4iKTsKIAotICAgIGlmICgkY2FuQ29uc3RydWN0KSB7CisgICAgaWYgKElzQ29uc3RydWN0
YWJsZSgkZGF0YU5vZGUpKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0
aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdCR7Y2xhc3NOYW1l
fShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwq
LCBKU0M6OkNvbnN0cnVjdERhdGEmKTtcbiIpOwogICAgIH0KICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ9O1xuXG4iKTsKKworICAgIGlmIChJc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGRhdGFOb2Rl
LCAiRXZlbnQiKSkgeworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sIGZpbGwke2lu
dGVyZmFjZU5hbWV9SW5pdCgke2ludGVyZmFjZU5hbWV9SW5pdCYsIEpTRGljdGlvbmFyeSYpO1xu
XG4iKTsKKyAgICB9CiB9CiAKIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgpAQCAt
MzI2OSw4ICszMjc0LDcyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9y
PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9LCBKU0RPTVdyYXBwZXI+KGV4ZWMsICYke2NvbnN0cnVj
dG9yQ2xhc3NOYW1lfVRhYmxlLCBzdGF0aWNfY2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+
KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7XG4iKTsKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ9XG5cbiIpOwogCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgaWYgKCEoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0pKSB7CisgICAgaWYgKElzQ29uc3Ry
dWN0YWJsZSgkZGF0YU5vZGUpKSB7CisgICAgICAgIGlmIChJc0NvbnN0cnVjdG9yVGVtcGxhdGUo
JGRhdGFOb2RlLCAiRXZlbnQiKSkgeworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNEaWN0
aW9uYXJ5LmgifSA9IDE7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJv
ci5oPiJ9ID0gMTsKKworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCA8PEVORCk7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25z
dHJ1Y3Qke2NsYXNzTmFtZX0oRXhlY1N0YXRlKiBleGVjKQoreworICAgICR7Y29uc3RydWN0b3JD
bGFzc05hbWV9KiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0qPihleGVjLT5jYWxsZWUoKSk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBl
eGVjdXRpb25Db250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OworICAgIGlmICghZXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiQ29uc3RydWN0b3IgYXNzb2NpYXRl
ZCBleGVjdXRpb24gY29udGV4dCBpcyB1bmF2YWlsYWJsZSIpKTsKKworICAgIEF0b21pY1N0cmlu
ZyBldmVudFR5cGUgPSB1c3RyaW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgICR7aW50ZXJmYWNlTmFt
ZX1Jbml0IGV2ZW50SW5pdDsKKworICAgIEpTVmFsdWUgaW5pdGlhbGl6ZXJWYWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDEpOworICAgIGlmICghaW5pdGlhbGl6ZXJWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CisgICAgICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlz
IHlpZWxkIGFuIG9iamVjdC4KKyAgICAgICAgSlNPYmplY3QqIGluaXRpYWxpemVyT2JqZWN0ID0g
aW5pdGlhbGl6ZXJWYWx1ZS50b09iamVjdChleGVjKTsKKworICAgICAgICAvLyBDcmVhdGUgdGhl
IGRpY3Rpb25hcnkgd3JhcHBlciBmcm9tIHRoZSBpbml0aWFsaXplciBvYmplY3QuCisgICAgICAg
IEpTRGljdGlvbmFyeSBkaWN0aW9uYXJ5KGV4ZWMsIGluaXRpYWxpemVyT2JqZWN0KTsKKworICAg
ICAgICAvLyBBdHRlbXB0IHRvIGZpbGwgaW4gdGhlIEV2ZW50SW5pdC4KKyAgICAgICAgaWYgKCFm
aWxsJHtpbnRlcmZhY2VOYW1lfUluaXQoZXZlbnRJbml0LCBkaWN0aW9uYXJ5KSkKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorCisgICAg
UmVmUHRyPCR7aW50ZXJmYWNlTmFtZX0+IGV2ZW50ID0gJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRl
KGV2ZW50VHlwZSwgZXZlbnRJbml0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMo
ZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGV2ZW50LmdldCgpKSk7Cit9CisK
K2Jvb2wgZmlsbCR7aW50ZXJmYWNlTmFtZX1Jbml0KCR7aW50ZXJmYWNlTmFtZX1Jbml0JiBldmVu
dEluaXQsIEpTRGljdGlvbmFyeSYgZGljdGlvbmFyeSkKK3sKK0VORAorCisgICAgICAgICAgICBm
b3JlYWNoIG15ICRpbnRlcmZhY2VCYXNlIChAeyRkYXRhTm9kZS0+cGFyZW50c30pIHsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgIGlmICghZmlsbCR7aW50
ZXJmYWNlQmFzZX1Jbml0KGV2ZW50SW5pdCwgZGljdGlvbmFyeSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworRU5ECisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAobXkgJGluZGV4
ID0gMDsgJGluZGV4IDwgQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9OyAkaW5kZXgrKykgeworICAg
ICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGUgPSBAeyRkYXRhTm9kZS0+YXR0cmlidXRlc31bJGlu
ZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSW5pdGlhbGl6ZWRCeUNvbnN0cnVjdG9yIn0pIHsKKyAgICAgICAgICAg
ICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisgICAgaWYg
KCFkaWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KCIke2F0dHJpYnV0ZU5hbWV9IiwgZXZlbnRJbml0
LiR7YXR0cmlidXRlTmFtZX0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CitFTkQKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgPDxFTkQpOworICAgIHJldHVybiB0cnVlOworfQorCitFTkQKKyAgICAgICAgfSBlbHNpZiAo
ISgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUNvbnN0cnVjdG9yIn0g
fHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSkp
IHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShF
eGVjU3RhdGUqIGV4ZWMpXG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntc
biIpOwogCkBAIC0zMzMyLDQgKzM0MDEsMTkgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZp
bml0aW9uCiAgICAgfQogfQogCitzdWIgSXNDb25zdHJ1Y3RhYmxlCit7CisgICAgbXkgJGRhdGFO
b2RlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJKU0N1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0Nv
bnN0cnVjdG9yVGVtcGxhdGUifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
b25zdHJ1Y3RvclRlbXBsYXRlIn07Cit9CisKK3N1YiBJc0NvbnN0cnVjdG9yVGVtcGxhdGUKK3sK
KyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkdGVtcGxhdGUgPSBzaGlmdDsKKwor
ICAgIHJldHVybiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDb25zdHJ1Y3Rv
clRlbXBsYXRlIn0gJiYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDb25zdHJ1
Y3RvclRlbXBsYXRlIn0gZXEgJHRlbXBsYXRlKSB8fCAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ29uc3RydWN0b3JUZW1wbGF0ZSJ9ICYmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNvbnN0cnVjdG9yVGVtcGxhdGUifSBlcSAkdGVtcGxhdGUpOworfQorCiAxOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGY3MzE2ZTMuLjllMWNlYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTIxLDggKzIxLDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5o
IgogCisjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1
ZGUgIlRlc3RFdmVudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAK
QEAgLTk3LDYgKzk5LDQyIEBAIGJvb2wgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjCiAgICAgcmV0dXJuIGdl
dFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3Is
IEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvclRh
YmxlLCBzdGF0aWNfY2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNUZXN0RXZlbnRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNUZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworCisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogZXhlY3V0aW9uQ29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHQpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywg
IkNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZXhlY3V0aW9uIGNvbnRleHQgaXMgdW5hdmFpbGFibGUi
KSk7CisKKyAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gdXN0cmluZ1RvQXRvbWljU3RyaW5n
KGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisKKyAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQgZXZlbnRJbml0OworCisgICAgSlNWYWx1
ZSBpbml0aWFsaXplclZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgaWYgKCFpbml0aWFs
aXplclZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgLy8gR2l2ZW4gdGhlIGFi
b3ZlIHRlc3QsIHRoaXMgd2lsbCBhbHdheXMgeWllbGQgYW4gb2JqZWN0LgorICAgICAgICBKU09i
amVjdCogaW5pdGlhbGl6ZXJPYmplY3QgPSBpbml0aWFsaXplclZhbHVlLnRvT2JqZWN0KGV4ZWMp
OworCisgICAgICAgIC8vIENyZWF0ZSB0aGUgZGljdGlvbmFyeSB3cmFwcGVyIGZyb20gdGhlIGlu
aXRpYWxpemVyIG9iamVjdC4KKyAgICAgICAgSlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnkoZXhlYywg
aW5pdGlhbGl6ZXJPYmplY3QpOworCisgICAgICAgIC8vIEF0dGVtcHQgdG8gZmlsbCBpbiB0aGUg
RXZlbnRJbml0LgorICAgICAgICBpZiAoIWZpbGxUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQoZXZl
bnRJbml0LCBkaWN0aW9uYXJ5KSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgfQorCisgICAgUmVmUHRyPFRlc3RFdmVudENvbnN0cnVjdG9y
PiBldmVudCA9IFRlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGUoZXZlbnRUeXBlLCBldmVudElu
aXQpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9y
LT5nbG9iYWxPYmplY3QoKSwgZXZlbnQuZ2V0KCkpKTsKK30KKworYm9vbCBmaWxsVGVzdEV2ZW50
Q29uc3RydWN0b3JJbml0KFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdCYgZXZlbnRJbml0LCBKU0Rp
Y3Rpb25hcnkmIGRpY3Rpb25hcnkpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIENvbnN0cnVj
dFR5cGUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7CiAgICAgY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3RFdmVudENvbnN0cnVjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggNTllMThjZi4uMjZkZWY1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC0yOSw2ICsyOSw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSlNEaWN0aW9uYXJ5OworCiBjbGFzcyBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yIDogcHVibGljIEpTRE9NV3JhcHBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBKU0RPTVdyYXBwZXIgQmFzZTsKQEAgLTExMyw2ICsxMTUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwg
SlNDOjpDb25zdHJ1Y3REYXRhJik7CiB9OwogCitib29sIGZpbGxUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckluaXQoVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0JiwgSlNEaWN0aW9uYXJ5Jik7CisKIC8vIEF0
dHJpYnV0ZXMKIAogSlNDOjpKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEV2ZW50Q29u
c3RydWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RF
dmVudENvbnN0cnVjdG9yLmlkbAppbmRleCA4ZDNiYWVlLi5jMDU3Y2E3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEV2ZW50Q29uc3RydWN0b3Iu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXZlbnRD
b25zdHJ1Y3Rvci5pZGwKQEAgLTMwLDcgKzMwLDcgQEAKIC8vIGNoYW5nZXMgaW4gaXRzIG91cHV0
LgogbW9kdWxlIHRlc3QgewogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEN1c3RvbUNvbnN0cnVj
dG9yPUV2ZW50CisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQKICAgICBdIFRlc3RF
dmVudENvbnN0cnVjdG9yIHsKICAgICAgICAgLy8gQXR0cmlidXRlcwogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGF0dHIxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwCmluZGV4IGNlMjg5MjcuLjE0ZTJiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHAKQEAgLTIxLDggKzIxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIgogCisjaW5jbHVkZSAiT3B0aW9uc09iamVj
dC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJWOEJp
bmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKICNpbmNsdWRlICJWOEJpbmRp
bmdTdGF0ZS5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIlY4SXNvbGF0
ZWRDb250ZXh0LmgiCkBAIC02MCw2ICs2MiwzOCBAQCBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJp
YnV0ZSBUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJzW10gPSB7CiAgICAgeyJhdHRyMiIsIFRlc3RF
dmVudENvbnN0cnVjdG9ySW50ZXJuYWw6OmF0dHIyQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiB9OwogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiRE9NLlRlc3RFdmVudENvbnN0cnVjdG9yLkNvbnN0cnVjdG9yIik7CisKKyAgICBp
ZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJE
T00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBW
OFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgp
ID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQorICAgICAgICByZXR1cm4g
YXJncy5Ib2xkZXIoKTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6VHlwZUVycm9y
KTsKKworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0
ZXI8PiwgdHlwZSwgYXJnc1swXSk7CisgICAgVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0IGV2ZW50
SW5pdDsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+PSAyKSB7CisgICAgICAgIEVYQ0VQVElPTl9C
TE9DSyhPcHRpb25zT2JqZWN0LCBvcHRpb25zLCBhcmdzWzFdKTsKKyAgICAgICAgaWYgKCFmaWxs
VGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KGV2ZW50SW5pdCwgb3B0aW9ucykpCisgICAgICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKworICAgIFJlZlB0cjxUZXN0RXZlbnRD
b25zdHJ1Y3Rvcj4gZXZlbnQgPSBUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHR5cGUsIGV2
ZW50SW5pdCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIo
KSwgJmluZm8sIGV2ZW50LmdldCgpKTsKKyAgICByZXR1cm4gdG9WOChldmVudC5yZWxlYXNlKCks
IGFyZ3MuSG9sZGVyKCkpOworfQorCitib29sIGZpbGxUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQo
VGVzdEV2ZW50Q29uc3RydWN0b3JJbml0JiBldmVudEluaXQsIGNvbnN0IE9wdGlvbnNPYmplY3Qm
IG9wdGlvbnMpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRl
bXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjKQogewogICAg
IGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3Iu
aAppbmRleCBkYTFlNTExLi41MjBlMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9y
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBPcHRp
b25zT2JqZWN0OwogY2xhc3MgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKQEAgLTc1LDYg
Kzc2LDggQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8IFRl
c3RFdmVudENvbnN0cnVjdG9yID4gaW1wbCkKICAgICByZXR1cm4gdG9WOChpbXBsLmdldCgpKTsK
IH0KIAorYm9vbCBmaWxsVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KFRlc3RFdmVudENvbnN0cnVj
dG9ySW5pdCYsIGNvbnN0IE9wdGlvbnNPYmplY3QmKTsKKwogfQogCiAjZW5kaWYgLy8gVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
aWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbAppbmRleCAwZmI1OGUyLi44MGIyZjMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudC5pZGwKQEAgLTIzLDggKzIzLDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAg
ICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKICAgICBpbnRlcmZhY2UgWwogICAgICAg
ICBDdXN0b21Ub0pTLAotICAgICAgICBWOENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQsCi0gICAg
ICAgIEpTQ3VzdG9tQ29uc3RydWN0b3IsCisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZl
bnQsCiAgICAgICAgIE5vU3RhdGljVGFibGVzLAogICAgICAgICBQb2x5bW9ycGhpYwogICAgIF0g
RXZlbnQgewo=
</data>
<flag name="review"
          id="113688"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114975</attachid>
            <date>2011-11-14 10:21:39 -0800</date>
            <delta_ts>2011-11-14 10:21:39 -0800</delta_ts>
            <desc>Try again to see if build succeeds</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>17735</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OWZjMjE0Li40OGEyNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDMg
QEAKIDIwMTEtMTEtMTQgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIE1ha2UgQ29kZUdlbmVyYXRvckpTLnBtIGdlbmVyYXRlIEV2ZW50IGNvbnN0cnVjdG9y
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIyNTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgQ29k
ZUdlbmVyYXRvclY4LnBtIGNhbiBnZW5lcmF0ZSBFdmVudCBjb25zdHJ1Y3RvcnMgdXNpbmcKKyAg
ICAgICAgW0NvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnRdIElETCAoYnVnIDcyMDU1KS4KKyAgICAg
ICAgVGhpcyBwYXRjaCBtYWtlcyBDb2RlR2VuZXJhdG9ySlMucG0gYWxzbyBnZW5lcmF0ZSB0aGUg
RXZlbnQgY29uc3RydWN0b3JzCisgICAgICAgIGFuZCByZXBsYWNlcyBhIGN1c3RvbSBjb25zdHJ1
Y3RvciBvZiBFdmVudCB3aXRoIHRoZSBnZW5lcmF0ZWQgb25lLgorICAgICAgICBBZnRlciB0aGlz
IHBhdGNoIGlzIGxhbmRlZCB3aXRob3V0IHJlZ3Jlc3Npb25zLAorICAgICAgICBJIHdpbGwgcmVw
bGFjZSBjdXN0b20gY29uc3RydWN0b3JzIG9mIGFsbCBvdGhlciBFdmVudHMgaW4gSlNDLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvZXZlbnQtY29uc3RydWN0b3Jz
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9jdXN0b20tZXZl
bnQtY29uc3RydWN0b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvY29uc3RydWN0
b3JzL3Byb2dyZXNzLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBB
ZGRlZCBKU0RpY3Rpb25hcnkuaC4KKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJh
dGlvbik6IEFkZGVkIGEgaGVhZGVyIGZvciBmaWxsWFhYWEV2ZW50SW5pdCguLi4pLgorICAgICAg
ICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOiBHZW5lcmF0ZXMgYW4gRXZlbnQgY29u
c3RydWN0b3IuIFRoZSBnZW5lcmF0ZWQgY29kZSBpcyB0aGUgc2FtZSBhcyB0aGUgY29kZSB0aGF0
IGhhZCBiZWVuIHdyaXR0ZW4gaW4gSlNFdmVudENvbnN0cnVjdG9ycy5jcHAuCisgICAgICAgIChJ
c0NvbnN0cnVjdGFibGUpOiBKdWRnZXMgaWYgYSBnaXZlbiBpbnRlcmZhY2UgaXMgY29uc3RydWN0
YWJsZS4KKyAgICAgICAgKElzQ29uc3RydWN0b3JUZW1wbGF0ZSk6IEp1ZGdlcyBpZiBhIGdpdmVu
IGludGVyZmFjZSBoYXMgYSBnaXZlbiB0ZW1wbGF0ZSwgZS5nLiBqdWRnZXMgaWYgYW4gaW50ZXJm
YWNlIGhhcyBbQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudF0uCisKKyAgICAgICAgKiBiaW5kaW5n
cy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmg6IFJlbW92ZWQgYSBjdXN0b20gY29uc3RydWN0
b3Igb2YgRXZlbnQuCisgICAgICAgICogZG9tL0V2ZW50LmlkbDogSW4gZXNzZW5jZSwgcmVwbGFj
ZWQgW0pTQ3VzdG9tQ29uc3RydWN0b3JdIElETCB3aXRoIFtKU0NvbnN0cnVjdG9yVGVtcGxhdGU9
RXZlbnRdIElETC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXZlbnRD
b25zdHJ1Y3Rvci5pZGw6IENoYW5nZWQgJ0N1c3RvbUNvbnN0cnVjdG9yPUV2ZW50JyB0byAnQ29u
c3RydWN0b3JUZW1wbGF0ZT1FdmVudCcuIFdlIHNob3VsZCBoYXZlIGNoYW5nZWQgdGhpcyBpbiBy
MTAwMTA4LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmNwcDogVXBkYXRlZCBhIHJ1bi1iaW5kaW5ncy10ZXN0cyByZXN1bHQuCisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFRlc3RFdmVu
dENvbnN0cnVjdG9ySW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50Q29uc3RydWN0b3IuaDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6ZmlsbFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaDogRGl0dG8u
CisKKzIwMTEtMTEtMTQgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCiAg
ICAgICAgIFJlbW92ZSBhbGwgY3VzdG9tIGNvbnN0cnVjdG9ycyBvZiBFdmVudHMgaW4gVjgKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDc0CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvRXZlbnRDb25zdHJ1Y3Rv
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvRXZlbnRDb25zdHJ1Y3RvcnMu
aAppbmRleCBkYTAxOGIzLi44MmIzMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9FdmVudENvbnN0cnVjdG9ycy5oCkBAIC0xNDYsNyArMTQ2LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNkZWZpbmUgSU5TVEFOVElBVEVfQUxMX0VWRU5U
X0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUlMoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9F
TkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpIFwKLSAgICBJTlNUQU5U
SUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX0VWRU5UKERJQ1RJT05BUllfU1RBUlQs
IERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBc
CiAgICAgSU5TVEFOVElBVEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9DVVNUT01fRVZF
TlQoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJ
RVMsIEZJTExfUFJPUEVSVFkpIFwKICAgICBJTlNUQU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RS
VUNUT1JfRk9SX1BST0dSRVNTX0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5E
LCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBcCiAgICAgSU5TVEFOVElB
VEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9XRUJLSVRfQU5JTUFUSU9OX0VWRU5UKERJ
Q1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBG
SUxMX1BST1BFUlRZKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDI1MDA1NjIuLmQ0NTdiZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC03MjMs
NiArNzIzLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAgQWRkQ2xhc3NGb3J3
YXJkSWZOZWVkZWQoIkpTRE9NV2luZG93U2hlbGwiKSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRE9N
V2luZG93IjsKKyAgICBBZGRDbGFzc0ZvcndhcmRJZk5lZWRlZCgiSlNEaWN0aW9uYXJ5IikgaWYg
SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwgIkV2ZW50Iik7CiAKICAgICAjIENsYXNz
IGRlY2xhcmF0aW9uCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzICRjbGFzc05hbWUg
OiBwdWJsaWMgJHBhcmVudENsYXNzTmFtZSB7XG4iKTsKQEAgLTEwNzIsNyArMTA3Myw3IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJPbWl0Q29uc3RydWN0b3IifSkgewogICAgICAgICAkaGVhZGVySW5jbHVkZXN7IkpTRE9N
QmluZGluZy5oIn0gPSAxOwotICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24o
XEBoZWFkZXJDb250ZW50LCAkY2xhc3NOYW1lLCAkZGF0YU5vZGUpOworICAgICAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBoZWFkZXJDb250ZW50LCAkY2xhc3NOYW1lLCAkZGF0
YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICB9CiAKICAgICBpZiAoJG51bUZ1bmN0aW9ucyA+
IDApIHsKQEAgLTMxODksOSArMzE5MCw5IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFy
YXRpb24KICAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKICAgICBteSAkY2xhc3NOYW1lID0g
c2hpZnQ7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5hbWUg
PSBzaGlmdDsKIAogICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICIke2NsYXNzTmFtZX1D
b25zdHJ1Y3RvciI7Ci0gICAgbXkgJGNhbkNvbnN0cnVjdCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn07CiAgICAgbXkgJGNhbGxXaXRoID0gJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKIAogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgImNsYXNzICR7Y29uc3RydWN0b3JDbGFzc05hbWV9IDogcHVibGljIERPTUNvbnN0cnVj
dG9yT2JqZWN0IHtcbiIpOwpAQCAtMzIyMCwxMSArMzIyMSwxNSBAQCBzdWIgR2VuZXJhdGVDb25z
dHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAicHJvdGVjdGVkOlxu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJ
bXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxh
Z3M7XG4iKTsKIAotICAgIGlmICgkY2FuQ29uc3RydWN0KSB7CisgICAgaWYgKElzQ29uc3RydWN0
YWJsZSgkZGF0YU5vZGUpKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0
aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdCR7Y2xhc3NOYW1l
fShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwq
LCBKU0M6OkNvbnN0cnVjdERhdGEmKTtcbiIpOwogICAgIH0KICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ9O1xuXG4iKTsKKworICAgIGlmIChJc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGRhdGFOb2Rl
LCAiRXZlbnQiKSkgeworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sIGZpbGwke2lu
dGVyZmFjZU5hbWV9SW5pdCgke2ludGVyZmFjZU5hbWV9SW5pdCYsIEpTRGljdGlvbmFyeSYpO1xu
XG4iKTsKKyAgICB9CiB9CiAKIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgpAQCAt
MzI2OSw4ICszMjc0LDcyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9y
PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9LCBKU0RPTVdyYXBwZXI+KGV4ZWMsICYke2NvbnN0cnVj
dG9yQ2xhc3NOYW1lfVRhYmxlLCBzdGF0aWNfY2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+
KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7XG4iKTsKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ9XG5cbiIpOwogCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgaWYgKCEoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0pKSB7CisgICAgaWYgKElzQ29uc3Ry
dWN0YWJsZSgkZGF0YU5vZGUpKSB7CisgICAgICAgIGlmIChJc0NvbnN0cnVjdG9yVGVtcGxhdGUo
JGRhdGFOb2RlLCAiRXZlbnQiKSkgeworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNEaWN0
aW9uYXJ5LmgifSA9IDE7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJv
ci5oPiJ9ID0gMTsKKworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCA8PEVORCk7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25z
dHJ1Y3Qke2NsYXNzTmFtZX0oRXhlY1N0YXRlKiBleGVjKQoreworICAgICR7Y29uc3RydWN0b3JD
bGFzc05hbWV9KiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0qPihleGVjLT5jYWxsZWUoKSk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBl
eGVjdXRpb25Db250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OworICAgIGlmICghZXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiQ29uc3RydWN0b3IgYXNzb2NpYXRl
ZCBleGVjdXRpb24gY29udGV4dCBpcyB1bmF2YWlsYWJsZSIpKTsKKworICAgIEF0b21pY1N0cmlu
ZyBldmVudFR5cGUgPSB1c3RyaW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgICR7aW50ZXJmYWNlTmFt
ZX1Jbml0IGV2ZW50SW5pdDsKKworICAgIEpTVmFsdWUgaW5pdGlhbGl6ZXJWYWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDEpOworICAgIGlmICghaW5pdGlhbGl6ZXJWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CisgICAgICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlz
IHlpZWxkIGFuIG9iamVjdC4KKyAgICAgICAgSlNPYmplY3QqIGluaXRpYWxpemVyT2JqZWN0ID0g
aW5pdGlhbGl6ZXJWYWx1ZS50b09iamVjdChleGVjKTsKKworICAgICAgICAvLyBDcmVhdGUgdGhl
IGRpY3Rpb25hcnkgd3JhcHBlciBmcm9tIHRoZSBpbml0aWFsaXplciBvYmplY3QuCisgICAgICAg
IEpTRGljdGlvbmFyeSBkaWN0aW9uYXJ5KGV4ZWMsIGluaXRpYWxpemVyT2JqZWN0KTsKKworICAg
ICAgICAvLyBBdHRlbXB0IHRvIGZpbGwgaW4gdGhlIEV2ZW50SW5pdC4KKyAgICAgICAgaWYgKCFm
aWxsJHtpbnRlcmZhY2VOYW1lfUluaXQoZXZlbnRJbml0LCBkaWN0aW9uYXJ5KSkKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorCisgICAg
UmVmUHRyPCR7aW50ZXJmYWNlTmFtZX0+IGV2ZW50ID0gJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRl
KGV2ZW50VHlwZSwgZXZlbnRJbml0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMo
ZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGV2ZW50LmdldCgpKSk7Cit9CisK
K2Jvb2wgZmlsbCR7aW50ZXJmYWNlTmFtZX1Jbml0KCR7aW50ZXJmYWNlTmFtZX1Jbml0JiBldmVu
dEluaXQsIEpTRGljdGlvbmFyeSYgZGljdGlvbmFyeSkKK3sKK0VORAorCisgICAgICAgICAgICBm
b3JlYWNoIG15ICRpbnRlcmZhY2VCYXNlIChAeyRkYXRhTm9kZS0+cGFyZW50c30pIHsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgIGlmICghZmlsbCR7aW50
ZXJmYWNlQmFzZX1Jbml0KGV2ZW50SW5pdCwgZGljdGlvbmFyeSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworRU5ECisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAobXkgJGluZGV4
ID0gMDsgJGluZGV4IDwgQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9OyAkaW5kZXgrKykgeworICAg
ICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGUgPSBAeyRkYXRhTm9kZS0+YXR0cmlidXRlc31bJGlu
ZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSW5pdGlhbGl6ZWRCeUNvbnN0cnVjdG9yIn0pIHsKKyAgICAgICAgICAg
ICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisgICAgaWYg
KCFkaWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KCIke2F0dHJpYnV0ZU5hbWV9IiwgZXZlbnRJbml0
LiR7YXR0cmlidXRlTmFtZX0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CitFTkQKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgPDxFTkQpOworICAgIHJldHVybiB0cnVlOworfQorCitFTkQKKyAgICAgICAgfSBlbHNpZiAo
ISgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUNvbnN0cnVjdG9yIn0g
fHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSkp
IHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShF
eGVjU3RhdGUqIGV4ZWMpXG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntc
biIpOwogCkBAIC0zMzMyLDQgKzM0MDEsMTkgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZp
bml0aW9uCiAgICAgfQogfQogCitzdWIgSXNDb25zdHJ1Y3RhYmxlCit7CisgICAgbXkgJGRhdGFO
b2RlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJKU0N1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0Nv
bnN0cnVjdG9yVGVtcGxhdGUifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
b25zdHJ1Y3RvclRlbXBsYXRlIn07Cit9CisKK3N1YiBJc0NvbnN0cnVjdG9yVGVtcGxhdGUKK3sK
KyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkdGVtcGxhdGUgPSBzaGlmdDsKKwor
ICAgIHJldHVybiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDb25zdHJ1Y3Rv
clRlbXBsYXRlIn0gJiYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDb25zdHJ1
Y3RvclRlbXBsYXRlIn0gZXEgJHRlbXBsYXRlKSB8fCAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ29uc3RydWN0b3JUZW1wbGF0ZSJ9ICYmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNvbnN0cnVjdG9yVGVtcGxhdGUifSBlcSAkdGVtcGxhdGUpOworfQorCiAxOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGY3MzE2ZTMuLjllMWNlYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTIxLDggKzIxLDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5o
IgogCisjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1
ZGUgIlRlc3RFdmVudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAK
QEAgLTk3LDYgKzk5LDQyIEBAIGJvb2wgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjCiAgICAgcmV0dXJuIGdl
dFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3Is
IEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvclRh
YmxlLCBzdGF0aWNfY2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNUZXN0RXZlbnRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNUZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworCisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogZXhlY3V0aW9uQ29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHQpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywg
IkNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZXhlY3V0aW9uIGNvbnRleHQgaXMgdW5hdmFpbGFibGUi
KSk7CisKKyAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gdXN0cmluZ1RvQXRvbWljU3RyaW5n
KGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisKKyAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQgZXZlbnRJbml0OworCisgICAgSlNWYWx1
ZSBpbml0aWFsaXplclZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgaWYgKCFpbml0aWFs
aXplclZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgLy8gR2l2ZW4gdGhlIGFi
b3ZlIHRlc3QsIHRoaXMgd2lsbCBhbHdheXMgeWllbGQgYW4gb2JqZWN0LgorICAgICAgICBKU09i
amVjdCogaW5pdGlhbGl6ZXJPYmplY3QgPSBpbml0aWFsaXplclZhbHVlLnRvT2JqZWN0KGV4ZWMp
OworCisgICAgICAgIC8vIENyZWF0ZSB0aGUgZGljdGlvbmFyeSB3cmFwcGVyIGZyb20gdGhlIGlu
aXRpYWxpemVyIG9iamVjdC4KKyAgICAgICAgSlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnkoZXhlYywg
aW5pdGlhbGl6ZXJPYmplY3QpOworCisgICAgICAgIC8vIEF0dGVtcHQgdG8gZmlsbCBpbiB0aGUg
RXZlbnRJbml0LgorICAgICAgICBpZiAoIWZpbGxUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQoZXZl
bnRJbml0LCBkaWN0aW9uYXJ5KSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgfQorCisgICAgUmVmUHRyPFRlc3RFdmVudENvbnN0cnVjdG9y
PiBldmVudCA9IFRlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGUoZXZlbnRUeXBlLCBldmVudElu
aXQpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9y
LT5nbG9iYWxPYmplY3QoKSwgZXZlbnQuZ2V0KCkpKTsKK30KKworYm9vbCBmaWxsVGVzdEV2ZW50
Q29uc3RydWN0b3JJbml0KFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdCYgZXZlbnRJbml0LCBKU0Rp
Y3Rpb25hcnkmIGRpY3Rpb25hcnkpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIENvbnN0cnVj
dFR5cGUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7CiAgICAgY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3RFdmVudENvbnN0cnVjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggNTllMThjZi4uMjZkZWY1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC0yOSw2ICsyOSw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSlNEaWN0aW9uYXJ5OworCiBjbGFzcyBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yIDogcHVibGljIEpTRE9NV3JhcHBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBKU0RPTVdyYXBwZXIgQmFzZTsKQEAgLTExMyw2ICsxMTUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwg
SlNDOjpDb25zdHJ1Y3REYXRhJik7CiB9OwogCitib29sIGZpbGxUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckluaXQoVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0JiwgSlNEaWN0aW9uYXJ5Jik7CisKIC8vIEF0
dHJpYnV0ZXMKIAogSlNDOjpKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEV2ZW50Q29u
c3RydWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RF
dmVudENvbnN0cnVjdG9yLmlkbAppbmRleCA4ZDNiYWVlLi5jMDU3Y2E3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEV2ZW50Q29uc3RydWN0b3Iu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXZlbnRD
b25zdHJ1Y3Rvci5pZGwKQEAgLTMwLDcgKzMwLDcgQEAKIC8vIGNoYW5nZXMgaW4gaXRzIG91cHV0
LgogbW9kdWxlIHRlc3QgewogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEN1c3RvbUNvbnN0cnVj
dG9yPUV2ZW50CisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQKICAgICBdIFRlc3RF
dmVudENvbnN0cnVjdG9yIHsKICAgICAgICAgLy8gQXR0cmlidXRlcwogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGF0dHIxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwCmluZGV4IGNlMjg5MjcuLjE0ZTJiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHAKQEAgLTIxLDggKzIxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIgogCisjaW5jbHVkZSAiT3B0aW9uc09iamVj
dC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJWOEJp
bmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKICNpbmNsdWRlICJWOEJpbmRp
bmdTdGF0ZS5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIlY4SXNvbGF0
ZWRDb250ZXh0LmgiCkBAIC02MCw2ICs2MiwzOCBAQCBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJp
YnV0ZSBUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJzW10gPSB7CiAgICAgeyJhdHRyMiIsIFRlc3RF
dmVudENvbnN0cnVjdG9ySW50ZXJuYWw6OmF0dHIyQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiB9OwogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiRE9NLlRlc3RFdmVudENvbnN0cnVjdG9yLkNvbnN0cnVjdG9yIik7CisKKyAgICBp
ZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJE
T00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBW
OFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgp
ID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQorICAgICAgICByZXR1cm4g
YXJncy5Ib2xkZXIoKTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6VHlwZUVycm9y
KTsKKworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0
ZXI8PiwgdHlwZSwgYXJnc1swXSk7CisgICAgVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0IGV2ZW50
SW5pdDsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+PSAyKSB7CisgICAgICAgIEVYQ0VQVElPTl9C
TE9DSyhPcHRpb25zT2JqZWN0LCBvcHRpb25zLCBhcmdzWzFdKTsKKyAgICAgICAgaWYgKCFmaWxs
VGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KGV2ZW50SW5pdCwgb3B0aW9ucykpCisgICAgICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKworICAgIFJlZlB0cjxUZXN0RXZlbnRD
b25zdHJ1Y3Rvcj4gZXZlbnQgPSBUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHR5cGUsIGV2
ZW50SW5pdCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIo
KSwgJmluZm8sIGV2ZW50LmdldCgpKTsKKyAgICByZXR1cm4gdG9WOChldmVudC5yZWxlYXNlKCks
IGFyZ3MuSG9sZGVyKCkpOworfQorCitib29sIGZpbGxUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQo
VGVzdEV2ZW50Q29uc3RydWN0b3JJbml0JiBldmVudEluaXQsIGNvbnN0IE9wdGlvbnNPYmplY3Qm
IG9wdGlvbnMpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRl
bXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjKQogewogICAg
IGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3Iu
aAppbmRleCBkYTFlNTExLi41MjBlMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9y
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBPcHRp
b25zT2JqZWN0OwogY2xhc3MgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKQEAgLTc1LDYg
Kzc2LDggQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8IFRl
c3RFdmVudENvbnN0cnVjdG9yID4gaW1wbCkKICAgICByZXR1cm4gdG9WOChpbXBsLmdldCgpKTsK
IH0KIAorYm9vbCBmaWxsVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KFRlc3RFdmVudENvbnN0cnVj
dG9ySW5pdCYsIGNvbnN0IE9wdGlvbnNPYmplY3QmKTsKKwogfQogCiAjZW5kaWYgLy8gVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
aWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbAppbmRleCAwZmI1OGUyLi44MGIyZjMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudC5pZGwKQEAgLTIzLDggKzIzLDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAg
ICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKICAgICBpbnRlcmZhY2UgWwogICAgICAg
ICBDdXN0b21Ub0pTLAotICAgICAgICBWOENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQsCi0gICAg
ICAgIEpTQ3VzdG9tQ29uc3RydWN0b3IsCisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZl
bnQsCiAgICAgICAgIE5vU3RhdGljVGFibGVzLAogICAgICAgICBQb2x5bW9ycGhpYwogICAgIF0g
RXZlbnQgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115152</attachid>
            <date>2011-11-15 06:23:38 -0800</date>
            <delta_ts>2011-11-15 06:23:38 -0800</delta_ts>
            <desc>Try again to see if the win build looks happy</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>17735</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OWZjMjE0Li40OGEyNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDMg
QEAKIDIwMTEtMTEtMTQgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIE1ha2UgQ29kZUdlbmVyYXRvckpTLnBtIGdlbmVyYXRlIEV2ZW50IGNvbnN0cnVjdG9y
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIyNTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgQ29k
ZUdlbmVyYXRvclY4LnBtIGNhbiBnZW5lcmF0ZSBFdmVudCBjb25zdHJ1Y3RvcnMgdXNpbmcKKyAg
ICAgICAgW0NvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnRdIElETCAoYnVnIDcyMDU1KS4KKyAgICAg
ICAgVGhpcyBwYXRjaCBtYWtlcyBDb2RlR2VuZXJhdG9ySlMucG0gYWxzbyBnZW5lcmF0ZSB0aGUg
RXZlbnQgY29uc3RydWN0b3JzCisgICAgICAgIGFuZCByZXBsYWNlcyBhIGN1c3RvbSBjb25zdHJ1
Y3RvciBvZiBFdmVudCB3aXRoIHRoZSBnZW5lcmF0ZWQgb25lLgorICAgICAgICBBZnRlciB0aGlz
IHBhdGNoIGlzIGxhbmRlZCB3aXRob3V0IHJlZ3Jlc3Npb25zLAorICAgICAgICBJIHdpbGwgcmVw
bGFjZSBjdXN0b20gY29uc3RydWN0b3JzIG9mIGFsbCBvdGhlciBFdmVudHMgaW4gSlNDLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvZXZlbnQtY29uc3RydWN0b3Jz
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9jdXN0b20tZXZl
bnQtY29uc3RydWN0b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvY29uc3RydWN0
b3JzL3Byb2dyZXNzLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBB
ZGRlZCBKU0RpY3Rpb25hcnkuaC4KKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJh
dGlvbik6IEFkZGVkIGEgaGVhZGVyIGZvciBmaWxsWFhYWEV2ZW50SW5pdCguLi4pLgorICAgICAg
ICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOiBHZW5lcmF0ZXMgYW4gRXZlbnQgY29u
c3RydWN0b3IuIFRoZSBnZW5lcmF0ZWQgY29kZSBpcyB0aGUgc2FtZSBhcyB0aGUgY29kZSB0aGF0
IGhhZCBiZWVuIHdyaXR0ZW4gaW4gSlNFdmVudENvbnN0cnVjdG9ycy5jcHAuCisgICAgICAgIChJ
c0NvbnN0cnVjdGFibGUpOiBKdWRnZXMgaWYgYSBnaXZlbiBpbnRlcmZhY2UgaXMgY29uc3RydWN0
YWJsZS4KKyAgICAgICAgKElzQ29uc3RydWN0b3JUZW1wbGF0ZSk6IEp1ZGdlcyBpZiBhIGdpdmVu
IGludGVyZmFjZSBoYXMgYSBnaXZlbiB0ZW1wbGF0ZSwgZS5nLiBqdWRnZXMgaWYgYW4gaW50ZXJm
YWNlIGhhcyBbQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudF0uCisKKyAgICAgICAgKiBiaW5kaW5n
cy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmg6IFJlbW92ZWQgYSBjdXN0b20gY29uc3RydWN0
b3Igb2YgRXZlbnQuCisgICAgICAgICogZG9tL0V2ZW50LmlkbDogSW4gZXNzZW5jZSwgcmVwbGFj
ZWQgW0pTQ3VzdG9tQ29uc3RydWN0b3JdIElETCB3aXRoIFtKU0NvbnN0cnVjdG9yVGVtcGxhdGU9
RXZlbnRdIElETC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXZlbnRD
b25zdHJ1Y3Rvci5pZGw6IENoYW5nZWQgJ0N1c3RvbUNvbnN0cnVjdG9yPUV2ZW50JyB0byAnQ29u
c3RydWN0b3JUZW1wbGF0ZT1FdmVudCcuIFdlIHNob3VsZCBoYXZlIGNoYW5nZWQgdGhpcyBpbiBy
MTAwMTA4LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmNwcDogVXBkYXRlZCBhIHJ1bi1iaW5kaW5ncy10ZXN0cyByZXN1bHQuCisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFRlc3RFdmVu
dENvbnN0cnVjdG9ySW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50Q29uc3RydWN0b3IuaDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6ZmlsbFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaDogRGl0dG8u
CisKKzIwMTEtMTEtMTQgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCiAg
ICAgICAgIFJlbW92ZSBhbGwgY3VzdG9tIGNvbnN0cnVjdG9ycyBvZiBFdmVudHMgaW4gVjgKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDc0CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvRXZlbnRDb25zdHJ1Y3Rv
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvRXZlbnRDb25zdHJ1Y3RvcnMu
aAppbmRleCBkYTAxOGIzLi44MmIzMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9FdmVudENvbnN0cnVjdG9ycy5oCkBAIC0xNDYsNyArMTQ2LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNkZWZpbmUgSU5TVEFOVElBVEVfQUxMX0VWRU5U
X0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUlMoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9F
TkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpIFwKLSAgICBJTlNUQU5U
SUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX0VWRU5UKERJQ1RJT05BUllfU1RBUlQs
IERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBc
CiAgICAgSU5TVEFOVElBVEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9DVVNUT01fRVZF
TlQoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJ
RVMsIEZJTExfUFJPUEVSVFkpIFwKICAgICBJTlNUQU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RS
VUNUT1JfRk9SX1BST0dSRVNTX0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5E
LCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBcCiAgICAgSU5TVEFOVElB
VEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9XRUJLSVRfQU5JTUFUSU9OX0VWRU5UKERJ
Q1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBG
SUxMX1BST1BFUlRZKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDI1MDA1NjIuLmQ0NTdiZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC03MjMs
NiArNzIzLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAgQWRkQ2xhc3NGb3J3
YXJkSWZOZWVkZWQoIkpTRE9NV2luZG93U2hlbGwiKSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRE9N
V2luZG93IjsKKyAgICBBZGRDbGFzc0ZvcndhcmRJZk5lZWRlZCgiSlNEaWN0aW9uYXJ5IikgaWYg
SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwgIkV2ZW50Iik7CiAKICAgICAjIENsYXNz
IGRlY2xhcmF0aW9uCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzICRjbGFzc05hbWUg
OiBwdWJsaWMgJHBhcmVudENsYXNzTmFtZSB7XG4iKTsKQEAgLTEwNzIsNyArMTA3Myw3IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJPbWl0Q29uc3RydWN0b3IifSkgewogICAgICAgICAkaGVhZGVySW5jbHVkZXN7IkpTRE9N
QmluZGluZy5oIn0gPSAxOwotICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24o
XEBoZWFkZXJDb250ZW50LCAkY2xhc3NOYW1lLCAkZGF0YU5vZGUpOworICAgICAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBoZWFkZXJDb250ZW50LCAkY2xhc3NOYW1lLCAkZGF0
YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICB9CiAKICAgICBpZiAoJG51bUZ1bmN0aW9ucyA+
IDApIHsKQEAgLTMxODksOSArMzE5MCw5IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFy
YXRpb24KICAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKICAgICBteSAkY2xhc3NOYW1lID0g
c2hpZnQ7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5hbWUg
PSBzaGlmdDsKIAogICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICIke2NsYXNzTmFtZX1D
b25zdHJ1Y3RvciI7Ci0gICAgbXkgJGNhbkNvbnN0cnVjdCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn07CiAgICAgbXkgJGNhbGxXaXRoID0gJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKIAogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgImNsYXNzICR7Y29uc3RydWN0b3JDbGFzc05hbWV9IDogcHVibGljIERPTUNvbnN0cnVj
dG9yT2JqZWN0IHtcbiIpOwpAQCAtMzIyMCwxMSArMzIyMSwxNSBAQCBzdWIgR2VuZXJhdGVDb25z
dHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAicHJvdGVjdGVkOlxu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJ
bXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxh
Z3M7XG4iKTsKIAotICAgIGlmICgkY2FuQ29uc3RydWN0KSB7CisgICAgaWYgKElzQ29uc3RydWN0
YWJsZSgkZGF0YU5vZGUpKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0
aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdCR7Y2xhc3NOYW1l
fShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwq
LCBKU0M6OkNvbnN0cnVjdERhdGEmKTtcbiIpOwogICAgIH0KICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ9O1xuXG4iKTsKKworICAgIGlmIChJc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGRhdGFOb2Rl
LCAiRXZlbnQiKSkgeworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sIGZpbGwke2lu
dGVyZmFjZU5hbWV9SW5pdCgke2ludGVyZmFjZU5hbWV9SW5pdCYsIEpTRGljdGlvbmFyeSYpO1xu
XG4iKTsKKyAgICB9CiB9CiAKIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgpAQCAt
MzI2OSw4ICszMjc0LDcyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9y
PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9LCBKU0RPTVdyYXBwZXI+KGV4ZWMsICYke2NvbnN0cnVj
dG9yQ2xhc3NOYW1lfVRhYmxlLCBzdGF0aWNfY2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+
KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7XG4iKTsKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ9XG5cbiIpOwogCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgaWYgKCEoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0pKSB7CisgICAgaWYgKElzQ29uc3Ry
dWN0YWJsZSgkZGF0YU5vZGUpKSB7CisgICAgICAgIGlmIChJc0NvbnN0cnVjdG9yVGVtcGxhdGUo
JGRhdGFOb2RlLCAiRXZlbnQiKSkgeworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNEaWN0
aW9uYXJ5LmgifSA9IDE7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJv
ci5oPiJ9ID0gMTsKKworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCA8PEVORCk7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25z
dHJ1Y3Qke2NsYXNzTmFtZX0oRXhlY1N0YXRlKiBleGVjKQoreworICAgICR7Y29uc3RydWN0b3JD
bGFzc05hbWV9KiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0qPihleGVjLT5jYWxsZWUoKSk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBl
eGVjdXRpb25Db250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OworICAgIGlmICghZXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiQ29uc3RydWN0b3IgYXNzb2NpYXRl
ZCBleGVjdXRpb24gY29udGV4dCBpcyB1bmF2YWlsYWJsZSIpKTsKKworICAgIEF0b21pY1N0cmlu
ZyBldmVudFR5cGUgPSB1c3RyaW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgICR7aW50ZXJmYWNlTmFt
ZX1Jbml0IGV2ZW50SW5pdDsKKworICAgIEpTVmFsdWUgaW5pdGlhbGl6ZXJWYWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDEpOworICAgIGlmICghaW5pdGlhbGl6ZXJWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CisgICAgICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlz
IHlpZWxkIGFuIG9iamVjdC4KKyAgICAgICAgSlNPYmplY3QqIGluaXRpYWxpemVyT2JqZWN0ID0g
aW5pdGlhbGl6ZXJWYWx1ZS50b09iamVjdChleGVjKTsKKworICAgICAgICAvLyBDcmVhdGUgdGhl
IGRpY3Rpb25hcnkgd3JhcHBlciBmcm9tIHRoZSBpbml0aWFsaXplciBvYmplY3QuCisgICAgICAg
IEpTRGljdGlvbmFyeSBkaWN0aW9uYXJ5KGV4ZWMsIGluaXRpYWxpemVyT2JqZWN0KTsKKworICAg
ICAgICAvLyBBdHRlbXB0IHRvIGZpbGwgaW4gdGhlIEV2ZW50SW5pdC4KKyAgICAgICAgaWYgKCFm
aWxsJHtpbnRlcmZhY2VOYW1lfUluaXQoZXZlbnRJbml0LCBkaWN0aW9uYXJ5KSkKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorCisgICAg
UmVmUHRyPCR7aW50ZXJmYWNlTmFtZX0+IGV2ZW50ID0gJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRl
KGV2ZW50VHlwZSwgZXZlbnRJbml0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMo
ZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGV2ZW50LmdldCgpKSk7Cit9CisK
K2Jvb2wgZmlsbCR7aW50ZXJmYWNlTmFtZX1Jbml0KCR7aW50ZXJmYWNlTmFtZX1Jbml0JiBldmVu
dEluaXQsIEpTRGljdGlvbmFyeSYgZGljdGlvbmFyeSkKK3sKK0VORAorCisgICAgICAgICAgICBm
b3JlYWNoIG15ICRpbnRlcmZhY2VCYXNlIChAeyRkYXRhTm9kZS0+cGFyZW50c30pIHsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgIGlmICghZmlsbCR7aW50
ZXJmYWNlQmFzZX1Jbml0KGV2ZW50SW5pdCwgZGljdGlvbmFyeSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworRU5ECisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAobXkgJGluZGV4
ID0gMDsgJGluZGV4IDwgQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9OyAkaW5kZXgrKykgeworICAg
ICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGUgPSBAeyRkYXRhTm9kZS0+YXR0cmlidXRlc31bJGlu
ZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSW5pdGlhbGl6ZWRCeUNvbnN0cnVjdG9yIn0pIHsKKyAgICAgICAgICAg
ICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisgICAgaWYg
KCFkaWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KCIke2F0dHJpYnV0ZU5hbWV9IiwgZXZlbnRJbml0
LiR7YXR0cmlidXRlTmFtZX0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CitFTkQKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgPDxFTkQpOworICAgIHJldHVybiB0cnVlOworfQorCitFTkQKKyAgICAgICAgfSBlbHNpZiAo
ISgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUNvbnN0cnVjdG9yIn0g
fHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSkp
IHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShF
eGVjU3RhdGUqIGV4ZWMpXG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntc
biIpOwogCkBAIC0zMzMyLDQgKzM0MDEsMTkgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZp
bml0aW9uCiAgICAgfQogfQogCitzdWIgSXNDb25zdHJ1Y3RhYmxlCit7CisgICAgbXkgJGRhdGFO
b2RlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJKU0N1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0Nv
bnN0cnVjdG9yVGVtcGxhdGUifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
b25zdHJ1Y3RvclRlbXBsYXRlIn07Cit9CisKK3N1YiBJc0NvbnN0cnVjdG9yVGVtcGxhdGUKK3sK
KyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkdGVtcGxhdGUgPSBzaGlmdDsKKwor
ICAgIHJldHVybiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDb25zdHJ1Y3Rv
clRlbXBsYXRlIn0gJiYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDb25zdHJ1
Y3RvclRlbXBsYXRlIn0gZXEgJHRlbXBsYXRlKSB8fCAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ29uc3RydWN0b3JUZW1wbGF0ZSJ9ICYmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNvbnN0cnVjdG9yVGVtcGxhdGUifSBlcSAkdGVtcGxhdGUpOworfQorCiAxOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGY3MzE2ZTMuLjllMWNlYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTIxLDggKzIxLDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5o
IgogCisjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1
ZGUgIlRlc3RFdmVudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAK
QEAgLTk3LDYgKzk5LDQyIEBAIGJvb2wgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjCiAgICAgcmV0dXJuIGdl
dFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3Is
IEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvclRh
YmxlLCBzdGF0aWNfY2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNUZXN0RXZlbnRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNUZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworCisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogZXhlY3V0aW9uQ29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHQpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywg
IkNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZXhlY3V0aW9uIGNvbnRleHQgaXMgdW5hdmFpbGFibGUi
KSk7CisKKyAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gdXN0cmluZ1RvQXRvbWljU3RyaW5n
KGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisKKyAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQgZXZlbnRJbml0OworCisgICAgSlNWYWx1
ZSBpbml0aWFsaXplclZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgaWYgKCFpbml0aWFs
aXplclZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgLy8gR2l2ZW4gdGhlIGFi
b3ZlIHRlc3QsIHRoaXMgd2lsbCBhbHdheXMgeWllbGQgYW4gb2JqZWN0LgorICAgICAgICBKU09i
amVjdCogaW5pdGlhbGl6ZXJPYmplY3QgPSBpbml0aWFsaXplclZhbHVlLnRvT2JqZWN0KGV4ZWMp
OworCisgICAgICAgIC8vIENyZWF0ZSB0aGUgZGljdGlvbmFyeSB3cmFwcGVyIGZyb20gdGhlIGlu
aXRpYWxpemVyIG9iamVjdC4KKyAgICAgICAgSlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnkoZXhlYywg
aW5pdGlhbGl6ZXJPYmplY3QpOworCisgICAgICAgIC8vIEF0dGVtcHQgdG8gZmlsbCBpbiB0aGUg
RXZlbnRJbml0LgorICAgICAgICBpZiAoIWZpbGxUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQoZXZl
bnRJbml0LCBkaWN0aW9uYXJ5KSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgfQorCisgICAgUmVmUHRyPFRlc3RFdmVudENvbnN0cnVjdG9y
PiBldmVudCA9IFRlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGUoZXZlbnRUeXBlLCBldmVudElu
aXQpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9y
LT5nbG9iYWxPYmplY3QoKSwgZXZlbnQuZ2V0KCkpKTsKK30KKworYm9vbCBmaWxsVGVzdEV2ZW50
Q29uc3RydWN0b3JJbml0KFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdCYgZXZlbnRJbml0LCBKU0Rp
Y3Rpb25hcnkmIGRpY3Rpb25hcnkpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIENvbnN0cnVj
dFR5cGUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7CiAgICAgY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3RFdmVudENvbnN0cnVjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggNTllMThjZi4uMjZkZWY1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC0yOSw2ICsyOSw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSlNEaWN0aW9uYXJ5OworCiBjbGFzcyBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yIDogcHVibGljIEpTRE9NV3JhcHBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBKU0RPTVdyYXBwZXIgQmFzZTsKQEAgLTExMyw2ICsxMTUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwg
SlNDOjpDb25zdHJ1Y3REYXRhJik7CiB9OwogCitib29sIGZpbGxUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckluaXQoVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0JiwgSlNEaWN0aW9uYXJ5Jik7CisKIC8vIEF0
dHJpYnV0ZXMKIAogSlNDOjpKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEV2ZW50Q29u
c3RydWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RF
dmVudENvbnN0cnVjdG9yLmlkbAppbmRleCA4ZDNiYWVlLi5jMDU3Y2E3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEV2ZW50Q29uc3RydWN0b3Iu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXZlbnRD
b25zdHJ1Y3Rvci5pZGwKQEAgLTMwLDcgKzMwLDcgQEAKIC8vIGNoYW5nZXMgaW4gaXRzIG91cHV0
LgogbW9kdWxlIHRlc3QgewogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEN1c3RvbUNvbnN0cnVj
dG9yPUV2ZW50CisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQKICAgICBdIFRlc3RF
dmVudENvbnN0cnVjdG9yIHsKICAgICAgICAgLy8gQXR0cmlidXRlcwogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGF0dHIxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwCmluZGV4IGNlMjg5MjcuLjE0ZTJiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHAKQEAgLTIxLDggKzIxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIgogCisjaW5jbHVkZSAiT3B0aW9uc09iamVj
dC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJWOEJp
bmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKICNpbmNsdWRlICJWOEJpbmRp
bmdTdGF0ZS5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIlY4SXNvbGF0
ZWRDb250ZXh0LmgiCkBAIC02MCw2ICs2MiwzOCBAQCBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJp
YnV0ZSBUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJzW10gPSB7CiAgICAgeyJhdHRyMiIsIFRlc3RF
dmVudENvbnN0cnVjdG9ySW50ZXJuYWw6OmF0dHIyQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiB9OwogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiRE9NLlRlc3RFdmVudENvbnN0cnVjdG9yLkNvbnN0cnVjdG9yIik7CisKKyAgICBp
ZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJE
T00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBW
OFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgp
ID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQorICAgICAgICByZXR1cm4g
YXJncy5Ib2xkZXIoKTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6VHlwZUVycm9y
KTsKKworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0
ZXI8PiwgdHlwZSwgYXJnc1swXSk7CisgICAgVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0IGV2ZW50
SW5pdDsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+PSAyKSB7CisgICAgICAgIEVYQ0VQVElPTl9C
TE9DSyhPcHRpb25zT2JqZWN0LCBvcHRpb25zLCBhcmdzWzFdKTsKKyAgICAgICAgaWYgKCFmaWxs
VGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KGV2ZW50SW5pdCwgb3B0aW9ucykpCisgICAgICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKworICAgIFJlZlB0cjxUZXN0RXZlbnRD
b25zdHJ1Y3Rvcj4gZXZlbnQgPSBUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHR5cGUsIGV2
ZW50SW5pdCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIo
KSwgJmluZm8sIGV2ZW50LmdldCgpKTsKKyAgICByZXR1cm4gdG9WOChldmVudC5yZWxlYXNlKCks
IGFyZ3MuSG9sZGVyKCkpOworfQorCitib29sIGZpbGxUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQo
VGVzdEV2ZW50Q29uc3RydWN0b3JJbml0JiBldmVudEluaXQsIGNvbnN0IE9wdGlvbnNPYmplY3Qm
IG9wdGlvbnMpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRl
bXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjKQogewogICAg
IGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3Iu
aAppbmRleCBkYTFlNTExLi41MjBlMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9y
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBPcHRp
b25zT2JqZWN0OwogY2xhc3MgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKQEAgLTc1LDYg
Kzc2LDggQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8IFRl
c3RFdmVudENvbnN0cnVjdG9yID4gaW1wbCkKICAgICByZXR1cm4gdG9WOChpbXBsLmdldCgpKTsK
IH0KIAorYm9vbCBmaWxsVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KFRlc3RFdmVudENvbnN0cnVj
dG9ySW5pdCYsIGNvbnN0IE9wdGlvbnNPYmplY3QmKTsKKwogfQogCiAjZW5kaWYgLy8gVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
aWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbAppbmRleCAwZmI1OGUyLi44MGIyZjMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudC5pZGwKQEAgLTIzLDggKzIzLDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAg
ICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKICAgICBpbnRlcmZhY2UgWwogICAgICAg
ICBDdXN0b21Ub0pTLAotICAgICAgICBWOENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQsCi0gICAg
ICAgIEpTQ3VzdG9tQ29uc3RydWN0b3IsCisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZl
bnQsCiAgICAgICAgIE5vU3RhdGljVGFibGVzLAogICAgICAgICBQb2x5bW9ycGhpYwogICAgIF0g
RXZlbnQgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115159</attachid>
            <date>2011-11-15 07:04:15 -0800</date>
            <delta_ts>2011-11-15 07:04:15 -0800</delta_ts>
            <desc>To see if win build looks happy</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>19020</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OWZjMjE0Li4xY2NiOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDUg
QEAKIDIwMTEtMTEtMTQgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIE1ha2UgQ29kZUdlbmVyYXRvckpTLnBtIGdlbmVyYXRlIEV2ZW50IGNvbnN0cnVjdG9y
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIyNTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgQ29k
ZUdlbmVyYXRvclY4LnBtIGNhbiBnZW5lcmF0ZSBFdmVudCBjb25zdHJ1Y3RvcnMgdXNpbmcKKyAg
ICAgICAgW0NvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnRdIElETCAoYnVnIDcyMDU1KS4KKyAgICAg
ICAgVGhpcyBwYXRjaCBtYWtlcyBDb2RlR2VuZXJhdG9ySlMucG0gYWxzbyBnZW5lcmF0ZSB0aGUg
RXZlbnQgY29uc3RydWN0b3JzCisgICAgICAgIGFuZCByZXBsYWNlcyBhIGN1c3RvbSBjb25zdHJ1
Y3RvciBvZiBFdmVudCB3aXRoIHRoZSBnZW5lcmF0ZWQgb25lLgorICAgICAgICBBZnRlciB0aGlz
IHBhdGNoIGlzIGxhbmRlZCB3aXRob3V0IHJlZ3Jlc3Npb25zLAorICAgICAgICBJIHdpbGwgcmVw
bGFjZSBjdXN0b20gY29uc3RydWN0b3JzIG9mIGFsbCBvdGhlciBFdmVudHMgaW4gSlNDLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvZXZlbnQtY29uc3RydWN0b3Jz
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9jdXN0b20tZXZl
bnQtY29uc3RydWN0b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvY29uc3RydWN0
b3JzL3Byb2dyZXNzLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBB
ZGRlZCBKU0RpY3Rpb25hcnkuaC4KKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJh
dGlvbik6IEFkZGVkIGEgaGVhZGVyIGZvciBmaWxsWFhYWEV2ZW50SW5pdCguLi4pLgorICAgICAg
ICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOiBHZW5lcmF0ZXMgYW4gRXZlbnQgY29u
c3RydWN0b3IuIFRoZSBnZW5lcmF0ZWQgY29kZSBpcyB0aGUgc2FtZSBhcyB0aGUgY29kZSB0aGF0
IGhhZCBiZWVuIHdyaXR0ZW4gaW4gSlNFdmVudENvbnN0cnVjdG9ycy5jcHAuCisgICAgICAgIChJ
c0NvbnN0cnVjdGFibGUpOiBKdWRnZXMgaWYgYSBnaXZlbiBpbnRlcmZhY2UgaXMgY29uc3RydWN0
YWJsZS4KKyAgICAgICAgKElzQ29uc3RydWN0b3JUZW1wbGF0ZSk6IEp1ZGdlcyBpZiBhIGdpdmVu
IGludGVyZmFjZSBoYXMgYSBnaXZlbiB0ZW1wbGF0ZSwgZS5nLiBqdWRnZXMgaWYgYW4gaW50ZXJm
YWNlIGhhcyBbQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudF0uCisKKyAgICAgICAgKiBiaW5kaW5n
cy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmg6IFJlbW92ZWQgYSBjdXN0b20gY29uc3RydWN0
b3Igb2YgRXZlbnQuCisgICAgICAgICogZG9tL0V2ZW50LmlkbDogSW4gZXNzZW5jZSwgcmVwbGFj
ZWQgW0pTQ3VzdG9tQ29uc3RydWN0b3JdIElETCB3aXRoIFtKU0NvbnN0cnVjdG9yVGVtcGxhdGU9
RXZlbnRdIElETC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oOiBBZGRl
ZCAjaWZkZWYgbWFjcm8gdG8gdGVtcGxhdGUgZGVmaW5pdGlvbnMgdG8gYXZvaWQgIm11bHRpcGxl
IHN5bWJvbCBkZWZpbmVkIiBlcnJvciBpbiB3aW4gYnVpbGQuIFRoaXMgbWFjcm8gd2lsbCBiZSBz
b29uIHJlbW92ZWQgYWZ0ZXIgYWxsIHRoZSByZWxhdGVkIHBhdGNoZXMgZm9yIHI3MTM3OSBhcmUg
bGFuZGVkLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFdmVudENvbnN0
cnVjdG9yLmlkbDogQ2hhbmdlZCAnQ3VzdG9tQ29uc3RydWN0b3I9RXZlbnQnIHRvICdDb25zdHJ1
Y3RvclRlbXBsYXRlPUV2ZW50Jy4gV2Ugc2hvdWxkIGhhdmUgY2hhbmdlZCB0aGlzIGluIHIxMDAx
MDguCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwOiBVcGRhdGVkIGEgcnVuLWJpbmRpbmdzLXRlc3RzIHJlc3VsdC4KKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpmaWxsVGVzdEV2ZW50Q29u
c3RydWN0b3JJbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5oOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpmaWxsVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOiBEaXR0by4KKwor
MjAxMS0xMS0xNCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKICAgICAg
ICAgUmVtb3ZlIGFsbCBjdXN0b20gY29uc3RydWN0b3JzIG9mIEV2ZW50cyBpbiBWOAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwNzQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9FdmVudENvbnN0cnVjdG9ycy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9FdmVudENvbnN0cnVjdG9ycy5oCmlu
ZGV4IGRhMDE4YjMuLjgyYjMyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dlbmVyaWMvRXZlbnRDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmgKQEAgLTE0Niw3ICsxNDYsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2RlZmluZSBJTlNUQU5USUFURV9BTExfRVZFTlRfSU5J
VElBTElaSU5HX0NPTlNUUlVDVE9SUyhESUNUSU9OQVJZX1NUQVJULCBESUNUSU9OQVJZX0VORCwg
RklMTF9QQVJFTlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJUWSkgXAotICAgIElOU1RBTlRJQVRF
X0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUl9GT1JfRVZFTlQoRElDVElPTkFSWV9TVEFSVCwgRElD
VElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpIFwKICAg
ICBJTlNUQU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX0NVU1RPTV9FVkVOVChE
SUNUSU9OQVJZX1NUQVJULCBESUNUSU9OQVJZX0VORCwgRklMTF9QQVJFTlRfUFJPUEVSVElFUywg
RklMTF9QUk9QRVJUWSkgXAogICAgIElOU1RBTlRJQVRFX0lOSVRJQUxJWklOR19DT05TVFJVQ1RP
Ul9GT1JfUFJPR1JFU1NfRVZFTlQoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJ
TExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpIFwKICAgICBJTlNUQU5USUFURV9J
TklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX1dFQktJVF9BTklNQVRJT05fRVZFTlQoRElDVElP
TkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExf
UFJPUEVSVFkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlj
dGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKaW5k
ZXggNTU3MTc3Yi4uNTg5NTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0
aW9uYXJ5LmgKQEAgLTgyLDYgKzgyLDggQEAgcHJpdmF0ZToKICAgICBKU0M6OkpTT2JqZWN0KiBt
X2luaXRpYWxpemVyT2JqZWN0OwogfTsKIAorLy8gVGhpcyBtYWNybyBpcyB0ZW1wb3JhcnkgYW5k
IHdpbGwgYmUgc29vbiByZW1vdmVkIGFmdGVyIHI3MTM3OSBpcyBsYW5kZWQuCisjaWZuZGVmIEpT
RElDVElPTkFSWV9IX0lTX0lOQ0xVREVEX0JZX0RFUklWRURTT1VSQ0VTCiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBSZXN1bHQ+CiBib29sIEpTRGljdGlvbmFyeTo6dHJ5R2V0UHJv
cGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiBjb250ZXh0LCB2b2lkICgqc2V0dGVy
KShUKiBjb250ZXh0LCBjb25zdCBSZXN1bHQmKSkKQEAgLTEyMCw2ICsxMjIsOCBAQCBib29sIEpT
RGljdGlvbmFyeTo6dHJ5R2V0UHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBSZXN1
bHQmIGZpbmFsUmVzdWx0KQogICAgIHJldHVybiB0cnlHZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUs
ICZmaW5hbFJlc3VsdCwgSWRlbnRpdHlTZXR0ZXI6OmlkZW50aXR5U2V0dGVyKTsKIH0KIAorI2Vu
ZGlmIC8vIEpTRElDVElPTkFSWV9IX0lTX0lOQ0xVREVEX0JZX0RFUklWRURTT1VSQ0VTCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEpTRGljdGlvbmFyeV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IDI1MDA1NjIuLjJiZWFlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC03MjMsNiArNzIzLDkgQEAgc3ViIEdlbmVyYXRl
SGVhZGVyCiAgICAgfQogCiAgICAgQWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQoIkpTRE9NV2luZG93
U2hlbGwiKSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IjsKKyAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiI2RlZmluZSBKU0RJQ1RJT05BUllfSF9JU19JTkNMVURFRF9CWV9ERVJJVkVE
U09VUkNFU1xuIik7CisgICAgQWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQoIkpTRGljdGlvbmFyeSIp
IGlmIElzQ29uc3RydWN0b3JUZW1wbGF0ZSgkZGF0YU5vZGUsICJFdmVudCIpOworICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIjdW5kZWYgSlNESUNUSU9OQVJZX0hfSVNfSU5DTFVERURfQllfREVS
SVZFRFNPVVJDRVNcbiIpOwogCiAgICAgIyBDbGFzcyBkZWNsYXJhdGlvbgogICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICJjbGFzcyAkY2xhc3NOYW1lIDogcHVibGljICRwYXJlbnRDbGFzc05hbWUg
e1xuIik7CkBAIC0xMDcyLDcgKzEwNzUsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUNvbnN0cnVjdG9yIn0g
fHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSB8
fCAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT21pdENvbnN0cnVjdG9yIn0pIHsK
ICAgICAgICAgJGhlYWRlckluY2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKLSAgICAgICAg
R2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxAaGVhZGVyQ29udGVudCwgJGNsYXNzTmFt
ZSwgJGRhdGFOb2RlKTsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxA
aGVhZGVyQ29udGVudCwgJGNsYXNzTmFtZSwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAg
ICAgfQogCiAgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CkBAIC0zMTg5LDkgKzMxOTIsOSBA
QCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgbXkgJG91dHB1dEFycmF5
ID0gc2hpZnQ7CiAgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OwogICAgIG15ICRkYXRhTm9kZSA9
IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKICAgICBteSAkY29uc3Ry
dWN0b3JDbGFzc05hbWUgPSAiJHtjbGFzc05hbWV9Q29uc3RydWN0b3IiOwotICAgIG15ICRjYW5D
b25zdHJ1Y3QgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9
IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tQ29uc3RydWN0b3Ii
fSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9
OwogICAgIG15ICRjYWxsV2l0aCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNh
bGxXaXRoIn07CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJjbGFzcyAke2NvbnN0cnVjdG9y
Q2xhc3NOYW1lfSA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7XG4iKTsKQEAgLTMyMjAs
MTEgKzMyMjMsMTUgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbgogICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgInByb3RlY3RlZDpcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgRE9N
Q29uc3RydWN0b3JPYmplY3Q6OlN0cnVjdHVyZUZsYWdzO1xuIik7CiAKLSAgICBpZiAoJGNhbkNv
bnN0cnVjdCkgeworICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGRhdGFOb2RlKSkgewogICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oSlNDOjpFeGVjU3RhdGUqKTtcbiIpOwog
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlw
ZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7XG4i
KTsKICAgICB9CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifTtcblxuIik7CisKKyAgICBpZiAo
SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwgIkV2ZW50IikpIHsKKyAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiYm9vbCBmaWxsJHtpbnRlcmZhY2VOYW1lfUluaXQoJHtpbnRlcmZh
Y2VOYW1lfUluaXQmLCBKU0RpY3Rpb25hcnkmKTtcblxuIik7CisgICAgfQogfQogCiBzdWIgR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KQEAgLTMyNjksOCArMzI3Niw3MiBAQCBzdWIgR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
cmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSwg
SlNET01XcmFwcGVyPihleGVjLCAmJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1UYWJsZSwgc3RhdGlj
X2Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIAotICAg
IGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9IHx8ICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9KSB7Ci0g
ICAgICAgIGlmICghKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tQ29u
c3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25z
dHJ1Y3RvciJ9KSkgeworICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGRhdGFOb2RlKSkgeworICAg
ICAgICBpZiAoSXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwgIkV2ZW50IikpIHsKKyAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRGljdGlvbmFyeS5oIn0gPSAxOworICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7CisKKyAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgPDxFTkQpOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05hbWV9KEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSoganNDb25zdHJ1Y3RvciA9
IHN0YXRpY19jYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+Y2FsbGVlKCkpOwor
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlY3V0aW9uQ29udGV4dCA9IGpzQ29uc3Ry
dWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWV4ZWN1dGlvbkNvbnRl
eHQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJy
b3IoZXhlYywgIkNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZXhlY3V0aW9uIGNvbnRleHQgaXMgdW5h
dmFpbGFibGUiKSk7CisKKyAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gdXN0cmluZ1RvQXRv
bWljU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisKKyAgICAke2ludGVyZmFjZU5hbWV9SW5pdCBldmVudEluaXQ7CisKKyAgICBK
U1ZhbHVlIGluaXRpYWxpemVyVmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBpZiAoIWlu
aXRpYWxpemVyVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICAvLyBHaXZlbiB0
aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBhbiBvYmplY3QuCisgICAgICAg
IEpTT2JqZWN0KiBpbml0aWFsaXplck9iamVjdCA9IGluaXRpYWxpemVyVmFsdWUudG9PYmplY3Qo
ZXhlYyk7CisKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBkaWN0aW9uYXJ5IHdyYXBwZXIgZnJvbSB0
aGUgaW5pdGlhbGl6ZXIgb2JqZWN0LgorICAgICAgICBKU0RpY3Rpb25hcnkgZGljdGlvbmFyeShl
eGVjLCBpbml0aWFsaXplck9iamVjdCk7CisKKyAgICAgICAgLy8gQXR0ZW1wdCB0byBmaWxsIGlu
IHRoZSBFdmVudEluaXQuCisgICAgICAgIGlmICghZmlsbCR7aW50ZXJmYWNlTmFtZX1Jbml0KGV2
ZW50SW5pdCwgZGljdGlvbmFyeSkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIH0KKworICAgIFJlZlB0cjwke2ludGVyZmFjZU5hbWV9PiBl
dmVudCA9ICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZShldmVudFR5cGUsIGV2ZW50SW5pdCk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2Jh
bE9iamVjdCgpLCBldmVudC5nZXQoKSkpOworfQorCitib29sIGZpbGwke2ludGVyZmFjZU5hbWV9
SW5pdCgke2ludGVyZmFjZU5hbWV9SW5pdCYgZXZlbnRJbml0LCBKU0RpY3Rpb25hcnkmIGRpY3Rp
b25hcnkpCit7CitFTkQKKworICAgICAgICAgICAgZm9yZWFjaCBteSAkaW50ZXJmYWNlQmFzZSAo
QHskZGF0YU5vZGUtPnBhcmVudHN9KSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIDw8RU5EKTsKKyAgICBpZiAoIWZpbGwke2ludGVyZmFjZUJhc2V9SW5pdChldmVudEluaXQs
IGRpY3Rpb25hcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKK0VORAorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmb3IgKG15ICRpbmRleCA9IDA7ICRpbmRleCA8IEB7JGRhdGFOb2Rl
LT5hdHRyaWJ1dGVzfTsgJGluZGV4KyspIHsKKyAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRl
ID0gQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9WyRpbmRleF07CisgICAgICAgICAgICAgICAgaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkluaXRpYWxpemVk
QnlDb25zdHJ1Y3RvciJ9KSB7CisgICAgICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1l
ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgIGlmICghZGljdGlvbmFyeS50cnlHZXRQcm9wZXJ0
eSgiJHthdHRyaWJ1dGVOYW1lfSIsIGV2ZW50SW5pdC4ke2F0dHJpYnV0ZU5hbWV9KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworRU5ECisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworRU5ECisgICAgICAgIH0gZWxzaWYgKCEoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0pKSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFz
c05hbWV9Ojpjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oRXhlY1N0YXRlKiBleGVjKVxuIik7CiAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKIApAQCAtMzMzMiw0ICszNDAzLDE5
IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgIH0KIH0KIAorc3ViIElz
Q29uc3RydWN0YWJsZQoreworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgcmV0dXJu
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0gfHwgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDb25zdHJ1Y3RvclRlbXBsYXRlIn0gfHwgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JUZW1wbGF0ZSJ9OworfQor
CitzdWIgSXNDb25zdHJ1Y3RvclRlbXBsYXRlCit7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7
CisgICAgbXkgJHRlbXBsYXRlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ29uc3RydWN0b3JUZW1wbGF0ZSJ9ICYmICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ29uc3RydWN0b3JUZW1wbGF0ZSJ9IGVxICR0ZW1wbGF0
ZSkgfHwgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yVGVtcGxh
dGUifSAmJiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclRlbXBs
YXRlIn0gZXEgJHRlbXBsYXRlKTsKK30KKwogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmNwcAppbmRleCBmNzMxNmUzLi45ZTFjZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwCkBAIC0yMSw4ICsyMSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkpTVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKIAorI2luY2x1ZGUgIkpTRGljdGlvbmFy
eS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJUZXN0RXZlbnRDb25zdHJ1Y3Rvci5o
IgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogCkBAIC05Nyw2ICs5OSw0MiBAQCBib29sIEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplYwogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rl
c3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwgc3RhdGljX2Nhc3Q8SlNUZXN0RXZl
bnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdEV2ZW50Q29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcioganND
b25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
cio+KGV4ZWMtPmNhbGxlZSgpKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWN1
dGlvbkNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cisg
ICAgaWYgKCFleGVjdXRpb25Db250ZXh0KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJDb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGV4
ZWN1dGlvbiBjb250ZXh0IGlzIHVuYXZhaWxhYmxlIikpOworCisgICAgQXRvbWljU3RyaW5nIGV2
ZW50VHlwZSA9IHVzdHJpbmdUb0F0b21pY1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgVGVzdEV2ZW50Q29uc3RydWN0
b3JJbml0IGV2ZW50SW5pdDsKKworICAgIEpTVmFsdWUgaW5pdGlhbGl6ZXJWYWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDEpOworICAgIGlmICghaW5pdGlhbGl6ZXJWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CisgICAgICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlz
IHlpZWxkIGFuIG9iamVjdC4KKyAgICAgICAgSlNPYmplY3QqIGluaXRpYWxpemVyT2JqZWN0ID0g
aW5pdGlhbGl6ZXJWYWx1ZS50b09iamVjdChleGVjKTsKKworICAgICAgICAvLyBDcmVhdGUgdGhl
IGRpY3Rpb25hcnkgd3JhcHBlciBmcm9tIHRoZSBpbml0aWFsaXplciBvYmplY3QuCisgICAgICAg
IEpTRGljdGlvbmFyeSBkaWN0aW9uYXJ5KGV4ZWMsIGluaXRpYWxpemVyT2JqZWN0KTsKKworICAg
ICAgICAvLyBBdHRlbXB0IHRvIGZpbGwgaW4gdGhlIEV2ZW50SW5pdC4KKyAgICAgICAgaWYgKCFm
aWxsVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KGV2ZW50SW5pdCwgZGljdGlvbmFyeSkpCisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKwor
ICAgIFJlZlB0cjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gZXZlbnQgPSBUZXN0RXZlbnRDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKGV2ZW50VHlwZSwgZXZlbnRJbml0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGV2ZW50Lmdl
dCgpKSk7Cit9CisKK2Jvb2wgZmlsbFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdChUZXN0RXZlbnRD
b25zdHJ1Y3RvckluaXQmIGV2ZW50SW5pdCwgSlNEaWN0aW9uYXJ5JiBkaWN0aW9uYXJ5KQorewor
ICAgIHJldHVybiB0cnVlOworfQorCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdEV2ZW50Q29uc3RydWN0
b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBj
b25zdHJ1Y3REYXRhKQogewogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29u
c3RydWN0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5oCmluZGV4IDU5ZTE4Y2YuLjI2ZGVmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0
b3IuaApAQCAtMjksNiArMjksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEpT
RGljdGlvbmFyeTsKKwogY2xhc3MgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RP
TVdyYXBwZXIgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CkBAIC0x
MTMsNiArMTE1LDggQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOwogfTsK
IAorYm9vbCBmaWxsVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KFRlc3RFdmVudENvbnN0cnVjdG9y
SW5pdCYsIEpTRGljdGlvbmFyeSYpOworCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6SlNWYWx1ZSBq
c1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUs
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFdmVudENvbnN0cnVjdG9yLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXZlbnRDb25zdHJ1Y3Rvci5pZGwKaW5kZXgg
OGQzYmFlZS4uYzA1N2NhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RFdmVudENvbnN0cnVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEV2ZW50Q29uc3RydWN0b3IuaWRsCkBAIC0zMCw3ICsz
MCw3IEBACiAvLyBjaGFuZ2VzIGluIGl0cyBvdXB1dC4KIG1vZHVsZSB0ZXN0IHsKICAgICBpbnRl
cmZhY2UgWwotICAgICAgICBDdXN0b21Db25zdHJ1Y3Rvcj1FdmVudAorICAgICAgICBDb25zdHJ1
Y3RvclRlbXBsYXRlPUV2ZW50CiAgICAgXSBUZXN0RXZlbnRDb25zdHJ1Y3RvciB7CiAgICAgICAg
IC8vIEF0dHJpYnV0ZXMKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBhdHRy
MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBjZTI4OTI3Li4xNGUy
YjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0yMSw4ICsyMSwx
MCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlY4VGVzdEV2ZW50Q29uc3RydWN0
b3IuaCIKIAorI2luY2x1ZGUgIk9wdGlvbnNPYmplY3QuaCIKICNpbmNsdWRlICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5k
aW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKICNpbmNsdWRlICJWOERP
TVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgpAQCAtNjAsNiArNjIs
MzggQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgVGVzdEV2ZW50Q29uc3RydWN0b3JB
dHRyc1tdID0gewogICAgIHsiYXR0cjIiLCBUZXN0RXZlbnRDb25zdHJ1Y3RvckludGVybmFsOjph
dHRyMkF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0RXZlbnRDb25z
dHJ1Y3Rvci5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgp
KQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5u
b3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKworICAg
IGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBF
eGlzdGluZ09iamVjdCkKKyAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisKKyAgICBpZiAo
YXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdo
IGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBTVFJJTkdfVE9fVjhQQVJB
TUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHR5cGUsIGFyZ3NbMF0pOworICAg
IFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdCBldmVudEluaXQ7CisgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPj0gMikgeworICAgICAgICBFWENFUFRJT05fQkxPQ0soT3B0aW9uc09iamVjdCwgb3B0aW9u
cywgYXJnc1sxXSk7CisgICAgICAgIGlmICghZmlsbFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdChl
dmVudEluaXQsIG9wdGlvbnMpKQorICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
KyAgICB9CisKKyAgICBSZWZQdHI8VGVzdEV2ZW50Q29uc3RydWN0b3I+IGV2ZW50ID0gVGVzdEV2
ZW50Q29uc3RydWN0b3I6OmNyZWF0ZSh0eXBlLCBldmVudEluaXQpOworCisgICAgVjhET01XcmFw
cGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBldmVudC5nZXQoKSk7Cisg
ICAgcmV0dXJuIHRvVjgoZXZlbnQucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigpKTsKK30KKworYm9v
bCBmaWxsVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdCYg
ZXZlbnRJbml0LCBjb25zdCBPcHRpb25zT2JqZWN0JiBvcHRpb25zKQoreworICAgIHJldHVybiB0
cnVlOworfQorCiBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggZGExZTUxMS4uNTIwZTFjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgT3B0aW9uc09iamVjdDsKIGNsYXNzIFY4VGVzdEV2
ZW50Q29uc3RydWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVu
ZGVudExpZmV0aW1lID0gZmFsc2U7CkBAIC03NSw2ICs3Niw4IEBAIGlubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0RXZlbnRDb25zdHJ1Y3RvciA+IGltcGwp
CiAgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQoKSk7CiB9CiAKK2Jvb2wgZmlsbFRlc3RFdmVudENv
bnN0cnVjdG9ySW5pdChUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQmLCBjb25zdCBPcHRpb25zT2Jq
ZWN0Jik7CisKIH0KIAogI2VuZGlmIC8vIFY4VGVzdEV2ZW50Q29uc3RydWN0b3JfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudC5pZGwKaW5kZXggMGZiNThlMi4uODBiMmYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsCkBAIC0y
Myw4ICsyMyw3IEBAIG1vZHVsZSBldmVudHMgewogICAgIC8vIEludHJvZHVjZWQgaW4gRE9NIExl
dmVsIDI6CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ3VzdG9tVG9KUywKLSAgICAgICAgVjhD
b25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50LAotICAgICAgICBKU0N1c3RvbUNvbnN0cnVjdG9yLAor
ICAgICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50LAogICAgICAgICBOb1N0YXRpY1RhYmxl
cywKICAgICAgICAgUG9seW1vcnBoaWMKICAgICBdIEV2ZW50IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115422</attachid>
            <date>2011-11-16 12:30:13 -0800</date>
            <delta_ts>2011-11-16 12:30:13 -0800</delta_ts>
            <desc>Another try</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>19488</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OWZjMjE0Li4xY2NiOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDUg
QEAKIDIwMTEtMTEtMTQgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIE1ha2UgQ29kZUdlbmVyYXRvckpTLnBtIGdlbmVyYXRlIEV2ZW50IGNvbnN0cnVjdG9y
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIyNTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgQ29k
ZUdlbmVyYXRvclY4LnBtIGNhbiBnZW5lcmF0ZSBFdmVudCBjb25zdHJ1Y3RvcnMgdXNpbmcKKyAg
ICAgICAgW0NvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnRdIElETCAoYnVnIDcyMDU1KS4KKyAgICAg
ICAgVGhpcyBwYXRjaCBtYWtlcyBDb2RlR2VuZXJhdG9ySlMucG0gYWxzbyBnZW5lcmF0ZSB0aGUg
RXZlbnQgY29uc3RydWN0b3JzCisgICAgICAgIGFuZCByZXBsYWNlcyBhIGN1c3RvbSBjb25zdHJ1
Y3RvciBvZiBFdmVudCB3aXRoIHRoZSBnZW5lcmF0ZWQgb25lLgorICAgICAgICBBZnRlciB0aGlz
IHBhdGNoIGlzIGxhbmRlZCB3aXRob3V0IHJlZ3Jlc3Npb25zLAorICAgICAgICBJIHdpbGwgcmVw
bGFjZSBjdXN0b20gY29uc3RydWN0b3JzIG9mIGFsbCBvdGhlciBFdmVudHMgaW4gSlNDLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvZXZlbnQtY29uc3RydWN0b3Jz
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9jdXN0b20tZXZl
bnQtY29uc3RydWN0b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvY29uc3RydWN0
b3JzL3Byb2dyZXNzLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBB
ZGRlZCBKU0RpY3Rpb25hcnkuaC4KKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJh
dGlvbik6IEFkZGVkIGEgaGVhZGVyIGZvciBmaWxsWFhYWEV2ZW50SW5pdCguLi4pLgorICAgICAg
ICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOiBHZW5lcmF0ZXMgYW4gRXZlbnQgY29u
c3RydWN0b3IuIFRoZSBnZW5lcmF0ZWQgY29kZSBpcyB0aGUgc2FtZSBhcyB0aGUgY29kZSB0aGF0
IGhhZCBiZWVuIHdyaXR0ZW4gaW4gSlNFdmVudENvbnN0cnVjdG9ycy5jcHAuCisgICAgICAgIChJ
c0NvbnN0cnVjdGFibGUpOiBKdWRnZXMgaWYgYSBnaXZlbiBpbnRlcmZhY2UgaXMgY29uc3RydWN0
YWJsZS4KKyAgICAgICAgKElzQ29uc3RydWN0b3JUZW1wbGF0ZSk6IEp1ZGdlcyBpZiBhIGdpdmVu
IGludGVyZmFjZSBoYXMgYSBnaXZlbiB0ZW1wbGF0ZSwgZS5nLiBqdWRnZXMgaWYgYW4gaW50ZXJm
YWNlIGhhcyBbQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudF0uCisKKyAgICAgICAgKiBiaW5kaW5n
cy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmg6IFJlbW92ZWQgYSBjdXN0b20gY29uc3RydWN0
b3Igb2YgRXZlbnQuCisgICAgICAgICogZG9tL0V2ZW50LmlkbDogSW4gZXNzZW5jZSwgcmVwbGFj
ZWQgW0pTQ3VzdG9tQ29uc3RydWN0b3JdIElETCB3aXRoIFtKU0NvbnN0cnVjdG9yVGVtcGxhdGU9
RXZlbnRdIElETC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oOiBBZGRl
ZCAjaWZkZWYgbWFjcm8gdG8gdGVtcGxhdGUgZGVmaW5pdGlvbnMgdG8gYXZvaWQgIm11bHRpcGxl
IHN5bWJvbCBkZWZpbmVkIiBlcnJvciBpbiB3aW4gYnVpbGQuIFRoaXMgbWFjcm8gd2lsbCBiZSBz
b29uIHJlbW92ZWQgYWZ0ZXIgYWxsIHRoZSByZWxhdGVkIHBhdGNoZXMgZm9yIHI3MTM3OSBhcmUg
bGFuZGVkLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFdmVudENvbnN0
cnVjdG9yLmlkbDogQ2hhbmdlZCAnQ3VzdG9tQ29uc3RydWN0b3I9RXZlbnQnIHRvICdDb25zdHJ1
Y3RvclRlbXBsYXRlPUV2ZW50Jy4gV2Ugc2hvdWxkIGhhdmUgY2hhbmdlZCB0aGlzIGluIHIxMDAx
MDguCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwOiBVcGRhdGVkIGEgcnVuLWJpbmRpbmdzLXRlc3RzIHJlc3VsdC4KKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpmaWxsVGVzdEV2ZW50Q29u
c3RydWN0b3JJbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5oOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpmaWxsVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOiBEaXR0by4KKwor
MjAxMS0xMS0xNCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKICAgICAg
ICAgUmVtb3ZlIGFsbCBjdXN0b20gY29uc3RydWN0b3JzIG9mIEV2ZW50cyBpbiBWOAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwNzQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9FdmVudENvbnN0cnVjdG9ycy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9FdmVudENvbnN0cnVjdG9ycy5oCmlu
ZGV4IGRhMDE4YjMuLjgyYjMyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dlbmVyaWMvRXZlbnRDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmgKQEAgLTE0Niw3ICsxNDYsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2RlZmluZSBJTlNUQU5USUFURV9BTExfRVZFTlRfSU5J
VElBTElaSU5HX0NPTlNUUlVDVE9SUyhESUNUSU9OQVJZX1NUQVJULCBESUNUSU9OQVJZX0VORCwg
RklMTF9QQVJFTlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJUWSkgXAotICAgIElOU1RBTlRJQVRF
X0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUl9GT1JfRVZFTlQoRElDVElPTkFSWV9TVEFSVCwgRElD
VElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpIFwKICAg
ICBJTlNUQU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX0NVU1RPTV9FVkVOVChE
SUNUSU9OQVJZX1NUQVJULCBESUNUSU9OQVJZX0VORCwgRklMTF9QQVJFTlRfUFJPUEVSVElFUywg
RklMTF9QUk9QRVJUWSkgXAogICAgIElOU1RBTlRJQVRFX0lOSVRJQUxJWklOR19DT05TVFJVQ1RP
Ul9GT1JfUFJPR1JFU1NfRVZFTlQoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJ
TExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpIFwKICAgICBJTlNUQU5USUFURV9J
TklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX1dFQktJVF9BTklNQVRJT05fRVZFTlQoRElDVElP
TkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExf
UFJPUEVSVFkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCmluZGV4IDc4Y2U5ODYuLjg1NzQwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtNTEsNyArNTEsOSBA
QAogI2luY2x1ZGUgIkpTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAiCiAjaW5j
bHVkZSAiSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwIgogI2luY2x1ZGUgIkpTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcCIKKyNkZWZpbmUgSlNESUNUSU9OQVJZX0hfSVNfSU5DTFVERURfQllfREVS
SVZFRFNPVVJDRVMKICNpbmNsdWRlICJKU0RpY3Rpb25hcnkuY3BwIgorI3VuZGVmIEpTRElDVElP
TkFSWV9IX0lTX0lOQ0xVREVEX0JZX0RFUklWRURTT1VSQ0VTCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmNwcCIKICNpbmNsdWRlICJKU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJK
U0RPTUdsb2JhbE9iamVjdC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5oCmluZGV4IDU1NzE3N2IuLjU4OTU5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGljdGlvbmFyeS5oCkBAIC04Miw2ICs4Miw4IEBAIHByaXZhdGU6CiAgICAgSlNDOjpK
U09iamVjdCogbV9pbml0aWFsaXplck9iamVjdDsKIH07CiAKKy8vIFRoaXMgbWFjcm8gaXMgdGVt
cG9yYXJ5IGFuZCB3aWxsIGJlIHNvb24gcmVtb3ZlZCBhZnRlciByNzEzNzkgaXMgbGFuZGVkLgor
I2lmbmRlZiBKU0RJQ1RJT05BUllfSF9JU19JTkNMVURFRF9CWV9ERVJJVkVEU09VUkNFUwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUmVzdWx0PgogYm9vbCBKU0RpY3Rpb25hcnk6
OnRyeUdldFByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgVCogY29udGV4dCwgdm9p
ZCAoKnNldHRlcikoVCogY29udGV4dCwgY29uc3QgUmVzdWx0JikpCkBAIC0xMjAsNiArMTIyLDgg
QEAgYm9vbCBKU0RpY3Rpb25hcnk6OnRyeUdldFByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5
TmFtZSwgUmVzdWx0JiBmaW5hbFJlc3VsdCkKICAgICByZXR1cm4gdHJ5R2V0UHJvcGVydHkocHJv
cGVydHlOYW1lLCAmZmluYWxSZXN1bHQsIElkZW50aXR5U2V0dGVyOjppZGVudGl0eVNldHRlcik7
CiB9CiAKKyNlbmRpZiAvLyBKU0RJQ1RJT05BUllfSF9JU19JTkNMVURFRF9CWV9ERVJJVkVEU09V
UkNFUworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBKU0RpY3Rpb25hcnlf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQppbmRleCAyNTAwNTYyLi5kNDU3YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNzIzLDYgKzcyMyw3IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAgIEFkZENsYXNzRm9yd2FyZElmTmVlZGVkKCJK
U0RPTVdpbmRvd1NoZWxsIikgaWYgJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyI7CisgICAg
QWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQoIkpTRGljdGlvbmFyeSIpIGlmIElzQ29uc3RydWN0b3JU
ZW1wbGF0ZSgkZGF0YU5vZGUsICJFdmVudCIpOwogCiAgICAgIyBDbGFzcyBkZWNsYXJhdGlvbgog
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyAkY2xhc3NOYW1lIDogcHVibGljICRwYXJl
bnRDbGFzc05hbWUge1xuIik7CkBAIC0xMDcyLDcgKzEwNzMsNyBAQCBzdWIgR2VuZXJhdGVIZWFk
ZXIKIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUNv
bnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29u
c3RydWN0b3IifSB8fCAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT21pdENvbnN0
cnVjdG9yIn0pIHsKICAgICAgICAgJGhlYWRlckluY2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0g
MTsKLSAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxAaGVhZGVyQ29udGVu
dCwgJGNsYXNzTmFtZSwgJGRhdGFOb2RlKTsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRl
Y2xhcmF0aW9uKFxAaGVhZGVyQ29udGVudCwgJGNsYXNzTmFtZSwgJGRhdGFOb2RlLCAkaW50ZXJm
YWNlTmFtZSk7CiAgICAgfQogCiAgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CkBAIC0zMTg5
LDkgKzMxOTAsOSBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgbXkg
JG91dHB1dEFycmF5ID0gc2hpZnQ7CiAgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OwogICAgIG15
ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKICAg
ICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAiJHtjbGFzc05hbWV9Q29uc3RydWN0b3IiOwot
ICAgIG15ICRjYW5Db25zdHJ1Y3QgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
b25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9t
Q29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21D
b25zdHJ1Y3RvciJ9OwogICAgIG15ICRjYWxsV2l0aCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNhbGxXaXRoIn07CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJjbGFzcyAk
e2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7XG4i
KTsKQEAgLTMyMjAsMTEgKzMyMjEsMTUgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJh
dGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInByb3RlY3RlZDpcbiIpOwogICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6SW1wbGVtZW50c0hhc0lu
c3RhbmNlIHwgRE9NQ29uc3RydWN0b3JPYmplY3Q6OlN0cnVjdHVyZUZsYWdzO1xuIik7CiAKLSAg
ICBpZiAoJGNhbkNvbnN0cnVjdCkgeworICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGRhdGFOb2Rl
KSkgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oSlNDOjpFeGVjU3Rh
dGUqKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1
Y3REYXRhJik7XG4iKTsKICAgICB9CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifTtcblxuIik7
CisKKyAgICBpZiAoSXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwgIkV2ZW50IikpIHsK
KyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCBmaWxsJHtpbnRlcmZhY2VOYW1lfUlu
aXQoJHtpbnRlcmZhY2VOYW1lfUluaXQmLCBKU0RpY3Rpb25hcnkmKTtcblxuIik7CisgICAgfQog
fQogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KQEAgLTMyNjksOCArMzI3NCw3
MiBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjwke2NvbnN0cnVjdG9y
Q2xhc3NOYW1lfSwgSlNET01XcmFwcGVyPihleGVjLCAmJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1U
YWJsZSwgc3RhdGljX2Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihvYmplY3QpLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxu
XG4iKTsKIAotICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1
Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tQ29uc3Ry
dWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1
Y3RvciJ9KSB7Ci0gICAgICAgIGlmICghKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkpTQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDdXN0b21Db25zdHJ1Y3RvciJ9KSkgeworICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGRhdGFO
b2RlKSkgeworICAgICAgICBpZiAoSXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRkYXRhTm9kZSwgIkV2
ZW50IikpIHsKKyAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRGljdGlvbmFyeS5oIn0gPSAx
OworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7CisK
KyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgPDxFTkQpOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05h
bWV9KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSoganND
b25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+
Y2FsbGVlKCkpOworCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlY3V0aW9uQ29udGV4
dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWV4
ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
UmVmZXJlbmNlRXJyb3IoZXhlYywgIkNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZXhlY3V0aW9uIGNv
bnRleHQgaXMgdW5hdmFpbGFibGUiKSk7CisKKyAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0g
dXN0cmluZ1RvQXRvbWljU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAke2ludGVyZmFjZU5hbWV9SW5pdCBldmVudElu
aXQ7CisKKyAgICBKU1ZhbHVlIGluaXRpYWxpemVyVmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsK
KyAgICBpZiAoIWluaXRpYWxpemVyVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAg
ICAvLyBHaXZlbiB0aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBhbiBvYmpl
Y3QuCisgICAgICAgIEpTT2JqZWN0KiBpbml0aWFsaXplck9iamVjdCA9IGluaXRpYWxpemVyVmFs
dWUudG9PYmplY3QoZXhlYyk7CisKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBkaWN0aW9uYXJ5IHdy
YXBwZXIgZnJvbSB0aGUgaW5pdGlhbGl6ZXIgb2JqZWN0LgorICAgICAgICBKU0RpY3Rpb25hcnkg
ZGljdGlvbmFyeShleGVjLCBpbml0aWFsaXplck9iamVjdCk7CisKKyAgICAgICAgLy8gQXR0ZW1w
dCB0byBmaWxsIGluIHRoZSBFdmVudEluaXQuCisgICAgICAgIGlmICghZmlsbCR7aW50ZXJmYWNl
TmFtZX1Jbml0KGV2ZW50SW5pdCwgZGljdGlvbmFyeSkpCisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKworICAgIFJlZlB0cjwke2ludGVy
ZmFjZU5hbWV9PiBldmVudCA9ICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZShldmVudFR5cGUsIGV2
ZW50SW5pdCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ29uc3Ry
dWN0b3ItPmdsb2JhbE9iamVjdCgpLCBldmVudC5nZXQoKSkpOworfQorCitib29sIGZpbGwke2lu
dGVyZmFjZU5hbWV9SW5pdCgke2ludGVyZmFjZU5hbWV9SW5pdCYgZXZlbnRJbml0LCBKU0RpY3Rp
b25hcnkmIGRpY3Rpb25hcnkpCit7CitFTkQKKworICAgICAgICAgICAgZm9yZWFjaCBteSAkaW50
ZXJmYWNlQmFzZSAoQHskZGF0YU5vZGUtPnBhcmVudHN9KSB7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICBpZiAoIWZpbGwke2ludGVyZmFjZUJhc2V9SW5p
dChldmVudEluaXQsIGRpY3Rpb25hcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKK0VORAor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKG15ICRpbmRleCA9IDA7ICRpbmRleCA8
IEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfTsgJGluZGV4KyspIHsKKyAgICAgICAgICAgICAgICBt
eSAkYXR0cmlidXRlID0gQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9WyRpbmRleF07CisgICAgICAg
ICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkluaXRpYWxpemVkQnlDb25zdHJ1Y3RvciJ9KSB7CisgICAgICAgICAgICAgICAgICAgIG15ICRh
dHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgIGlmICghZGljdGlvbmFyeS50
cnlHZXRQcm9wZXJ0eSgiJHthdHRyaWJ1dGVOYW1lfSIsIGV2ZW50SW5pdC4ke2F0dHJpYnV0ZU5h
bWV9KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworRU5ECisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworRU5ECisgICAgICAgIH0gZWxzaWYgKCEoJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0pKSB7CiAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29u
c3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oRXhlY1N0YXRlKiBleGVj
KVxuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKIApAQCAtMzMz
Miw0ICszNDAxLDE5IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgIH0K
IH0KIAorc3ViIElzQ29uc3RydWN0YWJsZQoreworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0Owor
CisgICAgcmV0dXJuICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0
cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21Db25z
dHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9y
In0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDb25zdHJ1Y3RvclRlbXBs
YXRlIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JUZW1w
bGF0ZSJ9OworfQorCitzdWIgSXNDb25zdHJ1Y3RvclRlbXBsYXRlCit7CisgICAgbXkgJGRhdGFO
b2RlID0gc2hpZnQ7CisgICAgbXkgJHRlbXBsYXRlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ29uc3RydWN0b3JUZW1wbGF0ZSJ9ICYm
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ29uc3RydWN0b3JUZW1wbGF0ZSJ9
IGVxICR0ZW1wbGF0ZSkgfHwgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0
cnVjdG9yVGVtcGxhdGUifSAmJiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25z
dHJ1Y3RvclRlbXBsYXRlIn0gZXEgJHRlbXBsYXRlKTsKK30KKwogMTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBmNzMxNmUzLi45ZTFjZWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0yMSw4ICsyMSwxMCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkpTVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKIAorI2luY2x1ZGUg
IkpTRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJUZXN0RXZlbnRD
b25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50
aW1lL0pTU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogCkBAIC05Nyw2ICs5OSw0
MiBAQCBib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplYwogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURl
c2NyaXB0b3I8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+
KGV4ZWMsICZKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwgc3RhdGljX2Nh
c3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25z
dHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0
b3JDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGV4ZWN1dGlvbkNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CisgICAgaWYgKCFleGVjdXRpb25Db250ZXh0KQorICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJDb25zdHJ1Y3RvciBh
c3NvY2lhdGVkIGV4ZWN1dGlvbiBjb250ZXh0IGlzIHVuYXZhaWxhYmxlIikpOworCisgICAgQXRv
bWljU3RyaW5nIGV2ZW50VHlwZSA9IHVzdHJpbmdUb0F0b21pY1N0cmluZyhleGVjLT5hcmd1bWVu
dCgwKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgVGVzdEV2
ZW50Q29uc3RydWN0b3JJbml0IGV2ZW50SW5pdDsKKworICAgIEpTVmFsdWUgaW5pdGlhbGl6ZXJW
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIGlmICghaW5pdGlhbGl6ZXJWYWx1ZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlz
IHdpbGwgYWx3YXlzIHlpZWxkIGFuIG9iamVjdC4KKyAgICAgICAgSlNPYmplY3QqIGluaXRpYWxp
emVyT2JqZWN0ID0gaW5pdGlhbGl6ZXJWYWx1ZS50b09iamVjdChleGVjKTsKKworICAgICAgICAv
LyBDcmVhdGUgdGhlIGRpY3Rpb25hcnkgd3JhcHBlciBmcm9tIHRoZSBpbml0aWFsaXplciBvYmpl
Y3QuCisgICAgICAgIEpTRGljdGlvbmFyeSBkaWN0aW9uYXJ5KGV4ZWMsIGluaXRpYWxpemVyT2Jq
ZWN0KTsKKworICAgICAgICAvLyBBdHRlbXB0IHRvIGZpbGwgaW4gdGhlIEV2ZW50SW5pdC4KKyAg
ICAgICAgaWYgKCFmaWxsVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KGV2ZW50SW5pdCwgZGljdGlv
bmFyeSkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIH0KKworICAgIFJlZlB0cjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gZXZlbnQgPSBUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV2ZW50VHlwZSwgZXZlbnRJbml0KTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0
KCksIGV2ZW50LmdldCgpKSk7Cit9CisKK2Jvb2wgZmlsbFRlc3RFdmVudENvbnN0cnVjdG9ySW5p
dChUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQmIGV2ZW50SW5pdCwgSlNEaWN0aW9uYXJ5JiBkaWN0
aW9uYXJ5KQoreworICAgIHJldHVybiB0cnVlOworfQorCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1
bmN0aW9uID0gY29uc3RydWN0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5oCmluZGV4IDU5ZTE4Y2YuLjI2ZGVmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuaApAQCAtMjksNiArMjksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIEpTRGljdGlvbmFyeTsKKwogY2xhc3MgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciA6
IHB1YmxpYyBKU0RPTVdyYXBwZXIgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVy
IEJhc2U7CkBAIC0xMTMsNiArMTE1LDggQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBKU0M6OkNv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0
RGF0YSYpOwogfTsKIAorYm9vbCBmaWxsVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KFRlc3RFdmVu
dENvbnN0cnVjdG9ySW5pdCYsIEpTRGljdGlvbmFyeSYpOworCiAvLyBBdHRyaWJ1dGVzCiAKIEpT
Qzo6SlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFdmVudENvbnN0cnVjdG9yLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5pZGwKaW5kZXggOGQzYmFlZS4uYzA1N2NhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFdmVudENvbnN0cnVjdG9yLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEV2ZW50Q29uc3RydWN0b3IuaWRs
CkBAIC0zMCw3ICszMCw3IEBACiAvLyBjaGFuZ2VzIGluIGl0cyBvdXB1dC4KIG1vZHVsZSB0ZXN0
IHsKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21Db25zdHJ1Y3Rvcj1FdmVudAorICAg
ICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50CiAgICAgXSBUZXN0RXZlbnRDb25zdHJ1Y3Rv
ciB7CiAgICAgICAgIC8vIEF0dHJpYnV0ZXMKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBhdHRyMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBj
ZTI4OTI3Li4xNGUyYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBA
IC0yMSw4ICsyMSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlY4VGVzdEV2
ZW50Q29uc3RydWN0b3IuaCIKIAorI2luY2x1ZGUgIk9wdGlvbnNPYmplY3QuaCIKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5j
bHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKICNp
bmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgpA
QCAtNjAsNiArNjIsMzggQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgVGVzdEV2ZW50
Q29uc3RydWN0b3JBdHRyc1tdID0gewogICAgIHsiYXR0cjIiLCBUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckludGVybmFsOjphdHRyMkF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdG9yQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29u
c3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25z
dHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6VHlwZUVy
cm9yKTsKKworICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rv
ck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkKKyAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7
CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBTVFJJ
TkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHR5cGUsIGFy
Z3NbMF0pOworICAgIFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdCBldmVudEluaXQ7CisgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPj0gMikgeworICAgICAgICBFWENFUFRJT05fQkxPQ0soT3B0aW9uc09i
amVjdCwgb3B0aW9ucywgYXJnc1sxXSk7CisgICAgICAgIGlmICghZmlsbFRlc3RFdmVudENvbnN0
cnVjdG9ySW5pdChldmVudEluaXQsIG9wdGlvbnMpKQorICAgICAgICAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8VGVzdEV2ZW50Q29uc3RydWN0b3I+IGV2
ZW50ID0gVGVzdEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0ZSh0eXBlLCBldmVudEluaXQpOworCisg
ICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBldmVu
dC5nZXQoKSk7CisgICAgcmV0dXJuIHRvVjgoZXZlbnQucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigp
KTsKK30KKworYm9vbCBmaWxsVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KFRlc3RFdmVudENvbnN0
cnVjdG9ySW5pdCYgZXZlbnRJbml0LCBjb25zdCBPcHRpb25zT2JqZWN0JiBvcHRpb25zKQorewor
ICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZSh2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykKIHsKICAgICBkZXNjLT5SZWFkT25s
eVByb3RvdHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggZGExZTUx
MS4uNTIwZTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC0zMCw2ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgT3B0aW9uc09iamVjdDsKIGNs
YXNzIFY4VGVzdEV2ZW50Q29uc3RydWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CkBAIC03NSw2ICs3Niw4IEBAIGlubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0RXZlbnRDb25zdHJ1
Y3RvciA+IGltcGwpCiAgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQoKSk7CiB9CiAKK2Jvb2wgZmls
bFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdChUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQmLCBjb25z
dCBPcHRpb25zT2JqZWN0Jik7CisKIH0KIAogI2VuZGlmIC8vIFY4VGVzdEV2ZW50Q29uc3RydWN0
b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudC5pZGwKaW5kZXggMGZiNThlMi4uODBiMmYzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnQuaWRsCkBAIC0yMyw4ICsyMyw3IEBAIG1vZHVsZSBldmVudHMgewogICAgIC8vIEludHJvZHVj
ZWQgaW4gRE9NIExldmVsIDI6CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ3VzdG9tVG9KUywK
LSAgICAgICAgVjhDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50LAotICAgICAgICBKU0N1c3RvbUNv
bnN0cnVjdG9yLAorICAgICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50LAogICAgICAgICBO
b1N0YXRpY1RhYmxlcywKICAgICAgICAgUG9seW1vcnBoaWMKICAgICBdIEV2ZW50IHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>