<?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>35611</bug_id>
          
          <creation_ts>2010-03-02 14:45:25 -0800</creation_ts>
          <short_desc>Implement and test new framebuffer object attachment behavior</short_desc>
          <delta_ts>2010-04-02 13:03:19 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>195252</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-03-02 14:45:25 -0800</bug_when>
    <thetext>The new framebuffer object attachment behavior in the WebGL spec needs to be implemented and tested. In particular:

 - The new DEPTH_STENCIL and DEPTH_STENCIL_ATTACHMENT enums need to be hooked up
 - The new verification of the renderbuffer&apos;s internal format during framebufferRenderbuffer calls needs to be implemented
 - The new verification that illegal combinations of renderbuffers raise INVALID_OPERATION from framebufferRenderbuffer needs to be implemented

All of these need tests as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199274</commentid>
    <comment_count>1</comment_count>
      <attachid>50648</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-12 18:04:45 -0800</bug_when>
    <thetext>Created attachment 50648
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199276</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-12 18:06:39 -0800</bug_when>
    <thetext>Attachment 50648 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/html/canvas/WebGLRenderingContext.cpp:1226:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199277</commentid>
    <comment_count>3</comment_count>
      <attachid>50649</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-12 18:12:01 -0800</bug_when>
    <thetext>Created attachment 50649
fixed style issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199935</commentid>
    <comment_count>4</comment_count>
      <attachid>50649</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-03-15 17:47:00 -0700</bug_when>
    <thetext>Comment on attachment 50649
fixed style issue

This looks very good. A couple of minor comments, which from my standpoint aren&apos;t necessary to address in this initial patch. First, in calls like WebGLRenderingContext::framebufferRenderbuffer, consider passing DEPTH_STENCIL_ATTACHMENT into the GraphicsContext3D and letting it decide how it wants to dispatch it. This might help in future implementations on top of OpenGL 3 where the DEPTH_STENCIL attachment point actually exists. Second, in the test case, calls like shouldBe(&quot;gl.getError() == gl.NO_ERROR&quot;, &quot;true&quot;) can be better written shouldBe(&quot;gl.getError()&quot;, &quot;gl.NO_ERROR&quot;). But again this looks very good and well tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200528</commentid>
    <comment_count>5</comment_count>
      <attachid>50855</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-16 17:24:39 -0700</bug_when>
    <thetext>Created attachment 50855
revised patch: responding to Ken Russell&apos;s review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200536</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-03-16 17:34:49 -0700</bug_when>
    <thetext>We need to address http://bugs.webkit.org/show_bug.cgi?id=36194 before considering committing this or any additional WebGL changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200554</commentid>
    <comment_count>7</comment_count>
      <attachid>50864</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-16 18:19:13 -0700</bug_when>
    <thetext>Created attachment 50864
revised patch : responding to Ken Russell&apos;s review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203730</commentid>
    <comment_count>8</comment_count>
      <attachid>51580</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-24 19:12:20 -0700</bug_when>
    <thetext>Created attachment 51580
revised patch: made changes after Ken Russell&apos;s refac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206260</commentid>
    <comment_count>9</comment_count>
      <attachid>51580</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-03-30 16:52:26 -0700</bug_when>
    <thetext>Comment on attachment 51580
revised patch: made changes after Ken Russell&apos;s refac

Looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206888</commentid>
    <comment_count>10</comment_count>
      <attachid>52236</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-31 19:04:20 -0700</bug_when>
    <thetext>Created attachment 52236
revised patch: skip the framebuffer-object-attachment.html test on snow leopard

Because the bot does not support EXT_packed_depth_stencil, which is required by WebGL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206890</commentid>
    <comment_count>11</comment_count>
      <attachid>52236</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-03-31 19:06:14 -0700</bug_when>
    <thetext>Comment on attachment 52236
revised patch: skip the framebuffer-object-attachment.html test on snow leopard

&gt; Index: LayoutTests/platform/mac-snowleopard/Skipped
&gt; ===================================================================
&gt; --- LayoutTests/platform/mac-snowleopard/Skipped	(revision 56464)
&gt; +++ LayoutTests/platform/mac-snowleopard/Skipped	(working copy)
&gt; @@ -110,3 +110,7 @@ fast/forms/search-event-delay.html
&gt;  # computed style on HW transforms are wrong in SL, but
&gt;  # correct on other platforms.
&gt;  animations/fill-mode-transform.html
&gt; +
&gt; +# Snow Leopard bot does not support EXT_packed_depth_stencil, which is required by WebGL.
&gt; +# https://bugs.webkit.org/show_bug.cgi?id=51580

This is a bogus bug ID.

&gt; +fast/canvas/webgl/framebuffer-object-attachment.html
&gt; \ No newline at end of file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206897</commentid>
    <comment_count>12</comment_count>
      <attachid>52238</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-31 19:10:59 -0700</bug_when>
    <thetext>Created attachment 52238
revised patch: fixed the bogus bug ID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206898</commentid>
    <comment_count>13</comment_count>
      <attachid>52239</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-31 19:12:18 -0700</bug_when>
    <thetext>Created attachment 52239
revised patch: fixed the bogus bug ID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206901</commentid>
    <comment_count>14</comment_count>
      <attachid>52239</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-03-31 19:24:42 -0700</bug_when>
    <thetext>Comment on attachment 52239
revised patch: fixed the bogus bug ID.

&gt; Index: LayoutTests/platform/mac-snowleopard/Skipped
&gt; ===================================================================
&gt; --- LayoutTests/platform/mac-snowleopard/Skipped	(revision 56464)
&gt; +++ LayoutTests/platform/mac-snowleopard/Skipped	(working copy)
&gt; @@ -110,3 +110,7 @@ fast/forms/search-event-delay.html
&gt;  # computed style on HW transforms are wrong in SL, but
&gt;  # correct on other platforms.
&gt;  animations/fill-mode-transform.html
&gt; +
&gt; +# Snow Leopard bot does not support EXT_packed_depth_stencil, which is required by WebGL.
&gt; +# https://bugs.webkit.org/show_bug.cgi?id=35611
&gt; +fast/canvas/webgl/framebuffer-object-attachment.html

I&apos;m not sure what the preferred style is in these skipped lists, but the last time I modified them, the reviewer wanted a new bug filed which detailed the plan for getting the test out of the skipped list. In this case, it would be to upgrade either the OS or the graphics hardware on the Snow Leopard bot so that it is capable of running WebGL properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206921</commentid>
    <comment_count>15</comment_count>
      <attachid>52248</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-31 20:13:37 -0700</bug_when>
    <thetext>Created attachment 52248
revised patch

Created a new bug for snow leopard bot
https://bugs.webkit.org/show_bug.cgi?id=36925

The skipped test comment is pointing to the created bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206923</commentid>
    <comment_count>16</comment_count>
      <attachid>52249</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-31 20:23:59 -0700</bug_when>
    <thetext>Created attachment 52249
revised patch: resolving a conflict</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207412</commentid>
    <comment_count>17</comment_count>
      <attachid>52249</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-01 14:36:43 -0700</bug_when>
    <thetext>Comment on attachment 52249
revised patch: resolving a conflict

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207981</commentid>
    <comment_count>18</comment_count>
      <attachid>52249</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-02 11:54:36 -0700</bug_when>
    <thetext>Comment on attachment 52249
revised patch: resolving a conflict

Looks good as far as I can tell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208020</commentid>
    <comment_count>19</comment_count>
      <attachid>52249</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-02 13:03:13 -0700</bug_when>
    <thetext>Comment on attachment 52249
revised patch: resolving a conflict

Clearing flags on attachment: 52249

Committed r57018: &lt;http://trac.webkit.org/changeset/57018&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208021</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-02 13:03:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50648</attachid>
            <date>2010-03-12 18:04:45 -0800</date>
            <delta_ts>2010-03-12 18:12:01 -0800</delta_ts>
            <desc>patch</desc>
            <filename>fbo.patch</filename>
            <type>text/plain</type>
            <size>25746</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTk0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMDMtMTIgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9yLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNo
bWVudC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDog
S2VlcCB0cmFjayBvZiBhdHRhY2hlZCBzdGVuY2lsL2RlcHRoIHJlbmRlcmJ1ZmZlcnMgaW4gV2Vi
R0xGcmFtZWJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OldlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0SXNB
dHRhY2hlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOiBLZWVw
IHRyYWNrIG9mIGF0dGFjaGVkIHN0ZW5jaWwvZGVwdGggcmVuZGVyYnVmZmVycyBpbiBXZWJHTEZy
YW1lYnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6aXNEZXB0aEF0
dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzU3RlbmNpbEF0
dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzRGVwdGhTdGVu
Y2lsQXR0YWNoZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNw
cDogS2VlcCB0cmFjayBvZiBpbnRlcm5hbGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyYnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJidWZmZXIuaDogS2VlcCB0cmFjayBvZiBpbnRlcm5hbGZvcm1hdC4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyYnVmZmVyOjpzZXRJbnRlcm5hbGZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1ZmZlcjo6Z2V0SW50ZXJuYWxmb3JtYXQpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKTog
RGV0ZWN0IHN0ZW5jaWwvZGVwdGggYnVmZmVyIGNvbmZsaWN0cy4KKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KTogSGFuZGxpbmcgREVQVEhfU1RFTkNJTCBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIpOiBHZXQgY29ycmVjdCBX
ZWJHTCBpbnRlcm5hbGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6IERldGVjdCBpbGxlZ2FsIGVudW1zLgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGw6IEFkZCBERVBUSF9TVEVO
Q0lMIGVudW1zLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6IEFkZCBERVBUSF9TVEVOQ0lMIGVudW1zLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6Oik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLmNwcDogTWFwIHRvIGNvcnJlY3QgREVQVEhfU1RFTkNJTCBmb3JtYXQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisK
IDIwMTAtMDMtMTIgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZy
YW1lYnVmZmVyLmNwcAkocmV2aXNpb24gNTU5NDUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMjggQEAgUGFz
c1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTEZyYW1lYgogCiBXZWJHTEZyYW1lYnVmZmVy
OjpXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4KQogICAgIDogQ2Fu
dmFzT2JqZWN0KGN0eCkKKyAgICAsIG1faXNEZXB0aEF0dGFjaGVkKGZhbHNlKQorICAgICwgbV9p
c1N0ZW5jaWxBdHRhY2hlZChmYWxzZSkKKyAgICAsIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZChm
YWxzZSkKIHsKICAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5j
cmVhdGVGcmFtZWJ1ZmZlcigpKTsKIH0KIAordm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpzZXRJc0F0
dGFjaGVkKHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgYm9vbCBpc0F0dGFjaGVkKQoreworICAg
IHN3aXRjaCAoYXR0YWNobWVudCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0FUVEFDSE1FTlQ6CisgICAgICAgIG1faXNEZXB0aEF0dGFjaGVkID0gaXNBdHRhY2hlZDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hN
RU5UOgorICAgICAgICBtX2lzU3RlbmNpbEF0dGFjaGVkID0gaXNBdHRhY2hlZDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5UOgorICAgICAgICBtX2lzRGVwdGhTdGVuY2lsQXR0YWNoZWQgPSBpc0F0dGFjaGVkOworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6X2RlbGV0ZU9i
amVjdChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0KCktPmdyYXBoaWNz
Q29udGV4dDNEKCktPmRlbGV0ZUZyYW1lYnVmZmVyKG9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAkocmV2aXNpb24gNTU5NDUpCisrKyBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4
LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+V2ViR0xGcmFtZWJ1
ZmZlcigpIHsgZGVsZXRlT2JqZWN0KCk7IH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsK
KworICAgICAgICB2b2lkIHNldElzQXR0YWNoZWQodW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBi
b29sIGlzQXR0YWNoZWQpOworCisgICAgICAgIGJvb2wgaXNEZXB0aEF0dGFjaGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0RlcHRoQXR0YWNoZWQ7IH0KKyAgICAgICAgYm9vbCBpc1N0ZW5jaWxBdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdGVuY2lsQXR0YWNoZWQ7IH0KKyAgICAgICAgYm9v
bCBpc0RlcHRoU3RlbmNpbEF0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlcHRoU3RlbmNp
bEF0dGFjaGVkOyB9CiAgICAgICAgIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgV2ViR0xGcmFt
ZWJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgcHJpdmF0ZToK
KyAgICAgICAgYm9vbCBtX2lzRGVwdGhBdHRhY2hlZDsKKyAgICAgICAgYm9vbCBtX2lzU3RlbmNp
bEF0dGFjaGVkOworICAgICAgICBib29sIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZDsKICAgICB9
OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJKHJldmlzaW9uIDU1OTQ1KQorKysgV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEyICs0
NCwxNCBAQCBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlCiAKIFdlYkdM
UmVuZGVyYnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0
eCkKICAgICA6IENhbnZhc09iamVjdChjdHgpCisgICAgLCBtX2ludGVybmFsZm9ybWF0KEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBNCkKIHsKICAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGlj
c0NvbnRleHQzRCgpLT5jcmVhdGVSZW5kZXJidWZmZXIoKSk7CiB9CiAKIFdlYkdMUmVuZGVyYnVm
ZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgUGxhdGZv
cm0zRE9iamVjdCBvYmopCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pbnRlcm5h
bGZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQpCiB7CiAgICAgc2V0T2JqZWN0KG9iaiwg
ZmFsc2UpOwogfQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaAko
cmV2aXNpb24gNTU5NDUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDExICs0MywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgY29uc2lkZXIgY2Fub25pY2FsaXppbmcgdGhlc2Ug
b2JqZWN0cwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gY3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVy
KTsKIAorICAgICAgICB2b2lkIHNldEludGVybmFsZm9ybWF0KHVuc2lnbmVkIGxvbmcgaW50ZXJu
YWxmb3JtYXQpIHsgbV9pbnRlcm5hbGZvcm1hdCA9IGludGVybmFsZm9ybWF0OyB9CisgICAgICAg
IHVuc2lnbmVkIGxvbmcgZ2V0SW50ZXJuYWxmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2ludGVy
bmFsZm9ybWF0OyB9CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYkdMUmVuZGVyYnVmZmVy
KFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgICAgICBXZWJHTFJlbmRlcmJ1ZmZlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0KTsKICAgICAgICAgCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX2ludGVybmFsZm9ybWF0OwogICAgIH07CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1NTk0NSkKKysrIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzkwLDcgKzc5MCw1MCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJS
CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2NvbnRl
eHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVm
ZmVydGFyZ2V0LCBidWZmZXIpOworICAgIGlmIChidWZmZXItPm9iamVjdCgpKSB7CisgICAgICAg
IGJvb2wgaXNDb25mbGljdGVkID0gZmFsc2U7CisgICAgICAgIGJvb2wgaXNEZXB0aE9yU3RlbmNp
bCA9IHRydWU7CisgICAgICAgIHN3aXRjaCAoYXR0YWNobWVudCkgeworICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgaWYgKG1fZnJh
bWVidWZmZXJCaW5kaW5nLT5pc0RlcHRoU3RlbmNpbEF0dGFjaGVkKCkgfHwgbV9mcmFtZWJ1ZmZl
ckJpbmRpbmctPmlzU3RlbmNpbEF0dGFjaGVkKCkpCisgICAgICAgICAgICAgICAgaXNDb25mbGlj
dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChidWZmZXItPmdldEludGVybmFsZm9ybWF0KCkg
IT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2KQorICAgICAgICAgICAgICAg
IGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgaWYgKG1f
ZnJhbWVidWZmZXJCaW5kaW5nLT5pc0RlcHRoU3RlbmNpbEF0dGFjaGVkKCkgfHwgbV9mcmFtZWJ1
ZmZlckJpbmRpbmctPmlzRGVwdGhBdHRhY2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxp
Y3RlZCA9IHRydWU7CisgICAgICAgICAgICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgp
ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0lOREVYOCkKKyAgICAgICAgICAgICAgICBp
c0NvbmZsaWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlm
IChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNEZXB0aEF0dGFjaGVkKCkgfHwgbV9mcmFtZWJ1ZmZl
ckJpbmRpbmctPmlzU3RlbmNpbEF0dGFjaGVkKCkpCisgICAgICAgICAgICAgICAgaXNDb25mbGlj
dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChidWZmZXItPmdldEludGVybmFsZm9ybWF0KCkg
IT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUwpCisgICAgICAgICAgICAgICAgaXND
b25mbGljdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgaXNEZXB0aE9yU3RlbmNpbCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAg
IGlmIChpc0NvbmZsaWN0ZWQpIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNEZXB0aE9yU3RlbmNpbCkKKyAgICAg
ICAgICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nLT5zZXRJc0F0dGFjaGVkKGF0dGFjaG1lbnQsIHRy
dWUpOworICAgIH0gZWxzZSB7IC8vIERldGFjaAorICAgICAgICBzd2l0Y2ggKGF0dGFjaG1lbnQp
IHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVDoKKyAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAg
ICAgICAgICBtX2ZyYW1lYnVmZmVyQmluZGluZy0+c2V0SXNBdHRhY2hlZChhdHRhY2htZW50LCBm
YWxzZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGF0dGFjaG1lbnQgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkgeworICAgICAgICBtX2NvbnRleHQt
PmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKKyAgICAgICAgbV9jb250
ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIEdyYXBoaWNzQ29udGV4dDNEOjpT
VEVOQ0lMX0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0
dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKICAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCkBAIC04OTcsNyArOTQwLDggQEAgV2ViR0xHZXRJbmZv
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RgogICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSCiAgICAgICAgIHx8IChhdHRhY2htZW50ICE9IEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMAogICAgICAgICAgICAgJiYgYXR0YWNobWVudCAh
PSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVAotICAgICAgICAgICAgJiYgYXR0
YWNobWVudCAhPSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UKQorICAgICAg
ICAgICAgJiYgYXR0YWNobWVudCAhPSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hN
RU5UCisgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBU
SF9TVEVOQ0lMX0FUVEFDSE1FTlQpCiAgICAgICAgIHx8IChwbmFtZSAhPSBHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRQogICAgICAgICAgICAgJiYg
cG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X05BTUUKICAgICAgICAgICAgICYmIHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwKQEAgLTkwNiw2ICs5NTAsOSBAQCBXZWJHTEdl
dEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGCiAgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oKTsKICAgICB9CiAKKyAgICBpZiAoYXR0YWNobWVudCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQorICAgICAgICBhdHRhY2htZW50ID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxfQVRUQUNITUVOVCwg
ZWl0aGVyIHdvcmtzLgorCiAgICAgaWYgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSB7CiAgICAgICAgIFdlYkdMU3RhdGVSZXN0
b3Jlcih0aGlzLCBmYWxzZSk7CiAgICAgICAgIGludCB2YWx1ZTsKQEAgLTExNzYsOCArMTIyMywx
MiBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSCiAgICAgICAgIG1f
Y29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVl
KTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkp
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JN
QVQ6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0
LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOworICAgICAgICBpZiAobV9yZW5kZXJidWZmZXJCaW5k
aW5nKQorICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX3JlbmRlcmJ1ZmZlckJpbmRp
bmctPmdldEludGVybmFsZm9ybWF0KCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICAgICAgfQog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
KTsKQEAgLTE1NTksOCArMTYxMCwyMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVs
ZWFzZVNoYWRlCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJidWZmZXJTdG9y
YWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1
bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKIHsKLSAgICBtX2NvbnRl
eHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKKyAgICBzd2l0Y2gg
KGludGVybmFsZm9ybWF0KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09N
UE9ORU5UMTY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQ6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6UkdCNV9BMToKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0I1NjU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9JTkRFWDg6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTDoKKyAgICAgICAgbV9jb250ZXh0
LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpOworICAgICAgICBpZiAobV9yZW5kZXJidWZmZXJCaW5kaW5nKQorICAgICAgICAgICAgbV9y
ZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbGZvcm1hdChpbnRlcm5hbGZvcm1hdCk7Cisg
ICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAgfQogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6c2FtcGxlQ292ZXJhZ2UoZG91YmxlIHZhbHVlLCBib29sIGludmVydCkKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwJKHJl
dmlzaW9uIDU1OTQ1KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNiArNDIzLDcgQEAgbW9kdWxlIGh0bWwgewog
ICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfQ09NUE9ORU5UMTYgICAgICAgICAgICAg
ID0gMHg4MUE1OwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgU1RFTkNJTF9JTkRFWCAgICAg
ICAgICAgICAgICAgID0gMHgxOTAxOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgU1RFTkNJ
TF9JTkRFWDggICAgICAgICAgICAgICAgID0gMHg4RDQ4OworICAgICAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAgICAgID0gMHg4NEY5OwogCiAgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGludCBSRU5ERVJCVUZGRVJfV0lEVEggICAgICAgICAgICAgPSAweDhE
NDI7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBSRU5ERVJCVUZGRVJfSEVJR0hUICAgICAg
ICAgICAgPSAweDhENDM7CkBAIC00NDIsNiArNDQzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAg
ICBjb25zdCB1bnNpZ25lZCBpbnQgQ09MT1JfQVRUQUNITUVOVDAgICAgICAgICAgICAgID0gMHg4
Q0UwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfQVRUQUNITUVOVCAgICAgICAg
ICAgICAgID0gMHg4RDAwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgU1RFTkNJTF9BVFRB
Q0hNRU5UICAgICAgICAgICAgID0gMHg4RDIwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgID0gMHg4MjFBOwogCiAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGludCBOT05FICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOwogCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZp
c2lvbiA1NTk0NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgIERFUFRIX0NPTVBPTkVOVDE2ID0gMHg4MUE1LAogICAgICAgICAgICAg
U1RFTkNJTF9JTkRFWCA9IDB4MTkwMSwKICAgICAgICAgICAgIFNURU5DSUxfSU5ERVg4ID0gMHg4
RDQ4LAorICAgICAgICAgICAgREVQVEhfU1RFTkNJTCA9IDB4ODRGOSwKICAgICAgICAgICAgIFJF
TkRFUkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKICAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9IRUlH
SFQgPSAweDhENDMsCiAgICAgICAgICAgICBSRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUID0g
MHg4RDQ0LApAQCAtMzc4LDYgKzM3OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
ICAgIENPTE9SX0FUVEFDSE1FTlQwID0gMHg4Q0UwLAogICAgICAgICAgICAgREVQVEhfQVRUQUNI
TUVOVCA9IDB4OEQwMCwKICAgICAgICAgICAgIFNURU5DSUxfQVRUQUNITUVOVCA9IDB4OEQyMCwK
KyAgICAgICAgICAgIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCA9IDB4ODIxQSwKICAgICAgICAg
ICAgIE5PTkUgPSAwLAogICAgICAgICAgICAgRlJBTUVCVUZGRVJfQ09NUExFVEUgPSAweDhDRDUs
CiAgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQgPSAweDhDRDYs
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1h
Yy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1NTk0NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjkxLDYgKzY5MSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWxlYXNlU2hhZGVyQ29t
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdp
ZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4
dE9iaik7CisgICAgaWYgKGludGVybmFsZm9ybWF0ID09IERFUFRIX1NURU5DSUwpCisgICAgICAg
IGludGVybmFsZm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9FWFQ7CisgICAgZWxzZSBpZiAo
aW50ZXJuYWxmb3JtYXQgPT0gREVQVEhfQ09NUE9ORU5UMTYpCisgICAgICAgIGludGVybmFsZm9y
bWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UOwogICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlRVhU
KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU1OTQ2KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTAzLTEyICBaaGVueWFvIE1vICA8em1v
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IGFuZCB0ZXN0IG5ldyBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVu
dCBiZWhhdmlvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM1NjExCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXIt
b2JqZWN0LWF0dGFjaG1lbnQuaHRtbAorCisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNE
LmNwcDogTWFwIHRvIGNvcnJlY3QgREVQVEhfU1RFTkNJTCBmb3JtYXQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisKIDIwMTAtMDMt
MTIgIEdhcnJldCBLZWxseSAgPGdka0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZWl2aWV3
ZWQuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2
aXNpb24gNTU5NDUpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTgxNyw3ICsxODE3LDE4IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb20KIHsKIH0KIAotR0xfU0FNRV9NRVRIT0RfNChSZW5kZXJi
dWZmZXJTdG9yYWdlRVhULCByZW5kZXJidWZmZXJTdG9yYWdlLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSh1bnNpZ25lZCBsb25nIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbnRl
cm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgaWYgKGludGVybmFsZm9ybWF0ID09IERFUFRIX1NURU5DSUwpCisgICAgICAgIGlu
dGVybmFsZm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9FWFQ7CisgICAgZWxzZSBpZiAoaW50
ZXJuYWxmb3JtYXQgPT0gREVQVEhfQ09NUE9ORU5UMTYpCisgICAgICAgIGludGVybmFsZm9ybWF0
ID0gR0xfREVQVEhfQ09NUE9ORU5UOworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCh0YXJn
ZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKK30KIAogR0xfU0FNRV9NRVRIT0Rf
MihTYW1wbGVDb3ZlcmFnZSwgc2FtcGxlQ292ZXJhZ2UsIGRvdWJsZSwgYm9vbCkKIApJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNTU5NDYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMy0xMiAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBhbmQgdGVzdCBuZXcgZnJhbWVidWZmZXIgb2JqZWN0IGF0dGFjaG1lbnQgYmVoYXZp
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTYx
MQorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFj
aG1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZCwgdGVzdCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNo
bWVudCBiZWhhdmlvci4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1v
YmplY3QtYXR0YWNobWVudC5odG1sOiBBZGRlZCwgZnJhbWVidWZmZXIgb2JqZWN0IGF0dGFjaG1l
bnQgYmVoYXZpb3IuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2ds
LW9iamVjdC1nZXQtY2FsbHMuanM6IERFUFRIX0NPTVBPTkVOVCBpcyBubyBsb25nZXIgYSB2YWxp
ZCBpbnB1dCwgdXNlIERFUFRIX0NPTVBPTkVOVDE2IGluc3RlYWQuCisKIDIwMTAtMDMtMTIgIEVu
cmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1
ZmZlci1vYmplY3QtYXR0YWNobWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
ZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY3IEBACitUZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2
aW9ycworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0NyZWF0ZSByZW5kZXJidWZmZXJz
CitQQVNTIGdsID0gY3JlYXRlM0RDb250ZXh0KCkgaXMgbm9uLW51bGwuCitQQVNTIGRlcHRoQnVm
ZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVy
cm9yKCkgPT0gZ2wuTk9fRVJST1IgaXMgdHJ1ZQorUEFTUyBzdGVuY2lsQnVmZmVyID0gZ2wuY3Jl
YXRlUmVuZGVyYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgPT0gZ2wu
Tk9fRVJST1IgaXMgdHJ1ZQorUEFTUyBkZXB0aFN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5k
ZXJidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSA9PSBnbC5OT19FUlJP
UiBpcyB0cnVlCitBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfQVRUQUNITUVOVAorUEFTUyBmYm8g
PSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigp
IGlzIGdsLk5PX0VSUk9SCitBdHRhY2ggZGVwdGggdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UCitQ
QVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdl
dEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aCB1c2luZyBERVBU
SF9TVEVOQ0lMX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBp
cyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgor
QXR0YWNoIHN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wu
Tk9fRVJST1IKK0F0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQKK1BBU1MgZmJv
ID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIHN0ZW5jaWwgdXNpbmcgREVQVEhfU1RF
TkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9u
LW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFj
aCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9
IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkg
aXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfQVRUQUNITUVO
VAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggZGVwdGhTdGVuY2ls
IHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZl
cigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFU
SU9OCitBdHRhY2ggZGVwdGgsIHRoZW4gc3RlbmNpbCwgY2F1c2luZyBjb25mbGljdAorUEFTUyBm
Ym8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJv
cigpID09IGdsLk5PX0VSUk9SIGlzIHRydWUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSA9PSBnbC5JTlZB
TElEX09QRVJBVElPTiBpcyB0cnVlCitBdHRhY2ggc3RlbmNpbCwgdGhlbiBkZXB0aCwgY2F1c2lu
ZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxs
LgorUEFTUyBnbC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9SIGlzIHRydWUKK1BBU1MgZ2wuZ2V0
RXJyb3IoKSA9PSBnbC5JTlZBTElEX09QRVJBVElPTiBpcyB0cnVlCitBdHRhY2ggZGVwdGgsIHRo
ZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgPT0gZ2wuTk9fRVJS
T1IgaXMgdHJ1ZQorUEFTUyBnbC5nZXRFcnJvcigpID09IGdsLklOVkFMSURfT1BFUkFUSU9OIGlz
IHRydWUKK0F0dGFjaCBkZXB0aFN0ZW5jaWwsIHRoZW4gZGVwdGgsIGNhdXNpbmcgY29uZmxpY3QK
K1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wu
Z2V0RXJyb3IoKSA9PSBnbC5OT19FUlJPUiBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgPT0g
Z2wuSU5WQUxJRF9PUEVSQVRJT04gaXMgdHJ1ZQorQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVwdGhT
dGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVy
KCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgPT0gZ2wuTk9fRVJST1IgaXMgdHJ1
ZQorUEFTUyBnbC5nZXRFcnJvcigpID09IGdsLklOVkFMSURfT1BFUkFUSU9OIGlzIHRydWUKK0F0
dGFjaCBkZXB0aFN0ZW5jaWwsIHRoZW4gc3RlbmNpbCwgY2F1c2luZyBjb25mbGljdAorUEFTUyBm
Ym8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJv
cigpID09IGdsLk5PX0VSUk9SIGlzIHRydWUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSA9PSBnbC5JTlZB
TElEX09QRVJBVElPTiBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJh
bWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXIt
b2JqZWN0LWF0dGFjaG1lbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MyBAQAorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCit2YXIgZ2w7
Cit2YXIgZmJvOwordmFyIGRlcHRoQnVmZmVyOwordmFyIHN0ZW5jaWxCdWZmZXI7Cit2YXIgZGVw
dGhTdGVuY2lsQnVmZmVyOwordmFyIHdpZHRoID0gMjsKK3ZhciBoZWlnaHQgPSAyOworCitmdW5j
dGlvbiB0ZXN0QXR0YWNobWVudChhdHRhY2htZW50LCBidWZmZXIsIGlzQ29uZmxpY3RlZCkKK3sK
KyAgICBzaG91bGRCZU5vbk51bGwoImZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKKyAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIGdsLlJFTkRFUkJV
RkZFUiwgYnVmZmVyKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsIGlzQ29uZmxpY3Rl
ZCA/ICJnbC5JTlZBTElEX09QRVJBVElPTiIgOiAiZ2wuTk9fRVJST1IiKTsKK30KKworZnVuY3Rp
b24gdGVzdEF0dGFjaG1lbnRzKGF0dGFjaG1lbnQwLCBidWZmZXIwLCBhdHRhY2htZW50MSwgYnVm
ZmVyMSwgaXNDb25mbGljdGVkKQoreworICAgIHNob3VsZEJlTm9uTnVsbCgiZmJvID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKSIpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZF
UiwgZmJvKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
YXR0YWNobWVudDAsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyMCk7CisgICAgc2hvdWxkQmUoImds
LmdldEVycm9yKCkgPT0gZ2wuTk9fRVJST1IiLCAidHJ1ZSIpOworICAgIGdsLmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBhdHRhY2htZW50MSwgZ2wuUkVOREVSQlVGRkVS
LCBidWZmZXIxKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSA9PSBnbC5JTlZBTElEX09Q
RVJBVElPTiIsIGlzQ29uZmxpY3RlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlvcnMiKTsKKwor
ZGVidWcoIkNyZWF0ZSByZW5kZXJidWZmZXJzIik7CitzaG91bGRCZU5vbk51bGwoImdsID0gY3Jl
YXRlM0RDb250ZXh0KCkiKTsKK3Nob3VsZEJlTm9uTnVsbCgiZGVwdGhCdWZmZXIgPSBnbC5jcmVh
dGVSZW5kZXJidWZmZXIoKSIpOworZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIs
IGRlcHRoQnVmZmVyKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBn
bC5ERVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7CitzaG91bGRCZSgiZ2wuZ2V0RXJy
b3IoKSA9PSBnbC5OT19FUlJPUiIsICJ0cnVlIik7CitzaG91bGRCZU5vbk51bGwoInN0ZW5jaWxC
dWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOworZ2wuYmluZFJlbmRlcmJ1ZmZlcihn
bC5SRU5ERVJCVUZGRVIsIHN0ZW5jaWxCdWZmZXIpOworZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShn
bC5SRU5ERVJCVUZGRVIsIGdsLlNURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsKK3Nob3Vs
ZEJlKCJnbC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9SIiwgInRydWUiKTsKK3Nob3VsZEJlTm9u
TnVsbCgiZGVwdGhTdGVuY2lsQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkiKTsKK2ds
LmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBkZXB0aFN0ZW5jaWxCdWZmZXIpOwor
Z2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX1NURU5DSUws
IHdpZHRoLCBoZWlnaHQpOworc2hvdWxkQmUoImdsLmdldEVycm9yKCkgPT0gZ2wuTk9fRVJST1Ii
LCAidHJ1ZSIpOworCitkZWJ1ZygiQXR0YWNoIGRlcHRoIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQi
KTsKK3Rlc3RBdHRhY2htZW50KGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCBmYWxz
ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVCIpOwordGVz
dEF0dGFjaG1lbnQoZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgdHJ1ZSk7Citk
ZWJ1ZygiQXR0YWNoIGRlcHRoIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCIpOwordGVz
dEF0dGFjaG1lbnQoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgdHJ1
ZSk7CitkZWJ1ZygiQXR0YWNoIHN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0
ZXN0QXR0YWNobWVudChnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIGZhbHNl
KTsKK2RlYnVnKCJBdHRhY2ggc3RlbmNpbCB1c2luZyBERVBUSF9BVFRBQ0hNRU5UIik7Cit0ZXN0
QXR0YWNobWVudChnbC5ERVBUSF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVyLCB0cnVlKTsKK2Rl
YnVnKCJBdHRhY2ggc3RlbmNpbCB1c2luZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rl
c3RBdHRhY2htZW50KGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwg
dHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoU3RlbmNpbCB1c2luZyBERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwg
ZGVwdGhTdGVuY2lsQnVmZmVyLCBmYWxzZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoU3RlbmNpbCB1
c2luZyBERVBUSF9BVFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVudChnbC5ERVBUSF9BVFRBQ0hN
RU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5j
aWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVudChnbC5TVEVOQ0lM
X0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CisKK2RlYnVnKCJBdHRhY2gg
ZGVwdGgsIHRoZW4gc3RlbmNpbCwgY2F1c2luZyBjb25mbGljdCIpOwordGVzdEF0dGFjaG1lbnRz
KGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQs
IHN0ZW5jaWxCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRo
LCBjYXVzaW5nIGNvbmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuU1RFTkNJTF9BVFRBQ0hN
RU5ULCBzdGVuY2lsQnVmZmVyLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgdHJ1
ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoLCB0aGVuIGRlcHRoU3RlbmNpbCwgY2F1c2luZyBjb25m
bGljdCIpOwordGVzdEF0dGFjaG1lbnRzKGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVy
LCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7
CitkZWJ1ZygiQXR0YWNoIGRlcHRoU3RlbmNpbCwgdGhlbiBkZXB0aCwgY2F1c2luZyBjb25mbGlj
dCIpOwordGVzdEF0dGFjaG1lbnRzKGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhT
dGVuY2lsQnVmZmVyLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgdHJ1ZSk7Citk
ZWJ1ZygiQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0
Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGds
LkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVlKTsKK2Rl
YnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsLCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3Qi
KTsKK3Rlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoU3Rl
bmNpbEJ1ZmZlciwgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVyLCB0cnVlKTsK
Kworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMv
Z2wtb2JqZWN0LWdldC1jYWxscy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdldC1jYWxscy5qcwkocmV2aXNpb24g
NTU5NDUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wt
b2JqZWN0LWdldC1jYWxscy5qcwkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCB2YXIg
cmVuZGVyYnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyCiBzaG91bGRCZSgnZ2wuZ2V0RXJy
b3IoKScsICcwJyk7CiBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVy
YnVmZmVyKTsKIHNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKLWdsLnJlbmRlcmJ1ZmZl
clN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBUSF9DT01QT05FTlQsIDIsIDIpOworZ2wu
cmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2
LCAyLCAyKTsKIHNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKIGdsLmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5E
RVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CiAvLyBGSVhNRTogb24gc29tZSBtYWNoaW5lcyAoaW4g
cGFydGljdWxhciB0aGUgV2ViS2l0IGNvbW1pdCBib3RzKSB0aGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50649</attachid>
            <date>2010-03-12 18:12:01 -0800</date>
            <delta_ts>2010-03-16 17:24:39 -0700</delta_ts>
            <desc>fixed style issue</desc>
            <filename>fbo.patch</filename>
            <type>text/plain</type>
            <size>25729</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTk0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMDMtMTIgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9yLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNo
bWVudC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDog
S2VlcCB0cmFjayBvZiBhdHRhY2hlZCBzdGVuY2lsL2RlcHRoIHJlbmRlcmJ1ZmZlcnMgaW4gV2Vi
R0xGcmFtZWJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OldlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0SXNB
dHRhY2hlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOiBLZWVw
IHRyYWNrIG9mIGF0dGFjaGVkIHN0ZW5jaWwvZGVwdGggcmVuZGVyYnVmZmVycyBpbiBXZWJHTEZy
YW1lYnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6aXNEZXB0aEF0
dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzU3RlbmNpbEF0
dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzRGVwdGhTdGVu
Y2lsQXR0YWNoZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNw
cDogS2VlcCB0cmFjayBvZiBpbnRlcm5hbGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyYnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJidWZmZXIuaDogS2VlcCB0cmFjayBvZiBpbnRlcm5hbGZvcm1hdC4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyYnVmZmVyOjpzZXRJbnRlcm5hbGZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1ZmZlcjo6Z2V0SW50ZXJuYWxmb3JtYXQpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKTog
RGV0ZWN0IHN0ZW5jaWwvZGVwdGggYnVmZmVyIGNvbmZsaWN0cy4KKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KTogSGFuZGxpbmcgREVQVEhfU1RFTkNJTCBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIpOiBHZXQgY29ycmVjdCBX
ZWJHTCBpbnRlcm5hbGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6IERldGVjdCBpbGxlZ2FsIGVudW1zLgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGw6IEFkZCBERVBUSF9TVEVO
Q0lMIGVudW1zLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6IEFkZCBERVBUSF9TVEVOQ0lMIGVudW1zLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6Oik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLmNwcDogTWFwIHRvIGNvcnJlY3QgREVQVEhfU1RFTkNJTCBmb3JtYXQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisK
IDIwMTAtMDMtMTIgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZy
YW1lYnVmZmVyLmNwcAkocmV2aXNpb24gNTU5NDUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMjggQEAgUGFz
c1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTEZyYW1lYgogCiBXZWJHTEZyYW1lYnVmZmVy
OjpXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4KQogICAgIDogQ2Fu
dmFzT2JqZWN0KGN0eCkKKyAgICAsIG1faXNEZXB0aEF0dGFjaGVkKGZhbHNlKQorICAgICwgbV9p
c1N0ZW5jaWxBdHRhY2hlZChmYWxzZSkKKyAgICAsIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZChm
YWxzZSkKIHsKICAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5j
cmVhdGVGcmFtZWJ1ZmZlcigpKTsKIH0KIAordm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpzZXRJc0F0
dGFjaGVkKHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgYm9vbCBpc0F0dGFjaGVkKQoreworICAg
IHN3aXRjaCAoYXR0YWNobWVudCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0FUVEFDSE1FTlQ6CisgICAgICAgIG1faXNEZXB0aEF0dGFjaGVkID0gaXNBdHRhY2hlZDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hN
RU5UOgorICAgICAgICBtX2lzU3RlbmNpbEF0dGFjaGVkID0gaXNBdHRhY2hlZDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5UOgorICAgICAgICBtX2lzRGVwdGhTdGVuY2lsQXR0YWNoZWQgPSBpc0F0dGFjaGVkOworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6X2RlbGV0ZU9i
amVjdChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0KCktPmdyYXBoaWNz
Q29udGV4dDNEKCktPmRlbGV0ZUZyYW1lYnVmZmVyKG9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAkocmV2aXNpb24gNTU5NDUpCisrKyBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4
LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+V2ViR0xGcmFtZWJ1
ZmZlcigpIHsgZGVsZXRlT2JqZWN0KCk7IH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsK
KworICAgICAgICB2b2lkIHNldElzQXR0YWNoZWQodW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBi
b29sIGlzQXR0YWNoZWQpOworCisgICAgICAgIGJvb2wgaXNEZXB0aEF0dGFjaGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0RlcHRoQXR0YWNoZWQ7IH0KKyAgICAgICAgYm9vbCBpc1N0ZW5jaWxBdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdGVuY2lsQXR0YWNoZWQ7IH0KKyAgICAgICAgYm9v
bCBpc0RlcHRoU3RlbmNpbEF0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlcHRoU3RlbmNp
bEF0dGFjaGVkOyB9CiAgICAgICAgIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgV2ViR0xGcmFt
ZWJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgcHJpdmF0ZToK
KyAgICAgICAgYm9vbCBtX2lzRGVwdGhBdHRhY2hlZDsKKyAgICAgICAgYm9vbCBtX2lzU3RlbmNp
bEF0dGFjaGVkOworICAgICAgICBib29sIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZDsKICAgICB9
OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJKHJldmlzaW9uIDU1OTQ1KQorKysgV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEyICs0
NCwxNCBAQCBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlCiAKIFdlYkdM
UmVuZGVyYnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0
eCkKICAgICA6IENhbnZhc09iamVjdChjdHgpCisgICAgLCBtX2ludGVybmFsZm9ybWF0KEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBNCkKIHsKICAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGlj
c0NvbnRleHQzRCgpLT5jcmVhdGVSZW5kZXJidWZmZXIoKSk7CiB9CiAKIFdlYkdMUmVuZGVyYnVm
ZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgUGxhdGZv
cm0zRE9iamVjdCBvYmopCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pbnRlcm5h
bGZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQpCiB7CiAgICAgc2V0T2JqZWN0KG9iaiwg
ZmFsc2UpOwogfQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaAko
cmV2aXNpb24gNTU5NDUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDExICs0MywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgY29uc2lkZXIgY2Fub25pY2FsaXppbmcgdGhlc2Ug
b2JqZWN0cwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gY3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVy
KTsKIAorICAgICAgICB2b2lkIHNldEludGVybmFsZm9ybWF0KHVuc2lnbmVkIGxvbmcgaW50ZXJu
YWxmb3JtYXQpIHsgbV9pbnRlcm5hbGZvcm1hdCA9IGludGVybmFsZm9ybWF0OyB9CisgICAgICAg
IHVuc2lnbmVkIGxvbmcgZ2V0SW50ZXJuYWxmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2ludGVy
bmFsZm9ybWF0OyB9CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYkdMUmVuZGVyYnVmZmVy
KFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgICAgICBXZWJHTFJlbmRlcmJ1ZmZlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0KTsKICAgICAgICAgCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX2ludGVybmFsZm9ybWF0OwogICAgIH07CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1NTk0NSkKKysrIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzkwLDcgKzc5MCw1MCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJS
CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2NvbnRl
eHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVm
ZmVydGFyZ2V0LCBidWZmZXIpOworICAgIGlmIChidWZmZXItPm9iamVjdCgpKSB7CisgICAgICAg
IGJvb2wgaXNDb25mbGljdGVkID0gZmFsc2U7CisgICAgICAgIGJvb2wgaXNEZXB0aE9yU3RlbmNp
bCA9IHRydWU7CisgICAgICAgIHN3aXRjaCAoYXR0YWNobWVudCkgeworICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgaWYgKG1fZnJh
bWVidWZmZXJCaW5kaW5nLT5pc0RlcHRoU3RlbmNpbEF0dGFjaGVkKCkgfHwgbV9mcmFtZWJ1ZmZl
ckJpbmRpbmctPmlzU3RlbmNpbEF0dGFjaGVkKCkpCisgICAgICAgICAgICAgICAgaXNDb25mbGlj
dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChidWZmZXItPmdldEludGVybmFsZm9ybWF0KCkg
IT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2KQorICAgICAgICAgICAgICAg
IGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgaWYgKG1f
ZnJhbWVidWZmZXJCaW5kaW5nLT5pc0RlcHRoU3RlbmNpbEF0dGFjaGVkKCkgfHwgbV9mcmFtZWJ1
ZmZlckJpbmRpbmctPmlzRGVwdGhBdHRhY2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxp
Y3RlZCA9IHRydWU7CisgICAgICAgICAgICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgp
ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0lOREVYOCkKKyAgICAgICAgICAgICAgICBp
c0NvbmZsaWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlm
IChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNEZXB0aEF0dGFjaGVkKCkgfHwgbV9mcmFtZWJ1ZmZl
ckJpbmRpbmctPmlzU3RlbmNpbEF0dGFjaGVkKCkpCisgICAgICAgICAgICAgICAgaXNDb25mbGlj
dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChidWZmZXItPmdldEludGVybmFsZm9ybWF0KCkg
IT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUwpCisgICAgICAgICAgICAgICAgaXND
b25mbGljdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgaXNEZXB0aE9yU3RlbmNpbCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAg
IGlmIChpc0NvbmZsaWN0ZWQpIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNEZXB0aE9yU3RlbmNpbCkKKyAgICAg
ICAgICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nLT5zZXRJc0F0dGFjaGVkKGF0dGFjaG1lbnQsIHRy
dWUpOworICAgIH0gZWxzZSB7IC8vIERldGFjaAorICAgICAgICBzd2l0Y2ggKGF0dGFjaG1lbnQp
IHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVDoKKyAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAg
ICAgICAgICBtX2ZyYW1lYnVmZmVyQmluZGluZy0+c2V0SXNBdHRhY2hlZChhdHRhY2htZW50LCBm
YWxzZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGF0dGFjaG1lbnQgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkgeworICAgICAgICBtX2NvbnRleHQt
PmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKKyAgICAgICAgbV9jb250
ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIEdyYXBoaWNzQ29udGV4dDNEOjpT
VEVOQ0lMX0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0
dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKICAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCkBAIC04OTcsNyArOTQwLDggQEAgV2ViR0xHZXRJbmZv
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RgogICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSCiAgICAgICAgIHx8IChhdHRhY2htZW50ICE9IEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMAogICAgICAgICAgICAgJiYgYXR0YWNobWVudCAh
PSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVAotICAgICAgICAgICAgJiYgYXR0
YWNobWVudCAhPSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UKQorICAgICAg
ICAgICAgJiYgYXR0YWNobWVudCAhPSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hN
RU5UCisgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBU
SF9TVEVOQ0lMX0FUVEFDSE1FTlQpCiAgICAgICAgIHx8IChwbmFtZSAhPSBHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRQogICAgICAgICAgICAgJiYg
cG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X05BTUUKICAgICAgICAgICAgICYmIHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwKQEAgLTkwNiw2ICs5NTAsOSBAQCBXZWJHTEdl
dEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGCiAgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oKTsKICAgICB9CiAKKyAgICBpZiAoYXR0YWNobWVudCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQorICAgICAgICBhdHRhY2htZW50ID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxfQVRUQUNITUVOVCwg
ZWl0aGVyIHdvcmtzLgorCiAgICAgaWYgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSB7CiAgICAgICAgIFdlYkdMU3RhdGVSZXN0
b3Jlcih0aGlzLCBmYWxzZSk7CiAgICAgICAgIGludCB2YWx1ZTsKQEAgLTExNzYsOCArMTIyMywx
MSBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSCiAgICAgICAgIG1f
Y29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVl
KTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkp
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JN
QVQ6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0
LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOworICAgICAgICBpZiAoIW1fcmVuZGVyYnVmZmVyQmlu
ZGluZykgeworICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgcmV0dXJuIFdlYkdM
R2V0SW5mbygpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8obV9yZW5k
ZXJidWZmZXJCaW5kaW5nLT5nZXRJbnRlcm5hbGZvcm1hdCgpKTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX0VOVU0pOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CkBAIC0xNTU5LDggKzE2
MDksMjEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlbGVhc2VTaGFkZQogCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyYnVmZmVyU3RvcmFnZSh1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0
aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7Ci0gICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJT
dG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotICAgIGNsZWFu
dXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CisgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkg
eworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2OgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE0OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQjVfQTE6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCNTY1OgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfSU5ERVg4OgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkRFUFRIX1NURU5DSUw6CisgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3Rv
cmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgaWYg
KG1fcmVuZGVyYnVmZmVyQmluZGluZykKKyAgICAgICAgICAgIG1fcmVuZGVyYnVmZmVyQmluZGlu
Zy0+c2V0SW50ZXJuYWxmb3JtYXQoaW50ZXJuYWxmb3JtYXQpOworICAgICAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX0VOVU0pOworICAgIH0KIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNhbXBs
ZUNvdmVyYWdlKGRvdWJsZSB2YWx1ZSwgYm9vbCBpbnZlcnQpCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCShyZXZpc2lvbiA1NTk0NSkKKysr
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtNDIzLDYgKzQyMyw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgY29uc3QgdW5z
aWduZWQgaW50IERFUFRIX0NPTVBPTkVOVDE2ICAgICAgICAgICAgICA9IDB4ODFBNTsKICAgICAg
ICAgY29uc3QgdW5zaWduZWQgaW50IFNURU5DSUxfSU5ERVggICAgICAgICAgICAgICAgICA9IDB4
MTkwMTsKICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IFNURU5DSUxfSU5ERVg4ICAgICAgICAg
ICAgICAgICA9IDB4OEQ0ODsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IERFUFRIX1NURU5D
SUwgICAgICAgICAgICAgICAgICA9IDB4ODRGOTsKIAogICAgICAgICBjb25zdCB1bnNpZ25lZCBp
bnQgUkVOREVSQlVGRkVSX1dJRFRIICAgICAgICAgICAgID0gMHg4RDQyOwogICAgICAgICBjb25z
dCB1bnNpZ25lZCBpbnQgUkVOREVSQlVGRkVSX0hFSUdIVCAgICAgICAgICAgID0gMHg4RDQzOwpA
QCAtNDQyLDYgKzQ0Myw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQg
aW50IENPTE9SX0FUVEFDSE1FTlQwICAgICAgICAgICAgICA9IDB4OENFMDsKICAgICAgICAgY29u
c3QgdW5zaWduZWQgaW50IERFUFRIX0FUVEFDSE1FTlQgICAgICAgICAgICAgICA9IDB4OEQwMDsK
ICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IFNURU5DSUxfQVRUQUNITUVOVCAgICAgICAgICAg
ICA9IDB4OEQyMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IERFUFRIX1NURU5DSUxfQVRU
QUNITUVOVCAgICAgICA9IDB4ODIxQTsKIAogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgTk9O
RSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNTU5NDUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2Miw2ICszNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBE
RVBUSF9DT01QT05FTlQxNiA9IDB4ODFBNSwKICAgICAgICAgICAgIFNURU5DSUxfSU5ERVggPSAw
eDE5MDEsCiAgICAgICAgICAgICBTVEVOQ0lMX0lOREVYOCA9IDB4OEQ0OCwKKyAgICAgICAgICAg
IERFUFRIX1NURU5DSUwgPSAweDg0RjksCiAgICAgICAgICAgICBSRU5ERVJCVUZGRVJfV0lEVEgg
PSAweDhENDIsCiAgICAgICAgICAgICBSRU5ERVJCVUZGRVJfSEVJR0hUID0gMHg4RDQzLAogICAg
ICAgICAgICAgUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCA9IDB4OEQ0NCwKQEAgLTM3OCw2
ICszNzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBDT0xPUl9BVFRBQ0hN
RU5UMCA9IDB4OENFMCwKICAgICAgICAgICAgIERFUFRIX0FUVEFDSE1FTlQgPSAweDhEMDAsCiAg
ICAgICAgICAgICBTVEVOQ0lMX0FUVEFDSE1FTlQgPSAweDhEMjAsCisgICAgICAgICAgICBERVBU
SF9TVEVOQ0lMX0FUVEFDSE1FTlQgPSAweDgyMUEsCiAgICAgICAgICAgICBOT05FID0gMCwKICAg
ICAgICAgICAgIEZSQU1FQlVGRkVSX0NPTVBMRVRFID0gMHg4Q0Q1LAogICAgICAgICAgICAgRlJB
TUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UID0gMHg4Q0Q2LApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNw
cAkocmV2aXNpb24gNTU5NDUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NvbnRleHQzRE1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5MSw2ICs2OTEsMTAgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbQogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9u
ZyBoZWlnaHQpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOworICAgIGlmIChp
bnRlcm5hbGZvcm1hdCA9PSBERVBUSF9TVEVOQ0lMKQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9
IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOworICAgIGVsc2UgaWYgKGludGVybmFsZm9ybWF0ID09
IERFUFRIX0NPTVBPTkVOVDE2KQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIX0NP
TVBPTkVOVDsKICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1
NTk0NikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxMC0wMy0xMiAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBh
bmQgdGVzdCBuZXcgZnJhbWVidWZmZXIgb2JqZWN0IGF0dGFjaG1lbnQgYmVoYXZpb3IuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTYxMQorCisgICAg
ICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50
Lmh0bWwKKworICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRC5jcHA6IE1hcCB0byBjb3Jy
ZWN0IERFUFRIX1NURU5DSUwgZm9ybWF0LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorCiAyMDEwLTAzLTEyICBHYXJyZXQgS2VsbHkg
IDxnZGtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmVpdmlld2VkLgpJbmRleDogV2ViS2l0
L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDU1OTQ1KQorKysg
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MTcsNyArMTgxNywxOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWxlYXNlU2hh
ZGVyQ29tCiB7CiB9CiAKLUdMX1NBTUVfTUVUSE9EXzQoUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCwg
cmVuZGVyYnVmZmVyU3RvcmFnZSwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWdu
ZWQgbG9uZywgdW5zaWduZWQgbG9uZykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1
ZmZlclN0b3JhZ2UodW5zaWduZWQgbG9uZyB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGlmIChpbnRl
cm5hbGZvcm1hdCA9PSBERVBUSF9TVEVOQ0lMKQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IEdM
X0RFUFRIMjRfU1RFTkNJTDhfRVhUOworICAgIGVsc2UgaWYgKGludGVybmFsZm9ybWF0ID09IERF
UFRIX0NPTVBPTkVOVDE2KQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIX0NPTVBP
TkVOVDsKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQodGFyZ2V0LCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCk7Cit9CiAKIEdMX1NBTUVfTUVUSE9EXzIoU2FtcGxlQ292ZXJhZ2Us
IHNhbXBsZUNvdmVyYWdlLCBkb3VibGUsIGJvb2wpCiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1OTQ2
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTAtMDMtMTIgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYW5kIHRlc3Qg
bmV3IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9yLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKworICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50LWV4cGVjdGVkLnR4
dDogQWRkZWQsIHRlc3QgZnJhbWVidWZmZXIgb2JqZWN0IGF0dGFjaG1lbnQgYmVoYXZpb3IuCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQu
aHRtbDogQWRkZWQsIGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9yLgorICAg
ICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxz
LmpzOiBERVBUSF9DT01QT05FTlQgaXMgbm8gbG9uZ2VyIGEgdmFsaWQgaW5wdXQsIHVzZSBERVBU
SF9DT01QT05FTlQxNiBpbnN0ZWFkLgorCiAyMDEwLTAzLTEyICBFbnJpY2EgQ2FzdWNjaSAgPGVu
cmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFj
aG1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVj
dC1hdHRhY2htZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAor
VGVzdCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlvcnMKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitDcmVhdGUgcmVuZGVyYnVmZmVycworUEFTUyBnbCA9IGNyZWF0
ZTNEQ29udGV4dCgpIGlzIG5vbi1udWxsLgorUEFTUyBkZXB0aEJ1ZmZlciA9IGdsLmNyZWF0ZVJl
bmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpID09IGdsLk5PX0VS
Uk9SIGlzIHRydWUKK1BBU1Mgc3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigp
IGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9SIGlzIHRydWUK
K1BBU1MgZGVwdGhTdGVuY2lsQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkgaXMgbm9u
LW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgPT0gZ2wuTk9fRVJST1IgaXMgdHJ1ZQorQXR0YWNo
IGRlcHRoIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVi
dWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgor
QXR0YWNoIGRlcHRoIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVh
dGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklO
VkFMSURfT1BFUkFUSU9OCitBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNT
IGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBzdGVuY2lsIHVz
aW5nIFNURU5DSUxfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigp
IGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitBdHRhY2gg
c3RlbmNpbCB1c2luZyBERVBUSF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1l
YnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9P
UEVSQVRJT04KK0F0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVAor
UEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5n
ZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggZGVwdGhTdGVuY2lsIHVz
aW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1
ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitB
dHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wu
Y3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBn
bC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIGRlcHRoU3RlbmNpbCB1c2luZyBTVEVOQ0lMX0FU
VEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4K
K1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIGRlcHRo
LCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJh
bWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSA9PSBnbC5OT19FUlJP
UiBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgPT0gZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMg
dHJ1ZQorQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVwdGgsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1Mg
ZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJy
b3IoKSA9PSBnbC5OT19FUlJPUiBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgPT0gZ2wuSU5W
QUxJRF9PUEVSQVRJT04gaXMgdHJ1ZQorQXR0YWNoIGRlcHRoLCB0aGVuIGRlcHRoU3RlbmNpbCwg
Y2F1c2luZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5v
bi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9SIGlzIHRydWUKK1BBU1Mg
Z2wuZ2V0RXJyb3IoKSA9PSBnbC5JTlZBTElEX09QRVJBVElPTiBpcyB0cnVlCitBdHRhY2ggZGVw
dGhTdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZsaWN0CitQQVNTIGZibyA9IGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgPT0gZ2wu
Tk9fRVJST1IgaXMgdHJ1ZQorUEFTUyBnbC5nZXRFcnJvcigpID09IGdsLklOVkFMSURfT1BFUkFU
SU9OIGlzIHRydWUKK0F0dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRoU3RlbmNpbCwgY2F1c2luZyBj
b25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgor
UEFTUyBnbC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9SIGlzIHRydWUKK1BBU1MgZ2wuZ2V0RXJy
b3IoKSA9PSBnbC5JTlZBTElEX09QRVJBVElPTiBpcyB0cnVlCitBdHRhY2ggZGVwdGhTdGVuY2ls
LCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJh
bWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSA9PSBnbC5OT19FUlJP
UiBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgPT0gZ2wuSU5WQUxJRF9PUEVSQVRJT04gaXMg
dHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1h
dHRhY2htZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKwordmFyIGdsOwordmFyIGZibzsKK3ZhciBk
ZXB0aEJ1ZmZlcjsKK3ZhciBzdGVuY2lsQnVmZmVyOwordmFyIGRlcHRoU3RlbmNpbEJ1ZmZlcjsK
K3ZhciB3aWR0aCA9IDI7Cit2YXIgaGVpZ2h0ID0gMjsKKworZnVuY3Rpb24gdGVzdEF0dGFjaG1l
bnQoYXR0YWNobWVudCwgYnVmZmVyLCBpc0NvbmZsaWN0ZWQpCit7CisgICAgc2hvdWxkQmVOb25O
dWxsKCJmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIik7CisgICAgZ2wuYmluZEZyYW1lYnVm
ZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KGdsLkZSQU1FQlVGRkVSLCBhdHRhY2htZW50LCBnbC5SRU5ERVJCVUZGRVIsIGJ1ZmZlcik7Cisg
ICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCBpc0NvbmZsaWN0ZWQgPyAiZ2wuSU5WQUxJRF9P
UEVSQVRJT04iIDogImdsLk5PX0VSUk9SIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RBdHRhY2htZW50
cyhhdHRhY2htZW50MCwgYnVmZmVyMCwgYXR0YWNobWVudDEsIGJ1ZmZlcjEsIGlzQ29uZmxpY3Rl
ZCkKK3sKKyAgICBzaG91bGRCZU5vbk51bGwoImZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCki
KTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wu
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQwLCBnbC5S
RU5ERVJCVUZGRVIsIGJ1ZmZlcjApOworICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpID09IGds
Lk5PX0VSUk9SIiwgInRydWUiKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgYXR0YWNobWVudDEsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyMSk7CisgICAg
c2hvdWxkQmUoImdsLmdldEVycm9yKCkgPT0gZ2wuSU5WQUxJRF9PUEVSQVRJT04iLCBpc0NvbmZs
aWN0ZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgZnJhbWVi
dWZmZXIgb2JqZWN0IGF0dGFjaG1lbnQgYmVoYXZpb3JzIik7CisKK2RlYnVnKCJDcmVhdGUgcmVu
ZGVyYnVmZmVycyIpOworc2hvdWxkQmVOb25OdWxsKCJnbCA9IGNyZWF0ZTNEQ29udGV4dCgpIik7
CitzaG91bGRCZU5vbk51bGwoImRlcHRoQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCki
KTsKK2dsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBkZXB0aEJ1ZmZlcik7Citn
bC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5U
MTYsIHdpZHRoLCBoZWlnaHQpOworc2hvdWxkQmUoImdsLmdldEVycm9yKCkgPT0gZ2wuTk9fRVJS
T1IiLCAidHJ1ZSIpOworc2hvdWxkQmVOb25OdWxsKCJzdGVuY2lsQnVmZmVyID0gZ2wuY3JlYXRl
UmVuZGVyYnVmZmVyKCkiKTsKK2dsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBz
dGVuY2lsQnVmZmVyKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBn
bC5TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhlaWdodCk7CitzaG91bGRCZSgiZ2wuZ2V0RXJyb3Io
KSA9PSBnbC5OT19FUlJPUiIsICJ0cnVlIik7CitzaG91bGRCZU5vbk51bGwoImRlcHRoU3RlbmNp
bEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7CitnbC5iaW5kUmVuZGVyYnVmZmVy
KGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2lsQnVmZmVyKTsKK2dsLnJlbmRlcmJ1ZmZlclN0
b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBUSF9TVEVOQ0lMLCB3aWR0aCwgaGVpZ2h0KTsK
K3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9SIiwgInRydWUiKTsKKworZGVi
dWcoIkF0dGFjaCBkZXB0aCB1c2luZyBERVBUSF9BVFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVu
dChnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgZmFsc2UpOworZGVidWcoIkF0dGFj
aCBkZXB0aCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLlNU
RU5DSUxfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFjaCBkZXB0
aCB1c2luZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLkRF
UFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFj
aCBzdGVuY2lsIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wu
U1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVyLCBmYWxzZSk7CitkZWJ1ZygiQXR0YWNo
IHN0ZW5jaWwgdXNpbmcgREVQVEhfQVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQ
VEhfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIHN0ZW5j
aWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVudChnbC5E
RVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUpOworZGVidWcoIkF0
dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0ZXN0
QXR0YWNobWVudChnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZl
ciwgZmFsc2UpOworZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfQVRUQUNI
TUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2ls
QnVmZmVyLCB0cnVlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIFNURU5DSUxf
QVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0
aFN0ZW5jaWxCdWZmZXIsIHRydWUpOworCitkZWJ1ZygiQXR0YWNoIGRlcHRoLCB0aGVuIHN0ZW5j
aWwsIGNhdXNpbmcgY29uZmxpY3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9BVFRBQ0hN
RU5ULCBkZXB0aEJ1ZmZlciwgZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVyLCB0
cnVlKTsKK2RlYnVnKCJBdHRhY2ggc3RlbmNpbCwgdGhlbiBkZXB0aCwgY2F1c2luZyBjb25mbGlj
dCIpOwordGVzdEF0dGFjaG1lbnRzKGdsLlNURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZl
ciwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFj
aCBkZXB0aCwgdGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QiKTsKK3Rlc3RBdHRh
Y2htZW50cyhnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgZ2wuREVQVEhfU1RFTkNJ
TF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFjaCBk
ZXB0aFN0ZW5jaWwsIHRoZW4gZGVwdGgsIGNhdXNpbmcgY29uZmxpY3QiKTsKK3Rlc3RBdHRhY2ht
ZW50cyhnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgZ2wu
REVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFjaCBzdGVu
Y2lsLCB0aGVuIGRlcHRoU3RlbmNpbCwgY2F1c2luZyBjb25mbGljdCIpOwordGVzdEF0dGFjaG1l
bnRzKGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCBnbC5ERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRo
U3RlbmNpbCwgdGhlbiBzdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVu
dHMoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIGdsLlNU
RU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CisKK3N1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQtY2Fs
bHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0
LXRlc3RzL2dsLW9iamVjdC1nZXQtY2FsbHMuanMJKHJldmlzaW9uIDU1OTQ1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQtY2FsbHMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgdmFyIHJlbmRlcmJ1ZmZlciA9IGds
LmNyZWF0ZVJlbmRlcmJ1ZmZlcgogc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwogZ2wu
YmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CiBzaG91bGRC
ZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7Ci1nbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRF
UkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5ULCAyLCAyKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3Jh
Z2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBUSF9DT01QT05FTlQxNiwgMiwgMik7CiBzaG91bGRC
ZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CiBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJi
dWZmZXIpOwogLy8gRklYTUU6IG9uIHNvbWUgbWFjaGluZXMgKGluIHBhcnRpY3VsYXIgdGhlIFdl
YktpdCBjb21taXQgYm90cykgdGhlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50855</attachid>
            <date>2010-03-16 17:24:39 -0700</date>
            <delta_ts>2010-03-16 18:19:13 -0700</delta_ts>
            <desc>revised patch: responding to Ken Russell&apos;s review</desc>
            <filename>fbo.patch</filename>
            <type>text/plain</type>
            <size>27130</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTk0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMDMtMTIgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9yLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNo
bWVudC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDog
S2VlcCB0cmFjayBvZiBhdHRhY2hlZCBzdGVuY2lsL2RlcHRoIHJlbmRlcmJ1ZmZlcnMgaW4gV2Vi
R0xGcmFtZWJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OldlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0SXNB
dHRhY2hlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOiBLZWVw
IHRyYWNrIG9mIGF0dGFjaGVkIHN0ZW5jaWwvZGVwdGggcmVuZGVyYnVmZmVycyBpbiBXZWJHTEZy
YW1lYnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6aXNEZXB0aEF0
dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzU3RlbmNpbEF0
dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzRGVwdGhTdGVu
Y2lsQXR0YWNoZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNw
cDogS2VlcCB0cmFjayBvZiBpbnRlcm5hbGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyYnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJidWZmZXIuaDogS2VlcCB0cmFjayBvZiBpbnRlcm5hbGZvcm1hdC4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyYnVmZmVyOjpzZXRJbnRlcm5hbGZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1ZmZlcjo6Z2V0SW50ZXJuYWxmb3JtYXQpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKTog
RGV0ZWN0IHN0ZW5jaWwvZGVwdGggYnVmZmVyIGNvbmZsaWN0cy4KKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KTogSGFuZGxpbmcgREVQVEhfU1RFTkNJTCBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIpOiBHZXQgY29ycmVjdCBX
ZWJHTCBpbnRlcm5hbGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6IERldGVjdCBpbGxlZ2FsIGVudW1zLgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGw6IEFkZCBERVBUSF9TVEVO
Q0lMIGVudW1zLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6IEFkZCBERVBUSF9TVEVOQ0lMIGVudW1zLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6Oik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLmNwcDogTWFwIHRvIGNvcnJlY3QgREVQVEhfU1RFTkNJTCBmb3JtYXQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisK
IDIwMTAtMDMtMTIgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZy
YW1lYnVmZmVyLmNwcAkocmV2aXNpb24gNTU5NDUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMjggQEAgUGFz
c1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTEZyYW1lYgogCiBXZWJHTEZyYW1lYnVmZmVy
OjpXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4KQogICAgIDogQ2Fu
dmFzT2JqZWN0KGN0eCkKKyAgICAsIG1faXNEZXB0aEF0dGFjaGVkKGZhbHNlKQorICAgICwgbV9p
c1N0ZW5jaWxBdHRhY2hlZChmYWxzZSkKKyAgICAsIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZChm
YWxzZSkKIHsKICAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5j
cmVhdGVGcmFtZWJ1ZmZlcigpKTsKIH0KIAordm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpzZXRJc0F0
dGFjaGVkKHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgYm9vbCBpc0F0dGFjaGVkKQoreworICAg
IHN3aXRjaCAoYXR0YWNobWVudCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0FUVEFDSE1FTlQ6CisgICAgICAgIG1faXNEZXB0aEF0dGFjaGVkID0gaXNBdHRhY2hlZDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hN
RU5UOgorICAgICAgICBtX2lzU3RlbmNpbEF0dGFjaGVkID0gaXNBdHRhY2hlZDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5UOgorICAgICAgICBtX2lzRGVwdGhTdGVuY2lsQXR0YWNoZWQgPSBpc0F0dGFjaGVkOworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6X2RlbGV0ZU9i
amVjdChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0KCktPmdyYXBoaWNz
Q29udGV4dDNEKCktPmRlbGV0ZUZyYW1lYnVmZmVyKG9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAkocmV2aXNpb24gNTU5NDUpCisrKyBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4
LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+V2ViR0xGcmFtZWJ1
ZmZlcigpIHsgZGVsZXRlT2JqZWN0KCk7IH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsK
KworICAgICAgICB2b2lkIHNldElzQXR0YWNoZWQodW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBi
b29sIGlzQXR0YWNoZWQpOworCisgICAgICAgIGJvb2wgaXNEZXB0aEF0dGFjaGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0RlcHRoQXR0YWNoZWQ7IH0KKyAgICAgICAgYm9vbCBpc1N0ZW5jaWxBdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdGVuY2lsQXR0YWNoZWQ7IH0KKyAgICAgICAgYm9v
bCBpc0RlcHRoU3RlbmNpbEF0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlcHRoU3RlbmNp
bEF0dGFjaGVkOyB9CiAgICAgICAgIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgV2ViR0xGcmFt
ZWJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgcHJpdmF0ZToK
KyAgICAgICAgYm9vbCBtX2lzRGVwdGhBdHRhY2hlZDsKKyAgICAgICAgYm9vbCBtX2lzU3RlbmNp
bEF0dGFjaGVkOworICAgICAgICBib29sIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZDsKICAgICB9
OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJKHJldmlzaW9uIDU1OTQ1KQorKysgV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEyICs0
NCwxNCBAQCBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlCiAKIFdlYkdM
UmVuZGVyYnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0
eCkKICAgICA6IENhbnZhc09iamVjdChjdHgpCisgICAgLCBtX2ludGVybmFsZm9ybWF0KEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBNCkKIHsKICAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGlj
c0NvbnRleHQzRCgpLT5jcmVhdGVSZW5kZXJidWZmZXIoKSk7CiB9CiAKIFdlYkdMUmVuZGVyYnVm
ZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgUGxhdGZv
cm0zRE9iamVjdCBvYmopCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pbnRlcm5h
bGZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQpCiB7CiAgICAgc2V0T2JqZWN0KG9iaiwg
ZmFsc2UpOwogfQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaAko
cmV2aXNpb24gNTU5NDUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDExICs0MywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgY29uc2lkZXIgY2Fub25pY2FsaXppbmcgdGhlc2Ug
b2JqZWN0cwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gY3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVy
KTsKIAorICAgICAgICB2b2lkIHNldEludGVybmFsZm9ybWF0KHVuc2lnbmVkIGxvbmcgaW50ZXJu
YWxmb3JtYXQpIHsgbV9pbnRlcm5hbGZvcm1hdCA9IGludGVybmFsZm9ybWF0OyB9CisgICAgICAg
IHVuc2lnbmVkIGxvbmcgZ2V0SW50ZXJuYWxmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2ludGVy
bmFsZm9ybWF0OyB9CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYkdMUmVuZGVyYnVmZmVy
KFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgICAgICBXZWJHTFJlbmRlcmJ1ZmZlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0KTsKICAgICAgICAgCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX2ludGVybmFsZm9ybWF0OwogICAgIH07CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1NTk0NSkKKysrIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzkwLDYgKzc5MCw0NSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJS
CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoYnVm
ZmVyLT5vYmplY3QoKSkgeworICAgICAgICBib29sIGlzQ29uZmxpY3RlZCA9IGZhbHNlOworICAg
ICAgICBib29sIGlzRGVwdGhPclN0ZW5jaWwgPSB0cnVlOworICAgICAgICBzd2l0Y2ggKGF0dGFj
aG1lbnQpIHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVO
VDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNEZXB0aFN0ZW5jaWxB
dHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRhY2hlZCgpKQor
ICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAgICBpZiAoYnVm
ZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01Q
T05FTlQxNikKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNI
TUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNEZXB0aFN0ZW5j
aWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc0RlcHRoQXR0YWNoZWQoKSkK
KyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgaWYgKGJ1
ZmZlci0+Z2V0SW50ZXJuYWxmb3JtYXQoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9J
TkRFWDgpCisgICAgICAgICAgICAgICAgaXNDb25mbGljdGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmctPmlzRGVwdGhB
dHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRhY2hlZCgpKQor
ICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAgICBpZiAoYnVm
ZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVO
Q0lMKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlzRGVwdGhPclN0ZW5jaWwgPSBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNDb25mbGljdGVkKSB7CisgICAgICAgICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGlzRGVwdGhPclN0ZW5jaWwpCisgICAgICAgICAgICBtX2ZyYW1lYnVmZmVyQmluZGluZy0+c2V0
SXNBdHRhY2hlZChhdHRhY2htZW50LCB0cnVlKTsKKyAgICB9IGVsc2UgeyAvLyBEZXRhY2gKKyAg
ICAgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNU
RU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
U1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgbV9mcmFtZWJ1ZmZlckJpbmRpbmctPnNl
dElzQXR0YWNoZWQoYXR0YWNobWVudCwgZmFsc2UpOworICAgICAgICB9CisgICAgfQogICAgIG1f
Y29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5k
ZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KQEAgLTg5Nyw3ICs5MzYsOCBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRGCiAgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIKICAgICAgICAgfHwgKGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9S
X0FUVEFDSE1FTlQwCiAgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4
dDNEOjpERVBUSF9BVFRBQ0hNRU5UCi0gICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAgICAgICAmJiBhdHRhY2ht
ZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQKKyAgICAgICAgICAg
ICYmIGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCkKICAgICAgICAgfHwgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFCiAgICAgICAgICAgICAmJiBwbmFtZSAhPSBHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRQogICAgICAgICAg
ICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
VEVYVFVSRV9MRVZFTApAQCAtOTA2LDYgKzk0Niw5IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEYKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0K
IAorICAgIGlmIChhdHRhY2htZW50ID09IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lM
X0FUVEFDSE1FTlQpCisgICAgICAgIGF0dGFjaG1lbnQgPSBHcmFwaGljc0NvbnRleHQzRDo6REVQ
VEhfQVRUQUNITUVOVDsgLy8gT3IgU1RFTkNJTF9BVFRBQ0hNRU5ULCBlaXRoZXIgd29ya3MuCisK
ICAgICBpZiAocG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfT0JKRUNUX05BTUUpIHsKICAgICAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNl
KTsKICAgICAgICAgaW50IHZhbHVlOwpAQCAtMTE3Niw4ICsxMjE5LDExIEBAIFdlYkdMR2V0SW5m
byBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFIKICAgICAgICAgbV9jb250ZXh0LT5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKLSAgICAgICAgbV9j
b250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUp
OwotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KHZhbHVlKSk7CisgICAgICAgIGlmICghbV9yZW5kZXJidWZmZXJCaW5kaW5nKSB7CisgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX3JlbmRlcmJ1ZmZlckJpbmRpbmct
PmdldEludGVybmFsZm9ybWF0KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKQEAgLTE1NTksOCArMTYwNSwyMSBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVNoYWRlCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCkKIHsKLSAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KSB7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQTQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCNV9BMToKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I1NjU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U1RFTkNJTF9JTkRFWDg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RF
TkNJTDoKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBpZiAobV9yZW5kZXJidWZmZXJC
aW5kaW5nKQorICAgICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbGZv
cm1hdChpbnRlcm5hbGZvcm1hdCk7CisgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAg
fQogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2FtcGxlQ292ZXJhZ2UoZG91Ymxl
IHZhbHVlLCBib29sIGludmVydCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDU1OTQ1KQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNiAr
NDIzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhf
Q09NUE9ORU5UMTYgICAgICAgICAgICAgID0gMHg4MUE1OwogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgU1RFTkNJTF9JTkRFWCAgICAgICAgICAgICAgICAgID0gMHgxOTAxOwogICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgU1RFTkNJTF9JTkRFWDggICAgICAgICAgICAgICAgID0gMHg4RDQ4
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAg
ICAgID0gMHg4NEY5OwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBSRU5ERVJCVUZGRVJf
V0lEVEggICAgICAgICAgICAgPSAweDhENDI7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBS
RU5ERVJCVUZGRVJfSEVJR0hUICAgICAgICAgICAgPSAweDhENDM7CkBAIC00NDIsNiArNDQzLDcg
QEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09MT1JfQVRUQUNI
TUVOVDAgICAgICAgICAgICAgID0gMHg4Q0UwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
REVQVEhfQVRUQUNITUVOVCAgICAgICAgICAgICAgID0gMHg4RDAwOwogICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgICAgICAgID0gMHg4RDIwOworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgID0g
MHg4MjFBOwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBOT05FICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAwOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA1NTk0NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERFUFRIX0NPTVBPTkVOVDE2
ID0gMHg4MUE1LAogICAgICAgICAgICAgU1RFTkNJTF9JTkRFWCA9IDB4MTkwMSwKICAgICAgICAg
ICAgIFNURU5DSUxfSU5ERVg4ID0gMHg4RDQ4LAorICAgICAgICAgICAgREVQVEhfU1RFTkNJTCA9
IDB4ODRGOSwKICAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKICAgICAg
ICAgICAgIFJFTkRFUkJVRkZFUl9IRUlHSFQgPSAweDhENDMsCiAgICAgICAgICAgICBSRU5ERVJC
VUZGRVJfSU5URVJOQUxfRk9STUFUID0gMHg4RDQ0LApAQCAtMzc4LDYgKzM3OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIENPTE9SX0FUVEFDSE1FTlQwID0gMHg4Q0UwLAog
ICAgICAgICAgICAgREVQVEhfQVRUQUNITUVOVCA9IDB4OEQwMCwKICAgICAgICAgICAgIFNURU5D
SUxfQVRUQUNITUVOVCA9IDB4OEQyMCwKKyAgICAgICAgICAgIERFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCA9IDB4ODIxQSwKICAgICAgICAgICAgIE5PTkUgPSAwLAogICAgICAgICAgICAgRlJBTUVC
VUZGRVJfQ09NUExFVEUgPSAweDhDRDUsCiAgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQgPSAweDhDRDYsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1NTk0
NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFj
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDcgKzQ3NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmbHVzaCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1
bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0
LCBidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7CisgICAgR0x1aW50IHJl
bmRlckJ1ZmZlciA9IChidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7Cisg
ICAgaWYgKGF0dGFjaG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSB7CisgICAgICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIERFUFRIX0FUVEFDSE1FTlQs
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyQnVmZmVyKTsKKyAgICAgICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgU1RFTkNJTF9BVFRBQ0hNRU5ULCByZW5kZXJidWZm
ZXJ0YXJnZXQsIHJlbmRlckJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIDo6Z2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgcmVuZGVyQnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZm
ZXJUZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVu
dCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgbG9uZyBs
ZXZlbCkKQEAgLTY5MSw2ICs2OTYsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFz
ZVNoYWRlckNvbQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7CiAgICAgZW5zdXJlQ29udGV4
dChtX2NvbnRleHRPYmopOworICAgIGlmIChpbnRlcm5hbGZvcm1hdCA9PSBERVBUSF9TVEVOQ0lM
KQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOworICAg
IGVsc2UgaWYgKGludGVybmFsZm9ybWF0ID09IERFUFRIX0NPTVBPTkVOVDE2KQorICAgICAgICBp
bnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKICAgICA6OmdsUmVuZGVyYnVmZmVy
U3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIApJ
bmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NTk0NikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wMy0xMiAgWmhlbnlh
byBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudCBhbmQgdGVzdCBuZXcgZnJhbWVidWZmZXIgb2JqZWN0
IGF0dGFjaG1lbnQgYmVoYXZpb3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNTYxMQorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL2Zy
YW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50Lmh0bWwKKworICAgICAgICAqIHNyYy9HcmFwaGlj
c0NvbnRleHQzRC5jcHA6IE1hcCB0byBjb3JyZWN0IERFUFRIX1NURU5DSUwgZm9ybWF0LgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgor
CiAyMDEwLTAzLTEyICBHYXJyZXQgS2VsbHkgIDxnZGtAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFVucmVpdmlld2VkLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQz
RC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQz
RC5jcHAJKHJldmlzaW9uIDU1OTQ1KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NjYsNyArMTQ2NiwxNyBAQCBHTF9TQU1F
X01FVEhPRF8wKEZpbmlzaCwgZmluaXNoKQogCiBHTF9TQU1FX01FVEhPRF8wKEZsdXNoLCBmbHVz
aCkKIAotR0xfU0FNRV9NRVRIT0RfNF9YNChGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCwgZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2ln
bmVkIGxvbmcsIFdlYkdMUmVuZGVyYnVmZmVyKikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25n
IGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIq
IGJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBHTHVpbnQgcmVuZGVy
QnVmZmVyID0gRVhUUkFDVChidWZmZXIpOworICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NU
RU5DSUxfQVRUQUNITUVOVCkgeworICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJF
WFQodGFyZ2V0LCBERVBUSF9BVFRBQ0hNRU5ULCByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRlckJ1
ZmZlcik7CisgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIFNU
RU5DSUxfQVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCByZW5kZXJCdWZmZXIpOworICAg
IH0gZWxzZQorICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBh
dHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRlckJ1ZmZlcik7Cit9CiAKIEdMX1NB
TUVfTUVUSE9EXzVfWDQoRnJhbWVidWZmZXJUZXh0dXJlMkRFWFQsIGZyYW1lYnVmZmVyVGV4dHVy
ZTJELCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBXZWJHTFRl
eHR1cmUqLCBsb25nKQogCkBAIC0xODE3LDcgKzE4MjcsMTggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6cmVsZWFzZVNoYWRlckNvbQogewogfQogCi1HTF9TQU1FX01FVEhPRF80KFJlbmRlcmJ1
ZmZlclN0b3JhZ2VFWFQsIHJlbmRlcmJ1ZmZlclN0b3JhZ2UsIHVuc2lnbmVkIGxvbmcsIHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGludGVy
bmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBpZiAoaW50ZXJuYWxmb3JtYXQgPT0gREVQVEhfU1RFTkNJTCkKKyAgICAgICAgaW50
ZXJuYWxmb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKKyAgICBlbHNlIGlmIChpbnRl
cm5hbGZvcm1hdCA9PSBERVBUSF9DT01QT05FTlQxNikKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQg
PSBHTF9ERVBUSF9DT01QT05FTlQ7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRhcmdl
dCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworfQogCiBHTF9TQU1FX01FVEhPRF8y
KFNhbXBsZUNvdmVyYWdlLCBzYW1wbGVDb3ZlcmFnZSwgZG91YmxlLCBib29sKQogCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTk0NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTAzLTEyICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IGFuZCB0ZXN0IG5ldyBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlv
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NjEx
CisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNo
bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLCB0ZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2ht
ZW50IGJlaGF2aW9yLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9i
amVjdC1hdHRhY2htZW50Lmh0bWw6IEFkZGVkLCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVu
dCBiZWhhdmlvci4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wt
b2JqZWN0LWdldC1jYWxscy5qczogREVQVEhfQ09NUE9ORU5UIGlzIG5vIGxvbmdlciBhIHZhbGlk
IGlucHV0LCB1c2UgREVQVEhfQ09NUE9ORU5UMTYgaW5zdGVhZC4KKwogMjAxMC0wMy0xMiAgRW5y
aWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVm
ZmVyLW9iamVjdC1hdHRhY2htZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9m
cmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjcgQEAKK1Rlc3QgZnJhbWVidWZmZXIgb2JqZWN0IGF0dGFjaG1lbnQgYmVoYXZp
b3JzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworQ3JlYXRlIHJlbmRlcmJ1ZmZlcnMK
K1BBU1MgZ2wgPSBjcmVhdGUzRENvbnRleHQoKSBpcyBub24tbnVsbC4KK1BBU1MgZGVwdGhCdWZm
ZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJy
b3IoKSBpcyBnbC5OT19FUlJPUgorUEFTUyBzdGVuY2lsQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVy
YnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IK
K1BBU1MgZGVwdGhTdGVuY2lsQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkgaXMgbm9u
LW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBkZXB0aCB1
c2luZyBERVBUSF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkg
aXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBk
ZXB0aCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVi
dWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX09Q
RVJBVElPTgorQXR0YWNoIGRlcHRoIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVAorUEFT
UyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRF
cnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggc3RlbmNpbCB1c2luZyBTVEVO
Q0lMX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24t
bnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorQXR0YWNoIHN0ZW5jaWwg
dXNpbmcgREVQVEhfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigp
IGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9O
CitBdHRhY2ggc3RlbmNpbCB1c2luZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQKK1BBU1MgZmJv
ID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIGRlcHRoU3RlbmNpbCB1c2luZyBERVBU
SF9TVEVOQ0lMX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBp
cyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorQXR0YWNoIGRl
cHRoU3RlbmNpbCB1c2luZyBERVBUSF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5U
CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGds
LmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aCwgdGhlbiBz
dGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVy
KCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1Mg
Z2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIHN0ZW5jaWwsIHRo
ZW4gZGVwdGgsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggZGVwdGgsIHRo
ZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJS
T1IKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIGRl
cHRoU3RlbmNpbCwgdGhlbiBkZXB0aCwgY2F1c2luZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5j
cmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGds
Lk5PX0VSUk9SCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0
dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRoU3RlbmNpbCwgY2F1c2luZyBjb25mbGljdAorUEFTUyBm
Ym8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJv
cigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVS
QVRJT04KK0F0dGFjaCBkZXB0aFN0ZW5jaWwsIHRoZW4gc3RlbmNpbCwgY2F1c2luZyBjb25mbGlj
dAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5W
QUxJRF9PUEVSQVRJT04KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZl
ci1vYmplY3QtYXR0YWNobWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3Qt
YXR0YWNobWVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkzIEBACis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKK3ZhciBnbDsKK3ZhciBm
Ym87Cit2YXIgZGVwdGhCdWZmZXI7Cit2YXIgc3RlbmNpbEJ1ZmZlcjsKK3ZhciBkZXB0aFN0ZW5j
aWxCdWZmZXI7Cit2YXIgd2lkdGggPSAyOwordmFyIGhlaWdodCA9IDI7CisKK2Z1bmN0aW9uIHRl
c3RBdHRhY2htZW50KGF0dGFjaG1lbnQsIGJ1ZmZlciwgaXNDb25mbGljdGVkKQoreworICAgIHNo
b3VsZEJlTm9uTnVsbCgiZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSIpOworICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudCwgZ2wuUkVOREVSQlVGRkVSLCBi
dWZmZXIpOworICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgaXNDb25mbGljdGVkID8gImds
LklOVkFMSURfT1BFUkFUSU9OIiA6ICJnbC5OT19FUlJPUiIpOworfQorCitmdW5jdGlvbiB0ZXN0
QXR0YWNobWVudHMoYXR0YWNobWVudDAsIGJ1ZmZlcjAsIGF0dGFjaG1lbnQxLCBidWZmZXIxLCBp
c0NvbmZsaWN0ZWQpCit7CisgICAgc2hvdWxkQmVOb25OdWxsKCJmYm8gPSBnbC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpIik7CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8p
OworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBhdHRhY2ht
ZW50MCwgZ2wuUkVOREVSQlVGRkVSLCBidWZmZXIwKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0RXJy
b3IoKSIsICJnbC5OT19FUlJPUiIpOworICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBhdHRhY2htZW50MSwgZ2wuUkVOREVSQlVGRkVSLCBidWZmZXIxKTsKKyAg
ICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsIGlzQ29uZmxpY3RlZCA/ICJnbC5JTlZBTElEX09Q
RVJBVElPTiIgOiAiZ2wuTk9fRVJST1IiKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgZnJhbWVi
dWZmZXIgb2JqZWN0IGF0dGFjaG1lbnQgYmVoYXZpb3JzIik7CisKK2RlYnVnKCJDcmVhdGUgcmVu
ZGVyYnVmZmVycyIpOworc2hvdWxkQmVOb25OdWxsKCJnbCA9IGNyZWF0ZTNEQ29udGV4dCgpIik7
CitzaG91bGRCZU5vbk51bGwoImRlcHRoQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCki
KTsKK2dsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBkZXB0aEJ1ZmZlcik7Citn
bC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5U
MTYsIHdpZHRoLCBoZWlnaHQpOworc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJS
T1IiKTsKK3Nob3VsZEJlTm9uTnVsbCgic3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1
ZmZlcigpIik7CitnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgc3RlbmNpbEJ1
ZmZlcik7CitnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuU1RFTkNJ
TF9JTkRFWDgsIHdpZHRoLCBoZWlnaHQpOworc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wu
Tk9fRVJST1IiKTsKK3Nob3VsZEJlTm9uTnVsbCgiZGVwdGhTdGVuY2lsQnVmZmVyID0gZ2wuY3Jl
YXRlUmVuZGVyYnVmZmVyKCkiKTsKK2dsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVS
LCBkZXB0aFN0ZW5jaWxCdWZmZXIpOworZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJC
VUZGRVIsIGdsLkRFUFRIX1NURU5DSUwsIHdpZHRoLCBoZWlnaHQpOworc2hvdWxkQmUoImdsLmdl
dEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKworZGVidWcoIkF0dGFjaCBkZXB0aCB1c2luZyBE
RVBUSF9BVFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVudChnbC5ERVBUSF9BVFRBQ0hNRU5ULCBk
ZXB0aEJ1ZmZlciwgZmFsc2UpOworZGVidWcoIkF0dGFjaCBkZXB0aCB1c2luZyBTVEVOQ0lMX0FU
VEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLlNURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhC
dWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFjaCBkZXB0aCB1c2luZyBERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwg
ZGVwdGhCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFjaCBzdGVuY2lsIHVzaW5nIFNURU5DSUxf
QVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVu
Y2lsQnVmZmVyLCBmYWxzZSk7CitkZWJ1ZygiQXR0YWNoIHN0ZW5jaWwgdXNpbmcgREVQVEhfQVRU
QUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfQVRUQUNITUVOVCwgc3RlbmNpbEJ1
ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIHN0ZW5jaWwgdXNpbmcgREVQVEhfU1RFTkNJTF9B
VFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVudChnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQs
IHN0ZW5jaWxCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcg
REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVudChnbC5ERVBUSF9TVEVO
Q0lMX0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgZmFsc2UpOworZGVidWcoIkF0dGFj
aCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfQVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQo
Z2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVlKTsKK2RlYnVnKCJB
dHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVCIpOwordGVzdEF0dGFj
aG1lbnQoZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIHRydWUpOwor
CitkZWJ1ZygiQXR0YWNoIGRlcHRoLCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QiKTsK
K3Rlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgZ2wuU1RF
TkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVyLCB0cnVlKTsKK2RlYnVnKCJBdHRhY2ggc3Rl
bmNpbCwgdGhlbiBkZXB0aCwgY2F1c2luZyBjb25mbGljdCIpOwordGVzdEF0dGFjaG1lbnRzKGds
LlNURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgZ2wuREVQVEhfQVRUQUNITUVOVCwg
ZGVwdGhCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFjaCBkZXB0aCwgdGhlbiBkZXB0aFN0ZW5j
aWwsIGNhdXNpbmcgY29uZmxpY3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9BVFRBQ0hN
RU5ULCBkZXB0aEJ1ZmZlciwgZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5j
aWxCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5jaWwsIHRoZW4gZGVwdGgs
IGNhdXNpbmcgY29uZmxpY3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhC
dWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRoU3RlbmNpbCwg
Y2F1c2luZyBjb25mbGljdCIpOwordGVzdEF0dGFjaG1lbnRzKGdsLkRFUFRIX0FUVEFDSE1FTlQs
IGRlcHRoQnVmZmVyLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1
ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoU3RlbmNpbCwgdGhlbiBzdGVuY2lsLCBj
YXVzaW5nIGNvbmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfU1RFTkNJTF9BVFRB
Q0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIGdsLlNURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNp
bEJ1ZmZlciwgdHJ1ZSk7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvc2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQtY2FsbHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQtY2Fs
bHMuanMJKHJldmlzaW9uIDU1OTQ1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
c2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQtY2FsbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDcgKzUyLDcgQEAgdmFyIHJlbmRlcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcgogc2hv
dWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwogZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5E
RVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CiBzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7
Ci1nbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9O
RU5ULCAyLCAyKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5E
RVBUSF9DT01QT05FTlQxNiwgMiwgMik7CiBzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7
CiBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRU
QUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOwogLy8gRklYTUU6IG9uIHNv
bWUgbWFjaGluZXMgKGluIHBhcnRpY3VsYXIgdGhlIFdlYktpdCBjb21taXQgYm90cykgdGhlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50864</attachid>
            <date>2010-03-16 18:19:13 -0700</date>
            <delta_ts>2010-03-24 19:12:20 -0700</delta_ts>
            <desc>revised patch : responding to Ken Russell&apos;s review</desc>
            <filename>fbo.patch</filename>
            <type>text/plain</type>
            <size>27560</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTk0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMDMtMTIgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9yLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNo
bWVudC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDog
S2VlcCB0cmFjayBvZiBhdHRhY2hlZCBzdGVuY2lsL2RlcHRoIHJlbmRlcmJ1ZmZlcnMgaW4gV2Vi
R0xGcmFtZWJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OldlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0SXNB
dHRhY2hlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOiBLZWVw
IHRyYWNrIG9mIGF0dGFjaGVkIHN0ZW5jaWwvZGVwdGggcmVuZGVyYnVmZmVycyBpbiBXZWJHTEZy
YW1lYnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6aXNEZXB0aEF0
dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzU3RlbmNpbEF0
dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzRGVwdGhTdGVu
Y2lsQXR0YWNoZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNw
cDogS2VlcCB0cmFjayBvZiBpbnRlcm5hbGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyYnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJidWZmZXIuaDogS2VlcCB0cmFjayBvZiBpbnRlcm5hbGZvcm1hdC4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyYnVmZmVyOjpzZXRJbnRlcm5hbGZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1ZmZlcjo6Z2V0SW50ZXJuYWxmb3JtYXQpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKTog
RGV0ZWN0IHN0ZW5jaWwvZGVwdGggYnVmZmVyIGNvbmZsaWN0cy4KKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KTogSGFuZGxpbmcgREVQVEhfU1RFTkNJTCBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIpOiBHZXQgY29ycmVjdCBX
ZWJHTCBpbnRlcm5hbGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6IERldGVjdCBpbGxlZ2FsIGVudW1zLgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGw6IEFkZCBERVBUSF9TVEVO
Q0lMIGVudW1zLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6IEFkZCBERVBUSF9TVEVOQ0lMIGVudW1zLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6Oik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLmNwcDogTWFwIHRvIGNvcnJlY3QgREVQVEhfU1RFTkNJTCBmb3JtYXQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisK
IDIwMTAtMDMtMTIgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZy
YW1lYnVmZmVyLmNwcAkocmV2aXNpb24gNTU5NDUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMjggQEAgUGFz
c1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTEZyYW1lYgogCiBXZWJHTEZyYW1lYnVmZmVy
OjpXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4KQogICAgIDogQ2Fu
dmFzT2JqZWN0KGN0eCkKKyAgICAsIG1faXNEZXB0aEF0dGFjaGVkKGZhbHNlKQorICAgICwgbV9p
c1N0ZW5jaWxBdHRhY2hlZChmYWxzZSkKKyAgICAsIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZChm
YWxzZSkKIHsKICAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5j
cmVhdGVGcmFtZWJ1ZmZlcigpKTsKIH0KIAordm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpzZXRJc0F0
dGFjaGVkKHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgYm9vbCBpc0F0dGFjaGVkKQoreworICAg
IHN3aXRjaCAoYXR0YWNobWVudCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0FUVEFDSE1FTlQ6CisgICAgICAgIG1faXNEZXB0aEF0dGFjaGVkID0gaXNBdHRhY2hlZDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hN
RU5UOgorICAgICAgICBtX2lzU3RlbmNpbEF0dGFjaGVkID0gaXNBdHRhY2hlZDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5UOgorICAgICAgICBtX2lzRGVwdGhTdGVuY2lsQXR0YWNoZWQgPSBpc0F0dGFjaGVkOworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6X2RlbGV0ZU9i
amVjdChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0KCktPmdyYXBoaWNz
Q29udGV4dDNEKCktPmRlbGV0ZUZyYW1lYnVmZmVyKG9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAkocmV2aXNpb24gNTU5NDUpCisrKyBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4
LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+V2ViR0xGcmFtZWJ1
ZmZlcigpIHsgZGVsZXRlT2JqZWN0KCk7IH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsK
KworICAgICAgICB2b2lkIHNldElzQXR0YWNoZWQodW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBi
b29sIGlzQXR0YWNoZWQpOworCisgICAgICAgIGJvb2wgaXNEZXB0aEF0dGFjaGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0RlcHRoQXR0YWNoZWQ7IH0KKyAgICAgICAgYm9vbCBpc1N0ZW5jaWxBdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdGVuY2lsQXR0YWNoZWQ7IH0KKyAgICAgICAgYm9v
bCBpc0RlcHRoU3RlbmNpbEF0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlcHRoU3RlbmNp
bEF0dGFjaGVkOyB9CiAgICAgICAgIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgV2ViR0xGcmFt
ZWJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgcHJpdmF0ZToK
KyAgICAgICAgYm9vbCBtX2lzRGVwdGhBdHRhY2hlZDsKKyAgICAgICAgYm9vbCBtX2lzU3RlbmNp
bEF0dGFjaGVkOworICAgICAgICBib29sIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZDsKICAgICB9
OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJKHJldmlzaW9uIDU1OTQ1KQorKysgV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEyICs0
NCwxNCBAQCBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlCiAKIFdlYkdM
UmVuZGVyYnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0
eCkKICAgICA6IENhbnZhc09iamVjdChjdHgpCisgICAgLCBtX2ludGVybmFsZm9ybWF0KEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBNCkKIHsKICAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGlj
c0NvbnRleHQzRCgpLT5jcmVhdGVSZW5kZXJidWZmZXIoKSk7CiB9CiAKIFdlYkdMUmVuZGVyYnVm
ZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgUGxhdGZv
cm0zRE9iamVjdCBvYmopCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pbnRlcm5h
bGZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQpCiB7CiAgICAgc2V0T2JqZWN0KG9iaiwg
ZmFsc2UpOwogfQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaAko
cmV2aXNpb24gNTU5NDUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDExICs0MywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgY29uc2lkZXIgY2Fub25pY2FsaXppbmcgdGhlc2Ug
b2JqZWN0cwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gY3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVy
KTsKIAorICAgICAgICB2b2lkIHNldEludGVybmFsZm9ybWF0KHVuc2lnbmVkIGxvbmcgaW50ZXJu
YWxmb3JtYXQpIHsgbV9pbnRlcm5hbGZvcm1hdCA9IGludGVybmFsZm9ybWF0OyB9CisgICAgICAg
IHVuc2lnbmVkIGxvbmcgZ2V0SW50ZXJuYWxmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2ludGVy
bmFsZm9ybWF0OyB9CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYkdMUmVuZGVyYnVmZmVy
KFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgICAgICBXZWJHTFJlbmRlcmJ1ZmZlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0KTsKICAgICAgICAgCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX2ludGVybmFsZm9ybWF0OwogICAgIH07CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1NTk0NSkKKysrIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzkwLDYgKzc5MCw0NSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJS
CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoYnVm
ZmVyLT5vYmplY3QoKSkgeworICAgICAgICBib29sIGlzQ29uZmxpY3RlZCA9IGZhbHNlOworICAg
ICAgICBib29sIGlzRGVwdGhPclN0ZW5jaWwgPSB0cnVlOworICAgICAgICBzd2l0Y2ggKGF0dGFj
aG1lbnQpIHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVO
VDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNEZXB0aFN0ZW5jaWxB
dHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRhY2hlZCgpKQor
ICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAgICBpZiAoYnVm
ZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01Q
T05FTlQxNikKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNI
TUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNEZXB0aFN0ZW5j
aWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc0RlcHRoQXR0YWNoZWQoKSkK
KyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgaWYgKGJ1
ZmZlci0+Z2V0SW50ZXJuYWxmb3JtYXQoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9J
TkRFWDgpCisgICAgICAgICAgICAgICAgaXNDb25mbGljdGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmctPmlzRGVwdGhB
dHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRhY2hlZCgpKQor
ICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAgICBpZiAoYnVm
ZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVO
Q0lMKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlzRGVwdGhPclN0ZW5jaWwgPSBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNDb25mbGljdGVkKSB7CisgICAgICAgICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGlzRGVwdGhPclN0ZW5jaWwpCisgICAgICAgICAgICBtX2ZyYW1lYnVmZmVyQmluZGluZy0+c2V0
SXNBdHRhY2hlZChhdHRhY2htZW50LCB0cnVlKTsKKyAgICB9IGVsc2UgeyAvLyBEZXRhY2gKKyAg
ICAgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNU
RU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
U1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgbV9mcmFtZWJ1ZmZlckJpbmRpbmctPnNl
dElzQXR0YWNoZWQoYXR0YWNobWVudCwgZmFsc2UpOworICAgICAgICB9CisgICAgfQogICAgIG1f
Y29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5k
ZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KQEAgLTg5Nyw3ICs5MzYsOCBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRGCiAgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIKICAgICAgICAgfHwgKGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9S
X0FUVEFDSE1FTlQwCiAgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4
dDNEOjpERVBUSF9BVFRBQ0hNRU5UCi0gICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAgICAgICAmJiBhdHRhY2ht
ZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQKKyAgICAgICAgICAg
ICYmIGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCkKICAgICAgICAgfHwgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFCiAgICAgICAgICAgICAmJiBwbmFtZSAhPSBHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRQogICAgICAgICAg
ICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
VEVYVFVSRV9MRVZFTApAQCAtMTE3Niw4ICsxMjE2LDExIEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFIKICAgICAgICAgbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKLSAgICAgICAgbV9jb250ZXh0LT5n
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAg
ICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZhbHVlKSk7
CisgICAgICAgIGlmICghbV9yZW5kZXJidWZmZXJCaW5kaW5nKSB7CisgICAgICAgICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX3JlbmRlcmJ1ZmZlckJpbmRpbmctPmdldEludGVy
bmFsZm9ybWF0KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVy
biBXZWJHTEdldEluZm8oKTsKQEAgLTE1NTksOCArMTYwMiwyMSBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6cmVsZWFzZVNoYWRlCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpy
ZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGlu
dGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkK
IHsKLSAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6REVQVEhfQ09NUE9ORU5UMTY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QTQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCNV9BMToKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0I1NjU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJ
TF9JTkRFWDg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTDoKKyAg
ICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBpZiAobV9yZW5kZXJidWZmZXJCaW5kaW5nKQor
ICAgICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbGZvcm1hdChpbnRl
cm5hbGZvcm1hdCk7CisgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAgfQogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2FtcGxlQ292ZXJhZ2UoZG91YmxlIHZhbHVlLCBi
b29sIGludmVydCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5pZGwJKHJldmlzaW9uIDU1OTQ1KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNiArNDIzLDcgQEAg
bW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfQ09NUE9ORU5U
MTYgICAgICAgICAgICAgID0gMHg4MUE1OwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgU1RF
TkNJTF9JTkRFWCAgICAgICAgICAgICAgICAgID0gMHgxOTAxOwogICAgICAgICBjb25zdCB1bnNp
Z25lZCBpbnQgU1RFTkNJTF9JTkRFWDggICAgICAgICAgICAgICAgID0gMHg4RDQ4OworICAgICAg
ICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAgICAgID0gMHg4
NEY5OwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBSRU5ERVJCVUZGRVJfV0lEVEggICAg
ICAgICAgICAgPSAweDhENDI7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBSRU5ERVJCVUZG
RVJfSEVJR0hUICAgICAgICAgICAgPSAweDhENDM7CkBAIC00NDIsNiArNDQzLDcgQEAgbW9kdWxl
IGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09MT1JfQVRUQUNITUVOVDAgICAg
ICAgICAgICAgID0gMHg4Q0UwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfQVRU
QUNITUVOVCAgICAgICAgICAgICAgID0gMHg4RDAwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBp
bnQgU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgICAgICAgID0gMHg4RDIwOworICAgICAgICBjb25z
dCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgID0gMHg4MjFBOwog
CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBOT05FICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAwOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCShyZXZpc2lvbiA1NTk0NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERFUFRIX0NPTVBPTkVOVDE2ID0gMHg4MUE1
LAogICAgICAgICAgICAgU1RFTkNJTF9JTkRFWCA9IDB4MTkwMSwKICAgICAgICAgICAgIFNURU5D
SUxfSU5ERVg4ID0gMHg4RDQ4LAorICAgICAgICAgICAgREVQVEhfU1RFTkNJTCA9IDB4ODRGOSwK
ICAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKICAgICAgICAgICAgIFJF
TkRFUkJVRkZFUl9IRUlHSFQgPSAweDhENDMsCiAgICAgICAgICAgICBSRU5ERVJCVUZGRVJfSU5U
RVJOQUxfRk9STUFUID0gMHg4RDQ0LApAQCAtMzc4LDYgKzM3OSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIENPTE9SX0FUVEFDSE1FTlQwID0gMHg4Q0UwLAogICAgICAgICAg
ICAgREVQVEhfQVRUQUNITUVOVCA9IDB4OEQwMCwKICAgICAgICAgICAgIFNURU5DSUxfQVRUQUNI
TUVOVCA9IDB4OEQyMCwKKyAgICAgICAgICAgIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCA9IDB4
ODIxQSwKICAgICAgICAgICAgIE5PTkUgPSAwLAogICAgICAgICAgICAgRlJBTUVCVUZGRVJfQ09N
UExFVEUgPSAweDhDRDUsCiAgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFD
SE1FTlQgPSAweDhDRDYsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1NTk0NSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDc2LDcgKzQ3NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpm
bHVzaCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBs
b25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIGJ1ZmZlcikKIHsKICAg
ICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyRVhUKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIg
PyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7CisgICAgR0x1aW50IHJlbmRlckJ1ZmZl
ciA9IChidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7CisgICAgaWYgKGF0
dGFjaG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSB7CisgICAgICAgIDo6Z2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIERFUFRIX0FUVEFDSE1FTlQsIHJlbmRlcmJ1
ZmZlcnRhcmdldCwgcmVuZGVyQnVmZmVyKTsKKyAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyRVhUKHRhcmdldCwgU1RFTkNJTF9BVFRBQ0hNRU5ULCByZW5kZXJidWZmZXJ0YXJnZXQs
IHJlbmRlckJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVy
QnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJl
MkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWdu
ZWQgbG9uZyB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgbG9uZyBsZXZlbCkKQEAg
LTY5MSw2ICs2OTYsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNv
bQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSh1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3
aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRl
eHRPYmopOworICAgIGlmIChpbnRlcm5hbGZvcm1hdCA9PSBERVBUSF9TVEVOQ0lMKQorICAgICAg
ICBpbnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOworICAgIGVsc2UgaWYg
KGludGVybmFsZm9ybWF0ID09IERFUFRIX0NPTVBPTkVOVDE2KQorICAgICAgICBpbnRlcm5hbGZv
cm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVY
VCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIApAQCAtOTg2LDYg
Kzk5NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNpZ24KIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxv
bmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmop
OworICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkKKyAgICAg
ICAgYXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxfQVRUQUNITUVO
VCwgZWl0aGVyIHdvcmtzLgogICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gNTU5NDYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMtMTIgIFpoZW55YW8gTW8gIDx6
bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2ht
ZW50IGJlaGF2aW9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzU2MTEKKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZl
ci1vYmplY3QtYXR0YWNobWVudC5odG1sCisKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0
M0QuY3BwOiBNYXAgdG8gY29ycmVjdCBERVBUSF9TVEVOQ0lMIGZvcm1hdC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKwogMjAxMC0w
My0xMiAgR2FycmV0IEtlbGx5ICA8Z2RrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJlaXZp
ZXdlZC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCShy
ZXZpc2lvbiA1NTk0NSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDY2LDcgKzE0NjYsMTcgQEAgR0xfU0FNRV9NRVRIT0Rf
MChGaW5pc2gsIGZpbmlzaCkKIAogR0xfU0FNRV9NRVRIT0RfMChGbHVzaCwgZmx1c2gpCiAKLUdM
X1NBTUVfTUVUSE9EXzRfWDQoRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQsIGZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25n
LCBXZWJHTFJlbmRlcmJ1ZmZlciopCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2ht
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyByZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyKiBidWZmZXIp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgR0x1aW50IHJlbmRlckJ1ZmZlciA9
IEVYVFJBQ1QoYnVmZmVyKTsKKyAgICBpZiAoYXR0YWNobWVudCA9PSBERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQpIHsKKyAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdl
dCwgREVQVEhfQVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCByZW5kZXJCdWZmZXIpOwor
ICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBTVEVOQ0lMX0FU
VEFDSE1FTlQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyQnVmZmVyKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0YWNobWVu
dCwgcmVuZGVyYnVmZmVydGFyZ2V0LCByZW5kZXJCdWZmZXIpOworfQogCiBHTF9TQU1FX01FVEhP
RF81X1g0KEZyYW1lYnVmZmVyVGV4dHVyZTJERVhULCBmcmFtZWJ1ZmZlclRleHR1cmUyRCwgdW5z
aWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2ViR0xUZXh0dXJlKiwg
bG9uZykKIApAQCAtMTU4Nyw2ICsxNTk3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RnJhbWVidWZmZXJBdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBpZiAoYXR0YWNobWVudCA9PSBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAg
ICAgIGF0dGFjaG1lbnQgPSBERVBUSF9BVFRBQ0hNRU5UOyAvLyBPciBTVEVOQ0lMX0FUVEFDSE1F
TlQsIGVpdGhlciB3b3Jrcy4KICAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKIH0KIApAQCAtMTgxNyw3
ICsxODI5LDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb20KIHsK
IH0KIAotR0xfU0FNRV9NRVRIT0RfNChSZW5kZXJidWZmZXJTdG9yYWdlRVhULCByZW5kZXJidWZm
ZXJTdG9yYWdlLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFn
ZSh1bnNpZ25lZCBsb25nIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB3aWR0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBoZWln
aHQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgaWYgKGludGVybmFsZm9ybWF0
ID09IERFUFRIX1NURU5DSUwpCisgICAgICAgIGludGVybmFsZm9ybWF0ID0gR0xfREVQVEgyNF9T
VEVOQ0lMOF9FWFQ7CisgICAgZWxzZSBpZiAoaW50ZXJuYWxmb3JtYXQgPT0gREVQVEhfQ09NUE9O
RU5UMTYpCisgICAgICAgIGludGVybmFsZm9ybWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UOworICAg
IGdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KTsKK30KIAogR0xfU0FNRV9NRVRIT0RfMihTYW1wbGVDb3ZlcmFnZSwgc2FtcGxlQ292
ZXJhZ2UsIGRvdWJsZSwgYm9vbCkKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTU5NDYpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0w
My0xMiAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhbmQgdGVzdCBuZXcgZnJhbWVi
dWZmZXIgb2JqZWN0IGF0dGFjaG1lbnQgYmVoYXZpb3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTYxMQorCisgICAgICAgICogZmFzdC9jYW52YXMv
d2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZCwg
dGVzdCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlvci4KKyAgICAgICAgKiBm
YXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sOiBBZGRl
ZCwgZnJhbWVidWZmZXIgb2JqZWN0IGF0dGFjaG1lbnQgYmVoYXZpb3IuCisgICAgICAgICogZmFz
dC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQtY2FsbHMuanM6IERFUFRI
X0NPTVBPTkVOVCBpcyBubyBsb25nZXIgYSB2YWxpZCBpbnB1dCwgdXNlIERFUFRIX0NPTVBPTkVO
VDE2IGluc3RlYWQuCisKIDIwMTAtMDMtMTIgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJh
bWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1l
bnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACitUZXN0IGZyYW1l
YnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9ycworCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKK0NyZWF0ZSByZW5kZXJidWZmZXJzCitQQVNTIGdsID0gY3JlYXRlM0RDb250ZXh0
KCkgaXMgbm9uLW51bGwuCitQQVNTIGRlcHRoQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVy
KCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1Mg
c3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGRlcHRoU3RlbmNpbEJ1ZmZlciA9
IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigp
IGlzIGdsLk5PX0VSUk9SCitBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfQVRUQUNITUVOVAorUEFT
UyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRF
cnJvcigpIGlzIGdsLk5PX0VSUk9SCitBdHRhY2ggZGVwdGggdXNpbmcgU1RFTkNJTF9BVFRBQ0hN
RU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNT
IGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aCB1c2lu
ZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX09QRVJB
VElPTgorQXR0YWNoIHN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9
IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkg
aXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQKK1BB
U1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0
RXJyb3IoKSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIHN0ZW5jaWwgdXNpbmcgREVQ
VEhfU1RFTkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkg
aXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04K
K0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UCitQQVNT
IGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVy
cm9yKCkgaXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfQVRU
QUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgor
UEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggZGVwdGhT
dGVuY2lsIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURf
T1BFUkFUSU9OCitBdHRhY2ggZGVwdGgsIHRoZW4gc3RlbmNpbCwgY2F1c2luZyBjb25mbGljdAor
UEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5n
ZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04KK0F0dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZsaWN0
CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGds
LmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZB
TElEX09QRVJBVElPTgorQXR0YWNoIGRlcHRoLCB0aGVuIGRlcHRoU3RlbmNpbCwgY2F1c2luZyBj
b25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgor
UEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdldEVycm9yKCkgaXMg
Z2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aFN0ZW5jaWwsIHRoZW4gZGVwdGgsIGNh
dXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24t
bnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorUEFTUyBnbC5nZXRFcnJv
cigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggc3RlbmNpbCwgdGhlbiBkZXB0aFN0
ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIo
KSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggZGVwdGhTdGVuY2ls
LCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJh
bWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJP
UgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1v
YmplY3QtYXR0YWNobWVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw5MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorCis8c2NyaXB0PgorCit2YXIgZ2w7Cit2YXIgZmJvOwordmFyIGRlcHRoQnVmZmVyOwordmFy
IHN0ZW5jaWxCdWZmZXI7Cit2YXIgZGVwdGhTdGVuY2lsQnVmZmVyOwordmFyIHdpZHRoID0gMjsK
K3ZhciBoZWlnaHQgPSAyOworCitmdW5jdGlvbiB0ZXN0QXR0YWNobWVudChhdHRhY2htZW50LCBi
dWZmZXIsIGlzQ29uZmxpY3RlZCkKK3sKKyAgICBzaG91bGRCZU5vbk51bGwoImZibyA9IGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IGF0dGFjaG1lbnQsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICBzaG91bGRCZSgiZ2wu
Z2V0RXJyb3IoKSIsIGlzQ29uZmxpY3RlZCA/ICJnbC5JTlZBTElEX09QRVJBVElPTiIgOiAiZ2wu
Tk9fRVJST1IiKTsKK30KKworZnVuY3Rpb24gdGVzdEF0dGFjaG1lbnRzKGF0dGFjaG1lbnQwLCBi
dWZmZXIwLCBhdHRhY2htZW50MSwgYnVmZmVyMSwgaXNDb25mbGljdGVkKQoreworICAgIHNob3Vs
ZEJlTm9uTnVsbCgiZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSIpOworICAgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudDAsIGdsLlJFTkRFUkJVRkZFUiwgYnVm
ZmVyMCk7CisgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKyAg
ICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudDEs
IGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyMSk7CisgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCki
LCBpc0NvbmZsaWN0ZWQgPyAiZ2wuSU5WQUxJRF9PUEVSQVRJT04iIDogImdsLk5PX0VSUk9SIik7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJl
aGF2aW9ycyIpOworCitkZWJ1ZygiQ3JlYXRlIHJlbmRlcmJ1ZmZlcnMiKTsKK3Nob3VsZEJlTm9u
TnVsbCgiZ2wgPSBjcmVhdGUzRENvbnRleHQoKSIpOworc2hvdWxkQmVOb25OdWxsKCJkZXB0aEJ1
ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7CitnbC5iaW5kUmVuZGVyYnVmZmVyKGds
LlJFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5S
RU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKK3Nob3Vs
ZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CitzaG91bGRCZU5vbk51bGwoInN0
ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOworZ2wuYmluZFJlbmRlcmJ1
ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHN0ZW5jaWxCdWZmZXIpOworZ2wucmVuZGVyYnVmZmVyU3Rv
cmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlNURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0KTsK
K3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CitzaG91bGRCZU5vbk51
bGwoImRlcHRoU3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7CitnbC5i
aW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2lsQnVmZmVyKTsKK2ds
LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBUSF9TVEVOQ0lMLCB3
aWR0aCwgaGVpZ2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7
CisKK2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfQVRUQUNITUVOVCIpOwordGVzdEF0
dGFjaG1lbnQoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGZhbHNlKTsKK2RlYnVn
KCJBdHRhY2ggZGVwdGggdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVu
dChnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsKK2RlYnVnKCJBdHRh
Y2ggZGVwdGggdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVu
dChnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsKK2RlYnVn
KCJBdHRhY2ggc3RlbmNpbCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2ht
ZW50KGdsLlNURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgZmFsc2UpOworZGVidWco
IkF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50
KGdsLkRFUFRIX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFj
aCBzdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1l
bnQoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVyLCB0cnVlKTsKK2Rl
YnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCIp
OwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5j
aWxCdWZmZXIsIGZhbHNlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIERFUFRI
X0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRo
U3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoU3RlbmNpbCB1c2luZyBT
VEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLlNURU5DSUxfQVRUQUNITUVO
VCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVlKTsKKworZGVidWcoIkF0dGFjaCBkZXB0aCwgdGhl
biBzdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhf
QVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGdsLlNURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1
ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVwdGgsIGNhdXNpbmcg
Y29uZmxpY3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5j
aWxCdWZmZXIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsKK2RlYnVn
KCJBdHRhY2ggZGVwdGgsIHRoZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Iik7Cit0
ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGdsLkRFUFRI
X1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVlKTsKK2RlYnVnKCJB
dHRhY2ggZGVwdGhTdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZsaWN0Iik7Cit0ZXN0
QXR0YWNobWVudHMoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZm
ZXIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsKK2RlYnVnKCJBdHRh
Y2ggc3RlbmNpbCwgdGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QiKTsKK3Rlc3RB
dHRhY2htZW50cyhnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgZ2wuREVQVEhfU1RF
TkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFj
aCBkZXB0aFN0ZW5jaWwsIHRoZW4gc3RlbmNpbCwgY2F1c2luZyBjb25mbGljdCIpOwordGVzdEF0
dGFjaG1lbnRzKGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVy
LCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUpOworCitzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3Qt
Z2V0LWNhbGxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCShyZXZpc2lvbiA1NTk0NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0
LWNhbGxzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHZhciByZW5kZXJidWZm
ZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIKIHNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAn
KTsKIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOwog
c2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwotZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShn
bC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMiwgMik7CitnbC5yZW5kZXJidWZm
ZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5UMTYsIDIsIDIpOwog
c2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwogZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwg
cmVuZGVyYnVmZmVyKTsKIC8vIEZJWE1FOiBvbiBzb21lIG1hY2hpbmVzIChpbiBwYXJ0aWN1bGFy
IHRoZSBXZWJLaXQgY29tbWl0IGJvdHMpIHRoZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51580</attachid>
            <date>2010-03-24 19:12:20 -0700</date>
            <delta_ts>2010-03-31 19:05:14 -0700</delta_ts>
            <desc>revised patch: made changes after Ken Russell&apos;s refac</desc>
            <filename>attach.patch</filename>
            <type>text/plain</type>
            <size>28281</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjQ3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMDMtMjQgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9yLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNo
bWVudC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDog
S2VlcCB0cmFjayBvZiBhdHRhY2hlZCBzdGVuY2lsL2RlcHRoIHJlbmRlcmJ1ZmZlcnMgaW4gV2Vi
R0xGcmFtZWJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OldlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0SXNB
dHRhY2hlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzRGVwdGhBdHRhY2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppc1N0ZW5jaWxBdHRhY2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppc0RlcHRoU3RlbmNpbEF0dGFj
aGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHA6IEtlZXAg
dHJhY2sgb2YgaW50ZXJuYWxmb3JtYXQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1
ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyYnVmZmVyLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJidWZmZXI6
OnNldEludGVybmFsZm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyYnVmZmVy
OjpnZXRJbnRlcm5hbGZvcm1hdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOiBEZXRlY3Qgc3RlbmNpbC9kZXB0aCBidWZmZXIgY29u
ZmxpY3RzLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOiBIYW5kbGluZyBERVBUSF9TVEVOQ0lMIGNhc2Uu
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcik6IEdldCBjb3JyZWN0IFdlYkdMIGludGVybmFsZm9ybWF0LgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKTogRGV0
ZWN0IGlsbGVnYWwgZW51bXMuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmlkbDogQWRkIERFUFRIX1NURU5DSUwgZW51bXMuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDogQWRkIERFUFRIX1NURU5DSUwgZW51bXMuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwOiBNYXAgdG8gY29ycmVjdCBE
RVBUSF9TVEVOQ0lMIGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorCiAyMDEw
LTAzLTI0ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5v
IHJldmlldywgcm9sbGluZyBvdXQgcjU2NDUzLgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwyOCBA
QCBQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IFdlYkdMRnJhbWViCiAKIFdlYkdMRnJhbWVi
dWZmZXI6OldlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAgICAg
OiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pc0RlcHRoQXR0YWNoZWQoZmFsc2UpCisgICAg
LCBtX2lzU3RlbmNpbEF0dGFjaGVkKGZhbHNlKQorICAgICwgbV9pc0RlcHRoU3RlbmNpbEF0dGFj
aGVkKGZhbHNlKQogewogICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNE
KCktPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOwogfQogCit2b2lkIFdlYkdMRnJhbWVidWZmZXI6OnNl
dElzQXR0YWNoZWQodW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBib29sIGlzQXR0YWNoZWQpCit7
CisgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfQVRUQUNITUVOVDoKKyAgICAgICAgbV9pc0RlcHRoQXR0YWNoZWQgPSBpc0F0dGFjaGVk
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgIG1faXNTdGVuY2lsQXR0YWNoZWQgPSBpc0F0dGFjaGVkOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCA9IGlzQXR0YWNoZWQ7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpfZGVs
ZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQoKS0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS0+ZGVsZXRlRnJhbWVidWZmZXIob2JqZWN0KTsKSW5kZXg6IFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwx
MCArMzksMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCopOwogICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJc0F0dGFjaGVkKHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgYm9vbCBpc0F0dGFjaGVkKTsKKworICAgICAgICBib29sIGlzRGVwdGhBdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXB0aEF0dGFjaGVkOyB9CisgICAgICAgIGJvb2wg
aXNTdGVuY2lsQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RlbmNpbEF0dGFjaGVkOyB9
CisgICAgICAgIGJvb2wgaXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEZXB0aFN0ZW5jaWxBdHRhY2hlZDsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJH
TEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgICAgICAKICAgICAgICAg
dmlydHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICAgIHBy
aXZhdGU6CisgICAgICAgIGJvb2wgbV9pc0RlcHRoQXR0YWNoZWQ7CisgICAgICAgIGJvb2wgbV9p
c1N0ZW5jaWxBdHRhY2hlZDsKKyAgICAgICAgYm9vbCBtX2lzRGVwdGhTdGVuY2lsQXR0YWNoZWQ7
CiAgICAgfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMiArNDQsMTQgQEAgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xSZW5kZQog
CiBXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KiBjdHgpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pbnRlcm5hbGZvcm1h
dChHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQpCiB7CiAgICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+
Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkpOwogfQogCiBXZWJHTFJl
bmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgs
IFBsYXRmb3JtM0RPYmplY3Qgb2JqKQogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKKyAgICAsIG1f
aW50ZXJuYWxmb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE0KQogewogICAgIHNldE9iamVj
dChvYmosIGZhbHNlKTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJi
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVm
ZmVyLmgJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMSArNDMsMTcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5n
IHRoZXNlIG9iamVjdHMKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZm
ZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRl
cmJ1ZmZlcik7CiAKKyAgICAgICAgdm9pZCBzZXRJbnRlcm5hbGZvcm1hdCh1bnNpZ25lZCBsb25n
IGludGVybmFsZm9ybWF0KSB7IG1faW50ZXJuYWxmb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsgfQor
ICAgICAgICB1bnNpZ25lZCBsb25nIGdldEludGVybmFsZm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbGZvcm1hdDsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJHTFJlbmRl
cmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgV2ViR0xSZW5kZXJidWZm
ZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CiAgICAgICAgIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKKwor
ICAgICAgcHJpdmF0ZToKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX2ludGVybmFsZm9ybWF0Owog
ICAgIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysr
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzkwLDYgKzc5MCw0NSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJh
bWVidWZmZXJSCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBpZiAoYnVmZmVyLT5vYmplY3QoKSkgeworICAgICAgICBib29sIGlzQ29uZmxpY3RlZCA9IGZh
bHNlOworICAgICAgICBib29sIGlzRGVwdGhPclN0ZW5jaWwgPSB0cnVlOworICAgICAgICBzd2l0
Y2ggKGF0dGFjaG1lbnQpIHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
QVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNEZXB0
aFN0ZW5jaWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRh
Y2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9DT01QT05FTlQxNikKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5D
SUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNE
ZXB0aFN0ZW5jaWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc0RlcHRoQXR0
YWNoZWQoKSkKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOworICAgICAgICAg
ICAgaWYgKGJ1ZmZlci0+Z2V0SW50ZXJuYWxmb3JtYXQoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9JTkRFWDgpCisgICAgICAgICAgICAgICAgaXNDb25mbGljdGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmct
PmlzRGVwdGhBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRh
Y2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9TVEVOQ0lMKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlzRGVwdGhPclN0
ZW5jaWwgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNDb25mbGljdGVkKSB7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGlzRGVwdGhPclN0ZW5jaWwpCisgICAgICAgICAgICBtX2ZyYW1lYnVmZmVyQmlu
ZGluZy0+c2V0SXNBdHRhY2hlZChhdHRhY2htZW50LCB0cnVlKTsKKyAgICB9IGVsc2UgeyAvLyBE
ZXRhY2gKKyAgICAgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgbV9mcmFtZWJ1ZmZlckJp
bmRpbmctPnNldElzQXR0YWNoZWQoYXR0YWNobWVudCwgZmFsc2UpOworICAgICAgICB9CisgICAg
fQogICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2ht
ZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KQEAgLTg5Nyw3ICs5MzYsOCBAQCBXZWJHTEdldEluZm8gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGCiAgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIKICAgICAgICAgfHwgKGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0FUVEFDSE1FTlQwCiAgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UCi0gICAgICAgICAgICAmJiBhdHRhY2htZW50
ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAgICAgICAm
JiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQKKyAg
ICAgICAgICAgICYmIGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5D
SUxfQVRUQUNITUVOVCkKICAgICAgICAgfHwgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFCiAgICAgICAgICAgICAmJiBwbmFtZSAh
PSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRQog
ICAgICAgICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfVEVYVFVSRV9MRVZFTApAQCAtMTE3Niw4ICsxMjE2LDExIEBAIFdlYkdMR2V0SW5m
byBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFIKICAgICAgICAgbV9jb250ZXh0LT5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKLSAgICAgICAgbV9j
b250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUp
OwotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KHZhbHVlKSk7CisgICAgICAgIGlmICghbV9yZW5kZXJidWZmZXJCaW5kaW5nKSB7CisgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX3JlbmRlcmJ1ZmZlckJpbmRpbmct
PmdldEludGVybmFsZm9ybWF0KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKQEAgLTE1NTksOCArMTYwMiwyMSBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVNoYWRlCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCkKIHsKLSAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KSB7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQTQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCNV9BMToKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I1NjU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U1RFTkNJTF9JTkRFWDg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RF
TkNJTDoKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBpZiAobV9yZW5kZXJidWZmZXJC
aW5kaW5nKQorICAgICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbGZv
cm1hdChpbnRlcm5hbGZvcm1hdCk7CisgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAg
fQogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2FtcGxlQ292ZXJhZ2UoZG91Ymxl
IHZhbHVlLCBib29sIGludmVydCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNiAr
NDIzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhf
Q09NUE9ORU5UMTYgICAgICAgICAgICAgID0gMHg4MUE1OwogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgU1RFTkNJTF9JTkRFWCAgICAgICAgICAgICAgICAgID0gMHgxOTAxOwogICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgU1RFTkNJTF9JTkRFWDggICAgICAgICAgICAgICAgID0gMHg4RDQ4
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAg
ICAgID0gMHg4NEY5OwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBSRU5ERVJCVUZGRVJf
V0lEVEggICAgICAgICAgICAgPSAweDhENDI7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBS
RU5ERVJCVUZGRVJfSEVJR0hUICAgICAgICAgICAgPSAweDhENDM7CkBAIC00NDIsNiArNDQzLDcg
QEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09MT1JfQVRUQUNI
TUVOVDAgICAgICAgICAgICAgID0gMHg4Q0UwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
REVQVEhfQVRUQUNITUVOVCAgICAgICAgICAgICAgID0gMHg4RDAwOwogICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgICAgICAgID0gMHg4RDIwOworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgID0g
MHg4MjFBOwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBOT05FICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAwOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA1NjQ3MykKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERFUFRIX0NPTVBPTkVOVDE2
ID0gMHg4MUE1LAogICAgICAgICAgICAgU1RFTkNJTF9JTkRFWCA9IDB4MTkwMSwKICAgICAgICAg
ICAgIFNURU5DSUxfSU5ERVg4ID0gMHg4RDQ4LAorICAgICAgICAgICAgREVQVEhfU1RFTkNJTCA9
IDB4ODRGOSwKICAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKICAgICAg
ICAgICAgIFJFTkRFUkJVRkZFUl9IRUlHSFQgPSAweDhENDMsCiAgICAgICAgICAgICBSRU5ERVJC
VUZGRVJfSU5URVJOQUxfRk9STUFUID0gMHg4RDQ0LApAQCAtMzc4LDYgKzM3OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIENPTE9SX0FUVEFDSE1FTlQwID0gMHg4Q0UwLAog
ICAgICAgICAgICAgREVQVEhfQVRUQUNITUVOVCA9IDB4OEQwMCwKICAgICAgICAgICAgIFNURU5D
SUxfQVRUQUNITUVOVCA9IDB4OEQyMCwKKyAgICAgICAgICAgIERFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCA9IDB4ODIxQSwKICAgICAgICAgICAgIE5PTkUgPSAwLAogICAgICAgICAgICAgRlJBTUVC
VUZGRVJfQ09NUExFVEUgPSAweDhDRDUsCiAgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQgPSAweDhDRDYsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1NjQ3
MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFj
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDcgKzQ3NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmbHVzaCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1
bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0
LCBidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7CisgICAgR0x1aW50IHJl
bmRlcmJ1ZmZlciA9IChidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7Cisg
ICAgaWYgKGF0dGFjaG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSB7CisgICAgICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIERFUFRIX0FUVEFDSE1FTlQs
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgU1RFTkNJTF9BVFRBQ0hNRU5ULCByZW5kZXJidWZm
ZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIDo6Z2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZm
ZXJUZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVu
dCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgbG9uZyBs
ZXZlbCkKQEAgLTY5MSw2ICs2OTYsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFz
ZVNoYWRlckNvbQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7CiAgICAgZW5zdXJlQ29udGV4
dChtX2NvbnRleHRPYmopOworICAgIGlmIChpbnRlcm5hbGZvcm1hdCA9PSBERVBUSF9TVEVOQ0lM
KQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOworICAg
IGVsc2UgaWYgKGludGVybmFsZm9ybWF0ID09IERFUFRIX0NPTVBPTkVOVDE2KQorICAgICAgICBp
bnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKICAgICA6OmdsUmVuZGVyYnVmZmVy
U3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIApA
QCAtOTg2LDYgKzk5NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNp
Z24KIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2Nv
bnRleHRPYmopOworICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCkKKyAgICAgICAgYXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxf
QVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgogICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTY0NzYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMtMjQgIFpoZW55
YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVj
dCBhdHRhY2htZW50IGJlaGF2aW9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9m
cmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCisKKyAgICAgICAgKiBzcmMvV2ViR3Jh
cGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHA6IE1hcCB0byBjb3JyZWN0IERFUFRIX1NURU5D
SUwgZm9ybWF0LgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJ
bXBsOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2KToKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbDo6
cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisKIDIwMTAtMDMtMjQgIERtaXRyeSBUaXRvdiAgPGRpbWlj
aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCByNTY0NTMu
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250
ZXh0M0REZWZhdWx0SW1wbC5jcHAJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzY5LDcgKzc2OSwxNiBAQCBERUxFR0FURV9UT19HTChmaW5pc2gsIEZpbmlzaCkKIAogREVM
RUdBVEVfVE9fR0woZmx1c2gsIEZsdXNoKQogCi1ERUxFR0FURV9UT19HTF80KGZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyLCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2ViR0xJZCkKK3ZvaWQgV2ViR3JhcGhpY3ND
b250ZXh0M0REZWZhdWx0SW1wbDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBy
ZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMSWQgYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIGlmIChhdHRhY2htZW50ID09IEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCkgeworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgR0xfREVQ
VEhfQVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOworICAgICAgICBnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBy
ZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJn
ZXQsIGJ1ZmZlcik7Cit9CiAKIERFTEVHQVRFX1RPX0dMXzUoZnJhbWVidWZmZXJUZXh0dXJlMkQs
IEZyYW1lYnVmZmVyVGV4dHVyZTJERVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCBXZWJHTElkLCBsb25nKQogCkBAIC04NjksNyArODc4LDE0IEBAIHVuc2ln
bmVkIGxvbmcgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWwKIAogREVMRUdBVEVfVE9fR0xfMihn
ZXRGbG9hdHYsIEdldEZsb2F0diwgdW5zaWduZWQgbG9uZywgZmxvYXQqKQogCi1ERUxFR0FURV9U
T19HTF80KGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2LCBHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgaW50KikKK3ZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1w
bDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBpZiAoYXR0YWNobWVudCA9PSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAg
IGF0dGFjaG1lbnQgPSBHTF9ERVBUSF9BVFRBQ0hNRU5UOyAvLyBPciBHTF9TVEVOQ0lMX0FUVEFD
SE1FTlQsIGVpdGhlciB3b3Jrcy4KKyAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKK30KIAogREVMRUdB
VEVfVE9fR0xfMihnZXRJbnRlZ2VydiwgR2V0SW50ZWdlcnYsIHVuc2lnbmVkIGxvbmcsIGludCop
CiAKQEAgLTk5MCw3ICsxMDA2LDE4IEBAIHZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0
SW1wbDo6cmUKIHsKIH0KIAotREVMRUdBVEVfVE9fR0xfNChyZW5kZXJidWZmZXJTdG9yYWdlLCBS
ZW5kZXJidWZmZXJTdG9yYWdlRVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQordm9pZCBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1
bHRJbXBsOjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGhlaWdodCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBpZiAoaW50
ZXJuYWxmb3JtYXQgPT0gR0xfREVQVEhfU1RFTkNJTCkKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQg
PSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKKyAgICBlbHNlIGlmIChpbnRlcm5hbGZvcm1hdCA9
PSBHTF9ERVBUSF9DT01QT05FTlQxNikKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBHTF9ERVBU
SF9DT01QT05FTlQ7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRhcmdldCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworfQogCiBERUxFR0FURV9UT19HTF8yKHNhbXBsZUNv
dmVyYWdlLCBTYW1wbGVDb3ZlcmFnZSwgZG91YmxlLCBib29sKQogCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA1NjQ3NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDEwLTAzLTI0ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGFu
ZCB0ZXN0IG5ldyBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlvci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NjExCisKKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC1leHBl
Y3RlZC50eHQ6IEFkZGVkLCB0ZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2
aW9yLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRh
Y2htZW50Lmh0bWw6IEFkZGVkLCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlv
ci4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdl
dC1jYWxscy5qczogREVQVEhfQ09NUE9ORU5UIGlzIG5vIGxvbmdlciBhIHZhbGlkIGlucHV0LCB1
c2UgREVQVEhfQ09NUE9ORU5UMTYgaW5zdGVhZC4KKwogMjAxMC0wMy0yNCAgRXJpYyBVaHJoYW5l
IDxlcmljdUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRE9NQ29yZUV4Y2VwdGlvbiBuZWVkcyBO
b1N0YXRpY1RhYmxlcyBtb2RpZmllcgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRh
Y2htZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorVGVzdCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNo
bWVudCBiZWhhdmlvcnMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitDcmVhdGUgcmVu
ZGVyYnVmZmVycworUEFTUyBnbCA9IGNyZWF0ZTNEQ29udGV4dCgpIGlzIG5vbi1udWxsLgorUEFT
UyBkZXB0aEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIHN0ZW5jaWxCdWZmZXIgPSBnbC5j
cmVhdGVSZW5kZXJidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBn
bC5OT19FUlJPUgorUEFTUyBkZXB0aFN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZm
ZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorQXR0
YWNoIGRlcHRoIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJh
bWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJP
UgorQXR0YWNoIGRlcHRoIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5j
cmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGds
LklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRB
Q0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQ
QVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBzdGVuY2ls
IHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZl
cigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitBdHRh
Y2ggc3RlbmNpbCB1c2luZyBERVBUSF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04KK0F0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVO
VAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggZGVwdGhTdGVuY2ls
IHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9S
CitBdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0g
Z2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBp
cyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIGRlcHRoU3RlbmNpbCB1c2luZyBTVEVOQ0lM
X0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVs
bC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIGRl
cHRoLCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19F
UlJPUgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2gg
c3RlbmNpbCwgdGhlbiBkZXB0aCwgY2F1c2luZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVh
dGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5P
X0VSUk9SCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFj
aCBkZXB0aCwgdGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0g
Z2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBp
cyBnbC5OT19FUlJPUgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9O
CitBdHRhY2ggZGVwdGhTdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZsaWN0CitQQVNT
IGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVy
cm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX09Q
RVJBVElPTgorQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNvbmZs
aWN0CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNT
IGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5J
TlZBTElEX09QRVJBVElPTgorQXR0YWNoIGRlcHRoU3RlbmNpbCwgdGhlbiBzdGVuY2lsLCBjYXVz
aW5nIGNvbmZsaWN0CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51
bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVm
ZmVyLW9iamVjdC1hdHRhY2htZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTMgQEAK
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dl
YmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKwordmFy
IGdsOwordmFyIGZibzsKK3ZhciBkZXB0aEJ1ZmZlcjsKK3ZhciBzdGVuY2lsQnVmZmVyOwordmFy
IGRlcHRoU3RlbmNpbEJ1ZmZlcjsKK3ZhciB3aWR0aCA9IDI7Cit2YXIgaGVpZ2h0ID0gMjsKKwor
ZnVuY3Rpb24gdGVzdEF0dGFjaG1lbnQoYXR0YWNobWVudCwgYnVmZmVyLCBpc0NvbmZsaWN0ZWQp
Cit7CisgICAgc2hvdWxkQmVOb25OdWxsKCJmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIik7
CisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgIGdsLmZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBhdHRhY2htZW50LCBnbC5SRU5E
RVJCVUZGRVIsIGJ1ZmZlcik7CisgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCBpc0NvbmZs
aWN0ZWQgPyAiZ2wuSU5WQUxJRF9PUEVSQVRJT04iIDogImdsLk5PX0VSUk9SIik7Cit9CisKK2Z1
bmN0aW9uIHRlc3RBdHRhY2htZW50cyhhdHRhY2htZW50MCwgYnVmZmVyMCwgYXR0YWNobWVudDEs
IGJ1ZmZlcjEsIGlzQ29uZmxpY3RlZCkKK3sKKyAgICBzaG91bGRCZU5vbk51bGwoImZibyA9IGds
LmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIGF0dGFjaG1lbnQwLCBnbC5SRU5ERVJCVUZGRVIsIGJ1ZmZlcjApOworICAgIHNob3VsZEJl
KCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQxLCBnbC5SRU5ERVJCVUZGRVIsIGJ1
ZmZlcjEpOworICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgaXNDb25mbGljdGVkID8gImds
LklOVkFMSURfT1BFUkFUSU9OIiA6ICJnbC5OT19FUlJPUiIpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlvcnMiKTsKKworZGVidWco
IkNyZWF0ZSByZW5kZXJidWZmZXJzIik7CitzaG91bGRCZU5vbk51bGwoImdsID0gY3JlYXRlM0RD
b250ZXh0KCkiKTsKK3Nob3VsZEJlTm9uTnVsbCgiZGVwdGhCdWZmZXIgPSBnbC5jcmVhdGVSZW5k
ZXJidWZmZXIoKSIpOworZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGRlcHRo
QnVmZmVyKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBU
SF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7CitzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIs
ICJnbC5OT19FUlJPUiIpOworc2hvdWxkQmVOb25OdWxsKCJzdGVuY2lsQnVmZmVyID0gZ2wuY3Jl
YXRlUmVuZGVyYnVmZmVyKCkiKTsKK2dsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVS
LCBzdGVuY2lsQnVmZmVyKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVS
LCBnbC5TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhlaWdodCk7CitzaG91bGRCZSgiZ2wuZ2V0RXJy
b3IoKSIsICJnbC5OT19FUlJPUiIpOworc2hvdWxkQmVOb25OdWxsKCJkZXB0aFN0ZW5jaWxCdWZm
ZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOworZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5S
RU5ERVJCVUZGRVIsIGRlcHRoU3RlbmNpbEJ1ZmZlcik7CitnbC5yZW5kZXJidWZmZXJTdG9yYWdl
KGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfU1RFTkNJTCwgd2lkdGgsIGhlaWdodCk7CitzaG91
bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5OT19FUlJPUiIpOworCitkZWJ1ZygiQXR0YWNoIGRl
cHRoIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLkRFUFRIX0FU
VEFDSE1FTlQsIGRlcHRoQnVmZmVyLCBmYWxzZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoIHVzaW5n
IFNURU5DSUxfQVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuU1RFTkNJTF9BVFRBQ0hN
RU5ULCBkZXB0aEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoIHVzaW5nIERFUFRI
X1NURU5DSUxfQVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfU1RFTkNJTF9B
VFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIHN0ZW5jaWwgdXNp
bmcgU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVudChnbC5TVEVOQ0lMX0FUVEFD
SE1FTlQsIHN0ZW5jaWxCdWZmZXIsIGZhbHNlKTsKK2RlYnVnKCJBdHRhY2ggc3RlbmNpbCB1c2lu
ZyBERVBUSF9BVFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVudChnbC5ERVBUSF9BVFRBQ0hNRU5U
LCBzdGVuY2lsQnVmZmVyLCB0cnVlKTsKK2RlYnVnKCJBdHRhY2ggc3RlbmNpbCB1c2luZyBERVBU
SF9TVEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLkRFUFRIX1NURU5DSUxf
QVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoU3Rl
bmNpbCB1c2luZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGds
LkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCBmYWxzZSk7Citk
ZWJ1ZygiQXR0YWNoIGRlcHRoU3RlbmNpbCB1c2luZyBERVBUSF9BVFRBQ0hNRU5UIik7Cit0ZXN0
QXR0YWNobWVudChnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIHRydWUp
OworZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UIik7
Cit0ZXN0QXR0YWNobWVudChnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZl
ciwgdHJ1ZSk7CisKK2RlYnVnKCJBdHRhY2ggZGVwdGgsIHRoZW4gc3RlbmNpbCwgY2F1c2luZyBj
b25mbGljdCIpOwordGVzdEF0dGFjaG1lbnRzKGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVm
ZmVyLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUpOworZGVidWco
IkF0dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZsaWN0Iik7Cit0ZXN0QXR0
YWNobWVudHMoZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVyLCBnbC5ERVBUSF9B
VFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoLCB0aGVu
IGRlcHRoU3RlbmNpbCwgY2F1c2luZyBjb25mbGljdCIpOwordGVzdEF0dGFjaG1lbnRzKGdsLkRF
UFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQs
IGRlcHRoU3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoU3RlbmNpbCwg
dGhlbiBkZXB0aCwgY2F1c2luZyBjb25mbGljdCIpOwordGVzdEF0dGFjaG1lbnRzKGdsLkRFUFRI
X1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCBnbC5ERVBUSF9BVFRBQ0hN
RU5ULCBkZXB0aEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVw
dGhTdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhf
QVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVw
dGhTdGVuY2lsQnVmZmVyLCB0cnVlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsLCB0aGVu
IHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgZ2wuU1RFTkNJTF9BVFRBQ0hN
RU5ULCBzdGVuY2lsQnVmZmVyLCB0cnVlKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdldC1jYWxscy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2Jq
ZWN0LWdldC1jYWxscy5qcwkocmV2aXNpb24gNTY0NzMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdldC1jYWxscy5qcwkod29ya2luZyBj
b3B5KQpAQCAtNTIsNyArNTIsNyBAQCB2YXIgcmVuZGVyYnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVy
YnVmZmVyCiBzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CiBnbC5iaW5kUmVuZGVyYnVm
ZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKIHNob3VsZEJlKCdnbC5nZXRFcnJv
cigpJywgJzAnKTsKLWdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5E
RVBUSF9DT01QT05FTlQsIDIsIDIpOworZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJC
VUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCAyLCAyKTsKIHNob3VsZEJlKCdnbC5nZXRFcnJv
cigpJywgJzAnKTsKIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CiAvLyBG
SVhNRTogb24gc29tZSBtYWNoaW5lcyAoaW4gcGFydGljdWxhciB0aGUgV2ViS2l0IGNvbW1pdCBi
b3RzKSB0aGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52236</attachid>
            <date>2010-03-31 19:04:20 -0700</date>
            <delta_ts>2010-03-31 19:10:59 -0700</delta_ts>
            <desc>revised patch: skip the framebuffer-object-attachment.html test on snow leopard</desc>
            <filename>attach.patch</filename>
            <type>text/plain</type>
            <size>29080</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjQ3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMDMtMjQgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9yLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNo
bWVudC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDog
S2VlcCB0cmFjayBvZiBhdHRhY2hlZCBzdGVuY2lsL2RlcHRoIHJlbmRlcmJ1ZmZlcnMgaW4gV2Vi
R0xGcmFtZWJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OldlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0SXNB
dHRhY2hlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzRGVwdGhBdHRhY2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppc1N0ZW5jaWxBdHRhY2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppc0RlcHRoU3RlbmNpbEF0dGFj
aGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHA6IEtlZXAg
dHJhY2sgb2YgaW50ZXJuYWxmb3JtYXQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1
ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyYnVmZmVyLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJidWZmZXI6
OnNldEludGVybmFsZm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyYnVmZmVy
OjpnZXRJbnRlcm5hbGZvcm1hdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOiBEZXRlY3Qgc3RlbmNpbC9kZXB0aCBidWZmZXIgY29u
ZmxpY3RzLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOiBIYW5kbGluZyBERVBUSF9TVEVOQ0lMIGNhc2Uu
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcik6IEdldCBjb3JyZWN0IFdlYkdMIGludGVybmFsZm9ybWF0LgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKTogRGV0
ZWN0IGlsbGVnYWwgZW51bXMuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmlkbDogQWRkIERFUFRIX1NURU5DSUwgZW51bXMuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDogQWRkIERFUFRIX1NURU5DSUwgZW51bXMuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwOiBNYXAgdG8gY29ycmVjdCBE
RVBUSF9TVEVOQ0lMIGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorCiAyMDEw
LTAzLTI0ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5v
IHJldmlldywgcm9sbGluZyBvdXQgcjU2NDUzLgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwyOCBA
QCBQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IFdlYkdMRnJhbWViCiAKIFdlYkdMRnJhbWVi
dWZmZXI6OldlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAgICAg
OiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pc0RlcHRoQXR0YWNoZWQoZmFsc2UpCisgICAg
LCBtX2lzU3RlbmNpbEF0dGFjaGVkKGZhbHNlKQorICAgICwgbV9pc0RlcHRoU3RlbmNpbEF0dGFj
aGVkKGZhbHNlKQogewogICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNE
KCktPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOwogfQogCit2b2lkIFdlYkdMRnJhbWVidWZmZXI6OnNl
dElzQXR0YWNoZWQodW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBib29sIGlzQXR0YWNoZWQpCit7
CisgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfQVRUQUNITUVOVDoKKyAgICAgICAgbV9pc0RlcHRoQXR0YWNoZWQgPSBpc0F0dGFjaGVk
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgIG1faXNTdGVuY2lsQXR0YWNoZWQgPSBpc0F0dGFjaGVkOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCA9IGlzQXR0YWNoZWQ7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpfZGVs
ZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQoKS0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS0+ZGVsZXRlRnJhbWVidWZmZXIob2JqZWN0KTsKSW5kZXg6IFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwx
MCArMzksMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCopOwogICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJc0F0dGFjaGVkKHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgYm9vbCBpc0F0dGFjaGVkKTsKKworICAgICAgICBib29sIGlzRGVwdGhBdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXB0aEF0dGFjaGVkOyB9CisgICAgICAgIGJvb2wg
aXNTdGVuY2lsQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RlbmNpbEF0dGFjaGVkOyB9
CisgICAgICAgIGJvb2wgaXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEZXB0aFN0ZW5jaWxBdHRhY2hlZDsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJH
TEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgICAgICAKICAgICAgICAg
dmlydHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICAgIHBy
aXZhdGU6CisgICAgICAgIGJvb2wgbV9pc0RlcHRoQXR0YWNoZWQ7CisgICAgICAgIGJvb2wgbV9p
c1N0ZW5jaWxBdHRhY2hlZDsKKyAgICAgICAgYm9vbCBtX2lzRGVwdGhTdGVuY2lsQXR0YWNoZWQ7
CiAgICAgfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMiArNDQsMTQgQEAgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xSZW5kZQog
CiBXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KiBjdHgpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pbnRlcm5hbGZvcm1h
dChHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQpCiB7CiAgICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+
Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkpOwogfQogCiBXZWJHTFJl
bmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgs
IFBsYXRmb3JtM0RPYmplY3Qgb2JqKQogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKKyAgICAsIG1f
aW50ZXJuYWxmb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE0KQogewogICAgIHNldE9iamVj
dChvYmosIGZhbHNlKTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJi
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVm
ZmVyLmgJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMSArNDMsMTcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5n
IHRoZXNlIG9iamVjdHMKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZm
ZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRl
cmJ1ZmZlcik7CiAKKyAgICAgICAgdm9pZCBzZXRJbnRlcm5hbGZvcm1hdCh1bnNpZ25lZCBsb25n
IGludGVybmFsZm9ybWF0KSB7IG1faW50ZXJuYWxmb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsgfQor
ICAgICAgICB1bnNpZ25lZCBsb25nIGdldEludGVybmFsZm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbGZvcm1hdDsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJHTFJlbmRl
cmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgV2ViR0xSZW5kZXJidWZm
ZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CiAgICAgICAgIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKKwor
ICAgICAgcHJpdmF0ZToKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX2ludGVybmFsZm9ybWF0Owog
ICAgIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysr
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzkwLDYgKzc5MCw0NSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJh
bWVidWZmZXJSCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBpZiAoYnVmZmVyLT5vYmplY3QoKSkgeworICAgICAgICBib29sIGlzQ29uZmxpY3RlZCA9IGZh
bHNlOworICAgICAgICBib29sIGlzRGVwdGhPclN0ZW5jaWwgPSB0cnVlOworICAgICAgICBzd2l0
Y2ggKGF0dGFjaG1lbnQpIHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
QVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNEZXB0
aFN0ZW5jaWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRh
Y2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9DT01QT05FTlQxNikKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5D
SUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNE
ZXB0aFN0ZW5jaWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc0RlcHRoQXR0
YWNoZWQoKSkKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOworICAgICAgICAg
ICAgaWYgKGJ1ZmZlci0+Z2V0SW50ZXJuYWxmb3JtYXQoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9JTkRFWDgpCisgICAgICAgICAgICAgICAgaXNDb25mbGljdGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmct
PmlzRGVwdGhBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRh
Y2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9TVEVOQ0lMKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlzRGVwdGhPclN0
ZW5jaWwgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNDb25mbGljdGVkKSB7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGlzRGVwdGhPclN0ZW5jaWwpCisgICAgICAgICAgICBtX2ZyYW1lYnVmZmVyQmlu
ZGluZy0+c2V0SXNBdHRhY2hlZChhdHRhY2htZW50LCB0cnVlKTsKKyAgICB9IGVsc2UgeyAvLyBE
ZXRhY2gKKyAgICAgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgbV9mcmFtZWJ1ZmZlckJp
bmRpbmctPnNldElzQXR0YWNoZWQoYXR0YWNobWVudCwgZmFsc2UpOworICAgICAgICB9CisgICAg
fQogICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2ht
ZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KQEAgLTg5Nyw3ICs5MzYsOCBAQCBXZWJHTEdldEluZm8gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGCiAgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIKICAgICAgICAgfHwgKGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0FUVEFDSE1FTlQwCiAgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UCi0gICAgICAgICAgICAmJiBhdHRhY2htZW50
ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAgICAgICAm
JiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQKKyAg
ICAgICAgICAgICYmIGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5D
SUxfQVRUQUNITUVOVCkKICAgICAgICAgfHwgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFCiAgICAgICAgICAgICAmJiBwbmFtZSAh
PSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRQog
ICAgICAgICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfVEVYVFVSRV9MRVZFTApAQCAtMTE3Niw4ICsxMjE2LDExIEBAIFdlYkdMR2V0SW5m
byBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFIKICAgICAgICAgbV9jb250ZXh0LT5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKLSAgICAgICAgbV9j
b250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUp
OwotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KHZhbHVlKSk7CisgICAgICAgIGlmICghbV9yZW5kZXJidWZmZXJCaW5kaW5nKSB7CisgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX3JlbmRlcmJ1ZmZlckJpbmRpbmct
PmdldEludGVybmFsZm9ybWF0KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKQEAgLTE1NTksOCArMTYwMiwyMSBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVNoYWRlCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCkKIHsKLSAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KSB7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQTQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCNV9BMToKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I1NjU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U1RFTkNJTF9JTkRFWDg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RF
TkNJTDoKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBpZiAobV9yZW5kZXJidWZmZXJC
aW5kaW5nKQorICAgICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbGZv
cm1hdChpbnRlcm5hbGZvcm1hdCk7CisgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAg
fQogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2FtcGxlQ292ZXJhZ2UoZG91Ymxl
IHZhbHVlLCBib29sIGludmVydCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNiAr
NDIzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhf
Q09NUE9ORU5UMTYgICAgICAgICAgICAgID0gMHg4MUE1OwogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgU1RFTkNJTF9JTkRFWCAgICAgICAgICAgICAgICAgID0gMHgxOTAxOwogICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgU1RFTkNJTF9JTkRFWDggICAgICAgICAgICAgICAgID0gMHg4RDQ4
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAg
ICAgID0gMHg4NEY5OwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBSRU5ERVJCVUZGRVJf
V0lEVEggICAgICAgICAgICAgPSAweDhENDI7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBS
RU5ERVJCVUZGRVJfSEVJR0hUICAgICAgICAgICAgPSAweDhENDM7CkBAIC00NDIsNiArNDQzLDcg
QEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09MT1JfQVRUQUNI
TUVOVDAgICAgICAgICAgICAgID0gMHg4Q0UwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
REVQVEhfQVRUQUNITUVOVCAgICAgICAgICAgICAgID0gMHg4RDAwOwogICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgICAgICAgID0gMHg4RDIwOworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgID0g
MHg4MjFBOwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBOT05FICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAwOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA1NjQ3MykKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERFUFRIX0NPTVBPTkVOVDE2
ID0gMHg4MUE1LAogICAgICAgICAgICAgU1RFTkNJTF9JTkRFWCA9IDB4MTkwMSwKICAgICAgICAg
ICAgIFNURU5DSUxfSU5ERVg4ID0gMHg4RDQ4LAorICAgICAgICAgICAgREVQVEhfU1RFTkNJTCA9
IDB4ODRGOSwKICAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKICAgICAg
ICAgICAgIFJFTkRFUkJVRkZFUl9IRUlHSFQgPSAweDhENDMsCiAgICAgICAgICAgICBSRU5ERVJC
VUZGRVJfSU5URVJOQUxfRk9STUFUID0gMHg4RDQ0LApAQCAtMzc4LDYgKzM3OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIENPTE9SX0FUVEFDSE1FTlQwID0gMHg4Q0UwLAog
ICAgICAgICAgICAgREVQVEhfQVRUQUNITUVOVCA9IDB4OEQwMCwKICAgICAgICAgICAgIFNURU5D
SUxfQVRUQUNITUVOVCA9IDB4OEQyMCwKKyAgICAgICAgICAgIERFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCA9IDB4ODIxQSwKICAgICAgICAgICAgIE5PTkUgPSAwLAogICAgICAgICAgICAgRlJBTUVC
VUZGRVJfQ09NUExFVEUgPSAweDhDRDUsCiAgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQgPSAweDhDRDYsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1NjQ3
MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFj
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDcgKzQ3NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmbHVzaCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1
bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0
LCBidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7CisgICAgR0x1aW50IHJl
bmRlcmJ1ZmZlciA9IChidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7Cisg
ICAgaWYgKGF0dGFjaG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSB7CisgICAgICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIERFUFRIX0FUVEFDSE1FTlQs
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgU1RFTkNJTF9BVFRBQ0hNRU5ULCByZW5kZXJidWZm
ZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIDo6Z2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZm
ZXJUZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVu
dCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgbG9uZyBs
ZXZlbCkKQEAgLTY5MSw2ICs2OTYsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFz
ZVNoYWRlckNvbQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7CiAgICAgZW5zdXJlQ29udGV4
dChtX2NvbnRleHRPYmopOworICAgIGlmIChpbnRlcm5hbGZvcm1hdCA9PSBERVBUSF9TVEVOQ0lM
KQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOworICAg
IGVsc2UgaWYgKGludGVybmFsZm9ybWF0ID09IERFUFRIX0NPTVBPTkVOVDE2KQorICAgICAgICBp
bnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKICAgICA6OmdsUmVuZGVyYnVmZmVy
U3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIApA
QCAtOTg2LDYgKzk5NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNp
Z24KIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2Nv
bnRleHRPYmopOworICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCkKKyAgICAgICAgYXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxf
QVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgogICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTY0NzYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMtMjQgIFpoZW55
YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVj
dCBhdHRhY2htZW50IGJlaGF2aW9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9m
cmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCisKKyAgICAgICAgKiBzcmMvV2ViR3Jh
cGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHA6IE1hcCB0byBjb3JyZWN0IERFUFRIX1NURU5D
SUwgZm9ybWF0LgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJ
bXBsOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2KToKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbDo6
cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisKIDIwMTAtMDMtMjQgIERtaXRyeSBUaXRvdiAgPGRpbWlj
aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCByNTY0NTMu
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250
ZXh0M0REZWZhdWx0SW1wbC5jcHAJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzY5LDcgKzc2OSwxNiBAQCBERUxFR0FURV9UT19HTChmaW5pc2gsIEZpbmlzaCkKIAogREVM
RUdBVEVfVE9fR0woZmx1c2gsIEZsdXNoKQogCi1ERUxFR0FURV9UT19HTF80KGZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyLCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2ViR0xJZCkKK3ZvaWQgV2ViR3JhcGhpY3ND
b250ZXh0M0REZWZhdWx0SW1wbDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBy
ZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMSWQgYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIGlmIChhdHRhY2htZW50ID09IEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCkgeworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgR0xfREVQ
VEhfQVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOworICAgICAgICBnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBy
ZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJn
ZXQsIGJ1ZmZlcik7Cit9CiAKIERFTEVHQVRFX1RPX0dMXzUoZnJhbWVidWZmZXJUZXh0dXJlMkQs
IEZyYW1lYnVmZmVyVGV4dHVyZTJERVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCBXZWJHTElkLCBsb25nKQogCkBAIC04NjksNyArODc4LDE0IEBAIHVuc2ln
bmVkIGxvbmcgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWwKIAogREVMRUdBVEVfVE9fR0xfMihn
ZXRGbG9hdHYsIEdldEZsb2F0diwgdW5zaWduZWQgbG9uZywgZmxvYXQqKQogCi1ERUxFR0FURV9U
T19HTF80KGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2LCBHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgaW50KikKK3ZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1w
bDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBpZiAoYXR0YWNobWVudCA9PSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAg
IGF0dGFjaG1lbnQgPSBHTF9ERVBUSF9BVFRBQ0hNRU5UOyAvLyBPciBHTF9TVEVOQ0lMX0FUVEFD
SE1FTlQsIGVpdGhlciB3b3Jrcy4KKyAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKK30KIAogREVMRUdB
VEVfVE9fR0xfMihnZXRJbnRlZ2VydiwgR2V0SW50ZWdlcnYsIHVuc2lnbmVkIGxvbmcsIGludCop
CiAKQEAgLTk5MCw3ICsxMDA2LDE4IEBAIHZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0
SW1wbDo6cmUKIHsKIH0KIAotREVMRUdBVEVfVE9fR0xfNChyZW5kZXJidWZmZXJTdG9yYWdlLCBS
ZW5kZXJidWZmZXJTdG9yYWdlRVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQordm9pZCBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1
bHRJbXBsOjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGhlaWdodCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBpZiAoaW50
ZXJuYWxmb3JtYXQgPT0gR0xfREVQVEhfU1RFTkNJTCkKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQg
PSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKKyAgICBlbHNlIGlmIChpbnRlcm5hbGZvcm1hdCA9
PSBHTF9ERVBUSF9DT01QT05FTlQxNikKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBHTF9ERVBU
SF9DT01QT05FTlQ7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRhcmdldCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworfQogCiBERUxFR0FURV9UT19HTF8yKHNhbXBsZUNv
dmVyYWdlLCBTYW1wbGVDb3ZlcmFnZSwgZG91YmxlLCBib29sKQogCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA1NjQ3NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDEwLTAzLTI0ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGFu
ZCB0ZXN0IG5ldyBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlvci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NjExCisKKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC1leHBl
Y3RlZC50eHQ6IEFkZGVkLCB0ZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2
aW9yLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRh
Y2htZW50Lmh0bWw6IEFkZGVkLCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlv
ci4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdl
dC1jYWxscy5qczogREVQVEhfQ09NUE9ORU5UIGlzIG5vIGxvbmdlciBhIHZhbGlkIGlucHV0LCB1
c2UgREVQVEhfQ09NUE9ORU5UMTYgaW5zdGVhZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtc25v
d2xlb3BhcmQvU2tpcHBlZDogVGhlIGJvdCBkb2VzIG5vdCBzdXBwb3J0IEVYVF9wYWNrZWRfZGVw
dGhfc3RlbmNpbCwgc2tpcCB0aGUgZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbCB0
ZXN0LgorCiAyMDEwLTAzLTI0ICBFcmljIFVocmhhbmUgPGVyaWN1QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBET01Db3JlRXhjZXB0aW9uIG5lZWRzIE5vU3RhdGljVGFibGVzIG1vZGlmaWVyCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0
YWNobWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2Jq
ZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBA
CitUZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9ycworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK0NyZWF0ZSByZW5kZXJidWZmZXJzCitQQVNTIGdsID0gY3Jl
YXRlM0RDb250ZXh0KCkgaXMgbm9uLW51bGwuCitQQVNTIGRlcHRoQnVmZmVyID0gZ2wuY3JlYXRl
UmVuZGVyYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9f
RVJST1IKK1BBU1Mgc3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5v
bi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGRlcHRoU3Rl
bmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfQVRU
QUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgor
UEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitBdHRhY2ggZGVwdGggdXNpbmcgU1RF
TkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9u
LW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFj
aCBkZXB0aCB1c2luZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5J
TlZBTElEX09QRVJBVElPTgorQXR0YWNoIHN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5U
CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGds
LmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FU
VEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4K
K1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIHN0ZW5j
aWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRB
Q0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQ
QVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNp
bmcgREVQVEhfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitB
dHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlz
IGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggZGVwdGgsIHRoZW4gc3RlbmNpbCwgY2F1c2lu
ZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxs
LgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdldEVycm9yKCkg
aXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVz
aW5nIGNvbmZsaWN0CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51
bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIGRlcHRoLCB0aGVuIGRlcHRoU3RlbmNp
bCwgY2F1c2luZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdl
dEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aFN0ZW5jaWwsIHRo
ZW4gZGVwdGgsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggc3RlbmNpbCwg
dGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19F
UlJPUgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2gg
ZGVwdGhTdGVuY2lsLCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0g
Z2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBp
cyBnbC5OT19FUlJPUgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9O
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFj
aG1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9m
cmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCit2YXIgZ2w7Cit2YXIgZmJvOwordmFyIGRlcHRo
QnVmZmVyOwordmFyIHN0ZW5jaWxCdWZmZXI7Cit2YXIgZGVwdGhTdGVuY2lsQnVmZmVyOwordmFy
IHdpZHRoID0gMjsKK3ZhciBoZWlnaHQgPSAyOworCitmdW5jdGlvbiB0ZXN0QXR0YWNobWVudChh
dHRhY2htZW50LCBidWZmZXIsIGlzQ29uZmxpY3RlZCkKK3sKKyAgICBzaG91bGRCZU5vbk51bGwo
ImZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICBz
aG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsIGlzQ29uZmxpY3RlZCA/ICJnbC5JTlZBTElEX09QRVJB
VElPTiIgOiAiZ2wuTk9fRVJST1IiKTsKK30KKworZnVuY3Rpb24gdGVzdEF0dGFjaG1lbnRzKGF0
dGFjaG1lbnQwLCBidWZmZXIwLCBhdHRhY2htZW50MSwgYnVmZmVyMSwgaXNDb25mbGljdGVkKQor
eworICAgIHNob3VsZEJlTm9uTnVsbCgiZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSIpOwor
ICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudDAsIGdsLlJFTkRF
UkJVRkZFUiwgYnVmZmVyMCk7CisgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9f
RVJST1IiKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
YXR0YWNobWVudDEsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyMSk7CisgICAgc2hvdWxkQmUoImds
LmdldEVycm9yKCkiLCBpc0NvbmZsaWN0ZWQgPyAiZ2wuSU5WQUxJRF9PUEVSQVRJT04iIDogImds
Lk5PX0VSUk9SIik7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBh
dHRhY2htZW50IGJlaGF2aW9ycyIpOworCitkZWJ1ZygiQ3JlYXRlIHJlbmRlcmJ1ZmZlcnMiKTsK
K3Nob3VsZEJlTm9uTnVsbCgiZ2wgPSBjcmVhdGUzRENvbnRleHQoKSIpOworc2hvdWxkQmVOb25O
dWxsKCJkZXB0aEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7CitnbC5iaW5kUmVu
ZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVp
Z2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CitzaG91bGRC
ZU5vbk51bGwoInN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOworZ2wu
YmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHN0ZW5jaWxCdWZmZXIpOworZ2wucmVu
ZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlNURU5DSUxfSU5ERVg4LCB3aWR0
aCwgaGVpZ2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7Citz
aG91bGRCZU5vbk51bGwoImRlcHRoU3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpIik7CitnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2ls
QnVmZmVyKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBU
SF9TVEVOQ0lMLCB3aWR0aCwgaGVpZ2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImds
Lk5PX0VSUk9SIik7CisKK2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfQVRUQUNITUVO
VCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGZh
bHNlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0
ZXN0QXR0YWNobWVudChnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsK
K2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0
ZXN0QXR0YWNobWVudChnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0
cnVlKTsKK2RlYnVnKCJBdHRhY2ggc3RlbmNpbCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsK
K3Rlc3RBdHRhY2htZW50KGdsLlNURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgZmFs
c2UpOworZGVidWcoIkF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKK3Rl
c3RBdHRhY2htZW50KGdsLkRFUFRIX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUpOwor
ZGVidWcoIkF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCIpOwor
dGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVy
LCB0cnVlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxf
QVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5U
LCBkZXB0aFN0ZW5jaWxCdWZmZXIsIGZhbHNlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2ls
IHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLkRFUFRIX0FUVEFD
SE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoU3Rl
bmNpbCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLlNURU5D
SUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVlKTsKKworZGVidWcoIkF0dGFj
aCBkZXB0aCwgdGhlbiBzdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVu
dHMoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGdsLlNURU5DSUxfQVRUQUNITUVO
VCwgc3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVw
dGgsIGNhdXNpbmcgY29uZmxpY3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5TVEVOQ0lMX0FUVEFD
SE1FTlQsIHN0ZW5jaWxCdWZmZXIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0
cnVlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGgsIHRoZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNv
bmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZm
ZXIsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVl
KTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZs
aWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0
aFN0ZW5jaWxCdWZmZXIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsK
K2RlYnVnKCJBdHRhY2ggc3RlbmNpbCwgdGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxp
Y3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwg
Z2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIHRydWUpOwor
ZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5jaWwsIHRoZW4gc3RlbmNpbCwgY2F1c2luZyBjb25mbGlj
dCIpOwordGVzdEF0dGFjaG1lbnRzKGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhT
dGVuY2lsQnVmZmVyLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUp
OworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0
cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCShyZXZpc2lv
biA1NjQ3MykKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9n
bC1vYmplY3QtZ2V0LWNhbGxzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHZh
ciByZW5kZXJidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIKIHNob3VsZEJlKCdnbC5nZXRF
cnJvcigpJywgJzAnKTsKIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5k
ZXJidWZmZXIpOwogc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwotZ2wucmVuZGVyYnVm
ZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMiwgMik7Citn
bC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5U
MTYsIDIsIDIpOwogc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwogZ2wuZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJF
TkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKIC8vIEZJWE1FOiBvbiBzb21lIG1hY2hpbmVzIChp
biBwYXJ0aWN1bGFyIHRoZSBXZWJLaXQgY29tbWl0IGJvdHMpIHRoZQpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQJKHJldmlzaW9uIDU2NDY0KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQJKHdvcmtpbmcg
Y29weSkKQEAgLTExMCwzICsxMTAsNyBAQCBmYXN0L2Zvcm1zL3NlYXJjaC1ldmVudC1kZWxheS5o
dG1sCiAjIGNvbXB1dGVkIHN0eWxlIG9uIEhXIHRyYW5zZm9ybXMgYXJlIHdyb25nIGluIFNMLCBi
dXQKICMgY29ycmVjdCBvbiBvdGhlciBwbGF0Zm9ybXMuCiBhbmltYXRpb25zL2ZpbGwtbW9kZS10
cmFuc2Zvcm0uaHRtbAorCisjIFNub3cgTGVvcGFyZCBib3QgZG9lcyBub3Qgc3VwcG9ydCBFWFRf
cGFja2VkX2RlcHRoX3N0ZW5jaWwsIHdoaWNoIGlzIHJlcXVpcmVkIGJ5IFdlYkdMLgorIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE1ODAKK2Zhc3QvY2FudmFzL3dl
YmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50Lmh0bWwKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>52238</attachid>
            <date>2010-03-31 19:10:59 -0700</date>
            <delta_ts>2010-03-31 19:12:18 -0700</delta_ts>
            <desc>revised patch: fixed the bogus bug ID.</desc>
            <filename>attach.patch</filename>
            <type>application/octet-stream</type>
            <size>29052</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjQ3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMDMtMjQgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9yLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNo
bWVudC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDog
S2VlcCB0cmFjayBvZiBhdHRhY2hlZCBzdGVuY2lsL2RlcHRoIHJlbmRlcmJ1ZmZlcnMgaW4gV2Vi
R0xGcmFtZWJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OldlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0SXNB
dHRhY2hlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzRGVwdGhBdHRhY2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppc1N0ZW5jaWxBdHRhY2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppc0RlcHRoU3RlbmNpbEF0dGFj
aGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHA6IEtlZXAg
dHJhY2sgb2YgaW50ZXJuYWxmb3JtYXQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1
ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyYnVmZmVyLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJidWZmZXI6
OnNldEludGVybmFsZm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyYnVmZmVy
OjpnZXRJbnRlcm5hbGZvcm1hdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOiBEZXRlY3Qgc3RlbmNpbC9kZXB0aCBidWZmZXIgY29u
ZmxpY3RzLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOiBIYW5kbGluZyBERVBUSF9TVEVOQ0lMIGNhc2Uu
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcik6IEdldCBjb3JyZWN0IFdlYkdMIGludGVybmFsZm9ybWF0LgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKTogRGV0
ZWN0IGlsbGVnYWwgZW51bXMuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmlkbDogQWRkIERFUFRIX1NURU5DSUwgZW51bXMuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDogQWRkIERFUFRIX1NURU5DSUwgZW51bXMuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwOiBNYXAgdG8gY29ycmVjdCBE
RVBUSF9TVEVOQ0lMIGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorCiAyMDEw
LTAzLTI0ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5v
IHJldmlldywgcm9sbGluZyBvdXQgcjU2NDUzLgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwyOCBA
QCBQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IFdlYkdMRnJhbWViCiAKIFdlYkdMRnJhbWVi
dWZmZXI6OldlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAgICAg
OiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pc0RlcHRoQXR0YWNoZWQoZmFsc2UpCisgICAg
LCBtX2lzU3RlbmNpbEF0dGFjaGVkKGZhbHNlKQorICAgICwgbV9pc0RlcHRoU3RlbmNpbEF0dGFj
aGVkKGZhbHNlKQogewogICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNE
KCktPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOwogfQogCit2b2lkIFdlYkdMRnJhbWVidWZmZXI6OnNl
dElzQXR0YWNoZWQodW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBib29sIGlzQXR0YWNoZWQpCit7
CisgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfQVRUQUNITUVOVDoKKyAgICAgICAgbV9pc0RlcHRoQXR0YWNoZWQgPSBpc0F0dGFjaGVk
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgIG1faXNTdGVuY2lsQXR0YWNoZWQgPSBpc0F0dGFjaGVkOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCA9IGlzQXR0YWNoZWQ7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpfZGVs
ZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQoKS0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS0+ZGVsZXRlRnJhbWVidWZmZXIob2JqZWN0KTsKSW5kZXg6IFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwx
MCArMzksMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCopOwogICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJc0F0dGFjaGVkKHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgYm9vbCBpc0F0dGFjaGVkKTsKKworICAgICAgICBib29sIGlzRGVwdGhBdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXB0aEF0dGFjaGVkOyB9CisgICAgICAgIGJvb2wg
aXNTdGVuY2lsQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RlbmNpbEF0dGFjaGVkOyB9
CisgICAgICAgIGJvb2wgaXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEZXB0aFN0ZW5jaWxBdHRhY2hlZDsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJH
TEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgICAgICAKICAgICAgICAg
dmlydHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICAgIHBy
aXZhdGU6CisgICAgICAgIGJvb2wgbV9pc0RlcHRoQXR0YWNoZWQ7CisgICAgICAgIGJvb2wgbV9p
c1N0ZW5jaWxBdHRhY2hlZDsKKyAgICAgICAgYm9vbCBtX2lzRGVwdGhTdGVuY2lsQXR0YWNoZWQ7
CiAgICAgfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMiArNDQsMTQgQEAgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xSZW5kZQog
CiBXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KiBjdHgpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pbnRlcm5hbGZvcm1h
dChHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQpCiB7CiAgICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+
Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkpOwogfQogCiBXZWJHTFJl
bmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgs
IFBsYXRmb3JtM0RPYmplY3Qgb2JqKQogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKKyAgICAsIG1f
aW50ZXJuYWxmb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE0KQogewogICAgIHNldE9iamVj
dChvYmosIGZhbHNlKTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJi
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVm
ZmVyLmgJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMSArNDMsMTcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5n
IHRoZXNlIG9iamVjdHMKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZm
ZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRl
cmJ1ZmZlcik7CiAKKyAgICAgICAgdm9pZCBzZXRJbnRlcm5hbGZvcm1hdCh1bnNpZ25lZCBsb25n
IGludGVybmFsZm9ybWF0KSB7IG1faW50ZXJuYWxmb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsgfQor
ICAgICAgICB1bnNpZ25lZCBsb25nIGdldEludGVybmFsZm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbGZvcm1hdDsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJHTFJlbmRl
cmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgV2ViR0xSZW5kZXJidWZm
ZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CiAgICAgICAgIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKKwor
ICAgICAgcHJpdmF0ZToKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX2ludGVybmFsZm9ybWF0Owog
ICAgIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysr
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzkwLDYgKzc5MCw0NSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJh
bWVidWZmZXJSCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBpZiAoYnVmZmVyLT5vYmplY3QoKSkgeworICAgICAgICBib29sIGlzQ29uZmxpY3RlZCA9IGZh
bHNlOworICAgICAgICBib29sIGlzRGVwdGhPclN0ZW5jaWwgPSB0cnVlOworICAgICAgICBzd2l0
Y2ggKGF0dGFjaG1lbnQpIHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
QVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNEZXB0
aFN0ZW5jaWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRh
Y2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9DT01QT05FTlQxNikKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5D
SUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNE
ZXB0aFN0ZW5jaWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc0RlcHRoQXR0
YWNoZWQoKSkKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOworICAgICAgICAg
ICAgaWYgKGJ1ZmZlci0+Z2V0SW50ZXJuYWxmb3JtYXQoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9JTkRFWDgpCisgICAgICAgICAgICAgICAgaXNDb25mbGljdGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmct
PmlzRGVwdGhBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRh
Y2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9TVEVOQ0lMKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlzRGVwdGhPclN0
ZW5jaWwgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNDb25mbGljdGVkKSB7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGlzRGVwdGhPclN0ZW5jaWwpCisgICAgICAgICAgICBtX2ZyYW1lYnVmZmVyQmlu
ZGluZy0+c2V0SXNBdHRhY2hlZChhdHRhY2htZW50LCB0cnVlKTsKKyAgICB9IGVsc2UgeyAvLyBE
ZXRhY2gKKyAgICAgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgbV9mcmFtZWJ1ZmZlckJp
bmRpbmctPnNldElzQXR0YWNoZWQoYXR0YWNobWVudCwgZmFsc2UpOworICAgICAgICB9CisgICAg
fQogICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2ht
ZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KQEAgLTg5Nyw3ICs5MzYsOCBAQCBXZWJHTEdldEluZm8gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGCiAgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIKICAgICAgICAgfHwgKGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0FUVEFDSE1FTlQwCiAgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UCi0gICAgICAgICAgICAmJiBhdHRhY2htZW50
ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAgICAgICAm
JiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQKKyAg
ICAgICAgICAgICYmIGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5D
SUxfQVRUQUNITUVOVCkKICAgICAgICAgfHwgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFCiAgICAgICAgICAgICAmJiBwbmFtZSAh
PSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRQog
ICAgICAgICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfVEVYVFVSRV9MRVZFTApAQCAtMTE3Niw4ICsxMjE2LDExIEBAIFdlYkdMR2V0SW5m
byBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFIKICAgICAgICAgbV9jb250ZXh0LT5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKLSAgICAgICAgbV9j
b250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUp
OwotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KHZhbHVlKSk7CisgICAgICAgIGlmICghbV9yZW5kZXJidWZmZXJCaW5kaW5nKSB7CisgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX3JlbmRlcmJ1ZmZlckJpbmRpbmct
PmdldEludGVybmFsZm9ybWF0KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKQEAgLTE1NTksOCArMTYwMiwyMSBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVNoYWRlCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCkKIHsKLSAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KSB7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQTQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCNV9BMToKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I1NjU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U1RFTkNJTF9JTkRFWDg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RF
TkNJTDoKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBpZiAobV9yZW5kZXJidWZmZXJC
aW5kaW5nKQorICAgICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbGZv
cm1hdChpbnRlcm5hbGZvcm1hdCk7CisgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAg
fQogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2FtcGxlQ292ZXJhZ2UoZG91Ymxl
IHZhbHVlLCBib29sIGludmVydCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNiAr
NDIzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhf
Q09NUE9ORU5UMTYgICAgICAgICAgICAgID0gMHg4MUE1OwogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgU1RFTkNJTF9JTkRFWCAgICAgICAgICAgICAgICAgID0gMHgxOTAxOwogICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgU1RFTkNJTF9JTkRFWDggICAgICAgICAgICAgICAgID0gMHg4RDQ4
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAg
ICAgID0gMHg4NEY5OwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBSRU5ERVJCVUZGRVJf
V0lEVEggICAgICAgICAgICAgPSAweDhENDI7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBS
RU5ERVJCVUZGRVJfSEVJR0hUICAgICAgICAgICAgPSAweDhENDM7CkBAIC00NDIsNiArNDQzLDcg
QEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09MT1JfQVRUQUNI
TUVOVDAgICAgICAgICAgICAgID0gMHg4Q0UwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
REVQVEhfQVRUQUNITUVOVCAgICAgICAgICAgICAgID0gMHg4RDAwOwogICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgICAgICAgID0gMHg4RDIwOworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgID0g
MHg4MjFBOwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBOT05FICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAwOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA1NjQ3MykKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERFUFRIX0NPTVBPTkVOVDE2
ID0gMHg4MUE1LAogICAgICAgICAgICAgU1RFTkNJTF9JTkRFWCA9IDB4MTkwMSwKICAgICAgICAg
ICAgIFNURU5DSUxfSU5ERVg4ID0gMHg4RDQ4LAorICAgICAgICAgICAgREVQVEhfU1RFTkNJTCA9
IDB4ODRGOSwKICAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKICAgICAg
ICAgICAgIFJFTkRFUkJVRkZFUl9IRUlHSFQgPSAweDhENDMsCiAgICAgICAgICAgICBSRU5ERVJC
VUZGRVJfSU5URVJOQUxfRk9STUFUID0gMHg4RDQ0LApAQCAtMzc4LDYgKzM3OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIENPTE9SX0FUVEFDSE1FTlQwID0gMHg4Q0UwLAog
ICAgICAgICAgICAgREVQVEhfQVRUQUNITUVOVCA9IDB4OEQwMCwKICAgICAgICAgICAgIFNURU5D
SUxfQVRUQUNITUVOVCA9IDB4OEQyMCwKKyAgICAgICAgICAgIERFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCA9IDB4ODIxQSwKICAgICAgICAgICAgIE5PTkUgPSAwLAogICAgICAgICAgICAgRlJBTUVC
VUZGRVJfQ09NUExFVEUgPSAweDhDRDUsCiAgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQgPSAweDhDRDYsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1NjQ3
MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFj
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDcgKzQ3NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmbHVzaCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1
bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0
LCBidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7CisgICAgR0x1aW50IHJl
bmRlcmJ1ZmZlciA9IChidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7Cisg
ICAgaWYgKGF0dGFjaG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSB7CisgICAgICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIERFUFRIX0FUVEFDSE1FTlQs
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgU1RFTkNJTF9BVFRBQ0hNRU5ULCByZW5kZXJidWZm
ZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIDo6Z2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZm
ZXJUZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVu
dCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgbG9uZyBs
ZXZlbCkKQEAgLTY5MSw2ICs2OTYsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFz
ZVNoYWRlckNvbQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7CiAgICAgZW5zdXJlQ29udGV4
dChtX2NvbnRleHRPYmopOworICAgIGlmIChpbnRlcm5hbGZvcm1hdCA9PSBERVBUSF9TVEVOQ0lM
KQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOworICAg
IGVsc2UgaWYgKGludGVybmFsZm9ybWF0ID09IERFUFRIX0NPTVBPTkVOVDE2KQorICAgICAgICBp
bnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKICAgICA6OmdsUmVuZGVyYnVmZmVy
U3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIApA
QCAtOTg2LDYgKzk5NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNp
Z24KIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2Nv
bnRleHRPYmopOworICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCkKKyAgICAgICAgYXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxf
QVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgogICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTY0NzYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMtMjQgIFpoZW55
YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVj
dCBhdHRhY2htZW50IGJlaGF2aW9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9m
cmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCisKKyAgICAgICAgKiBzcmMvV2ViR3Jh
cGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHA6IE1hcCB0byBjb3JyZWN0IERFUFRIX1NURU5D
SUwgZm9ybWF0LgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJ
bXBsOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2KToKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbDo6
cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisKIDIwMTAtMDMtMjQgIERtaXRyeSBUaXRvdiAgPGRpbWlj
aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCByNTY0NTMu
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250
ZXh0M0REZWZhdWx0SW1wbC5jcHAJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzY5LDcgKzc2OSwxNiBAQCBERUxFR0FURV9UT19HTChmaW5pc2gsIEZpbmlzaCkKIAogREVM
RUdBVEVfVE9fR0woZmx1c2gsIEZsdXNoKQogCi1ERUxFR0FURV9UT19HTF80KGZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyLCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2ViR0xJZCkKK3ZvaWQgV2ViR3JhcGhpY3ND
b250ZXh0M0REZWZhdWx0SW1wbDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBy
ZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMSWQgYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIGlmIChhdHRhY2htZW50ID09IEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCkgeworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgR0xfREVQ
VEhfQVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOworICAgICAgICBnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBy
ZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJn
ZXQsIGJ1ZmZlcik7Cit9CiAKIERFTEVHQVRFX1RPX0dMXzUoZnJhbWVidWZmZXJUZXh0dXJlMkQs
IEZyYW1lYnVmZmVyVGV4dHVyZTJERVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCBXZWJHTElkLCBsb25nKQogCkBAIC04NjksNyArODc4LDE0IEBAIHVuc2ln
bmVkIGxvbmcgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWwKIAogREVMRUdBVEVfVE9fR0xfMihn
ZXRGbG9hdHYsIEdldEZsb2F0diwgdW5zaWduZWQgbG9uZywgZmxvYXQqKQogCi1ERUxFR0FURV9U
T19HTF80KGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2LCBHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgaW50KikKK3ZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1w
bDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBpZiAoYXR0YWNobWVudCA9PSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAg
IGF0dGFjaG1lbnQgPSBHTF9ERVBUSF9BVFRBQ0hNRU5UOyAvLyBPciBHTF9TVEVOQ0lMX0FUVEFD
SE1FTlQsIGVpdGhlciB3b3Jrcy4KKyAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKK30KIAogREVMRUdB
VEVfVE9fR0xfMihnZXRJbnRlZ2VydiwgR2V0SW50ZWdlcnYsIHVuc2lnbmVkIGxvbmcsIGludCop
CiAKQEAgLTk5MCw3ICsxMDA2LDE4IEBAIHZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0
SW1wbDo6cmUKIHsKIH0KIAotREVMRUdBVEVfVE9fR0xfNChyZW5kZXJidWZmZXJTdG9yYWdlLCBS
ZW5kZXJidWZmZXJTdG9yYWdlRVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQordm9pZCBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1
bHRJbXBsOjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGhlaWdodCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBpZiAoaW50
ZXJuYWxmb3JtYXQgPT0gR0xfREVQVEhfU1RFTkNJTCkKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQg
PSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKKyAgICBlbHNlIGlmIChpbnRlcm5hbGZvcm1hdCA9
PSBHTF9ERVBUSF9DT01QT05FTlQxNikKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBHTF9ERVBU
SF9DT01QT05FTlQ7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRhcmdldCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworfQogCiBERUxFR0FURV9UT19HTF8yKHNhbXBsZUNv
dmVyYWdlLCBTYW1wbGVDb3ZlcmFnZSwgZG91YmxlLCBib29sKQogCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA1NjQ3NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDEwLTAzLTI0ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGFu
ZCB0ZXN0IG5ldyBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlvci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NjExCisKKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC1leHBl
Y3RlZC50eHQ6IEFkZGVkLCB0ZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2
aW9yLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRh
Y2htZW50Lmh0bWw6IEFkZGVkLCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlv
ci4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdl
dC1jYWxscy5qczogREVQVEhfQ09NUE9ORU5UIGlzIG5vIGxvbmdlciBhIHZhbGlkIGlucHV0LCB1
c2UgREVQVEhfQ09NUE9ORU5UMTYgaW5zdGVhZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtc25v
d2xlb3BhcmQvU2tpcHBlZDogVGhlIGJvdCBkb2VzIG5vdCBzdXBwb3J0IEVYVF9wYWNrZWRfZGVw
dGhfc3RlbmNpbCwgc2tpcCB0aGUgZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbCB0
ZXN0LgorCiAyMDEwLTAzLTI0ICBFcmljIFVocmhhbmUgPGVyaWN1QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBET01Db3JlRXhjZXB0aW9uIG5lZWRzIE5vU3RhdGljVGFibGVzIG1vZGlmaWVyCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0
YWNobWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2Jq
ZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBA
CitUZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9ycworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK0NyZWF0ZSByZW5kZXJidWZmZXJzCitQQVNTIGdsID0gY3Jl
YXRlM0RDb250ZXh0KCkgaXMgbm9uLW51bGwuCitQQVNTIGRlcHRoQnVmZmVyID0gZ2wuY3JlYXRl
UmVuZGVyYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9f
RVJST1IKK1BBU1Mgc3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5v
bi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGRlcHRoU3Rl
bmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfQVRU
QUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgor
UEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitBdHRhY2ggZGVwdGggdXNpbmcgU1RF
TkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9u
LW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFj
aCBkZXB0aCB1c2luZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5J
TlZBTElEX09QRVJBVElPTgorQXR0YWNoIHN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5U
CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGds
LmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FU
VEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4K
K1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIHN0ZW5j
aWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRB
Q0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQ
QVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNp
bmcgREVQVEhfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitB
dHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlz
IGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggZGVwdGgsIHRoZW4gc3RlbmNpbCwgY2F1c2lu
ZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxs
LgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdldEVycm9yKCkg
aXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVz
aW5nIGNvbmZsaWN0CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51
bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIGRlcHRoLCB0aGVuIGRlcHRoU3RlbmNp
bCwgY2F1c2luZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdl
dEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aFN0ZW5jaWwsIHRo
ZW4gZGVwdGgsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggc3RlbmNpbCwg
dGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19F
UlJPUgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2gg
ZGVwdGhTdGVuY2lsLCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0g
Z2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBp
cyBnbC5OT19FUlJPUgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9O
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFj
aG1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9m
cmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCit2YXIgZ2w7Cit2YXIgZmJvOwordmFyIGRlcHRo
QnVmZmVyOwordmFyIHN0ZW5jaWxCdWZmZXI7Cit2YXIgZGVwdGhTdGVuY2lsQnVmZmVyOwordmFy
IHdpZHRoID0gMjsKK3ZhciBoZWlnaHQgPSAyOworCitmdW5jdGlvbiB0ZXN0QXR0YWNobWVudChh
dHRhY2htZW50LCBidWZmZXIsIGlzQ29uZmxpY3RlZCkKK3sKKyAgICBzaG91bGRCZU5vbk51bGwo
ImZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICBz
aG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsIGlzQ29uZmxpY3RlZCA/ICJnbC5JTlZBTElEX09QRVJB
VElPTiIgOiAiZ2wuTk9fRVJST1IiKTsKK30KKworZnVuY3Rpb24gdGVzdEF0dGFjaG1lbnRzKGF0
dGFjaG1lbnQwLCBidWZmZXIwLCBhdHRhY2htZW50MSwgYnVmZmVyMSwgaXNDb25mbGljdGVkKQor
eworICAgIHNob3VsZEJlTm9uTnVsbCgiZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSIpOwor
ICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudDAsIGdsLlJFTkRF
UkJVRkZFUiwgYnVmZmVyMCk7CisgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9f
RVJST1IiKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
YXR0YWNobWVudDEsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyMSk7CisgICAgc2hvdWxkQmUoImds
LmdldEVycm9yKCkiLCBpc0NvbmZsaWN0ZWQgPyAiZ2wuSU5WQUxJRF9PUEVSQVRJT04iIDogImds
Lk5PX0VSUk9SIik7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBh
dHRhY2htZW50IGJlaGF2aW9ycyIpOworCitkZWJ1ZygiQ3JlYXRlIHJlbmRlcmJ1ZmZlcnMiKTsK
K3Nob3VsZEJlTm9uTnVsbCgiZ2wgPSBjcmVhdGUzRENvbnRleHQoKSIpOworc2hvdWxkQmVOb25O
dWxsKCJkZXB0aEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7CitnbC5iaW5kUmVu
ZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVp
Z2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CitzaG91bGRC
ZU5vbk51bGwoInN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOworZ2wu
YmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHN0ZW5jaWxCdWZmZXIpOworZ2wucmVu
ZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlNURU5DSUxfSU5ERVg4LCB3aWR0
aCwgaGVpZ2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7Citz
aG91bGRCZU5vbk51bGwoImRlcHRoU3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpIik7CitnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2ls
QnVmZmVyKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBU
SF9TVEVOQ0lMLCB3aWR0aCwgaGVpZ2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImds
Lk5PX0VSUk9SIik7CisKK2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfQVRUQUNITUVO
VCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGZh
bHNlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0
ZXN0QXR0YWNobWVudChnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsK
K2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0
ZXN0QXR0YWNobWVudChnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0
cnVlKTsKK2RlYnVnKCJBdHRhY2ggc3RlbmNpbCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsK
K3Rlc3RBdHRhY2htZW50KGdsLlNURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgZmFs
c2UpOworZGVidWcoIkF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKK3Rl
c3RBdHRhY2htZW50KGdsLkRFUFRIX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUpOwor
ZGVidWcoIkF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCIpOwor
dGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVy
LCB0cnVlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxf
QVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5U
LCBkZXB0aFN0ZW5jaWxCdWZmZXIsIGZhbHNlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2ls
IHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLkRFUFRIX0FUVEFD
SE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoU3Rl
bmNpbCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLlNURU5D
SUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVlKTsKKworZGVidWcoIkF0dGFj
aCBkZXB0aCwgdGhlbiBzdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVu
dHMoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGdsLlNURU5DSUxfQVRUQUNITUVO
VCwgc3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVw
dGgsIGNhdXNpbmcgY29uZmxpY3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5TVEVOQ0lMX0FUVEFD
SE1FTlQsIHN0ZW5jaWxCdWZmZXIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0
cnVlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGgsIHRoZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNv
bmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZm
ZXIsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVl
KTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZs
aWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0
aFN0ZW5jaWxCdWZmZXIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsK
K2RlYnVnKCJBdHRhY2ggc3RlbmNpbCwgdGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxp
Y3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwg
Z2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIHRydWUpOwor
ZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5jaWwsIHRoZW4gc3RlbmNpbCwgY2F1c2luZyBjb25mbGlj
dCIpOwordGVzdEF0dGFjaG1lbnRzKGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhT
dGVuY2lsQnVmZmVyLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUp
OworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0
cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCShyZXZpc2lv
biA1NjQ3MykKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9n
bC1vYmplY3QtZ2V0LWNhbGxzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHZh
ciByZW5kZXJidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIKIHNob3VsZEJlKCdnbC5nZXRF
cnJvcigpJywgJzAnKTsKIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5k
ZXJidWZmZXIpOwogc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwotZ2wucmVuZGVyYnVm
ZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMiwgMik7Citn
bC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5U
MTYsIDIsIDIpOwogc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwogZ2wuZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJF
TkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKIC8vIEZJWE1FOiBvbiBzb21lIG1hY2hpbmVzIChp
biBwYXJ0aWN1bGFyIHRoZSBXZWJLaXQgY29tbWl0IGJvdHMpIHRoZQpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQJKHJldmlzaW9uIDU2NDY0KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQJKHdvcmtpbmcg
Y29weSkKQEAgLTExMCwzICsxMTAsNyBAQCBmYXN0L2Zvcm1zL3NlYXJjaC1ldmVudC1kZWxheS5o
dG1sCiAjIGNvbXB1dGVkIHN0eWxlIG9uIEhXIHRyYW5zZm9ybXMgYXJlIHdyb25nIGluIFNMLCBi
dXQKICMgY29ycmVjdCBvbiBvdGhlciBwbGF0Zm9ybXMuCiBhbmltYXRpb25zL2ZpbGwtbW9kZS10
cmFuc2Zvcm0uaHRtbAorCisjIFNub3cgTGVvcGFyZCBib3QgZG9lcyBub3Qgc3VwcG9ydCBFWFRf
cGFja2VkX2RlcHRoX3N0ZW5jaWwsIHdoaWNoIGlzIHJlcXVpcmVkIGJ5IFdlYkdMLgorIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2MTEKK2Zhc3QvY2FudmFzL3dl
YmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52239</attachid>
            <date>2010-03-31 19:12:18 -0700</date>
            <delta_ts>2010-03-31 20:13:37 -0700</delta_ts>
            <desc>revised patch: fixed the bogus bug ID.</desc>
            <filename>attach.patch</filename>
            <type>text/plain</type>
            <size>29052</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjQ3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMDMtMjQgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9yLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNo
