<?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>59226</bug_id>
          
          <creation_ts>2011-04-22 13:18:17 -0700</creation_ts>
          <short_desc>Should have an easy way to construct starting BidiStatus for a paragraph root</short_desc>
          <delta_ts>2011-04-28 01:47:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>jhoneycutt</cc>
    
    <cc>leviw</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>391001</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-22 13:18:17 -0700</bug_when>
    <thetext>Should have an easy way to construct starting BidiStatus for a paragraph root</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391002</commentid>
    <comment_count>1</comment_count>
      <attachid>90748</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-22 13:21:33 -0700</bug_when>
    <thetext>Created attachment 90748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391021</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-22 13:43:33 -0700</bug_when>
    <thetext>Attachment 90748 did not build on chromium:
Build output: http://queues.webkit.org/results/8498424</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391061</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-22 14:26:39 -0700</bug_when>
    <thetext>Attachment 90748 did not build on win:
Build output: http://queues.webkit.org/results/8496456</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391096</commentid>
    <comment_count>4</comment_count>
      <attachid>90768</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-22 14:52:52 -0700</bug_when>
    <thetext>Created attachment 90768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391102</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-22 14:55:23 -0700</bug_when>
    <thetext>Attachment 90748 did not build on chromium:
Build output: http://queues.webkit.org/results/8494569</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391150</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-22 15:31:48 -0700</bug_when>
    <thetext>Attachment 90768 did not build on chromium:
Build output: http://queues.webkit.org/results/8497472</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391188</commentid>
    <comment_count>7</comment_count>
      <attachid>90791</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-22 16:07:41 -0700</bug_when>
    <thetext>Created attachment 90791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391196</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-22 16:12:53 -0700</bug_when>
    <thetext>Attachment 90768 did not build on win:
Build output: http://queues.webkit.org/results/8486944</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391200</commentid>
    <comment_count>9</comment_count>
      <attachid>90795</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-22 16:16:37 -0700</bug_when>
    <thetext>Created attachment 90795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391293</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-22 18:07:19 -0700</bug_when>
    <thetext>Assuming GTK passes, this patch should be good to go!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393354</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-26 22:30:19 -0700</bug_when>
    <thetext>This should basically just be a rubber stamp.  This patch is mostly just moving code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393968</commentid>
    <comment_count>12</comment_count>
      <attachid>90795</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-27 16:40:56 -0700</bug_when>
    <thetext>Comment on attachment 90795
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:418
&gt; +        bool isRTL = bidiRun-&gt;level() % 2;
&gt; +        subrun.setDirection(isRTL ? RTL : LTR);

I&apos;m not sure if this local variable is anyway helpful.
subrun.setDirection(bidiRun-&gt;level() % 2? RTL : LTR)
is clear enough to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393986</commentid>
    <comment_count>13</comment_count>
      <attachid>90795</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-27 16:48:45 -0700</bug_when>
    <thetext>Comment on attachment 90795
Patch

I&apos;ll clean that up in a later pass.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394149</commentid>
    <comment_count>14</comment_count>
      <attachid>90795</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-27 20:21:04 -0700</bug_when>
    <thetext>Comment on attachment 90795
Patch

Clearing flags on attachment: 90795

Committed r85143: &lt;http://trac.webkit.org/changeset/85143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394150</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-27 20:21:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394174</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-27 21:16:51 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/85143 might have broken WinCE Release (Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394229</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-27 22:58:11 -0700</bug_when>
    <thetext>This made 17 tests fail on windows.  I do not understand why.  Nothing in the windows specific code looks related.  We&apos;re not using an enum as a bitfield (which can cause oddities with MSVC).  I&apos;m not sure how to move forward here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394231</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-27 22:58:59 -0700</bug_when>
    <thetext>http://build.webkit.org/results/Windows%20XP%20Debug%20(Tests)/r85143%20(28134)/fast/text/basic/003-pretty-diff.html

Is the failure (which again seems related to this revision).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394232</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-27 22:59:28 -0700</bug_when>
    <thetext>I suspect it may also be that bad dependency tracking on windows caused my change to be blamed even though this was an earlier regression?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394236</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-27 23:06:01 -0700</bug_when>
    <thetext>I&apos;m happy to roll this out, but I&apos;m not sure how to move forward once that is done.

It would be best if someone with access to a Windows build could try clean-building the revision before this and see if these tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394246</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-27 23:16:08 -0700</bug_when>
    <thetext>I&apos;ve looked at the chromium builders and been unable to find a failure matching any of these tests.  I&apos;m going to see if I can kick the Win builder into a clean build?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394248</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-27 23:17:50 -0700</bug_when>
    <thetext>I wonder if these failures on windows could be from bug 54573?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394258</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-27 23:23:57 -0700</bug_when>
    <thetext>I&apos;ve kicked the Win Debug builder to make it clean build.  I may also just try rolling out the patch and seeing if the failure goes away for windows.  I can always roll it back in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394261</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-27 23:32:33 -0700</bug_when>
    <thetext>This isn&apos;t failing on Win 7 Release tests, or on any Chromium bot. :(  So I&apos;m going to blame the XP bot here and ignore this failure warning and sleep.  If someone else believes otherwise, feel free to roll out the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394304</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-28 01:47:11 -0700</bug_when>
    <thetext>We&apos;re back down to 1 failure after a clean build.  This was a just a Windows-build-can&apos;t-understand-dependencies problem.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90748</attachid>
            <date>2011-04-22 13:21:33 -0700</date>
            <delta_ts>2011-04-22 14:52:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59226-20110422132132.patch</filename>
            <type>text/plain</type>
            <size>29873</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ2NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNDI5Y2QyYWRlMDBhNDMy
ZTY2ZmQ0MTEyZDliNTkzZjQxOGFmOGM4Li4zMWU5YjBkNTU0YWYzYTNlMzlkOGRiZWE0ZThiYzdi
NDVhMTQ3MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMDQtMjIgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNob3VsZCBoYXZlIGFuIGVhc3kgd2F5IHRvIGNvbnN0cnVjdCBz
dGFydGluZyBCaWRpU3RhdHVzIGZvciBhIHBhcmFncmFwaCByb290CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTIyNgorCisgICAgICAgIFR3byBwbGFj
ZXMgdHJ5IHRvIGNvbnN0cnVjdCBCaWRpU3RhdHVzZXMgZm9yIGEgcGFyYWdyYXBoIHJvb3QgdXNp
bmcgY29weS9wYXN0ZSBjb2RlLgorICAgICAgICBJJ3ZlIG1hZGUgdGhpcyBhIGNvbnN0cnVjdG9y
IGZvciBCaWRpU3RhdHVzIGluc3RlYWQuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGVmZm9y
dCBJIGFkZGVkIGEgZGlyZWN0aW9uKCkgYWNjZXNzb3IgZm9yIFRleHRSdW4gYW5kIGdvdAorICAg
ICAgICByaWQgb2YgdGhlIG9sZCBtX3J0bCBib29sLiAgVGhpcyBpcyBwYXJ0IG9mIHRoZSBnZW5l
cmljIGVmZm9ydCBpbiB0aGUKKyAgICAgICAgQmlkaSBjb2RlIHRvIHJlcGxhY2Ugb2xkIGJvb2wg
dXNhZ2Ugd2l0aCB0aGUgc3VwZXJpb3IgVGV4dERpcmVjdGlvbiBlbnVtCisgICAgICAgICh0aGlz
IGdlbmVyYWxseSBtYWtlcyB0aGUgY29kZSBjbGVhbmVyKS4KKworICAgICAgICBBcyBwYXJ0IG9m
IHRoaXMgcmVwbGFjZW1lbnQgZWZmb3J0IEkgZm91bmQgc2V2ZXJhbCBwbGFjZXMgd2hpY2ggd2Vy
ZQorICAgICAgICBhc3N1bWluZyBMVFIgKGJ5IHBhc3NpbmcgcnRsPWZhbHNlKSB3aGVuIHRoZXkg
cHJvYmFibHkgd2FudCB0byB1c2UKKyAgICAgICAgdGhlIGN1cnJlbnQgdGV4dCBkaXJlY3Rpb24u
ICBJIHN1c3BlY3QgdGhhdCBMVFIgdnMuIFJUTCBtYXkgYWZmZWN0CisgICAgICAgIHN0cmluZyB3
aWR0aCBpbiB0aGUgY2FzZSBvZiBsaWdhdHVyZXMuICBJdCdzIHVuY2xlYXIuCisKKyAgICAgICAg
VGhpcyBpcyBhbG1vc3QgZW50aXJlbHkgYSBtZWNoYW5pY2FsIGNoYW5nZS4KKworICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6VGV4dFJ1bik6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpkaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFJ1bjo6cnRsKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46Omx0cik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0UnVuOjpzZXREaXJlY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpU3RhdHVzOjpCaWRp
U3RhdHVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lz
Qm94OjpzZWxlY3Rpb25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpwYWlu
dFNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludFNwZWxsaW5nT3JHcmFtbWFyTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZVRleHRCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwbGFjZW1lbnRNYXJrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmRldGVybWluZVN0YXJ0UG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmls
ZVVwbG9hZENvbnRyb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmdldEF2
Z0NoYXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6cGFpbnRQ
bGFjZWhvbGRlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4p
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29uc3RydWN0VGV4dFJ1bik6CisKIDIwMTEtMDQtMjIgIFhpYW9tZWkgSmkgIDx4
amlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKaW5kZXggY2Y5MGFlMWE0ZjhhODVkZTUzM2YxNGMzZWRiN2NiNGI1ZmFmMmNhYi4u
Y2EwYzRlNTliNjZkOGJkOGJmOTIwM2QyYTI5NmY2YTE4NmIxZGI1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CkBAIC0xODYxLDEyICsxODYxLDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgLy8g
RklYTUU6IE5lZWQgdG8gdHVybiBvZmYgZm9udCBzbW9vdGhpbmcuCiAKICAgICBSZW5kZXJTdHls
ZSogY29tcHV0ZWRTdHlsZSA9IGNhbnZhcygpLT5jb21wdXRlZFN0eWxlKCk7Ci0gICAgYm9vbCBy
dGwgPSBjb21wdXRlZFN0eWxlID8gIWNvbXB1dGVkU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSA6IGZhbHNlOworICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gY29tcHV0ZWRTdHls
ZSA/IGNvbXB1dGVkU3R5bGUtPmRpcmVjdGlvbigpIDogTFRSOworICAgIGJvb2wgaXNSVEwgPSBk
aXJlY3Rpb24gPT0gUlRMOwogICAgIGJvb2wgb3ZlcnJpZGUgPSBjb21wdXRlZFN0eWxlID8gY29t
cHV0ZWRTdHlsZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSA6IGZhbHNlOwogCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKICAgICBjb25zdCBVQ2hhciogc3RyaW5nID0g
dGV4dC5jaGFyYWN0ZXJzKCk7Ci0gICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBm
YWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgcnRsLCBvdmVycmlk
ZSk7CisgICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBmYWxzZSwgMCwgMCwgVGV4
dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSk7CiAKICAg
ICAvLyBEcmF3IHRoZSBpdGVtIHRleHQgYXQgdGhlIGNvcnJlY3QgcG9pbnQuCiAgICAgRmxvYXRQ
b2ludCBsb2NhdGlvbih4LCB5KTsKQEAgLTE4ODgsMTMgKzE4ODksMTMgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBm
bG9hdCB4LCBmbG8KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZmxvYXQgd2lkdGggPSBm
b250LndpZHRoKFRleHRSdW4odGV4dCwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxp
bmdFeHBhbnNpb24sIHJ0bCwgb3ZlcnJpZGUpKTsKKyAgICBmbG9hdCB3aWR0aCA9IGZvbnQud2lk
dGgoVGV4dFJ1bih0ZXh0LCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFu
c2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSkpOwogCiAgICAgVGV4dEFsaWduIGFsaWduID0gc3Rh
dGUoKS5tX3RleHRBbGlnbjsKICAgICBpZiAoYWxpZ24gPT0gU3RhcnRUZXh0QWxpZ24pCi0gICAg
ICAgICBhbGlnbiA9IHJ0bCA/IFJpZ2h0VGV4dEFsaWduIDogTGVmdFRleHRBbGlnbjsKKyAgICAg
ICAgYWxpZ24gPSBpc1JUTCA/IFJpZ2h0VGV4dEFsaWduIDogTGVmdFRleHRBbGlnbjsKICAgICBl
bHNlIGlmIChhbGlnbiA9PSBFbmRUZXh0QWxpZ24pCi0gICAgICAgIGFsaWduID0gcnRsID8gTGVm
dFRleHRBbGlnbiA6IFJpZ2h0VGV4dEFsaWduOworICAgICAgICBhbGlnbiA9IGlzUlRMID8gTGVm
dFRleHRBbGlnbiA6IFJpZ2h0VGV4dEFsaWduOwogCiAgICAgc3dpdGNoIChhbGlnbikgewogICAg
IGNhc2UgQ2VudGVyVGV4dEFsaWduOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYWVkMjQ4ODI5NzBhMWRjYmMzMWU4
ZmI4MjhjOGE4NzY4YjMyY2RhNy4uYWY5OTllYTBjYmI0MTg0OTFmYWI0YmRmZDlkYzI4Nzk2MWNm
N2MyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCkBAIC0zOTgsMjggKzM5OCwyNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QgRgogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAg
IEJpZGlSZXNvbHZlcjxUZXh0UnVuSXRlcmF0b3IsIEJpZGlDaGFyYWN0ZXJSdW4+IGJpZGlSZXNv
bHZlcjsKKyAgICBiaWRpUmVzb2x2ZXIuc2V0U3RhdHVzKEJpZGlTdGF0dXMocnVuLmRpcmVjdGlv
bigpLCBydW4uZGlyZWN0aW9uYWxPdmVycmlkZSgpKSk7CisgICAgYmlkaVJlc29sdmVyLnNldFBv
c2l0aW9uKFRleHRSdW5JdGVyYXRvcigmcnVuLCAwKSk7CisKICAgICAvLyBGSVhNRTogVGhpcyBv
d25lcnNoaXAgc2hvdWxkIGJlIHJldmVyc2VkLiBXZSBzaG91bGQgcGFzcyBCaWRpUnVuTGlzdAog
ICAgIC8vIHRvIEJpZGlSZXNvbHZlciBpbiBjcmVhdGVCaWRpUnVuc0ZvckxpbmUuCi0gICAgQmlk
aVJlc29sdmVyPFRleHRSdW5JdGVyYXRvciwgQmlkaUNoYXJhY3RlclJ1bj4gYmlkaVJlc29sdmVy
OwogICAgIEJpZGlSdW5MaXN0PEJpZGlDaGFyYWN0ZXJSdW4+JiBiaWRpUnVucyA9IGJpZGlSZXNv
bHZlci5ydW5zKCk7Ci0KLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBwYXJhZ3JhcGhEaXJl
Y3Rpb24gPSBydW4ubHRyKCkgPyBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0IDogV1RGOjpVbmlj
b2RlOjpSaWdodFRvTGVmdDsKLQotICAgIGJpZGlSZXNvbHZlci5zZXRTdGF0dXMoQmlkaVN0YXR1
cyhwYXJhZ3JhcGhEaXJlY3Rpb24sIHBhcmFncmFwaERpcmVjdGlvbiwgcGFyYWdyYXBoRGlyZWN0
aW9uLCBCaWRpQ29udGV4dDo6Y3JlYXRlKHJ1bi5sdHIoKSA/IDAgOiAxLCBwYXJhZ3JhcGhEaXJl
Y3Rpb24sIHJ1bi5kaXJlY3Rpb25hbE92ZXJyaWRlKCkpKSk7Ci0KLSAgICBiaWRpUmVzb2x2ZXIu
c2V0UG9zaXRpb24oVGV4dFJ1bkl0ZXJhdG9yKCZydW4sIDApKTsKICAgICBiaWRpUmVzb2x2ZXIu
Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lKFRleHRSdW5JdGVyYXRvcigmcnVuLCBydW4ubGVuZ3RoKCkp
KTsKLQogICAgIGlmICghYmlkaVJ1bnMucnVuQ291bnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRmxvYXRQb2ludCBjdXJyUG9pbnQgPSBwb2ludDsKICAgICBCaWRpQ2hhcmFjdGVyUnVuKiBi
aWRpUnVuID0gYmlkaVJ1bnMuZmlyc3RSdW4oKTsKICAgICB3aGlsZSAoYmlkaVJ1bikgewotCiAg
ICAgICAgIFRleHRSdW4gc3VicnVuID0gcnVuOwogICAgICAgICBzdWJydW4uc2V0VGV4dChydW4u
ZGF0YShiaWRpUnVuLT5zdGFydCgpKSwgYmlkaVJ1bi0+c3RvcCgpIC0gYmlkaVJ1bi0+c3RhcnQo
KSk7Ci0gICAgICAgIHN1YnJ1bi5zZXRSVEwoYmlkaVJ1bi0+bGV2ZWwoKSAlIDIpOworICAgICAg
ICBib29sIGlzUlRMID0gYmlkaVJ1bi0+bGV2ZWwoKSAlIDI7CisgICAgICAgIHN1YnJ1bi5zZXRE
aXJlY3Rpb24oaXNSVEwgPyBSVEwgOiBMVFIpOwogICAgICAgICBzdWJydW4uc2V0RGlyZWN0aW9u
YWxPdmVycmlkZShiaWRpUnVuLT5kaXJPdmVycmlkZShmYWxzZSkpOwogCiAgICAgICAgIGZvbnQu
ZHJhd1RleHQodGhpcywgc3VicnVuLCBjdXJyUG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IGVjNzYzYjlhM2FkMzNlOTAxZjAzMGRjOTkxZDNh
NmUwZDEwNGNlYTQuLjczN2FkZjY1OTg4YmNmZTdmN2U0Y2I5ZTNlMWQ5MDA2Y2VmMTgyNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTI1LDYgKzI1
LDcgQEAKICNkZWZpbmUgVGV4dFJ1bl9oCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
Miw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHR5cGVkZWYgdW5zaWduZWQgRXhwYW5zaW9uQmVo
YXZpb3I7CiAKLSAgICBUZXh0UnVuKGNvbnN0IFVDaGFyKiBjLCBpbnQgbGVuLCBib29sIGFsbG93
VGFicyA9IGZhbHNlLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwgRXhwYW5z
aW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwg
Rm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgYm9vbCBydGwgPSBmYWxzZSwgYm9vbCBkaXJlY3Rpb25h
bE92ZXJyaWRlID0gZmFsc2UpCisgICAgVGV4dFJ1bihjb25zdCBVQ2hhciogYywgaW50IGxlbiwg
Ym9vbCBhbGxvd1RhYnMgPSBmYWxzZSwgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9
IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGluZ0V4
cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
ID0gTFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBmYWxzZSkKICAgICAgICAgOiBtX2No
YXJhY3RlcnMoYykKICAgICAgICAgLCBtX2xlbihsZW4pCiAgICAgICAgICwgbV94cG9zKHhwb3Mp
CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2hvcml6b250YWxHbHlwaFN0
cmV0Y2goMSkKICNlbmRpZgogICAgICAgICAsIG1fYWxsb3dUYWJzKGFsbG93VGFicykKLSAgICAg
ICAgLCBtX3J0bChydGwpCisgICAgICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQogICAgICAg
ICAsIG1fZGlyZWN0aW9uYWxPdmVycmlkZShkaXJlY3Rpb25hbE92ZXJyaWRlKQogICAgICAgICAs
IG1fZGlzYWJsZVNwYWNpbmcoZmFsc2UpCiAjaWYgRU5BQkxFKFNWR19GT05UUykKQEAgLTYyLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBUZXh0UnVuKGNvbnN0IFN0cmlu
ZyYgcywgYm9vbCBhbGxvd1RhYnMgPSBmYWxzZSwgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFu
c2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFp
bGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIGJvb2wgcnRsID0gZmFsc2Us
IGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlKQorICAgIFRleHRSdW4oY29uc3QgU3Ry
aW5nJiBzLCBib29sIGFsbG93VGFicyA9IGZhbHNlLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhw
YW5zaW9uID0gMCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1Ry
YWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24gPSBMVFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlKQogICAgICAg
ICA6IG1fY2hhcmFjdGVycyhzLmNoYXJhY3RlcnMoKSkKICAgICAgICAgLCBtX2xlbihzLmxlbmd0
aCgpKQogICAgICAgICAsIG1feHBvcyh4cG9zKQpAQCAtNzIsNyArNzMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICwgbV9ob3Jpem9udGFsR2x5cGhTdHJldGNoKDEpCiAjZW5kaWYKICAgICAgICAgLCBt
X2FsbG93VGFicyhhbGxvd1RhYnMpCi0gICAgICAgICwgbV9ydGwocnRsKQorICAgICAgICAsIG1f
ZGlyZWN0aW9uKGRpcmVjdGlvbikKICAgICAgICAgLCBtX2RpcmVjdGlvbmFsT3ZlcnJpZGUoZGly
ZWN0aW9uYWxPdmVycmlkZSkKICAgICAgICAgLCBtX2Rpc2FibGVTcGFjaW5nKGZhbHNlKQogI2lm
IEVOQUJMRShTVkdfRk9OVFMpCkBAIC0xMDAsMTMgKzEwMSwxNCBAQCBwdWJsaWM6CiAgICAgZmxv
YXQgZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb247IH0KICAgICBib29sIGFs
bG93c0xlYWRpbmdFeHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbkJlaGF2aW9y
ICYgQWxsb3dMZWFkaW5nRXhwYW5zaW9uOyB9CiAgICAgYm9vbCBhbGxvd3NUcmFpbGluZ0V4cGFu
c2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uQmVoYXZpb3IgJiBBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uOyB9Ci0gICAgYm9vbCBydGwoKSBjb25zdCB7IHJldHVybiBtX3J0bDsgfQotICAg
IGJvb2wgbHRyKCkgY29uc3QgeyByZXR1cm4gIW1fcnRsOyB9CisgICAgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQorICAgIGJvb2wgcnRsKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gUlRMOyB9CisgICAgYm9vbCBsdHIoKSBjb25z
dCB7IHJldHVybiBtX2RpcmVjdGlvbiA9PSBMVFI7IH0KICAgICBib29sIGRpcmVjdGlvbmFsT3Zl
cnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbmFsT3ZlcnJpZGU7IH0KICAgICBib29s
IHNwYWNpbmdEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZVNwYWNpbmc7IH0KIAog
ICAgIHZvaWQgZGlzYWJsZVNwYWNpbmcoKSB7IG1fZGlzYWJsZVNwYWNpbmcgPSB0cnVlOyB9Ci0g
ICAgdm9pZCBzZXRSVEwoYm9vbCBiKSB7IG1fcnRsID0gYjsgfQorICAgIHZvaWQgc2V0RGlyZWN0
aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSB7IG1fZGlyZWN0aW9uID0gZGlyZWN0aW9uOyB9
CiAgICAgdm9pZCBzZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJvb2wgb3ZlcnJpZGUpIHsgbV9kaXJl
Y3Rpb25hbE92ZXJyaWRlID0gb3ZlcnJpZGU7IH0KIAogI2lmIEVOQUJMRShTVkdfRk9OVFMpCkBA
IC0xMzEsOCArMTMzLDggQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2hvcml6b250YWxHbHlwaFN0
cmV0Y2g7CiAjZW5kaWYKICAgICBib29sIG1fYWxsb3dUYWJzOwotICAgIGJvb2wgbV9ydGw7Ci0g
ICAgYm9vbCBtX2RpcmVjdGlvbmFsT3ZlcnJpZGU7CisgICAgVGV4dERpcmVjdGlvbiBtX2RpcmVj
dGlvbjsKKyAgICBib29sIG1fZGlyZWN0aW9uYWxPdmVycmlkZTsgLy8gV2FzIHRoaXMgZGlyZWN0
aW9uIHNldCBieSBhbiBvdmVycmlkZSBjaGFyYWN0ZXIuCiAgICAgYm9vbCBtX2Rpc2FibGVTcGFj
aW5nOwogCiAjaWYgRU5BQkxFKFNWR19GT05UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0JpZGlSZXNvbHZlci5oCmluZGV4IGM2ZWZkZDhmZmViOTAwNmJhZWI0ZGI2ODZiYjUxZmNl
MWY2Mjc5OTQuLjAzODBjNWI1MmMyOTkxMTdhZTEyYTA3MTYxOWVkMTY2ZDRmNjI4NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaApAQCAtMjQsNiArMjQs
NyBAQAogCiAjaW5jbHVkZSAiQmlkaUNvbnRleHQuaCIKICNpbmNsdWRlICJCaWRpUnVuTGlzdC5o
IgorI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTYyLDYgKzYzLDE1IEBAIHN0cnVjdCBCaWRpU3RhdHVzIHsKICAgICB7CiAgICAgfQogCisg
ICAgLy8gQ3JlYXRlcyBhIEJpZGlTdGF0dXMgcmVwcmVzZW50aW5nIGEgbmV3IHBhcmFncmFwaCBy
b290IHdpdGggYSBkZWZhdWx0IGRpcmVjdGlvbi4KKyAgICAvLyBVc2VzIFRleHREaXJlY3Rpb24g
YXMgaXQgb25seSBoYXMgdHdvIHBvc3NpYmlsaXRpZXMgaW5zdGVhZCBvZiBXVEY6OlVuaWNvZGU6
OkRpcmVjdGlvbiB3aGljaCBoYXMgMTkuCisgICAgQmlkaVN0YXR1cyhUZXh0RGlyZWN0aW9uIHRl
eHREaXJlY3Rpb24sIGJvb2wgaXNPdmVycmlkZSkKKyAgICB7CisgICAgICAgIFdURjo6VW5pY29k
ZTo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHRleHREaXJlY3Rpb24gPT0gTFRSID8gV1RGOjpVbmlj
b2RlOjpMZWZ0VG9SaWdodCA6IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQ7CisgICAgICAgIGVv
ciA9IGxhc3RTdHJvbmcgPSBsYXN0ID0gZGlyZWN0aW9uOworICAgICAgICBjb250ZXh0ID0gQmlk
aUNvbnRleHQ6OmNyZWF0ZSh0ZXh0RGlyZWN0aW9uID09IExUUiA/IDAgOiAxLCBkaXJlY3Rpb24s
IGlzT3ZlcnJpZGUpOworICAgIH0KKwogICAgIEJpZGlTdGF0dXMoV1RGOjpVbmljb2RlOjpEaXJl
Y3Rpb24gZW9yRGlyLCBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBsYXN0U3Ryb25nRGlyLCBXVEY6
OlVuaWNvZGU6OkRpcmVjdGlvbiBsYXN0RGlyLCBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBiaWRp
Q29udGV4dCkKICAgICAgICAgOiBlb3IoZW9yRGlyKQogICAgICAgICAsIGxhc3RTdHJvbmcobGFz
dFN0cm9uZ0RpcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNp
c0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCmluZGV4
IDUwNmEwMzZjMDE5MzE5YzdlN2FiODA5NjBkMTFlMTZiNDE3NmU0NjMuLjhjMjMwYTAwYTZhYjhm
NjMwOWRiNGYwNjAyNjY5NzU4MzNlNTRjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Vs
bGlwc2lzQm94LmNwcApAQCAtNTMsNyArNTMsOCBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHksIGludCBsaW5lVG9wLCBpbnQgbAog
ICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgc3RyID0gbV9zdHI7Ci0gICAgY29udGV4dC0+ZHJh
d1RleHQoc3R5bGUtPmZvbnQoKSwgVGV4dFJ1bihzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3Ro
KCksIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBmYWxzZSwg
c3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKSwgSW50UG9pbnQobV94ICsgdHgsIG1feSArIHR5ICsg
c3R5bGUtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpKTsKKyAgICAvLyBGSVhNRTogV2h5IGlzIHRo
aXMgYWx3YXN5IExUUj8KKyAgICBjb250ZXh0LT5kcmF3VGV4dChzdHlsZS0+Zm9udCgpLCBUZXh0
UnVuKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgoKSwgZmFsc2UsIDAsIDAsIFRleHRSdW46
OkFsbG93VHJhaWxpbmdFeHBhbnNpb24sIExUUiwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKSwg
SW50UG9pbnQobV94ICsgdHgsIG1feSArIHR5ICsgc3R5bGUtPmZvbnRNZXRyaWNzKCkuYXNjZW50
KCkpKTsKIAogICAgIC8vIFJlc3RvcmUgdGhlIHJlZ3VsYXIgZmlsbCBjb2xvci4KICAgICBpZiAo
dGV4dENvbG9yICE9IGNvbnRleHQtPmZpbGxDb2xvcigpKQpAQCAtNzQsNyArNzUsOCBAQCBJbnRS
ZWN0IEVsbGlwc2lzQm94OjpzZWxlY3Rpb25SZWN0KGludCB0eCwgaW50IHR5KQogewogICAgIFJl
bmRlclN0eWxlKiBzdHlsZSA9IG1fcmVuZGVyZXItPnN0eWxlKG1fZmlyc3RMaW5lKTsKICAgICBj
b25zdCBGb250JiBmID0gc3R5bGUtPmZvbnQoKTsKLSAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVj
dChmLnNlbGVjdGlvblJlY3RGb3JUZXh0KFRleHRSdW4obV9zdHIuY2hhcmFjdGVycygpLCBtX3N0
ci5sZW5ndGgoKSwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24s
IGZhbHNlLCBzdHlsZS0+dmlzdWFsbHlPcmRlcmVkKCkpLAorICAgIC8vIEZJWE1FOiBXaHkgaXMg
dGhpcyBhbHdheXMgTFRSPworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGYuc2VsZWN0aW9u
UmVjdEZvclRleHQoVGV4dFJ1bihtX3N0ci5jaGFyYWN0ZXJzKCksIG1fc3RyLmxlbmd0aCgpLCBm
YWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgTFRSLCBzdHlsZS0+
dmlzdWFsbHlPcmRlcmVkKCkpLAogICAgICAgICAgICAgSW50UG9pbnQobV94ICsgdHgsIG1feSAr
IHR5ICsgcm9vdCgpLT5zZWxlY3Rpb25Ub3AoKSksIHJvb3QoKS0+c2VsZWN0aW9uSGVpZ2h0KCkp
KTsKIH0KIApAQCAtOTQsNyArOTYsOCBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlv
bihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50IHR5LCBSZW5kZQogICAgIGlu
dCB5ID0gcm9vdCgpLT5zZWxlY3Rpb25Ub3AoKTsKICAgICBpbnQgaCA9IHJvb3QoKS0+c2VsZWN0
aW9uSGVpZ2h0KCk7CiAgICAgY29udGV4dC0+Y2xpcChJbnRSZWN0KG1feCArIHR4LCB5ICsgdHks
IG1fbG9naWNhbFdpZHRoLCBoKSk7Ci0gICAgY29udGV4dC0+ZHJhd0hpZ2hsaWdodEZvclRleHQo
Zm9udCwgVGV4dFJ1bihtX3N0ci5jaGFyYWN0ZXJzKCksIG1fc3RyLmxlbmd0aCgpLCBmYWxzZSwg
MCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgZmFsc2UsIHN0eWxlLT52aXN1
YWxseU9yZGVyZWQoKSksCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGFsd2F5cyBMVFI/Cisg
ICAgY29udGV4dC0+ZHJhd0hpZ2hsaWdodEZvclRleHQoZm9udCwgVGV4dFJ1bihtX3N0ci5jaGFy
YWN0ZXJzKCksIG1fc3RyLmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFp
bGluZ0V4cGFuc2lvbiwgTFRSLCBzdHlsZS0+dmlzdWFsbHlPcmRlcmVkKCkpLAogICAgICAgICBJ
bnRQb2ludChtX3ggKyB0eCwgbV95ICsgdHkgKyB5KSwgaCwgYywgc3R5bGUtPmNvbG9yU3BhY2Uo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRl
eCBmYzM5YTlmYTliNzhmNjI2YjQyODk2ZDk2Yjk0YjdhNmY4YzVhMDJlLi43YmM5NDcwMGQwNmVk
NDNmYWMzYWVjY2U5ODUxYWI3ODZhZDIwZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgSW50UmVjdCBJbmxpbmVUZXh0
Qm94OjpzZWxlY3Rpb25SZWN0KGludCB0eCwgaW50IHR5LCBpbnQgc3RhcnRQb3MsIGludCBlbmRQ
b3MpCiAgICAgICAgIGVQb3MgPSBsZW47CiAgICAgfQogCi0gICAgSW50UmVjdCByID0gZW5jbG9z
aW5nSW50UmVjdChmLnNlbGVjdGlvblJlY3RGb3JUZXh0KFRleHRSdW4oY2hhcmFjdGVycywgbGVu
LCB0ZXh0T2JqLT5hbGxvd1RhYnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9u
QmVoYXZpb3IoKSwgIWlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSksCisg
ICAgSW50UmVjdCByID0gZW5jbG9zaW5nSW50UmVjdChmLnNlbGVjdGlvblJlY3RGb3JUZXh0KFRl
eHRSdW4oY2hhcmFjdGVycywgbGVuLCB0ZXh0T2JqLT5hbGxvd1RhYnMoKSwgdGV4dFBvcygpLCBt
X2V4cGFuc2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgZGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJp
ZGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbnRQb2ludCgpLCBzZWxIZWlnaHQsIHNQb3MsIGVQb3MpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgaW50IGxvZ2lj
YWxXaWR0aCA9IHIud2lkdGgoKTsKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIElubGluZVRleHRC
b3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSwgaW50IC8qbGlu
ZVRvcCovLAogICAgIGlmIChoYXNIeXBoZW4oKSkKICAgICAgICAgYWRqdXN0Q2hhcmFjdGVyc0Fu
ZExlbmd0aEZvckh5cGhlbihjaGFyYWN0ZXJzV2l0aEh5cGhlbiwgc3R5bGVUb1VzZSwgY2hhcmFj
dGVycywgbGVuZ3RoKTsKIAotICAgIFRleHRSdW4gdGV4dFJ1bihjaGFyYWN0ZXJzLCBsZW5ndGgs
IHRleHRSZW5kZXJlcigpLT5hbGxvd1RhYnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhw
YW5zaW9uQmVoYXZpb3IoKSwgIWlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlk
ZSB8fCBzdHlsZVRvVXNlLT52aXN1YWxseU9yZGVyZWQoKSk7CisgICAgVGV4dFJ1biB0ZXh0UnVu
KGNoYXJhY3RlcnMsIGxlbmd0aCwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFicygpLCB0ZXh0UG9z
KCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLCBkaXJlY3Rpb24oKSwgbV9kaXJP
dmVycmlkZSB8fCBzdHlsZVRvVXNlLT52aXN1YWxseU9yZGVyZWQoKSk7CiAKICAgICBpbnQgc1Bv
cyA9IDA7CiAgICAgaW50IGVQb3MgPSAwOwpAQCAtODE4LDcgKzgxOCw3IEBAIHZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JiBiCiAgICAgRmxvYXRQb2ludCBsb2NhbE9yaWdpbihib3hPcmlnaW4ueCgpLCBi
b3hPcmlnaW4ueSgpIC0gZGVsdGFZKTsKICAgICBjb250ZXh0LT5jbGlwKEZsb2F0UmVjdChsb2Nh
bE9yaWdpbiwgRmxvYXRTaXplKG1fbG9naWNhbFdpZHRoLCBzZWxIZWlnaHQpKSk7CiAgICAgY29u
dGV4dC0+ZHJhd0hpZ2hsaWdodEZvclRleHQoZm9udCwgVGV4dFJ1bihjaGFyYWN0ZXJzLCBsZW5n
dGgsIHRleHRSZW5kZXJlcigpLT5hbGxvd1RhYnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwg
ZXhwYW5zaW9uQmVoYXZpb3IoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IWlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+dmlzdWFs
bHlPcmRlcmVkKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlv
bigpLCBtX2Rpck92ZXJyaWRlIHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxPcmlnaW4sIHNlbEhlaWdodCwgYywgc3R5
bGUtPmNvbG9yU3BhY2UoKSwgc1BvcywgZVBvcyk7CiB9CiAKQEAgLTg0MSw3ICs4NDEsNyBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRgogICAgIGludCBzZWxIZWlnaHQgPSBzZWxlY3Rpb25IZWln
aHQoKTsKICAgICBGbG9hdFBvaW50IGxvY2FsT3JpZ2luKGJveE9yaWdpbi54KCksIGJveE9yaWdp
bi55KCkgLSBkZWx0YVkpOwogICAgIGNvbnRleHQtPmRyYXdIaWdobGlnaHRGb3JUZXh0KGZvbnQs
IFRleHRSdW4odGV4dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVycygpICsgbV9zdGFydCwg
bV9sZW4sIHRleHRSZW5kZXJlcigpLT5hbGxvd1RhYnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lv
biwgZXhwYW5zaW9uQmVoYXZpb3IoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRlIHx8IHN0eWxlLT52aXN1
YWxseU9yZGVyZWQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0
aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbE9yaWdpbiwgc2VsSGVpZ2h0LCBjLCBz
dHlsZS0+Y29sb3JTcGFjZSgpLCBzUG9zLCBlUG9zKTsKIH0KIApAQCAtMTAwMCw3ICsxMDAwLDcg
QEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNwZWxsaW5nT3JHcmFtbWFyTWFya2VyKEdyYXBo
aWNzQ29udGV4dCogcHQsIGNvbnN0IEZsb2EKICAgICAgICAgaW50IGRlbHRhWSA9IHJlbmRlcmVy
KCktPnN0eWxlKCktPmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA/IHNlbGVjdGlvbkJvdHRv
bSgpIC0gbG9naWNhbEJvdHRvbSgpIDogbG9naWNhbFRvcCgpIC0gc2VsZWN0aW9uVG9wKCk7CiAg
ICAgICAgIGludCBzZWxIZWlnaHQgPSBzZWxlY3Rpb25IZWlnaHQoKTsKICAgICAgICAgRmxvYXRQ
b2ludCBzdGFydFBvaW50KGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBkZWx0YVkpOwot
ICAgICAgICBUZXh0UnVuIHJ1bih0ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkg
KyBtX3N0YXJ0LCBtX2xlbiwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFicygpLCB0ZXh0UG9zKCks
IG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLCAhaXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpLCBtX2Rpck92ZXJyaWRlIHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSk7CisgICAgICAg
IFRleHRSdW4gcnVuKHRleHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIG1fc3Rh
cnQsIG1fbGVuLCB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9leHBh
bnNpb24sIGV4cGFuc2lvbkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRlIHx8
IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTog
Q29udmVydCB0aGUgZG9jdW1lbnQgbWFya2VycyB0byBmbG9hdCByZWN0cy4KICAgICAgICAgSW50
UmVjdCBtYXJrZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChmb250LnNlbGVjdGlvblJlY3RGb3JU
ZXh0KHJ1biwgc3RhcnRQb2ludCwgc2VsSGVpZ2h0LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlv
bikpOwpAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFRleHRN
YXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQqIHB0LCBjb25zdCBGbG9hdFBvaW50JgogCiAgICAg
aW50IHNQb3MgPSBtYXgobWFya2VyLnN0YXJ0T2Zmc2V0IC0gbV9zdGFydCwgKHVuc2lnbmVkKTAp
OwogICAgIGludCBlUG9zID0gbWluKG1hcmtlci5lbmRPZmZzZXQgLSBtX3N0YXJ0LCAodW5zaWdu
ZWQpbV9sZW4pOyAgICAKLSAgICBUZXh0UnVuIHJ1bih0ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5j
aGFyYWN0ZXJzKCkgKyBtX3N0YXJ0LCBtX2xlbiwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFicygp
LCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLCAhaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRlIHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQo
KSk7CisgICAgVGV4dFJ1biBydW4odGV4dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVycygp
ICsgbV9zdGFydCwgbV9sZW4sIHRleHRSZW5kZXJlcigpLT5hbGxvd1RhYnMoKSwgdGV4dFBvcygp
LCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgZGlyZWN0aW9uKCksIG1fZGlyT3Zl
cnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKTsKICAgICAKICAgICAvLyBBbHdheXMg
Y29tcHV0ZSBhbmQgc3RvcmUgdGhlIHJlY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWFya2VyLiBU
aGUgY29tcHV0ZWQgcmVjdCBpcyBpbiBhYnNvbHV0ZSBjb29yZGluYXRlcy4KICAgICBJbnRSZWN0
IG1hcmtlclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGZvbnQuc2VsZWN0aW9uUmVjdEZvclRleHQo
cnVuLCBJbnRQb2ludChtX3gsIHNlbGVjdGlvblRvcCgpKSwgc2VsSGVpZ2h0LCBzUG9zLCBlUG9z
KSk7CkBAIC0xMDcyLDcgKzEwNzIsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OmNvbXB1dGVSZWN0
Rm9yUmVwbGFjZW1lbnRNYXJrZXIoY29uc3QgRG9jdW1lbnRNYXJrZXImIG1hcmtlcgogICAgIAog
ICAgIGludCBzUG9zID0gbWF4KG1hcmtlci5zdGFydE9mZnNldCAtIG1fc3RhcnQsICh1bnNpZ25l
ZCkwKTsKICAgICBpbnQgZVBvcyA9IG1pbihtYXJrZXIuZW5kT2Zmc2V0IC0gbV9zdGFydCwgKHVu
c2lnbmVkKW1fbGVuKTsgICAgCi0gICAgVGV4dFJ1biBydW4odGV4dFJlbmRlcmVyKCktPnRleHQo
KS0+Y2hhcmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRSZW5kZXJlcigpLT5hbGxvd1Rh
YnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgIWlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+dmlzdWFsbHlPcmRl
cmVkKCkpOworICAgIFRleHRSdW4gcnVuKHRleHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3Rl
cnMoKSArIG1fc3RhcnQsIG1fbGVuLCB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQ
b3MoKSwgbV9leHBhbnNpb24sIGV4cGFuc2lvbkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBtX2Rp
ck92ZXJyaWRlIHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSk7CiAgICAgSW50UG9pbnQgc3Rh
cnRQb2ludCA9IEludFBvaW50KG1feCwgeSk7CiAgICAgCiAgICAgLy8gQ29tcHV0ZSBhbmQgc3Rv
cmUgdGhlIHJlY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWFya2VyLgpAQCAtMTIzMyw3ICsxMjMz
LDcgQEAgaW50IElubGluZVRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IGxpbmVPZmZz
ZXQsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSB0
ZXh0LT5zdHlsZShtX2ZpcnN0TGluZSk7CiAgICAgY29uc3QgRm9udCogZiA9ICZzdHlsZS0+Zm9u
dCgpOwogICAgIGludCBvZmZzZXQgPSBmLT5vZmZzZXRGb3JQb3NpdGlvbihUZXh0UnVuKHRleHRS
ZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIG1fc3RhcnQsIG1fbGVuLAotICAgICAg
ICB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9leHBhbnNpb24sIGV4
cGFuc2lvbkJlaGF2aW9yKCksICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJp
ZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKSwKKyAgICAgICAgdGV4dFJlbmRlcmVyKCkt
PmFsbG93VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigp
LCBkaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+dmlzdWFsbHlPcmRlcmVkKCkp
LAogICAgICAgICBsaW5lT2Zmc2V0IC0gbG9naWNhbExlZnQoKSwgaW5jbHVkZVBhcnRpYWxHbHlw
aHMpOwogICAgIGlmIChibG9ja0lzSW5PcHBvc2l0ZURpcmVjdGlvbiAmJiAoIW9mZnNldCB8fCBv
ZmZzZXQgPT0gbV9sZW4pKQogICAgICAgICByZXR1cm4gIW9mZnNldCA/IG1fbGVuIDogMDsKQEAg
LTEyNTMsNyArMTI1Myw3IEBAIGZsb2F0IElubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0
KGludCBvZmZzZXQpIGNvbnN0CiAgICAgaW50IGZyb20gPSAhaXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID8gb2Zmc2V0IC0gbV9zdGFydCA6IDA7CiAgICAgaW50IHRvID0gIWlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSA/IG1fbGVuIDogb2Zmc2V0IC0gbV9zdGFydDsKICAgICAvLyBGSVhNRTogRG8g
d2UgbmVlZCB0byBhZGQgcmlnaHRCZWFyaW5nIGhlcmU/Ci0gICAgcmV0dXJuIGYuc2VsZWN0aW9u
UmVjdEZvclRleHQoVGV4dFJ1bih0ZXh0LT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIG1fc3RhcnQs
IG1fbGVuLCB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9leHBhbnNp
b24sIGV4cGFuc2lvbkJlaGF2aW9yKCksICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIG1fZGly
T3ZlcnJpZGUpLAorICAgIHJldHVybiBmLnNlbGVjdGlvblJlY3RGb3JUZXh0KFRleHRSdW4odGV4
dC0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBtX3N0YXJ0LCBtX2xlbiwgdGV4dFJlbmRlcmVyKCkt
PmFsbG93VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigp
LCBkaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSW50UG9pbnQobG9naWNhbExlZnQoKSwgMCksIDAsIGZyb20sIHRvKS5tYXhYKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xp
bmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAKaW5kZXggZjI5ZGY5MmViZmIyNjZhNTM1YmUwYmI5MmQ0MDljMjFlYzM4MjRlMC4u
YTBiNTJjZWZjMGY0N2U5NGFmNDVjOTg0MjZhMmMwMjM1YWQ4NWE1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTEyNTks
MjYgKzEyNTksMTQgQEAgUm9vdElubGluZUJveCogUmVuZGVyQmxvY2s6OmRldGVybWluZVN0YXJ0
UG9zaXRpb24oYm9vbCYgZmlyc3RMaW5lLCBib29sJiBmdWxsTGEKICAgICBmaXJzdExpbmUgPSAh
bGFzdDsKICAgICBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkgPSAhbGFzdCB8fCBsYXN0LT5lbmRz
V2l0aEJyZWFrKCk7CiAKLSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0T2JqOwotICAgIGludCBwb3Mg
PSAwOwogICAgIGlmIChsYXN0KSB7CiAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobGFzdC0+Ymxv
Y2tMb2dpY2FsSGVpZ2h0KCkpOwotICAgICAgICBzdGFydE9iaiA9IGxhc3QtPmxpbmVCcmVha09i
aigpOwotICAgICAgICBwb3MgPSBsYXN0LT5saW5lQnJlYWtQb3MoKTsKKyAgICAgICAgcmVzb2x2
ZXIuc2V0UG9zaXRpb24oSW5saW5lSXRlcmF0b3IodGhpcywgbGFzdC0+bGluZUJyZWFrT2JqKCks
IGxhc3QtPmxpbmVCcmVha1BvcygpKSk7CiAgICAgICAgIHJlc29sdmVyLnNldFN0YXR1cyhsYXN0
LT5saW5lQnJlYWtCaWRpU3RhdHVzKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGJvb2wgbHRy
ID0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwotICAgICAgICBEaXJlY3Rpb24g
ZGlyZWN0aW9uID0gbHRyID8gTGVmdFRvUmlnaHQgOiBSaWdodFRvTGVmdDsKLSAgICAgICAgcmVz
b2x2ZXIuc2V0TGFzdFN0cm9uZ0RpcihkaXJlY3Rpb24pOwotICAgICAgICByZXNvbHZlci5zZXRM
YXN0RGlyKGRpcmVjdGlvbik7Ci0gICAgICAgIHJlc29sdmVyLnNldEVvckRpcihkaXJlY3Rpb24p
OwotICAgICAgICByZXNvbHZlci5zZXRDb250ZXh0KEJpZGlDb250ZXh0OjpjcmVhdGUobHRyID8g
MCA6IDEsIGRpcmVjdGlvbiwgc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSwgRnJv
bVN0eWxlT3JET00pKTsKLQotICAgICAgICBzdGFydE9iaiA9IGJpZGlGaXJzdFNraXBwaW5nSW5s
aW5lcyh0aGlzLCAmcmVzb2x2ZXIpOworICAgICAgICByZXNvbHZlci5zZXRTdGF0dXMoQmlkaVN0
YXR1cyhzdHlsZSgpLT5kaXJlY3Rpb24oKSwgc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVy
cmlkZSkpOworICAgICAgICByZXNvbHZlci5zZXRQb3NpdGlvbihJbmxpbmVJdGVyYXRvcih0aGlz
LCBiaWRpRmlyc3RTa2lwcGluZ0lubGluZXModGhpcywgJnJlc29sdmVyKSwgMCkpOwogICAgIH0K
LQotICAgIHJlc29sdmVyLnNldFBvc2l0aW9uKElubGluZUl0ZXJhdG9yKHRoaXMsIHN0YXJ0T2Jq
LCBwb3MpKTsKLQogICAgIHJldHVybiBjdXJyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRleCA2N2QyMGI5NDUz
ZDVlOThlYjczODk4ZWY4MGY0ZjI4NGYxZGM4ZTIwLi44N2Y2ZmYxYjVmMWU2ZWI1OTg2MTQzMzc5
M2Q4NmIyZWU3MzNhOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIFJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgaW50
IHR4LCBpbnQgdHkpCiAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheWVkRmlsZW5hbWUgPSBm
aWxlVGV4dFZhbHVlKCk7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGRpc3BsYXllZEZpbGVu
YW1lLmxlbmd0aCgpOwogICAgICAgICBjb25zdCBVQ2hhciogc3RyaW5nID0gZGlzcGxheWVkRmls
ZW5hbWUuY2hhcmFjdGVycygpOwotICAgICAgICBUZXh0UnVuIHRleHRSdW4oc3RyaW5nLCBsZW5n
dGgsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCAhc3R5bGUo
KS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCBzdHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92
ZXJyaWRlKTsKKyAgICAgICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBmYWxzZSwg
MCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgc3R5bGUoKS0+ZGlyZWN0aW9u
KCksIHN0eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpOwogICAgICAgICAKICAgICAg
ICAgLy8gRGV0ZXJtaW5lIHdoZXJlIHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcGxhY2VkCiAgICAg
ICAgIGludCBjb250ZW50TGVmdCA9IHR4ICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsK
QEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgaG93IGJpZyB0
aGUgZmlsZW5hbWUgc3BhY2UgbmVlZHMgdG8gYmUgZm9yIGEgZ2l2ZW4gbnVtYmVyIG9mIGNoYXJh
Y3RlcnMKICAgICAgICAgLy8gKHVzaW5nICIwIiBhcyB0aGUgbm9taW5hbCBjaGFyYWN0ZXIpLgog
ICAgICAgICBjb25zdCBVQ2hhciBjaCA9ICcwJzsKLSAgICAgICAgZmxvYXQgY2hhcldpZHRoID0g
c3R5bGUoKS0+Zm9udCgpLndpZHRoKFRleHRSdW4oJmNoLCAxLCBmYWxzZSwgMCwgMCwgVGV4dFJ1
bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgZmFsc2UpKTsKKyAgICAgICAgZmxvYXQgY2hhcldp
ZHRoID0gc3R5bGUoKS0+Zm9udCgpLndpZHRoKFRleHRSdW4oJmNoLCAxLCBmYWxzZSwgMCwgMCwg
VGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbikpOwogICAgICAgICBtX21heFByZWZlcnJl
ZExvZ2ljYWxXaWR0aCA9IChpbnQpY2VpbGYoY2hhcldpZHRoICogZGVmYXVsdFdpZHRoTnVtQ2hh
cnMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
CmluZGV4IGQ3Nzk4ZDU3NTMzNDlmOTA5ZTU4NmJlYzFkMTM0NzJjMDIzZTdhNzcuLjIxMWJkMmJm
YWU1NGJmNGVmMjcyMjc2OTM5ZDNiNjY1NTZhNWY0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTExNSw5ICsxMTUsMTAgQEAgdm9pZCBSZW5kZXJM
aXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAgICAgICAgaXRlbUZvbnQgPSBG
b250KGQsIGl0ZW1Gb250LmxldHRlclNwYWNpbmcoKSwgaXRlbUZvbnQud29yZFNwYWNpbmcoKSk7
CiAgICAgICAgICAgICAgICAgaXRlbUZvbnQudXBkYXRlKGRvY3VtZW50KCktPnN0eWxlU2VsZWN0
b3IoKS0+Zm9udFNlbGVjdG9yKCkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAor
CiAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgZmxv
YXQgdGV4dFdpZHRoID0gaXRlbUZvbnQud2lkdGgoVGV4dFJ1bih0ZXh0LmltcGwoKSwgZmFsc2Us
IDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24sIGZhbHNlLCBmYWxzZSkpOwor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMgTFRSPyBDYW4ndCB0
ZXh0IGRpcmVjdGlvbiBhZmZlY3QgdGhlIHdpZHRoPworICAgICAgICAgICAgICAgIGZsb2F0IHRl
eHRXaWR0aCA9IGl0ZW1Gb250LndpZHRoKFRleHRSdW4odGV4dC5pbXBsKCksIGZhbHNlLCAwLCAw
LCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBMVFIpKTsKICAgICAgICAgICAgICAg
ICB3aWR0aCA9IG1heCh3aWR0aCwgdGV4dFdpZHRoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMzg5LDcgKzM5MCw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdy
b3VuZChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHksIGluCiAKICAgICB1bnNp
Z25lZCBsZW5ndGggPSBpdGVtVGV4dC5sZW5ndGgoKTsKICAgICBjb25zdCBVQ2hhciogc3RyaW5n
ID0gaXRlbVRleHQuY2hhcmFjdGVycygpOwotICAgIFRleHRSdW4gdGV4dFJ1bihzdHJpbmcsIGxl
bmd0aCwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24sICFpdGVt
U3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSwgaXRlbVN0eWxlLT51bmljb2RlQmlkaSgp
ID09IE92ZXJyaWRlKTsKKyAgICBUZXh0UnVuIHRleHRSdW4oc3RyaW5nLCBsZW5ndGgsIGZhbHNl
LCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBpdGVtU3R5bGUtPmRpcmVj
dGlvbigpLCBpdGVtU3R5bGUtPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpOwogICAgIEZvbnQg
aXRlbUZvbnQgPSBzdHlsZSgpLT5mb250KCk7CiAgICAgSW50UmVjdCByID0gaXRlbUJvdW5kaW5n
Qm94UmVjdCh0eCwgdHksIGxpc3RJbmRleCk7CiAgICAgci5tb3ZlKGl0ZW1PZmZzZXRGb3JBbGln
bm1lbnQodGV4dFJ1biwgaXRlbVN0eWxlLCBpdGVtRm9udCwgcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggMjEyZTcxZTU2MWM4Y2M1
ZmI1OWMwZGFhZjhkMDNjN2RmOTIyNmVhZi4uZWI3ZmY1MGI0N2E3MzNmYzNjMDIyMzMyMzg0NGI5
ZTk0NTQxMGQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwCkBAIC01NDEsOCArNTQxLDggQEAgZmxvYXQgUmVuZGVyVGV4dENvbnRyb2w6Omdl
dEF2Z0NoYXJXaWR0aChBdG9taWNTdHJpbmcgZmFtaWx5KQogICAgIGlmIChoYXNWYWxpZEF2Z0No
YXJXaWR0aChmYW1pbHkpKQogICAgICAgICByZXR1cm4gcm91bmRmKHN0eWxlKCktPmZvbnQoKS5w
cmltYXJ5Rm9udCgpLT5hdmdDaGFyV2lkdGgoKSk7CiAKLSAgICBjb25zdCBVQ2hhciBjaCA9ICcw
JzsgCi0gICAgcmV0dXJuIHN0eWxlKCktPmZvbnQoKS53aWR0aChUZXh0UnVuKCZjaCwgMSwgZmFs
c2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24sIGZhbHNlKSk7CisgICAg
Y29uc3QgVUNoYXIgY2ggPSAnMCc7CisgICAgcmV0dXJuIHN0eWxlKCktPmZvbnQoKS53aWR0aChU
ZXh0UnVuKCZjaCwgMSwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNp
b24pKTsKIH0KIAogZmxvYXQgUmVuZGVyVGV4dENvbnRyb2w6OnNjYWxlRW1Ub1VuaXRzKGludCB4
KSBjb25zdApAQCAtNjM2LDcgKzYzNiw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnBhaW50
UGxhY2Vob2xkZXIoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgIHBh
aW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IocGxhY2Vob2xkZXJTdHlsZS0+dmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBwbGFjZWhvbGRlclN0eWxlLT5jb2xvclNw
YWNlKCkpOwogICAgIAogICAgIFN0cmluZyBwbGFjZWhvbGRlclRleHQgPSBzdGF0aWNfY2FzdDxI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCo+KG5vZGUoKSktPnN0cmlwcGVkUGxhY2Vob2xkZXIo
KTsKLSAgICBUZXh0UnVuIHRleHRSdW4ocGxhY2Vob2xkZXJUZXh0LmNoYXJhY3RlcnMoKSwgcGxh
Y2Vob2xkZXJUZXh0Lmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGlu
Z0V4cGFuc2lvbiwgIXBsYWNlaG9sZGVyU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSwg
cGxhY2Vob2xkZXJTdHlsZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSk7CisgICAgVGV4dFJ1
biB0ZXh0UnVuKHBsYWNlaG9sZGVyVGV4dC5jaGFyYWN0ZXJzKCksIHBsYWNlaG9sZGVyVGV4dC5s
ZW5ndGgoKSwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24sIHBs
YWNlaG9sZGVyU3R5bGUtPmRpcmVjdGlvbigpLCBwbGFjZWhvbGRlclN0eWxlLT51bmljb2RlQmlk
aSgpID09IE92ZXJyaWRlKTsKICAgICAKICAgICBSZW5kZXJCb3gqIHRleHRSZW5kZXJlciA9IGlu
bmVyVGV4dEVsZW1lbnQoKSA/IGlubmVyVGV4dEVsZW1lbnQoKS0+cmVuZGVyQm94KCkgOiAwOwog
ICAgIGlmICh0ZXh0UmVuZGVyZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4IGRiZGVmMDc4ODBiNTU0MDQwYmMzOTI5YzNl
MmU5ZTAxMDYxZTAyMmYuLjRkMzZjODI0ODQ2MDg5YTY4Y2FhNzMyNTRhOTk0NDI2YzYyN2FhMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94
LmNwcApAQCAtNDEyLDcgKzQxMiw3IEBAIFRleHRSdW4gU1ZHSW5saW5lVGV4dEJveDo6Y29uc3Ry
dWN0VGV4dFJ1bihSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnCiAgICAgICAg
ICAgICAgICAgLCAwIC8qIHhQb3MsIG9ubHkgcmVsZXZhbnQgd2l0aCBhbGxvd1RhYnM9dHJ1ZSAq
LwogICAgICAgICAgICAgICAgICwgMCAvKiBwYWRkaW5nLCBvbmx5IHJlbGV2YW50IGZvciBqdXN0
aWZpZWQgdGV4dCwgbm90IHJlbGV2YW50IGZvciBTVkcgKi8KICAgICAgICAgICAgICAgICAsIFRl
eHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24KLSAgICAgICAgICAgICAgICAsIGRpcmVjdGlv
bigpID09IFJUTAorICAgICAgICAgICAgICAgICwgZGlyZWN0aW9uKCkKICAgICAgICAgICAgICAg
ICAsIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpIC8qIGRpcmVjdGlv
bmFsT3ZlcnJpZGUgKi8pOwogCiAjaWYgRU5BQkxFKFNWR19GT05UUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAKaW5kZXggMDQyYmMyMmY2ZGFk
NjkyYWVjODdhMmJjMjRkMjk3MThlNDAyMGEwYy4uZDlkODZmNjFhMTgxYzBiYzNlY2Y1NGRmNmY4
MmMyZTY4YmMzNjYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TWV0cmljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljcy5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0
VGV4dFJ1bihSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0LCBjb25zdCBVQ2hhciogY2hhcmFjdGUK
ICAgICAgICAgICAgICAgICAsIDAgLyogeFBvcywgb25seSByZWxldmFudCB3aXRoIGFsbG93VGFi
cz10cnVlICovCiAgICAgICAgICAgICAgICAgLCAwIC8qIHBhZGRpbmcsIG9ubHkgcmVsZXZhbnQg
Zm9yIGp1c3RpZmllZCB0ZXh0LCBub3QgcmVsZXZhbnQgZm9yIFNWRyAqLwogICAgICAgICAgICAg
ICAgICwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbgotICAgICAgICAgICAgICAgICwg
IXN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkKKyAgICAgICAgICAgICAgICAsIHN0eWxl
LT5kaXJlY3Rpb24oKQogICAgICAgICAgICAgICAgICwgc3R5bGUtPnVuaWNvZGVCaWRpKCkgPT0g
T3ZlcnJpZGUgLyogZGlyZWN0aW9uYWxPdmVycmlkZSAqLyk7CiAKICNpZiBFTkFCTEUoU1ZHX0ZP
TlRTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90768</attachid>
            <date>2011-04-22 14:52:52 -0700</date>
            <delta_ts>2011-04-22 16:07:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59226-20110422145251.patch</filename>
            <type>text/plain</type>
            <size>32410</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ2NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNDI5Y2QyYWRlMDBhNDMy
ZTY2ZmQ0MTEyZDliNTkzZjQxOGFmOGM4Li4zMWU5YjBkNTU0YWYzYTNlMzlkOGRiZWE0ZThiYzdi
NDVhMTQ3MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMDQtMjIgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNob3VsZCBoYXZlIGFuIGVhc3kgd2F5IHRvIGNvbnN0cnVjdCBz
dGFydGluZyBCaWRpU3RhdHVzIGZvciBhIHBhcmFncmFwaCByb290CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTIyNgorCisgICAgICAgIFR3byBwbGFj
ZXMgdHJ5IHRvIGNvbnN0cnVjdCBCaWRpU3RhdHVzZXMgZm9yIGEgcGFyYWdyYXBoIHJvb3QgdXNp
bmcgY29weS9wYXN0ZSBjb2RlLgorICAgICAgICBJJ3ZlIG1hZGUgdGhpcyBhIGNvbnN0cnVjdG9y
IGZvciBCaWRpU3RhdHVzIGluc3RlYWQuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGVmZm9y
dCBJIGFkZGVkIGEgZGlyZWN0aW9uKCkgYWNjZXNzb3IgZm9yIFRleHRSdW4gYW5kIGdvdAorICAg
ICAgICByaWQgb2YgdGhlIG9sZCBtX3J0bCBib29sLiAgVGhpcyBpcyBwYXJ0IG9mIHRoZSBnZW5l
cmljIGVmZm9ydCBpbiB0aGUKKyAgICAgICAgQmlkaSBjb2RlIHRvIHJlcGxhY2Ugb2xkIGJvb2wg
dXNhZ2Ugd2l0aCB0aGUgc3VwZXJpb3IgVGV4dERpcmVjdGlvbiBlbnVtCisgICAgICAgICh0aGlz
IGdlbmVyYWxseSBtYWtlcyB0aGUgY29kZSBjbGVhbmVyKS4KKworICAgICAgICBBcyBwYXJ0IG9m
IHRoaXMgcmVwbGFjZW1lbnQgZWZmb3J0IEkgZm91bmQgc2V2ZXJhbCBwbGFjZXMgd2hpY2ggd2Vy
ZQorICAgICAgICBhc3N1bWluZyBMVFIgKGJ5IHBhc3NpbmcgcnRsPWZhbHNlKSB3aGVuIHRoZXkg
cHJvYmFibHkgd2FudCB0byB1c2UKKyAgICAgICAgdGhlIGN1cnJlbnQgdGV4dCBkaXJlY3Rpb24u
ICBJIHN1c3BlY3QgdGhhdCBMVFIgdnMuIFJUTCBtYXkgYWZmZWN0CisgICAgICAgIHN0cmluZyB3
aWR0aCBpbiB0aGUgY2FzZSBvZiBsaWdhdHVyZXMuICBJdCdzIHVuY2xlYXIuCisKKyAgICAgICAg
VGhpcyBpcyBhbG1vc3QgZW50aXJlbHkgYSBtZWNoYW5pY2FsIGNoYW5nZS4KKworICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6VGV4dFJ1bik6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpkaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFJ1bjo6cnRsKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46Omx0cik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0UnVuOjpzZXREaXJlY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpU3RhdHVzOjpCaWRp
U3RhdHVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lz
Qm94OjpzZWxlY3Rpb25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpwYWlu
dFNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludFNwZWxsaW5nT3JHcmFtbWFyTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZVRleHRCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwbGFjZW1lbnRNYXJrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmRldGVybWluZVN0YXJ0UG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmls
ZVVwbG9hZENvbnRyb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmdldEF2
Z0NoYXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6cGFpbnRQ
bGFjZWhvbGRlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4p
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29uc3RydWN0VGV4dFJ1bik6CisKIDIwMTEtMDQtMjIgIFhpYW9tZWkgSmkgIDx4
amlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKaW5kZXggY2Y5MGFlMWE0ZjhhODVkZTUzM2YxNGMzZWRiN2NiNGI1ZmFmMmNhYi4u
Y2EwYzRlNTliNjZkOGJkOGJmOTIwM2QyYTI5NmY2YTE4NmIxZGI1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CkBAIC0xODYxLDEyICsxODYxLDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgLy8g
RklYTUU6IE5lZWQgdG8gdHVybiBvZmYgZm9udCBzbW9vdGhpbmcuCiAKICAgICBSZW5kZXJTdHls
ZSogY29tcHV0ZWRTdHlsZSA9IGNhbnZhcygpLT5jb21wdXRlZFN0eWxlKCk7Ci0gICAgYm9vbCBy
dGwgPSBjb21wdXRlZFN0eWxlID8gIWNvbXB1dGVkU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSA6IGZhbHNlOworICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gY29tcHV0ZWRTdHls
ZSA/IGNvbXB1dGVkU3R5bGUtPmRpcmVjdGlvbigpIDogTFRSOworICAgIGJvb2wgaXNSVEwgPSBk
aXJlY3Rpb24gPT0gUlRMOwogICAgIGJvb2wgb3ZlcnJpZGUgPSBjb21wdXRlZFN0eWxlID8gY29t
cHV0ZWRTdHlsZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSA6IGZhbHNlOwogCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKICAgICBjb25zdCBVQ2hhciogc3RyaW5nID0g
dGV4dC5jaGFyYWN0ZXJzKCk7Ci0gICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBm
YWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgcnRsLCBvdmVycmlk
ZSk7CisgICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBmYWxzZSwgMCwgMCwgVGV4
dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSk7CiAKICAg
ICAvLyBEcmF3IHRoZSBpdGVtIHRleHQgYXQgdGhlIGNvcnJlY3QgcG9pbnQuCiAgICAgRmxvYXRQ
b2ludCBsb2NhdGlvbih4LCB5KTsKQEAgLTE4ODgsMTMgKzE4ODksMTMgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBm
bG9hdCB4LCBmbG8KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZmxvYXQgd2lkdGggPSBm
b250LndpZHRoKFRleHRSdW4odGV4dCwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxp
bmdFeHBhbnNpb24sIHJ0bCwgb3ZlcnJpZGUpKTsKKyAgICBmbG9hdCB3aWR0aCA9IGZvbnQud2lk
dGgoVGV4dFJ1bih0ZXh0LCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFu
c2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSkpOwogCiAgICAgVGV4dEFsaWduIGFsaWduID0gc3Rh
dGUoKS5tX3RleHRBbGlnbjsKICAgICBpZiAoYWxpZ24gPT0gU3RhcnRUZXh0QWxpZ24pCi0gICAg
ICAgICBhbGlnbiA9IHJ0bCA/IFJpZ2h0VGV4dEFsaWduIDogTGVmdFRleHRBbGlnbjsKKyAgICAg
ICAgYWxpZ24gPSBpc1JUTCA/IFJpZ2h0VGV4dEFsaWduIDogTGVmdFRleHRBbGlnbjsKICAgICBl
bHNlIGlmIChhbGlnbiA9PSBFbmRUZXh0QWxpZ24pCi0gICAgICAgIGFsaWduID0gcnRsID8gTGVm
dFRleHRBbGlnbiA6IFJpZ2h0VGV4dEFsaWduOworICAgICAgICBhbGlnbiA9IGlzUlRMID8gTGVm
dFRleHRBbGlnbiA6IFJpZ2h0VGV4dEFsaWduOwogCiAgICAgc3dpdGNoIChhbGlnbikgewogICAg
IGNhc2UgQ2VudGVyVGV4dEFsaWduOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCmluZGV4IDgwYTY2YjI0YzY1OWFlZDQw
ZWE5YTYwMDRmNzQ4MTZhNTcyMGZkYWIuLjk2NWNjZDU4YjFkNTY1ZmRlY2I5MWY3YjI0OWVlZTA3
NWU0NDY2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bv
cHVwTWVudUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKQEAgLTk2Myw4ICs5NjMsNyBAQCB2b2lkIFBvcHVwTGlz
dEJveDo6cGFpbnRSb3coR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwg
aW50IHJvd0luZAogICAgIH0KIAogICAgIC8vIFByZXBhcmUgdGhlIGRpcmVjdGlvbmFsaXR5IHRv
IGRyYXcgdGV4dC4KLSAgICBib29sIHJ0bCA9IHN0eWxlLnRleHREaXJlY3Rpb24oKSA9PSBSVEw7
Ci0gICAgVGV4dFJ1biB0ZXh0UnVuKGl0ZW1UZXh0LmNoYXJhY3RlcnMoKSwgaXRlbVRleHQubGVu
Z3RoKCksIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBydGws
IHN0eWxlLmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpKTsKKyAgICBUZXh0UnVuIHRleHRSdW4o
aXRlbVRleHQuY2hhcmFjdGVycygpLCBpdGVtVGV4dC5sZW5ndGgoKSwgZmFsc2UsIDAsIDAsIFRl
eHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24sIHN0eWxlLnRleHREaXJlY3Rpb24oKSwgc3R5
bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkpOwogICAgIC8vIElmIHRoZSB0ZXh0IGlzIHJp
Z2h0LXRvLWxlZnQsIG1ha2UgaXQgcmlnaHQtYWxpZ25lZCBieSBhZGp1c3RpbmcgaXRzCiAgICAg
Ly8gYmVnaW5uaW5nIHBvc2l0aW9uLgogICAgIGlmIChyaWdodEFsaWduZWQpCkBAIC0xMDAyLDcg
KzEwMDEsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnRSb3coR3JhcGhpY3NDb250ZXh0KiBn
YywgY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHJvd0luZAogICAgICAgICBpdGVtRm9udC51cGRh
dGUoMCk7CiAgICAgfQogCi0gICAgVGV4dFJ1biBsYWJlbFRleHRSdW4oaXRlbUxhYmVsLmNoYXJh
Y3RlcnMoKSwgaXRlbUxhYmVsLmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dU
cmFpbGluZ0V4cGFuc2lvbiwgcnRsLCBzdHlsZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSk7
CisgICAgVGV4dFJ1biBsYWJlbFRleHRSdW4oaXRlbUxhYmVsLmNoYXJhY3RlcnMoKSwgaXRlbUxh
YmVsLmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lv
biwgc3R5bGUudGV4dERpcmVjdGlvbigpLCBzdHlsZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUo
KSk7CiAgICAgaWYgKHJpZ2h0QWxpZ25lZCkKICAgICAgICAgdGV4dFggPSBtYXgoMCwgbV9wb3B1
cENsaWVudC0+Y2xpZW50UGFkZGluZ0xlZnQoKSAtIG1fcG9wdXBDbGllbnQtPmNsaWVudEluc2V0
TGVmdCgpKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBhZWQyNDg4Mjk3MGExZGNiYzMxZThmYjgy
OGM4YTg3NjhiMzJjZGE3Li5hZjk5OWVhMGNiYjQxODQ5MWZhYjRiZGZkOWRjMjg3OTYxY2Y3YzJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKQEAgLTM5OCwyOCArMzk4LDI0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3QmlkaVRleHQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBG
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQmlk
aVJlc29sdmVyPFRleHRSdW5JdGVyYXRvciwgQmlkaUNoYXJhY3RlclJ1bj4gYmlkaVJlc29sdmVy
OworICAgIGJpZGlSZXNvbHZlci5zZXRTdGF0dXMoQmlkaVN0YXR1cyhydW4uZGlyZWN0aW9uKCks
IHJ1bi5kaXJlY3Rpb25hbE92ZXJyaWRlKCkpKTsKKyAgICBiaWRpUmVzb2x2ZXIuc2V0UG9zaXRp
b24oVGV4dFJ1bkl0ZXJhdG9yKCZydW4sIDApKTsKKwogICAgIC8vIEZJWE1FOiBUaGlzIG93bmVy
c2hpcCBzaG91bGQgYmUgcmV2ZXJzZWQuIFdlIHNob3VsZCBwYXNzIEJpZGlSdW5MaXN0CiAgICAg
Ly8gdG8gQmlkaVJlc29sdmVyIGluIGNyZWF0ZUJpZGlSdW5zRm9yTGluZS4KLSAgICBCaWRpUmVz
b2x2ZXI8VGV4dFJ1bkl0ZXJhdG9yLCBCaWRpQ2hhcmFjdGVyUnVuPiBiaWRpUmVzb2x2ZXI7CiAg
ICAgQmlkaVJ1bkxpc3Q8QmlkaUNoYXJhY3RlclJ1bj4mIGJpZGlSdW5zID0gYmlkaVJlc29sdmVy
LnJ1bnMoKTsKLQotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIHBhcmFncmFwaERpcmVjdGlv
biA9IHJ1bi5sdHIoKSA/IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQgOiBXVEY6OlVuaWNvZGU6
OlJpZ2h0VG9MZWZ0OwotCi0gICAgYmlkaVJlc29sdmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKHBh
cmFncmFwaERpcmVjdGlvbiwgcGFyYWdyYXBoRGlyZWN0aW9uLCBwYXJhZ3JhcGhEaXJlY3Rpb24s
IEJpZGlDb250ZXh0OjpjcmVhdGUocnVuLmx0cigpID8gMCA6IDEsIHBhcmFncmFwaERpcmVjdGlv
biwgcnVuLmRpcmVjdGlvbmFsT3ZlcnJpZGUoKSkpKTsKLQotICAgIGJpZGlSZXNvbHZlci5zZXRQ
b3NpdGlvbihUZXh0UnVuSXRlcmF0b3IoJnJ1biwgMCkpOwogICAgIGJpZGlSZXNvbHZlci5jcmVh
dGVCaWRpUnVuc0ZvckxpbmUoVGV4dFJ1bkl0ZXJhdG9yKCZydW4sIHJ1bi5sZW5ndGgoKSkpOwot
CiAgICAgaWYgKCFiaWRpUnVucy5ydW5Db3VudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBG
bG9hdFBvaW50IGN1cnJQb2ludCA9IHBvaW50OwogICAgIEJpZGlDaGFyYWN0ZXJSdW4qIGJpZGlS
dW4gPSBiaWRpUnVucy5maXJzdFJ1bigpOwogICAgIHdoaWxlIChiaWRpUnVuKSB7Ci0KICAgICAg
ICAgVGV4dFJ1biBzdWJydW4gPSBydW47CiAgICAgICAgIHN1YnJ1bi5zZXRUZXh0KHJ1bi5kYXRh
KGJpZGlSdW4tPnN0YXJ0KCkpLCBiaWRpUnVuLT5zdG9wKCkgLSBiaWRpUnVuLT5zdGFydCgpKTsK
LSAgICAgICAgc3VicnVuLnNldFJUTChiaWRpUnVuLT5sZXZlbCgpICUgMik7CisgICAgICAgIGJv
b2wgaXNSVEwgPSBiaWRpUnVuLT5sZXZlbCgpICUgMjsKKyAgICAgICAgc3VicnVuLnNldERpcmVj
dGlvbihpc1JUTCA/IFJUTCA6IExUUik7CiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92
ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZhbHNlKSk7CiAKICAgICAgICAgZm9udC5kcmF3
VGV4dCh0aGlzLCBzdWJydW4sIGN1cnJQb2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UZXh0UnVuLmgKaW5kZXggZWM3NjNiOWEzYWQzM2U5MDFmMDMwZGM5OTFkM2E2ZTBk
MTA0Y2VhNC4uNzM3YWRmNjU5ODhiY2ZlN2Y3ZTRjYjllM2UxZDkwMDZjZWYxODI2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApAQCAtMjUsNiArMjUsNyBA
QAogI2RlZmluZSBUZXh0UnVuX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5j
bHVkZSAiVGV4dERpcmVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBFeHBhbnNpb25CZWhhdmlv
cjsKIAotICAgIFRleHRSdW4oY29uc3QgVUNoYXIqIGMsIGludCBsZW4sIGJvb2wgYWxsb3dUYWJz
ID0gZmFsc2UsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25C
ZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3Ji
aWRMZWFkaW5nRXhwYW5zaW9uLCBib29sIHJ0bCA9IGZhbHNlLCBib29sIGRpcmVjdGlvbmFsT3Zl
cnJpZGUgPSBmYWxzZSkKKyAgICBUZXh0UnVuKGNvbnN0IFVDaGFyKiBjLCBpbnQgbGVuLCBib29s
IGFsbG93VGFicyA9IGZhbHNlLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwg
RXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBM
VFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlKQogICAgICAgICA6IG1fY2hhcmFj
dGVycyhjKQogICAgICAgICAsIG1fbGVuKGxlbikKICAgICAgICAgLCBtX3hwb3MoeHBvcykKQEAg
LTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICAsIG1faG9yaXpvbnRhbEdseXBoU3RyZXRj
aCgxKQogI2VuZGlmCiAgICAgICAgICwgbV9hbGxvd1RhYnMoYWxsb3dUYWJzKQotICAgICAgICAs
IG1fcnRsKHJ0bCkKKyAgICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCiAgICAgICAgICwg
bV9kaXJlY3Rpb25hbE92ZXJyaWRlKGRpcmVjdGlvbmFsT3ZlcnJpZGUpCiAgICAgICAgICwgbV9k
aXNhYmxlU3BhY2luZyhmYWxzZSkKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQpAQCAtNjIsNyArNjMs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFRleHRSdW4oY29uc3QgU3RyaW5nJiBz
LCBib29sIGFsbG93VGFicyA9IGZhbHNlLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9u
ID0gMCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgYm9vbCBydGwgPSBmYWxzZSwgYm9v
bCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UpCisgICAgVGV4dFJ1bihjb25zdCBTdHJpbmcm
IHMsIGJvb2wgYWxsb3dUYWJzID0gZmFsc2UsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNp
b24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxp
bmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UpCiAgICAgICAgIDog
bV9jaGFyYWN0ZXJzKHMuY2hhcmFjdGVycygpKQogICAgICAgICAsIG1fbGVuKHMubGVuZ3RoKCkp
CiAgICAgICAgICwgbV94cG9zKHhwb3MpCkBAIC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgLCBtX2hvcml6b250YWxHbHlwaFN0cmV0Y2goMSkKICNlbmRpZgogICAgICAgICAsIG1fYWxs
b3dUYWJzKGFsbG93VGFicykKLSAgICAgICAgLCBtX3J0bChydGwpCisgICAgICAgICwgbV9kaXJl
Y3Rpb24oZGlyZWN0aW9uKQogICAgICAgICAsIG1fZGlyZWN0aW9uYWxPdmVycmlkZShkaXJlY3Rp
b25hbE92ZXJyaWRlKQogICAgICAgICAsIG1fZGlzYWJsZVNwYWNpbmcoZmFsc2UpCiAjaWYgRU5B
QkxFKFNWR19GT05UUykKQEAgLTEwMCwxMyArMTAxLDE0IEBAIHB1YmxpYzoKICAgICBmbG9hdCBl
eHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQogICAgIGJvb2wgYWxsb3dz
TGVhZGluZ0V4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uQmVoYXZpb3IgJiBB
bGxvd0xlYWRpbmdFeHBhbnNpb247IH0KICAgICBib29sIGFsbG93c1RyYWlsaW5nRXhwYW5zaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb25CZWhhdmlvciAmIEFsbG93VHJhaWxpbmdFeHBh
bnNpb247IH0KLSAgICBib29sIHJ0bCgpIGNvbnN0IHsgcmV0dXJuIG1fcnRsOyB9Ci0gICAgYm9v
bCBsdHIoKSBjb25zdCB7IHJldHVybiAhbV9ydGw7IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9CisgICAgYm9vbCBydGwoKSBjb25z
dCB7IHJldHVybiBtX2RpcmVjdGlvbiA9PSBSVEw7IH0KKyAgICBib29sIGx0cigpIGNvbnN0IHsg
cmV0dXJuIG1fZGlyZWN0aW9uID09IExUUjsgfQogICAgIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlk
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uYWxPdmVycmlkZTsgfQogICAgIGJvb2wgc3Bh
Y2luZ0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlU3BhY2luZzsgfQogCiAgICAg
dm9pZCBkaXNhYmxlU3BhY2luZygpIHsgbV9kaXNhYmxlU3BhY2luZyA9IHRydWU7IH0KLSAgICB2
b2lkIHNldFJUTChib29sIGIpIHsgbV9ydGwgPSBiOyB9CisgICAgdm9pZCBzZXREaXJlY3Rpb24o
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIHsgbV9kaXJlY3Rpb24gPSBkaXJlY3Rpb247IH0KICAg
ICB2b2lkIHNldERpcmVjdGlvbmFsT3ZlcnJpZGUoYm9vbCBvdmVycmlkZSkgeyBtX2RpcmVjdGlv
bmFsT3ZlcnJpZGUgPSBvdmVycmlkZTsgfQogCiAjaWYgRU5BQkxFKFNWR19GT05UUykKQEAgLTEz
MSw4ICsxMzMsOCBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1faG9yaXpvbnRhbEdseXBoU3RyZXRj
aDsKICNlbmRpZgogICAgIGJvb2wgbV9hbGxvd1RhYnM7Ci0gICAgYm9vbCBtX3J0bDsKLSAgICBi
b29sIG1fZGlyZWN0aW9uYWxPdmVycmlkZTsKKyAgICBUZXh0RGlyZWN0aW9uIG1fZGlyZWN0aW9u
OworICAgIGJvb2wgbV9kaXJlY3Rpb25hbE92ZXJyaWRlOyAvLyBXYXMgdGhpcyBkaXJlY3Rpb24g
c2V0IGJ5IGFuIG92ZXJyaWRlIGNoYXJhY3Rlci4KICAgICBib29sIG1fZGlzYWJsZVNwYWNpbmc7
CiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
QmlkaVJlc29sdmVyLmgKaW5kZXggYzZlZmRkOGZmZWI5MDA2YmFlYjRkYjY4NmJiNTFmY2UxZjYy
Nzk5NC4uMDM4MGM1YjUyYzI5OTExN2FlMTJhMDcxNjE5ZWQxNjZkNGY2Mjg1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCkBAIC0yNCw2ICsyNCw3IEBA
CiAKICNpbmNsdWRlICJCaWRpQ29udGV4dC5oIgogI2luY2x1ZGUgIkJpZGlSdW5MaXN0LmgiCisj
aW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
NjIsNiArNjMsMTUgQEAgc3RydWN0IEJpZGlTdGF0dXMgewogICAgIHsKICAgICB9CiAKKyAgICAv
LyBDcmVhdGVzIGEgQmlkaVN0YXR1cyByZXByZXNlbnRpbmcgYSBuZXcgcGFyYWdyYXBoIHJvb3Qg
d2l0aCBhIGRlZmF1bHQgZGlyZWN0aW9uLgorICAgIC8vIFVzZXMgVGV4dERpcmVjdGlvbiBhcyBp
dCBvbmx5IGhhcyB0d28gcG9zc2liaWxpdGllcyBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6RGly
ZWN0aW9uIHdoaWNoIGhhcyAxOS4KKyAgICBCaWRpU3RhdHVzKFRleHREaXJlY3Rpb24gdGV4dERp
cmVjdGlvbiwgYm9vbCBpc092ZXJyaWRlKQorICAgIHsKKyAgICAgICAgV1RGOjpVbmljb2RlOjpE
aXJlY3Rpb24gZGlyZWN0aW9uID0gdGV4dERpcmVjdGlvbiA9PSBMVFIgPyBXVEY6OlVuaWNvZGU6
OkxlZnRUb1JpZ2h0IDogV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdDsKKyAgICAgICAgZW9yID0g
bGFzdFN0cm9uZyA9IGxhc3QgPSBkaXJlY3Rpb247CisgICAgICAgIGNvbnRleHQgPSBCaWRpQ29u
dGV4dDo6Y3JlYXRlKHRleHREaXJlY3Rpb24gPT0gTFRSID8gMCA6IDEsIGRpcmVjdGlvbiwgaXNP
dmVycmlkZSk7CisgICAgfQorCiAgICAgQmlkaVN0YXR1cyhXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
biBlb3JEaXIsIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGxhc3RTdHJvbmdEaXIsIFdURjo6VW5p
Y29kZTo6RGlyZWN0aW9uIGxhc3REaXIsIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IGJpZGlDb250
ZXh0KQogICAgICAgICA6IGVvcihlb3JEaXIpCiAgICAgICAgICwgbGFzdFN0cm9uZyhsYXN0U3Ry
b25nRGlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVu
dVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApp
bmRleCBjNzVlMjE5ZTI1MGNlYTdiODg1NGQzOTM1YzkwMDdjMDc4Y2ZhMzJmLi5kMzZhYzU2MzJl
NzkwNGRkMjNhMzk4ZjMxY2VmN2VlMGI2ZWYzMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApAQCAtNjMxLDcgKzYzMSw4IEBAIHZvaWQgUG9wdXBN
ZW51V2luOjpwYWludChjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBIREMgaGRjKQogICAgICAg
ICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGl0ZW1UZXh0Lmxlbmd0aCgpOwogICAg
ICAgICBjb25zdCBVQ2hhciogc3RyaW5nID0gaXRlbVRleHQuY2hhcmFjdGVycygpOwotICAgICAg
ICBUZXh0UnVuIHRleHRSdW4oc3RyaW5nLCBsZW5ndGgsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpB
bGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBpdGVtVGV4dC5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigp
ID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQpOworICAgICAgICBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiA9IChpdGVtVGV4dC5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFdURjo6VW5p
Y29kZTo6UmlnaHRUb0xlZnQpID8gUlRMIDogTFRSOworICAgICAgICBUZXh0UnVuIHRleHRSdW4o
c3RyaW5nLCBsZW5ndGgsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uLCBkaXJlY3Rpb24pOwogCiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG9wdGlvblRl
eHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5jcHAKaW5kZXggNTA2YTAzNmMwMTkzMTljN2U3YWI4MDk2MGQx
MWUxNmI0MTc2ZTQ2My4uOGMyMzBhMDBhNmFiOGY2MzA5ZGI0ZjA2MDI2Njk3NTgzM2U1NGM4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCkBAIC01Myw3ICs1Myw4
IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgs
IGludCB0eSwgaW50IGxpbmVUb3AsIGludCBsCiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiBz
dHIgPSBtX3N0cjsKLSAgICBjb250ZXh0LT5kcmF3VGV4dChzdHlsZS0+Zm9udCgpLCBUZXh0UnVu
KHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgoKSwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFs
bG93VHJhaWxpbmdFeHBhbnNpb24sIGZhbHNlLCBzdHlsZS0+dmlzdWFsbHlPcmRlcmVkKCkpLCBJ
bnRQb2ludChtX3ggKyB0eCwgbV95ICsgdHkgKyBzdHlsZS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQo
KSkpOworICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdhc3kgTFRSPworICAgIGNvbnRleHQt
PmRyYXdUZXh0KHN0eWxlLT5mb250KCksIFRleHRSdW4oc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxl
bmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgTFRS
LCBzdHlsZS0+dmlzdWFsbHlPcmRlcmVkKCkpLCBJbnRQb2ludChtX3ggKyB0eCwgbV95ICsgdHkg
KyBzdHlsZS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwogCiAgICAgLy8gUmVzdG9yZSB0aGUg
cmVndWxhciBmaWxsIGNvbG9yLgogICAgIGlmICh0ZXh0Q29sb3IgIT0gY29udGV4dC0+ZmlsbENv
bG9yKCkpCkBAIC03NCw3ICs3NSw4IEBAIEludFJlY3QgRWxsaXBzaXNCb3g6OnNlbGVjdGlvblJl
Y3QoaW50IHR4LCBpbnQgdHkpCiB7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gbV9yZW5kZXJl
ci0+c3R5bGUobV9maXJzdExpbmUpOwogICAgIGNvbnN0IEZvbnQmIGYgPSBzdHlsZS0+Zm9udCgp
OwotICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGYuc2VsZWN0aW9uUmVjdEZvclRleHQoVGV4
dFJ1bihtX3N0ci5jaGFyYWN0ZXJzKCksIG1fc3RyLmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4
dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgZmFsc2UsIHN0eWxlLT52aXN1YWxseU9yZGVy
ZWQoKSksCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGFsd2F5cyBMVFI/CisgICAgcmV0dXJu
IGVuY2xvc2luZ0ludFJlY3QoZi5zZWxlY3Rpb25SZWN0Rm9yVGV4dChUZXh0UnVuKG1fc3RyLmNo
YXJhY3RlcnMoKSwgbV9zdHIubGVuZ3RoKCksIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1Ry
YWlsaW5nRXhwYW5zaW9uLCBMVFIsIHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSksCiAgICAgICAg
ICAgICBJbnRQb2ludChtX3ggKyB0eCwgbV95ICsgdHkgKyByb290KCktPnNlbGVjdGlvblRvcCgp
KSwgcm9vdCgpLT5zZWxlY3Rpb25IZWlnaHQoKSkpOwogfQogCkBAIC05NCw3ICs5Niw4IEBAIHZv
aWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
aW50IHR4LCBpbnQgdHksIFJlbmRlCiAgICAgaW50IHkgPSByb290KCktPnNlbGVjdGlvblRvcCgp
OwogICAgIGludCBoID0gcm9vdCgpLT5zZWxlY3Rpb25IZWlnaHQoKTsKICAgICBjb250ZXh0LT5j
bGlwKEludFJlY3QobV94ICsgdHgsIHkgKyB0eSwgbV9sb2dpY2FsV2lkdGgsIGgpKTsKLSAgICBj
b250ZXh0LT5kcmF3SGlnaGxpZ2h0Rm9yVGV4dChmb250LCBUZXh0UnVuKG1fc3RyLmNoYXJhY3Rl
cnMoKSwgbV9zdHIubGVuZ3RoKCksIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uLCBmYWxzZSwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKSwKKyAgICAvLyBGSVhN
RTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8KKyAgICBjb250ZXh0LT5kcmF3SGlnaGxpZ2h0Rm9y
VGV4dChmb250LCBUZXh0UnVuKG1fc3RyLmNoYXJhY3RlcnMoKSwgbV9zdHIubGVuZ3RoKCksIGZh
bHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBMVFIsIHN0eWxlLT52
aXN1YWxseU9yZGVyZWQoKSksCiAgICAgICAgIEludFBvaW50KG1feCArIHR4LCBtX3kgKyB0eSAr
IHkpLCBoLCBjLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IGZjMzlhOWZhOWI3OGY2MjZiNDI4OTZkOTZi
OTRiN2E2ZjhjNWEwMmUuLjdiYzk0NzAwZDA2ZWQ0M2ZhYzNhZWNjZTk4NTFhYjc4NmFkMjBmM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTE5Miw3
ICsxOTIsNyBAQCBJbnRSZWN0IElubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3QoaW50IHR4LCBp
bnQgdHksIGludCBzdGFydFBvcywgaW50IGVuZFBvcykKICAgICAgICAgZVBvcyA9IGxlbjsKICAg
ICB9CiAKLSAgICBJbnRSZWN0IHIgPSBlbmNsb3NpbmdJbnRSZWN0KGYuc2VsZWN0aW9uUmVjdEZv
clRleHQoVGV4dFJ1bihjaGFyYWN0ZXJzLCBsZW4sIHRleHRPYmotPmFsbG93VGFicygpLCB0ZXh0
UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLCAhaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpLCBtX2Rpck92ZXJyaWRlKSwKKyAgICBJbnRSZWN0IHIgPSBlbmNsb3NpbmdJbnRS
ZWN0KGYuc2VsZWN0aW9uUmVjdEZvclRleHQoVGV4dFJ1bihjaGFyYWN0ZXJzLCBsZW4sIHRleHRP
YmotPmFsbG93VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlv
cigpLCBkaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KCksIHNlbEhlaWdodCwg
c1BvcywgZVBvcykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICBpbnQgbG9naWNhbFdpZHRoID0gci53aWR0aCgpOwpAQCAtNjQ5
LDcgKzY0OSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGludCB0eCwgaW50IHR5LCBpbnQgLypsaW5lVG9wKi8sCiAgICAgaWYgKGhhc0h5cGhlbigp
KQogICAgICAgICBhZGp1c3RDaGFyYWN0ZXJzQW5kTGVuZ3RoRm9ySHlwaGVuKGNoYXJhY3RlcnNX
aXRoSHlwaGVuLCBzdHlsZVRvVXNlLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogCi0gICAgVGV4dFJ1
biB0ZXh0UnVuKGNoYXJhY3RlcnMsIGxlbmd0aCwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFicygp
LCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLCAhaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRlIHx8IHN0eWxlVG9Vc2UtPnZpc3VhbGx5T3Jk
ZXJlZCgpKTsKKyAgICBUZXh0UnVuIHRleHRSdW4oY2hhcmFjdGVycywgbGVuZ3RoLCB0ZXh0UmVu
ZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9leHBhbnNpb24sIGV4cGFuc2lvbkJl
aGF2aW9yKCksIGRpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRlIHx8IHN0eWxlVG9Vc2UtPnZpc3Vh
bGx5T3JkZXJlZCgpKTsKIAogICAgIGludCBzUG9zID0gMDsKICAgICBpbnQgZVBvcyA9IDA7CkBA
IC04MTgsNyArODE4LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKICAgICBGbG9hdFBvaW50
IGxvY2FsT3JpZ2luKGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBkZWx0YVkpOwogICAg
IGNvbnRleHQtPmNsaXAoRmxvYXRSZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNpemUobV9sb2dpY2Fs
V2lkdGgsIHNlbEhlaWdodCkpKTsKICAgICBjb250ZXh0LT5kcmF3SGlnaGxpZ2h0Rm9yVGV4dChm
b250LCBUZXh0UnVuKGNoYXJhY3RlcnMsIGxlbmd0aCwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFi
cygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCBt
X2Rpck92ZXJyaWRlIHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUt
PnZpc3VhbGx5T3JkZXJlZCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b2NhbE9yaWdpbiwgc2VsSGVpZ2h0LCBjLCBzdHlsZS0+Y29sb3JTcGFjZSgpLCBzUG9zLCBlUG9z
KTsKIH0KIApAQCAtODQxLDcgKzg0MSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDb21w
b3NpdGlvbkJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGCiAgICAg
aW50IHNlbEhlaWdodCA9IHNlbGVjdGlvbkhlaWdodCgpOwogICAgIEZsb2F0UG9pbnQgbG9jYWxP
cmlnaW4oYm94T3JpZ2luLngoKSwgYm94T3JpZ2luLnkoKSAtIGRlbHRhWSk7CiAgICAgY29udGV4
dC0+ZHJhd0hpZ2hsaWdodEZvclRleHQoZm9udCwgVGV4dFJ1bih0ZXh0UmVuZGVyZXIoKS0+dGV4
dCgpLT5jaGFyYWN0ZXJzKCkgKyBtX3N0YXJ0LCBtX2xlbiwgdGV4dFJlbmRlcmVyKCktPmFsbG93
VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCks
IG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSB8fCBzdHls
ZS0+dmlzdWFsbHlPcmRlcmVkKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvY2FsT3JpZ2luLCBzZWxIZWlnaHQsIGMsIHN0eWxlLT5jb2xvclNwYWNlKCksIHNQb3MsIGVQ
b3MpOwogfQogCkBAIC0xMDAwLDcgKzEwMDAsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50
U3BlbGxpbmdPckdyYW1tYXJNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwgY29uc3QgRmxvYQog
ICAgICAgICBpbnQgZGVsdGFZID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNGbGlwcGVkTGluZXNX
cml0aW5nTW9kZSgpID8gc2VsZWN0aW9uQm90dG9tKCkgLSBsb2dpY2FsQm90dG9tKCkgOiBsb2dp
Y2FsVG9wKCkgLSBzZWxlY3Rpb25Ub3AoKTsKICAgICAgICAgaW50IHNlbEhlaWdodCA9IHNlbGVj
dGlvbkhlaWdodCgpOwogICAgICAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoYm94T3JpZ2luLngo
KSwgYm94T3JpZ2luLnkoKSAtIGRlbHRhWSk7Ci0gICAgICAgIFRleHRSdW4gcnVuKHRleHRSZW5k
ZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIG1fc3RhcnQsIG1fbGVuLCB0ZXh0UmVuZGVy
ZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9leHBhbnNpb24sIGV4cGFuc2lvbkJlaGF2
aW9yKCksICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUt
PnZpc3VhbGx5T3JkZXJlZCgpKTsKKyAgICAgICAgVGV4dFJ1biBydW4odGV4dFJlbmRlcmVyKCkt
PnRleHQoKS0+Y2hhcmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRSZW5kZXJlcigpLT5h
bGxvd1RhYnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IoKSwg
ZGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoZSBkb2N1bWVudCBtYXJrZXJz
IHRvIGZsb2F0IHJlY3RzLgogICAgICAgICBJbnRSZWN0IG1hcmtlclJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KGZvbnQuc2VsZWN0aW9uUmVjdEZvclRleHQocnVuLCBzdGFydFBvaW50LCBzZWxIZWln
aHQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKSk7CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCog
cHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAKICAgICBpbnQgc1BvcyA9IG1heChtYXJrZXIuc3RhcnRP
ZmZzZXQgLSBtX3N0YXJ0LCAodW5zaWduZWQpMCk7CiAgICAgaW50IGVQb3MgPSBtaW4obWFya2Vy
LmVuZE9mZnNldCAtIG1fc3RhcnQsICh1bnNpZ25lZCltX2xlbik7ICAgIAotICAgIFRleHRSdW4g
cnVuKHRleHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIG1fc3RhcnQsIG1fbGVu
LCB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9leHBhbnNpb24sIGV4
cGFuc2lvbkJlaGF2aW9yKCksICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJp
ZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKTsKKyAgICBUZXh0UnVuIHJ1bih0ZXh0UmVu
ZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBtX3N0YXJ0LCBtX2xlbiwgdGV4dFJlbmRl
cmVyKCktPmFsbG93VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhh
dmlvcigpLCBkaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+dmlzdWFsbHlPcmRl
cmVkKCkpOwogICAgIAogICAgIC8vIEFsd2F5cyBjb21wdXRlIGFuZCBzdG9yZSB0aGUgcmVjdCBh
c3NvY2lhdGVkIHdpdGggdGhpcyBtYXJrZXIuIFRoZSBjb21wdXRlZCByZWN0IGlzIGluIGFic29s
dXRlIGNvb3JkaW5hdGVzLgogICAgIEludFJlY3QgbWFya2VyUmVjdCA9IGVuY2xvc2luZ0ludFJl
Y3QoZm9udC5zZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4sIEludFBvaW50KG1feCwgc2VsZWN0aW9u
VG9wKCkpLCBzZWxIZWlnaHQsIHNQb3MsIGVQb3MpKTsKQEAgLTEwNzIsNyArMTA3Miw3IEBAIHZv
aWQgSW5saW5lVGV4dEJveDo6Y29tcHV0ZVJlY3RGb3JSZXBsYWNlbWVudE1hcmtlcihjb25zdCBE
b2N1bWVudE1hcmtlciYgbWFya2VyCiAgICAgCiAgICAgaW50IHNQb3MgPSBtYXgobWFya2VyLnN0
YXJ0T2Zmc2V0IC0gbV9zdGFydCwgKHVuc2lnbmVkKTApOwogICAgIGludCBlUG9zID0gbWluKG1h
cmtlci5lbmRPZmZzZXQgLSBtX3N0YXJ0LCAodW5zaWduZWQpbV9sZW4pOyAgICAKLSAgICBUZXh0
UnVuIHJ1bih0ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBtX3N0YXJ0LCBt
X2xlbiwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9u
LCBleHBhbnNpb25CZWhhdmlvcigpLCAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCBtX2Rpck92
ZXJyaWRlIHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSk7CisgICAgVGV4dFJ1biBydW4odGV4
dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRS
ZW5kZXJlcigpLT5hbGxvd1RhYnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9u
QmVoYXZpb3IoKSwgZGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5
T3JkZXJlZCgpKTsKICAgICBJbnRQb2ludCBzdGFydFBvaW50ID0gSW50UG9pbnQobV94LCB5KTsK
ICAgICAKICAgICAvLyBDb21wdXRlIGFuZCBzdG9yZSB0aGUgcmVjdCBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBtYXJrZXIuCkBAIC0xMjMzLDcgKzEyMzMsNyBAQCBpbnQgSW5saW5lVGV4dEJveDo6b2Zm
c2V0Rm9yUG9zaXRpb24oZmxvYXQgbGluZU9mZnNldCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHRleHQtPnN0eWxlKG1fZmlyc3RMaW5lKTsKICAg
ICBjb25zdCBGb250KiBmID0gJnN0eWxlLT5mb250KCk7CiAgICAgaW50IG9mZnNldCA9IGYtPm9m
ZnNldEZvclBvc2l0aW9uKFRleHRSdW4odGV4dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVy
cygpICsgbV9zdGFydCwgbV9sZW4sCi0gICAgICAgIHRleHRSZW5kZXJlcigpLT5hbGxvd1RhYnMo
KSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgIWlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+dmlzdWFsbHlPcmRlcmVk
KCkpLAorICAgICAgICB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9l
eHBhbnNpb24sIGV4cGFuc2lvbkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRl
IHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSksCiAgICAgICAgIGxpbmVPZmZzZXQgLSBsb2dp
Y2FsTGVmdCgpLCBpbmNsdWRlUGFydGlhbEdseXBocyk7CiAgICAgaWYgKGJsb2NrSXNJbk9wcG9z
aXRlRGlyZWN0aW9uICYmICghb2Zmc2V0IHx8IG9mZnNldCA9PSBtX2xlbikpCiAgICAgICAgIHJl
dHVybiAhb2Zmc2V0ID8gbV9sZW4gOiAwOwpAQCAtMTI1Myw3ICsxMjUzLDcgQEAgZmxvYXQgSW5s
aW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3QKICAgICBpbnQg
ZnJvbSA9ICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBvZmZzZXQgLSBtX3N0YXJ0IDogMDsK
ICAgICBpbnQgdG8gPSAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbV9sZW4gOiBvZmZzZXQg
LSBtX3N0YXJ0OwogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGFkZCByaWdodEJlYXJpbmcg
aGVyZT8KLSAgICByZXR1cm4gZi5zZWxlY3Rpb25SZWN0Rm9yVGV4dChUZXh0UnVuKHRleHQtPnRl
eHQoKS0+Y2hhcmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRSZW5kZXJlcigpLT5hbGxv
d1RhYnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgIWlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSksCisgICAgcmV0dXJuIGYuc2Vs
ZWN0aW9uUmVjdEZvclRleHQoVGV4dFJ1bih0ZXh0LT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIG1f
c3RhcnQsIG1fbGVuLCB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9l
eHBhbnNpb24sIGV4cGFuc2lvbkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRl
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChsb2dpY2FsTGVm
dCgpLCAwKSwgMCwgZnJvbSwgdG8pLm1heFgoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBmMjlkZjkyZWJmYjI2
NmE1MzViZTBiYjkyZDQwOWMyMWVjMzgyNGUwLi5hMGI1MmNlZmMwZjQ3ZTk0YWY0NWM5ODQyNmEy
YzAyMzVhZDg1YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMTI1OSwyNiArMTI1OSwxNCBAQCBSb290SW5saW5lQm94
KiBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lU3RhcnRQb3NpdGlvbihib29sJiBmaXJzdExpbmUsIGJv
b2wmIGZ1bGxMYQogICAgIGZpcnN0TGluZSA9ICFsYXN0OwogICAgIHByZXZpb3VzTGluZUJyb2tl
Q2xlYW5seSA9ICFsYXN0IHx8IGxhc3QtPmVuZHNXaXRoQnJlYWsoKTsKIAotICAgIFJlbmRlck9i
amVjdCogc3RhcnRPYmo7Ci0gICAgaW50IHBvcyA9IDA7CiAgICAgaWYgKGxhc3QpIHsKICAgICAg
ICAgc2V0TG9naWNhbEhlaWdodChsYXN0LT5ibG9ja0xvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAg
IHN0YXJ0T2JqID0gbGFzdC0+bGluZUJyZWFrT2JqKCk7Ci0gICAgICAgIHBvcyA9IGxhc3QtPmxp
bmVCcmVha1BvcygpOworICAgICAgICByZXNvbHZlci5zZXRQb3NpdGlvbihJbmxpbmVJdGVyYXRv
cih0aGlzLCBsYXN0LT5saW5lQnJlYWtPYmooKSwgbGFzdC0+bGluZUJyZWFrUG9zKCkpKTsKICAg
ICAgICAgcmVzb2x2ZXIuc2V0U3RhdHVzKGxhc3QtPmxpbmVCcmVha0JpZGlTdGF0dXMoKSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgYm9vbCBsdHIgPSBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCk7Ci0gICAgICAgIERpcmVjdGlvbiBkaXJlY3Rpb24gPSBsdHIgPyBMZWZ0VG9SaWdo
dCA6IFJpZ2h0VG9MZWZ0OwotICAgICAgICByZXNvbHZlci5zZXRMYXN0U3Ryb25nRGlyKGRpcmVj
dGlvbik7Ci0gICAgICAgIHJlc29sdmVyLnNldExhc3REaXIoZGlyZWN0aW9uKTsKLSAgICAgICAg
cmVzb2x2ZXIuc2V0RW9yRGlyKGRpcmVjdGlvbik7Ci0gICAgICAgIHJlc29sdmVyLnNldENvbnRl
eHQoQmlkaUNvbnRleHQ6OmNyZWF0ZShsdHIgPyAwIDogMSwgZGlyZWN0aW9uLCBzdHlsZSgpLT51
bmljb2RlQmlkaSgpID09IE92ZXJyaWRlLCBGcm9tU3R5bGVPckRPTSkpOwotCi0gICAgICAgIHN0
YXJ0T2JqID0gYmlkaUZpcnN0U2tpcHBpbmdJbmxpbmVzKHRoaXMsICZyZXNvbHZlcik7CisgICAg
ICAgIHJlc29sdmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKHN0eWxlKCktPmRpcmVjdGlvbigpLCBz
dHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRlKSk7CisgICAgICAgIHJlc29sdmVyLnNl
dFBvc2l0aW9uKElubGluZUl0ZXJhdG9yKHRoaXMsIGJpZGlGaXJzdFNraXBwaW5nSW5saW5lcyh0
aGlzLCAmcmVzb2x2ZXIpLCAwKSk7CiAgICAgfQotCi0gICAgcmVzb2x2ZXIuc2V0UG9zaXRpb24o
SW5saW5lSXRlcmF0b3IodGhpcywgc3RhcnRPYmosIHBvcykpOwotCiAgICAgcmV0dXJuIGN1cnI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBs
b2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wuY3BwCmluZGV4IDY3ZDIwYjk0NTNkNWU5OGViNzM4OThlZjgwZjRmMjg0ZjFkYzhl
MjAuLjg3ZjZmZjFiNWYxZTZlYjU5ODYxNDMzNzkzZDg2YjJlZTczM2E5MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApA
QCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2Jq
ZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAgICAgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5ZWRGaWxlbmFtZSA9IGZpbGVUZXh0VmFsdWUoKTsKICAgICAgICAgdW5z
aWduZWQgbGVuZ3RoID0gZGlzcGxheWVkRmlsZW5hbWUubGVuZ3RoKCk7CiAgICAgICAgIGNvbnN0
IFVDaGFyKiBzdHJpbmcgPSBkaXNwbGF5ZWRGaWxlbmFtZS5jaGFyYWN0ZXJzKCk7Ci0gICAgICAg
IFRleHRSdW4gdGV4dFJ1bihzdHJpbmcsIGxlbmd0aCwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFs
bG93VHJhaWxpbmdFeHBhbnNpb24sICFzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCks
IHN0eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpOworICAgICAgICBUZXh0UnVuIHRl
eHRSdW4oc3RyaW5nLCBsZW5ndGgsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uLCBzdHlsZSgpLT5kaXJlY3Rpb24oKSwgc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9
PSBPdmVycmlkZSk7CiAgICAgICAgIAogICAgICAgICAvLyBEZXRlcm1pbmUgd2hlcmUgdGhlIGZp
bGVuYW1lIHNob3VsZCBiZSBwbGFjZWQKICAgICAgICAgaW50IGNvbnRlbnRMZWZ0ID0gdHggKyBi
b3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOwpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAg
ICAgICAgLy8gRmlndXJlIG91dCBob3cgYmlnIHRoZSBmaWxlbmFtZSBzcGFjZSBuZWVkcyB0byBi
ZSBmb3IgYSBnaXZlbiBudW1iZXIgb2YgY2hhcmFjdGVycwogICAgICAgICAvLyAodXNpbmcgIjAi
IGFzIHRoZSBub21pbmFsIGNoYXJhY3RlcikuCiAgICAgICAgIGNvbnN0IFVDaGFyIGNoID0gJzAn
OwotICAgICAgICBmbG9hdCBjaGFyV2lkdGggPSBzdHlsZSgpLT5mb250KCkud2lkdGgoVGV4dFJ1
bigmY2gsIDEsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBm
YWxzZSkpOworICAgICAgICBmbG9hdCBjaGFyV2lkdGggPSBzdHlsZSgpLT5mb250KCkud2lkdGgo
VGV4dFJ1bigmY2gsIDEsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uKSk7CiAgICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gKGludCljZWlsZihj
aGFyV2lkdGggKiBkZWZhdWx0V2lkdGhOdW1DaGFycyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggZDc3OThkNTc1MzM0OWY5MDllNTg2
YmVjMWQxMzQ3MmMwMjNlN2E3Ny4uMjExYmQyYmZhZTU0YmY0ZWYyNzIyNzY5MzlkM2I2NjU1NmE1
ZjRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAt
MTE1LDkgKzExNSwxMCBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkK
ICAgICAgICAgICAgICAgICBpdGVtRm9udCA9IEZvbnQoZCwgaXRlbUZvbnQubGV0dGVyU3BhY2lu
ZygpLCBpdGVtRm9udC53b3JkU3BhY2luZygpKTsKICAgICAgICAgICAgICAgICBpdGVtRm9udC51
cGRhdGUoZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5mb250U2VsZWN0b3IoKSk7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmICghdGV4dC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCB0ZXh0V2lkdGggPSBpdGVtRm9udC53aWR0
aChUZXh0UnVuKHRleHQuaW1wbCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGlu
Z0V4cGFuc2lvbiwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdo
eSBpcyB0aGlzIGFsd2F5cyBMVFI/IENhbid0IHRleHQgZGlyZWN0aW9uIGFmZmVjdCB0aGUgd2lk
dGg/CisgICAgICAgICAgICAgICAgZmxvYXQgdGV4dFdpZHRoID0gaXRlbUZvbnQud2lkdGgoVGV4
dFJ1bih0ZXh0LmltcGwoKSwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBh
bnNpb24sIExUUikpOwogICAgICAgICAgICAgICAgIHdpZHRoID0gbWF4KHdpZHRoLCB0ZXh0V2lk
dGgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zODksNyArMzkwLDcgQEAgdm9pZCBS
ZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBp
bnQgdHgsIGludCB0eSwgaW4KIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGl0ZW1UZXh0Lmxlbmd0
aCgpOwogICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcgPSBpdGVtVGV4dC5jaGFyYWN0ZXJzKCk7Ci0g
ICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6
QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgIWl0ZW1TdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpLCBpdGVtU3R5bGUtPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpOworICAgIFRleHRSdW4g
dGV4dFJ1bihzdHJpbmcsIGxlbmd0aCwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxp
bmdFeHBhbnNpb24sIGl0ZW1TdHlsZS0+ZGlyZWN0aW9uKCksIGl0ZW1TdHlsZS0+dW5pY29kZUJp
ZGkoKSA9PSBPdmVycmlkZSk7CiAgICAgRm9udCBpdGVtRm9udCA9IHN0eWxlKCktPmZvbnQoKTsK
ICAgICBJbnRSZWN0IHIgPSBpdGVtQm91bmRpbmdCb3hSZWN0KHR4LCB0eSwgbGlzdEluZGV4KTsK
ICAgICByLm1vdmUoaXRlbU9mZnNldEZvckFsaWdubWVudCh0ZXh0UnVuLCBpdGVtU3R5bGUsIGl0
ZW1Gb250LCByKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sLmNwcAppbmRleCAyMTJlNzFlNTYxYzhjYzVmYjU5YzBkYWFmOGQwM2M3ZGY5MjI2ZWFmLi5l
YjdmZjUwYjQ3YTczM2ZjM2MwMjIzMzIzODQ0YjllOTQ1NDEwZDBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTU0MSw4ICs1NDEsOCBA
QCBmbG9hdCBSZW5kZXJUZXh0Q29udHJvbDo6Z2V0QXZnQ2hhcldpZHRoKEF0b21pY1N0cmluZyBm
YW1pbHkpCiAgICAgaWYgKGhhc1ZhbGlkQXZnQ2hhcldpZHRoKGZhbWlseSkpCiAgICAgICAgIHJl
dHVybiByb3VuZGYoc3R5bGUoKS0+Zm9udCgpLnByaW1hcnlGb250KCktPmF2Z0NoYXJXaWR0aCgp
KTsKIAotICAgIGNvbnN0IFVDaGFyIGNoID0gJzAnOyAKLSAgICByZXR1cm4gc3R5bGUoKS0+Zm9u
dCgpLndpZHRoKFRleHRSdW4oJmNoLCAxLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFp
bGluZ0V4cGFuc2lvbiwgZmFsc2UpKTsKKyAgICBjb25zdCBVQ2hhciBjaCA9ICcwJzsKKyAgICBy
ZXR1cm4gc3R5bGUoKS0+Zm9udCgpLndpZHRoKFRleHRSdW4oJmNoLCAxLCBmYWxzZSwgMCwgMCwg
VGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbikpOwogfQogCiBmbG9hdCBSZW5kZXJUZXh0
Q29udHJvbDo6c2NhbGVFbVRvVW5pdHMoaW50IHgpIGNvbnN0CkBAIC02MzYsNyArNjM2LDcgQEAg
dm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6cGFpbnRQbGFjZWhvbGRlcihQYWludEluZm8mIHBhaW50
SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xv
cihwbGFjZWhvbGRlclN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
ciksIHBsYWNlaG9sZGVyU3R5bGUtPmNvbG9yU3BhY2UoKSk7CiAgICAgCiAgICAgU3RyaW5nIHBs
YWNlaG9sZGVyVGV4dCA9IHN0YXRpY19jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Kj4o
bm9kZSgpKS0+c3RyaXBwZWRQbGFjZWhvbGRlcigpOwotICAgIFRleHRSdW4gdGV4dFJ1bihwbGFj
ZWhvbGRlclRleHQuY2hhcmFjdGVycygpLCBwbGFjZWhvbGRlclRleHQubGVuZ3RoKCksIGZhbHNl
LCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCAhcGxhY2Vob2xkZXJTdHls
ZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCBwbGFjZWhvbGRlclN0eWxlLT51bmljb2RlQmlk
aSgpID09IE92ZXJyaWRlKTsKKyAgICBUZXh0UnVuIHRleHRSdW4ocGxhY2Vob2xkZXJUZXh0LmNo
YXJhY3RlcnMoKSwgcGxhY2Vob2xkZXJUZXh0Lmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1
bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgcGxhY2Vob2xkZXJTdHlsZS0+ZGlyZWN0aW9uKCks
IHBsYWNlaG9sZGVyU3R5bGUtPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpOwogICAgIAogICAg
IFJlbmRlckJveCogdGV4dFJlbmRlcmVyID0gaW5uZXJUZXh0RWxlbWVudCgpID8gaW5uZXJUZXh0
RWxlbWVudCgpLT5yZW5kZXJCb3goKSA6IDA7CiAgICAgaWYgKHRleHRSZW5kZXJlcikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5k
ZXggZGJkZWYwNzg4MGI1NTQwNDBiYzM5MjljM2UyZTllMDEwNjFlMDIyZi4uNGQzNmM4MjQ4NDYw
ODlhNjhjYWE3MzI1NGE5OTQ0MjZjNjI3YWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBAIC00MTIsNyArNDEyLDcgQEAgVGV4
dFJ1biBTVkdJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlclN0eWxlKiBzdHls
ZSwgY29uc3QgU1ZHVGV4dEZyYWcKICAgICAgICAgICAgICAgICAsIDAgLyogeFBvcywgb25seSBy
ZWxldmFudCB3aXRoIGFsbG93VGFicz10cnVlICovCiAgICAgICAgICAgICAgICAgLCAwIC8qIHBh
ZGRpbmcsIG9ubHkgcmVsZXZhbnQgZm9yIGp1c3RpZmllZCB0ZXh0LCBub3QgcmVsZXZhbnQgZm9y
IFNWRyAqLwogICAgICAgICAgICAgICAgICwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lv
bgotICAgICAgICAgICAgICAgICwgZGlyZWN0aW9uKCkgPT0gUlRMCisgICAgICAgICAgICAgICAg
LCBkaXJlY3Rpb24oKQogICAgICAgICAgICAgICAgICwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+
dmlzdWFsbHlPcmRlcmVkKCkgLyogZGlyZWN0aW9uYWxPdmVycmlkZSAqLyk7CiAKICNpZiBFTkFC
TEUoU1ZHX0ZPTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TWV0cmljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRN
ZXRyaWNzLmNwcAppbmRleCAwNDJiYzIyZjZkYWQ2OTJhZWM4N2EyYmMyNGQyOTcxOGU0MDIwYTBj
Li5kOWQ4NmY2MWExODFjMGJjM2VjZjU0ZGY2ZjgyYzJlNjhiYzM2NjI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcApAQCAtODMsNyArODMs
NyBAQCBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlclNWR0lubGluZVRleHQq
IHRleHQsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZQogICAgICAgICAgICAgICAgICwgMCAvKiB4UG9z
LCBvbmx5IHJlbGV2YW50IHdpdGggYWxsb3dUYWJzPXRydWUgKi8KICAgICAgICAgICAgICAgICAs
IDAgLyogcGFkZGluZywgb25seSByZWxldmFudCBmb3IganVzdGlmaWVkIHRleHQsIG5vdCByZWxl
dmFudCBmb3IgU1ZHICovCiAgICAgICAgICAgICAgICAgLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uCi0gICAgICAgICAgICAgICAgLCAhc3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKQorICAgICAgICAgICAgICAgICwgc3R5bGUtPmRpcmVjdGlvbigpCiAgICAgICAgICAgICAg
ICAgLCBzdHlsZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSAvKiBkaXJlY3Rpb25hbE92ZXJy
aWRlICovKTsKIAogI2lmIEVOQUJMRShTVkdfRk9OVFMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90791</attachid>
            <date>2011-04-22 16:07:41 -0700</date>
            <delta_ts>2011-04-22 16:16:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59226-20110422160739.patch</filename>
            <type>text/plain</type>
            <size>33028</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ2NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNDI5Y2QyYWRlMDBhNDMy
ZTY2ZmQ0MTEyZDliNTkzZjQxOGFmOGM4Li4zMWU5YjBkNTU0YWYzYTNlMzlkOGRiZWE0ZThiYzdi
NDVhMTQ3MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMDQtMjIgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNob3VsZCBoYXZlIGFuIGVhc3kgd2F5IHRvIGNvbnN0cnVjdCBz
dGFydGluZyBCaWRpU3RhdHVzIGZvciBhIHBhcmFncmFwaCByb290CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTIyNgorCisgICAgICAgIFR3byBwbGFj
ZXMgdHJ5IHRvIGNvbnN0cnVjdCBCaWRpU3RhdHVzZXMgZm9yIGEgcGFyYWdyYXBoIHJvb3QgdXNp
bmcgY29weS9wYXN0ZSBjb2RlLgorICAgICAgICBJJ3ZlIG1hZGUgdGhpcyBhIGNvbnN0cnVjdG9y
IGZvciBCaWRpU3RhdHVzIGluc3RlYWQuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGVmZm9y
dCBJIGFkZGVkIGEgZGlyZWN0aW9uKCkgYWNjZXNzb3IgZm9yIFRleHRSdW4gYW5kIGdvdAorICAg
ICAgICByaWQgb2YgdGhlIG9sZCBtX3J0bCBib29sLiAgVGhpcyBpcyBwYXJ0IG9mIHRoZSBnZW5l
cmljIGVmZm9ydCBpbiB0aGUKKyAgICAgICAgQmlkaSBjb2RlIHRvIHJlcGxhY2Ugb2xkIGJvb2wg
dXNhZ2Ugd2l0aCB0aGUgc3VwZXJpb3IgVGV4dERpcmVjdGlvbiBlbnVtCisgICAgICAgICh0aGlz
IGdlbmVyYWxseSBtYWtlcyB0aGUgY29kZSBjbGVhbmVyKS4KKworICAgICAgICBBcyBwYXJ0IG9m
IHRoaXMgcmVwbGFjZW1lbnQgZWZmb3J0IEkgZm91bmQgc2V2ZXJhbCBwbGFjZXMgd2hpY2ggd2Vy
ZQorICAgICAgICBhc3N1bWluZyBMVFIgKGJ5IHBhc3NpbmcgcnRsPWZhbHNlKSB3aGVuIHRoZXkg
cHJvYmFibHkgd2FudCB0byB1c2UKKyAgICAgICAgdGhlIGN1cnJlbnQgdGV4dCBkaXJlY3Rpb24u
ICBJIHN1c3BlY3QgdGhhdCBMVFIgdnMuIFJUTCBtYXkgYWZmZWN0CisgICAgICAgIHN0cmluZyB3
aWR0aCBpbiB0aGUgY2FzZSBvZiBsaWdhdHVyZXMuICBJdCdzIHVuY2xlYXIuCisKKyAgICAgICAg
VGhpcyBpcyBhbG1vc3QgZW50aXJlbHkgYSBtZWNoYW5pY2FsIGNoYW5nZS4KKworICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6VGV4dFJ1bik6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpkaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFJ1bjo6cnRsKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46Omx0cik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0UnVuOjpzZXREaXJlY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpU3RhdHVzOjpCaWRp
U3RhdHVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lz
Qm94OjpzZWxlY3Rpb25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpwYWlu
dFNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludFNwZWxsaW5nT3JHcmFtbWFyTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZVRleHRCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwbGFjZW1lbnRNYXJrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmRldGVybWluZVN0YXJ0UG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmls
ZVVwbG9hZENvbnRyb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmdldEF2
Z0NoYXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6cGFpbnRQ
bGFjZWhvbGRlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4p
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29uc3RydWN0VGV4dFJ1bik6CisKIDIwMTEtMDQtMjIgIFhpYW9tZWkgSmkgIDx4
amlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKaW5kZXggY2Y5MGFlMWE0ZjhhODVkZTUzM2YxNGMzZWRiN2NiNGI1ZmFmMmNhYi4u
Y2EwYzRlNTliNjZkOGJkOGJmOTIwM2QyYTI5NmY2YTE4NmIxZGI1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CkBAIC0xODYxLDEyICsxODYxLDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgLy8g
RklYTUU6IE5lZWQgdG8gdHVybiBvZmYgZm9udCBzbW9vdGhpbmcuCiAKICAgICBSZW5kZXJTdHls
ZSogY29tcHV0ZWRTdHlsZSA9IGNhbnZhcygpLT5jb21wdXRlZFN0eWxlKCk7Ci0gICAgYm9vbCBy
dGwgPSBjb21wdXRlZFN0eWxlID8gIWNvbXB1dGVkU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSA6IGZhbHNlOworICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gY29tcHV0ZWRTdHls
ZSA/IGNvbXB1dGVkU3R5bGUtPmRpcmVjdGlvbigpIDogTFRSOworICAgIGJvb2wgaXNSVEwgPSBk
aXJlY3Rpb24gPT0gUlRMOwogICAgIGJvb2wgb3ZlcnJpZGUgPSBjb21wdXRlZFN0eWxlID8gY29t
cHV0ZWRTdHlsZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSA6IGZhbHNlOwogCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKICAgICBjb25zdCBVQ2hhciogc3RyaW5nID0g
dGV4dC5jaGFyYWN0ZXJzKCk7Ci0gICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBm
YWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgcnRsLCBvdmVycmlk
ZSk7CisgICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBmYWxzZSwgMCwgMCwgVGV4
dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSk7CiAKICAg
ICAvLyBEcmF3IHRoZSBpdGVtIHRleHQgYXQgdGhlIGNvcnJlY3QgcG9pbnQuCiAgICAgRmxvYXRQ
b2ludCBsb2NhdGlvbih4LCB5KTsKQEAgLTE4ODgsMTMgKzE4ODksMTMgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBm
bG9hdCB4LCBmbG8KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZmxvYXQgd2lkdGggPSBm
b250LndpZHRoKFRleHRSdW4odGV4dCwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxp
bmdFeHBhbnNpb24sIHJ0bCwgb3ZlcnJpZGUpKTsKKyAgICBmbG9hdCB3aWR0aCA9IGZvbnQud2lk
dGgoVGV4dFJ1bih0ZXh0LCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFu
c2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSkpOwogCiAgICAgVGV4dEFsaWduIGFsaWduID0gc3Rh
dGUoKS5tX3RleHRBbGlnbjsKICAgICBpZiAoYWxpZ24gPT0gU3RhcnRUZXh0QWxpZ24pCi0gICAg
ICAgICBhbGlnbiA9IHJ0bCA/IFJpZ2h0VGV4dEFsaWduIDogTGVmdFRleHRBbGlnbjsKKyAgICAg
ICAgYWxpZ24gPSBpc1JUTCA/IFJpZ2h0VGV4dEFsaWduIDogTGVmdFRleHRBbGlnbjsKICAgICBl
bHNlIGlmIChhbGlnbiA9PSBFbmRUZXh0QWxpZ24pCi0gICAgICAgIGFsaWduID0gcnRsID8gTGVm
dFRleHRBbGlnbiA6IFJpZ2h0VGV4dEFsaWduOworICAgICAgICBhbGlnbiA9IGlzUlRMID8gTGVm
dFRleHRBbGlnbiA6IFJpZ2h0VGV4dEFsaWduOwogCiAgICAgc3dpdGNoIChhbGlnbikgewogICAg
IGNhc2UgQ2VudGVyVGV4dEFsaWduOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCmluZGV4IDgwYTY2YjI0YzY1OWFlZDQw
ZWE5YTYwMDRmNzQ4MTZhNTcyMGZkYWIuLjk2NWNjZDU4YjFkNTY1ZmRlY2I5MWY3YjI0OWVlZTA3
NWU0NDY2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bv
cHVwTWVudUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKQEAgLTk2Myw4ICs5NjMsNyBAQCB2b2lkIFBvcHVwTGlz
dEJveDo6cGFpbnRSb3coR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwg
aW50IHJvd0luZAogICAgIH0KIAogICAgIC8vIFByZXBhcmUgdGhlIGRpcmVjdGlvbmFsaXR5IHRv
IGRyYXcgdGV4dC4KLSAgICBib29sIHJ0bCA9IHN0eWxlLnRleHREaXJlY3Rpb24oKSA9PSBSVEw7
Ci0gICAgVGV4dFJ1biB0ZXh0UnVuKGl0ZW1UZXh0LmNoYXJhY3RlcnMoKSwgaXRlbVRleHQubGVu
Z3RoKCksIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBydGws
IHN0eWxlLmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpKTsKKyAgICBUZXh0UnVuIHRleHRSdW4o
aXRlbVRleHQuY2hhcmFjdGVycygpLCBpdGVtVGV4dC5sZW5ndGgoKSwgZmFsc2UsIDAsIDAsIFRl
eHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24sIHN0eWxlLnRleHREaXJlY3Rpb24oKSwgc3R5
bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkpOwogICAgIC8vIElmIHRoZSB0ZXh0IGlzIHJp
Z2h0LXRvLWxlZnQsIG1ha2UgaXQgcmlnaHQtYWxpZ25lZCBieSBhZGp1c3RpbmcgaXRzCiAgICAg
Ly8gYmVnaW5uaW5nIHBvc2l0aW9uLgogICAgIGlmIChyaWdodEFsaWduZWQpCkBAIC0xMDAyLDcg
KzEwMDEsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnRSb3coR3JhcGhpY3NDb250ZXh0KiBn
YywgY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHJvd0luZAogICAgICAgICBpdGVtRm9udC51cGRh
dGUoMCk7CiAgICAgfQogCi0gICAgVGV4dFJ1biBsYWJlbFRleHRSdW4oaXRlbUxhYmVsLmNoYXJh
Y3RlcnMoKSwgaXRlbUxhYmVsLmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dU
cmFpbGluZ0V4cGFuc2lvbiwgcnRsLCBzdHlsZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSk7
CisgICAgVGV4dFJ1biBsYWJlbFRleHRSdW4oaXRlbUxhYmVsLmNoYXJhY3RlcnMoKSwgaXRlbUxh
YmVsLmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lv
biwgc3R5bGUudGV4dERpcmVjdGlvbigpLCBzdHlsZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUo
KSk7CiAgICAgaWYgKHJpZ2h0QWxpZ25lZCkKICAgICAgICAgdGV4dFggPSBtYXgoMCwgbV9wb3B1
cENsaWVudC0+Y2xpZW50UGFkZGluZ0xlZnQoKSAtIG1fcG9wdXBDbGllbnQtPmNsaWVudEluc2V0
TGVmdCgpKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBhZWQyNDg4Mjk3MGExZGNiYzMxZThmYjgy
OGM4YTg3NjhiMzJjZGE3Li5hZjk5OWVhMGNiYjQxODQ5MWZhYjRiZGZkOWRjMjg3OTYxY2Y3YzJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKQEAgLTM5OCwyOCArMzk4LDI0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3QmlkaVRleHQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBG
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQmlk
aVJlc29sdmVyPFRleHRSdW5JdGVyYXRvciwgQmlkaUNoYXJhY3RlclJ1bj4gYmlkaVJlc29sdmVy
OworICAgIGJpZGlSZXNvbHZlci5zZXRTdGF0dXMoQmlkaVN0YXR1cyhydW4uZGlyZWN0aW9uKCks
IHJ1bi5kaXJlY3Rpb25hbE92ZXJyaWRlKCkpKTsKKyAgICBiaWRpUmVzb2x2ZXIuc2V0UG9zaXRp
b24oVGV4dFJ1bkl0ZXJhdG9yKCZydW4sIDApKTsKKwogICAgIC8vIEZJWE1FOiBUaGlzIG93bmVy
c2hpcCBzaG91bGQgYmUgcmV2ZXJzZWQuIFdlIHNob3VsZCBwYXNzIEJpZGlSdW5MaXN0CiAgICAg
Ly8gdG8gQmlkaVJlc29sdmVyIGluIGNyZWF0ZUJpZGlSdW5zRm9yTGluZS4KLSAgICBCaWRpUmVz
b2x2ZXI8VGV4dFJ1bkl0ZXJhdG9yLCBCaWRpQ2hhcmFjdGVyUnVuPiBiaWRpUmVzb2x2ZXI7CiAg
ICAgQmlkaVJ1bkxpc3Q8QmlkaUNoYXJhY3RlclJ1bj4mIGJpZGlSdW5zID0gYmlkaVJlc29sdmVy
LnJ1bnMoKTsKLQotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIHBhcmFncmFwaERpcmVjdGlv
biA9IHJ1bi5sdHIoKSA/IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQgOiBXVEY6OlVuaWNvZGU6
OlJpZ2h0VG9MZWZ0OwotCi0gICAgYmlkaVJlc29sdmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKHBh
cmFncmFwaERpcmVjdGlvbiwgcGFyYWdyYXBoRGlyZWN0aW9uLCBwYXJhZ3JhcGhEaXJlY3Rpb24s
IEJpZGlDb250ZXh0OjpjcmVhdGUocnVuLmx0cigpID8gMCA6IDEsIHBhcmFncmFwaERpcmVjdGlv
biwgcnVuLmRpcmVjdGlvbmFsT3ZlcnJpZGUoKSkpKTsKLQotICAgIGJpZGlSZXNvbHZlci5zZXRQ
b3NpdGlvbihUZXh0UnVuSXRlcmF0b3IoJnJ1biwgMCkpOwogICAgIGJpZGlSZXNvbHZlci5jcmVh
dGVCaWRpUnVuc0ZvckxpbmUoVGV4dFJ1bkl0ZXJhdG9yKCZydW4sIHJ1bi5sZW5ndGgoKSkpOwot
CiAgICAgaWYgKCFiaWRpUnVucy5ydW5Db3VudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBG
bG9hdFBvaW50IGN1cnJQb2ludCA9IHBvaW50OwogICAgIEJpZGlDaGFyYWN0ZXJSdW4qIGJpZGlS
dW4gPSBiaWRpUnVucy5maXJzdFJ1bigpOwogICAgIHdoaWxlIChiaWRpUnVuKSB7Ci0KICAgICAg
ICAgVGV4dFJ1biBzdWJydW4gPSBydW47CiAgICAgICAgIHN1YnJ1bi5zZXRUZXh0KHJ1bi5kYXRh
KGJpZGlSdW4tPnN0YXJ0KCkpLCBiaWRpUnVuLT5zdG9wKCkgLSBiaWRpUnVuLT5zdGFydCgpKTsK
LSAgICAgICAgc3VicnVuLnNldFJUTChiaWRpUnVuLT5sZXZlbCgpICUgMik7CisgICAgICAgIGJv
b2wgaXNSVEwgPSBiaWRpUnVuLT5sZXZlbCgpICUgMjsKKyAgICAgICAgc3VicnVuLnNldERpcmVj
dGlvbihpc1JUTCA/IFJUTCA6IExUUik7CiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92
ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZhbHNlKSk7CiAKICAgICAgICAgZm9udC5kcmF3
VGV4dCh0aGlzLCBzdWJydW4sIGN1cnJQb2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UZXh0UnVuLmgKaW5kZXggZWM3NjNiOWEzYWQzM2U5MDFmMDMwZGM5OTFkM2E2ZTBk
MTA0Y2VhNC4uNzM3YWRmNjU5ODhiY2ZlN2Y3ZTRjYjllM2UxZDkwMDZjZWYxODI2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApAQCAtMjUsNiArMjUsNyBA
QAogI2RlZmluZSBUZXh0UnVuX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5j
bHVkZSAiVGV4dERpcmVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBFeHBhbnNpb25CZWhhdmlv
cjsKIAotICAgIFRleHRSdW4oY29uc3QgVUNoYXIqIGMsIGludCBsZW4sIGJvb2wgYWxsb3dUYWJz
ID0gZmFsc2UsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25C
ZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3Ji
aWRMZWFkaW5nRXhwYW5zaW9uLCBib29sIHJ0bCA9IGZhbHNlLCBib29sIGRpcmVjdGlvbmFsT3Zl
cnJpZGUgPSBmYWxzZSkKKyAgICBUZXh0UnVuKGNvbnN0IFVDaGFyKiBjLCBpbnQgbGVuLCBib29s
IGFsbG93VGFicyA9IGZhbHNlLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwg
RXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBM
VFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlKQogICAgICAgICA6IG1fY2hhcmFj
dGVycyhjKQogICAgICAgICAsIG1fbGVuKGxlbikKICAgICAgICAgLCBtX3hwb3MoeHBvcykKQEAg
LTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICAsIG1faG9yaXpvbnRhbEdseXBoU3RyZXRj
aCgxKQogI2VuZGlmCiAgICAgICAgICwgbV9hbGxvd1RhYnMoYWxsb3dUYWJzKQotICAgICAgICAs
IG1fcnRsKHJ0bCkKKyAgICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCiAgICAgICAgICwg
bV9kaXJlY3Rpb25hbE92ZXJyaWRlKGRpcmVjdGlvbmFsT3ZlcnJpZGUpCiAgICAgICAgICwgbV9k
aXNhYmxlU3BhY2luZyhmYWxzZSkKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQpAQCAtNjIsNyArNjMs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFRleHRSdW4oY29uc3QgU3RyaW5nJiBz
LCBib29sIGFsbG93VGFicyA9IGZhbHNlLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9u
ID0gMCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgYm9vbCBydGwgPSBmYWxzZSwgYm9v
bCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UpCisgICAgVGV4dFJ1bihjb25zdCBTdHJpbmcm
IHMsIGJvb2wgYWxsb3dUYWJzID0gZmFsc2UsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNp
b24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxp
bmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UpCiAgICAgICAgIDog
bV9jaGFyYWN0ZXJzKHMuY2hhcmFjdGVycygpKQogICAgICAgICAsIG1fbGVuKHMubGVuZ3RoKCkp
CiAgICAgICAgICwgbV94cG9zKHhwb3MpCkBAIC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgLCBtX2hvcml6b250YWxHbHlwaFN0cmV0Y2goMSkKICNlbmRpZgogICAgICAgICAsIG1fYWxs
b3dUYWJzKGFsbG93VGFicykKLSAgICAgICAgLCBtX3J0bChydGwpCisgICAgICAgICwgbV9kaXJl
Y3Rpb24oZGlyZWN0aW9uKQogICAgICAgICAsIG1fZGlyZWN0aW9uYWxPdmVycmlkZShkaXJlY3Rp
b25hbE92ZXJyaWRlKQogICAgICAgICAsIG1fZGlzYWJsZVNwYWNpbmcoZmFsc2UpCiAjaWYgRU5B
QkxFKFNWR19GT05UUykKQEAgLTEwMCwxMyArMTAxLDE0IEBAIHB1YmxpYzoKICAgICBmbG9hdCBl
eHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQogICAgIGJvb2wgYWxsb3dz
TGVhZGluZ0V4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uQmVoYXZpb3IgJiBB
bGxvd0xlYWRpbmdFeHBhbnNpb247IH0KICAgICBib29sIGFsbG93c1RyYWlsaW5nRXhwYW5zaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb25CZWhhdmlvciAmIEFsbG93VHJhaWxpbmdFeHBh
bnNpb247IH0KLSAgICBib29sIHJ0bCgpIGNvbnN0IHsgcmV0dXJuIG1fcnRsOyB9Ci0gICAgYm9v
bCBsdHIoKSBjb25zdCB7IHJldHVybiAhbV9ydGw7IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9CisgICAgYm9vbCBydGwoKSBjb25z
dCB7IHJldHVybiBtX2RpcmVjdGlvbiA9PSBSVEw7IH0KKyAgICBib29sIGx0cigpIGNvbnN0IHsg
cmV0dXJuIG1fZGlyZWN0aW9uID09IExUUjsgfQogICAgIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlk
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uYWxPdmVycmlkZTsgfQogICAgIGJvb2wgc3Bh
Y2luZ0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlU3BhY2luZzsgfQogCiAgICAg
dm9pZCBkaXNhYmxlU3BhY2luZygpIHsgbV9kaXNhYmxlU3BhY2luZyA9IHRydWU7IH0KLSAgICB2
b2lkIHNldFJUTChib29sIGIpIHsgbV9ydGwgPSBiOyB9CisgICAgdm9pZCBzZXREaXJlY3Rpb24o
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIHsgbV9kaXJlY3Rpb24gPSBkaXJlY3Rpb247IH0KICAg
ICB2b2lkIHNldERpcmVjdGlvbmFsT3ZlcnJpZGUoYm9vbCBvdmVycmlkZSkgeyBtX2RpcmVjdGlv
bmFsT3ZlcnJpZGUgPSBvdmVycmlkZTsgfQogCiAjaWYgRU5BQkxFKFNWR19GT05UUykKQEAgLTEz
MSw4ICsxMzMsOCBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1faG9yaXpvbnRhbEdseXBoU3RyZXRj
aDsKICNlbmRpZgogICAgIGJvb2wgbV9hbGxvd1RhYnM7Ci0gICAgYm9vbCBtX3J0bDsKLSAgICBi
b29sIG1fZGlyZWN0aW9uYWxPdmVycmlkZTsKKyAgICBUZXh0RGlyZWN0aW9uIG1fZGlyZWN0aW9u
OworICAgIGJvb2wgbV9kaXJlY3Rpb25hbE92ZXJyaWRlOyAvLyBXYXMgdGhpcyBkaXJlY3Rpb24g
c2V0IGJ5IGFuIG92ZXJyaWRlIGNoYXJhY3Rlci4KICAgICBib29sIG1fZGlzYWJsZVNwYWNpbmc7
CiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
QmlkaVJlc29sdmVyLmgKaW5kZXggYzZlZmRkOGZmZWI5MDA2YmFlYjRkYjY4NmJiNTFmY2UxZjYy
Nzk5NC4uMDM4MGM1YjUyYzI5OTExN2FlMTJhMDcxNjE5ZWQxNjZkNGY2Mjg1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCkBAIC0yNCw2ICsyNCw3IEBA
CiAKICNpbmNsdWRlICJCaWRpQ29udGV4dC5oIgogI2luY2x1ZGUgIkJpZGlSdW5MaXN0LmgiCisj
aW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
NjIsNiArNjMsMTUgQEAgc3RydWN0IEJpZGlTdGF0dXMgewogICAgIHsKICAgICB9CiAKKyAgICAv
LyBDcmVhdGVzIGEgQmlkaVN0YXR1cyByZXByZXNlbnRpbmcgYSBuZXcgcGFyYWdyYXBoIHJvb3Qg
d2l0aCBhIGRlZmF1bHQgZGlyZWN0aW9uLgorICAgIC8vIFVzZXMgVGV4dERpcmVjdGlvbiBhcyBp
dCBvbmx5IGhhcyB0d28gcG9zc2liaWxpdGllcyBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6RGly
ZWN0aW9uIHdoaWNoIGhhcyAxOS4KKyAgICBCaWRpU3RhdHVzKFRleHREaXJlY3Rpb24gdGV4dERp
cmVjdGlvbiwgYm9vbCBpc092ZXJyaWRlKQorICAgIHsKKyAgICAgICAgV1RGOjpVbmljb2RlOjpE
aXJlY3Rpb24gZGlyZWN0aW9uID0gdGV4dERpcmVjdGlvbiA9PSBMVFIgPyBXVEY6OlVuaWNvZGU6
OkxlZnRUb1JpZ2h0IDogV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdDsKKyAgICAgICAgZW9yID0g
bGFzdFN0cm9uZyA9IGxhc3QgPSBkaXJlY3Rpb247CisgICAgICAgIGNvbnRleHQgPSBCaWRpQ29u
dGV4dDo6Y3JlYXRlKHRleHREaXJlY3Rpb24gPT0gTFRSID8gMCA6IDEsIGRpcmVjdGlvbiwgaXNP
dmVycmlkZSk7CisgICAgfQorCiAgICAgQmlkaVN0YXR1cyhXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
biBlb3JEaXIsIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGxhc3RTdHJvbmdEaXIsIFdURjo6VW5p
Y29kZTo6RGlyZWN0aW9uIGxhc3REaXIsIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IGJpZGlDb250
ZXh0KQogICAgICAgICA6IGVvcihlb3JEaXIpCiAgICAgICAgICwgbGFzdFN0cm9uZyhsYXN0U3Ry
b25nRGlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVu
dVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApp
bmRleCBjNzVlMjE5ZTI1MGNlYTdiODg1NGQzOTM1YzkwMDdjMDc4Y2ZhMzJmLi5kMzZhYzU2MzJl
NzkwNGRkMjNhMzk4ZjMxY2VmN2VlMGI2ZWYzMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApAQCAtNjMxLDcgKzYzMSw4IEBAIHZvaWQgUG9wdXBN
ZW51V2luOjpwYWludChjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBIREMgaGRjKQogICAgICAg
ICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGl0ZW1UZXh0Lmxlbmd0aCgpOwogICAg
ICAgICBjb25zdCBVQ2hhciogc3RyaW5nID0gaXRlbVRleHQuY2hhcmFjdGVycygpOwotICAgICAg
ICBUZXh0UnVuIHRleHRSdW4oc3RyaW5nLCBsZW5ndGgsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpB
bGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBpdGVtVGV4dC5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigp
ID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQpOworICAgICAgICBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiA9IChpdGVtVGV4dC5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFdURjo6VW5p
Y29kZTo6UmlnaHRUb0xlZnQpID8gUlRMIDogTFRSOworICAgICAgICBUZXh0UnVuIHRleHRSdW4o
c3RyaW5nLCBsZW5ndGgsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uLCBkaXJlY3Rpb24pOwogCiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG9wdGlvblRl
eHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5jcHAKaW5kZXggNTA2YTAzNmMwMTkzMTljN2U3YWI4MDk2MGQx
MWUxNmI0MTc2ZTQ2My4uOGMyMzBhMDBhNmFiOGY2MzA5ZGI0ZjA2MDI2Njk3NTgzM2U1NGM4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCkBAIC01Myw3ICs1Myw4
IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgs
IGludCB0eSwgaW50IGxpbmVUb3AsIGludCBsCiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiBz
dHIgPSBtX3N0cjsKLSAgICBjb250ZXh0LT5kcmF3VGV4dChzdHlsZS0+Zm9udCgpLCBUZXh0UnVu
KHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgoKSwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFs
bG93VHJhaWxpbmdFeHBhbnNpb24sIGZhbHNlLCBzdHlsZS0+dmlzdWFsbHlPcmRlcmVkKCkpLCBJ
bnRQb2ludChtX3ggKyB0eCwgbV95ICsgdHkgKyBzdHlsZS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQo
KSkpOworICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdhc3kgTFRSPworICAgIGNvbnRleHQt
PmRyYXdUZXh0KHN0eWxlLT5mb250KCksIFRleHRSdW4oc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxl
bmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgTFRS
LCBzdHlsZS0+dmlzdWFsbHlPcmRlcmVkKCkpLCBJbnRQb2ludChtX3ggKyB0eCwgbV95ICsgdHkg
KyBzdHlsZS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwogCiAgICAgLy8gUmVzdG9yZSB0aGUg
cmVndWxhciBmaWxsIGNvbG9yLgogICAgIGlmICh0ZXh0Q29sb3IgIT0gY29udGV4dC0+ZmlsbENv
bG9yKCkpCkBAIC03NCw3ICs3NSw4IEBAIEludFJlY3QgRWxsaXBzaXNCb3g6OnNlbGVjdGlvblJl
Y3QoaW50IHR4LCBpbnQgdHkpCiB7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gbV9yZW5kZXJl
ci0+c3R5bGUobV9maXJzdExpbmUpOwogICAgIGNvbnN0IEZvbnQmIGYgPSBzdHlsZS0+Zm9udCgp
OwotICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGYuc2VsZWN0aW9uUmVjdEZvclRleHQoVGV4
dFJ1bihtX3N0ci5jaGFyYWN0ZXJzKCksIG1fc3RyLmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4
dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgZmFsc2UsIHN0eWxlLT52aXN1YWxseU9yZGVy
ZWQoKSksCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGFsd2F5cyBMVFI/CisgICAgcmV0dXJu
IGVuY2xvc2luZ0ludFJlY3QoZi5zZWxlY3Rpb25SZWN0Rm9yVGV4dChUZXh0UnVuKG1fc3RyLmNo
YXJhY3RlcnMoKSwgbV9zdHIubGVuZ3RoKCksIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1Ry
YWlsaW5nRXhwYW5zaW9uLCBMVFIsIHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSksCiAgICAgICAg
ICAgICBJbnRQb2ludChtX3ggKyB0eCwgbV95ICsgdHkgKyByb290KCktPnNlbGVjdGlvblRvcCgp
KSwgcm9vdCgpLT5zZWxlY3Rpb25IZWlnaHQoKSkpOwogfQogCkBAIC05NCw3ICs5Niw4IEBAIHZv
aWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
aW50IHR4LCBpbnQgdHksIFJlbmRlCiAgICAgaW50IHkgPSByb290KCktPnNlbGVjdGlvblRvcCgp
OwogICAgIGludCBoID0gcm9vdCgpLT5zZWxlY3Rpb25IZWlnaHQoKTsKICAgICBjb250ZXh0LT5j
bGlwKEludFJlY3QobV94ICsgdHgsIHkgKyB0eSwgbV9sb2dpY2FsV2lkdGgsIGgpKTsKLSAgICBj
b250ZXh0LT5kcmF3SGlnaGxpZ2h0Rm9yVGV4dChmb250LCBUZXh0UnVuKG1fc3RyLmNoYXJhY3Rl
cnMoKSwgbV9zdHIubGVuZ3RoKCksIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uLCBmYWxzZSwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKSwKKyAgICAvLyBGSVhN
RTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8KKyAgICBjb250ZXh0LT5kcmF3SGlnaGxpZ2h0Rm9y
VGV4dChmb250LCBUZXh0UnVuKG1fc3RyLmNoYXJhY3RlcnMoKSwgbV9zdHIubGVuZ3RoKCksIGZh
bHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBMVFIsIHN0eWxlLT52
aXN1YWxseU9yZGVyZWQoKSksCiAgICAgICAgIEludFBvaW50KG1feCArIHR4LCBtX3kgKyB0eSAr
IHkpLCBoLCBjLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IGZjMzlhOWZhOWI3OGY2MjZiNDI4OTZkOTZi
OTRiN2E2ZjhjNWEwMmUuLjdiYzk0NzAwZDA2ZWQ0M2ZhYzNhZWNjZTk4NTFhYjc4NmFkMjBmM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTE5Miw3
ICsxOTIsNyBAQCBJbnRSZWN0IElubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3QoaW50IHR4LCBp
bnQgdHksIGludCBzdGFydFBvcywgaW50IGVuZFBvcykKICAgICAgICAgZVBvcyA9IGxlbjsKICAg
ICB9CiAKLSAgICBJbnRSZWN0IHIgPSBlbmNsb3NpbmdJbnRSZWN0KGYuc2VsZWN0aW9uUmVjdEZv
clRleHQoVGV4dFJ1bihjaGFyYWN0ZXJzLCBsZW4sIHRleHRPYmotPmFsbG93VGFicygpLCB0ZXh0
UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLCAhaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpLCBtX2Rpck92ZXJyaWRlKSwKKyAgICBJbnRSZWN0IHIgPSBlbmNsb3NpbmdJbnRS
ZWN0KGYuc2VsZWN0aW9uUmVjdEZvclRleHQoVGV4dFJ1bihjaGFyYWN0ZXJzLCBsZW4sIHRleHRP
YmotPmFsbG93VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlv
cigpLCBkaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KCksIHNlbEhlaWdodCwg
c1BvcywgZVBvcykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICBpbnQgbG9naWNhbFdpZHRoID0gci53aWR0aCgpOwpAQCAtNjQ5
LDcgKzY0OSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGludCB0eCwgaW50IHR5LCBpbnQgLypsaW5lVG9wKi8sCiAgICAgaWYgKGhhc0h5cGhlbigp
KQogICAgICAgICBhZGp1c3RDaGFyYWN0ZXJzQW5kTGVuZ3RoRm9ySHlwaGVuKGNoYXJhY3RlcnNX
aXRoSHlwaGVuLCBzdHlsZVRvVXNlLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogCi0gICAgVGV4dFJ1
biB0ZXh0UnVuKGNoYXJhY3RlcnMsIGxlbmd0aCwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFicygp
LCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLCAhaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRlIHx8IHN0eWxlVG9Vc2UtPnZpc3VhbGx5T3Jk
ZXJlZCgpKTsKKyAgICBUZXh0UnVuIHRleHRSdW4oY2hhcmFjdGVycywgbGVuZ3RoLCB0ZXh0UmVu
ZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9leHBhbnNpb24sIGV4cGFuc2lvbkJl
aGF2aW9yKCksIGRpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRlIHx8IHN0eWxlVG9Vc2UtPnZpc3Vh
bGx5T3JkZXJlZCgpKTsKIAogICAgIGludCBzUG9zID0gMDsKICAgICBpbnQgZVBvcyA9IDA7CkBA
IC04MTgsNyArODE4LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKICAgICBGbG9hdFBvaW50
IGxvY2FsT3JpZ2luKGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBkZWx0YVkpOwogICAg
IGNvbnRleHQtPmNsaXAoRmxvYXRSZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNpemUobV9sb2dpY2Fs
V2lkdGgsIHNlbEhlaWdodCkpKTsKICAgICBjb250ZXh0LT5kcmF3SGlnaGxpZ2h0Rm9yVGV4dChm
b250LCBUZXh0UnVuKGNoYXJhY3RlcnMsIGxlbmd0aCwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFi
cygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCBt
X2Rpck92ZXJyaWRlIHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUt
PnZpc3VhbGx5T3JkZXJlZCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b2NhbE9yaWdpbiwgc2VsSGVpZ2h0LCBjLCBzdHlsZS0+Y29sb3JTcGFjZSgpLCBzUG9zLCBlUG9z
KTsKIH0KIApAQCAtODQxLDcgKzg0MSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDb21w
b3NpdGlvbkJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGCiAgICAg
aW50IHNlbEhlaWdodCA9IHNlbGVjdGlvbkhlaWdodCgpOwogICAgIEZsb2F0UG9pbnQgbG9jYWxP
cmlnaW4oYm94T3JpZ2luLngoKSwgYm94T3JpZ2luLnkoKSAtIGRlbHRhWSk7CiAgICAgY29udGV4
dC0+ZHJhd0hpZ2hsaWdodEZvclRleHQoZm9udCwgVGV4dFJ1bih0ZXh0UmVuZGVyZXIoKS0+dGV4
dCgpLT5jaGFyYWN0ZXJzKCkgKyBtX3N0YXJ0LCBtX2xlbiwgdGV4dFJlbmRlcmVyKCktPmFsbG93
VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCks
IG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSB8fCBzdHls
ZS0+dmlzdWFsbHlPcmRlcmVkKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvY2FsT3JpZ2luLCBzZWxIZWlnaHQsIGMsIHN0eWxlLT5jb2xvclNwYWNlKCksIHNQb3MsIGVQ
b3MpOwogfQogCkBAIC0xMDAwLDcgKzEwMDAsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50
U3BlbGxpbmdPckdyYW1tYXJNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwgY29uc3QgRmxvYQog
ICAgICAgICBpbnQgZGVsdGFZID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNGbGlwcGVkTGluZXNX
cml0aW5nTW9kZSgpID8gc2VsZWN0aW9uQm90dG9tKCkgLSBsb2dpY2FsQm90dG9tKCkgOiBsb2dp
Y2FsVG9wKCkgLSBzZWxlY3Rpb25Ub3AoKTsKICAgICAgICAgaW50IHNlbEhlaWdodCA9IHNlbGVj
dGlvbkhlaWdodCgpOwogICAgICAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoYm94T3JpZ2luLngo
KSwgYm94T3JpZ2luLnkoKSAtIGRlbHRhWSk7Ci0gICAgICAgIFRleHRSdW4gcnVuKHRleHRSZW5k
ZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIG1fc3RhcnQsIG1fbGVuLCB0ZXh0UmVuZGVy
ZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9leHBhbnNpb24sIGV4cGFuc2lvbkJlaGF2
aW9yKCksICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUt
PnZpc3VhbGx5T3JkZXJlZCgpKTsKKyAgICAgICAgVGV4dFJ1biBydW4odGV4dFJlbmRlcmVyKCkt
PnRleHQoKS0+Y2hhcmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRSZW5kZXJlcigpLT5h
bGxvd1RhYnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IoKSwg
ZGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoZSBkb2N1bWVudCBtYXJrZXJz
IHRvIGZsb2F0IHJlY3RzLgogICAgICAgICBJbnRSZWN0IG1hcmtlclJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KGZvbnQuc2VsZWN0aW9uUmVjdEZvclRleHQocnVuLCBzdGFydFBvaW50LCBzZWxIZWln
aHQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKSk7CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCog
cHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAKICAgICBpbnQgc1BvcyA9IG1heChtYXJrZXIuc3RhcnRP
ZmZzZXQgLSBtX3N0YXJ0LCAodW5zaWduZWQpMCk7CiAgICAgaW50IGVQb3MgPSBtaW4obWFya2Vy
LmVuZE9mZnNldCAtIG1fc3RhcnQsICh1bnNpZ25lZCltX2xlbik7ICAgIAotICAgIFRleHRSdW4g
cnVuKHRleHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIG1fc3RhcnQsIG1fbGVu
LCB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9leHBhbnNpb24sIGV4
cGFuc2lvbkJlaGF2aW9yKCksICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJp
ZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKTsKKyAgICBUZXh0UnVuIHJ1bih0ZXh0UmVu
ZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBtX3N0YXJ0LCBtX2xlbiwgdGV4dFJlbmRl
cmVyKCktPmFsbG93VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhh
dmlvcigpLCBkaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+dmlzdWFsbHlPcmRl
cmVkKCkpOwogICAgIAogICAgIC8vIEFsd2F5cyBjb21wdXRlIGFuZCBzdG9yZSB0aGUgcmVjdCBh
c3NvY2lhdGVkIHdpdGggdGhpcyBtYXJrZXIuIFRoZSBjb21wdXRlZCByZWN0IGlzIGluIGFic29s
dXRlIGNvb3JkaW5hdGVzLgogICAgIEludFJlY3QgbWFya2VyUmVjdCA9IGVuY2xvc2luZ0ludFJl
Y3QoZm9udC5zZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4sIEludFBvaW50KG1feCwgc2VsZWN0aW9u
VG9wKCkpLCBzZWxIZWlnaHQsIHNQb3MsIGVQb3MpKTsKQEAgLTEwNzIsNyArMTA3Miw3IEBAIHZv
aWQgSW5saW5lVGV4dEJveDo6Y29tcHV0ZVJlY3RGb3JSZXBsYWNlbWVudE1hcmtlcihjb25zdCBE
b2N1bWVudE1hcmtlciYgbWFya2VyCiAgICAgCiAgICAgaW50IHNQb3MgPSBtYXgobWFya2VyLnN0
YXJ0T2Zmc2V0IC0gbV9zdGFydCwgKHVuc2lnbmVkKTApOwogICAgIGludCBlUG9zID0gbWluKG1h
cmtlci5lbmRPZmZzZXQgLSBtX3N0YXJ0LCAodW5zaWduZWQpbV9sZW4pOyAgICAKLSAgICBUZXh0
UnVuIHJ1bih0ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBtX3N0YXJ0LCBt
X2xlbiwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9u
LCBleHBhbnNpb25CZWhhdmlvcigpLCAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCBtX2Rpck92
ZXJyaWRlIHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSk7CisgICAgVGV4dFJ1biBydW4odGV4
dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRS
ZW5kZXJlcigpLT5hbGxvd1RhYnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9u
QmVoYXZpb3IoKSwgZGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5
T3JkZXJlZCgpKTsKICAgICBJbnRQb2ludCBzdGFydFBvaW50ID0gSW50UG9pbnQobV94LCB5KTsK
ICAgICAKICAgICAvLyBDb21wdXRlIGFuZCBzdG9yZSB0aGUgcmVjdCBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBtYXJrZXIuCkBAIC0xMjMzLDcgKzEyMzMsNyBAQCBpbnQgSW5saW5lVGV4dEJveDo6b2Zm
c2V0Rm9yUG9zaXRpb24oZmxvYXQgbGluZU9mZnNldCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHRleHQtPnN0eWxlKG1fZmlyc3RMaW5lKTsKICAg
ICBjb25zdCBGb250KiBmID0gJnN0eWxlLT5mb250KCk7CiAgICAgaW50IG9mZnNldCA9IGYtPm9m
ZnNldEZvclBvc2l0aW9uKFRleHRSdW4odGV4dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVy
cygpICsgbV9zdGFydCwgbV9sZW4sCi0gICAgICAgIHRleHRSZW5kZXJlcigpLT5hbGxvd1RhYnMo
KSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgIWlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+dmlzdWFsbHlPcmRlcmVk
KCkpLAorICAgICAgICB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9l
eHBhbnNpb24sIGV4cGFuc2lvbkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRl
IHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSksCiAgICAgICAgIGxpbmVPZmZzZXQgLSBsb2dp
Y2FsTGVmdCgpLCBpbmNsdWRlUGFydGlhbEdseXBocyk7CiAgICAgaWYgKGJsb2NrSXNJbk9wcG9z
aXRlRGlyZWN0aW9uICYmICghb2Zmc2V0IHx8IG9mZnNldCA9PSBtX2xlbikpCiAgICAgICAgIHJl
dHVybiAhb2Zmc2V0ID8gbV9sZW4gOiAwOwpAQCAtMTI1Myw3ICsxMjUzLDcgQEAgZmxvYXQgSW5s
aW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3QKICAgICBpbnQg
ZnJvbSA9ICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBvZmZzZXQgLSBtX3N0YXJ0IDogMDsK
ICAgICBpbnQgdG8gPSAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbV9sZW4gOiBvZmZzZXQg
LSBtX3N0YXJ0OwogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGFkZCByaWdodEJlYXJpbmcg
aGVyZT8KLSAgICByZXR1cm4gZi5zZWxlY3Rpb25SZWN0Rm9yVGV4dChUZXh0UnVuKHRleHQtPnRl
eHQoKS0+Y2hhcmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRSZW5kZXJlcigpLT5hbGxv
d1RhYnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgIWlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSksCisgICAgcmV0dXJuIGYuc2Vs
ZWN0aW9uUmVjdEZvclRleHQoVGV4dFJ1bih0ZXh0LT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIG1f
c3RhcnQsIG1fbGVuLCB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9l
eHBhbnNpb24sIGV4cGFuc2lvbkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRl
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChsb2dpY2FsTGVm
dCgpLCAwKSwgMCwgZnJvbSwgdG8pLm1heFgoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBmMjlkZjkyZWJmYjI2
NmE1MzViZTBiYjkyZDQwOWMyMWVjMzgyNGUwLi5hMGI1MmNlZmMwZjQ3ZTk0YWY0NWM5ODQyNmEy
YzAyMzVhZDg1YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMTI1OSwyNiArMTI1OSwxNCBAQCBSb290SW5saW5lQm94
KiBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lU3RhcnRQb3NpdGlvbihib29sJiBmaXJzdExpbmUsIGJv
b2wmIGZ1bGxMYQogICAgIGZpcnN0TGluZSA9ICFsYXN0OwogICAgIHByZXZpb3VzTGluZUJyb2tl
Q2xlYW5seSA9ICFsYXN0IHx8IGxhc3QtPmVuZHNXaXRoQnJlYWsoKTsKIAotICAgIFJlbmRlck9i
amVjdCogc3RhcnRPYmo7Ci0gICAgaW50IHBvcyA9IDA7CiAgICAgaWYgKGxhc3QpIHsKICAgICAg
ICAgc2V0TG9naWNhbEhlaWdodChsYXN0LT5ibG9ja0xvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAg
IHN0YXJ0T2JqID0gbGFzdC0+bGluZUJyZWFrT2JqKCk7Ci0gICAgICAgIHBvcyA9IGxhc3QtPmxp
bmVCcmVha1BvcygpOworICAgICAgICByZXNvbHZlci5zZXRQb3NpdGlvbihJbmxpbmVJdGVyYXRv
cih0aGlzLCBsYXN0LT5saW5lQnJlYWtPYmooKSwgbGFzdC0+bGluZUJyZWFrUG9zKCkpKTsKICAg
ICAgICAgcmVzb2x2ZXIuc2V0U3RhdHVzKGxhc3QtPmxpbmVCcmVha0JpZGlTdGF0dXMoKSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgYm9vbCBsdHIgPSBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCk7Ci0gICAgICAgIERpcmVjdGlvbiBkaXJlY3Rpb24gPSBsdHIgPyBMZWZ0VG9SaWdo
dCA6IFJpZ2h0VG9MZWZ0OwotICAgICAgICByZXNvbHZlci5zZXRMYXN0U3Ryb25nRGlyKGRpcmVj
dGlvbik7Ci0gICAgICAgIHJlc29sdmVyLnNldExhc3REaXIoZGlyZWN0aW9uKTsKLSAgICAgICAg
cmVzb2x2ZXIuc2V0RW9yRGlyKGRpcmVjdGlvbik7Ci0gICAgICAgIHJlc29sdmVyLnNldENvbnRl
eHQoQmlkaUNvbnRleHQ6OmNyZWF0ZShsdHIgPyAwIDogMSwgZGlyZWN0aW9uLCBzdHlsZSgpLT51
bmljb2RlQmlkaSgpID09IE92ZXJyaWRlLCBGcm9tU3R5bGVPckRPTSkpOwotCi0gICAgICAgIHN0
YXJ0T2JqID0gYmlkaUZpcnN0U2tpcHBpbmdJbmxpbmVzKHRoaXMsICZyZXNvbHZlcik7CisgICAg
ICAgIHJlc29sdmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKHN0eWxlKCktPmRpcmVjdGlvbigpLCBz
dHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRlKSk7CisgICAgICAgIHJlc29sdmVyLnNl
dFBvc2l0aW9uKElubGluZUl0ZXJhdG9yKHRoaXMsIGJpZGlGaXJzdFNraXBwaW5nSW5saW5lcyh0
aGlzLCAmcmVzb2x2ZXIpLCAwKSk7CiAgICAgfQotCi0gICAgcmVzb2x2ZXIuc2V0UG9zaXRpb24o
SW5saW5lSXRlcmF0b3IodGhpcywgc3RhcnRPYmosIHBvcykpOwotCiAgICAgcmV0dXJuIGN1cnI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBs
b2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wuY3BwCmluZGV4IDY3ZDIwYjk0NTNkNWU5OGViNzM4OThlZjgwZjRmMjg0ZjFkYzhl
MjAuLjg3ZjZmZjFiNWYxZTZlYjU5ODYxNDMzNzkzZDg2YjJlZTczM2E5MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApA
QCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2Jq
ZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAgICAgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5ZWRGaWxlbmFtZSA9IGZpbGVUZXh0VmFsdWUoKTsKICAgICAgICAgdW5z
aWduZWQgbGVuZ3RoID0gZGlzcGxheWVkRmlsZW5hbWUubGVuZ3RoKCk7CiAgICAgICAgIGNvbnN0
IFVDaGFyKiBzdHJpbmcgPSBkaXNwbGF5ZWRGaWxlbmFtZS5jaGFyYWN0ZXJzKCk7Ci0gICAgICAg
IFRleHRSdW4gdGV4dFJ1bihzdHJpbmcsIGxlbmd0aCwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFs
bG93VHJhaWxpbmdFeHBhbnNpb24sICFzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCks
IHN0eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpOworICAgICAgICBUZXh0UnVuIHRl
eHRSdW4oc3RyaW5nLCBsZW5ndGgsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uLCBzdHlsZSgpLT5kaXJlY3Rpb24oKSwgc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9
PSBPdmVycmlkZSk7CiAgICAgICAgIAogICAgICAgICAvLyBEZXRlcm1pbmUgd2hlcmUgdGhlIGZp
bGVuYW1lIHNob3VsZCBiZSBwbGFjZWQKICAgICAgICAgaW50IGNvbnRlbnRMZWZ0ID0gdHggKyBi
b3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOwpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAg
ICAgICAgLy8gRmlndXJlIG91dCBob3cgYmlnIHRoZSBmaWxlbmFtZSBzcGFjZSBuZWVkcyB0byBi
ZSBmb3IgYSBnaXZlbiBudW1iZXIgb2YgY2hhcmFjdGVycwogICAgICAgICAvLyAodXNpbmcgIjAi
IGFzIHRoZSBub21pbmFsIGNoYXJhY3RlcikuCiAgICAgICAgIGNvbnN0IFVDaGFyIGNoID0gJzAn
OwotICAgICAgICBmbG9hdCBjaGFyV2lkdGggPSBzdHlsZSgpLT5mb250KCkud2lkdGgoVGV4dFJ1
bigmY2gsIDEsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBm
YWxzZSkpOworICAgICAgICBmbG9hdCBjaGFyV2lkdGggPSBzdHlsZSgpLT5mb250KCkud2lkdGgo
VGV4dFJ1bigmY2gsIDEsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uKSk7CiAgICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gKGludCljZWlsZihj
aGFyV2lkdGggKiBkZWZhdWx0V2lkdGhOdW1DaGFycyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggZDc3OThkNTc1MzM0OWY5MDllNTg2
YmVjMWQxMzQ3MmMwMjNlN2E3Ny4uMjExYmQyYmZhZTU0YmY0ZWYyNzIyNzY5MzlkM2I2NjU1NmE1
ZjRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAt
MTE1LDkgKzExNSwxMCBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkK
ICAgICAgICAgICAgICAgICBpdGVtRm9udCA9IEZvbnQoZCwgaXRlbUZvbnQubGV0dGVyU3BhY2lu
ZygpLCBpdGVtRm9udC53b3JkU3BhY2luZygpKTsKICAgICAgICAgICAgICAgICBpdGVtRm9udC51
cGRhdGUoZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5mb250U2VsZWN0b3IoKSk7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmICghdGV4dC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCB0ZXh0V2lkdGggPSBpdGVtRm9udC53aWR0
aChUZXh0UnVuKHRleHQuaW1wbCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGlu
Z0V4cGFuc2lvbiwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdo
eSBpcyB0aGlzIGFsd2F5cyBMVFI/IENhbid0IHRleHQgZGlyZWN0aW9uIGFmZmVjdCB0aGUgd2lk
dGg/CisgICAgICAgICAgICAgICAgZmxvYXQgdGV4dFdpZHRoID0gaXRlbUZvbnQud2lkdGgoVGV4
dFJ1bih0ZXh0LmltcGwoKSwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBh
bnNpb24sIExUUikpOwogICAgICAgICAgICAgICAgIHdpZHRoID0gbWF4KHdpZHRoLCB0ZXh0V2lk
dGgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zODksNyArMzkwLDcgQEAgdm9pZCBS
ZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBp
bnQgdHgsIGludCB0eSwgaW4KIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGl0ZW1UZXh0Lmxlbmd0
aCgpOwogICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcgPSBpdGVtVGV4dC5jaGFyYWN0ZXJzKCk7Ci0g
ICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6
QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgIWl0ZW1TdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpLCBpdGVtU3R5bGUtPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpOworICAgIFRleHRSdW4g
dGV4dFJ1bihzdHJpbmcsIGxlbmd0aCwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxp
bmdFeHBhbnNpb24sIGl0ZW1TdHlsZS0+ZGlyZWN0aW9uKCksIGl0ZW1TdHlsZS0+dW5pY29kZUJp
ZGkoKSA9PSBPdmVycmlkZSk7CiAgICAgRm9udCBpdGVtRm9udCA9IHN0eWxlKCktPmZvbnQoKTsK
ICAgICBJbnRSZWN0IHIgPSBpdGVtQm91bmRpbmdCb3hSZWN0KHR4LCB0eSwgbGlzdEluZGV4KTsK
ICAgICByLm1vdmUoaXRlbU9mZnNldEZvckFsaWdubWVudCh0ZXh0UnVuLCBpdGVtU3R5bGUsIGl0
ZW1Gb250LCByKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sLmNwcAppbmRleCAyMTJlNzFlNTYxYzhjYzVmYjU5YzBkYWFmOGQwM2M3ZGY5MjI2ZWFmLi5l
YjdmZjUwYjQ3YTczM2ZjM2MwMjIzMzIzODQ0YjllOTQ1NDEwZDBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTU0MSw4ICs1NDEsOCBA
QCBmbG9hdCBSZW5kZXJUZXh0Q29udHJvbDo6Z2V0QXZnQ2hhcldpZHRoKEF0b21pY1N0cmluZyBm
YW1pbHkpCiAgICAgaWYgKGhhc1ZhbGlkQXZnQ2hhcldpZHRoKGZhbWlseSkpCiAgICAgICAgIHJl
dHVybiByb3VuZGYoc3R5bGUoKS0+Zm9udCgpLnByaW1hcnlGb250KCktPmF2Z0NoYXJXaWR0aCgp
KTsKIAotICAgIGNvbnN0IFVDaGFyIGNoID0gJzAnOyAKLSAgICByZXR1cm4gc3R5bGUoKS0+Zm9u
dCgpLndpZHRoKFRleHRSdW4oJmNoLCAxLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFp
bGluZ0V4cGFuc2lvbiwgZmFsc2UpKTsKKyAgICBjb25zdCBVQ2hhciBjaCA9ICcwJzsKKyAgICBy
ZXR1cm4gc3R5bGUoKS0+Zm9udCgpLndpZHRoKFRleHRSdW4oJmNoLCAxLCBmYWxzZSwgMCwgMCwg
VGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbikpOwogfQogCiBmbG9hdCBSZW5kZXJUZXh0
Q29udHJvbDo6c2NhbGVFbVRvVW5pdHMoaW50IHgpIGNvbnN0CkBAIC02MzYsNyArNjM2LDcgQEAg
dm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6cGFpbnRQbGFjZWhvbGRlcihQYWludEluZm8mIHBhaW50
SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xv
cihwbGFjZWhvbGRlclN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
ciksIHBsYWNlaG9sZGVyU3R5bGUtPmNvbG9yU3BhY2UoKSk7CiAgICAgCiAgICAgU3RyaW5nIHBs
YWNlaG9sZGVyVGV4dCA9IHN0YXRpY19jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Kj4o
bm9kZSgpKS0+c3RyaXBwZWRQbGFjZWhvbGRlcigpOwotICAgIFRleHRSdW4gdGV4dFJ1bihwbGFj
ZWhvbGRlclRleHQuY2hhcmFjdGVycygpLCBwbGFjZWhvbGRlclRleHQubGVuZ3RoKCksIGZhbHNl
LCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCAhcGxhY2Vob2xkZXJTdHls
ZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCBwbGFjZWhvbGRlclN0eWxlLT51bmljb2RlQmlk
aSgpID09IE92ZXJyaWRlKTsKKyAgICBUZXh0UnVuIHRleHRSdW4ocGxhY2Vob2xkZXJUZXh0LmNo
YXJhY3RlcnMoKSwgcGxhY2Vob2xkZXJUZXh0Lmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1
bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgcGxhY2Vob2xkZXJTdHlsZS0+ZGlyZWN0aW9uKCks
IHBsYWNlaG9sZGVyU3R5bGUtPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpOwogICAgIAogICAg
IFJlbmRlckJveCogdGV4dFJlbmRlcmVyID0gaW5uZXJUZXh0RWxlbWVudCgpID8gaW5uZXJUZXh0
RWxlbWVudCgpLT5yZW5kZXJCb3goKSA6IDA7CiAgICAgaWYgKHRleHRSZW5kZXJlcikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5k
ZXggZGJkZWYwNzg4MGI1NTQwNDBiYzM5MjljM2UyZTllMDEwNjFlMDIyZi4uNGQzNmM4MjQ4NDYw
ODlhNjhjYWE3MzI1NGE5OTQ0MjZjNjI3YWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBAIC00MTIsNyArNDEyLDcgQEAgVGV4
dFJ1biBTVkdJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlclN0eWxlKiBzdHls
ZSwgY29uc3QgU1ZHVGV4dEZyYWcKICAgICAgICAgICAgICAgICAsIDAgLyogeFBvcywgb25seSBy
ZWxldmFudCB3aXRoIGFsbG93VGFicz10cnVlICovCiAgICAgICAgICAgICAgICAgLCAwIC8qIHBh
ZGRpbmcsIG9ubHkgcmVsZXZhbnQgZm9yIGp1c3RpZmllZCB0ZXh0LCBub3QgcmVsZXZhbnQgZm9y
IFNWRyAqLwogICAgICAgICAgICAgICAgICwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lv
bgotICAgICAgICAgICAgICAgICwgZGlyZWN0aW9uKCkgPT0gUlRMCisgICAgICAgICAgICAgICAg
LCBkaXJlY3Rpb24oKQogICAgICAgICAgICAgICAgICwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+
dmlzdWFsbHlPcmRlcmVkKCkgLyogZGlyZWN0aW9uYWxPdmVycmlkZSAqLyk7CiAKICNpZiBFTkFC
TEUoU1ZHX0ZPTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TWV0cmljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRN
ZXRyaWNzLmNwcAppbmRleCAwNDJiYzIyZjZkYWQ2OTJhZWM4N2EyYmMyNGQyOTcxOGU0MDIwYTBj
Li5kOWQ4NmY2MWExODFjMGJjM2VjZjU0ZGY2ZjgyYzJlNjhiYzM2NjI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcApAQCAtODMsNyArODMs
NyBAQCBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlclNWR0lubGluZVRleHQq
IHRleHQsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZQogICAgICAgICAgICAgICAgICwgMCAvKiB4UG9z
LCBvbmx5IHJlbGV2YW50IHdpdGggYWxsb3dUYWJzPXRydWUgKi8KICAgICAgICAgICAgICAgICAs
IDAgLyogcGFkZGluZywgb25seSByZWxldmFudCBmb3IganVzdGlmaWVkIHRleHQsIG5vdCByZWxl
dmFudCBmb3IgU1ZHICovCiAgICAgICAgICAgICAgICAgLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uCi0gICAgICAgICAgICAgICAgLCAhc3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKQorICAgICAgICAgICAgICAgICwgc3R5bGUtPmRpcmVjdGlvbigpCiAgICAgICAgICAgICAg
ICAgLCBzdHlsZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSAvKiBkaXJlY3Rpb25hbE92ZXJy
aWRlICovKTsKIAogI2lmIEVOQUJMRShTVkdfRk9OVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0UnVuLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlRleHRSdW4uY3BwCmluZGV4IGI4YzZjY2JmNDQ3ODAxOGZkOThlYjczMzE3ZThjMzQ4
NzYxZTUwNTguLmQyNjUyNDA1YzBmZGE3NWIyMGU1NDYyNDcxYjczYjBkNzY0ZTk4MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRSdW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRSdW4uY3BwCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJUZXh0UnVuOjpvcGVyYXRvciBXZWJDb3JlOjpUZXh0
UnVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gVGV4dFJ1bih0ZXh0LCBmYWxzZSwgMCwgMCwgVGV4
dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgcnRsLCBkaXJlY3Rpb25hbE92ZXJyaWRlKTsK
KyAgICByZXR1cm4gVGV4dFJ1bih0ZXh0LCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFp
bGluZ0V4cGFuc2lvbiwgcnRsID8gUlRMIDogTFRSLCBkaXJlY3Rpb25hbE92ZXJyaWRlKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90795</attachid>
            <date>2011-04-22 16:16:37 -0700</date>
            <delta_ts>2011-04-27 20:21:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59226-20110422161634.patch</filename>
            <type>text/plain</type>
            <size>34268</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ2NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNDI5Y2QyYWRlMDBhNDMy
ZTY2ZmQ0MTEyZDliNTkzZjQxOGFmOGM4Li4zMWU5YjBkNTU0YWYzYTNlMzlkOGRiZWE0ZThiYzdi
NDVhMTQ3MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMDQtMjIgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNob3VsZCBoYXZlIGFuIGVhc3kgd2F5IHRvIGNvbnN0cnVjdCBz
dGFydGluZyBCaWRpU3RhdHVzIGZvciBhIHBhcmFncmFwaCByb290CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTIyNgorCisgICAgICAgIFR3byBwbGFj
ZXMgdHJ5IHRvIGNvbnN0cnVjdCBCaWRpU3RhdHVzZXMgZm9yIGEgcGFyYWdyYXBoIHJvb3QgdXNp
bmcgY29weS9wYXN0ZSBjb2RlLgorICAgICAgICBJJ3ZlIG1hZGUgdGhpcyBhIGNvbnN0cnVjdG9y
IGZvciBCaWRpU3RhdHVzIGluc3RlYWQuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGVmZm9y
dCBJIGFkZGVkIGEgZGlyZWN0aW9uKCkgYWNjZXNzb3IgZm9yIFRleHRSdW4gYW5kIGdvdAorICAg
ICAgICByaWQgb2YgdGhlIG9sZCBtX3J0bCBib29sLiAgVGhpcyBpcyBwYXJ0IG9mIHRoZSBnZW5l
cmljIGVmZm9ydCBpbiB0aGUKKyAgICAgICAgQmlkaSBjb2RlIHRvIHJlcGxhY2Ugb2xkIGJvb2wg
dXNhZ2Ugd2l0aCB0aGUgc3VwZXJpb3IgVGV4dERpcmVjdGlvbiBlbnVtCisgICAgICAgICh0aGlz
IGdlbmVyYWxseSBtYWtlcyB0aGUgY29kZSBjbGVhbmVyKS4KKworICAgICAgICBBcyBwYXJ0IG9m
IHRoaXMgcmVwbGFjZW1lbnQgZWZmb3J0IEkgZm91bmQgc2V2ZXJhbCBwbGFjZXMgd2hpY2ggd2Vy
ZQorICAgICAgICBhc3N1bWluZyBMVFIgKGJ5IHBhc3NpbmcgcnRsPWZhbHNlKSB3aGVuIHRoZXkg
cHJvYmFibHkgd2FudCB0byB1c2UKKyAgICAgICAgdGhlIGN1cnJlbnQgdGV4dCBkaXJlY3Rpb24u
ICBJIHN1c3BlY3QgdGhhdCBMVFIgdnMuIFJUTCBtYXkgYWZmZWN0CisgICAgICAgIHN0cmluZyB3
aWR0aCBpbiB0aGUgY2FzZSBvZiBsaWdhdHVyZXMuICBJdCdzIHVuY2xlYXIuCisKKyAgICAgICAg
VGhpcyBpcyBhbG1vc3QgZW50aXJlbHkgYSBtZWNoYW5pY2FsIGNoYW5nZS4KKworICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6VGV4dFJ1bik6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpkaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFJ1bjo6cnRsKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46Omx0cik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0UnVuOjpzZXREaXJlY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpU3RhdHVzOjpCaWRp
U3RhdHVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lz
Qm94OjpzZWxlY3Rpb25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpwYWlu
dFNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludFNwZWxsaW5nT3JHcmFtbWFyTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZVRleHRCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwbGFjZW1lbnRNYXJrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmRldGVybWluZVN0YXJ0UG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmls
ZVVwbG9hZENvbnRyb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmdldEF2
Z0NoYXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6cGFpbnRQ
bGFjZWhvbGRlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4p
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29uc3RydWN0VGV4dFJ1bik6CisKIDIwMTEtMDQtMjIgIFhpYW9tZWkgSmkgIDx4
amlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKaW5kZXggY2Y5MGFlMWE0ZjhhODVkZTUzM2YxNGMzZWRiN2NiNGI1ZmFmMmNhYi4u
Y2EwYzRlNTliNjZkOGJkOGJmOTIwM2QyYTI5NmY2YTE4NmIxZGI1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CkBAIC0xODYxLDEyICsxODYxLDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgLy8g
RklYTUU6IE5lZWQgdG8gdHVybiBvZmYgZm9udCBzbW9vdGhpbmcuCiAKICAgICBSZW5kZXJTdHls
ZSogY29tcHV0ZWRTdHlsZSA9IGNhbnZhcygpLT5jb21wdXRlZFN0eWxlKCk7Ci0gICAgYm9vbCBy
dGwgPSBjb21wdXRlZFN0eWxlID8gIWNvbXB1dGVkU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSA6IGZhbHNlOworICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gY29tcHV0ZWRTdHls
ZSA/IGNvbXB1dGVkU3R5bGUtPmRpcmVjdGlvbigpIDogTFRSOworICAgIGJvb2wgaXNSVEwgPSBk
aXJlY3Rpb24gPT0gUlRMOwogICAgIGJvb2wgb3ZlcnJpZGUgPSBjb21wdXRlZFN0eWxlID8gY29t
cHV0ZWRTdHlsZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSA6IGZhbHNlOwogCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKICAgICBjb25zdCBVQ2hhciogc3RyaW5nID0g
dGV4dC5jaGFyYWN0ZXJzKCk7Ci0gICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBm
YWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgcnRsLCBvdmVycmlk
ZSk7CisgICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBmYWxzZSwgMCwgMCwgVGV4
dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSk7CiAKICAg
ICAvLyBEcmF3IHRoZSBpdGVtIHRleHQgYXQgdGhlIGNvcnJlY3QgcG9pbnQuCiAgICAgRmxvYXRQ
b2ludCBsb2NhdGlvbih4LCB5KTsKQEAgLTE4ODgsMTMgKzE4ODksMTMgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBm
bG9hdCB4LCBmbG8KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZmxvYXQgd2lkdGggPSBm
b250LndpZHRoKFRleHRSdW4odGV4dCwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxp
bmdFeHBhbnNpb24sIHJ0bCwgb3ZlcnJpZGUpKTsKKyAgICBmbG9hdCB3aWR0aCA9IGZvbnQud2lk
dGgoVGV4dFJ1bih0ZXh0LCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFu
c2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSkpOwogCiAgICAgVGV4dEFsaWduIGFsaWduID0gc3Rh
dGUoKS5tX3RleHRBbGlnbjsKICAgICBpZiAoYWxpZ24gPT0gU3RhcnRUZXh0QWxpZ24pCi0gICAg
ICAgICBhbGlnbiA9IHJ0bCA/IFJpZ2h0VGV4dEFsaWduIDogTGVmdFRleHRBbGlnbjsKKyAgICAg
ICAgYWxpZ24gPSBpc1JUTCA/IFJpZ2h0VGV4dEFsaWduIDogTGVmdFRleHRBbGlnbjsKICAgICBl
bHNlIGlmIChhbGlnbiA9PSBFbmRUZXh0QWxpZ24pCi0gICAgICAgIGFsaWduID0gcnRsID8gTGVm
dFRleHRBbGlnbiA6IFJpZ2h0VGV4dEFsaWduOworICAgICAgICBhbGlnbiA9IGlzUlRMID8gTGVm
dFRleHRBbGlnbiA6IFJpZ2h0VGV4dEFsaWduOwogCiAgICAgc3dpdGNoIChhbGlnbikgewogICAg
IGNhc2UgQ2VudGVyVGV4dEFsaWduOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCmluZGV4IDgwYTY2YjI0YzY1OWFlZDQw
ZWE5YTYwMDRmNzQ4MTZhNTcyMGZkYWIuLjk2NWNjZDU4YjFkNTY1ZmRlY2I5MWY3YjI0OWVlZTA3
NWU0NDY2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bv
cHVwTWVudUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKQEAgLTk2Myw4ICs5NjMsNyBAQCB2b2lkIFBvcHVwTGlz
dEJveDo6cGFpbnRSb3coR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwg
aW50IHJvd0luZAogICAgIH0KIAogICAgIC8vIFByZXBhcmUgdGhlIGRpcmVjdGlvbmFsaXR5IHRv
IGRyYXcgdGV4dC4KLSAgICBib29sIHJ0bCA9IHN0eWxlLnRleHREaXJlY3Rpb24oKSA9PSBSVEw7
Ci0gICAgVGV4dFJ1biB0ZXh0UnVuKGl0ZW1UZXh0LmNoYXJhY3RlcnMoKSwgaXRlbVRleHQubGVu
Z3RoKCksIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBydGws
IHN0eWxlLmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpKTsKKyAgICBUZXh0UnVuIHRleHRSdW4o
aXRlbVRleHQuY2hhcmFjdGVycygpLCBpdGVtVGV4dC5sZW5ndGgoKSwgZmFsc2UsIDAsIDAsIFRl
eHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24sIHN0eWxlLnRleHREaXJlY3Rpb24oKSwgc3R5
bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkpOwogICAgIC8vIElmIHRoZSB0ZXh0IGlzIHJp
Z2h0LXRvLWxlZnQsIG1ha2UgaXQgcmlnaHQtYWxpZ25lZCBieSBhZGp1c3RpbmcgaXRzCiAgICAg
Ly8gYmVnaW5uaW5nIHBvc2l0aW9uLgogICAgIGlmIChyaWdodEFsaWduZWQpCkBAIC0xMDAyLDcg
KzEwMDEsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnRSb3coR3JhcGhpY3NDb250ZXh0KiBn
YywgY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHJvd0luZAogICAgICAgICBpdGVtRm9udC51cGRh
dGUoMCk7CiAgICAgfQogCi0gICAgVGV4dFJ1biBsYWJlbFRleHRSdW4oaXRlbUxhYmVsLmNoYXJh
Y3RlcnMoKSwgaXRlbUxhYmVsLmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dU
cmFpbGluZ0V4cGFuc2lvbiwgcnRsLCBzdHlsZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSk7
CisgICAgVGV4dFJ1biBsYWJlbFRleHRSdW4oaXRlbUxhYmVsLmNoYXJhY3RlcnMoKSwgaXRlbUxh
YmVsLmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lv
biwgc3R5bGUudGV4dERpcmVjdGlvbigpLCBzdHlsZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUo
KSk7CiAgICAgaWYgKHJpZ2h0QWxpZ25lZCkKICAgICAgICAgdGV4dFggPSBtYXgoMCwgbV9wb3B1
cENsaWVudC0+Y2xpZW50UGFkZGluZ0xlZnQoKSAtIG1fcG9wdXBDbGllbnQtPmNsaWVudEluc2V0
TGVmdCgpKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBhZWQyNDg4Mjk3MGExZGNiYzMxZThmYjgy
OGM4YTg3NjhiMzJjZGE3Li5hZjk5OWVhMGNiYjQxODQ5MWZhYjRiZGZkOWRjMjg3OTYxY2Y3YzJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKQEAgLTM5OCwyOCArMzk4LDI0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3QmlkaVRleHQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBG
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQmlk
aVJlc29sdmVyPFRleHRSdW5JdGVyYXRvciwgQmlkaUNoYXJhY3RlclJ1bj4gYmlkaVJlc29sdmVy
OworICAgIGJpZGlSZXNvbHZlci5zZXRTdGF0dXMoQmlkaVN0YXR1cyhydW4uZGlyZWN0aW9uKCks
IHJ1bi5kaXJlY3Rpb25hbE92ZXJyaWRlKCkpKTsKKyAgICBiaWRpUmVzb2x2ZXIuc2V0UG9zaXRp
b24oVGV4dFJ1bkl0ZXJhdG9yKCZydW4sIDApKTsKKwogICAgIC8vIEZJWE1FOiBUaGlzIG93bmVy
c2hpcCBzaG91bGQgYmUgcmV2ZXJzZWQuIFdlIHNob3VsZCBwYXNzIEJpZGlSdW5MaXN0CiAgICAg
Ly8gdG8gQmlkaVJlc29sdmVyIGluIGNyZWF0ZUJpZGlSdW5zRm9yTGluZS4KLSAgICBCaWRpUmVz
b2x2ZXI8VGV4dFJ1bkl0ZXJhdG9yLCBCaWRpQ2hhcmFjdGVyUnVuPiBiaWRpUmVzb2x2ZXI7CiAg
ICAgQmlkaVJ1bkxpc3Q8QmlkaUNoYXJhY3RlclJ1bj4mIGJpZGlSdW5zID0gYmlkaVJlc29sdmVy
LnJ1bnMoKTsKLQotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIHBhcmFncmFwaERpcmVjdGlv
biA9IHJ1bi5sdHIoKSA/IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQgOiBXVEY6OlVuaWNvZGU6
OlJpZ2h0VG9MZWZ0OwotCi0gICAgYmlkaVJlc29sdmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKHBh
cmFncmFwaERpcmVjdGlvbiwgcGFyYWdyYXBoRGlyZWN0aW9uLCBwYXJhZ3JhcGhEaXJlY3Rpb24s
IEJpZGlDb250ZXh0OjpjcmVhdGUocnVuLmx0cigpID8gMCA6IDEsIHBhcmFncmFwaERpcmVjdGlv
biwgcnVuLmRpcmVjdGlvbmFsT3ZlcnJpZGUoKSkpKTsKLQotICAgIGJpZGlSZXNvbHZlci5zZXRQ
b3NpdGlvbihUZXh0UnVuSXRlcmF0b3IoJnJ1biwgMCkpOwogICAgIGJpZGlSZXNvbHZlci5jcmVh
dGVCaWRpUnVuc0ZvckxpbmUoVGV4dFJ1bkl0ZXJhdG9yKCZydW4sIHJ1bi5sZW5ndGgoKSkpOwot
CiAgICAgaWYgKCFiaWRpUnVucy5ydW5Db3VudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBG
bG9hdFBvaW50IGN1cnJQb2ludCA9IHBvaW50OwogICAgIEJpZGlDaGFyYWN0ZXJSdW4qIGJpZGlS
dW4gPSBiaWRpUnVucy5maXJzdFJ1bigpOwogICAgIHdoaWxlIChiaWRpUnVuKSB7Ci0KICAgICAg
ICAgVGV4dFJ1biBzdWJydW4gPSBydW47CiAgICAgICAgIHN1YnJ1bi5zZXRUZXh0KHJ1bi5kYXRh
KGJpZGlSdW4tPnN0YXJ0KCkpLCBiaWRpUnVuLT5zdG9wKCkgLSBiaWRpUnVuLT5zdGFydCgpKTsK
LSAgICAgICAgc3VicnVuLnNldFJUTChiaWRpUnVuLT5sZXZlbCgpICUgMik7CisgICAgICAgIGJv
b2wgaXNSVEwgPSBiaWRpUnVuLT5sZXZlbCgpICUgMjsKKyAgICAgICAgc3VicnVuLnNldERpcmVj
dGlvbihpc1JUTCA/IFJUTCA6IExUUik7CiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92
ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZhbHNlKSk7CiAKICAgICAgICAgZm9udC5kcmF3
VGV4dCh0aGlzLCBzdWJydW4sIGN1cnJQb2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UZXh0UnVuLmgKaW5kZXggZWM3NjNiOWEzYWQzM2U5MDFmMDMwZGM5OTFkM2E2ZTBk
MTA0Y2VhNC4uNzM3YWRmNjU5ODhiY2ZlN2Y3ZTRjYjllM2UxZDkwMDZjZWYxODI2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApAQCAtMjUsNiArMjUsNyBA
QAogI2RlZmluZSBUZXh0UnVuX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5j
bHVkZSAiVGV4dERpcmVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBFeHBhbnNpb25CZWhhdmlv
cjsKIAotICAgIFRleHRSdW4oY29uc3QgVUNoYXIqIGMsIGludCBsZW4sIGJvb2wgYWxsb3dUYWJz
ID0gZmFsc2UsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25C
ZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3Ji
aWRMZWFkaW5nRXhwYW5zaW9uLCBib29sIHJ0bCA9IGZhbHNlLCBib29sIGRpcmVjdGlvbmFsT3Zl
cnJpZGUgPSBmYWxzZSkKKyAgICBUZXh0UnVuKGNvbnN0IFVDaGFyKiBjLCBpbnQgbGVuLCBib29s
IGFsbG93VGFicyA9IGZhbHNlLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwg
RXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBM
VFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlKQogICAgICAgICA6IG1fY2hhcmFj
dGVycyhjKQogICAgICAgICAsIG1fbGVuKGxlbikKICAgICAgICAgLCBtX3hwb3MoeHBvcykKQEAg
LTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICAsIG1faG9yaXpvbnRhbEdseXBoU3RyZXRj
aCgxKQogI2VuZGlmCiAgICAgICAgICwgbV9hbGxvd1RhYnMoYWxsb3dUYWJzKQotICAgICAgICAs
IG1fcnRsKHJ0bCkKKyAgICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCiAgICAgICAgICwg
bV9kaXJlY3Rpb25hbE92ZXJyaWRlKGRpcmVjdGlvbmFsT3ZlcnJpZGUpCiAgICAgICAgICwgbV9k
aXNhYmxlU3BhY2luZyhmYWxzZSkKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQpAQCAtNjIsNyArNjMs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFRleHRSdW4oY29uc3QgU3RyaW5nJiBz
LCBib29sIGFsbG93VGFicyA9IGZhbHNlLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9u
ID0gMCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgYm9vbCBydGwgPSBmYWxzZSwgYm9v
bCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UpCisgICAgVGV4dFJ1bihjb25zdCBTdHJpbmcm
IHMsIGJvb2wgYWxsb3dUYWJzID0gZmFsc2UsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNp
b24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxp
bmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UpCiAgICAgICAgIDog
bV9jaGFyYWN0ZXJzKHMuY2hhcmFjdGVycygpKQogICAgICAgICAsIG1fbGVuKHMubGVuZ3RoKCkp
CiAgICAgICAgICwgbV94cG9zKHhwb3MpCkBAIC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgLCBtX2hvcml6b250YWxHbHlwaFN0cmV0Y2goMSkKICNlbmRpZgogICAgICAgICAsIG1fYWxs
b3dUYWJzKGFsbG93VGFicykKLSAgICAgICAgLCBtX3J0bChydGwpCisgICAgICAgICwgbV9kaXJl
Y3Rpb24oZGlyZWN0aW9uKQogICAgICAgICAsIG1fZGlyZWN0aW9uYWxPdmVycmlkZShkaXJlY3Rp
b25hbE92ZXJyaWRlKQogICAgICAgICAsIG1fZGlzYWJsZVNwYWNpbmcoZmFsc2UpCiAjaWYgRU5B
QkxFKFNWR19GT05UUykKQEAgLTEwMCwxMyArMTAxLDE0IEBAIHB1YmxpYzoKICAgICBmbG9hdCBl
eHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQogICAgIGJvb2wgYWxsb3dz
TGVhZGluZ0V4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uQmVoYXZpb3IgJiBB
bGxvd0xlYWRpbmdFeHBhbnNpb247IH0KICAgICBib29sIGFsbG93c1RyYWlsaW5nRXhwYW5zaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb25CZWhhdmlvciAmIEFsbG93VHJhaWxpbmdFeHBh
bnNpb247IH0KLSAgICBib29sIHJ0bCgpIGNvbnN0IHsgcmV0dXJuIG1fcnRsOyB9Ci0gICAgYm9v
bCBsdHIoKSBjb25zdCB7IHJldHVybiAhbV9ydGw7IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9CisgICAgYm9vbCBydGwoKSBjb25z
dCB7IHJldHVybiBtX2RpcmVjdGlvbiA9PSBSVEw7IH0KKyAgICBib29sIGx0cigpIGNvbnN0IHsg
cmV0dXJuIG1fZGlyZWN0aW9uID09IExUUjsgfQogICAgIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlk
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uYWxPdmVycmlkZTsgfQogICAgIGJvb2wgc3Bh
Y2luZ0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlU3BhY2luZzsgfQogCiAgICAg
dm9pZCBkaXNhYmxlU3BhY2luZygpIHsgbV9kaXNhYmxlU3BhY2luZyA9IHRydWU7IH0KLSAgICB2
b2lkIHNldFJUTChib29sIGIpIHsgbV9ydGwgPSBiOyB9CisgICAgdm9pZCBzZXREaXJlY3Rpb24o
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIHsgbV9kaXJlY3Rpb24gPSBkaXJlY3Rpb247IH0KICAg
ICB2b2lkIHNldERpcmVjdGlvbmFsT3ZlcnJpZGUoYm9vbCBvdmVycmlkZSkgeyBtX2RpcmVjdGlv
bmFsT3ZlcnJpZGUgPSBvdmVycmlkZTsgfQogCiAjaWYgRU5BQkxFKFNWR19GT05UUykKQEAgLTEz
MSw4ICsxMzMsOCBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1faG9yaXpvbnRhbEdseXBoU3RyZXRj
aDsKICNlbmRpZgogICAgIGJvb2wgbV9hbGxvd1RhYnM7Ci0gICAgYm9vbCBtX3J0bDsKLSAgICBi
b29sIG1fZGlyZWN0aW9uYWxPdmVycmlkZTsKKyAgICBUZXh0RGlyZWN0aW9uIG1fZGlyZWN0aW9u
OworICAgIGJvb2wgbV9kaXJlY3Rpb25hbE92ZXJyaWRlOyAvLyBXYXMgdGhpcyBkaXJlY3Rpb24g
c2V0IGJ5IGFuIG92ZXJyaWRlIGNoYXJhY3Rlci4KICAgICBib29sIG1fZGlzYWJsZVNwYWNpbmc7
CiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
QmlkaVJlc29sdmVyLmgKaW5kZXggYzZlZmRkOGZmZWI5MDA2YmFlYjRkYjY4NmJiNTFmY2UxZjYy
Nzk5NC4uMDM4MGM1YjUyYzI5OTExN2FlMTJhMDcxNjE5ZWQxNjZkNGY2Mjg1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCkBAIC0yNCw2ICsyNCw3IEBA
CiAKICNpbmNsdWRlICJCaWRpQ29udGV4dC5oIgogI2luY2x1ZGUgIkJpZGlSdW5MaXN0LmgiCisj
aW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
NjIsNiArNjMsMTUgQEAgc3RydWN0IEJpZGlTdGF0dXMgewogICAgIHsKICAgICB9CiAKKyAgICAv
LyBDcmVhdGVzIGEgQmlkaVN0YXR1cyByZXByZXNlbnRpbmcgYSBuZXcgcGFyYWdyYXBoIHJvb3Qg
d2l0aCBhIGRlZmF1bHQgZGlyZWN0aW9uLgorICAgIC8vIFVzZXMgVGV4dERpcmVjdGlvbiBhcyBp
dCBvbmx5IGhhcyB0d28gcG9zc2liaWxpdGllcyBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6RGly
ZWN0aW9uIHdoaWNoIGhhcyAxOS4KKyAgICBCaWRpU3RhdHVzKFRleHREaXJlY3Rpb24gdGV4dERp
cmVjdGlvbiwgYm9vbCBpc092ZXJyaWRlKQorICAgIHsKKyAgICAgICAgV1RGOjpVbmljb2RlOjpE
aXJlY3Rpb24gZGlyZWN0aW9uID0gdGV4dERpcmVjdGlvbiA9PSBMVFIgPyBXVEY6OlVuaWNvZGU6
OkxlZnRUb1JpZ2h0IDogV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdDsKKyAgICAgICAgZW9yID0g
bGFzdFN0cm9uZyA9IGxhc3QgPSBkaXJlY3Rpb247CisgICAgICAgIGNvbnRleHQgPSBCaWRpQ29u
dGV4dDo6Y3JlYXRlKHRleHREaXJlY3Rpb24gPT0gTFRSID8gMCA6IDEsIGRpcmVjdGlvbiwgaXNP
dmVycmlkZSk7CisgICAgfQorCiAgICAgQmlkaVN0YXR1cyhXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
biBlb3JEaXIsIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGxhc3RTdHJvbmdEaXIsIFdURjo6VW5p
Y29kZTo6RGlyZWN0aW9uIGxhc3REaXIsIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IGJpZGlDb250
ZXh0KQogICAgICAgICA6IGVvcihlb3JEaXIpCiAgICAgICAgICwgbGFzdFN0cm9uZyhsYXN0U3Ry
b25nRGlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVu
dVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApp
bmRleCBjNzVlMjE5ZTI1MGNlYTdiODg1NGQzOTM1YzkwMDdjMDc4Y2ZhMzJmLi5kMzZhYzU2MzJl
NzkwNGRkMjNhMzk4ZjMxY2VmN2VlMGI2ZWYzMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApAQCAtNjMxLDcgKzYzMSw4IEBAIHZvaWQgUG9wdXBN
ZW51V2luOjpwYWludChjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBIREMgaGRjKQogICAgICAg
ICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGl0ZW1UZXh0Lmxlbmd0aCgpOwogICAg
ICAgICBjb25zdCBVQ2hhciogc3RyaW5nID0gaXRlbVRleHQuY2hhcmFjdGVycygpOwotICAgICAg
ICBUZXh0UnVuIHRleHRSdW4oc3RyaW5nLCBsZW5ndGgsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpB
bGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBpdGVtVGV4dC5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigp
ID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQpOworICAgICAgICBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiA9IChpdGVtVGV4dC5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFdURjo6VW5p
Y29kZTo6UmlnaHRUb0xlZnQpID8gUlRMIDogTFRSOworICAgICAgICBUZXh0UnVuIHRleHRSdW4o
c3RyaW5nLCBsZW5ndGgsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uLCBkaXJlY3Rpb24pOwogCiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG9wdGlvblRl
eHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5jcHAKaW5kZXggNTA2YTAzNmMwMTkzMTljN2U3YWI4MDk2MGQx
MWUxNmI0MTc2ZTQ2My4uOGMyMzBhMDBhNmFiOGY2MzA5ZGI0ZjA2MDI2Njk3NTgzM2U1NGM4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCkBAIC01Myw3ICs1Myw4
IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgs
IGludCB0eSwgaW50IGxpbmVUb3AsIGludCBsCiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiBz
dHIgPSBtX3N0cjsKLSAgICBjb250ZXh0LT5kcmF3VGV4dChzdHlsZS0+Zm9udCgpLCBUZXh0UnVu
KHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgoKSwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFs
bG93VHJhaWxpbmdFeHBhbnNpb24sIGZhbHNlLCBzdHlsZS0+dmlzdWFsbHlPcmRlcmVkKCkpLCBJ
bnRQb2ludChtX3ggKyB0eCwgbV95ICsgdHkgKyBzdHlsZS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQo
KSkpOworICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdhc3kgTFRSPworICAgIGNvbnRleHQt
PmRyYXdUZXh0KHN0eWxlLT5mb250KCksIFRleHRSdW4oc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxl
bmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgTFRS
LCBzdHlsZS0+dmlzdWFsbHlPcmRlcmVkKCkpLCBJbnRQb2ludChtX3ggKyB0eCwgbV95ICsgdHkg
KyBzdHlsZS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwogCiAgICAgLy8gUmVzdG9yZSB0aGUg
cmVndWxhciBmaWxsIGNvbG9yLgogICAgIGlmICh0ZXh0Q29sb3IgIT0gY29udGV4dC0+ZmlsbENv
bG9yKCkpCkBAIC03NCw3ICs3NSw4IEBAIEludFJlY3QgRWxsaXBzaXNCb3g6OnNlbGVjdGlvblJl
Y3QoaW50IHR4LCBpbnQgdHkpCiB7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gbV9yZW5kZXJl
ci0+c3R5bGUobV9maXJzdExpbmUpOwogICAgIGNvbnN0IEZvbnQmIGYgPSBzdHlsZS0+Zm9udCgp
OwotICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGYuc2VsZWN0aW9uUmVjdEZvclRleHQoVGV4
dFJ1bihtX3N0ci5jaGFyYWN0ZXJzKCksIG1fc3RyLmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4
dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgZmFsc2UsIHN0eWxlLT52aXN1YWxseU9yZGVy
ZWQoKSksCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGFsd2F5cyBMVFI/CisgICAgcmV0dXJu
IGVuY2xvc2luZ0ludFJlY3QoZi5zZWxlY3Rpb25SZWN0Rm9yVGV4dChUZXh0UnVuKG1fc3RyLmNo
YXJhY3RlcnMoKSwgbV9zdHIubGVuZ3RoKCksIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1Ry
YWlsaW5nRXhwYW5zaW9uLCBMVFIsIHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSksCiAgICAgICAg
ICAgICBJbnRQb2ludChtX3ggKyB0eCwgbV95ICsgdHkgKyByb290KCktPnNlbGVjdGlvblRvcCgp
KSwgcm9vdCgpLT5zZWxlY3Rpb25IZWlnaHQoKSkpOwogfQogCkBAIC05NCw3ICs5Niw4IEBAIHZv
aWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
aW50IHR4LCBpbnQgdHksIFJlbmRlCiAgICAgaW50IHkgPSByb290KCktPnNlbGVjdGlvblRvcCgp
OwogICAgIGludCBoID0gcm9vdCgpLT5zZWxlY3Rpb25IZWlnaHQoKTsKICAgICBjb250ZXh0LT5j
bGlwKEludFJlY3QobV94ICsgdHgsIHkgKyB0eSwgbV9sb2dpY2FsV2lkdGgsIGgpKTsKLSAgICBj
b250ZXh0LT5kcmF3SGlnaGxpZ2h0Rm9yVGV4dChmb250LCBUZXh0UnVuKG1fc3RyLmNoYXJhY3Rl
cnMoKSwgbV9zdHIubGVuZ3RoKCksIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uLCBmYWxzZSwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKSwKKyAgICAvLyBGSVhN
RTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8KKyAgICBjb250ZXh0LT5kcmF3SGlnaGxpZ2h0Rm9y
VGV4dChmb250LCBUZXh0UnVuKG1fc3RyLmNoYXJhY3RlcnMoKSwgbV9zdHIubGVuZ3RoKCksIGZh
bHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBMVFIsIHN0eWxlLT52
aXN1YWxseU9yZGVyZWQoKSksCiAgICAgICAgIEludFBvaW50KG1feCArIHR4LCBtX3kgKyB0eSAr
IHkpLCBoLCBjLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IGZjMzlhOWZhOWI3OGY2MjZiNDI4OTZkOTZi
OTRiN2E2ZjhjNWEwMmUuLjdiYzk0NzAwZDA2ZWQ0M2ZhYzNhZWNjZTk4NTFhYjc4NmFkMjBmM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTE5Miw3
ICsxOTIsNyBAQCBJbnRSZWN0IElubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3QoaW50IHR4LCBp
bnQgdHksIGludCBzdGFydFBvcywgaW50IGVuZFBvcykKICAgICAgICAgZVBvcyA9IGxlbjsKICAg
ICB9CiAKLSAgICBJbnRSZWN0IHIgPSBlbmNsb3NpbmdJbnRSZWN0KGYuc2VsZWN0aW9uUmVjdEZv
clRleHQoVGV4dFJ1bihjaGFyYWN0ZXJzLCBsZW4sIHRleHRPYmotPmFsbG93VGFicygpLCB0ZXh0
UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLCAhaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpLCBtX2Rpck92ZXJyaWRlKSwKKyAgICBJbnRSZWN0IHIgPSBlbmNsb3NpbmdJbnRS
ZWN0KGYuc2VsZWN0aW9uUmVjdEZvclRleHQoVGV4dFJ1bihjaGFyYWN0ZXJzLCBsZW4sIHRleHRP
YmotPmFsbG93VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlv
cigpLCBkaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KCksIHNlbEhlaWdodCwg
c1BvcywgZVBvcykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICBpbnQgbG9naWNhbFdpZHRoID0gci53aWR0aCgpOwpAQCAtNjQ5
LDcgKzY0OSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGludCB0eCwgaW50IHR5LCBpbnQgLypsaW5lVG9wKi8sCiAgICAgaWYgKGhhc0h5cGhlbigp
KQogICAgICAgICBhZGp1c3RDaGFyYWN0ZXJzQW5kTGVuZ3RoRm9ySHlwaGVuKGNoYXJhY3RlcnNX
aXRoSHlwaGVuLCBzdHlsZVRvVXNlLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogCi0gICAgVGV4dFJ1
biB0ZXh0UnVuKGNoYXJhY3RlcnMsIGxlbmd0aCwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFicygp
LCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLCAhaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRlIHx8IHN0eWxlVG9Vc2UtPnZpc3VhbGx5T3Jk
ZXJlZCgpKTsKKyAgICBUZXh0UnVuIHRleHRSdW4oY2hhcmFjdGVycywgbGVuZ3RoLCB0ZXh0UmVu
ZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9leHBhbnNpb24sIGV4cGFuc2lvbkJl
aGF2aW9yKCksIGRpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRlIHx8IHN0eWxlVG9Vc2UtPnZpc3Vh
bGx5T3JkZXJlZCgpKTsKIAogICAgIGludCBzUG9zID0gMDsKICAgICBpbnQgZVBvcyA9IDA7CkBA
IC04MTgsNyArODE4LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKICAgICBGbG9hdFBvaW50
IGxvY2FsT3JpZ2luKGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBkZWx0YVkpOwogICAg
IGNvbnRleHQtPmNsaXAoRmxvYXRSZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNpemUobV9sb2dpY2Fs
V2lkdGgsIHNlbEhlaWdodCkpKTsKICAgICBjb250ZXh0LT5kcmF3SGlnaGxpZ2h0Rm9yVGV4dChm
b250LCBUZXh0UnVuKGNoYXJhY3RlcnMsIGxlbmd0aCwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFi
cygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCBt
X2Rpck92ZXJyaWRlIHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUt
PnZpc3VhbGx5T3JkZXJlZCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b2NhbE9yaWdpbiwgc2VsSGVpZ2h0LCBjLCBzdHlsZS0+Y29sb3JTcGFjZSgpLCBzUG9zLCBlUG9z
KTsKIH0KIApAQCAtODQxLDcgKzg0MSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDb21w
b3NpdGlvbkJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGCiAgICAg
aW50IHNlbEhlaWdodCA9IHNlbGVjdGlvbkhlaWdodCgpOwogICAgIEZsb2F0UG9pbnQgbG9jYWxP
cmlnaW4oYm94T3JpZ2luLngoKSwgYm94T3JpZ2luLnkoKSAtIGRlbHRhWSk7CiAgICAgY29udGV4
dC0+ZHJhd0hpZ2hsaWdodEZvclRleHQoZm9udCwgVGV4dFJ1bih0ZXh0UmVuZGVyZXIoKS0+dGV4
dCgpLT5jaGFyYWN0ZXJzKCkgKyBtX3N0YXJ0LCBtX2xlbiwgdGV4dFJlbmRlcmVyKCktPmFsbG93
VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvcigpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCks
IG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSB8fCBzdHls
ZS0+dmlzdWFsbHlPcmRlcmVkKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvY2FsT3JpZ2luLCBzZWxIZWlnaHQsIGMsIHN0eWxlLT5jb2xvclNwYWNlKCksIHNQb3MsIGVQ
b3MpOwogfQogCkBAIC0xMDAwLDcgKzEwMDAsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50
U3BlbGxpbmdPckdyYW1tYXJNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwgY29uc3QgRmxvYQog
ICAgICAgICBpbnQgZGVsdGFZID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNGbGlwcGVkTGluZXNX
cml0aW5nTW9kZSgpID8gc2VsZWN0aW9uQm90dG9tKCkgLSBsb2dpY2FsQm90dG9tKCkgOiBsb2dp
Y2FsVG9wKCkgLSBzZWxlY3Rpb25Ub3AoKTsKICAgICAgICAgaW50IHNlbEhlaWdodCA9IHNlbGVj
dGlvbkhlaWdodCgpOwogICAgICAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoYm94T3JpZ2luLngo
KSwgYm94T3JpZ2luLnkoKSAtIGRlbHRhWSk7Ci0gICAgICAgIFRleHRSdW4gcnVuKHRleHRSZW5k
ZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIG1fc3RhcnQsIG1fbGVuLCB0ZXh0UmVuZGVy
ZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9leHBhbnNpb24sIGV4cGFuc2lvbkJlaGF2
aW9yKCksICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUt
PnZpc3VhbGx5T3JkZXJlZCgpKTsKKyAgICAgICAgVGV4dFJ1biBydW4odGV4dFJlbmRlcmVyKCkt
PnRleHQoKS0+Y2hhcmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRSZW5kZXJlcigpLT5h
bGxvd1RhYnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IoKSwg
ZGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoZSBkb2N1bWVudCBtYXJrZXJz
IHRvIGZsb2F0IHJlY3RzLgogICAgICAgICBJbnRSZWN0IG1hcmtlclJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KGZvbnQuc2VsZWN0aW9uUmVjdEZvclRleHQocnVuLCBzdGFydFBvaW50LCBzZWxIZWln
aHQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKSk7CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCog
cHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAKICAgICBpbnQgc1BvcyA9IG1heChtYXJrZXIuc3RhcnRP
ZmZzZXQgLSBtX3N0YXJ0LCAodW5zaWduZWQpMCk7CiAgICAgaW50IGVQb3MgPSBtaW4obWFya2Vy
LmVuZE9mZnNldCAtIG1fc3RhcnQsICh1bnNpZ25lZCltX2xlbik7ICAgIAotICAgIFRleHRSdW4g
cnVuKHRleHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIG1fc3RhcnQsIG1fbGVu
LCB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9leHBhbnNpb24sIGV4
cGFuc2lvbkJlaGF2aW9yKCksICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJp
ZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKTsKKyAgICBUZXh0UnVuIHJ1bih0ZXh0UmVu
ZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBtX3N0YXJ0LCBtX2xlbiwgdGV4dFJlbmRl
cmVyKCktPmFsbG93VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9uLCBleHBhbnNpb25CZWhh
dmlvcigpLCBkaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+dmlzdWFsbHlPcmRl
cmVkKCkpOwogICAgIAogICAgIC8vIEFsd2F5cyBjb21wdXRlIGFuZCBzdG9yZSB0aGUgcmVjdCBh
c3NvY2lhdGVkIHdpdGggdGhpcyBtYXJrZXIuIFRoZSBjb21wdXRlZCByZWN0IGlzIGluIGFic29s
dXRlIGNvb3JkaW5hdGVzLgogICAgIEludFJlY3QgbWFya2VyUmVjdCA9IGVuY2xvc2luZ0ludFJl
Y3QoZm9udC5zZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4sIEludFBvaW50KG1feCwgc2VsZWN0aW9u
VG9wKCkpLCBzZWxIZWlnaHQsIHNQb3MsIGVQb3MpKTsKQEAgLTEwNzIsNyArMTA3Miw3IEBAIHZv
aWQgSW5saW5lVGV4dEJveDo6Y29tcHV0ZVJlY3RGb3JSZXBsYWNlbWVudE1hcmtlcihjb25zdCBE
b2N1bWVudE1hcmtlciYgbWFya2VyCiAgICAgCiAgICAgaW50IHNQb3MgPSBtYXgobWFya2VyLnN0
YXJ0T2Zmc2V0IC0gbV9zdGFydCwgKHVuc2lnbmVkKTApOwogICAgIGludCBlUG9zID0gbWluKG1h
cmtlci5lbmRPZmZzZXQgLSBtX3N0YXJ0LCAodW5zaWduZWQpbV9sZW4pOyAgICAKLSAgICBUZXh0
UnVuIHJ1bih0ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBtX3N0YXJ0LCBt
X2xlbiwgdGV4dFJlbmRlcmVyKCktPmFsbG93VGFicygpLCB0ZXh0UG9zKCksIG1fZXhwYW5zaW9u
LCBleHBhbnNpb25CZWhhdmlvcigpLCAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCBtX2Rpck92
ZXJyaWRlIHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSk7CisgICAgVGV4dFJ1biBydW4odGV4
dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRS
ZW5kZXJlcigpLT5hbGxvd1RhYnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9u
QmVoYXZpb3IoKSwgZGlyZWN0aW9uKCksIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5
T3JkZXJlZCgpKTsKICAgICBJbnRQb2ludCBzdGFydFBvaW50ID0gSW50UG9pbnQobV94LCB5KTsK
ICAgICAKICAgICAvLyBDb21wdXRlIGFuZCBzdG9yZSB0aGUgcmVjdCBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBtYXJrZXIuCkBAIC0xMjMzLDcgKzEyMzMsNyBAQCBpbnQgSW5saW5lVGV4dEJveDo6b2Zm
c2V0Rm9yUG9zaXRpb24oZmxvYXQgbGluZU9mZnNldCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHRleHQtPnN0eWxlKG1fZmlyc3RMaW5lKTsKICAg
ICBjb25zdCBGb250KiBmID0gJnN0eWxlLT5mb250KCk7CiAgICAgaW50IG9mZnNldCA9IGYtPm9m
ZnNldEZvclBvc2l0aW9uKFRleHRSdW4odGV4dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVy
cygpICsgbV9zdGFydCwgbV9sZW4sCi0gICAgICAgIHRleHRSZW5kZXJlcigpLT5hbGxvd1RhYnMo
KSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgIWlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+dmlzdWFsbHlPcmRlcmVk
KCkpLAorICAgICAgICB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9l
eHBhbnNpb24sIGV4cGFuc2lvbkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRl
IHx8IHN0eWxlLT52aXN1YWxseU9yZGVyZWQoKSksCiAgICAgICAgIGxpbmVPZmZzZXQgLSBsb2dp
Y2FsTGVmdCgpLCBpbmNsdWRlUGFydGlhbEdseXBocyk7CiAgICAgaWYgKGJsb2NrSXNJbk9wcG9z
aXRlRGlyZWN0aW9uICYmICghb2Zmc2V0IHx8IG9mZnNldCA9PSBtX2xlbikpCiAgICAgICAgIHJl
dHVybiAhb2Zmc2V0ID8gbV9sZW4gOiAwOwpAQCAtMTI1Myw3ICsxMjUzLDcgQEAgZmxvYXQgSW5s
aW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3QKICAgICBpbnQg
ZnJvbSA9ICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBvZmZzZXQgLSBtX3N0YXJ0IDogMDsK
ICAgICBpbnQgdG8gPSAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbV9sZW4gOiBvZmZzZXQg
LSBtX3N0YXJ0OwogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGFkZCByaWdodEJlYXJpbmcg
aGVyZT8KLSAgICByZXR1cm4gZi5zZWxlY3Rpb25SZWN0Rm9yVGV4dChUZXh0UnVuKHRleHQtPnRl
eHQoKS0+Y2hhcmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRSZW5kZXJlcigpLT5hbGxv
d1RhYnMoKSwgdGV4dFBvcygpLCBtX2V4cGFuc2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgIWlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSwgbV9kaXJPdmVycmlkZSksCisgICAgcmV0dXJuIGYuc2Vs
ZWN0aW9uUmVjdEZvclRleHQoVGV4dFJ1bih0ZXh0LT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIG1f
c3RhcnQsIG1fbGVuLCB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV9l
eHBhbnNpb24sIGV4cGFuc2lvbkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBtX2Rpck92ZXJyaWRl
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChsb2dpY2FsTGVm
dCgpLCAwKSwgMCwgZnJvbSwgdG8pLm1heFgoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBmMjlkZjkyZWJmYjI2
NmE1MzViZTBiYjkyZDQwOWMyMWVjMzgyNGUwLi5hMGI1MmNlZmMwZjQ3ZTk0YWY0NWM5ODQyNmEy
YzAyMzVhZDg1YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMTI1OSwyNiArMTI1OSwxNCBAQCBSb290SW5saW5lQm94
KiBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lU3RhcnRQb3NpdGlvbihib29sJiBmaXJzdExpbmUsIGJv
b2wmIGZ1bGxMYQogICAgIGZpcnN0TGluZSA9ICFsYXN0OwogICAgIHByZXZpb3VzTGluZUJyb2tl
Q2xlYW5seSA9ICFsYXN0IHx8IGxhc3QtPmVuZHNXaXRoQnJlYWsoKTsKIAotICAgIFJlbmRlck9i
amVjdCogc3RhcnRPYmo7Ci0gICAgaW50IHBvcyA9IDA7CiAgICAgaWYgKGxhc3QpIHsKICAgICAg
ICAgc2V0TG9naWNhbEhlaWdodChsYXN0LT5ibG9ja0xvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAg
IHN0YXJ0T2JqID0gbGFzdC0+bGluZUJyZWFrT2JqKCk7Ci0gICAgICAgIHBvcyA9IGxhc3QtPmxp
bmVCcmVha1BvcygpOworICAgICAgICByZXNvbHZlci5zZXRQb3NpdGlvbihJbmxpbmVJdGVyYXRv
cih0aGlzLCBsYXN0LT5saW5lQnJlYWtPYmooKSwgbGFzdC0+bGluZUJyZWFrUG9zKCkpKTsKICAg
ICAgICAgcmVzb2x2ZXIuc2V0U3RhdHVzKGxhc3QtPmxpbmVCcmVha0JpZGlTdGF0dXMoKSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgYm9vbCBsdHIgPSBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCk7Ci0gICAgICAgIERpcmVjdGlvbiBkaXJlY3Rpb24gPSBsdHIgPyBMZWZ0VG9SaWdo
dCA6IFJpZ2h0VG9MZWZ0OwotICAgICAgICByZXNvbHZlci5zZXRMYXN0U3Ryb25nRGlyKGRpcmVj
dGlvbik7Ci0gICAgICAgIHJlc29sdmVyLnNldExhc3REaXIoZGlyZWN0aW9uKTsKLSAgICAgICAg
cmVzb2x2ZXIuc2V0RW9yRGlyKGRpcmVjdGlvbik7Ci0gICAgICAgIHJlc29sdmVyLnNldENvbnRl
eHQoQmlkaUNvbnRleHQ6OmNyZWF0ZShsdHIgPyAwIDogMSwgZGlyZWN0aW9uLCBzdHlsZSgpLT51
bmljb2RlQmlkaSgpID09IE92ZXJyaWRlLCBGcm9tU3R5bGVPckRPTSkpOwotCi0gICAgICAgIHN0
YXJ0T2JqID0gYmlkaUZpcnN0U2tpcHBpbmdJbmxpbmVzKHRoaXMsICZyZXNvbHZlcik7CisgICAg
ICAgIHJlc29sdmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKHN0eWxlKCktPmRpcmVjdGlvbigpLCBz
dHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRlKSk7CisgICAgICAgIHJlc29sdmVyLnNl
dFBvc2l0aW9uKElubGluZUl0ZXJhdG9yKHRoaXMsIGJpZGlGaXJzdFNraXBwaW5nSW5saW5lcyh0
aGlzLCAmcmVzb2x2ZXIpLCAwKSk7CiAgICAgfQotCi0gICAgcmVzb2x2ZXIuc2V0UG9zaXRpb24o
SW5saW5lSXRlcmF0b3IodGhpcywgc3RhcnRPYmosIHBvcykpOwotCiAgICAgcmV0dXJuIGN1cnI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBs
b2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wuY3BwCmluZGV4IDY3ZDIwYjk0NTNkNWU5OGViNzM4OThlZjgwZjRmMjg0ZjFkYzhl
MjAuLjg3ZjZmZjFiNWYxZTZlYjU5ODYxNDMzNzkzZDg2YjJlZTczM2E5MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApA
QCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2Jq
ZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAgICAgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5ZWRGaWxlbmFtZSA9IGZpbGVUZXh0VmFsdWUoKTsKICAgICAgICAgdW5z
aWduZWQgbGVuZ3RoID0gZGlzcGxheWVkRmlsZW5hbWUubGVuZ3RoKCk7CiAgICAgICAgIGNvbnN0
IFVDaGFyKiBzdHJpbmcgPSBkaXNwbGF5ZWRGaWxlbmFtZS5jaGFyYWN0ZXJzKCk7Ci0gICAgICAg
IFRleHRSdW4gdGV4dFJ1bihzdHJpbmcsIGxlbmd0aCwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFs
bG93VHJhaWxpbmdFeHBhbnNpb24sICFzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCks
IHN0eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpOworICAgICAgICBUZXh0UnVuIHRl
eHRSdW4oc3RyaW5nLCBsZW5ndGgsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uLCBzdHlsZSgpLT5kaXJlY3Rpb24oKSwgc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9
PSBPdmVycmlkZSk7CiAgICAgICAgIAogICAgICAgICAvLyBEZXRlcm1pbmUgd2hlcmUgdGhlIGZp
bGVuYW1lIHNob3VsZCBiZSBwbGFjZWQKICAgICAgICAgaW50IGNvbnRlbnRMZWZ0ID0gdHggKyBi
b3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOwpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAg
ICAgICAgLy8gRmlndXJlIG91dCBob3cgYmlnIHRoZSBmaWxlbmFtZSBzcGFjZSBuZWVkcyB0byBi
ZSBmb3IgYSBnaXZlbiBudW1iZXIgb2YgY2hhcmFjdGVycwogICAgICAgICAvLyAodXNpbmcgIjAi
IGFzIHRoZSBub21pbmFsIGNoYXJhY3RlcikuCiAgICAgICAgIGNvbnN0IFVDaGFyIGNoID0gJzAn
OwotICAgICAgICBmbG9hdCBjaGFyV2lkdGggPSBzdHlsZSgpLT5mb250KCkud2lkdGgoVGV4dFJ1
bigmY2gsIDEsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBm
YWxzZSkpOworICAgICAgICBmbG9hdCBjaGFyV2lkdGggPSBzdHlsZSgpLT5mb250KCkud2lkdGgo
VGV4dFJ1bigmY2gsIDEsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uKSk7CiAgICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gKGludCljZWlsZihj
aGFyV2lkdGggKiBkZWZhdWx0V2lkdGhOdW1DaGFycyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggZDc3OThkNTc1MzM0OWY5MDllNTg2
YmVjMWQxMzQ3MmMwMjNlN2E3Ny4uMjExYmQyYmZhZTU0YmY0ZWYyNzIyNzY5MzlkM2I2NjU1NmE1
ZjRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAt
MTE1LDkgKzExNSwxMCBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkK
ICAgICAgICAgICAgICAgICBpdGVtRm9udCA9IEZvbnQoZCwgaXRlbUZvbnQubGV0dGVyU3BhY2lu
ZygpLCBpdGVtRm9udC53b3JkU3BhY2luZygpKTsKICAgICAgICAgICAgICAgICBpdGVtRm9udC51
cGRhdGUoZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5mb250U2VsZWN0b3IoKSk7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmICghdGV4dC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCB0ZXh0V2lkdGggPSBpdGVtRm9udC53aWR0
aChUZXh0UnVuKHRleHQuaW1wbCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGlu
Z0V4cGFuc2lvbiwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdo
eSBpcyB0aGlzIGFsd2F5cyBMVFI/IENhbid0IHRleHQgZGlyZWN0aW9uIGFmZmVjdCB0aGUgd2lk
dGg/CisgICAgICAgICAgICAgICAgZmxvYXQgdGV4dFdpZHRoID0gaXRlbUZvbnQud2lkdGgoVGV4
dFJ1bih0ZXh0LmltcGwoKSwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBh
bnNpb24sIExUUikpOwogICAgICAgICAgICAgICAgIHdpZHRoID0gbWF4KHdpZHRoLCB0ZXh0V2lk
dGgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zODksNyArMzkwLDcgQEAgdm9pZCBS
ZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBp
bnQgdHgsIGludCB0eSwgaW4KIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGl0ZW1UZXh0Lmxlbmd0
aCgpOwogICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcgPSBpdGVtVGV4dC5jaGFyYWN0ZXJzKCk7Ci0g
ICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6
QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgIWl0ZW1TdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpLCBpdGVtU3R5bGUtPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpOworICAgIFRleHRSdW4g
dGV4dFJ1bihzdHJpbmcsIGxlbmd0aCwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxp
bmdFeHBhbnNpb24sIGl0ZW1TdHlsZS0+ZGlyZWN0aW9uKCksIGl0ZW1TdHlsZS0+dW5pY29kZUJp
ZGkoKSA9PSBPdmVycmlkZSk7CiAgICAgRm9udCBpdGVtRm9udCA9IHN0eWxlKCktPmZvbnQoKTsK
ICAgICBJbnRSZWN0IHIgPSBpdGVtQm91bmRpbmdCb3hSZWN0KHR4LCB0eSwgbGlzdEluZGV4KTsK
ICAgICByLm1vdmUoaXRlbU9mZnNldEZvckFsaWdubWVudCh0ZXh0UnVuLCBpdGVtU3R5bGUsIGl0
ZW1Gb250LCByKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sLmNwcAppbmRleCAyMTJlNzFlNTYxYzhjYzVmYjU5YzBkYWFmOGQwM2M3ZGY5MjI2ZWFmLi5l
YjdmZjUwYjQ3YTczM2ZjM2MwMjIzMzIzODQ0YjllOTQ1NDEwZDBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTU0MSw4ICs1NDEsOCBA
QCBmbG9hdCBSZW5kZXJUZXh0Q29udHJvbDo6Z2V0QXZnQ2hhcldpZHRoKEF0b21pY1N0cmluZyBm
YW1pbHkpCiAgICAgaWYgKGhhc1ZhbGlkQXZnQ2hhcldpZHRoKGZhbWlseSkpCiAgICAgICAgIHJl
dHVybiByb3VuZGYoc3R5bGUoKS0+Zm9udCgpLnByaW1hcnlGb250KCktPmF2Z0NoYXJXaWR0aCgp
KTsKIAotICAgIGNvbnN0IFVDaGFyIGNoID0gJzAnOyAKLSAgICByZXR1cm4gc3R5bGUoKS0+Zm9u
dCgpLndpZHRoKFRleHRSdW4oJmNoLCAxLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFp
bGluZ0V4cGFuc2lvbiwgZmFsc2UpKTsKKyAgICBjb25zdCBVQ2hhciBjaCA9ICcwJzsKKyAgICBy
ZXR1cm4gc3R5bGUoKS0+Zm9udCgpLndpZHRoKFRleHRSdW4oJmNoLCAxLCBmYWxzZSwgMCwgMCwg
VGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbikpOwogfQogCiBmbG9hdCBSZW5kZXJUZXh0
Q29udHJvbDo6c2NhbGVFbVRvVW5pdHMoaW50IHgpIGNvbnN0CkBAIC02MzYsNyArNjM2LDcgQEAg
dm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6cGFpbnRQbGFjZWhvbGRlcihQYWludEluZm8mIHBhaW50
SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xv
cihwbGFjZWhvbGRlclN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
ciksIHBsYWNlaG9sZGVyU3R5bGUtPmNvbG9yU3BhY2UoKSk7CiAgICAgCiAgICAgU3RyaW5nIHBs
YWNlaG9sZGVyVGV4dCA9IHN0YXRpY19jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Kj4o
bm9kZSgpKS0+c3RyaXBwZWRQbGFjZWhvbGRlcigpOwotICAgIFRleHRSdW4gdGV4dFJ1bihwbGFj
ZWhvbGRlclRleHQuY2hhcmFjdGVycygpLCBwbGFjZWhvbGRlclRleHQubGVuZ3RoKCksIGZhbHNl
LCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCAhcGxhY2Vob2xkZXJTdHls
ZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCBwbGFjZWhvbGRlclN0eWxlLT51bmljb2RlQmlk
aSgpID09IE92ZXJyaWRlKTsKKyAgICBUZXh0UnVuIHRleHRSdW4ocGxhY2Vob2xkZXJUZXh0LmNo
YXJhY3RlcnMoKSwgcGxhY2Vob2xkZXJUZXh0Lmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1
bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgcGxhY2Vob2xkZXJTdHlsZS0+ZGlyZWN0aW9uKCks
IHBsYWNlaG9sZGVyU3R5bGUtPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpOwogICAgIAogICAg
IFJlbmRlckJveCogdGV4dFJlbmRlcmVyID0gaW5uZXJUZXh0RWxlbWVudCgpID8gaW5uZXJUZXh0
RWxlbWVudCgpLT5yZW5kZXJCb3goKSA6IDA7CiAgICAgaWYgKHRleHRSZW5kZXJlcikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5k
ZXggZGJkZWYwNzg4MGI1NTQwNDBiYzM5MjljM2UyZTllMDEwNjFlMDIyZi4uNGQzNmM4MjQ4NDYw
ODlhNjhjYWE3MzI1NGE5OTQ0MjZjNjI3YWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBAIC00MTIsNyArNDEyLDcgQEAgVGV4
dFJ1biBTVkdJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlclN0eWxlKiBzdHls
ZSwgY29uc3QgU1ZHVGV4dEZyYWcKICAgICAgICAgICAgICAgICAsIDAgLyogeFBvcywgb25seSBy
ZWxldmFudCB3aXRoIGFsbG93VGFicz10cnVlICovCiAgICAgICAgICAgICAgICAgLCAwIC8qIHBh
ZGRpbmcsIG9ubHkgcmVsZXZhbnQgZm9yIGp1c3RpZmllZCB0ZXh0LCBub3QgcmVsZXZhbnQgZm9y
IFNWRyAqLwogICAgICAgICAgICAgICAgICwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lv
bgotICAgICAgICAgICAgICAgICwgZGlyZWN0aW9uKCkgPT0gUlRMCisgICAgICAgICAgICAgICAg
LCBkaXJlY3Rpb24oKQogICAgICAgICAgICAgICAgICwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+
dmlzdWFsbHlPcmRlcmVkKCkgLyogZGlyZWN0aW9uYWxPdmVycmlkZSAqLyk7CiAKICNpZiBFTkFC
TEUoU1ZHX0ZPTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TWV0cmljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRN
ZXRyaWNzLmNwcAppbmRleCAwNDJiYzIyZjZkYWQ2OTJhZWM4N2EyYmMyNGQyOTcxOGU0MDIwYTBj
Li5kOWQ4NmY2MWExODFjMGJjM2VjZjU0ZGY2ZjgyYzJlNjhiYzM2NjI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcApAQCAtODMsNyArODMs
NyBAQCBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlclNWR0lubGluZVRleHQq
IHRleHQsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZQogICAgICAgICAgICAgICAgICwgMCAvKiB4UG9z
LCBvbmx5IHJlbGV2YW50IHdpdGggYWxsb3dUYWJzPXRydWUgKi8KICAgICAgICAgICAgICAgICAs
IDAgLyogcGFkZGluZywgb25seSByZWxldmFudCBmb3IganVzdGlmaWVkIHRleHQsIG5vdCByZWxl
dmFudCBmb3IgU1ZHICovCiAgICAgICAgICAgICAgICAgLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uCi0gICAgICAgICAgICAgICAgLCAhc3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKQorICAgICAgICAgICAgICAgICwgc3R5bGUtPmRpcmVjdGlvbigpCiAgICAgICAgICAgICAg
ICAgLCBzdHlsZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSAvKiBkaXJlY3Rpb25hbE92ZXJy
aWRlICovKTsKIAogI2lmIEVOQUJMRShTVkdfRk9OVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0UnVuLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlRleHRSdW4uY3BwCmluZGV4IGI4YzZjY2JmNDQ3ODAxOGZkOThlYjczMzE3ZThjMzQ4
NzYxZTUwNTguLmQyNjUyNDA1YzBmZGE3NWIyMGU1NDYyNDcxYjczYjBkNzY0ZTk4MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRSdW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRSdW4uY3BwCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJUZXh0UnVuOjpvcGVyYXRvciBXZWJDb3JlOjpUZXh0
UnVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gVGV4dFJ1bih0ZXh0LCBmYWxzZSwgMCwgMCwgVGV4
dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgcnRsLCBkaXJlY3Rpb25hbE92ZXJyaWRlKTsK
KyAgICByZXR1cm4gVGV4dFJ1bih0ZXh0LCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFp
bGluZ0V4cGFuc2lvbiwgcnRsID8gUlRMIDogTFRSLCBkaXJlY3Rpb25hbE92ZXJyaWRlKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcApp
bmRleCA4NTEyMDNjNDRlYjVlOTZiMTgzYzA1MzkwOWVkZDAxOWJjMmMzN2ZhLi43NDI3ZjExOGFi
ZjRlMjlmZTU0MWE1Y2IwZDU3MjE0ZDc4NzUzMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVu
dVdpbi5jcHAKQEAgLTExNiw3ICsxMTYsOSBAQCB2b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0
Zm9ybURhdGEoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcGFnZUNvb3JkaW5hdGVzLCBQbAogCiAg
ICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGl0ZW1UZXh0Lmxlbmd0aCgpOwogICAgICAgICBjb25z
dCBVQ2hhciogc3RyaW5nID0gaXRlbVRleHQuY2hhcmFjdGVycygpOwotICAgICAgICBUZXh0UnVu
IHRleHRSdW4oc3RyaW5nLCBsZW5ndGgsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWls
aW5nRXhwYW5zaW9uLCBpdGVtVGV4dC5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFdURjo6
VW5pY29kZTo6UmlnaHRUb0xlZnQpOworICAgICAgICAvLyBGSVhNRTogZGVmYXVsdFdyaXRpbmdE
aXJlY3Rpb24gc2hvdWxkIHJldHVybiBhIFRleHREaXJlY3Rpb24gbm90IGEgVW5pY29kZTo6RGly
ZWN0aW9uLgorICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IGl0ZW1UZXh0LmRlZmF1
bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdCA/IFJUTCA6
IExUUjsKKyAgICAgICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBmYWxzZSwgMCwg
MCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgZGlyZWN0aW9uKTsKIAogICAgICAg
ICBub3RTZWxlY3RlZEJhY2tpbmdTdG9yZUNvbnRleHQtPnNldEZpbGxDb2xvcihvcHRpb25UZXh0
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBzZWxlY3RlZEJhY2tpbmdTdG9y
ZUNvbnRleHQtPnNldEZpbGxDb2xvcihhY3RpdmVPcHRpb25UZXh0Q29sb3IsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>