bWVudC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDog
S2VlcCB0cmFjayBvZiBhdHRhY2hlZCBzdGVuY2lsL2RlcHRoIHJlbmRlcmJ1ZmZlcnMgaW4gV2Vi
R0xGcmFtZWJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OldlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0SXNB
dHRhY2hlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzRGVwdGhBdHRhY2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppc1N0ZW5jaWxBdHRhY2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppc0RlcHRoU3RlbmNpbEF0dGFj
aGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHA6IEtlZXAg
dHJhY2sgb2YgaW50ZXJuYWxmb3JtYXQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1
ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyYnVmZmVyLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJidWZmZXI6
OnNldEludGVybmFsZm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyYnVmZmVy
OjpnZXRJbnRlcm5hbGZvcm1hdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOiBEZXRlY3Qgc3RlbmNpbC9kZXB0aCBidWZmZXIgY29u
ZmxpY3RzLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOiBIYW5kbGluZyBERVBUSF9TVEVOQ0lMIGNhc2Uu
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcik6IEdldCBjb3JyZWN0IFdlYkdMIGludGVybmFsZm9ybWF0LgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKTogRGV0
ZWN0IGlsbGVnYWwgZW51bXMuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmlkbDogQWRkIERFUFRIX1NURU5DSUwgZW51bXMuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDogQWRkIERFUFRIX1NURU5DSUwgZW51bXMuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwOiBNYXAgdG8gY29ycmVjdCBE
RVBUSF9TVEVOQ0lMIGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorCiAyMDEw
LTAzLTI0ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5v
IHJldmlldywgcm9sbGluZyBvdXQgcjU2NDUzLgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwyOCBA
QCBQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IFdlYkdMRnJhbWViCiAKIFdlYkdMRnJhbWVi
dWZmZXI6OldlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAgICAg
OiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pc0RlcHRoQXR0YWNoZWQoZmFsc2UpCisgICAg
LCBtX2lzU3RlbmNpbEF0dGFjaGVkKGZhbHNlKQorICAgICwgbV9pc0RlcHRoU3RlbmNpbEF0dGFj
aGVkKGZhbHNlKQogewogICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNE
KCktPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOwogfQogCit2b2lkIFdlYkdMRnJhbWVidWZmZXI6OnNl
dElzQXR0YWNoZWQodW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBib29sIGlzQXR0YWNoZWQpCit7
CisgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfQVRUQUNITUVOVDoKKyAgICAgICAgbV9pc0RlcHRoQXR0YWNoZWQgPSBpc0F0dGFjaGVk
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgIG1faXNTdGVuY2lsQXR0YWNoZWQgPSBpc0F0dGFjaGVkOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCA9IGlzQXR0YWNoZWQ7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpfZGVs
ZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQoKS0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS0+ZGVsZXRlRnJhbWVidWZmZXIob2JqZWN0KTsKSW5kZXg6IFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwx
MCArMzksMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCopOwogICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJc0F0dGFjaGVkKHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgYm9vbCBpc0F0dGFjaGVkKTsKKworICAgICAgICBib29sIGlzRGVwdGhBdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXB0aEF0dGFjaGVkOyB9CisgICAgICAgIGJvb2wg
aXNTdGVuY2lsQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RlbmNpbEF0dGFjaGVkOyB9
CisgICAgICAgIGJvb2wgaXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEZXB0aFN0ZW5jaWxBdHRhY2hlZDsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJH
TEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgICAgICAKICAgICAgICAg
dmlydHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICAgIHBy
aXZhdGU6CisgICAgICAgIGJvb2wgbV9pc0RlcHRoQXR0YWNoZWQ7CisgICAgICAgIGJvb2wgbV9p
c1N0ZW5jaWxBdHRhY2hlZDsKKyAgICAgICAgYm9vbCBtX2lzRGVwdGhTdGVuY2lsQXR0YWNoZWQ7
CiAgICAgfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMiArNDQsMTQgQEAgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xSZW5kZQog
CiBXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KiBjdHgpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pbnRlcm5hbGZvcm1h
dChHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQpCiB7CiAgICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+
Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkpOwogfQogCiBXZWJHTFJl
bmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgs
IFBsYXRmb3JtM0RPYmplY3Qgb2JqKQogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKKyAgICAsIG1f
aW50ZXJuYWxmb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE0KQogewogICAgIHNldE9iamVj
dChvYmosIGZhbHNlKTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJi
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVm
ZmVyLmgJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMSArNDMsMTcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5n
IHRoZXNlIG9iamVjdHMKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZm
ZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRl
cmJ1ZmZlcik7CiAKKyAgICAgICAgdm9pZCBzZXRJbnRlcm5hbGZvcm1hdCh1bnNpZ25lZCBsb25n
IGludGVybmFsZm9ybWF0KSB7IG1faW50ZXJuYWxmb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsgfQor
ICAgICAgICB1bnNpZ25lZCBsb25nIGdldEludGVybmFsZm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbGZvcm1hdDsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJHTFJlbmRl
cmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgV2ViR0xSZW5kZXJidWZm
ZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CiAgICAgICAgIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKKwor
ICAgICAgcHJpdmF0ZToKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX2ludGVybmFsZm9ybWF0Owog
ICAgIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysr
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzkwLDYgKzc5MCw0NSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJh
bWVidWZmZXJSCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBpZiAoYnVmZmVyLT5vYmplY3QoKSkgeworICAgICAgICBib29sIGlzQ29uZmxpY3RlZCA9IGZh
bHNlOworICAgICAgICBib29sIGlzRGVwdGhPclN0ZW5jaWwgPSB0cnVlOworICAgICAgICBzd2l0
Y2ggKGF0dGFjaG1lbnQpIHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
QVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNEZXB0
aFN0ZW5jaWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRh
Y2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9DT01QT05FTlQxNikKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5D
SUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNE
ZXB0aFN0ZW5jaWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc0RlcHRoQXR0
YWNoZWQoKSkKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOworICAgICAgICAg
ICAgaWYgKGJ1ZmZlci0+Z2V0SW50ZXJuYWxmb3JtYXQoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9JTkRFWDgpCisgICAgICAgICAgICAgICAgaXNDb25mbGljdGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmct
PmlzRGVwdGhBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRh
Y2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9TVEVOQ0lMKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlzRGVwdGhPclN0
ZW5jaWwgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNDb25mbGljdGVkKSB7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGlzRGVwdGhPclN0ZW5jaWwpCisgICAgICAgICAgICBtX2ZyYW1lYnVmZmVyQmlu
ZGluZy0+c2V0SXNBdHRhY2hlZChhdHRhY2htZW50LCB0cnVlKTsKKyAgICB9IGVsc2UgeyAvLyBE
ZXRhY2gKKyAgICAgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgbV9mcmFtZWJ1ZmZlckJp
bmRpbmctPnNldElzQXR0YWNoZWQoYXR0YWNobWVudCwgZmFsc2UpOworICAgICAgICB9CisgICAg
fQogICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2ht
ZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KQEAgLTg5Nyw3ICs5MzYsOCBAQCBXZWJHTEdldEluZm8gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGCiAgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIKICAgICAgICAgfHwgKGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0FUVEFDSE1FTlQwCiAgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UCi0gICAgICAgICAgICAmJiBhdHRhY2htZW50
ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAgICAgICAm
JiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQKKyAg
ICAgICAgICAgICYmIGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5D
SUxfQVRUQUNITUVOVCkKICAgICAgICAgfHwgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFCiAgICAgICAgICAgICAmJiBwbmFtZSAh
PSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRQog
ICAgICAgICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfVEVYVFVSRV9MRVZFTApAQCAtMTE3Niw4ICsxMjE2LDExIEBAIFdlYkdMR2V0SW5m
byBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFIKICAgICAgICAgbV9jb250ZXh0LT5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKLSAgICAgICAgbV9j
b250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUp
OwotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KHZhbHVlKSk7CisgICAgICAgIGlmICghbV9yZW5kZXJidWZmZXJCaW5kaW5nKSB7CisgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX3JlbmRlcmJ1ZmZlckJpbmRpbmct
PmdldEludGVybmFsZm9ybWF0KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKQEAgLTE1NTksOCArMTYwMiwyMSBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVNoYWRlCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCkKIHsKLSAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KSB7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQTQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCNV9BMToKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I1NjU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U1RFTkNJTF9JTkRFWDg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RF
TkNJTDoKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBpZiAobV9yZW5kZXJidWZmZXJC
aW5kaW5nKQorICAgICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbGZv
cm1hdChpbnRlcm5hbGZvcm1hdCk7CisgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAg
fQogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2FtcGxlQ292ZXJhZ2UoZG91Ymxl
IHZhbHVlLCBib29sIGludmVydCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNiAr
NDIzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhf
Q09NUE9ORU5UMTYgICAgICAgICAgICAgID0gMHg4MUE1OwogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgU1RFTkNJTF9JTkRFWCAgICAgICAgICAgICAgICAgID0gMHgxOTAxOwogICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgU1RFTkNJTF9JTkRFWDggICAgICAgICAgICAgICAgID0gMHg4RDQ4
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAg
ICAgID0gMHg4NEY5OwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBSRU5ERVJCVUZGRVJf
V0lEVEggICAgICAgICAgICAgPSAweDhENDI7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBS
RU5ERVJCVUZGRVJfSEVJR0hUICAgICAgICAgICAgPSAweDhENDM7CkBAIC00NDIsNiArNDQzLDcg
QEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09MT1JfQVRUQUNI
TUVOVDAgICAgICAgICAgICAgID0gMHg4Q0UwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
REVQVEhfQVRUQUNITUVOVCAgICAgICAgICAgICAgID0gMHg4RDAwOwogICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgICAgICAgID0gMHg4RDIwOworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgID0g
MHg4MjFBOwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBOT05FICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAwOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA1NjQ3MykKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERFUFRIX0NPTVBPTkVOVDE2
ID0gMHg4MUE1LAogICAgICAgICAgICAgU1RFTkNJTF9JTkRFWCA9IDB4MTkwMSwKICAgICAgICAg
ICAgIFNURU5DSUxfSU5ERVg4ID0gMHg4RDQ4LAorICAgICAgICAgICAgREVQVEhfU1RFTkNJTCA9
IDB4ODRGOSwKICAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKICAgICAg
ICAgICAgIFJFTkRFUkJVRkZFUl9IRUlHSFQgPSAweDhENDMsCiAgICAgICAgICAgICBSRU5ERVJC
VUZGRVJfSU5URVJOQUxfRk9STUFUID0gMHg4RDQ0LApAQCAtMzc4LDYgKzM3OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIENPTE9SX0FUVEFDSE1FTlQwID0gMHg4Q0UwLAog
ICAgICAgICAgICAgREVQVEhfQVRUQUNITUVOVCA9IDB4OEQwMCwKICAgICAgICAgICAgIFNURU5D
SUxfQVRUQUNITUVOVCA9IDB4OEQyMCwKKyAgICAgICAgICAgIERFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCA9IDB4ODIxQSwKICAgICAgICAgICAgIE5PTkUgPSAwLAogICAgICAgICAgICAgRlJBTUVC
VUZGRVJfQ09NUExFVEUgPSAweDhDRDUsCiAgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQgPSAweDhDRDYsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1NjQ3
MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFj
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDcgKzQ3NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmbHVzaCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1
bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0
LCBidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7CisgICAgR0x1aW50IHJl
bmRlcmJ1ZmZlciA9IChidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7Cisg
ICAgaWYgKGF0dGFjaG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSB7CisgICAgICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIERFUFRIX0FUVEFDSE1FTlQs
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgU1RFTkNJTF9BVFRBQ0hNRU5ULCByZW5kZXJidWZm
ZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIDo6Z2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZm
ZXJUZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVu
dCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgbG9uZyBs
ZXZlbCkKQEAgLTY5MSw2ICs2OTYsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFz
ZVNoYWRlckNvbQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7CiAgICAgZW5zdXJlQ29udGV4
dChtX2NvbnRleHRPYmopOworICAgIGlmIChpbnRlcm5hbGZvcm1hdCA9PSBERVBUSF9TVEVOQ0lM
KQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOworICAg
IGVsc2UgaWYgKGludGVybmFsZm9ybWF0ID09IERFUFRIX0NPTVBPTkVOVDE2KQorICAgICAgICBp
bnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKICAgICA6OmdsUmVuZGVyYnVmZmVy
U3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIApA
QCAtOTg2LDYgKzk5NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNp
Z24KIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2Nv
bnRleHRPYmopOworICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCkKKyAgICAgICAgYXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxf
QVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgogICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTY0NzYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMtMjQgIFpoZW55
YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVj
dCBhdHRhY2htZW50IGJlaGF2aW9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9m
cmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCisKKyAgICAgICAgKiBzcmMvV2ViR3Jh
cGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHA6IE1hcCB0byBjb3JyZWN0IERFUFRIX1NURU5D
SUwgZm9ybWF0LgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJ
bXBsOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2KToKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbDo6
cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisKIDIwMTAtMDMtMjQgIERtaXRyeSBUaXRvdiAgPGRpbWlj
aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCByNTY0NTMu
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250
ZXh0M0REZWZhdWx0SW1wbC5jcHAJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzY5LDcgKzc2OSwxNiBAQCBERUxFR0FURV9UT19HTChmaW5pc2gsIEZpbmlzaCkKIAogREVM
RUdBVEVfVE9fR0woZmx1c2gsIEZsdXNoKQogCi1ERUxFR0FURV9UT19HTF80KGZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyLCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2ViR0xJZCkKK3ZvaWQgV2ViR3JhcGhpY3ND
b250ZXh0M0REZWZhdWx0SW1wbDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBy
ZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMSWQgYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIGlmIChhdHRhY2htZW50ID09IEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCkgeworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgR0xfREVQ
VEhfQVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOworICAgICAgICBnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBy
ZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJn
ZXQsIGJ1ZmZlcik7Cit9CiAKIERFTEVHQVRFX1RPX0dMXzUoZnJhbWVidWZmZXJUZXh0dXJlMkQs
IEZyYW1lYnVmZmVyVGV4dHVyZTJERVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCBXZWJHTElkLCBsb25nKQogCkBAIC04NjksNyArODc4LDE0IEBAIHVuc2ln
bmVkIGxvbmcgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWwKIAogREVMRUdBVEVfVE9fR0xfMihn
ZXRGbG9hdHYsIEdldEZsb2F0diwgdW5zaWduZWQgbG9uZywgZmxvYXQqKQogCi1ERUxFR0FURV9U
T19HTF80KGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2LCBHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgaW50KikKK3ZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1w
bDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBpZiAoYXR0YWNobWVudCA9PSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAg
IGF0dGFjaG1lbnQgPSBHTF9ERVBUSF9BVFRBQ0hNRU5UOyAvLyBPciBHTF9TVEVOQ0lMX0FUVEFD
SE1FTlQsIGVpdGhlciB3b3Jrcy4KKyAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKK30KIAogREVMRUdB
VEVfVE9fR0xfMihnZXRJbnRlZ2VydiwgR2V0SW50ZWdlcnYsIHVuc2lnbmVkIGxvbmcsIGludCop
CiAKQEAgLTk5MCw3ICsxMDA2LDE4IEBAIHZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0
SW1wbDo6cmUKIHsKIH0KIAotREVMRUdBVEVfVE9fR0xfNChyZW5kZXJidWZmZXJTdG9yYWdlLCBS
ZW5kZXJidWZmZXJTdG9yYWdlRVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQordm9pZCBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1
bHRJbXBsOjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGhlaWdodCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBpZiAoaW50
ZXJuYWxmb3JtYXQgPT0gR0xfREVQVEhfU1RFTkNJTCkKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQg
PSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKKyAgICBlbHNlIGlmIChpbnRlcm5hbGZvcm1hdCA9
PSBHTF9ERVBUSF9DT01QT05FTlQxNikKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBHTF9ERVBU
SF9DT01QT05FTlQ7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRhcmdldCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworfQogCiBERUxFR0FURV9UT19HTF8yKHNhbXBsZUNv
dmVyYWdlLCBTYW1wbGVDb3ZlcmFnZSwgZG91YmxlLCBib29sKQogCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA1NjQ3NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDEwLTAzLTI0ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGFu
ZCB0ZXN0IG5ldyBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlvci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NjExCisKKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC1leHBl
Y3RlZC50eHQ6IEFkZGVkLCB0ZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2
aW9yLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRh
Y2htZW50Lmh0bWw6IEFkZGVkLCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlv
ci4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdl
dC1jYWxscy5qczogREVQVEhfQ09NUE9ORU5UIGlzIG5vIGxvbmdlciBhIHZhbGlkIGlucHV0LCB1
c2UgREVQVEhfQ09NUE9ORU5UMTYgaW5zdGVhZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtc25v
d2xlb3BhcmQvU2tpcHBlZDogVGhlIGJvdCBkb2VzIG5vdCBzdXBwb3J0IEVYVF9wYWNrZWRfZGVw
dGhfc3RlbmNpbCwgc2tpcCB0aGUgZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbCB0
ZXN0LgorCiAyMDEwLTAzLTI0ICBFcmljIFVocmhhbmUgPGVyaWN1QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBET01Db3JlRXhjZXB0aW9uIG5lZWRzIE5vU3RhdGljVGFibGVzIG1vZGlmaWVyCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0
YWNobWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2Jq
ZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBA
CitUZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9ycworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK0NyZWF0ZSByZW5kZXJidWZmZXJzCitQQVNTIGdsID0gY3Jl
YXRlM0RDb250ZXh0KCkgaXMgbm9uLW51bGwuCitQQVNTIGRlcHRoQnVmZmVyID0gZ2wuY3JlYXRl
UmVuZGVyYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9f
RVJST1IKK1BBU1Mgc3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5v
bi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGRlcHRoU3Rl
bmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfQVRU
QUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgor
UEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitBdHRhY2ggZGVwdGggdXNpbmcgU1RF
TkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9u
LW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFj
aCBkZXB0aCB1c2luZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5J
TlZBTElEX09QRVJBVElPTgorQXR0YWNoIHN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5U
CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGds
LmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FU
VEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4K
K1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIHN0ZW5j
aWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRB
Q0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQ
QVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNp
bmcgREVQVEhfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitB
dHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlz
IGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggZGVwdGgsIHRoZW4gc3RlbmNpbCwgY2F1c2lu
ZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxs
LgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdldEVycm9yKCkg
aXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVz
aW5nIGNvbmZsaWN0CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51
bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIGRlcHRoLCB0aGVuIGRlcHRoU3RlbmNp
bCwgY2F1c2luZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdl
dEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aFN0ZW5jaWwsIHRo
ZW4gZGVwdGgsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggc3RlbmNpbCwg
dGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19F
UlJPUgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2gg
ZGVwdGhTdGVuY2lsLCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0g
Z2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBp
cyBnbC5OT19FUlJPUgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9O
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFj
aG1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9m
cmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCit2YXIgZ2w7Cit2YXIgZmJvOwordmFyIGRlcHRo
QnVmZmVyOwordmFyIHN0ZW5jaWxCdWZmZXI7Cit2YXIgZGVwdGhTdGVuY2lsQnVmZmVyOwordmFy
IHdpZHRoID0gMjsKK3ZhciBoZWlnaHQgPSAyOworCitmdW5jdGlvbiB0ZXN0QXR0YWNobWVudChh
dHRhY2htZW50LCBidWZmZXIsIGlzQ29uZmxpY3RlZCkKK3sKKyAgICBzaG91bGRCZU5vbk51bGwo
ImZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICBz
aG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsIGlzQ29uZmxpY3RlZCA/ICJnbC5JTlZBTElEX09QRVJB
VElPTiIgOiAiZ2wuTk9fRVJST1IiKTsKK30KKworZnVuY3Rpb24gdGVzdEF0dGFjaG1lbnRzKGF0
dGFjaG1lbnQwLCBidWZmZXIwLCBhdHRhY2htZW50MSwgYnVmZmVyMSwgaXNDb25mbGljdGVkKQor
eworICAgIHNob3VsZEJlTm9uTnVsbCgiZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSIpOwor
ICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudDAsIGdsLlJFTkRF
UkJVRkZFUiwgYnVmZmVyMCk7CisgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9f
RVJST1IiKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
YXR0YWNobWVudDEsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyMSk7CisgICAgc2hvdWxkQmUoImds
LmdldEVycm9yKCkiLCBpc0NvbmZsaWN0ZWQgPyAiZ2wuSU5WQUxJRF9PUEVSQVRJT04iIDogImds
Lk5PX0VSUk9SIik7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBh
dHRhY2htZW50IGJlaGF2aW9ycyIpOworCitkZWJ1ZygiQ3JlYXRlIHJlbmRlcmJ1ZmZlcnMiKTsK
K3Nob3VsZEJlTm9uTnVsbCgiZ2wgPSBjcmVhdGUzRENvbnRleHQoKSIpOworc2hvdWxkQmVOb25O
dWxsKCJkZXB0aEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7CitnbC5iaW5kUmVu
ZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVp
Z2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CitzaG91bGRC
ZU5vbk51bGwoInN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOworZ2wu
YmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHN0ZW5jaWxCdWZmZXIpOworZ2wucmVu
ZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlNURU5DSUxfSU5ERVg4LCB3aWR0
aCwgaGVpZ2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7Citz
aG91bGRCZU5vbk51bGwoImRlcHRoU3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpIik7CitnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2ls
QnVmZmVyKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBU
SF9TVEVOQ0lMLCB3aWR0aCwgaGVpZ2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImds
Lk5PX0VSUk9SIik7CisKK2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfQVRUQUNITUVO
VCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGZh
bHNlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0
ZXN0QXR0YWNobWVudChnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsK
K2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0
ZXN0QXR0YWNobWVudChnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0
cnVlKTsKK2RlYnVnKCJBdHRhY2ggc3RlbmNpbCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsK
K3Rlc3RBdHRhY2htZW50KGdsLlNURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgZmFs
c2UpOworZGVidWcoIkF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKK3Rl
c3RBdHRhY2htZW50KGdsLkRFUFRIX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUpOwor
ZGVidWcoIkF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCIpOwor
dGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVy
LCB0cnVlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxf
QVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5U
LCBkZXB0aFN0ZW5jaWxCdWZmZXIsIGZhbHNlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2ls
IHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLkRFUFRIX0FUVEFD
SE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoU3Rl
bmNpbCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLlNURU5D
SUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVlKTsKKworZGVidWcoIkF0dGFj
aCBkZXB0aCwgdGhlbiBzdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVu
dHMoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGdsLlNURU5DSUxfQVRUQUNITUVO
VCwgc3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVw
dGgsIGNhdXNpbmcgY29uZmxpY3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5TVEVOQ0lMX0FUVEFD
SE1FTlQsIHN0ZW5jaWxCdWZmZXIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0
cnVlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGgsIHRoZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNv
bmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZm
ZXIsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVl
KTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZs
aWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0
aFN0ZW5jaWxCdWZmZXIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsK
K2RlYnVnKCJBdHRhY2ggc3RlbmNpbCwgdGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxp
Y3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwg
Z2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIHRydWUpOwor
ZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5jaWwsIHRoZW4gc3RlbmNpbCwgY2F1c2luZyBjb25mbGlj
dCIpOwordGVzdEF0dGFjaG1lbnRzKGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhT
dGVuY2lsQnVmZmVyLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUp
OworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0
cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCShyZXZpc2lv
biA1NjQ3MykKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9n
bC1vYmplY3QtZ2V0LWNhbGxzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHZh
ciByZW5kZXJidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIKIHNob3VsZEJlKCdnbC5nZXRF
cnJvcigpJywgJzAnKTsKIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5k
ZXJidWZmZXIpOwogc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwotZ2wucmVuZGVyYnVm
ZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMiwgMik7Citn
bC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5U
MTYsIDIsIDIpOwogc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwogZ2wuZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJF
TkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKIC8vIEZJWE1FOiBvbiBzb21lIG1hY2hpbmVzIChp
biBwYXJ0aWN1bGFyIHRoZSBXZWJLaXQgY29tbWl0IGJvdHMpIHRoZQpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQJKHJldmlzaW9uIDU2NDY0KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQJKHdvcmtpbmcg
Y29weSkKQEAgLTExMCwzICsxMTAsNyBAQCBmYXN0L2Zvcm1zL3NlYXJjaC1ldmVudC1kZWxheS5o
dG1sCiAjIGNvbXB1dGVkIHN0eWxlIG9uIEhXIHRyYW5zZm9ybXMgYXJlIHdyb25nIGluIFNMLCBi
dXQKICMgY29ycmVjdCBvbiBvdGhlciBwbGF0Zm9ybXMuCiBhbmltYXRpb25zL2ZpbGwtbW9kZS10
cmFuc2Zvcm0uaHRtbAorCisjIFNub3cgTGVvcGFyZCBib3QgZG9lcyBub3Qgc3VwcG9ydCBFWFRf
cGFja2VkX2RlcHRoX3N0ZW5jaWwsIHdoaWNoIGlzIHJlcXVpcmVkIGJ5IFdlYkdMLgorIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2MTEKK2Zhc3QvY2FudmFzL3dl
YmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52248</attachid>
            <date>2010-03-31 20:13:37 -0700</date>
            <delta_ts>2010-03-31 20:23:59 -0700</delta_ts>
            <desc>revised patch</desc>
            <filename>attach.patch</filename>
            <type>text/plain</type>
            <size>29052</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjQ3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMDMtMjQgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9yLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNo
bWVudC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDog
S2VlcCB0cmFjayBvZiBhdHRhY2hlZCBzdGVuY2lsL2RlcHRoIHJlbmRlcmJ1ZmZlcnMgaW4gV2Vi
R0xGcmFtZWJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OldlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0SXNB
dHRhY2hlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzRGVwdGhBdHRhY2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppc1N0ZW5jaWxBdHRhY2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppc0RlcHRoU3RlbmNpbEF0dGFj
aGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHA6IEtlZXAg
dHJhY2sgb2YgaW50ZXJuYWxmb3JtYXQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1
ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyYnVmZmVyLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJidWZmZXI6
OnNldEludGVybmFsZm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyYnVmZmVy
OjpnZXRJbnRlcm5hbGZvcm1hdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOiBEZXRlY3Qgc3RlbmNpbC9kZXB0aCBidWZmZXIgY29u
ZmxpY3RzLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOiBIYW5kbGluZyBERVBUSF9TVEVOQ0lMIGNhc2Uu
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcik6IEdldCBjb3JyZWN0IFdlYkdMIGludGVybmFsZm9ybWF0LgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKTogRGV0
ZWN0IGlsbGVnYWwgZW51bXMuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmlkbDogQWRkIERFUFRIX1NURU5DSUwgZW51bXMuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDogQWRkIERFUFRIX1NURU5DSUwgZW51bXMuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwOiBNYXAgdG8gY29ycmVjdCBE
RVBUSF9TVEVOQ0lMIGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorCiAyMDEw
LTAzLTI0ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5v
IHJldmlldywgcm9sbGluZyBvdXQgcjU2NDUzLgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwyOCBA
QCBQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IFdlYkdMRnJhbWViCiAKIFdlYkdMRnJhbWVi
dWZmZXI6OldlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAgICAg
OiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pc0RlcHRoQXR0YWNoZWQoZmFsc2UpCisgICAg
LCBtX2lzU3RlbmNpbEF0dGFjaGVkKGZhbHNlKQorICAgICwgbV9pc0RlcHRoU3RlbmNpbEF0dGFj
aGVkKGZhbHNlKQogewogICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNE
KCktPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOwogfQogCit2b2lkIFdlYkdMRnJhbWVidWZmZXI6OnNl
dElzQXR0YWNoZWQodW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBib29sIGlzQXR0YWNoZWQpCit7
CisgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfQVRUQUNITUVOVDoKKyAgICAgICAgbV9pc0RlcHRoQXR0YWNoZWQgPSBpc0F0dGFjaGVk
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgIG1faXNTdGVuY2lsQXR0YWNoZWQgPSBpc0F0dGFjaGVkOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCA9IGlzQXR0YWNoZWQ7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpfZGVs
ZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQoKS0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS0+ZGVsZXRlRnJhbWVidWZmZXIob2JqZWN0KTsKSW5kZXg6IFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwx
MCArMzksMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCopOwogICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJc0F0dGFjaGVkKHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgYm9vbCBpc0F0dGFjaGVkKTsKKworICAgICAgICBib29sIGlzRGVwdGhBdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXB0aEF0dGFjaGVkOyB9CisgICAgICAgIGJvb2wg
aXNTdGVuY2lsQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RlbmNpbEF0dGFjaGVkOyB9
CisgICAgICAgIGJvb2wgaXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEZXB0aFN0ZW5jaWxBdHRhY2hlZDsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJH
TEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgICAgICAKICAgICAgICAg
dmlydHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICAgIHBy
aXZhdGU6CisgICAgICAgIGJvb2wgbV9pc0RlcHRoQXR0YWNoZWQ7CisgICAgICAgIGJvb2wgbV9p
c1N0ZW5jaWxBdHRhY2hlZDsKKyAgICAgICAgYm9vbCBtX2lzRGVwdGhTdGVuY2lsQXR0YWNoZWQ7
CiAgICAgfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMiArNDQsMTQgQEAgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xSZW5kZQog
CiBXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KiBjdHgpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pbnRlcm5hbGZvcm1h
dChHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQpCiB7CiAgICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+
Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkpOwogfQogCiBXZWJHTFJl
bmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgs
IFBsYXRmb3JtM0RPYmplY3Qgb2JqKQogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKKyAgICAsIG1f
aW50ZXJuYWxmb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE0KQogewogICAgIHNldE9iamVj
dChvYmosIGZhbHNlKTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJi
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVm
ZmVyLmgJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMSArNDMsMTcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5n
IHRoZXNlIG9iamVjdHMKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZm
ZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRl
cmJ1ZmZlcik7CiAKKyAgICAgICAgdm9pZCBzZXRJbnRlcm5hbGZvcm1hdCh1bnNpZ25lZCBsb25n
IGludGVybmFsZm9ybWF0KSB7IG1faW50ZXJuYWxmb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsgfQor
ICAgICAgICB1bnNpZ25lZCBsb25nIGdldEludGVybmFsZm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbGZvcm1hdDsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJHTFJlbmRl
cmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgV2ViR0xSZW5kZXJidWZm
ZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CiAgICAgICAgIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKKwor
ICAgICAgcHJpdmF0ZToKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX2ludGVybmFsZm9ybWF0Owog
ICAgIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysr
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzkwLDYgKzc5MCw0NSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJh
bWVidWZmZXJSCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBpZiAoYnVmZmVyLT5vYmplY3QoKSkgeworICAgICAgICBib29sIGlzQ29uZmxpY3RlZCA9IGZh
bHNlOworICAgICAgICBib29sIGlzRGVwdGhPclN0ZW5jaWwgPSB0cnVlOworICAgICAgICBzd2l0
Y2ggKGF0dGFjaG1lbnQpIHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
QVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNEZXB0
aFN0ZW5jaWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRh
Y2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9DT01QT05FTlQxNikKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5D
SUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNE
ZXB0aFN0ZW5jaWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc0RlcHRoQXR0
YWNoZWQoKSkKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOworICAgICAgICAg
ICAgaWYgKGJ1ZmZlci0+Z2V0SW50ZXJuYWxmb3JtYXQoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9JTkRFWDgpCisgICAgICAgICAgICAgICAgaXNDb25mbGljdGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmct
PmlzRGVwdGhBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRh
Y2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9TVEVOQ0lMKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlzRGVwdGhPclN0
ZW5jaWwgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNDb25mbGljdGVkKSB7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGlzRGVwdGhPclN0ZW5jaWwpCisgICAgICAgICAgICBtX2ZyYW1lYnVmZmVyQmlu
ZGluZy0+c2V0SXNBdHRhY2hlZChhdHRhY2htZW50LCB0cnVlKTsKKyAgICB9IGVsc2UgeyAvLyBE
ZXRhY2gKKyAgICAgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgbV9mcmFtZWJ1ZmZlckJp
bmRpbmctPnNldElzQXR0YWNoZWQoYXR0YWNobWVudCwgZmFsc2UpOworICAgICAgICB9CisgICAg
fQogICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2ht
ZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KQEAgLTg5Nyw3ICs5MzYsOCBAQCBXZWJHTEdldEluZm8gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGCiAgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIKICAgICAgICAgfHwgKGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0FUVEFDSE1FTlQwCiAgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UCi0gICAgICAgICAgICAmJiBhdHRhY2htZW50
ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAgICAgICAm
JiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQKKyAg
ICAgICAgICAgICYmIGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5D
SUxfQVRUQUNITUVOVCkKICAgICAgICAgfHwgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFCiAgICAgICAgICAgICAmJiBwbmFtZSAh
PSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRQog
ICAgICAgICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfVEVYVFVSRV9MRVZFTApAQCAtMTE3Niw4ICsxMjE2LDExIEBAIFdlYkdMR2V0SW5m
byBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFIKICAgICAgICAgbV9jb250ZXh0LT5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKLSAgICAgICAgbV9j
b250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUp
OwotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KHZhbHVlKSk7CisgICAgICAgIGlmICghbV9yZW5kZXJidWZmZXJCaW5kaW5nKSB7CisgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX3JlbmRlcmJ1ZmZlckJpbmRpbmct
PmdldEludGVybmFsZm9ybWF0KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKQEAgLTE1NTksOCArMTYwMiwyMSBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVNoYWRlCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCkKIHsKLSAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KSB7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQTQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCNV9BMToKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I1NjU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U1RFTkNJTF9JTkRFWDg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RF
TkNJTDoKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBpZiAobV9yZW5kZXJidWZmZXJC
aW5kaW5nKQorICAgICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbGZv
cm1hdChpbnRlcm5hbGZvcm1hdCk7CisgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAg
fQogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2FtcGxlQ292ZXJhZ2UoZG91Ymxl
IHZhbHVlLCBib29sIGludmVydCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNiAr
NDIzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhf
Q09NUE9ORU5UMTYgICAgICAgICAgICAgID0gMHg4MUE1OwogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgU1RFTkNJTF9JTkRFWCAgICAgICAgICAgICAgICAgID0gMHgxOTAxOwogICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgU1RFTkNJTF9JTkRFWDggICAgICAgICAgICAgICAgID0gMHg4RDQ4
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAg
ICAgID0gMHg4NEY5OwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBSRU5ERVJCVUZGRVJf
V0lEVEggICAgICAgICAgICAgPSAweDhENDI7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBS
RU5ERVJCVUZGRVJfSEVJR0hUICAgICAgICAgICAgPSAweDhENDM7CkBAIC00NDIsNiArNDQzLDcg
QEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09MT1JfQVRUQUNI
TUVOVDAgICAgICAgICAgICAgID0gMHg4Q0UwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
REVQVEhfQVRUQUNITUVOVCAgICAgICAgICAgICAgID0gMHg4RDAwOwogICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgICAgICAgID0gMHg4RDIwOworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgID0g
MHg4MjFBOwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBOT05FICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAwOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA1NjQ3MykKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERFUFRIX0NPTVBPTkVOVDE2
ID0gMHg4MUE1LAogICAgICAgICAgICAgU1RFTkNJTF9JTkRFWCA9IDB4MTkwMSwKICAgICAgICAg
ICAgIFNURU5DSUxfSU5ERVg4ID0gMHg4RDQ4LAorICAgICAgICAgICAgREVQVEhfU1RFTkNJTCA9
IDB4ODRGOSwKICAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKICAgICAg
ICAgICAgIFJFTkRFUkJVRkZFUl9IRUlHSFQgPSAweDhENDMsCiAgICAgICAgICAgICBSRU5ERVJC
VUZGRVJfSU5URVJOQUxfRk9STUFUID0gMHg4RDQ0LApAQCAtMzc4LDYgKzM3OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIENPTE9SX0FUVEFDSE1FTlQwID0gMHg4Q0UwLAog
ICAgICAgICAgICAgREVQVEhfQVRUQUNITUVOVCA9IDB4OEQwMCwKICAgICAgICAgICAgIFNURU5D
SUxfQVRUQUNITUVOVCA9IDB4OEQyMCwKKyAgICAgICAgICAgIERFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCA9IDB4ODIxQSwKICAgICAgICAgICAgIE5PTkUgPSAwLAogICAgICAgICAgICAgRlJBTUVC
VUZGRVJfQ09NUExFVEUgPSAweDhDRDUsCiAgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQgPSAweDhDRDYsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1NjQ3
MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFj
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDcgKzQ3NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmbHVzaCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1
bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0
LCBidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7CisgICAgR0x1aW50IHJl
bmRlcmJ1ZmZlciA9IChidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7Cisg
ICAgaWYgKGF0dGFjaG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSB7CisgICAgICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIERFUFRIX0FUVEFDSE1FTlQs
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgU1RFTkNJTF9BVFRBQ0hNRU5ULCByZW5kZXJidWZm
ZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIDo6Z2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZm
ZXJUZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVu
dCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgbG9uZyBs
ZXZlbCkKQEAgLTY5MSw2ICs2OTYsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFz
ZVNoYWRlckNvbQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7CiAgICAgZW5zdXJlQ29udGV4
dChtX2NvbnRleHRPYmopOworICAgIGlmIChpbnRlcm5hbGZvcm1hdCA9PSBERVBUSF9TVEVOQ0lM
KQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOworICAg
IGVsc2UgaWYgKGludGVybmFsZm9ybWF0ID09IERFUFRIX0NPTVBPTkVOVDE2KQorICAgICAgICBp
bnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKICAgICA6OmdsUmVuZGVyYnVmZmVy
U3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIApA
QCAtOTg2LDYgKzk5NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNp
Z24KIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2Nv
bnRleHRPYmopOworICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCkKKyAgICAgICAgYXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxf
QVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgogICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTY0NzYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMtMjQgIFpoZW55
YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVj
dCBhdHRhY2htZW50IGJlaGF2aW9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9m
cmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCisKKyAgICAgICAgKiBzcmMvV2ViR3Jh
cGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHA6IE1hcCB0byBjb3JyZWN0IERFUFRIX1NURU5D
SUwgZm9ybWF0LgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJ
bXBsOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2KToKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbDo6
cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisKIDIwMTAtMDMtMjQgIERtaXRyeSBUaXRvdiAgPGRpbWlj
aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCByNTY0NTMu
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250
ZXh0M0REZWZhdWx0SW1wbC5jcHAJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzY5LDcgKzc2OSwxNiBAQCBERUxFR0FURV9UT19HTChmaW5pc2gsIEZpbmlzaCkKIAogREVM
RUdBVEVfVE9fR0woZmx1c2gsIEZsdXNoKQogCi1ERUxFR0FURV9UT19HTF80KGZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyLCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2ViR0xJZCkKK3ZvaWQgV2ViR3JhcGhpY3ND
b250ZXh0M0REZWZhdWx0SW1wbDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBy
ZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMSWQgYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIGlmIChhdHRhY2htZW50ID09IEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCkgeworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgR0xfREVQ
VEhfQVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOworICAgICAgICBnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBy
ZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJn
ZXQsIGJ1ZmZlcik7Cit9CiAKIERFTEVHQVRFX1RPX0dMXzUoZnJhbWVidWZmZXJUZXh0dXJlMkQs
IEZyYW1lYnVmZmVyVGV4dHVyZTJERVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCBXZWJHTElkLCBsb25nKQogCkBAIC04NjksNyArODc4LDE0IEBAIHVuc2ln
bmVkIGxvbmcgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWwKIAogREVMRUdBVEVfVE9fR0xfMihn
ZXRGbG9hdHYsIEdldEZsb2F0diwgdW5zaWduZWQgbG9uZywgZmxvYXQqKQogCi1ERUxFR0FURV9U
T19HTF80KGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2LCBHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgaW50KikKK3ZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1w
bDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBpZiAoYXR0YWNobWVudCA9PSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAg
IGF0dGFjaG1lbnQgPSBHTF9ERVBUSF9BVFRBQ0hNRU5UOyAvLyBPciBHTF9TVEVOQ0lMX0FUVEFD
SE1FTlQsIGVpdGhlciB3b3Jrcy4KKyAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKK30KIAogREVMRUdB
VEVfVE9fR0xfMihnZXRJbnRlZ2VydiwgR2V0SW50ZWdlcnYsIHVuc2lnbmVkIGxvbmcsIGludCop
CiAKQEAgLTk5MCw3ICsxMDA2LDE4IEBAIHZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0
SW1wbDo6cmUKIHsKIH0KIAotREVMRUdBVEVfVE9fR0xfNChyZW5kZXJidWZmZXJTdG9yYWdlLCBS
ZW5kZXJidWZmZXJTdG9yYWdlRVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQordm9pZCBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1
bHRJbXBsOjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGhlaWdodCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBpZiAoaW50
ZXJuYWxmb3JtYXQgPT0gR0xfREVQVEhfU1RFTkNJTCkKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQg
PSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKKyAgICBlbHNlIGlmIChpbnRlcm5hbGZvcm1hdCA9
PSBHTF9ERVBUSF9DT01QT05FTlQxNikKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBHTF9ERVBU
SF9DT01QT05FTlQ7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRhcmdldCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworfQogCiBERUxFR0FURV9UT19HTF8yKHNhbXBsZUNv
dmVyYWdlLCBTYW1wbGVDb3ZlcmFnZSwgZG91YmxlLCBib29sKQogCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA1NjQ3NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDEwLTAzLTI0ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGFu
ZCB0ZXN0IG5ldyBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlvci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NjExCisKKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC1leHBl
Y3RlZC50eHQ6IEFkZGVkLCB0ZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2
aW9yLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRh
Y2htZW50Lmh0bWw6IEFkZGVkLCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlv
ci4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdl
dC1jYWxscy5qczogREVQVEhfQ09NUE9ORU5UIGlzIG5vIGxvbmdlciBhIHZhbGlkIGlucHV0LCB1
c2UgREVQVEhfQ09NUE9ORU5UMTYgaW5zdGVhZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtc25v
d2xlb3BhcmQvU2tpcHBlZDogVGhlIGJvdCBkb2VzIG5vdCBzdXBwb3J0IEVYVF9wYWNrZWRfZGVw
dGhfc3RlbmNpbCwgc2tpcCB0aGUgZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbCB0
ZXN0LgorCiAyMDEwLTAzLTI0ICBFcmljIFVocmhhbmUgPGVyaWN1QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBET01Db3JlRXhjZXB0aW9uIG5lZWRzIE5vU3RhdGljVGFibGVzIG1vZGlmaWVyCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0
YWNobWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2Jq
ZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBA
CitUZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9ycworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK0NyZWF0ZSByZW5kZXJidWZmZXJzCitQQVNTIGdsID0gY3Jl
YXRlM0RDb250ZXh0KCkgaXMgbm9uLW51bGwuCitQQVNTIGRlcHRoQnVmZmVyID0gZ2wuY3JlYXRl
UmVuZGVyYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9f
RVJST1IKK1BBU1Mgc3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5v
bi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGRlcHRoU3Rl
bmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfQVRU
QUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgor
UEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitBdHRhY2ggZGVwdGggdXNpbmcgU1RF
TkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9u
LW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFj
aCBkZXB0aCB1c2luZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5J
TlZBTElEX09QRVJBVElPTgorQXR0YWNoIHN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5U
CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGds
LmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FU
VEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4K
K1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIHN0ZW5j
aWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRB
Q0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQ
QVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNp
bmcgREVQVEhfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitB
dHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlz
IGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggZGVwdGgsIHRoZW4gc3RlbmNpbCwgY2F1c2lu
ZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxs
LgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdldEVycm9yKCkg
aXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVz
aW5nIGNvbmZsaWN0CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51
bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIGRlcHRoLCB0aGVuIGRlcHRoU3RlbmNp
bCwgY2F1c2luZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdl
dEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aFN0ZW5jaWwsIHRo
ZW4gZGVwdGgsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggc3RlbmNpbCwg
dGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19F
UlJPUgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2gg
ZGVwdGhTdGVuY2lsLCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0g
Z2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBp
cyBnbC5OT19FUlJPUgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9O
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFj
aG1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9m
cmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCit2YXIgZ2w7Cit2YXIgZmJvOwordmFyIGRlcHRo
QnVmZmVyOwordmFyIHN0ZW5jaWxCdWZmZXI7Cit2YXIgZGVwdGhTdGVuY2lsQnVmZmVyOwordmFy
IHdpZHRoID0gMjsKK3ZhciBoZWlnaHQgPSAyOworCitmdW5jdGlvbiB0ZXN0QXR0YWNobWVudChh
dHRhY2htZW50LCBidWZmZXIsIGlzQ29uZmxpY3RlZCkKK3sKKyAgICBzaG91bGRCZU5vbk51bGwo
ImZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICBz
aG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsIGlzQ29uZmxpY3RlZCA/ICJnbC5JTlZBTElEX09QRVJB
VElPTiIgOiAiZ2wuTk9fRVJST1IiKTsKK30KKworZnVuY3Rpb24gdGVzdEF0dGFjaG1lbnRzKGF0
dGFjaG1lbnQwLCBidWZmZXIwLCBhdHRhY2htZW50MSwgYnVmZmVyMSwgaXNDb25mbGljdGVkKQor
eworICAgIHNob3VsZEJlTm9uTnVsbCgiZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSIpOwor
ICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudDAsIGdsLlJFTkRF
UkJVRkZFUiwgYnVmZmVyMCk7CisgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9f
RVJST1IiKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
YXR0YWNobWVudDEsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyMSk7CisgICAgc2hvdWxkQmUoImds
LmdldEVycm9yKCkiLCBpc0NvbmZsaWN0ZWQgPyAiZ2wuSU5WQUxJRF9PUEVSQVRJT04iIDogImds
Lk5PX0VSUk9SIik7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBh
dHRhY2htZW50IGJlaGF2aW9ycyIpOworCitkZWJ1ZygiQ3JlYXRlIHJlbmRlcmJ1ZmZlcnMiKTsK
K3Nob3VsZEJlTm9uTnVsbCgiZ2wgPSBjcmVhdGUzRENvbnRleHQoKSIpOworc2hvdWxkQmVOb25O
dWxsKCJkZXB0aEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7CitnbC5iaW5kUmVu
ZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVp
Z2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CitzaG91bGRC
ZU5vbk51bGwoInN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOworZ2wu
YmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHN0ZW5jaWxCdWZmZXIpOworZ2wucmVu
ZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlNURU5DSUxfSU5ERVg4LCB3aWR0
aCwgaGVpZ2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7Citz
aG91bGRCZU5vbk51bGwoImRlcHRoU3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpIik7CitnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2ls
QnVmZmVyKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBU
SF9TVEVOQ0lMLCB3aWR0aCwgaGVpZ2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImds
Lk5PX0VSUk9SIik7CisKK2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfQVRUQUNITUVO
VCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGZh
bHNlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0
ZXN0QXR0YWNobWVudChnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsK
K2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0
ZXN0QXR0YWNobWVudChnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0
cnVlKTsKK2RlYnVnKCJBdHRhY2ggc3RlbmNpbCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsK
K3Rlc3RBdHRhY2htZW50KGdsLlNURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgZmFs
c2UpOworZGVidWcoIkF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKK3Rl
c3RBdHRhY2htZW50KGdsLkRFUFRIX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUpOwor
ZGVidWcoIkF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCIpOwor
dGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVy
LCB0cnVlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxf
QVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5U
LCBkZXB0aFN0ZW5jaWxCdWZmZXIsIGZhbHNlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2ls
IHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLkRFUFRIX0FUVEFD
SE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoU3Rl
bmNpbCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLlNURU5D
SUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVlKTsKKworZGVidWcoIkF0dGFj
aCBkZXB0aCwgdGhlbiBzdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVu
dHMoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGdsLlNURU5DSUxfQVRUQUNITUVO
VCwgc3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVw
dGgsIGNhdXNpbmcgY29uZmxpY3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5TVEVOQ0lMX0FUVEFD
SE1FTlQsIHN0ZW5jaWxCdWZmZXIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0
cnVlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGgsIHRoZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNv
bmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZm
ZXIsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVl
KTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZs
aWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0
aFN0ZW5jaWxCdWZmZXIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsK
K2RlYnVnKCJBdHRhY2ggc3RlbmNpbCwgdGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxp
Y3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwg
Z2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIHRydWUpOwor
ZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5jaWwsIHRoZW4gc3RlbmNpbCwgY2F1c2luZyBjb25mbGlj
dCIpOwordGVzdEF0dGFjaG1lbnRzKGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhT
dGVuY2lsQnVmZmVyLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUp
OworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0
cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCShyZXZpc2lv
biA1NjQ3MykKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9n
bC1vYmplY3QtZ2V0LWNhbGxzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHZh
ciByZW5kZXJidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIKIHNob3VsZEJlKCdnbC5nZXRF
cnJvcigpJywgJzAnKTsKIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5k
ZXJidWZmZXIpOwogc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwotZ2wucmVuZGVyYnVm
ZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMiwgMik7Citn
bC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5U
MTYsIDIsIDIpOwogc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwogZ2wuZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJF
TkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKIC8vIEZJWE1FOiBvbiBzb21lIG1hY2hpbmVzIChp
biBwYXJ0aWN1bGFyIHRoZSBXZWJLaXQgY29tbWl0IGJvdHMpIHRoZQpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQJKHJldmlzaW9uIDU2NDY0KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQJKHdvcmtpbmcg
Y29weSkKQEAgLTExMCwzICsxMTAsNyBAQCBmYXN0L2Zvcm1zL3NlYXJjaC1ldmVudC1kZWxheS5o
dG1sCiAjIGNvbXB1dGVkIHN0eWxlIG9uIEhXIHRyYW5zZm9ybXMgYXJlIHdyb25nIGluIFNMLCBi
dXQKICMgY29ycmVjdCBvbiBvdGhlciBwbGF0Zm9ybXMuCiBhbmltYXRpb25zL2ZpbGwtbW9kZS10
cmFuc2Zvcm0uaHRtbAorCisjIFNub3cgTGVvcGFyZCBib3QgZG9lcyBub3Qgc3VwcG9ydCBFWFRf
cGFja2VkX2RlcHRoX3N0ZW5jaWwsIHdoaWNoIGlzIHJlcXVpcmVkIGJ5IFdlYkdMLgorIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5MjUKK2Zhc3QvY2FudmFzL3dl
YmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52249</attachid>
            <date>2010-03-31 20:23:59 -0700</date>
            <delta_ts>2010-04-02 13:03:12 -0700</delta_ts>
            <desc>revised patch: resolving a conflict</desc>
            <filename>attach.patch</filename>
            <type>text/plain</type>
            <size>29020</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjQ3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMDMtMjQgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9yLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNo
bWVudC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDog
S2VlcCB0cmFjayBvZiBhdHRhY2hlZCBzdGVuY2lsL2RlcHRoIHJlbmRlcmJ1ZmZlcnMgaW4gV2Vi
R0xGcmFtZWJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OldlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0SXNB
dHRhY2hlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmlzRGVwdGhBdHRhY2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppc1N0ZW5jaWxBdHRhY2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppc0RlcHRoU3RlbmNpbEF0dGFj
aGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHA6IEtlZXAg
dHJhY2sgb2YgaW50ZXJuYWxmb3JtYXQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1
ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyYnVmZmVyLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJidWZmZXI6
OnNldEludGVybmFsZm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyYnVmZmVy
OjpnZXRJbnRlcm5hbGZvcm1hdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOiBEZXRlY3Qgc3RlbmNpbC9kZXB0aCBidWZmZXIgY29u
ZmxpY3RzLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOiBIYW5kbGluZyBERVBUSF9TVEVOQ0lMIGNhc2Uu
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcik6IEdldCBjb3JyZWN0IFdlYkdMIGludGVybmFsZm9ybWF0LgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKTogRGV0
ZWN0IGlsbGVnYWwgZW51bXMuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmlkbDogQWRkIERFUFRIX1NURU5DSUwgZW51bXMuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDogQWRkIERFUFRIX1NURU5DSUwgZW51bXMuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwOiBNYXAgdG8gY29ycmVjdCBE
RVBUSF9TVEVOQ0lMIGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorCiAyMDEw
LTAzLTI0ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5v
IHJldmlldywgcm9sbGluZyBvdXQgcjU2NDUzLgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwyOCBA
QCBQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IFdlYkdMRnJhbWViCiAKIFdlYkdMRnJhbWVi
dWZmZXI6OldlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAgICAg
OiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pc0RlcHRoQXR0YWNoZWQoZmFsc2UpCisgICAg
LCBtX2lzU3RlbmNpbEF0dGFjaGVkKGZhbHNlKQorICAgICwgbV9pc0RlcHRoU3RlbmNpbEF0dGFj
aGVkKGZhbHNlKQogewogICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNE
KCktPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOwogfQogCit2b2lkIFdlYkdMRnJhbWVidWZmZXI6OnNl
dElzQXR0YWNoZWQodW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBib29sIGlzQXR0YWNoZWQpCit7
CisgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfQVRUQUNITUVOVDoKKyAgICAgICAgbV9pc0RlcHRoQXR0YWNoZWQgPSBpc0F0dGFjaGVk
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgIG1faXNTdGVuY2lsQXR0YWNoZWQgPSBpc0F0dGFjaGVkOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQ6CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCA9IGlzQXR0YWNoZWQ7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpfZGVs
ZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQoKS0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS0+ZGVsZXRlRnJhbWVidWZmZXIob2JqZWN0KTsKSW5kZXg6IFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwx
MCArMzksMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCopOwogICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJc0F0dGFjaGVkKHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgYm9vbCBpc0F0dGFjaGVkKTsKKworICAgICAgICBib29sIGlzRGVwdGhBdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXB0aEF0dGFjaGVkOyB9CisgICAgICAgIGJvb2wg
aXNTdGVuY2lsQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RlbmNpbEF0dGFjaGVkOyB9
CisgICAgICAgIGJvb2wgaXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEZXB0aFN0ZW5jaWxBdHRhY2hlZDsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJH
TEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgICAgICAKICAgICAgICAg
dmlydHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICAgIHBy
aXZhdGU6CisgICAgICAgIGJvb2wgbV9pc0RlcHRoQXR0YWNoZWQ7CisgICAgICAgIGJvb2wgbV9p
c1N0ZW5jaWxBdHRhY2hlZDsKKyAgICAgICAgYm9vbCBtX2lzRGVwdGhTdGVuY2lsQXR0YWNoZWQ7
CiAgICAgfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMiArNDQsMTQgQEAgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xSZW5kZQog
CiBXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KiBjdHgpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQorICAgICwgbV9pbnRlcm5hbGZvcm1h
dChHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQpCiB7CiAgICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+
Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkpOwogfQogCiBXZWJHTFJl
bmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgs
IFBsYXRmb3JtM0RPYmplY3Qgb2JqKQogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKKyAgICAsIG1f
aW50ZXJuYWxmb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE0KQogewogICAgIHNldE9iamVj
dChvYmosIGZhbHNlKTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJi
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVm
ZmVyLmgJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMSArNDMsMTcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5n
IHRoZXNlIG9iamVjdHMKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZm
ZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRl
cmJ1ZmZlcik7CiAKKyAgICAgICAgdm9pZCBzZXRJbnRlcm5hbGZvcm1hdCh1bnNpZ25lZCBsb25n
IGludGVybmFsZm9ybWF0KSB7IG1faW50ZXJuYWxmb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsgfQor
ICAgICAgICB1bnNpZ25lZCBsb25nIGdldEludGVybmFsZm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbGZvcm1hdDsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJHTFJlbmRl
cmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgV2ViR0xSZW5kZXJidWZm
ZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CiAgICAgICAgIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKKwor
ICAgICAgcHJpdmF0ZToKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX2ludGVybmFsZm9ybWF0Owog
ICAgIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1NjQ2NCkKKysr
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzkwLDYgKzc5MCw0NSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJh
bWVidWZmZXJSCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBpZiAoYnVmZmVyLT5vYmplY3QoKSkgeworICAgICAgICBib29sIGlzQ29uZmxpY3RlZCA9IGZh
bHNlOworICAgICAgICBib29sIGlzRGVwdGhPclN0ZW5jaWwgPSB0cnVlOworICAgICAgICBzd2l0
Y2ggKGF0dGFjaG1lbnQpIHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
QVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNEZXB0
aFN0ZW5jaWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRh
Y2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9DT01QT05FTlQxNikKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5D
SUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZy0+aXNE
ZXB0aFN0ZW5jaWxBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc0RlcHRoQXR0
YWNoZWQoKSkKKyAgICAgICAgICAgICAgICBpc0NvbmZsaWN0ZWQgPSB0cnVlOworICAgICAgICAg
ICAgaWYgKGJ1ZmZlci0+Z2V0SW50ZXJuYWxmb3JtYXQoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9JTkRFWDgpCisgICAgICAgICAgICAgICAgaXNDb25mbGljdGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmct
PmlzRGVwdGhBdHRhY2hlZCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc1N0ZW5jaWxBdHRh
Y2hlZCgpKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5hbGZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9TVEVOQ0lMKQorICAgICAgICAgICAgICAgIGlzQ29uZmxpY3RlZCA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlzRGVwdGhPclN0
ZW5jaWwgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNDb25mbGljdGVkKSB7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGlzRGVwdGhPclN0ZW5jaWwpCisgICAgICAgICAgICBtX2ZyYW1lYnVmZmVyQmlu
ZGluZy0+c2V0SXNBdHRhY2hlZChhdHRhY2htZW50LCB0cnVlKTsKKyAgICB9IGVsc2UgeyAvLyBE
ZXRhY2gKKyAgICAgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgbV9mcmFtZWJ1ZmZlckJp
bmRpbmctPnNldElzQXR0YWNoZWQoYXR0YWNobWVudCwgZmFsc2UpOworICAgICAgICB9CisgICAg
fQogICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2ht
ZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KQEAgLTg5Nyw3ICs5MzYsOCBAQCBXZWJHTEdldEluZm8gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGCiAgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIKICAgICAgICAgfHwgKGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0FUVEFDSE1FTlQwCiAgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UCi0gICAgICAgICAgICAmJiBhdHRhY2htZW50
ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAgICAgICAm
JiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQKKyAg
ICAgICAgICAgICYmIGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5D
SUxfQVRUQUNITUVOVCkKICAgICAgICAgfHwgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFCiAgICAgICAgICAgICAmJiBwbmFtZSAh
PSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRQog
ICAgICAgICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfVEVYVFVSRV9MRVZFTApAQCAtMTE3Niw4ICsxMjE2LDExIEBAIFdlYkdMR2V0SW5m
byBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFIKICAgICAgICAgbV9jb250ZXh0LT5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKLSAgICAgICAgbV9j
b250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUp
OwotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KHZhbHVlKSk7CisgICAgICAgIGlmICghbV9yZW5kZXJidWZmZXJCaW5kaW5nKSB7CisgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX3JlbmRlcmJ1ZmZlckJpbmRpbmct
PmdldEludGVybmFsZm9ybWF0KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKQEAgLTE1NTksOCArMTYwMiwyMSBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVNoYWRlCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCkKIHsKLSAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KSB7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQTQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCNV9BMToKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I1NjU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U1RFTkNJTF9JTkRFWDg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RF
TkNJTDoKKyAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBpZiAobV9yZW5kZXJidWZmZXJC
aW5kaW5nKQorICAgICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbGZv
cm1hdChpbnRlcm5hbGZvcm1hdCk7CisgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAg
fQogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2FtcGxlQ292ZXJhZ2UoZG91Ymxl
IHZhbHVlLCBib29sIGludmVydCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNiAr
NDIzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhf
Q09NUE9ORU5UMTYgICAgICAgICAgICAgID0gMHg4MUE1OwogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgU1RFTkNJTF9JTkRFWCAgICAgICAgICAgICAgICAgID0gMHgxOTAxOwogICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgU1RFTkNJTF9JTkRFWDggICAgICAgICAgICAgICAgID0gMHg4RDQ4
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAg
ICAgID0gMHg4NEY5OwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBSRU5ERVJCVUZGRVJf
V0lEVEggICAgICAgICAgICAgPSAweDhENDI7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBS
RU5ERVJCVUZGRVJfSEVJR0hUICAgICAgICAgICAgPSAweDhENDM7CkBAIC00NDIsNiArNDQzLDcg
QEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09MT1JfQVRUQUNI
TUVOVDAgICAgICAgICAgICAgID0gMHg4Q0UwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
REVQVEhfQVRUQUNITUVOVCAgICAgICAgICAgICAgID0gMHg4RDAwOwogICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgICAgICAgID0gMHg4RDIwOworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBpbnQgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgID0g
MHg4MjFBOwogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBOT05FICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAwOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA1NjQ3MykKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERFUFRIX0NPTVBPTkVOVDE2
ID0gMHg4MUE1LAogICAgICAgICAgICAgU1RFTkNJTF9JTkRFWCA9IDB4MTkwMSwKICAgICAgICAg
ICAgIFNURU5DSUxfSU5ERVg4ID0gMHg4RDQ4LAorICAgICAgICAgICAgREVQVEhfU1RFTkNJTCA9
IDB4ODRGOSwKICAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9XSURUSCA9IDB4OEQ0MiwKICAgICAg
ICAgICAgIFJFTkRFUkJVRkZFUl9IRUlHSFQgPSAweDhENDMsCiAgICAgICAgICAgICBSRU5ERVJC
VUZGRVJfSU5URVJOQUxfRk9STUFUID0gMHg4RDQ0LApAQCAtMzc4LDYgKzM3OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIENPTE9SX0FUVEFDSE1FTlQwID0gMHg4Q0UwLAog
ICAgICAgICAgICAgREVQVEhfQVRUQUNITUVOVCA9IDB4OEQwMCwKICAgICAgICAgICAgIFNURU5D
SUxfQVRUQUNITUVOVCA9IDB4OEQyMCwKKyAgICAgICAgICAgIERFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCA9IDB4ODIxQSwKICAgICAgICAgICAgIE5PTkUgPSAwLAogICAgICAgICAgICAgRlJBTUVC
VUZGRVJfQ09NUExFVEUgPSAweDhDRDUsCiAgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQgPSAweDhDRDYsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1NjQ3
MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFj
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDcgKzQ3NiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmbHVzaCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1
bnNpZ25lZCBsb25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0
LCBidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7CisgICAgR0x1aW50IHJl
bmRlcmJ1ZmZlciA9IChidWZmZXIgPyAoR0x1aW50KSBidWZmZXItPm9iamVjdCgpIDogMCk7Cisg
ICAgaWYgKGF0dGFjaG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSB7CisgICAgICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIERFUFRIX0FUVEFDSE1FTlQs
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgU1RFTkNJTF9BVFRBQ0hNRU5ULCByZW5kZXJidWZm
ZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIDo6Z2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZm
ZXJUZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVu
dCwgdW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgbG9uZyBs
ZXZlbCkKQEAgLTY5MSw2ICs2OTYsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFz
ZVNoYWRlckNvbQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7CiAgICAgZW5zdXJlQ29udGV4
dChtX2NvbnRleHRPYmopOworICAgIGlmIChpbnRlcm5hbGZvcm1hdCA9PSBERVBUSF9TVEVOQ0lM
KQorICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOworICAg
IGVsc2UgaWYgKGludGVybmFsZm9ybWF0ID09IERFUFRIX0NPTVBPTkVOVDE2KQorICAgICAgICBp
bnRlcm5hbGZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKICAgICA6OmdsUmVuZGVyYnVmZmVy
U3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIApA
QCAtOTg2LDYgKzk5NSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNp
Z24KIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2Nv
bnRleHRPYmopOworICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCkKKyAgICAgICAgYXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxf
QVRUQUNITUVOVCwgZWl0aGVyIHdvcmtzLgogICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTY0NzYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMtMjQgIFpoZW55
YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYW5kIHRlc3QgbmV3IGZyYW1lYnVmZmVyIG9iamVj
dCBhdHRhY2htZW50IGJlaGF2aW9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzU2MTEKKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9m
cmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCisKKyAgICAgICAgKiBzcmMvV2ViR3Jh
cGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHA6IE1hcCB0byBjb3JyZWN0IERFUFRIX1NURU5D
SUwgZm9ybWF0LgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJ
bXBsOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2KToKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbDo6
cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisKIDIwMTAtMDMtMjQgIERtaXRyeSBUaXRvdiAgPGRpbWlj
aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCByNTY0NTMu
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250
ZXh0M0REZWZhdWx0SW1wbC5jcHAJKHJldmlzaW9uIDU2NDY0KQorKysgV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzY5LDcgKzc2OSwxNiBAQCBERUxFR0FURV9UT19HTChmaW5pc2gsIEZpbmlzaCkKIAogREVM
RUdBVEVfVE9fR0woZmx1c2gsIEZsdXNoKQogCi1ERUxFR0FURV9UT19HTF80KGZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyLCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2ViR0xJZCkKK3ZvaWQgV2ViR3JhcGhpY3ND
b250ZXh0M0REZWZhdWx0SW1wbDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBy
ZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMSWQgYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIGlmIChhdHRhY2htZW50ID09IEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCkgeworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgR0xfREVQ
VEhfQVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOworICAgICAgICBnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBy
ZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CisgICAgfSBlbHNlCisgICAgICAgIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJn
ZXQsIGJ1ZmZlcik7Cit9CiAKIERFTEVHQVRFX1RPX0dMXzUoZnJhbWVidWZmZXJUZXh0dXJlMkQs
IEZyYW1lYnVmZmVyVGV4dHVyZTJERVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCBXZWJHTElkLCBsb25nKQogCkBAIC04NjksNyArODc4LDE0IEBAIHVuc2ln
bmVkIGxvbmcgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWwKIAogREVMRUdBVEVfVE9fR0xfMihn
ZXRGbG9hdHYsIEdldEZsb2F0diwgdW5zaWduZWQgbG9uZywgZmxvYXQqKQogCi1ERUxFR0FURV9U
T19HTF80KGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2LCBHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgaW50KikKK3ZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1w
bDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBpZiAoYXR0YWNobWVudCA9PSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAg
IGF0dGFjaG1lbnQgPSBHTF9ERVBUSF9BVFRBQ0hNRU5UOyAvLyBPciBHTF9TVEVOQ0lMX0FUVEFD
SE1FTlQsIGVpdGhlciB3b3Jrcy4KKyAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKK30KIAogREVMRUdB
VEVfVE9fR0xfMihnZXRJbnRlZ2VydiwgR2V0SW50ZWdlcnYsIHVuc2lnbmVkIGxvbmcsIGludCop
CiAKQEAgLTk5MCw3ICsxMDA2LDE4IEBAIHZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0
SW1wbDo6cmUKIHsKIH0KIAotREVMRUdBVEVfVE9fR0xfNChyZW5kZXJidWZmZXJTdG9yYWdlLCBS
ZW5kZXJidWZmZXJTdG9yYWdlRVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQordm9pZCBXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1
bHRJbXBsOjpyZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGhlaWdodCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBpZiAoaW50
ZXJuYWxmb3JtYXQgPT0gR0xfREVQVEhfU1RFTkNJTCkKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQg
PSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKKyAgICBlbHNlIGlmIChpbnRlcm5hbGZvcm1hdCA9
PSBHTF9ERVBUSF9DT01QT05FTlQxNikKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBHTF9ERVBU
SF9DT01QT05FTlQ7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUKHRhcmdldCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworfQogCiBERUxFR0FURV9UT19HTF8yKHNhbXBsZUNv
dmVyYWdlLCBTYW1wbGVDb3ZlcmFnZSwgZG91YmxlLCBib29sKQogCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA1NjQ3NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDEwLTAzLTI0ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGFu
ZCB0ZXN0IG5ldyBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlvci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NjExCisKKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC1leHBl
Y3RlZC50eHQ6IEFkZGVkLCB0ZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2
aW9yLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRh
Y2htZW50Lmh0bWw6IEFkZGVkLCBmcmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlv
ci4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdl
dC1jYWxscy5qczogREVQVEhfQ09NUE9ORU5UIGlzIG5vIGxvbmdlciBhIHZhbGlkIGlucHV0LCB1
c2UgREVQVEhfQ09NUE9ORU5UMTYgaW5zdGVhZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtc25v
d2xlb3BhcmQvU2tpcHBlZDogVGhlIGJvdCBkb2VzIG5vdCBzdXBwb3J0IEVYVF9wYWNrZWRfZGVw
dGhfc3RlbmNpbCwgc2tpcCB0aGUgZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbCB0
ZXN0LgorCiAyMDEwLTAzLTI0ICBFcmljIFVocmhhbmUgPGVyaWN1QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBET01Db3JlRXhjZXB0aW9uIG5lZWRzIE5vU3RhdGljVGFibGVzIG1vZGlmaWVyCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0
YWNobWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2Jq
ZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBA
CitUZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBhdHRhY2htZW50IGJlaGF2aW9ycworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK0NyZWF0ZSByZW5kZXJidWZmZXJzCitQQVNTIGdsID0gY3Jl
YXRlM0RDb250ZXh0KCkgaXMgbm9uLW51bGwuCitQQVNTIGRlcHRoQnVmZmVyID0gZ2wuY3JlYXRl
UmVuZGVyYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9f
RVJST1IKK1BBU1Mgc3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5v
bi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGRlcHRoU3Rl
bmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfQVRU
QUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgor
UEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitBdHRhY2ggZGVwdGggdXNpbmcgU1RF
TkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9u
LW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFj
aCBkZXB0aCB1c2luZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5J
TlZBTElEX09QRVJBVElPTgorQXR0YWNoIHN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5U
CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGds
LmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FU
VEFDSE1FTlQKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4K
K1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIHN0ZW5j
aWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZy
YW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRB
Q0hNRU5UCitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCitQ
QVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK0F0dGFjaCBkZXB0aFN0ZW5jaWwgdXNp
bmcgREVQVEhfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitB
dHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVAorUEFTUyBmYm8gPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlz
IGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggZGVwdGgsIHRoZW4gc3RlbmNpbCwgY2F1c2lu
ZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxs
LgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdldEVycm9yKCkg
aXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVz
aW5nIGNvbmZsaWN0CitQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51
bGwuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5JTlZBTElEX09QRVJBVElPTgorQXR0YWNoIGRlcHRoLCB0aGVuIGRlcHRoU3RlbmNp
bCwgY2F1c2luZyBjb25mbGljdAorUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdl
dEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9PUEVSQVRJT04KK0F0dGFjaCBkZXB0aFN0ZW5jaWwsIHRo
ZW4gZGVwdGgsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2ggc3RlbmNpbCwg
dGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19F
UlJPUgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9OCitBdHRhY2gg
ZGVwdGhTdGVuY2lsLCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKK1BBU1MgZmJvID0g
Z2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBp
cyBnbC5OT19FUlJPUgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfT1BFUkFUSU9O
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFj
aG1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9m
cmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCit2YXIgZ2w7Cit2YXIgZmJvOwordmFyIGRlcHRo
QnVmZmVyOwordmFyIHN0ZW5jaWxCdWZmZXI7Cit2YXIgZGVwdGhTdGVuY2lsQnVmZmVyOwordmFy
IHdpZHRoID0gMjsKK3ZhciBoZWlnaHQgPSAyOworCitmdW5jdGlvbiB0ZXN0QXR0YWNobWVudChh
dHRhY2htZW50LCBidWZmZXIsIGlzQ29uZmxpY3RlZCkKK3sKKyAgICBzaG91bGRCZU5vbk51bGwo
ImZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyKTsKKyAgICBz
aG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsIGlzQ29uZmxpY3RlZCA/ICJnbC5JTlZBTElEX09QRVJB
VElPTiIgOiAiZ2wuTk9fRVJST1IiKTsKK30KKworZnVuY3Rpb24gdGVzdEF0dGFjaG1lbnRzKGF0
dGFjaG1lbnQwLCBidWZmZXIwLCBhdHRhY2htZW50MSwgYnVmZmVyMSwgaXNDb25mbGljdGVkKQor
eworICAgIHNob3VsZEJlTm9uTnVsbCgiZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSIpOwor
ICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbC5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudDAsIGdsLlJFTkRF
UkJVRkZFUiwgYnVmZmVyMCk7CisgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9f
RVJST1IiKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
YXR0YWNobWVudDEsIGdsLlJFTkRFUkJVRkZFUiwgYnVmZmVyMSk7CisgICAgc2hvdWxkQmUoImds
LmdldEVycm9yKCkiLCBpc0NvbmZsaWN0ZWQgPyAiZ2wuSU5WQUxJRF9PUEVSQVRJT04iIDogImds
Lk5PX0VSUk9SIik7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZyYW1lYnVmZmVyIG9iamVjdCBh
dHRhY2htZW50IGJlaGF2aW9ycyIpOworCitkZWJ1ZygiQ3JlYXRlIHJlbmRlcmJ1ZmZlcnMiKTsK
K3Nob3VsZEJlTm9uTnVsbCgiZ2wgPSBjcmVhdGUzRENvbnRleHQoKSIpOworc2hvdWxkQmVOb25O
dWxsKCJkZXB0aEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7CitnbC5iaW5kUmVu
ZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVp
Z2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CitzaG91bGRC
ZU5vbk51bGwoInN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOworZ2wu
YmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHN0ZW5jaWxCdWZmZXIpOworZ2wucmVu
ZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlNURU5DSUxfSU5ERVg4LCB3aWR0
aCwgaGVpZ2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7Citz
aG91bGRCZU5vbk51bGwoImRlcHRoU3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpIik7CitnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2ls
QnVmZmVyKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBU
SF9TVEVOQ0lMLCB3aWR0aCwgaGVpZ2h0KTsKK3Nob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImds
Lk5PX0VSUk9SIik7CisKK2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfQVRUQUNITUVO
VCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGZh
bHNlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0
ZXN0QXR0YWNobWVudChnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsK
K2RlYnVnKCJBdHRhY2ggZGVwdGggdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0
ZXN0QXR0YWNobWVudChnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0
cnVlKTsKK2RlYnVnKCJBdHRhY2ggc3RlbmNpbCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsK
K3Rlc3RBdHRhY2htZW50KGdsLlNURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgZmFs
c2UpOworZGVidWcoIkF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKK3Rl
c3RBdHRhY2htZW50KGdsLkRFUFRIX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUpOwor
ZGVidWcoIkF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCIpOwor
dGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVy
LCB0cnVlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxf
QVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5U
LCBkZXB0aFN0ZW5jaWxCdWZmZXIsIGZhbHNlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2ls
IHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLkRFUFRIX0FUVEFD
SE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoU3Rl
bmNpbCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGdsLlNURU5D
SUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVlKTsKKworZGVidWcoIkF0dGFj
aCBkZXB0aCwgdGhlbiBzdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVu
dHMoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGdsLlNURU5DSUxfQVRUQUNITUVO
VCwgc3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVw
dGgsIGNhdXNpbmcgY29uZmxpY3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5TVEVOQ0lMX0FUVEFD
SE1FTlQsIHN0ZW5jaWxCdWZmZXIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0
cnVlKTsKK2RlYnVnKCJBdHRhY2ggZGVwdGgsIHRoZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNv
bmZsaWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZm
ZXIsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVl
KTsKK2RlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZs
aWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0
aFN0ZW5jaWxCdWZmZXIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCB0cnVlKTsK
K2RlYnVnKCJBdHRhY2ggc3RlbmNpbCwgdGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxp
Y3QiKTsKK3Rlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwg
Z2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIHRydWUpOwor
ZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5jaWwsIHRoZW4gc3RlbmNpbCwgY2F1c2luZyBjb25mbGlj
dCIpOwordGVzdEF0dGFjaG1lbnRzKGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhT
dGVuY2lsQnVmZmVyLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIHRydWUp
OworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0
cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCShyZXZpc2lv
biA1NjQ3MykKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9n
bC1vYmplY3QtZ2V0LWNhbGxzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHZh
ciByZW5kZXJidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIKIHNob3VsZEJlKCdnbC5nZXRF
cnJvcigpJywgJzAnKTsKIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5k
ZXJidWZmZXIpOwogc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwotZ2wucmVuZGVyYnVm
ZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMiwgMik7Citn
bC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5U
MTYsIDIsIDIpOwogc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwogZ2wuZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJF
TkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKIC8vIEZJWE1FOiBvbiBzb21lIG1hY2hpbmVzIChp
biBwYXJ0aWN1bGFyIHRoZSBXZWJLaXQgY29tbWl0IGJvdHMpIHRoZQpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQJKHJldmlzaW9uIDU2ODg4KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQJKHdvcmtpbmcg
Y29weSkKQEAgLTExMywzICsxMTMsNyBAQCBmYXN0L2Zvcm1zL3NlYXJjaC1ldmVudC1kZWxheS5o
dG1sCiAKICMgQ29sb3IgYml0bWFwIGZvbnRzIG5vdCBzdXBwb3J0ZWQgb24gU25vdyBMZW9wYXJk
CiBwbGF0Zm9ybS9tYWMvZm9udHMvY29sb3ItYml0bWFwLmh0bWwKKworIyBTbm93IExlb3BhcmQg
Ym90IGRvZXMgbm90IHN1cHBvcnQgRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsLCB3aGljaCBpcyBy
ZXF1aXJlZCBieSBXZWJHTC4KKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM2OTI1CitmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVu
dC5odG1sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>