<?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>90217</bug_id>
          
          <creation_ts>2012-06-28 16:03:05 -0700</creation_ts>
          <short_desc>[chromium] Avoid calling getUniformLocation??() in the compositor startup</short_desc>
          <delta_ts>2012-07-03 19:34:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter>alexst</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>alexst</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>659910</commentid>
    <comment_count>0</comment_count>
    <who name="">alexst</who>
    <bug_when>2012-06-28 16:03:05 -0700</bug_when>
    <thetext>Use the newly introduced GL_CHROMIUM_bind_uniform_location extension instead.

I plan to fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660554</commentid>
    <comment_count>1</comment_count>
      <attachid>150194</attachid>
    <who name="">alexst</who>
    <bug_when>2012-06-29 09:25:50 -0700</bug_when>
    <thetext>Created attachment 150194
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660578</commentid>
    <comment_count>2</comment_count>
      <attachid>150200</attachid>
    <who name="">alexst</who>
    <bug_when>2012-06-29 09:53:35 -0700</bug_when>
    <thetext>Created attachment 150200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660648</commentid>
    <comment_count>3</comment_count>
      <attachid>150200</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-06-29 11:17:42 -0700</bug_when>
    <thetext>Comment on attachment 150200
Patch

The approach looks great.  You need to pull and rebase this patch against jamesr&apos;s change of GraphicsContext3D -&gt; WebGraphicsContext3D.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660665</commentid>
    <comment_count>4</comment_count>
    <who name="">alexst</who>
    <bug_when>2012-06-29 11:32:44 -0700</bug_when>
    <thetext>A rename would definitely cause a massive merge failure. Thank you, on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660707</commentid>
    <comment_count>5</comment_count>
      <attachid>150200</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-29 12:26:07 -0700</bug_when>
    <thetext>Comment on attachment 150200
Patch

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

If you update this patch to ToT it&apos;ll apply cleanly and trigger the auto-cc behavior, etc.  The EWS bubbles are purple since they couldn&apos;t apply this patch.

&gt; Source/WebCore/platform/graphics/chromium/Extensions3DChromium.h:162
&gt; +    void bindUniformLocationCHROMIUM(Platform3DObject program, GC3Dint location, const GC3Dchar* uniform);

I think your WebKit checkout is out of data - you don&apos;t have to modify Extensions3DChromium at all for compositor changes as of http://trac.webkit.org/changeset/121204.  Just adding the entry point to WebGraphicsContext3D is sufficient

&gt; Source/WebCore/platform/graphics/chromium/ProgramBinding.cpp:64
&gt;  void ProgramBindingBase::init(GraphicsContext3D* context, const String&amp; vertexShader, const String&amp; fragmentShader)

ProgramBinding is based on WebGraphicsContext3D, not GraphicsContext3D (cuts down on one level of indirection)

&gt; Source/WebCore/platform/graphics/chromium/ProgramBinding.cpp:156
&gt; +bool ProgramBindingBase::hasBindUniformsExtension(GraphicsContext3D* context) const

In the compositor we query all the extensions we may need up front (inside LayerRendererChromium::initialize) and then propagate them through as needed - this avoids any unnecessary get() calls and makes sure that all of our extensions use is centralized in one place.  All of the ProgramBinding uses and initialization calls are inside of LayerRendererChromium, so it should be pretty easy to plumb a bit for this through.

The extension name is bind_uniform (singular), so any functions/variables should stick to that and not plural &quot;uniforms&quot;

&gt; Source/WebCore/platform/graphics/chromium/ShaderChromium.cpp:228
&gt; +        &quot;point[0]&quot;,

the example text in CHROMIUM_bind_uniform_location.txt queries the location of an array with just &quot;point&quot;, not &quot;point[0]&quot;. are both syntaxes allowed in getProgramUniform..() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660720</commentid>
    <comment_count>6</comment_count>
    <who name="">alexst</who>
    <bug_when>2012-06-29 12:51:55 -0700</bug_when>
    <thetext>My webkit is out of date, I was treading carefully to maintain a working build. I&apos;ll rebase.

&gt;the example text in CHROMIUM_bind_uniform_location.txt queries the location of an array with just &gt;&quot;point&quot;, not &quot;point[0]&quot;. are both syntaxes allowed in getProgramUniform..() ?

Both point and point[0] are allowed. Sub-indices are there in case you want to update only one of the array elements since &quot;pointer arithmetic&quot; doesn&apos;t work with uniform locations. I used &quot;point[0]&quot; for debugging but I think &quot;point&quot; is probably cleaner, I&apos;ll update.

Thanks for the rest of the comments, will address.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660900</commentid>
    <comment_count>7</comment_count>
      <attachid>150285</attachid>
    <who name="">alexst</who>
    <bug_when>2012-06-29 18:00:00 -0700</bug_when>
    <thetext>Created attachment 150285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660901</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-29 18:02:25 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660902</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-29 18:02:50 -0700</bug_when>
    <thetext>Attachment 150285 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebCore/ChangeLog:11:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 11 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>660914</commentid>
    <comment_count>10</comment_count>
      <attachid>150285</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-29 18:27:55 -0700</bug_when>
    <thetext>Comment on attachment 150285
Patch

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

&gt; Source/Platform/ChangeLog:7
&gt; +        This change replaces getUniformLocation calls in the chrome compositor with bindUniformLocation
&gt; +        to speed up startup time.

The changelog entries should be specific to changes the particular ChangeLog covers - so this one is just describing the changes to Platform/chromium/public/WebGraphicsContext3D.h. You should just say here that you are adding an entry point for bindUniformLocationCHROMIUM

&gt; Source/Platform/ChangeLog:9
&gt; +        Reviewed by NOBODY (OOPS!).

in all ChangeLogs this line should go above your description of the patch.

&gt; Source/WebCore/ChangeLog:9
&gt; +        Reviewed by NOBODY (OOPS!).

move this up

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        No new tests. (OOPS!)
&gt; 
&gt; You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]

You will need to address this in some way - either by adding tests where appropriate or documenting the test coverage that we have.  In this case, the actual implementation guts of bindUniformLocation are in a different codebase and (hopefully) well-tested there, so we don&apos;t really need to duplicate coverage for that.  Since the only logic in the compositor is pretty basic glue, and we have integration pixel tests to make sure we aren&apos;t completely flubbing the programs so we are probably OK with just a description of which tests cover this behavior (i.e. pretty much all of them that use any shaders)

&gt; Source/Platform/chromium/public/WebGraphicsContext3D.h:416
&gt; +    virtual void bindUniformLocationCHROMIUM(WebGLId program, WGC3Dint location, const WGC3Dchar* uniform) { }

This isn&apos;t part of GL_EXT_occlusion_query, so it doesn&apos;t belong in that section.  Give this extension a new section (i.e. separate with newlines) with a comment naming the extension in case we ever get more entry points with this extension. We probably won&apos;t, but it&apos;s better to be consistent with the other extensions in this file.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:230
&gt; +    m_capabilities.usingBindUniform = extensions.contains(&quot;GL_CHROMIUM_bind_uniform_location&quot;);

For this, I don&apos;t think we need to put a bit on m_capabilities since nobody other than LayerRendererChromium needs to know if this extension exists on the compositor&apos;s context or not. Instead, you can just store a member variable on the LRC.  (This appears be true for some other things currently on m_capabilities as well, things tend to just get cargo-culted, but for some things like maxTextureSize other systems do have a legit need to know the capability)

&gt; Source/WebCore/platform/graphics/chromium/ProgramBinding.cpp:56
&gt;      // If you hit these asserts, you initialized but forgot to call cleanup().
&gt;      ASSERT(!m_program);
&gt; +    ASSERT(!m_vertexShader);
&gt; +    ASSERT(!m_fragmentShader);

Did you patch cleanup to zero these guys out?  If not, please update either the comment or the code to match the other.

&gt; Source/WebCore/platform/graphics/chromium/ProgramBinding.cpp:106
&gt; +    m_vertexShader = 0;
&gt; +    m_fragmentShader = 0;

Hm, this is a bit confusing - do these two member variables just exist to store some transient state?  If so, why are they member variables and not just maintained on the stack?

&gt; Source/WebCore/platform/graphics/chromium/ProgramBinding.h:86
&gt; +            ProgramBindingBase::link(context);

do you need the ProgramBindingBase:: qualifier here, or can you just call link() ?

&gt; Source/WebCore/platform/graphics/chromium/TextureCopier.h:65
&gt; +    explicit AcceleratedTextureCopier(WebKit::WebGraphicsContext3D*, bool usingBindUniforms);

no explicit on 2-argument constructors. the &quot;explicit&quot; keyword is to prevent implicit conversion of one type to another in the case where we provide a one-argument constructor.  I.e. the fact that we provide the &quot;explicit AcceleratedTextureCopier(WebKit::WebGraphicsContext3D*);&quot; constructor does not mean that we should be able to pass a WebKit::WebGraphicsContext3D* type to a function expecting an AcceleratedTextureCopier and have a copier created for us behind the scenes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661731</commentid>
    <comment_count>11</comment_count>
    <who name="">alexst</who>
    <bug_when>2012-07-02 14:41:48 -0700</bug_when>
    <thetext>&gt; +    m_vertexShader = 0;
&gt; +    m_fragmentShader = 0;

&gt;Hm, this is a bit confusing - do these two member variables just exist to store some transient state?  If so, why are they member variables and not just maintained on the stack?

Well, the previous implementation assumed that nothing outside of the base class needs to happen between compile and link. That changed with the introduction of bindUniforms and could further change if  another type of shader is introduced. For example, one that needs to call bindAttribLocation on some new vertex data. Holding on to shader id&apos;s allows for such behavior to happen without re-implementing a bunch of compile logic in the subclass.

That said, I refactored the cleanup code to be more robust/explicit.

New patch on the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661780</commentid>
    <comment_count>12</comment_count>
      <attachid>150488</attachid>
    <who name="">alexst</who>
    <bug_when>2012-07-02 15:47:39 -0700</bug_when>
    <thetext>Created attachment 150488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661801</commentid>
    <comment_count>13</comment_count>
      <attachid>150488</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-02 16:18:46 -0700</bug_when>
    <thetext>Comment on attachment 150488
Patch

Attachment 150488 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13132246</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661939</commentid>
    <comment_count>14</comment_count>
      <attachid>150528</attachid>
    <who name="">alexst</who>
    <bug_when>2012-07-02 21:21:27 -0700</bug_when>
    <thetext>Created attachment 150528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662368</commentid>
    <comment_count>15</comment_count>
      <attachid>150528</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-03 10:56:51 -0700</bug_when>
    <thetext>Comment on attachment 150528
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/ShaderChromium.cpp:47
&gt; +        if (uniformIndex &gt;= maxLocations)
&gt; +            return;

Can you just ASSERT here instead?  This should never happen.  Also, if this happens and you return after only getting some of the uniforms, the shader isn&apos;t going to work at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662397</commentid>
    <comment_count>16</comment_count>
      <attachid>150650</attachid>
    <who name="">alexst</who>
    <bug_when>2012-07-03 11:30:01 -0700</bug_when>
    <thetext>Created attachment 150650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662398</commentid>
    <comment_count>17</comment_count>
      <attachid>150650</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-03 11:33:32 -0700</bug_when>
    <thetext>Comment on attachment 150650
Patch

R=me.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662450</commentid>
    <comment_count>18</comment_count>
      <attachid>150650</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-03 12:55:56 -0700</bug_when>
    <thetext>Comment on attachment 150650
Patch

Rejecting attachment 150650 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
iled to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;, &apos;--force-update&apos;]&quot; exit_code: 2

Updating OpenSource
fatal: Unable to look up git.webkit.org (port 9418) (Temporary failure in name resolution)
Died at Tools/Scripts/update-webkit line 162.

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;, &apos;--force-update&apos;]&quot; exit_code: 2
Updating OpenSource
fatal: Unable to look up git.webkit.org (port 9418) (Temporary failure in name resolution)
Died at Tools/Scripts/update-webkit line 162.

Full output: http://queues.webkit.org/results/13137479</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662625</commentid>
    <comment_count>19</comment_count>
      <attachid>150650</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-03 18:26:46 -0700</bug_when>
    <thetext>Comment on attachment 150650
Patch

Let&apos;s give the CQ another try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662646</commentid>
    <comment_count>20</comment_count>
      <attachid>150650</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-03 19:34:33 -0700</bug_when>
    <thetext>Comment on attachment 150650
Patch

Clearing flags on attachment: 150650

Committed r121823: &lt;http://trac.webkit.org/changeset/121823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662647</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-03 19:34:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150194</attachid>
            <date>2012-06-29 09:25:50 -0700</date>
            <delta_ts>2012-06-29 09:53:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90217-20120629092550.patch</filename>
            <type>text/plain</type>
            <size>39204</size>
            <attacher>alexst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4ZWNmMTBiM2UwM2Y3
NzZjZjM4OTRmNmQxOWMyNDI0Zjk2NzQ5Y2RmLi43YWVhMmIwNTc2NTZiMWQ2ZGJlMGEyN2JiOGIw
ZjMwMTk4NDUxNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0yOSAg
QWxleCBTYWtoYXJ0Y2hvdWsgIDxhbGV4c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gQXZvaWQgY2FsbGluZyBnZXRVbmlmb3JtTG9jYXRpb24/PygpIGluIHRoZSBjb21wb3Np
dG9yIHN0YXJ0dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkwMjE3CisKKwlUaGlzIGNoYW5nZSByZXBsYWNlcyBnZXRVbmlmb3JtTG9jYXRpb24gY2Fs
bHMgaW4gdGhlIGNocm9tZSBjb21wb3NpdG9yIHdpdGggYmluZFVuaWZvcm1Mb2NhdGlvbgorCXRv
IHNwZWVkIHVwIHN0YXJ0dXAgdGltZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5o
OgorICAgICAgICAoV2ViR3JhcGhpY3NVbmlmb3JtRGVmaW5pdGlvbkNIUk9NSVVNKToKKyAgICAg
ICAgKFdlYkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0Q6OmJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTSk6CisKIDIwMTItMDYtMjIgIEtl
bm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMjEwNjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzNTg3ZTBlMWViNTNhMmE0NTA4YzE4
ZjI4M2M5ZjNmNDUxMzQyNS4uYmY2NDQ4Yzg3ODllMDYzNWI1MjZlNjEzZDQ3ZTdlZjc3ZGFlZTJi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEyLTA2LTI5ICBBbGV4IFNha2hhcnRj
aG91ayAgPGFsZXhzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBdm9pZCBj
YWxsaW5nIGdldFVuaWZvcm1Mb2NhdGlvbj8/KCkgaW4gdGhlIGNvbXBvc2l0b3Igc3RhcnR1cAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAyMTcKKwor
CVRoaXMgY2hhbmdlIHJlcGxhY2VzIGdldFVuaWZvcm1Mb2NhdGlvbiBjYWxscyBpbiB0aGUgY2hy
b21lIGNvbXBvc2l0b3Igd2l0aCBiaW5kVW5pZm9ybUxvY2F0aW9uCisgICAgICAgIHRvIHNwZWVk
IHVwIHN0YXJ0dXAgdGltZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uczNEQ2hyb21pdW06OmJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9F
eHRlbnNpb25zM0RDaHJvbWl1bS5oOgorICAgICAgICAoRXh0ZW5zaW9uczNEQ2hyb21pdW0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5nQmFzZTo6UHJvZ3JhbUJpbmRpbmdCYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5nQmFzZTo6flByb2dyYW1CaW5kaW5n
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGluZ0Jhc2U6OmluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvZ3JhbUJpbmRpbmdCYXNlOjpsaW5rKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5nQmFzZTo6aGFzQmluZFVu
aWZvcm1zRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
cm9ncmFtQmluZGluZy5oOgorICAgICAgICAoUHJvZ3JhbUJpbmRpbmdCYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlByb2dyYW1CaW5kaW5nOjppbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWZXJ0ZXhTaGFkZXJQb3NUZXg6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hh
ZGVyUG9zVGV4WVVWU3RyZXRjaDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFk
ZXJQb3M6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNm
b3JtOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclF1YWQ6OmluaXQpOgor
ICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVGlsZTo6aW5pdCk6CisgICAgICAgIChXZWJD
b3JlOjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6aW5pdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudFRleEFscGhhQmluZGluZzo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFn
bWVudFRleE9wYXF1ZUJpbmRpbmc6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRT
aGFkZXJPRVNJbWFnZUV4dGVybmFsOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50
U2hhZGVyUkdCQVRleEFscGhhQUE6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRU
ZXhDbGFtcEFscGhhQUFCaW5kaW5nOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50
U2hhZGVyUkdCQVRleEFscGhhTWFzazo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVu
dFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFn
bWVudFNoYWRlcllVVlZpZGVvOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hh
ZGVyQ29sb3I6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDaGVja2Vy
Ym9hcmQ6OmluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRl
ckNocm9taXVtLmg6CisgICAgICAgIChWZXJ0ZXhTaGFkZXJQb3NUZXgpOgorICAgICAgICAoVmVy
dGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCk6CisgICAgICAgIChWZXJ0ZXhTaGFkZXJQb3MpOgor
ICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4SWRlbnRpdHk6OmluaXQpOgorICAg
ICAgICAoVmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtKToKKyAgICAgICAgKFZlcnRleFNoYWRl
clF1YWQpOgorICAgICAgICAoVmVydGV4U2hhZGVyVGlsZSk6CisgICAgICAgIChWZXJ0ZXhTaGFk
ZXJWaWRlb1RyYW5zZm9ybSk6CisgICAgICAgIChGcmFnbWVudFRleEFscGhhQmluZGluZyk6Cisg
ICAgICAgIChGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmcpOgorICAgICAgICAoRnJhZ21lbnRTaGFk
ZXJPRVNJbWFnZUV4dGVybmFsKToKKyAgICAgICAgKEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhh
QUEpOgorICAgICAgICAoRnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nKToKKyAgICAgICAg
KEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzayk6CisgICAgICAgIChGcmFnbWVudFNoYWRl
clJHQkFUZXhBbHBoYU1hc2tBQSk6CisgICAgICAgIChGcmFnbWVudFNoYWRlcllVVlZpZGVvKToK
KyAgICAgICAgKEZyYWdtZW50U2hhZGVyQ29sb3IpOgorICAgICAgICAoRnJhZ21lbnRTaGFkZXJD
aGVja2VyYm9hcmQpOgorCiAyMDEyLTA2LTI0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIxMTA2
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGlj
c0NvbnRleHQzRC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGlj
c0NvbnRleHQzRC5oCmluZGV4IGRjMDM1YWVkMWJiZjM4Y2U1YjdhZThmZmQyOTA4MDUxMGNjMDE1
MTEuLmUxYzFiZDIyOGYzZTg0YTNiYmQzMmY0OGIzYjQxMmMxZDBkM2Y0YWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAor
KysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNE
LmgKQEAgLTEzNyw2ICsxMzcsMTIgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5XZWJHcmFw
aGljc01lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tDSFJPTUlVTSgpIHsgfQogICAgIH07
CiAKKyAgICBzdHJ1Y3QgV2ViR3JhcGhpY3NVbmlmb3JtRGVmaW5pdGlvbkNIUk9NSVVNIHsKKyAg
ICAgICAgV0dDM0RlbnVtIHR5cGU7CisgICAgICAgIFdHQzNEc2l6ZWkgc2l6ZTsKKyAgICAgICAg
Y29uc3QgV0dDM0RjaGFyKiBuYW1lOworICAgIH07CisKICAgICAvLyBUaGlzIGRlc3RydWN0b3Ig
bmVlZHMgdG8gYmUgcHVibGljIHNvIHRoYXQgdXNpbmcgY2xhc3NlcyBjYW4gZGVzdHJveSBpbnN0
YW5jZXMgaWYgaW5pdGlhbGl6YXRpb24gZmFpbHMuCiAgICAgdmlydHVhbCB+V2ViR3JhcGhpY3ND
b250ZXh0M0QoKSB7IH0KIApAQCAtNDEwLDYgKzQxNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZW5kUXVlcnlFWFQoV0dDM0RlbnVtIHRhcmdldCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGdldFF1ZXJ5aXZFWFQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RlbnVtIHBuYW1lLCBXR0MzRGlu
dCogcGFyYW1zKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZFWFQoV2Vi
R0xJZCBxdWVyeSwgV0dDM0RlbnVtIHBuYW1lLCBXR0MzRHVpbnQqIHBhcmFtcykgeyB9CisgICAg
dmlydHVhbCB2b2lkIGJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShXZWJHTElkIHByb2dyYW0s
IFdHQzNEaW50IGxvY2F0aW9uLCBjb25zdCBXR0MzRGNoYXIqIHVuaWZvcm0pIHsgfQogCiAgICAg
Ly8gR0xfQ0hST01JVU1fY29weV90ZXh0dXJlCiAgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJl
Q0hST01JVU0oV0dDM0RlbnVtIHRhcmdldCwgV0dDM0R1aW50IHNvdXJjZUlkLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9FeHRlbnNpb25zM0RD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L0V4
dGVuc2lvbnMzRENocm9taXVtLmNwcAppbmRleCA1Y2RkNGJhNmJmMDhlYzhkM2EyYzg5NGM0NDI3
NTExNWY4YjM5M2VmLi42MzdiYmEyMDllMTFjN2M2YmVmYjY3NTQxOGZjZmNmOWE2MWRlNmMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L0V4dGVu
c2lvbnMzRENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L0V4dGVuc2lvbnMzRENocm9taXVtLmNwcApAQCAtMjA2LDQgKzIwNiw5IEBAIHZv
aWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OmNvcHlUZXh0dXJlQ0hST01JVU0oR0MzRGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybTNET2JqZWN0CiAgICAgbV9wcml2YXRlLT53ZWJDb250ZXh0KCktPmNvcHlU
ZXh0dXJlQ0hST01JVU0odGFyZ2V0LCBzb3VyY2VJZCwgZGVzdElkLCBsZXZlbCwgaW50ZXJuYWxG
b3JtYXQpOwogfQogCit2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjpiaW5kVW5pZm9ybUxvY2F0
aW9uQ0hST01JVU0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBj
b25zdCBHQzNEY2hhciogdW5pZm9ybSkKK3sKKyAgICBtX3ByaXZhdGUtPndlYkNvbnRleHQoKS0+
YmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNKHByb2dyYW0sIGxvY2F0aW9uLCB1bmlmb3JtKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVt
LmgKaW5kZXggODI3ODdmNDAwNTNiODBmZmU3NWZiMzFjN2RiOTk4YWJiYzkzNGI0ZC4uNzdjMmIz
MTk4ODliZDg3MmE1N2Y3ZTY4MTIzNjhmMWNhMmYzYjY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25z
M0RDaHJvbWl1bS5oCkBAIC0xNTksNiArMTU5LDcgQEAgcHVibGljOgogICAgIC8vIEdMX0NIUk9N
SVVNX2NvcHlfdGV4dHVyZQogICAgIHZvaWQgY29weVRleHR1cmVDSFJPTUlVTShHQzNEZW51bSwg
UGxhdGZvcm0zRE9iamVjdCwgUGxhdGZvcm0zRE9iamVjdCwgR0MzRGludCwgR0MzRGVudW0pOwog
CisgICAgdm9pZCBiaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBjb25zdCBHQzNEY2hhciogdW5pZm9ybSk7CiBwcml2
YXRlOgogICAgIC8vIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGFyZSBzdHJpY3RseSBvd25lZCBi
eSB0aGUgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50YXRpb24gYW5kIGRvIG5vdAogICAgIC8v
IG5lZWQgdG8gYmUgaW5zdGFudGlhdGVkIGJ5IGFueSBvdGhlciBjb2RlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJp
bmRpbmcuY3BwCmluZGV4IDM3NjQzNGU2MmJmYjRkMWRiNDFmZmUwNjg3N2M4OWM3MDc4Y2FkNTYu
LjllN2NhMTM3MzFkYzA4MzY0MzU1ZjhjOWJlOTliNzI1NjlhMWI1MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFt
QmluZGluZy5jcHAKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQcm9n
cmFtQmluZGluZ0Jhc2U6OlByb2dyYW1CaW5kaW5nQmFzZSgpCiAgICAgOiBtX3Byb2dyYW0oMCkK
KyAgICAsIG1fdmVydGV4U2hhZGVyKDApCisgICAgLCBtX2ZyYWdtZW50U2hhZGVyKDApCiAgICAg
LCBtX2luaXRpYWxpemVkKGZhbHNlKQogewogfQpAQCAtNDgsNiArNTAsOCBAQCBQcm9ncmFtQmlu
ZGluZ0Jhc2U6On5Qcm9ncmFtQmluZGluZ0Jhc2UoKQogewogICAgIC8vIElmIHlvdSBoaXQgdGhl
c2UgYXNzZXJ0cywgeW91IGluaXRpYWxpemVkIGJ1dCBmb3Jnb3QgdG8gY2FsbCBjbGVhbnVwKCku
CiAgICAgQVNTRVJUKCFtX3Byb2dyYW0pOworICAgIEFTU0VSVCghbV92ZXJ0ZXhTaGFkZXIpOwor
ICAgIEFTU0VSVCghbV9mcmFnbWVudFNoYWRlcik7CiAgICAgQVNTRVJUKCFtX2luaXRpYWxpemVk
KTsKIH0KIApAQCAtNTksMTAgKzYzLDQ3IEBAIHN0YXRpYyBib29sIGNvbnRleHRMb3N0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KQogCiB2b2lkIFByb2dyYW1CaW5kaW5nQmFzZTo6aW5pdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNv
bnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpCiB7Ci0gICAgbV9wcm9ncmFtID0gY3JlYXRlU2hh
ZGVyUHJvZ3JhbShjb250ZXh0LCB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKTsKKyAgICBU
UkFDRV9FVkVOVCgiUHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtIiwgdGhp
cywgMCk7CisgICAgbV92ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQsIEdyYXBoaWNz
Q29udGV4dDNEOjpWRVJURVhfU0hBREVSLCB2ZXJ0ZXhTaGFkZXIpOworICAgIGlmICghbV92ZXJ0
ZXhTaGFkZXIpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0TG9zdChjb250ZXh0KSkKKyAgICAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSB2ZXJ0ZXggc2hhZGVyIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZyYWdtZW50U2hhZGVyID0gbG9hZFNoYWRlcihjb250
ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6RlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNoYWRlcik7
CisgICAgaWYgKCFtX2ZyYWdtZW50U2hhZGVyKSB7CisgICAgICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5kZWxldGVTaGFkZXIobV92ZXJ0ZXhTaGFkZXIpKTsKKyAgICAgICAgbV92ZXJ0ZXhTaGFk
ZXIgPSAwOworICAgICAgICBpZiAoIWNvbnRleHRMb3N0KGNvbnRleHQpKQorICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGZyYWdtZW50IHNoYWRlciIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9wcm9ncmFtID0gY3JlYXRlU2hhZGVyUHJvZ3JhbShjb250
ZXh0LCBtX3ZlcnRleFNoYWRlciwgbV9mcmFnbWVudFNoYWRlcik7CiAgICAgQVNTRVJUKG1fcHJv
Z3JhbSB8fCBjb250ZXh0TG9zdChjb250ZXh0KSk7CiB9CiAKK3ZvaWQgUHJvZ3JhbUJpbmRpbmdC
YXNlOjpsaW5rKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQoreworICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT5saW5rUHJvZ3JhbShtX3Byb2dyYW0pKTsKKyNpZm5kZWYgTkRFQlVHCisgICAg
aW50IGxpbmtlZCA9IDA7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmdldFByb2dyYW1pdiht
X3Byb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5LX1NUQVRVUywgJmxpbmtlZCkpOworICAg
IGlmICghbGlua2VkKSB7CisgICAgICAgIGlmICghY29udGV4dExvc3QoY29udGV4dCkpCisgICAg
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBsaW5rIHNoYWRlciBwcm9ncmFtIik7CisgICAg
ICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fcHJvZ3JhbSkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
ZGVsZXRlU2hhZGVyKG1fdmVydGV4U2hhZGVyKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PmRlbGV0ZVNoYWRlcihtX2ZyYWdtZW50U2hhZGVyKSk7CisgICAgbV92ZXJ0ZXhTaGFkZXIgPSAw
OworICAgIG1fZnJhZ21lbnRTaGFkZXIgPSAwOworfQorCiB2b2lkIFByb2dyYW1CaW5kaW5nQmFz
ZTo6Y2xlYW51cChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBtX2luaXRpYWxp
emVkID0gZmFsc2U7CkBAIC05MywyNCArMTM0LDggQEAgdW5zaWduZWQgUHJvZ3JhbUJpbmRpbmdC
YXNlOjpsb2FkU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCB0eXAK
ICAgICByZXR1cm4gc2hhZGVyOwogfQogCi11bnNpZ25lZCBQcm9ncmFtQmluZGluZ0Jhc2U6OmNy
ZWF0ZVNoYWRlclByb2dyYW0oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgdmVydGV4U2hhZGVyU291cmNlLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyU291cmNl
KQordW5zaWduZWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIsIHVuc2lnbmVkIGZy
YWdtZW50U2hhZGVyKQogewotICAgIFRSQUNFX0VWRU5UKCJQcm9ncmFtQmluZGluZ0Jhc2U6OmNy
ZWF0ZVNoYWRlclByb2dyYW0iLCB0aGlzLCAwKTsKLSAgICB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIg
PSBsb2FkU2hhZGVyKGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVSLCB2
ZXJ0ZXhTaGFkZXJTb3VyY2UpOwotICAgIGlmICghdmVydGV4U2hhZGVyKSB7Ci0gICAgICAgIGlm
ICghY29udGV4dExvc3QoY29udGV4dCkpCi0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBjcmVhdGUgdmVydGV4IHNoYWRlciIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAg
ICB1bnNpZ25lZCBmcmFnbWVudFNoYWRlciA9IGxvYWRTaGFkZXIoY29udGV4dCwgR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQUdNRU5UX1NIQURFUiwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIGlm
ICghZnJhZ21lbnRTaGFkZXIpIHsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0
ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpKTsKLSAgICAgICAgaWYgKCFjb250ZXh0TG9zdChjb250ZXh0
KSkKLSAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBmcmFnbWVudCBzaGFk
ZXIiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgdW5zaWduZWQgcHJvZ3JhbU9i
amVjdCA9IGNvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKICAgICBpZiAoIXByb2dyYW1PYmplY3Qp
IHsKICAgICAgICAgaWYgKCFjb250ZXh0TG9zdChjb250ZXh0KSkKQEAgLTEyNSwyMyArMTUwLDE1
IEBAIHVuc2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgY29uCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJp
bmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtT2JqZWN0LCBHZW9tZXRyeUJpbmRpbmc6OnBvc2l0aW9u
QXR0cmliTG9jYXRpb24oKSwgImFfcG9zaXRpb24iKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtT2JqZWN0LCBHZW9tZXRyeUJpbmRpbmc6OnRl
eENvb3JkQXR0cmliTG9jYXRpb24oKSwgImFfdGV4Q29vcmQiKSk7CiAKLSAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+bGlua1Byb2dyYW0ocHJvZ3JhbU9iamVjdCkpOwotI2lmbmRlZiBOREVCVUcK
LSAgICBpbnQgbGlua2VkID0gMDsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+Z2V0UHJvZ3Jh
bWl2KHByb2dyYW1PYmplY3QsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5LX1NUQVRVUywgJmxpbmtl
ZCkpOwotICAgIGlmICghbGlua2VkKSB7Ci0gICAgICAgIGlmICghY29udGV4dExvc3QoY29udGV4
dCkpCi0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBsaW5rIHNoYWRlciBwcm9ncmFt
Iik7Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVQcm9ncmFtKHByb2dyYW1P
YmplY3QpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcikpOwotICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpKTsKICAgICByZXR1cm4g
cHJvZ3JhbU9iamVjdDsKIH0KIAorYm9vbCBQcm9ncmFtQmluZGluZ0Jhc2U6Omhhc0JpbmRVbmlm
b3Jtc0V4dGVuc2lvbihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkgY29uc3QKK3sKKyAgICBF
eHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7CisgICAg
cmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9j
YXRpb24iKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgKaW5kZXggYWVhMjg1Njg5
MGRhZjJkNWQ2YzQ4NDgyN2Y2NTBmNzg3M2EwMTFkNy4uNjE0YjY5Yzc0ZDg3NTJmZDgxMzBlZDli
OTEzMGEwYzQxM2E3NmRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oCkBAIC00MCw2ICs0MCw3IEBA
IHB1YmxpYzoKICAgICB+UHJvZ3JhbUJpbmRpbmdCYXNlKCk7CiAKICAgICB2b2lkIGluaXQoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5n
JiBmcmFnbWVudFNoYWRlcik7CisgICAgdm9pZCBsaW5rKEdyYXBoaWNzQ29udGV4dDNEKik7CiAg
ICAgdm9pZCBjbGVhbnVwKEdyYXBoaWNzQ29udGV4dDNEKik7CiAKICAgICB1bnNpZ25lZCBwcm9n
cmFtKCkgY29uc3QgeyBBU1NFUlQobV9pbml0aWFsaXplZCk7IHJldHVybiBtX3Byb2dyYW07IH0K
QEAgLTQ4LDkgKzQ5LDEyIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKIAogICAgIHVuc2lnbmVkIGxv
YWRTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCB0eXBlLCBjb25zdCBTdHJpbmcm
IHNoYWRlclNvdXJjZSk7Ci0gICAgdW5zaWduZWQgY3JlYXRlU2hhZGVyUHJvZ3JhbShHcmFwaGlj
c0NvbnRleHQzRCosIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyU291cmNlLCBjb25zdCBTdHJp
bmcmIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICB1bnNpZ25lZCBjcmVhdGVTaGFkZXJQcm9n
cmFtKEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgdmVydGV4U2hhZGVyLCB1bnNpZ25lZCBm
cmFnbWVudFNoYWRlcik7CisgICAgYm9vbCBoYXNCaW5kVW5pZm9ybXNFeHRlbnNpb24oR3JhcGhp
Y3NDb250ZXh0M0QqKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG1fcHJvZ3JhbTsKKyAgICB1bnNp
Z25lZCBtX3ZlcnRleFNoYWRlcjsKKyAgICB1bnNpZ25lZCBtX2ZyYWdtZW50U2hhZGVyOwogICAg
IGJvb2wgbV9pbml0aWFsaXplZDsKIH07CiAKQEAgLTY4LDggKzcyLDIwIEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKG1fcHJvZ3JhbSk7CiAgICAgICAgIEFTU0VSVCghbV9pbml0aWFsaXplZCk7
CiAKLSAgICAgICAgbV92ZXJ0ZXhTaGFkZXIuaW5pdChjb250ZXh0LCBtX3Byb2dyYW0pOwotICAg
ICAgICBtX2ZyYWdtZW50U2hhZGVyLmluaXQoY29udGV4dCwgbV9wcm9ncmFtKTsKKyAgICAgICAg
Ym9vbCB1c2VCaW5kVW5pZm9ybXMgPSBQcm9ncmFtQmluZGluZ0Jhc2U6Omhhc0JpbmRVbmlmb3Jt
c0V4dGVuc2lvbihjb250ZXh0KTsKKworICAgICAgICAvLyBOZWVkIHRvIGJpbmQgdW5pZm9ybXMg
YmVmb3JlIGxpbmtpbmcKKyAgICAgICAgaWYgKCF1c2VCaW5kVW5pZm9ybXMpCisgICAgICAgICAg
ICBQcm9ncmFtQmluZGluZ0Jhc2U6OmxpbmsoY29udGV4dCk7CisKKyAgICAgICAgaW50IGJhc2VV
bmlmb3JtSW5kZXggPSAwOworICAgICAgICBtX3ZlcnRleFNoYWRlci5pbml0KGNvbnRleHQsIG1f
cHJvZ3JhbSwgdXNlQmluZFVuaWZvcm1zLCAmYmFzZVVuaWZvcm1JbmRleCk7CisgICAgICAgIG1f
ZnJhZ21lbnRTaGFkZXIuaW5pdChjb250ZXh0LCBtX3Byb2dyYW0sIHVzZUJpbmRVbmlmb3Jtcywg
JmJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgICAgIC8vIExpbmsgYWZ0ZXIgYmluZGluZyB1bmlm
b3JtcworICAgICAgICBpZiAodXNlQmluZFVuaWZvcm1zKQorICAgICAgICAgICAgUHJvZ3JhbUJp
bmRpbmdCYXNlOjpsaW5rKGNvbnRleHQpOworCiAgICAgICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCmluZGV4IDZlZDZmNGE4ZTQxOTY0MzIw
MjJjNTY2NjY4ZDVkZDhjMTlhMzQwMzEuLjY3MWVmNGExM2Y0YWI4ZDBjNmNiZDg3MWM4ZThmOWU5
ODJiNzg2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NoYWRlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKQEAgLTI5LDYgKzI5LDggQEAKIAog
I2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIK
KyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAKQEAgLTM3LDE0ICszOSw0
MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25hbWVzcGFjZSB7CisKK3N0YXRpYyB2b2lk
IGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1
bnNpZ25lZCBwcm9ncmFtLCBjb25zdCBjaGFyKiogc2hhZGVyVW5pZm9ybXMsIEdDM0RzaXplaSBj
b3VudCwgR0MzRHNpemVpIG1heExvY2F0aW9ucywgR0MzRGludCAqbG9jYXRpb25zLCBib29sIHVz
ZUJpbmRVbmlmb3JtcywgR0MzRGludCAqYmFzZVVuaWZvcm1JbmRleCkKK3sKKyAgICBFeHRlbnNp
b25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9t
aXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBmb3IgKEdDM0RzaXplaSB1bmlm
b3JtSW5kZXggPSAwOyB1bmlmb3JtSW5kZXggPCBjb3VudDsgdW5pZm9ybUluZGV4ICsrKSB7Cisg
ICAgICAgIGlmICh1bmlmb3JtSW5kZXggPj0gbWF4TG9jYXRpb25zKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGlmICh1c2VCaW5kVW5pZm9ybXMpIHsKKyAgICAgICAgICAgIGxvY2F0
aW9uc1t1bmlmb3JtSW5kZXhdID0gKCpiYXNlVW5pZm9ybUluZGV4KSsrOworICAgICAgICAgICAg
ZXh0ZW5zaW9ucy0+YmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNKHByb2dyYW0sIGxvY2F0aW9u
c1t1bmlmb3JtSW5kZXhdLCBzaGFkZXJVbmlmb3Jtc1t1bmlmb3JtSW5kZXhdKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBsb2NhdGlvbnNbdW5pZm9ybUluZGV4XSA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBzaGFkZXJVbmlmb3Jtc1t1bmlmb3JtSW5kZXhdKTsK
KyAgICB9Cit9CisKK30KKwogVmVydGV4U2hhZGVyUG9zVGV4OjpWZXJ0ZXhTaGFkZXJQb3NUZXgo
KQogICAgIDogbV9tYXRyaXhMb2NhdGlvbigtMSkKIHsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFkZXJQ
b3NUZXg6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0p
Cit2b2lkIFZlcnRleFNoYWRlclBvc1RleDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZv
cm1JbmRleCkKIHsKLSAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVy
VW5pZm9ybXNbXSA9IHsKKyAgICAgICAgIm1hdHJpeCIsCisgICAgfTsKKyAgICBHQzNEaW50IGxv
Y2F0aW9uc1sxXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHBy
b2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwg
V1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzZUJpbmRVbmlmb3Jtcywg
YmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX21hdHJpeExvY2F0aW9uID0gbG9jYXRpb25zWzBd
OwogICAgIEFTU0VSVChtX21hdHJpeExvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtNzAsMTEgKzk4
LDIwIEBAIFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OlZlcnRleFNoYWRlclBvc1RleFlV
VlN0cmV0Y2goKQogewogfQogCi12b2lkIFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6Omlu
aXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZl
cnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlm
b3JtSW5kZXgpCiB7Ci0gICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7Ci0gICAgbV95V2lkdGhTY2FsZUZhY3RvckxvY2F0
aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ5X3dpZHRoU2NhbGVG
YWN0b3IiKTsKLSAgICBtX3V2V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uID0gY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1dl93aWR0aFNjYWxlRmFjdG9yIik7CisgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJtYXRyaXgiLAor
ICAgICAgICAieV93aWR0aFNjYWxlRmFjdG9yIiwKKyAgICAgICAgInV2X3dpZHRoU2NhbGVGYWN0
b3IiLAorICAgIH07CisgICAgR0MzRGludCBsb2NhdGlvbnNbM107CisKKyAgICBnZXRQcm9ncmFt
VW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FS
UkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwg
bG9jYXRpb25zLCB1c2VCaW5kVW5pZm9ybXMsIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9t
YXRyaXhMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX3lXaWR0aFNjYWxlRmFjdG9yTG9j
YXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV91dldpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiA9
IGxvY2F0aW9uc1syXTsKICAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAmJiBtX3lX
aWR0aFNjYWxlRmFjdG9yTG9jYXRpb24gIT0gLTEgJiYgbV91dldpZHRoU2NhbGVGYWN0b3JMb2Nh
dGlvbiAhPSAtMSk7CiB9CiAKQEAgLTEwMyw5ICsxNDAsMTYgQEAgVmVydGV4U2hhZGVyUG9zOjpW
ZXJ0ZXhTaGFkZXJQb3MoKQogewogfQogCi12b2lkIFZlcnRleFNoYWRlclBvczo6aW5pdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgVmVydGV4U2hh
ZGVyUG9zOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFt
LCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1f
bWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1h
dHJpeCIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAg
ICAgICAibWF0cml4IiwKKyAgICB9OworICAgIEdDM0RpbnQgbG9jYXRpb25zWzFdOworCisgICAg
Z2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9y
bXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxv
Y2F0aW9ucyksIGxvY2F0aW9ucywgdXNlQmluZFVuaWZvcm1zLCBiYXNlVW5pZm9ybUluZGV4KTsK
KworICAgIG1fbWF0cml4TG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CiAgICAgQVNTRVJUKG1fbWF0
cml4TG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC0xMjcsMTAgKzE3MSwxOCBAQCBWZXJ0ZXhTaGFk
ZXJQb3NUZXhUcmFuc2Zvcm06OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSgpCiB7CiB9CiAK
LXZvaWQgVmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjppbml0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFu
c2Zvcm06OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0s
IGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9t
YXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0
cml4Iik7Ci0gICAgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAidGV4VHJhbnNmb3JtIik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJtYXRyaXgiLAorICAgICAgICAidGV4VHJh
bnNmb3JtIiwKKyAgICB9OworICAgIEdDM0RpbnQgbG9jYXRpb25zWzJdOworCisgICAgZ2V0UHJv
Z3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdU
Rl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9u
cyksIGxvY2F0aW9ucywgdXNlQmluZFVuaWZvcm1zLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAg
IG1fbWF0cml4TG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CisgICAgbV90ZXhUcmFuc2Zvcm1Mb2Nh
dGlvbiA9IGxvY2F0aW9uc1sxXTsKICAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAm
JiBtX3RleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtMTY5LDEwICsyMjEsMTgg
QEAgU3RyaW5nIFZlcnRleFNoYWRlclBvc1RleElkZW50aXR5OjpnZXRTaGFkZXJTdHJpbmcoKSBj
b25zdAogICAgICk7CiB9CiAKLXZvaWQgVmVydGV4U2hhZGVyUXVhZDo6aW5pdChHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgVmVydGV4U2hhZGVyUXVh
ZDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9v
bCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX21hdHJp
eExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgi
KTsKLSAgICBtX3BvaW50TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgInBvaW50Iik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10g
PSB7CisgICAgICAgICJtYXRyaXgiLAorICAgICAgICAicG9pbnRbMF0iLAorICAgIH07CisgICAg
R0MzRGludCBsb2NhdGlvbnNbMl07CisKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhj
b250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJV
bmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2VCaW5k
VW5pZm9ybXMsIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGxv
Y2F0aW9uc1swXTsKKyAgICBtX3BvaW50TG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CiAgICAgQVNT
RVJUKG1fbWF0cml4TG9jYXRpb24gIT0gLTEgJiYgbV9wb2ludExvY2F0aW9uICE9IC0xKTsKIH0K
IApAQCAtMjA1LDExICsyNjUsMjAgQEAgVmVydGV4U2hhZGVyVGlsZTo6VmVydGV4U2hhZGVyVGls
ZSgpCiB7CiB9CiAKLXZvaWQgVmVydGV4U2hhZGVyVGlsZTo6aW5pdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgVmVydGV4U2hhZGVyVGlsZTo6aW5p
dChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VC
aW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX21hdHJpeExvY2F0
aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKLSAg
ICBtX3BvaW50TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
InBvaW50Iik7Ci0gICAgbV92ZXJ0ZXhUZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidmVydGV4VGV4VHJhbnNmb3JtIik7CisgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJtYXRyaXgiLAor
ICAgICAgICAicG9pbnRbMF0iLAorICAgICAgICAidmVydGV4VGV4VHJhbnNmb3JtIiwKKyAgICB9
OworICAgIEdDM0RpbnQgbG9jYXRpb25zWzNdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2Nh
dGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgo
c2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywg
dXNlQmluZFVuaWZvcm1zLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fbWF0cml4TG9jYXRp
b24gPSBsb2NhdGlvbnNbMF07CisgICAgbV9wb2ludExvY2F0aW9uID0gbG9jYXRpb25zWzFdOwor
ICAgIG1fdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24gPSBsb2NhdGlvbnNbMl07CiAgICAgQVNT
RVJUKG1fbWF0cml4TG9jYXRpb24gIT0gLTEgJiYgbV9wb2ludExvY2F0aW9uICE9IC0xICYmIG1f
dmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC0yNDIsMTAgKzMxMSwx
OCBAQCBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zv
cm0oKQogewogfQogCi1ib29sIFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtOjppbml0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQorYm9vbCBWZXJ0ZXhTaGFk
ZXJWaWRlb1RyYW5zZm9ybTo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWdu
ZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCkK
IHsKLSAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJtYXRyaXgiKTsKLSAgICBtX3RleE1hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhNYXRyaXgiKTsKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgIm1hdHJpeCIsCisgICAgICAgICJ0
ZXhNYXRyaXgiLAorICAgIH07CisgICAgR0MzRGludCBsb2NhdGlvbnNbMl07CisKKyAgICBnZXRQ
cm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3Jtcywg
V1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRp
b25zKSwgbG9jYXRpb25zLCB1c2VCaW5kVW5pZm9ybXMsIGJhc2VVbmlmb3JtSW5kZXgpOworCisg
ICAgbV9tYXRyaXhMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX3RleE1hdHJpeExvY2F0
aW9uID0gbG9jYXRpb25zWzFdOwogICAgIHJldHVybiBtX21hdHJpeExvY2F0aW9uICE9IC0xICYm
IG1fdGV4TWF0cml4TG9jYXRpb24gIT0gLTE7CiB9CiAKQEAgLTI3MSwxMSArMzQ4LDE4IEBAIEZy
YWdtZW50VGV4QWxwaGFCaW5kaW5nOjpGcmFnbWVudFRleEFscGhhQmluZGluZygpCiB7CiB9CiAK
LXZvaWQgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmc6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nOjpp
bml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVz
ZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fc2FtcGxlckxv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUi
KTsKLSAgICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgImFscGhhIik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10g
PSB7CisgICAgICAgICJzX3RleHR1cmUiLAorICAgICAgICAiYWxwaGEiLAorICAgIH07CisgICAg
R0MzRGludCBsb2NhdGlvbnNbMl07CiAKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhj
b250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJV
bmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2VCaW5k
VW5pZm9ybXMsIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBs
b2NhdGlvbnNbMF07CisgICAgbV9hbHBoYUxvY2F0aW9uID0gbG9jYXRpb25zWzFdOwogICAgIEFT
U0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX2FscGhhTG9jYXRpb24gIT0gLTEpOwog
fQogCkBAIC0yODQsMTAgKzM2OCwxNiBAQCBGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmc6OkZyYWdt
ZW50VGV4T3BhcXVlQmluZGluZygpCiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRUZXhPcGFxdWVCaW5k
aW5nOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQor
dm9pZCBGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmc6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VV
bmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9zYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVyZSIpOworICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAic190ZXh0dXJlIiwKKyAgICB9OworICAg
IEdDM0RpbnQgbG9jYXRpb25zWzFdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMo
Y29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVy
VW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNlQmlu
ZFVuaWZvcm1zLCBiYXNlVW5pZm9ybUluZGV4KTsKIAorICAgIG1fc2FtcGxlckxvY2F0aW9uID0g
bG9jYXRpb25zWzBdOwogICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSk7CiB9CiAK
QEAgLTMwNiwxMCArMzk2LDE2IEBAIFN0cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxw
aGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAotYm9vbCBGcmFnbWVudFNo
YWRlck9FU0ltYWdlRXh0ZXJuYWw6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVu
c2lnbmVkIHByb2dyYW0pCitib29sIEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbDo6aW5p
dChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VC
aW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX3NhbXBsZXJMb2Nh
dGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJz
X3RleHR1cmUiLAorICAgIH07CisgICAgR0MzRGludCBsb2NhdGlvbnNbMV07CiAKKyAgICBnZXRQ
cm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3Jtcywg
V1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRp
b25zKSwgbG9jYXRpb25zLCB1c2VCaW5kVW5pZm9ybXMsIGJhc2VVbmlmb3JtSW5kZXgpOworCisg
ICAgbV9zYW1wbGVyTG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CiAgICAgcmV0dXJuIG1fc2FtcGxl
ckxvY2F0aW9uICE9IC0xOwogfQogCkBAIC00MzYsMTIgKzUzMiwyMCBAQCBGcmFnbWVudFNoYWRl
clJHQkFUZXhBbHBoYUFBOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBKCkKIHsKIH0KIAot
dm9pZCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBOjppbml0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFNoYWRlclJHQkFUZXhB
bHBoYUFBOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFt
LCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1f
c2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJz
X3RleHR1cmUiKTsKLSAgICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgImFscGhhIik7Ci0gICAgbV9lZGdlTG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImVkZ2UiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hh
ciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgInNfdGV4dHVyZSIsCisgICAgICAgICJh
bHBoYSIsCisgICAgICAgICJlZGdlWzBdIiwKKyAgICB9OworICAgIEdDM0RpbnQgbG9jYXRpb25z
WzNdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwg
c2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJS
QVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNlQmluZFVuaWZvcm1zLCBiYXNlVW5p
Zm9ybUluZGV4KTsKIAorICAgIG1fc2FtcGxlckxvY2F0aW9uID0gbG9jYXRpb25zWzBdOworICAg
IG1fYWxwaGFMb2NhdGlvbiA9IGxvY2F0aW9uc1sxXTsKKyAgICBtX2VkZ2VMb2NhdGlvbiA9IGxv
Y2F0aW9uc1syXTsKICAgICBBU1NFUlQobV9zYW1wbGVyTG9jYXRpb24gIT0gLTEgJiYgbV9hbHBo
YUxvY2F0aW9uICE9IC0xICYmIG1fZWRnZUxvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtNDc4LDEz
ICs1ODIsMjIgQEAgRnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nOjpGcmFnbWVudFRleENs
YW1wQWxwaGFBQUJpbmRpbmcoKQogewogfQogCi12b2lkIEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFB
QmluZGluZzo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3Jh
bSkKK3ZvaWQgRnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nOjppbml0KEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3Jtcywg
aW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUiKTsKLSAgICBtX2FscGhh
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7
Ci0gICAgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJmcmFnbWVudFRleFRyYW5zZm9ybSIpOwotICAgIG1fZWRnZUxv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJlZGdlIik7Cisg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJzX3Rl
eHR1cmUiLAorICAgICAgICAiYWxwaGEiLAorICAgICAgICAiZnJhZ21lbnRUZXhUcmFuc2Zvcm0i
LAorICAgICAgICAiZWRnZVswXSIsCisgICAgfTsKKyAgICBHQzNEaW50IGxvY2F0aW9uc1s0XTsK
IAorICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRl
clVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xF
TkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzZUJpbmRVbmlmb3JtcywgYmFzZVVuaWZvcm1J
bmRleCk7CisKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX2Fs
cGhhTG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxv
Y2F0aW9uID0gbG9jYXRpb25zWzJdOworICAgIG1fZWRnZUxvY2F0aW9uID0gbG9jYXRpb25zWzNd
OwogICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX2FscGhhTG9jYXRpb24g
IT0gLTEgJiYgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xICYmIG1fZWRnZUxv
Y2F0aW9uICE9IC0xKTsKIH0KIApAQCAtNTQ5LDExICs2NjIsMjAgQEAgRnJhZ21lbnRTaGFkZXJS
R0JBVGV4QWxwaGFNYXNrOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2soKQogewogfQog
Ci12b2lkIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6aW5pdChHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRTaGFkZXJSR0JB
VGV4QWxwaGFNYXNrOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBw
cm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewot
ICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICJzX3RleHR1cmUiKTsKLSAgICBtX21hc2tTYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfbWFzayIpOwotICAgIG1fYWxwaGFMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiYWxwaGEiKTsKKyAgICBz
dGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgInNfdGV4dHVy
ZSIsCisgICAgICAgICJzX21hc2siLAorICAgICAgICAiYWxwaGEiLAorICAgIH07CisgICAgR0Mz
RGludCBsb2NhdGlvbnNbM107CisKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250
ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlm
b3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2VCaW5kVW5p
Zm9ybXMsIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBsb2Nh
dGlvbnNbMF07CisgICAgbV9tYXNrU2FtcGxlckxvY2F0aW9uID0gbG9jYXRpb25zWzFdOworICAg
IG1fYWxwaGFMb2NhdGlvbiA9IGxvY2F0aW9uc1syXTsKICAgICBBU1NFUlQobV9zYW1wbGVyTG9j
YXRpb24gIT0gLTEgJiYgbV9tYXNrU2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2Nh
dGlvbiAhPSAtMSk7CiB9CiAKQEAgLTU4MiwxMiArNzA0LDIyIEBAIEZyYWdtZW50U2hhZGVyUkdC
QVRleEFscGhhTWFza0FBOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQSgpCiB7CiB9
CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE6OmluaXQoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIEZyYWdtZW50U2hhZGVy
UkdCQVRleEFscGhhTWFza0FBOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNp
Z25lZCBwcm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4
KQogewotICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJzX3RleHR1cmUiKTsKLSAgICBtX21hc2tTYW1wbGVyTG9jYXRpb24gPSBjb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfbWFzayIpOwotICAgIG1fYWxwaGFM
b2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiYWxwaGEiKTsK
LSAgICBtX2VkZ2VMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAiZWRnZSIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0gewor
ICAgICAgICAic190ZXh0dXJlIiwKKyAgICAgICAgInNfbWFzayIsCisgICAgICAgICJhbHBoYSIs
CisgICAgICAgICJlZGdlWzBdIiwKKyAgICB9OworICAgIEdDM0RpbnQgbG9jYXRpb25zWzRdOwor
CisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVy
VW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVO
R1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNlQmluZFVuaWZvcm1zLCBiYXNlVW5pZm9ybUlu
ZGV4KTsKKworICAgIG1fc2FtcGxlckxvY2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fbWFz
a1NhbXBsZXJMb2NhdGlvbiA9IGxvY2F0aW9uc1sxXTsKKyAgICBtX2FscGhhTG9jYXRpb24gPSBs
b2NhdGlvbnNbMl07CisgICAgbV9lZGdlTG9jYXRpb24gPSBsb2NhdGlvbnNbM107CiAgICAgQVNT
RVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fbWFza1NhbXBsZXJMb2NhdGlvbiAhPSAt
MSAmJiBtX2FscGhhTG9jYXRpb24gIT0gLTEgJiYgbV9lZGdlTG9jYXRpb24gIT0gLTEpOwogfQog
CkBAIC02MjgsMTQgKzc2MCwyNiBAQCBGcmFnbWVudFNoYWRlcllVVlZpZGVvOjpGcmFnbWVudFNo
YWRlcllVVlZpZGVvKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFNoYWRlcllVVlZpZGVvOjppbml0
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFn
bWVudFNoYWRlcllVVlZpZGVvOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNp
Z25lZCBwcm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4
KQogewotICAgIG1feVRleHR1cmVMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAieV90ZXh0dXJlIik7Ci0gICAgbV91VGV4dHVyZUxvY2F0aW9uID0gY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X3RleHR1cmUiKTsKLSAgICBtX3ZUZXh0
dXJlTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInZfdGV4
dHVyZSIpOwotICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAiYWxwaGEiKTsKLSAgICBtX2NjTWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImNjX21hdHJpeCIpOwotICAgIG1feXV2QWRqTG9j
YXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInl1dl9hZGoiKTsK
KyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgInlf
dGV4dHVyZSIsCisgICAgICAgICJ1X3RleHR1cmUiLAorICAgICAgICAidl90ZXh0dXJlIiwKKyAg
ICAgICAgImFscGhhIiwKKyAgICAgICAgImNjX21hdHJpeCIsCisgICAgICAgICJ5dXZfYWRqIiwK
KyAgICB9OworICAgIEdDM0RpbnQgbG9jYXRpb25zWzZdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZv
cm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9M
RU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0
aW9ucywgdXNlQmluZFVuaWZvcm1zLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1feVRleHR1
cmVMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX3VUZXh0dXJlTG9jYXRpb24gPSBsb2Nh
dGlvbnNbMV07CisgICAgbV92VGV4dHVyZUxvY2F0aW9uID0gbG9jYXRpb25zWzJdOworICAgIG1f
YWxwaGFMb2NhdGlvbiA9IGxvY2F0aW9uc1szXTsKKyAgICBtX2NjTWF0cml4TG9jYXRpb24gPSBs
b2NhdGlvbnNbNF07CisgICAgbV95dXZBZGpMb2NhdGlvbiA9IGxvY2F0aW9uc1s1XTsKIAogICAg
IEFTU0VSVChtX3lUZXh0dXJlTG9jYXRpb24gIT0gLTEgJiYgbV91VGV4dHVyZUxvY2F0aW9uICE9
IC0xICYmIG1fdlRleHR1cmVMb2NhdGlvbiAhPSAtMQogICAgICAgICAgICAmJiBtX2FscGhhTG9j
YXRpb24gIT0gLTEgJiYgbV9jY01hdHJpeExvY2F0aW9uICE9IC0xICYmIG1feXV2QWRqTG9jYXRp
b24gIT0gLTEpOwpAQCAtNjcxLDkgKzgxNSwxNiBAQCBGcmFnbWVudFNoYWRlckNvbG9yOjpGcmFn
bWVudFNoYWRlckNvbG9yKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFNoYWRlckNvbG9yOjppbml0
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFn
bWVudFNoYWRlckNvbG9yOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25l
ZCBwcm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4KQog
ewotICAgIG1fY29sb3JMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAiY29sb3IiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9
IHsKKyAgICAgICAgImNvbG9yIiwKKyAgICB9OworICAgIEdDM0RpbnQgbG9jYXRpb25zWzFdOwor
CisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVy
VW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVO
R1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNlQmluZFVuaWZvcm1zLCBiYXNlVW5pZm9ybUlu
ZGV4KTsKKworICAgIG1fY29sb3JMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKICAgICBBU1NFUlQo
bV9jb2xvckxvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtNjk2LDExICs4NDcsMjAgQEAgRnJhZ21l
bnRTaGFkZXJDaGVja2VyYm9hcmQ6OkZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkKCkKIHsKIH0K
IAotdm9pZCBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6aW5pdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRTaGFkZXJDaGVja2Vy
Ym9hcmQ6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0s
IGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9h
bHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBo
YSIpOwotICAgIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgInRleFRyYW5zZm9ybSIpOwotICAgIG1fZnJlcXVlbmN5TG9jYXRpb24g
PSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImZyZXF1ZW5jeSIpOworICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAiYWxwaGEi
LAorICAgICAgICAidGV4VHJhbnNmb3JtIiwKKyAgICAgICAgImZyZXF1ZW5jeSIsCisgICAgfTsK
KyAgICBHQzNEaW50IGxvY2F0aW9uc1szXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRp
b25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNo
YWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVz
ZUJpbmRVbmlmb3JtcywgYmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX2FscGhhTG9jYXRpb24g
PSBsb2NhdGlvbnNbMF07CisgICAgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGxvY2F0aW9uc1sx
XTsKKyAgICBtX2ZyZXF1ZW5jeUxvY2F0aW9uID0gbG9jYXRpb25zWzJdOwogICAgIEFTU0VSVCht
X2FscGhhTG9jYXRpb24gIT0gLTEgJiYgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAtMSAmJiBt
X2ZyZXF1ZW5jeUxvY2F0aW9uICE9IC0xKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKaW5kZXgg
OTI3N2VjY2E1MGMzNmQxODlkOGU2MWQ3MmU1ZmYzN2E4ZTM1N2M4NC4uNjg4OGFkYmI2ZDdkODA4
MDRiMWViZWU4YjNiOWQ4ZTdmMDFiMGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIFZlcnRleFNoYWRlclBvc1RleCB7CiBwdWJsaWM6CiAgICAgVmVydGV4
U2hhZGVyUG9zVGV4KCk7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNp
Z25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25l
ZCBwcm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsK
ICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CkBAIC01Miw3ICs1Miw3
IEBAIGNsYXNzIFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2ggewogcHVibGljOgogICAgIFZl
cnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2goKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0Nv
bnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRl
eHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VV
bmlmb3JtSW5kZXgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAg
IGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0K
QEAgLTY5LDcgKzY5LDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyUG9zIHsKIHB1YmxpYzoKICAgICBW
ZXJ0ZXhTaGFkZXJQb3MoKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2ln
bmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgp
OwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBtYXRyaXhM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KQEAgLTgwLDcgKzgw
LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgVmVydGV4U2hhZGVyUG9zVGV4SWRlbnRpdHkgewogcHVi
bGljOgotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0p
IHsgfQorICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0s
IGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpIHsgfQogICAgIFN0
cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07CiAKQEAgLTg4LDcgKzg4LDcgQEAgY2xh
c3MgVmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtIHsKIHB1YmxpYzoKICAgICBWZXJ0ZXhTaGFk
ZXJQb3NUZXhUcmFuc2Zvcm0oKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCos
IHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3JtSW5k
ZXgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBtYXRy
aXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KQEAgLTEwMyw3
ICsxMDMsNyBAQCBjbGFzcyBWZXJ0ZXhTaGFkZXJRdWFkIHsKIHB1YmxpYzoKICAgICBWZXJ0ZXhT
aGFkZXJRdWFkKCk7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25l
ZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBw
cm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAg
ICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CkBAIC0xMTgsNyArMTE4LDcg
QEAgY2xhc3MgVmVydGV4U2hhZGVyVGlsZSB7CiBwdWJsaWM6CiAgICAgVmVydGV4U2hhZGVyVGls
ZSgpOwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3Jh
bSk7CisgICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwg
Ym9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgU3RyaW5n
IGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQpAQCAtMTM1LDcgKzEzNSw3IEBAIGNsYXNz
IFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtIHsKIHB1YmxpYzoKICAgICBWZXJ0ZXhTaGFkZXJW
aWRlb1RyYW5zZm9ybSgpOwogCi0gICAgYm9vbCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5z
aWduZWQgcHJvZ3JhbSk7CisgICAgYm9vbCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWdu
ZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCk7
CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50IG1hdHJpeExv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQpAQCAtMTUwLDcgKzE1
MCw3IEBAIGNsYXNzIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKIHB1YmxpYzoKICAgICBGcmFn
bWVudFRleEFscGhhQmluZGluZygpOwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNE
KiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1J
bmRleCk7CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9j
YXRpb247IH0KICAgICBpbnQgZWRnZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gLTE7IH0KICAg
ICBpbnQgZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9
CkBAIC0xNjUsNyArMTY1LDcgQEAgY2xhc3MgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nIHsKIHB1
YmxpYzoKICAgICBGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmcoKTsKIAotICAgIHZvaWQgaW5pdChH
cmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChHcmFw
aGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBp
bnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gLTE7IH0KICAgICBpbnQgZWRnZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gLTE7IH0K
ICAgICBpbnQgZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIC0x
OyB9CkBAIC0yMjEsNyArMjIxLDcgQEAgcHVibGljOgogY2xhc3MgRnJhZ21lbnRTaGFkZXJPRVNJ
bWFnZUV4dGVybmFsIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKIHB1YmxpYzoK
ICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBpbml0KEdyYXBo
aWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgYm9vbCBpbml0KEdyYXBoaWNz
Q29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCog
YmFzZVVuaWZvcm1JbmRleCk7CiBwcml2YXRlOgogICAgIGludCBtX3NhbXBsZXJMb2NhdGlvbjsK
IH07CkBAIC0yMzAsNyArMjMwLDcgQEAgY2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFB
QSB7CiBwdWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSgpOwogCi0gICAg
dm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9p
ZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5k
VW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0
cmluZygpIGNvbnN0OwogCiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2FscGhhTG9jYXRpb247IH0KQEAgLTI0Nyw3ICsyNDcsNyBAQCBjbGFzcyBGcmFnbWVudFRleENs
YW1wQWxwaGFBQUJpbmRpbmcgewogcHVibGljOgogICAgIEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFB
QmluZGluZygpOwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQg
cHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJv
Z3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAg
aW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0KICAg
ICBpbnQgc2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb247
IH0KICAgICBpbnQgZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQpAQCAtMjc2LDcgKzI3Niw3IEBAIHB1
YmxpYzoKICAgICBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2soKTsKICAgICBTdHJpbmcg
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0
M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0Qq
LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9y
bUluZGV4KTsKICAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFM
b2NhdGlvbjsgfQogICAgIGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Nh
bXBsZXJMb2NhdGlvbjsgfQogICAgIGludCBtYXNrU2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXNrU2FtcGxlckxvY2F0aW9uOyB9CkBAIC0yOTIsNyArMjkyLDcgQEAgcHVibGlj
OgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBKCk7CiAgICAgU3RyaW5nIGdl
dFNoYWRlclN0cmluZygpIGNvbnN0OwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNE
KiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1J
bmRleCk7CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9j
YXRpb247IH0KICAgICBpbnQgc2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1w
bGVyTG9jYXRpb247IH0KICAgICBpbnQgbWFza1NhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbWFza1NhbXBsZXJMb2NhdGlvbjsgfQpAQCAtMzEwLDcgKzMxMCw3IEBAIHB1YmxpYzoK
ICAgICBGcmFnbWVudFNoYWRlcllVVlZpZGVvKCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmlu
ZygpIGNvbnN0OwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQg
cHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJv
Z3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAKICAg
ICBpbnQgeVRleHR1cmVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1feVRleHR1cmVMb2NhdGlv
bjsgfQogICAgIGludCB1VGV4dHVyZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91VGV4dHVy
ZUxvY2F0aW9uOyB9CkBAIC0zMzMsNyArMzMzLDcgQEAgcHVibGljOgogICAgIEZyYWdtZW50U2hh
ZGVyQ29sb3IoKTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKLSAgICB2
b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lk
IGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzZUJpbmRV
bmlmb3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBpbnQgY29sb3JMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fY29sb3JMb2NhdGlvbjsgfQogCiBwcml2YXRlOgpAQCAtMzQ1LDcg
KzM0NSw3IEBAIHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZCgpOwogICAg
IFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAotICAgIHZvaWQgaW5pdChHcmFwaGlj
c0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChHcmFwaGljc0Nv
bnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJh
c2VVbmlmb3JtSW5kZXgpOwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9hbHBoYUxvY2F0aW9uOyB9CiAgICAgaW50IHRleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQogICAgIGludCBmcmVxdWVuY3lMb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnJlcXVlbmN5TG9jYXRpb247IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150200</attachid>
            <date>2012-06-29 09:53:35 -0700</date>
            <delta_ts>2012-06-29 17:59:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90217-20120629095335.patch</filename>
            <type>text/plain</type>
            <size>38812</size>
            <attacher>alexst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4ZWNmMTBiM2UwM2Y3
NzZjZjM4OTRmNmQxOWMyNDI0Zjk2NzQ5Y2RmLi5hODM0Y2Y5MjhkNzAwYmI5M2ZiMGRlNWU2MzFm
ZGUzOTk2YjdlZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0yOSAg
QWxleCBTYWtoYXJ0Y2hvdWsgIDxhbGV4c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gQXZvaWQgY2FsbGluZyBnZXRVbmlmb3JtTG9jYXRpb24/PygpIGluIHRoZSBjb21wb3Np
dG9yIHN0YXJ0dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkwMjE3CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgcmVwbGFjZXMgZ2V0VW5pZm9ybUxvY2F0
aW9uIGNhbGxzIGluIHRoZSBjaHJvbWUgY29tcG9zaXRvciB3aXRoIGJpbmRVbmlmb3JtTG9jYXRp
b24KKyAgICAgICAgdG8gc3BlZWQgdXAgc3RhcnR1cCB0aW1lLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkdyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJHcmFwaGljc1VuaWZvcm1EZWZpbml0aW9uQ0hS
T01JVU0pOgorICAgICAgICAoV2ViR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6YmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNKToKKwog
MjAxMi0wNi0yMiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMTA2NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OTM1ODdlMGUx
ZWI1M2EyYTQ1MDhjMThmMjgzYzlmM2Y0NTEzNDI1Li45NmVkOWM2YTQ3YTk5OGUzYzBkNzM5ZGFm
ODM1YWY5OGM2YTdhNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTItMDYtMjkg
IEFsZXggU2FraGFydGNob3VrICA8YWxleHN0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIEF2b2lkIGNhbGxpbmcgZ2V0VW5pZm9ybUxvY2F0aW9uPz8oKSBpbiB0aGUgY29tcG9z
aXRvciBzdGFydHVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MDIxNworCisgICAgICAgIFRoaXMgY2hhbmdlIHJlcGxhY2VzIGdldFVuaWZvcm1Mb2Nh
dGlvbiBjYWxscyBpbiB0aGUgY2hyb21lIGNvbXBvc2l0b3Igd2l0aCBiaW5kVW5pZm9ybUxvY2F0
aW9uCisgICAgICAgIHRvIHNwZWVkIHVwIHN0YXJ0dXAgdGltZS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvRXh0ZW5zaW9uczNEQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNEQ2hyb21pdW06OmJpbmRVbmlmb3Jt
TG9jYXRpb25DSFJPTUlVTSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oOgorICAgICAgICAoRXh0
ZW5zaW9uczNEQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Byb2dyYW1CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5nQmFz
ZTo6UHJvZ3JhbUJpbmRpbmdCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5n
QmFzZTo6flByb2dyYW1CaW5kaW5nQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmlu
ZGluZ0Jhc2U6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3JhbUJpbmRpbmdCYXNlOjps
aW5rKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3JhbUJpbmRp
bmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1C
aW5kaW5nQmFzZTo6aGFzQmluZFVuaWZvcm1zRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oOgorICAgICAgICAoUHJvZ3JhbUJp
bmRpbmdCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5nOjppbml0aWFsaXpl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXg6OmluaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6aW5pdCk6CisgICAgICAg
IChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3M6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VmVy
dGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRl
eFNoYWRlclF1YWQ6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVGlsZTo6
aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6aW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleEFscGhhQmluZGluZzo6aW5pdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmc6OmluaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjppbml0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE6OmluaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nOjppbml0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6aW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQTo6aW5pdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlcllVVlZpZGVvOjppbml0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyQ29sb3I6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OmluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmg6CisgICAgICAgIChWZXJ0ZXhTaGFkZXJQ
b3NUZXgpOgorICAgICAgICAoVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCk6CisgICAgICAg
IChWZXJ0ZXhTaGFkZXJQb3MpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4
SWRlbnRpdHk6OmluaXQpOgorICAgICAgICAoVmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtKToK
KyAgICAgICAgKFZlcnRleFNoYWRlclF1YWQpOgorICAgICAgICAoVmVydGV4U2hhZGVyVGlsZSk6
CisgICAgICAgIChWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSk6CisgICAgICAgIChGcmFnbWVu
dFRleEFscGhhQmluZGluZyk6CisgICAgICAgIChGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmcpOgor
ICAgICAgICAoRnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsKToKKyAgICAgICAgKEZyYWdt
ZW50U2hhZGVyUkdCQVRleEFscGhhQUEpOgorICAgICAgICAoRnJhZ21lbnRUZXhDbGFtcEFscGhh
QUFCaW5kaW5nKToKKyAgICAgICAgKEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzayk6Cisg
ICAgICAgIChGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQSk6CisgICAgICAgIChGcmFn
bWVudFNoYWRlcllVVlZpZGVvKToKKyAgICAgICAgKEZyYWdtZW50U2hhZGVyQ29sb3IpOgorICAg
ICAgICAoRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQpOgorCiAyMDEyLTA2LTI0ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTIxMTA2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGRjMDM1YWVkMWJiZjM4Y2U1
YjdhZThmZmQyOTA4MDUxMGNjMDE1MTEuLjVkMGYzZGVlNTZkZGMzNjE4NGNiNWI0ZDZkZGMwNDY2
NzYyZWJmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkdyYXBoaWNzQ29udGV4dDNELmgKQEAgLTQxMCw2ICs0MTAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGVuZFF1ZXJ5RVhUKFdHQzNEZW51bSB0YXJnZXQpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBnZXRRdWVyeWl2RVhUKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEZW51bSBwbmFtZSwg
V0dDM0RpbnQqIHBhcmFtcykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2
RVhUKFdlYkdMSWQgcXVlcnksIFdHQzNEZW51bSBwbmFtZSwgV0dDM0R1aW50KiBwYXJhbXMpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBiaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oV2ViR0xJZCBw
cm9ncmFtLCBXR0MzRGludCBsb2NhdGlvbiwgY29uc3QgV0dDM0RjaGFyKiB1bmlmb3JtKSB7IH0K
IAogICAgIC8vIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZQogICAgIHZpcnR1YWwgdm9pZCBjb3B5
VGV4dHVyZUNIUk9NSVVNKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEdWludCBzb3VyY2VJZCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvRXh0ZW5z
aW9uczNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKaW5kZXggNWNkZDRiYTZiZjA4ZWM4ZDNhMmM4
OTRjNDQyNzUxMTVmOGIzOTNlZi4uNjM3YmJhMjA5ZTExYzdjNmJlZmI2NzU0MThmY2ZjZjlhNjFk
ZTZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKQEAgLTIwNiw0ICsyMDYs
OSBAQCB2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjpjb3B5VGV4dHVyZUNIUk9NSVVNKEdDM0Rl
bnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdAogICAgIG1fcHJpdmF0ZS0+d2ViQ29udGV4dCgp
LT5jb3B5VGV4dHVyZUNIUk9NSVVNKHRhcmdldCwgc291cmNlSWQsIGRlc3RJZCwgbGV2ZWwsIGlu
dGVybmFsRm9ybWF0KTsKIH0KIAordm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6YmluZFVuaWZv
cm1Mb2NhdGlvbkNIUk9NSVVNKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2Nh
dGlvbiwgY29uc3QgR0MzRGNoYXIqIHVuaWZvcm0pCit7CisgICAgbV9wcml2YXRlLT53ZWJDb250
ZXh0KCktPmJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShwcm9ncmFtLCBsb2NhdGlvbiwgdW5p
Zm9ybSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RD
aHJvbWl1bS5oCmluZGV4IDgyNzg3ZjQwMDUzYjgwZmZlNzVmYjMxYzdkYjk5OGFiYmM5MzRiNGQu
Ljc3YzJiMzE5ODg5YmQ4NzJhNTdmN2U2ODEyMzY4ZjFjYTJmM2I2NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaApAQCAtMTU5LDYgKzE1OSw3IEBAIHB1YmxpYzoKICAgICAvLyBH
TF9DSFJPTUlVTV9jb3B5X3RleHR1cmUKICAgICB2b2lkIGNvcHlUZXh0dXJlQ0hST01JVU0oR0Mz
RGVudW0sIFBsYXRmb3JtM0RPYmplY3QsIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RpbnQsIEdDM0Rl
bnVtKTsKIAorICAgIHZvaWQgYmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgY29uc3QgR0MzRGNoYXIqIHVuaWZvcm0p
OwogcHJpdmF0ZToKICAgICAvLyBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBhcmUgc3RyaWN0bHkg
b3duZWQgYnkgdGhlIEdyYXBoaWNzQ29udGV4dDNEIGltcGxlbWVudGF0aW9uIGFuZCBkbyBub3QK
ICAgICAvLyBuZWVkIHRvIGJlIGluc3RhbnRpYXRlZCBieSBhbnkgb3RoZXIgY29kZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1C
aW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1By
b2dyYW1CaW5kaW5nLmNwcAppbmRleCAzNzY0MzRlNjJiZmI0ZDFkYjQxZmZlMDY4NzdjODljNzA3
OGNhZDU2Li45ZTdjYTEzNzMxZGMwODM2NDM1NWY4YzliZTk5YjcyNTY5YTFiNTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmlu
ZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UHJvZ3JhbUJpbmRpbmcuY3BwCkBAIC00MCw2ICs0MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUHJvZ3JhbUJpbmRpbmdCYXNlOjpQcm9ncmFtQmluZGluZ0Jhc2UoKQogICAgIDogbV9wcm9n
cmFtKDApCisgICAgLCBtX3ZlcnRleFNoYWRlcigwKQorICAgICwgbV9mcmFnbWVudFNoYWRlcigw
KQogICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKIHsKIH0KQEAgLTQ4LDYgKzUwLDggQEAgUHJv
Z3JhbUJpbmRpbmdCYXNlOjp+UHJvZ3JhbUJpbmRpbmdCYXNlKCkKIHsKICAgICAvLyBJZiB5b3Ug
aGl0IHRoZXNlIGFzc2VydHMsIHlvdSBpbml0aWFsaXplZCBidXQgZm9yZ290IHRvIGNhbGwgY2xl
YW51cCgpLgogICAgIEFTU0VSVCghbV9wcm9ncmFtKTsKKyAgICBBU1NFUlQoIW1fdmVydGV4U2hh
ZGVyKTsKKyAgICBBU1NFUlQoIW1fZnJhZ21lbnRTaGFkZXIpOwogICAgIEFTU0VSVCghbV9pbml0
aWFsaXplZCk7CiB9CiAKQEAgLTU5LDEwICs2Myw0NyBAQCBzdGF0aWMgYm9vbCBjb250ZXh0TG9z
dChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIAogdm9pZCBQcm9ncmFtQmluZGluZ0Jhc2U6
OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVydGV4U2hh
ZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyKQogewotICAgIG1fcHJvZ3JhbSA9IGNy
ZWF0ZVNoYWRlclByb2dyYW0oY29udGV4dCwgdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcik7
CisgICAgVFJBQ0VfRVZFTlQoIlByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3Jh
bSIsIHRoaXMsIDApOworICAgIG1fdmVydGV4U2hhZGVyID0gbG9hZFNoYWRlcihjb250ZXh0LCBH
cmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUiwgdmVydGV4U2hhZGVyKTsKKyAgICBpZiAo
IW1fdmVydGV4U2hhZGVyKSB7CisgICAgICAgIGlmICghY29udGV4dExvc3QoY29udGV4dCkpCisg
ICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgdmVydGV4IHNoYWRlciIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mcmFnbWVudFNoYWRlciA9IGxvYWRTaGFk
ZXIoY29udGV4dCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZSQUdNRU5UX1NIQURFUiwgZnJhZ21lbnRT
aGFkZXIpOworICAgIGlmICghbV9mcmFnbWVudFNoYWRlcikgeworICAgICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+ZGVsZXRlU2hhZGVyKG1fdmVydGV4U2hhZGVyKSk7CisgICAgICAgIG1fdmVy
dGV4U2hhZGVyID0gMDsKKyAgICAgICAgaWYgKCFjb250ZXh0TG9zdChjb250ZXh0KSkKKyAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBmcmFnbWVudCBzaGFkZXIiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcHJvZ3JhbSA9IGNyZWF0ZVNoYWRlclByb2dy
YW0oY29udGV4dCwgbV92ZXJ0ZXhTaGFkZXIsIG1fZnJhZ21lbnRTaGFkZXIpOwogICAgIEFTU0VS
VChtX3Byb2dyYW0gfHwgY29udGV4dExvc3QoY29udGV4dCkpOwogfQogCit2b2lkIFByb2dyYW1C
aW5kaW5nQmFzZTo6bGluayhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKK3sKKyAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+bGlua1Byb2dyYW0obV9wcm9ncmFtKSk7CisjaWZuZGVmIE5ERUJV
RworICAgIGludCBsaW5rZWQgPSAwOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5nZXRQcm9n
cmFtaXYobV9wcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6TElOS19TVEFUVVMsICZsaW5rZWQp
KTsKKyAgICBpZiAoIWxpbmtlZCkgeworICAgICAgICBpZiAoIWNvbnRleHRMb3N0KGNvbnRleHQp
KQorICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbGluayBzaGFkZXIgcHJvZ3JhbSIp
OworICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShtX3Byb2dyYW0p
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPmRlbGV0ZVNoYWRlcihtX3ZlcnRleFNoYWRlcikpOworICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5kZWxldGVTaGFkZXIobV9mcmFnbWVudFNoYWRlcikpOworICAgIG1fdmVydGV4U2hh
ZGVyID0gMDsKKyAgICBtX2ZyYWdtZW50U2hhZGVyID0gMDsKK30KKwogdm9pZCBQcm9ncmFtQmlu
ZGluZ0Jhc2U6OmNsZWFudXAoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgbV9p
bml0aWFsaXplZCA9IGZhbHNlOwpAQCAtOTMsMjQgKzEzNCw4IEBAIHVuc2lnbmVkIFByb2dyYW1C
aW5kaW5nQmFzZTo6bG9hZFNoYWRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWdu
ZWQgdHlwCiAgICAgcmV0dXJuIHNoYWRlcjsKIH0KIAotdW5zaWduZWQgUHJvZ3JhbUJpbmRpbmdC
YXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHZlcnRleFNoYWRlclNvdXJjZSwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRl
clNvdXJjZSkKK3Vuc2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3Jh
bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgdmVydGV4U2hhZGVyLCB1bnNp
Z25lZCBmcmFnbWVudFNoYWRlcikKIHsKLSAgICBUUkFDRV9FVkVOVCgiUHJvZ3JhbUJpbmRpbmdC
YXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtIiwgdGhpcywgMCk7Ci0gICAgdW5zaWduZWQgdmVydGV4
U2hhZGVyID0gbG9hZFNoYWRlcihjb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX1NI
QURFUiwgdmVydGV4U2hhZGVyU291cmNlKTsKLSAgICBpZiAoIXZlcnRleFNoYWRlcikgewotICAg
ICAgICBpZiAoIWNvbnRleHRMb3N0KGNvbnRleHQpKQotICAgICAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIHZlcnRleCBzaGFkZXIiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotCi0gICAgdW5zaWduZWQgZnJhZ21lbnRTaGFkZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQsIEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVIsIGZyYWdtZW50U2hhZGVyU291cmNlKTsK
LSAgICBpZiAoIWZyYWdtZW50U2hhZGVyKSB7Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKSk7Ci0gICAgICAgIGlmICghY29udGV4dExvc3Qo
Y29udGV4dCkpCi0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZnJhZ21l
bnQgc2hhZGVyIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQogICAgIHVuc2lnbmVkIHBy
b2dyYW1PYmplY3QgPSBjb250ZXh0LT5jcmVhdGVQcm9ncmFtKCk7CiAgICAgaWYgKCFwcm9ncmFt
T2JqZWN0KSB7CiAgICAgICAgIGlmICghY29udGV4dExvc3QoY29udGV4dCkpCkBAIC0xMjUsMjMg
KzE1MCwxNSBAQCB1bnNpZ25lZCBQcm9ncmFtQmluZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dy
YW0oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbgogICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbU9iamVjdCwgR2VvbWV0cnlCaW5kaW5nOjpw
b3NpdGlvbkF0dHJpYkxvY2F0aW9uKCksICJhX3Bvc2l0aW9uIikpOwogICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbU9iamVjdCwgR2VvbWV0cnlCaW5k
aW5nOjp0ZXhDb29yZEF0dHJpYkxvY2F0aW9uKCksICJhX3RleENvb3JkIikpOwogCi0gICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmxpbmtQcm9ncmFtKHByb2dyYW1PYmplY3QpKTsKLSNpZm5kZWYg
TkRFQlVHCi0gICAgaW50IGxpbmtlZCA9IDA7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmdl
dFByb2dyYW1pdihwcm9ncmFtT2JqZWN0LCBHcmFwaGljc0NvbnRleHQzRDo6TElOS19TVEFUVVMs
ICZsaW5rZWQpKTsKLSAgICBpZiAoIWxpbmtlZCkgewotICAgICAgICBpZiAoIWNvbnRleHRMb3N0
KGNvbnRleHQpKQotICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbGluayBzaGFkZXIg
cHJvZ3JhbSIpOwotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShw
cm9ncmFtT2JqZWN0KSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSNlbmRpZgotCi0gICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpKTsKLSAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKSk7CiAgICAg
cmV0dXJuIHByb2dyYW1PYmplY3Q7CiB9CiAKK2Jvb2wgUHJvZ3JhbUJpbmRpbmdCYXNlOjpoYXNC
aW5kVW5pZm9ybXNFeHRlbnNpb24oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpIGNvbnN0Cit7
CisgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
OworICAgIHJldHVybiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fYmluZF91bmlm
b3JtX2xvY2F0aW9uIik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oCmluZGV4IGFl
YTI4NTY4OTBkYWYyZDVkNmM0ODQ4MjdmNjUwZjc4NzNhMDExZDcuLjYxNGI2OWM3NGQ4NzUyZmQ4
MTMwZWQ5YjkxMzBhMGM0MTNhNzZkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaApAQCAtNDAsNiAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgflByb2dyYW1CaW5kaW5nQmFzZSgpOwogCiAgICAgdm9pZCBp
bml0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0
IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpOworICAgIHZvaWQgbGluayhHcmFwaGljc0NvbnRleHQz
RCopOwogICAgIHZvaWQgY2xlYW51cChHcmFwaGljc0NvbnRleHQzRCopOwogCiAgICAgdW5zaWdu
ZWQgcHJvZ3JhbSgpIGNvbnN0IHsgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOyByZXR1cm4gbV9wcm9n
cmFtOyB9CkBAIC00OCw5ICs0OSwxMiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAKICAgICB1bnNp
Z25lZCBsb2FkU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgdHlwZSwgY29uc3Qg
U3RyaW5nJiBzaGFkZXJTb3VyY2UpOwotICAgIHVuc2lnbmVkIGNyZWF0ZVNoYWRlclByb2dyYW0o
R3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlclNvdXJjZSwgY29u
c3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgdW5zaWduZWQgY3JlYXRlU2hh
ZGVyUHJvZ3JhbShHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHZlcnRleFNoYWRlciwgdW5z
aWduZWQgZnJhZ21lbnRTaGFkZXIpOworICAgIGJvb2wgaGFzQmluZFVuaWZvcm1zRXh0ZW5zaW9u
KEdyYXBoaWNzQ29udGV4dDNEKikgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBtX3Byb2dyYW07Cisg
ICAgdW5zaWduZWQgbV92ZXJ0ZXhTaGFkZXI7CisgICAgdW5zaWduZWQgbV9mcmFnbWVudFNoYWRl
cjsKICAgICBib29sIG1faW5pdGlhbGl6ZWQ7CiB9OwogCkBAIC02OCw4ICs3MiwyMCBAQCBwdWJs
aWM6CiAgICAgICAgIEFTU0VSVChtX3Byb2dyYW0pOwogICAgICAgICBBU1NFUlQoIW1faW5pdGlh
bGl6ZWQpOwogCi0gICAgICAgIG1fdmVydGV4U2hhZGVyLmluaXQoY29udGV4dCwgbV9wcm9ncmFt
KTsKLSAgICAgICAgbV9mcmFnbWVudFNoYWRlci5pbml0KGNvbnRleHQsIG1fcHJvZ3JhbSk7Cisg
ICAgICAgIGJvb2wgdXNlQmluZFVuaWZvcm1zID0gUHJvZ3JhbUJpbmRpbmdCYXNlOjpoYXNCaW5k
VW5pZm9ybXNFeHRlbnNpb24oY29udGV4dCk7CisKKyAgICAgICAgLy8gTmVlZCB0byBiaW5kIHVu
aWZvcm1zIGJlZm9yZSBsaW5raW5nCisgICAgICAgIGlmICghdXNlQmluZFVuaWZvcm1zKQorICAg
ICAgICAgICAgUHJvZ3JhbUJpbmRpbmdCYXNlOjpsaW5rKGNvbnRleHQpOworCisgICAgICAgIGlu
dCBiYXNlVW5pZm9ybUluZGV4ID0gMDsKKyAgICAgICAgbV92ZXJ0ZXhTaGFkZXIuaW5pdChjb250
ZXh0LCBtX3Byb2dyYW0sIHVzZUJpbmRVbmlmb3JtcywgJmJhc2VVbmlmb3JtSW5kZXgpOworICAg
ICAgICBtX2ZyYWdtZW50U2hhZGVyLmluaXQoY29udGV4dCwgbV9wcm9ncmFtLCB1c2VCaW5kVW5p
Zm9ybXMsICZiYXNlVW5pZm9ybUluZGV4KTsKKworICAgICAgICAvLyBMaW5rIGFmdGVyIGJpbmRp
bmcgdW5pZm9ybXMKKyAgICAgICAgaWYgKHVzZUJpbmRVbmlmb3JtcykKKyAgICAgICAgICAgIFBy
b2dyYW1CaW5kaW5nQmFzZTo6bGluayhjb250ZXh0KTsKKwogICAgICAgICBtX2luaXRpYWxpemVk
ID0gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcAppbmRleCA2ZWQ2ZjRhOGU0
MTk2NDMyMDIyYzU2NjY2OGQ1ZGQ4YzE5YTM0MDMxLi42NzFlZjRhMTNmNGFiOGQwYzZjYmQ4NzFj
OGU4ZjllOTgyYjc4NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCkBAIC0yOSw2ICsyOSw4
IEBACiAKICNpbmNsdWRlICJTaGFkZXJDaHJvbWl1bS5oIgogCisjaW5jbHVkZSAiRXh0ZW5zaW9u
czNELmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogCkBAIC0zNywx
NCArMzksNDAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgeworCitzdGF0
aWMgdm9pZCBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgY29uc3QgY2hhcioqIHNoYWRlclVuaWZvcm1zLCBHQzNE
c2l6ZWkgY291bnQsIEdDM0RzaXplaSBtYXhMb2NhdGlvbnMsIEdDM0RpbnQgKmxvY2F0aW9ucywg
Ym9vbCB1c2VCaW5kVW5pZm9ybXMsIEdDM0RpbnQgKmJhc2VVbmlmb3JtSW5kZXgpCit7CisgICAg
RXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25z
M0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgZm9yIChHQzNEc2l6
ZWkgdW5pZm9ybUluZGV4ID0gMDsgdW5pZm9ybUluZGV4IDwgY291bnQ7IHVuaWZvcm1JbmRleCAr
KykgeworICAgICAgICBpZiAodW5pZm9ybUluZGV4ID49IG1heExvY2F0aW9ucykKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAodXNlQmluZFVuaWZvcm1zKSB7CisgICAgICAgICAg
ICBsb2NhdGlvbnNbdW5pZm9ybUluZGV4XSA9ICgqYmFzZVVuaWZvcm1JbmRleCkrKzsKKyAgICAg
ICAgICAgIGV4dGVuc2lvbnMtPmJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShwcm9ncmFtLCBs
b2NhdGlvbnNbdW5pZm9ybUluZGV4XSwgc2hhZGVyVW5pZm9ybXNbdW5pZm9ybUluZGV4XSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbG9jYXRpb25zW3VuaWZvcm1JbmRleF0gPSBjb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXNbdW5pZm9ybUlu
ZGV4XSk7CisgICAgfQorfQorCit9CisKIFZlcnRleFNoYWRlclBvc1RleDo6VmVydGV4U2hhZGVy
UG9zVGV4KCkKICAgICA6IG1fbWF0cml4TG9jYXRpb24oLTEpCiB7CiB9CiAKLXZvaWQgVmVydGV4
U2hhZGVyUG9zVGV4Ojppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBw
cm9ncmFtKQordm9pZCBWZXJ0ZXhTaGFkZXJQb3NUZXg6OmluaXQoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJh
c2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJtYXRyaXgiLAorICAgIH07CisgICAgR0Mz
RGludCBsb2NhdGlvbnNbMV07CisKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250
ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlm
b3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2VCaW5kVW5p
Zm9ybXMsIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGxvY2F0
aW9uc1swXTsKICAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTcw
LDExICs5OCwyMCBAQCBWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoOjpWZXJ0ZXhTaGFkZXJQ
b3NUZXhZVVZTdHJldGNoKCkKIHsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJl
dGNoOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQor
dm9pZCBWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoOjppbml0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBi
YXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIG1feVdpZHRoU2NhbGVGYWN0
b3JMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAieV93aWR0
aFNjYWxlRmFjdG9yIik7Ci0gICAgbV91dldpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiA9IGNvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidXZfd2lkdGhTY2FsZUZhY3RvciIpOwor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAibWF0
cml4IiwKKyAgICAgICAgInlfd2lkdGhTY2FsZUZhY3RvciIsCisgICAgICAgICJ1dl93aWR0aFNj
YWxlRmFjdG9yIiwKKyAgICB9OworICAgIEdDM0RpbnQgbG9jYXRpb25zWzNdOworCisgICAgZ2V0
UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMs
IFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0
aW9ucyksIGxvY2F0aW9ucywgdXNlQmluZFVuaWZvcm1zLCBiYXNlVW5pZm9ybUluZGV4KTsKKwor
ICAgIG1fbWF0cml4TG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CisgICAgbV95V2lkdGhTY2FsZUZh
Y3RvckxvY2F0aW9uID0gbG9jYXRpb25zWzFdOworICAgIG1fdXZXaWR0aFNjYWxlRmFjdG9yTG9j
YXRpb24gPSBsb2NhdGlvbnNbMl07CiAgICAgQVNTRVJUKG1fbWF0cml4TG9jYXRpb24gIT0gLTEg
JiYgbV95V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uICE9IC0xICYmIG1fdXZXaWR0aFNjYWxlRmFj
dG9yTG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC0xMDMsOSArMTQwLDE2IEBAIFZlcnRleFNoYWRl
clBvczo6VmVydGV4U2hhZGVyUG9zKCkKIHsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFkZXJQb3M6Omlu
aXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZl
cnRleFNoYWRlclBvczo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQg
cHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsK
LSAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICJtYXRyaXgiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9
IHsKKyAgICAgICAgIm1hdHJpeCIsCisgICAgfTsKKyAgICBHQzNEaW50IGxvY2F0aW9uc1sxXTsK
KworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRl
clVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xF
TkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzZUJpbmRVbmlmb3JtcywgYmFzZVVuaWZvcm1J
bmRleCk7CisKKyAgICBtX21hdHJpeExvY2F0aW9uID0gbG9jYXRpb25zWzBdOwogICAgIEFTU0VS
VChtX21hdHJpeExvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtMTI3LDEwICsxNzEsMTggQEAgVmVy
dGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjpWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0oKQog
ewogfQogCi12b2lkIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6aW5pdChHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgVmVydGV4U2hhZGVyUG9z
VGV4VHJhbnNmb3JtOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBw
cm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewot
ICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bSwgIm1hdHJpeCIpOwotICAgIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleFRyYW5zZm9ybSIpOworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAibWF0cml4IiwKKyAgICAgICAg
InRleFRyYW5zZm9ybSIsCisgICAgfTsKKyAgICBHQzNEaW50IGxvY2F0aW9uc1syXTsKKworICAg
IGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZv
cm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChs
b2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzZUJpbmRVbmlmb3JtcywgYmFzZVVuaWZvcm1JbmRleCk7
CisKKyAgICBtX21hdHJpeExvY2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fdGV4VHJhbnNm
b3JtTG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CiAgICAgQVNTRVJUKG1fbWF0cml4TG9jYXRpb24g
IT0gLTEgJiYgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTE2OSwxMCAr
MjIxLDE4IEBAIFN0cmluZyBWZXJ0ZXhTaGFkZXJQb3NUZXhJZGVudGl0eTo6Z2V0U2hhZGVyU3Ry
aW5nKCkgY29uc3QKICAgICApOwogfQogCi12b2lkIFZlcnRleFNoYWRlclF1YWQ6OmluaXQoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNo
YWRlclF1YWQ6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dy
YW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAg
bV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAi
bWF0cml4Iik7Ci0gICAgbV9wb2ludExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJwb2ludCIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlm
b3Jtc1tdID0geworICAgICAgICAibWF0cml4IiwKKyAgICAgICAgInBvaW50WzBdIiwKKyAgICB9
OworICAgIEdDM0RpbnQgbG9jYXRpb25zWzJdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2Nh
dGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgo
c2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywg
dXNlQmluZFVuaWZvcm1zLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fbWF0cml4TG9jYXRp
b24gPSBsb2NhdGlvbnNbMF07CisgICAgbV9wb2ludExvY2F0aW9uID0gbG9jYXRpb25zWzFdOwog
ICAgIEFTU0VSVChtX21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1fcG9pbnRMb2NhdGlvbiAhPSAt
MSk7CiB9CiAKQEAgLTIwNSwxMSArMjY1LDIwIEBAIFZlcnRleFNoYWRlclRpbGU6OlZlcnRleFNo
YWRlclRpbGUoKQogewogfQogCi12b2lkIFZlcnRleFNoYWRlclRpbGU6OmluaXQoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclRp
bGU6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJv
b2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9tYXRy
aXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4
Iik7Ci0gICAgbV9wb2ludExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJwb2ludCIpOwotICAgIG1fdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInZlcnRleFRleFRyYW5zZm9ybSIpOwor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAibWF0
cml4IiwKKyAgICAgICAgInBvaW50WzBdIiwKKyAgICAgICAgInZlcnRleFRleFRyYW5zZm9ybSIs
CisgICAgfTsKKyAgICBHQzNEaW50IGxvY2F0aW9uc1szXTsKKworICAgIGdldFByb2dyYW1Vbmlm
b3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlf
TEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2Nh
dGlvbnMsIHVzZUJpbmRVbmlmb3JtcywgYmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX21hdHJp
eExvY2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fcG9pbnRMb2NhdGlvbiA9IGxvY2F0aW9u
c1sxXTsKKyAgICBtX3ZlcnRleFRleFRyYW5zZm9ybUxvY2F0aW9uID0gbG9jYXRpb25zWzJdOwog
ICAgIEFTU0VSVChtX21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1fcG9pbnRMb2NhdGlvbiAhPSAt
MSAmJiBtX3ZlcnRleFRleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtMjQyLDEw
ICszMTEsMTggQEAgVmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OlZlcnRleFNoYWRlclZpZGVv
VHJhbnNmb3JtKCkKIHsKIH0KIAotYm9vbCBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6aW5p
dChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK2Jvb2wgVmVy
dGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3Jt
SW5kZXgpCiB7Ci0gICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtLCAibWF0cml4Iik7Ci0gICAgbV90ZXhNYXRyaXhMb2NhdGlvbiA9IGNvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4TWF0cml4Iik7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJtYXRyaXgiLAorICAg
ICAgICAidGV4TWF0cml4IiwKKyAgICB9OworICAgIEdDM0RpbnQgbG9jYXRpb25zWzJdOworCisg
ICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5p
Zm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RI
KGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNlQmluZFVuaWZvcm1zLCBiYXNlVW5pZm9ybUluZGV4
KTsKKworICAgIG1fbWF0cml4TG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CisgICAgbV90ZXhNYXRy
aXhMb2NhdGlvbiA9IGxvY2F0aW9uc1sxXTsKICAgICByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbiAh
PSAtMSAmJiBtX3RleE1hdHJpeExvY2F0aW9uICE9IC0xOwogfQogCkBAIC0yNzEsMTEgKzM0OCwx
OCBAQCBGcmFnbWVudFRleEFscGhhQmluZGluZzo6RnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcoKQog
ewogfQogCi12b2lkIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nOjppbml0KEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFRleEFscGhhQmlu
ZGluZzo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwg
Ym9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX3Nh
bXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190
ZXh0dXJlIik7Ci0gICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJhbHBoYSIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlm
b3Jtc1tdID0geworICAgICAgICAic190ZXh0dXJlIiwKKyAgICAgICAgImFscGhhIiwKKyAgICB9
OworICAgIEdDM0RpbnQgbG9jYXRpb25zWzJdOwogCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2Nh
dGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgo
c2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywg
dXNlQmluZFVuaWZvcm1zLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fc2FtcGxlckxvY2F0
aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fYWxwaGFMb2NhdGlvbiA9IGxvY2F0aW9uc1sxXTsK
ICAgICBBU1NFUlQobV9zYW1wbGVyTG9jYXRpb24gIT0gLTEgJiYgbV9hbHBoYUxvY2F0aW9uICE9
IC0xKTsKIH0KIApAQCAtMjg0LDEwICszNjgsMTYgQEAgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5n
OjpGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmcoKQogewogfQogCi12b2lkIEZyYWdtZW50VGV4T3Bh
cXVlQmluZGluZzo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJv
Z3JhbSkKK3ZvaWQgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjppbml0KEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50
KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUiKTsKKyAgICBzdGF0aWMgY29u
c3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgInNfdGV4dHVyZSIsCisgICAg
fTsKKyAgICBHQzNEaW50IGxvY2F0aW9uc1sxXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9j
YXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RI
KHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMs
IHVzZUJpbmRVbmlmb3JtcywgYmFzZVVuaWZvcm1JbmRleCk7CiAKKyAgICBtX3NhbXBsZXJMb2Nh
dGlvbiA9IGxvY2F0aW9uc1swXTsKICAgICBBU1NFUlQobV9zYW1wbGVyTG9jYXRpb24gIT0gLTEp
OwogfQogCkBAIC0zMDYsMTAgKzM5NiwxNiBAQCBTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4
RmxpcEFscGhhOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogICAgICk7CiB9CiAKLWJvb2wgRnJh
Z21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQorYm9vbCBGcmFnbWVudFNoYWRlck9FU0ltYWdlRXh0ZXJu
YWw6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJv
b2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9zYW1w
bGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4
dHVyZSIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAg
ICAgICAic190ZXh0dXJlIiwKKyAgICB9OworICAgIEdDM0RpbnQgbG9jYXRpb25zWzFdOwogCisg
ICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5p
Zm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RI
KGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNlQmluZFVuaWZvcm1zLCBiYXNlVW5pZm9ybUluZGV4
KTsKKworICAgIG1fc2FtcGxlckxvY2F0aW9uID0gbG9jYXRpb25zWzBdOwogICAgIHJldHVybiBt
X3NhbXBsZXJMb2NhdGlvbiAhPSAtMTsKIH0KIApAQCAtNDM2LDEyICs1MzIsMjAgQEAgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4QWxwaGFBQTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSgpCiB7
CiB9CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQTo6aW5pdChHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRTaGFkZXJS
R0JBVGV4QWxwaGFBQTo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQg
cHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsK
LSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAic190ZXh0dXJlIik7Ci0gICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBoYSIpOwotICAgIG1fZWRnZUxvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJlZGdlIik7CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJzX3RleHR1cmUiLAorICAg
ICAgICAiYWxwaGEiLAorICAgICAgICAiZWRnZVswXSIsCisgICAgfTsKKyAgICBHQzNEaW50IGxv
Y2F0aW9uc1szXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHBy
b2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwg
V1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzZUJpbmRVbmlmb3Jtcywg
YmFzZVVuaWZvcm1JbmRleCk7CiAKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGxvY2F0aW9uc1sw
XTsKKyAgICBtX2FscGhhTG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV9lZGdlTG9jYXRp
b24gPSBsb2NhdGlvbnNbMl07CiAgICAgQVNTRVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0xICYm
IG1fYWxwaGFMb2NhdGlvbiAhPSAtMSAmJiBtX2VkZ2VMb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAg
LTQ3OCwxMyArNTgyLDIyIEBAIEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZzo6RnJhZ21l
bnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFRleENsYW1w
QWxwaGFBQUJpbmRpbmc6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVk
IHByb2dyYW0pCit2b2lkIEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZzo6aW5pdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5p
Zm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9
IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7Ci0gICAg
bV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJh
bHBoYSIpOwotICAgIG1fZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiZnJhZ21lbnRUZXhUcmFuc2Zvcm0iKTsKLSAgICBt
X2VkZ2VMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiZWRn
ZSIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAg
ICAic190ZXh0dXJlIiwKKyAgICAgICAgImFscGhhIiwKKyAgICAgICAgImZyYWdtZW50VGV4VHJh
bnNmb3JtIiwKKyAgICAgICAgImVkZ2VbMF0iLAorICAgIH07CisgICAgR0MzRGludCBsb2NhdGlv
bnNbNF07CiAKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFt
LCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9B
UlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2VCaW5kVW5pZm9ybXMsIGJhc2VV
bmlmb3JtSW5kZXgpOworCisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBsb2NhdGlvbnNbMF07Cisg
ICAgbV9hbHBoYUxvY2F0aW9uID0gbG9jYXRpb25zWzFdOworICAgIG1fZnJhZ21lbnRUZXhUcmFu
c2Zvcm1Mb2NhdGlvbiA9IGxvY2F0aW9uc1syXTsKKyAgICBtX2VkZ2VMb2NhdGlvbiA9IGxvY2F0
aW9uc1szXTsKICAgICBBU1NFUlQobV9zYW1wbGVyTG9jYXRpb24gIT0gLTEgJiYgbV9hbHBoYUxv
Y2F0aW9uICE9IC0xICYmIG1fZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAtMSAmJiBt
X2VkZ2VMb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTU0OSwxMSArNjYyLDIwIEBAIEZyYWdtZW50
U2hhZGVyUkdCQVRleEFscGhhTWFzazo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrKCkK
IHsKIH0KIAotdm9pZCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6OmluaXQoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIEZyYWdtZW50U2hh
ZGVyUkdCQVRleEFscGhhTWFzazo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5z
aWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRl
eCkKIHsKLSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAic190ZXh0dXJlIik7Ci0gICAgbV9tYXNrU2FtcGxlckxvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX21hc2siKTsKLSAgICBtX2FscGhh
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJz
X3RleHR1cmUiLAorICAgICAgICAic19tYXNrIiwKKyAgICAgICAgImFscGhhIiwKKyAgICB9Owor
ICAgIEdDM0RpbnQgbG9jYXRpb25zWzNdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlv
bnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hh
ZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNl
QmluZFVuaWZvcm1zLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fc2FtcGxlckxvY2F0aW9u
ID0gbG9jYXRpb25zWzBdOworICAgIG1fbWFza1NhbXBsZXJMb2NhdGlvbiA9IGxvY2F0aW9uc1sx
XTsKKyAgICBtX2FscGhhTG9jYXRpb24gPSBsb2NhdGlvbnNbMl07CiAgICAgQVNTRVJUKG1fc2Ft
cGxlckxvY2F0aW9uICE9IC0xICYmIG1fbWFza1NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX2Fs
cGhhTG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC01ODIsMTIgKzcwNCwyMiBAQCBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYU1hc2tBQTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUEo
KQogewogfQogCi12b2lkIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBOjppbml0KEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVu
dFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQTo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZv
cm1JbmRleCkKIHsKLSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7Ci0gICAgbV9tYXNrU2FtcGxlckxvY2F0aW9u
ID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX21hc2siKTsKLSAgICBt
X2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFs
cGhhIik7Ci0gICAgbV9lZGdlTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbSwgImVkZ2UiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNb
XSA9IHsKKyAgICAgICAgInNfdGV4dHVyZSIsCisgICAgICAgICJzX21hc2siLAorICAgICAgICAi
YWxwaGEiLAorICAgICAgICAiZWRnZVswXSIsCisgICAgfTsKKyAgICBHQzNEaW50IGxvY2F0aW9u
c1s0XTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0s
IHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FS
UkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzZUJpbmRVbmlmb3JtcywgYmFzZVVu
aWZvcm1JbmRleCk7CisKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAg
ICBtX21hc2tTYW1wbGVyTG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV9hbHBoYUxvY2F0
aW9uID0gbG9jYXRpb25zWzJdOworICAgIG1fZWRnZUxvY2F0aW9uID0gbG9jYXRpb25zWzNdOwog
ICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX21hc2tTYW1wbGVyTG9jYXRp
b24gIT0gLTEgJiYgbV9hbHBoYUxvY2F0aW9uICE9IC0xICYmIG1fZWRnZUxvY2F0aW9uICE9IC0x
KTsKIH0KIApAQCAtNjI4LDE0ICs3NjAsMjYgQEAgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbzo6RnJh
Z21lbnRTaGFkZXJZVVZWaWRlbygpCiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJZVVZWaWRl
bzo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3Zv
aWQgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbzo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZv
cm1JbmRleCkKIHsKLSAgICBtX3lUZXh0dXJlTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgInlfdGV4dHVyZSIpOwotICAgIG1fdVRleHR1cmVMb2NhdGlvbiA9
IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidV90ZXh0dXJlIik7Ci0gICAg
bV92VGV4dHVyZUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICJ2X3RleHR1cmUiKTsKLSAgICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7Ci0gICAgbV9jY01hdHJpeExvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJjY19tYXRyaXgiKTsKLSAgICBtX3l1
dkFkakxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ5dXZf
YWRqIik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAg
ICAgICJ5X3RleHR1cmUiLAorICAgICAgICAidV90ZXh0dXJlIiwKKyAgICAgICAgInZfdGV4dHVy
ZSIsCisgICAgICAgICJhbHBoYSIsCisgICAgICAgICJjY19tYXRyaXgiLAorICAgICAgICAieXV2
X2FkaiIsCisgICAgfTsKKyAgICBHQzNEaW50IGxvY2F0aW9uc1s2XTsKKworICAgIGdldFByb2dy
YW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZf
QVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMp
LCBsb2NhdGlvbnMsIHVzZUJpbmRVbmlmb3JtcywgYmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBt
X3lUZXh0dXJlTG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CisgICAgbV91VGV4dHVyZUxvY2F0aW9u
ID0gbG9jYXRpb25zWzFdOworICAgIG1fdlRleHR1cmVMb2NhdGlvbiA9IGxvY2F0aW9uc1syXTsK
KyAgICBtX2FscGhhTG9jYXRpb24gPSBsb2NhdGlvbnNbM107CisgICAgbV9jY01hdHJpeExvY2F0
aW9uID0gbG9jYXRpb25zWzRdOworICAgIG1feXV2QWRqTG9jYXRpb24gPSBsb2NhdGlvbnNbNV07
CiAKICAgICBBU1NFUlQobV95VGV4dHVyZUxvY2F0aW9uICE9IC0xICYmIG1fdVRleHR1cmVMb2Nh
dGlvbiAhPSAtMSAmJiBtX3ZUZXh0dXJlTG9jYXRpb24gIT0gLTEKICAgICAgICAgICAgJiYgbV9h
bHBoYUxvY2F0aW9uICE9IC0xICYmIG1fY2NNYXRyaXhMb2NhdGlvbiAhPSAtMSAmJiBtX3l1dkFk
akxvY2F0aW9uICE9IC0xKTsKQEAgLTY3MSw5ICs4MTUsMTYgQEAgRnJhZ21lbnRTaGFkZXJDb2xv
cjo6RnJhZ21lbnRTaGFkZXJDb2xvcigpCiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJDb2xv
cjo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3Zv
aWQgRnJhZ21lbnRTaGFkZXJDb2xvcjo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
dW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1J
bmRleCkKIHsKLSAgICBtX2NvbG9yTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgImNvbG9yIik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZv
cm1zW10gPSB7CisgICAgICAgICJjb2xvciIsCisgICAgfTsKKyAgICBHQzNEaW50IGxvY2F0aW9u
c1sxXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0s
IHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FS
UkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzZUJpbmRVbmlmb3JtcywgYmFzZVVu
aWZvcm1JbmRleCk7CisKKyAgICBtX2NvbG9yTG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CiAgICAg
QVNTRVJUKG1fY29sb3JMb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTY5NiwxMSArODQ3LDIwIEBA
IEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjpGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZCgp
CiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OmluaXQoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIEZyYWdtZW50U2hhZGVy
Q2hlY2tlcmJvYXJkOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBw
cm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewot
ICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAiYWxwaGEiKTsKLSAgICBtX3RleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFuc2Zvcm0iKTsKLSAgICBtX2ZyZXF1ZW5jeUxv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJmcmVxdWVuY3ki
KTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAg
ImFscGhhIiwKKyAgICAgICAgInRleFRyYW5zZm9ybSIsCisgICAgICAgICJmcmVxdWVuY3kiLAor
ICAgIH07CisgICAgR0MzRGludCBsb2NhdGlvbnNbM107CisKKyAgICBnZXRQcm9ncmFtVW5pZm9y
bUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xF
TkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRp
b25zLCB1c2VCaW5kVW5pZm9ybXMsIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9hbHBoYUxv
Y2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gPSBsb2Nh
dGlvbnNbMV07CisgICAgbV9mcmVxdWVuY3lMb2NhdGlvbiA9IGxvY2F0aW9uc1syXTsKICAgICBB
U1NFUlQobV9hbHBoYUxvY2F0aW9uICE9IC0xICYmIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gIT0g
LTEgJiYgbV9mcmVxdWVuY3lMb2NhdGlvbiAhPSAtMSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5o
CmluZGV4IDkyNzdlY2NhNTBjMzZkMTg5ZDhlNjFkNzJlNWZmMzdhOGUzNTdjODQuLjY4ODhhZGJi
NmQ3ZDgwODA0YjFlYmVlOGIzYjlkOGU3ZjAxYjBhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaApA
QCAtMzksNyArMzksNyBAQCBjbGFzcyBWZXJ0ZXhTaGFkZXJQb3NUZXggewogcHVibGljOgogICAg
IFZlcnRleFNoYWRlclBvc1RleCgpOwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNE
KiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1J
bmRleCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50IG1h
dHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQpAQCAtNTIs
NyArNTIsNyBAQCBjbGFzcyBWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoIHsKIHB1YmxpYzoK
ICAgICBWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoKCk7CiAKLSAgICB2b2lkIGluaXQoR3Jh
cGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoR3JhcGhp
Y3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50
KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7
CiAKICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0
aW9uOyB9CkBAIC02OSw3ICs2OSw3IEBAIGNsYXNzIFZlcnRleFNoYWRlclBvcyB7CiBwdWJsaWM6
CiAgICAgVmVydGV4U2hhZGVyUG9zKCk7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0
M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0Qq
LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9y
bUluZGV4KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQg
bWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CkBAIC04
MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFZlcnRleFNoYWRlclBvc1RleElkZW50aXR5
IHsKIHB1YmxpYzoKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBw
cm9ncmFtKSB7IH0KKyAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBw
cm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4KSB7IH0K
ICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiB9OwogCkBAIC04OCw3ICs4OCw3
IEBAIGNsYXNzIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSB7CiBwdWJsaWM6CiAgICAgVmVy
dGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtKCk7CiAKLSAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250
ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0
M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3JtcywgaW50KiBiYXNlVW5p
Zm9ybUluZGV4KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBp
bnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CkBA
IC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyUXVhZCB7CiBwdWJsaWM6CiAgICAg
VmVydGV4U2hhZGVyUXVhZCgpOwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5z
aWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRl
eCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50IG1hdHJp
eExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQpAQCAtMTE4LDcg
KzExOCw3IEBAIGNsYXNzIFZlcnRleFNoYWRlclRpbGUgewogcHVibGljOgogICAgIFZlcnRleFNo
YWRlclRpbGUoKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVk
IHByb2dyYW0pOworICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHBy
b2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAg
IFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBtYXRyaXhMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KQEAgLTEzNSw3ICsxMzUsNyBA
QCBjbGFzcyBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSB7CiBwdWJsaWM6CiAgICAgVmVydGV4
U2hhZGVyVmlkZW9UcmFuc2Zvcm0oKTsKIAotICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQz
RCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQzRCos
IHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3Jt
SW5kZXgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBt
YXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KQEAgLTE1
MCw3ICsxNTAsNyBAQCBjbGFzcyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CiBwdWJsaWM6CiAg
ICAgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcoKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0Nv
bnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRl
eHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VV
bmlmb3JtSW5kZXgpOwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9h
bHBoYUxvY2F0aW9uOyB9CiAgICAgaW50IGVkZ2VMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIC0x
OyB9CiAgICAgaW50IGZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biAtMTsgfQpAQCAtMTY1LDcgKzE2NSw3IEBAIGNsYXNzIEZyYWdtZW50VGV4T3BhcXVlQmluZGlu
ZyB7CiBwdWJsaWM6CiAgICAgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nKCk7CiAKLSAgICB2b2lk
IGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGlu
aXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzZUJpbmRVbmlm
b3JtcywgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIC0xOyB9CiAgICAgaW50IGVkZ2VMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IC0xOyB9CiAgICAgaW50IGZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiAtMTsgfQpAQCAtMjIxLDcgKzIyMSw3IEBAIHB1YmxpYzoKIGNsYXNzIEZyYWdtZW50U2hh
ZGVyT0VTSW1hZ2VFeHRlcm5hbCA6IHB1YmxpYyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CiBw
dWJsaWM6CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwotICAgIGJvb2wgaW5p
dChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIGJvb2wgaW5pdChH
cmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1z
LCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogcHJpdmF0ZToKICAgICBpbnQgbV9zYW1wbGVyTG9j
YXRpb247CiB9OwpAQCAtMjMwLDcgKzIzMCw3IEBAIGNsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRl
eEFscGhhQUEgewogcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUEoKTsK
IAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOwor
ICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wg
dXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIFN0cmluZyBnZXRT
aGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CkBAIC0yNDcsNyArMjQ3LDcgQEAgY2xhc3MgRnJhZ21l
bnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nIHsKIHB1YmxpYzoKICAgICBGcmFnbWVudFRleENsYW1w
QWxwaGFBQUJpbmRpbmcoKTsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2ln
bmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgp
OwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYUxvY2F0aW9u
OyB9CiAgICAgaW50IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlckxv
Y2F0aW9uOyB9CiAgICAgaW50IGZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb247IH0KQEAgLTI3Niw3ICsyNzYs
NyBAQCBwdWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrKCk7CiAgICAg
U3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCi0gICAgdm9pZCBpbml0KEdyYXBoaWNz
Q29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KEdyYXBoaWNzQ29u
dGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2VCaW5kVW5pZm9ybXMsIGludCogYmFz
ZVVuaWZvcm1JbmRleCk7CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2FscGhhTG9jYXRpb247IH0KICAgICBpbnQgc2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9zYW1wbGVyTG9jYXRpb247IH0KICAgICBpbnQgbWFza1NhbXBsZXJMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbWFza1NhbXBsZXJMb2NhdGlvbjsgfQpAQCAtMjkyLDcgKzI5Miw3IEBA
IHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQSgpOwogICAgIFN0
cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0Nv
bnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRl
eHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VV
bmlmb3JtSW5kZXgpOwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9h
bHBoYUxvY2F0aW9uOyB9CiAgICAgaW50IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2FtcGxlckxvY2F0aW9uOyB9CiAgICAgaW50IG1hc2tTYW1wbGVyTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX21hc2tTYW1wbGVyTG9jYXRpb247IH0KQEAgLTMxMCw3ICszMTAsNyBAQCBw
dWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbygpOwogICAgIFN0cmluZyBnZXRTaGFk
ZXJTdHJpbmcoKSBjb25zdDsKIAotICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2ln
bmVkIHByb2dyYW0sIGJvb2wgdXNlQmluZFVuaWZvcm1zLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgp
OwogCiAgICAgaW50IHlUZXh0dXJlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3lUZXh0dXJl
TG9jYXRpb247IH0KICAgICBpbnQgdVRleHR1cmVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dVRleHR1cmVMb2NhdGlvbjsgfQpAQCAtMzMzLDcgKzMzMyw3IEBAIHB1YmxpYzoKICAgICBGcmFn
bWVudFNoYWRlckNvbG9yKCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0Owog
Ci0gICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7Cisg
ICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1
c2VCaW5kVW5pZm9ybXMsIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgaW50IGNvbG9yTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbG9yTG9jYXRpb247IH0KIAogcHJpdmF0ZToKQEAg
LTM0NSw3ICszNDUsNyBAQCBwdWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQo
KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluaXQo
R3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoR3Jh
cGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzZUJpbmRVbmlmb3Jtcywg
aW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQogICAgIGludCB0ZXhUcmFuc2Zvcm1Mb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4VHJhbnNmb3JtTG9jYXRpb247IH0KICAgICBpbnQgZnJlcXVl
bmN5TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZyZXF1ZW5jeUxvY2F0aW9uOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150285</attachid>
            <date>2012-06-29 18:00:00 -0700</date>
            <delta_ts>2012-07-02 15:47:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90217-20120629180000.patch</filename>
            <type>text/plain</type>
            <size>53128</size>
            <attacher>alexst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4MmU5ZDRiOGI5MTlm
YWYyM2JlOWE2MWExOTAxZWNlYWJlN2QzZDk0Li4wZTlmOWE0N2NhZjQzNDU5OTE5ZDRmYzgxNjQ2
YTUyYmYyZjk2ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNi0yOSAg
QWxleCBTYWtoYXJ0Y2hvdWsgIDxhbGV4c3RAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21p
dW1dIEF2b2lkIGNhbGxpbmcgZ2V0VW5pZm9ybUxvY2F0aW9uPz8oKSBpbiB0aGUgY29tcG9zaXRv
ciBzdGFydHVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDIxNworCisgICAgICAgIFRoaXMgY2hhbmdlIHJlcGxhY2VzIGdldFVuaWZvcm1Mb2NhdGlv
biBjYWxscyBpbiB0aGUgY2hyb21lIGNvbXBvc2l0b3Igd2l0aCBiaW5kVW5pZm9ybUxvY2F0aW9u
CisgICAgICAgIHRvIHNwZWVkIHVwIHN0YXJ0dXAgdGltZS4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJHcmFwaGlj
c0NvbnRleHQzRC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6Ymlu
ZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNKToKKwogMjAxMi0wNi0yOCAgQWRyaWVubmUgV2Fsa2Vy
ICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gU3BsaXQgV2ViU2Nyb2xs
YmFyIGludG8gV2ViUGx1Z2luU2Nyb2xsYmFyIGFuZCBXZWJTY3JvbGxiYXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1ZjY0YWM1ZDRiNzhhYmY0M2EwNWNkZjVjZjllODIwN2UxMDllZTU0Li5mNjA4YzE1OTM0OWUw
MGRlMGMzMWI2ZTMwODdiZGM3M2QwNDk5YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTMgQEAK
KzIwMTItMDYtMjkgIEFsZXggU2FraGFydGNob3VrICA8YWxleHN0QGdvb2dsZS5jb20+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBBdm9pZCBjYWxsaW5nIGdldFVuaWZvcm1Mb2NhdGlvbj8/KCkgaW4g
dGhlIGNvbXBvc2l0b3Igc3RhcnR1cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTAyMTcKKworICAgICAgICBUaGlzIGNoYW5nZSByZXBsYWNlcyBnZXRV
bmlmb3JtTG9jYXRpb24gY2FsbHMgaW4gdGhlIGNocm9tZSBjb21wb3NpdG9yIHdpdGggYmluZFVu
aWZvcm1Mb2NhdGlvbgorICAgICAgICB0byBzcGVlZCB1cCBzdGFydHVwIHRpbWUuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAo
T09QUyEpCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp0aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnNvbGlkQ29sb3JQcm9ncmFtKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQcm9ncmFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc1Byb2dyYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3Jh
bUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFz
c01hc2tQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
cmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp0aWxlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OnRpbGVQcm9ncmFtT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1BQSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZUFBKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVByb2dyYW0p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0ZXh0dXJlUHJvZ3Jh
bUZsaXApOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0ZXh0dXJl
SU9TdXJmYWNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OnZpZGVvWVVWUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OnZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBy
b2dyYW1CaW5kaW5nQmFzZTo6UHJvZ3JhbUJpbmRpbmdCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlByb2dyYW1CaW5kaW5nQmFzZTo6flByb2dyYW1CaW5kaW5nQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpQcm9ncmFtQmluZGluZ0Jhc2U6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jh
bUJpbmRpbmdCYXNlOjpsaW5rKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oOgorICAgICAgICAoUHJv
Z3JhbUJpbmRpbmdCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5nOjppbml0
aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXg6OmluaXQpOgor
ICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6aW5pdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3M6OmluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6
OlZlcnRleFNoYWRlclF1YWQ6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVy
VGlsZTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9y
bTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleEFscGhhQmluZGluZzo6aW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmc6OmluaXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjppbml0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE6OmluaXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nOjppbml0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6aW5pdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQTo6aW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlcllVVlZpZGVvOjppbml0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyQ29sb3I6OmluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OmluaXQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmg6CisgICAgICAgIChWZXJ0ZXhT
aGFkZXJQb3NUZXgpOgorICAgICAgICAoVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCk6Cisg
ICAgICAgIChWZXJ0ZXhTaGFkZXJQb3MpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVy
UG9zVGV4SWRlbnRpdHk6OmluaXQpOgorICAgICAgICAoVmVydGV4U2hhZGVyUG9zVGV4VHJhbnNm
b3JtKToKKyAgICAgICAgKFZlcnRleFNoYWRlclF1YWQpOgorICAgICAgICAoVmVydGV4U2hhZGVy
VGlsZSk6CisgICAgICAgIChWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSk6CisgICAgICAgIChG
cmFnbWVudFRleEFscGhhQmluZGluZyk6CisgICAgICAgIChGcmFnbWVudFRleE9wYXF1ZUJpbmRp
bmcpOgorICAgICAgICAoRnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsKToKKyAgICAgICAg
KEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUEpOgorICAgICAgICAoRnJhZ21lbnRUZXhDbGFt
cEFscGhhQUFCaW5kaW5nKToKKyAgICAgICAgKEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFz
ayk6CisgICAgICAgIChGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQSk6CisgICAgICAg
IChGcmFnbWVudFNoYWRlcllVVlZpZGVvKToKKyAgICAgICAgKEZyYWdtZW50U2hhZGVyQ29sb3Ip
OgorICAgICAgICAoRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjcmVhdGUpOgorICAg
ICAgICAoQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXM6OkxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMpOgorICAg
ICAgICAoTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyk6CisKIDIwMTItMDYtMjkgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxMjE1MjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNTc3ZDcwMjg5YjhmZDU3OWQ3ODFiZTU0
MDk4NzA3N2U5OTNkN2IyNS4uMmRkNzExNTYzOGNmNTZjOTU5N2E3MDlhNTNhOTA1NWNlYTQyYmVh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGlj
c0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaApAQCAtNDEzLDYgKzQxMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZW5kUXVlcnlFWFQoV0dDM0RlbnVtIHRhcmdldCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGdldFF1ZXJ5aXZFWFQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RlbnVtIHBuYW1lLCBXR0MzRGlu
dCogcGFyYW1zKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZFWFQoV2Vi
R0xJZCBxdWVyeSwgV0dDM0RlbnVtIHBuYW1lLCBXR0MzRHVpbnQqIHBhcmFtcykgeyB9CisgICAg
dmlydHVhbCB2b2lkIGJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShXZWJHTElkIHByb2dyYW0s
IFdHQzNEaW50IGxvY2F0aW9uLCBjb25zdCBXR0MzRGNoYXIqIHVuaWZvcm0pIHsgfQogCiAgICAg
Ly8gR0xfQ0hST01JVU1fY29weV90ZXh0dXJlCiAgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJl
Q0hST01JVU0oV0dDM0RlbnVtIHRhcmdldCwgV0dDM0R1aW50IHNvdXJjZUlkLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggNDZjOWIzNjIxNWE3MzU5MDQ4MjVmOWY2
NDI0OGM4ZGZhMjE5ODQxNS4uZmQ1ZmU2NzgyMDdmY2U3ZWNmZDJkYjU5ZDgwMTMwOWJiYmMzNjdh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0yMjcsNiArMjI3
LDggQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUoKQogICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9U
RVhUVVJFX1NJWkUsICZtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSkpOwogICAgIG1fY2Fw
YWJpbGl0aWVzLmJlc3RUZXh0dXJlRm9ybWF0ID0gUGxhdGZvcm1Db2xvcjo6YmVzdFRleHR1cmVG
b3JtYXQobV9jb250ZXh0LCBleHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODgiKSk7CiAKKyAgICBtX2NhcGFiaWxpdGllcy51c2luZ0JpbmRVbmlmb3JtID0g
ZXh0ZW5zaW9ucy5jb250YWlucygiR0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uIik7
CisKICAgICBpZiAoIWluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtMTQyNCw3ICsxNDI2LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkKICAgICBtX2ltcGxUZXh0dXJlTWFuYWdlciA9IFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdw
b3J0U2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYXBh
YmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwotICAgIG1fdGV4dHVyZUNvcGllciA9IEFjY2VsZXJh
dGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1fY29udGV4dCk7CisgICAgbV90ZXh0dXJlQ29waWVy
ID0gQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjcmVhdGUobV9jb250ZXh0LCBtX2NhcGFiaWxp
dGllcy51c2luZ0JpbmRVbmlmb3JtKTsKICAgICBpZiAobV90ZXh0dXJlVXBsb2FkZXJTZXR0aW5n
ID09IFRocm90dGxlZFVwbG9hZGVyKQogICAgICAgICBtX3RleHR1cmVVcGxvYWRlciA9IFRocm90
dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKG1fY29udGV4dCk7CiAgICAgZWxzZQpAQCAtMTQ0
Nyw3ICsxNDQ5LDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlQ2hlY2tlcmJv
YXJkUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWwKICAgICAgICAgbV90aWxlQ2hl
Y2tlcmJvYXJkUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSht
X2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGlsZUNoZWNrZXJib2FyZFByb2dyYW0tPmluaXRpYWxp
emVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNoZWNrZXJib2FyZFByb2dyYW06OmluaXRhbGl6ZSIpOwotICAgICAgICBtX3RpbGVDaGVj
a2VyYm9hcmRQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCk7CisgICAgICAgIG1fdGlsZUNo
ZWNrZXJib2FyZFByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2NhcGFiaWxpdGllcy51
c2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZUNoZWNrZXJib2FyZFBy
b2dyYW0uZ2V0KCk7CiB9CkBAIC0xNDU4LDcgKzE0NjAsNyBAQCBjb25zdCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OlNvbGlkQ29sb3JQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNvbGlk
Q29sbwogICAgICAgICBtX3NvbGlkQ29sb3JQcm9ncmFtID0gYWRvcHRQdHIobmV3IFNvbGlkQ29s
b3JQcm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlmICghbV9zb2xpZENvbG9yUHJvZ3JhbS0+aW5p
dGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6c29saWRDb2xvclByb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV9zb2xp
ZENvbG9yUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3NvbGlkQ29s
b3JQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9jYXBhYmlsaXRpZXMudXNpbmdCaW5k
VW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3NvbGlkQ29sb3JQcm9ncmFtLmdldCgpOwog
fQpAQCAtMTQ2OSw3ICsxNDcxLDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpIZWFk
c1VwRGlzcGxheVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHMKICAgICAgICAg
bV9oZWFkc1VwRGlzcGxheVByb2dyYW0gPSBhZG9wdFB0cihuZXcgSGVhZHNVcERpc3BsYXlQcm9n
cmFtKG1fY29udGV4dCkpOwogICAgIGlmICghbV9oZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRp
YWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hy
b21pdW06OmhlYWRzVXBEaXNwbGF5UHJvZ3JhbTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX2hl
YWRzVXBEaXNwbGF5UHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX2hl
YWRzVXBEaXNwbGF5UHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1fY2FwYWJpbGl0aWVz
LnVzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV9oZWFkc1VwRGlzcGxheVBy
b2dyYW0uZ2V0KCk7CiB9CkBAIC0xNDc5LDcgKzE0ODEsNyBAQCBjb25zdCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OlJlbmRlclBhc3NQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRl
clBhcwogICAgIEFTU0VSVChtX3JlbmRlclBhc3NQcm9ncmFtKTsKICAgICBpZiAoIW1fcmVuZGVy
UGFzc1Byb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIs
ICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NQcm9ncmFtOjppbml0aWFsaXplIik7
Ci0gICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAg
ICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1fY2FwYWJp
bGl0aWVzLnVzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5kZXJQYXNz
UHJvZ3JhbS5nZXQoKTsKIH0KQEAgLTE0OTAsNyArMTQ5Miw3IEBAIGNvbnN0IExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6UmVuZGVyUGFzc1Byb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpy
ZW5kZXJQCiAgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5k
ZXJQYXNzUHJvZ3JhbUFBKG1fY29udGV4dCkpOwogICAgIGlmICghbV9yZW5kZXJQYXNzUHJvZ3Jh
bUFBLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbUFBOjppbml0aWFsaXplIik7Ci0gICAg
ICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAg
ICBtX3JlbmRlclBhc3NQcm9ncmFtQUEtPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2NhcGFiaWxp
dGllcy51c2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyUGFzc1By
b2dyYW1BQS5nZXQoKTsKIH0KQEAgLTE1MDEsNyArMTUwMyw3IEBAIGNvbnN0IExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6UmVuZGVyUGFzc01hc2tQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnJlbmRlCiAgICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtID0gYWRvcHRQdHIobmV3IFJl
bmRlclBhc3NNYXNrUHJvZ3JhbShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fcmVuZGVyUGFzc01h
c2tQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAi
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzTWFza1Byb2dyYW06OmluaXRpYWxpemUi
KTsKLSAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0
KTsKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0
LCBtX2NhcGFiaWxpdGllcy51c2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1f
cmVuZGVyUGFzc01hc2tQcm9ncmFtLmdldCgpOwogfQpAQCAtMTUxMiw3ICsxNTE0LDcgQEAgY29u
c3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzTWFza1Byb2dyYW1BQSogTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyZW4KICAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQSA9
IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzTWFza1Byb2dyYW1BQShtX2NvbnRleHQpKTsKICAgICBp
ZiAoIW1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEtPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAg
VFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NNYXNr
UHJvZ3JhbUFBOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFt
QUEtPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dy
YW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1fY2FwYWJpbGl0aWVzLnVzaW5nQmluZFVuaWZv
cm0pOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS5nZXQoKTsK
IH0KQEAgLTE1MjIsNyArMTUyNCw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGls
ZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW0oKQogICAgIEFTU0VS
VChtX3RpbGVQcm9ncmFtKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW0tPmluaXRpYWxpemVkKCkp
IHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRp
bGVQcm9ncmFtOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fdGlsZVByb2dyYW0tPmluaXRpYWxp
emUobV9jb250ZXh0KTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRl
eHQsIG1fY2FwYWJpbGl0aWVzLnVzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4g
bV90aWxlUHJvZ3JhbS5nZXQoKTsKIH0KQEAgLTE1MzIsNyArMTUzNCw3IEBAIGNvbnN0IExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1PcGFxdWUqIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dGlsZVByb2dyCiAgICAgQVNTRVJUKG1fdGlsZVByb2dyYW1PcGFxdWUpOwogICAgIGlmICgh
bV90aWxlUHJvZ3JhbU9wYXF1ZS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVO
VDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1PcGFxdWU6OmluaXRp
YWxpemUiKTsKLSAgICAgICAgbV90aWxlUHJvZ3JhbU9wYXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRl
eHQpOworICAgICAgICBtX3RpbGVQcm9ncmFtT3BhcXVlLT5pbml0aWFsaXplKG1fY29udGV4dCwg
bV9jYXBhYmlsaXRpZXMudXNpbmdCaW5kVW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3Rp
bGVQcm9ncmFtT3BhcXVlLmdldCgpOwogfQpAQCAtMTU0Myw3ICsxNTQ1LDcgQEAgY29uc3QgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlUHJvZ3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnRpbGVQcm9ncmFtQUEKICAgICAgICAgbV90aWxlUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IFRp
bGVQcm9ncmFtQUEobV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3RpbGVQcm9ncmFtQUEtPmluaXRp
YWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hy
b21pdW06OnRpbGVQcm9ncmFtQUE6OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV90aWxlUHJvZ3Jh
bUFBLT5pbml0aWFsaXplKG1fY29udGV4dCk7CisgICAgICAgIG1fdGlsZVByb2dyYW1BQS0+aW5p
dGlhbGl6ZShtX2NvbnRleHQsIG1fY2FwYWJpbGl0aWVzLnVzaW5nQmluZFVuaWZvcm0pOwogICAg
IH0KICAgICByZXR1cm4gbV90aWxlUHJvZ3JhbUFBLmdldCgpOwogfQpAQCAtMTU1NCw3ICsxNTU2
LDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlUHJvZ3JhbVN3aXp6bGUqIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2cKICAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6
bGUgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1Td2l6emxlKG1fY29udGV4dCkpOwogICAgIGlm
ICghbV90aWxlUHJvZ3JhbVN3aXp6bGUtPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0Vf
RVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZTo6
aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3RpbGVQcm9ncmFtU3dpenpsZS0+aW5pdGlhbGl6ZSht
X2NvbnRleHQpOworICAgICAgICBtX3RpbGVQcm9ncmFtU3dpenpsZS0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQsIG1fY2FwYWJpbGl0aWVzLnVzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1
cm4gbV90aWxlUHJvZ3JhbVN3aXp6bGUuZ2V0KCk7CiB9CkBAIC0xNTY1LDcgKzE1NjcsNyBAQCBj
b25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlRpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZSogTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp0aQogICAgICAgICBtX3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1
ZSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUobV9jb250ZXh0KSk7CiAg
ICAgaWYgKCFtX3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZS0+aW5pdGlhbGl6ZWQoKSkgewogICAg
ICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dy
YW1Td2l6emxlT3BhcXVlOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fdGlsZVByb2dyYW1Td2l6
emxlT3BhcXVlLT5pbml0aWFsaXplKG1fY29udGV4dCk7CisgICAgICAgIG1fdGlsZVByb2dyYW1T
d2l6emxlT3BhcXVlLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9jYXBhYmlsaXRpZXMudXNpbmdC
aW5kVW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1
ZS5nZXQoKTsKIH0KQEAgLTE1NzYsNyArMTU3OCw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6VGlsZVByb2dyYW1Td2l6emxlQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVBy
CiAgICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlQUEgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dy
YW1Td2l6emxlQUEobV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3RpbGVQcm9ncmFtU3dpenpsZUFB
LT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbVN3aXp6bGVBQTo6aW5pdGlhbGl6ZSIpOwotICAgICAg
ICBtX3RpbGVQcm9ncmFtU3dpenpsZUFBLT5pbml0aWFsaXplKG1fY29udGV4dCk7CisgICAgICAg
IG1fdGlsZVByb2dyYW1Td2l6emxlQUEtPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2NhcGFiaWxp
dGllcy51c2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1T
d2l6emxlQUEuZ2V0KCk7CiB9CkBAIC0xNTg3LDcgKzE1ODksNyBAQCBjb25zdCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OlRleHR1cmVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleHR1
cmVQcm9ncgogICAgICAgICBtX3RleHR1cmVQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRleHR1cmVQ
cm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlmICghbV90ZXh0dXJlUHJvZ3JhbS0+aW5pdGlhbGl6
ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dGV4dHVyZVByb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV90ZXh0dXJlUHJvZ3Jh
bS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3RleHR1cmVQcm9ncmFtLT5pbml0
aWFsaXplKG1fY29udGV4dCwgbV9jYXBhYmlsaXRpZXMudXNpbmdCaW5kVW5pZm9ybSk7CiAgICAg
fQogICAgIHJldHVybiBtX3RleHR1cmVQcm9ncmFtLmdldCgpOwogfQpAQCAtMTU5OCw3ICsxNjAw
LDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUZXh0dXJlUHJvZ3JhbUZsaXAqIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVAKICAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbUZs
aXAgPSBhZG9wdFB0cihuZXcgVGV4dHVyZVByb2dyYW1GbGlwKG1fY29udGV4dCkpOwogICAgIGlm
ICghbV90ZXh0dXJlUHJvZ3JhbUZsaXAtPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0Vf
RVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleHR1cmVQcm9ncmFtRmxpcDo6
aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3RleHR1cmVQcm9ncmFtRmxpcC0+aW5pdGlhbGl6ZSht
X2NvbnRleHQpOworICAgICAgICBtX3RleHR1cmVQcm9ncmFtRmxpcC0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQsIG1fY2FwYWJpbGl0aWVzLnVzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1
cm4gbV90ZXh0dXJlUHJvZ3JhbUZsaXAuZ2V0KCk7CiB9CkBAIC0xNjA5LDcgKzE2MTEsNyBAQCBj
b25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlRleHR1cmVJT1N1cmZhY2VQcm9ncmFtKiBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnRleAogICAgICAgICBtX3RleHR1cmVJT1N1cmZhY2VQcm9ncmFt
ID0gYWRvcHRQdHIobmV3IFRleHR1cmVJT1N1cmZhY2VQcm9ncmFtKG1fY29udGV4dCkpOwogICAg
IGlmICghbV90ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAg
ICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZUlPU3Vy
ZmFjZVByb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV90ZXh0dXJlSU9TdXJmYWNlUHJv
Z3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3RleHR1cmVJT1N1cmZhY2VQ
cm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9jYXBhYmlsaXRpZXMudXNpbmdCaW5kVW5p
Zm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3RleHR1cmVJT1N1cmZhY2VQcm9ncmFtLmdldCgp
OwogfQpAQCAtMTYyMCw3ICsxNjIyLDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpW
aWRlb1lVVlByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9ZVVZQcm8KICAgICAg
ICAgbV92aWRlb1lVVlByb2dyYW0gPSBhZG9wdFB0cihuZXcgVmlkZW9ZVVZQcm9ncmFtKG1fY29u
dGV4dCkpOwogICAgIGlmICghbV92aWRlb1lVVlByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAg
ICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvWVVW
UHJvZ3JhbTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3ZpZGVvWVVWUHJvZ3JhbS0+aW5pdGlh
bGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3ZpZGVvWVVWUHJvZ3JhbS0+aW5pdGlhbGl6ZSht
X2NvbnRleHQsIG1fY2FwYWJpbGl0aWVzLnVzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICBy
ZXR1cm4gbV92aWRlb1lVVlByb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNjMxLDcgKzE2MzMsNyBAQCBj
b25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0qIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dgogICAgICAgICBtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dy
YW0gPSBhZG9wdFB0cihuZXcgVmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbShtX2NvbnRleHQpKTsK
ICAgICBpZiAoIW1fdmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewog
ICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c3RyZWFt
VGV4dHVyZVByb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV92aWRlb1N0cmVhbVRleHR1
cmVQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCk7CisgICAgICAgIG1fdmlkZW9TdHJlYW1U
ZXh0dXJlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1fY2FwYWJpbGl0aWVzLnVzaW5n
QmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV92aWRlb1N0cmVhbVRleHR1cmVQcm9n
cmFtLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3BwCmluZGV4IDcyZTQ5ZTI1NWMzMDMx
YzI3NjQwOGI3ODViZGNiZTI3ZGNjZDFmN2MuLmVjOTdiZGVmZjIyMDVjMzE3MGRhOGY1ODQ0NDJk
OTJhYmVhZmFlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHAKQEAgLTQyLDYgKzQyLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBQcm9ncmFtQmluZGluZ0Jhc2U6OlByb2dyYW1CaW5kaW5n
QmFzZSgpCiAgICAgOiBtX3Byb2dyYW0oMCkKKyAgICAsIG1fdmVydGV4U2hhZGVyKDApCisgICAg
LCBtX2ZyYWdtZW50U2hhZGVyKDApCiAgICAgLCBtX2luaXRpYWxpemVkKGZhbHNlKQogewogfQpA
QCAtNTAsNiArNTIsOCBAQCBQcm9ncmFtQmluZGluZ0Jhc2U6On5Qcm9ncmFtQmluZGluZ0Jhc2Uo
KQogewogICAgIC8vIElmIHlvdSBoaXQgdGhlc2UgYXNzZXJ0cywgeW91IGluaXRpYWxpemVkIGJ1
dCBmb3Jnb3QgdG8gY2FsbCBjbGVhbnVwKCkuCiAgICAgQVNTRVJUKCFtX3Byb2dyYW0pOworICAg
IEFTU0VSVCghbV92ZXJ0ZXhTaGFkZXIpOworICAgIEFTU0VSVCghbV9mcmFnbWVudFNoYWRlcik7
CiAgICAgQVNTRVJUKCFtX2luaXRpYWxpemVkKTsKIH0KIApAQCAtNjEsMTAgKzY1LDQ3IEBAIHN0
YXRpYyBib29sIGNvbnRleHRMb3N0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogCiB2
b2lkIFByb2dyYW1CaW5kaW5nQmFzZTo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFk
ZXIpCiB7Ci0gICAgbV9wcm9ncmFtID0gY3JlYXRlU2hhZGVyUHJvZ3JhbShjb250ZXh0LCB2ZXJ0
ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKTsKKyAgICBUUkFDRV9FVkVOVCgiUHJvZ3JhbUJpbmRp
bmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtIiwgdGhpcywgMCk7CisgICAgbV92ZXJ0ZXhTaGFk
ZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVS
LCB2ZXJ0ZXhTaGFkZXIpOworICAgIGlmICghbV92ZXJ0ZXhTaGFkZXIpIHsKKyAgICAgICAgaWYg
KCFjb250ZXh0TG9zdChjb250ZXh0KSkKKyAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGNyZWF0ZSB2ZXJ0ZXggc2hhZGVyIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
X2ZyYWdtZW50U2hhZGVyID0gbG9hZFNoYWRlcihjb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6
RlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNoYWRlcik7CisgICAgaWYgKCFtX2ZyYWdtZW50U2hh
ZGVyKSB7CisgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFkZXIobV92ZXJ0
ZXhTaGFkZXIpKTsKKyAgICAgICAgbV92ZXJ0ZXhTaGFkZXIgPSAwOworICAgICAgICBpZiAoIWNv
bnRleHRMb3N0KGNvbnRleHQpKQorICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3Jl
YXRlIGZyYWdtZW50IHNoYWRlciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9w
cm9ncmFtID0gY3JlYXRlU2hhZGVyUHJvZ3JhbShjb250ZXh0LCBtX3ZlcnRleFNoYWRlciwgbV9m
cmFnbWVudFNoYWRlcik7CiAgICAgQVNTRVJUKG1fcHJvZ3JhbSB8fCBjb250ZXh0TG9zdChjb250
ZXh0KSk7CiB9CiAKK3ZvaWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpsaW5rKFdlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0KQoreworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5saW5rUHJvZ3Jh
bShtX3Byb2dyYW0pKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgaW50IGxpbmtlZCA9IDA7CisgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPmdldFByb2dyYW1pdihtX3Byb2dyYW0sIEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5LX1NUQVRVUywgJmxpbmtlZCkpOworICAgIGlmICghbGlua2VkKSB7CisgICAg
ICAgIGlmICghY29udGV4dExvc3QoY29udGV4dCkpCisgICAgICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBsaW5rIHNoYWRlciBwcm9ncmFtIik7CisgICAgICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5kZWxldGVQcm9ncmFtKG1fcHJvZ3JhbSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCisKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRlU2hhZGVyKG1fdmVydGV4
U2hhZGVyKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0ZVNoYWRlcihtX2ZyYWdt
ZW50U2hhZGVyKSk7CisgICAgbV92ZXJ0ZXhTaGFkZXIgPSAwOworICAgIG1fZnJhZ21lbnRTaGFk
ZXIgPSAwOworfQorCiB2b2lkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y2xlYW51cChXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBtX2luaXRpYWxpemVkID0gZmFsc2U7CkBAIC05
NSwyNCArMTM2LDggQEAgdW5zaWduZWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpsb2FkU2hhZGVyKFdl
YkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZAogICAgIHJldHVybiBzaGFkZXI7
CiB9CiAKLXVuc2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShX
ZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXJT
b3VyY2UsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJTb3VyY2UpCit1bnNpZ25lZCBQcm9n
cmFtQmluZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0oV2ViR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIHVuc2lnbmVkIHZlcnRleFNoYWRlciwgdW5zaWduZWQgZnJhZ21lbnRTaGFkZXIp
CiB7Ci0gICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJQcm9ncmFtQmluZGluZ0Jhc2U6OmNyZWF0ZVNo
YWRlclByb2dyYW0iKTsKLSAgICB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKGNv
bnRleHQsIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVSLCB2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UpOwotICAgIGlmICghdmVydGV4U2hhZGVyKSB7Ci0gICAgICAgIGlmICghY29udGV4dExvc3Qo
Y29udGV4dCkpCi0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgdmVydGV4
IHNoYWRlciIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBmcmFn
bWVudFNoYWRlciA9IGxvYWRTaGFkZXIoY29udGV4dCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZSQUdN
RU5UX1NIQURFUiwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIGlmICghZnJhZ21lbnRTaGFk
ZXIpIHsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhT
aGFkZXIpKTsKLSAgICAgICAgaWYgKCFjb250ZXh0TG9zdChjb250ZXh0KSkKLSAgICAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBmcmFnbWVudCBzaGFkZXIiKTsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotCiAgICAgdW5zaWduZWQgcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQt
PmNyZWF0ZVByb2dyYW0oKTsKICAgICBpZiAoIXByb2dyYW1PYmplY3QpIHsKICAgICAgICAgaWYg
KCFjb250ZXh0TG9zdChjb250ZXh0KSkKQEAgLTEyNywyMCArMTUyLDYgQEAgdW5zaWduZWQgUHJv
Z3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtKFdlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24o
cHJvZ3JhbU9iamVjdCwgR2VvbWV0cnlCaW5kaW5nOjpwb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCks
ICJhX3Bvc2l0aW9uIikpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kQXR0cmliTG9j
YXRpb24ocHJvZ3JhbU9iamVjdCwgR2VvbWV0cnlCaW5kaW5nOjp0ZXhDb29yZEF0dHJpYkxvY2F0
aW9uKCksICJhX3RleENvb3JkIikpOwogCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmxpbmtQ
cm9ncmFtKHByb2dyYW1PYmplY3QpKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgaW50IGxpbmtlZCA9
IDA7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtT2JqZWN0
LCBHcmFwaGljc0NvbnRleHQzRDo6TElOS19TVEFUVVMsICZsaW5rZWQpKTsKLSAgICBpZiAoIWxp
bmtlZCkgewotICAgICAgICBpZiAoIWNvbnRleHRMb3N0KGNvbnRleHQpKQotICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gbGluayBzaGFkZXIgcHJvZ3JhbSIpOwotICAgICAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShwcm9ncmFtT2JqZWN0KSk7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLSNlbmRpZgotCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRl
bGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVs
ZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKSk7CiAgICAgcmV0dXJuIHByb2dyYW1PYmplY3Q7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Byb2dyYW1CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Qcm9ncmFtQmluZGluZy5oCmluZGV4IDM5MDQ4ZjkwMzIwYmFkMjRlYzNjNDlmOTUyZDY5
NGM0MThlN2VlYmUuLjM5NDY0OTU2YTcyNTM1ZGI4N2UyOTMzOTc2NmE0NTk0MDYzOTI3MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dy
YW1CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUHJvZ3JhbUJpbmRpbmcuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgflByb2dy
YW1CaW5kaW5nQmFzZSgpOwogCiAgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250
ZXh0M0QqLCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVu
dFNoYWRlcik7CisgICAgdm9pZCBsaW5rKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsK
ICAgICB2b2lkIGNsZWFudXAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCopOwogCiAgICAg
dW5zaWduZWQgcHJvZ3JhbSgpIGNvbnN0IHsgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOyByZXR1cm4g
bV9wcm9ncmFtOyB9CkBAIC01MCw5ICs1MSwxMSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAKICAg
ICB1bnNpZ25lZCBsb2FkU2hhZGVyKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNp
Z25lZCB0eXBlLCBjb25zdCBTdHJpbmcmIHNoYWRlclNvdXJjZSk7Ci0gICAgdW5zaWduZWQgY3Jl
YXRlU2hhZGVyUHJvZ3JhbShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgU3Ry
aW5nJiB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UpOworICAgIHVuc2lnbmVkIGNyZWF0ZVNoYWRlclByb2dyYW0oV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCosIHVuc2lnbmVkIHZlcnRleFNoYWRlciwgdW5zaWduZWQgZnJhZ21lbnRTaGFk
ZXIpOwogCiAgICAgdW5zaWduZWQgbV9wcm9ncmFtOworICAgIHVuc2lnbmVkIG1fdmVydGV4U2hh
ZGVyOworICAgIHVuc2lnbmVkIG1fZnJhZ21lbnRTaGFkZXI7CiAgICAgYm9vbCBtX2luaXRpYWxp
emVkOwogfTsKIApAQCAtNjQsMTQgKzY3LDI0IEBAIHB1YmxpYzoKICAgICAgICAgUHJvZ3JhbUJp
bmRpbmdCYXNlOjppbml0KGNvbnRleHQsIG1fdmVydGV4U2hhZGVyLmdldFNoYWRlclN0cmluZygp
LCBtX2ZyYWdtZW50U2hhZGVyLmdldFNoYWRlclN0cmluZygpKTsKICAgICB9CiAKLSAgICB2b2lk
IGluaXRpYWxpemUoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICB2
b2lkIGluaXRpYWxpemUoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgYm9v
bCB1c2luZ0JpbmRVbmlmb3JtKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQpOwogICAg
ICAgICBBU1NFUlQobV9wcm9ncmFtKTsKICAgICAgICAgQVNTRVJUKCFtX2luaXRpYWxpemVkKTsK
IAotICAgICAgICBtX3ZlcnRleFNoYWRlci5pbml0KGNvbnRleHQsIG1fcHJvZ3JhbSk7Ci0gICAg
ICAgIG1fZnJhZ21lbnRTaGFkZXIuaW5pdChjb250ZXh0LCBtX3Byb2dyYW0pOworICAgICAgICAv
LyBOZWVkIHRvIGJpbmQgdW5pZm9ybXMgYmVmb3JlIGxpbmtpbmcKKyAgICAgICAgaWYgKCF1c2lu
Z0JpbmRVbmlmb3JtKQorICAgICAgICAgICAgUHJvZ3JhbUJpbmRpbmdCYXNlOjpsaW5rKGNvbnRl
eHQpOworCisgICAgICAgIGludCBiYXNlVW5pZm9ybUluZGV4ID0gMDsKKyAgICAgICAgbV92ZXJ0
ZXhTaGFkZXIuaW5pdChjb250ZXh0LCBtX3Byb2dyYW0sIHVzaW5nQmluZFVuaWZvcm0sICZiYXNl
VW5pZm9ybUluZGV4KTsKKyAgICAgICAgbV9mcmFnbWVudFNoYWRlci5pbml0KGNvbnRleHQsIG1f
cHJvZ3JhbSwgdXNpbmdCaW5kVW5pZm9ybSwgJmJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgICAg
IC8vIExpbmsgYWZ0ZXIgYmluZGluZyB1bmlmb3JtcworICAgICAgICBpZiAodXNpbmdCaW5kVW5p
Zm9ybSkKKyAgICAgICAgICAgIFByb2dyYW1CaW5kaW5nQmFzZTo6bGluayhjb250ZXh0KTsKKwog
ICAgICAgICBtX2luaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVt
LmNwcAppbmRleCAyYTE0MGQxZDc4NWI2NDM5YjMxZTBiMmY4NGYzMjRlNThjZTcwNzg0Li5lMGI3
OTE2YTM3YzI4NWYyNzBiYjk2NzM1ZGY2ZmZlNzAzZDVjYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21p
dW0uY3BwCkBAIC0zOCwxNCArMzgsMzkgQEAgdXNpbmcgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgeworCitzdGF0aWMgdm9p
ZCBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSwgY29uc3QgY2hhcioqIHNoYWRlclVuaWZvcm1zLCBzaXplX3Qg
Y291bnQsIHNpemVfdCBtYXhMb2NhdGlvbnMsIGludCogbG9jYXRpb25zLCBib29sIHVzaW5nQmlu
ZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCkKK3sKKyAgICBmb3IgKHNpemVfdCB1bmlm
b3JtSW5kZXggPSAwOyB1bmlmb3JtSW5kZXggPCBjb3VudDsgdW5pZm9ybUluZGV4ICsrKSB7Cisg
ICAgICAgIGlmICh1bmlmb3JtSW5kZXggPj0gbWF4TG9jYXRpb25zKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGlmICh1c2luZ0JpbmRVbmlmb3JtKSB7CisgICAgICAgICAgICBsb2Nh
dGlvbnNbdW5pZm9ybUluZGV4XSA9ICgqYmFzZVVuaWZvcm1JbmRleCkrKzsKKyAgICAgICAgICAg
IGNvbnRleHQtPmJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShwcm9ncmFtLCBsb2NhdGlvbnNb
dW5pZm9ybUluZGV4XSwgc2hhZGVyVW5pZm9ybXNbdW5pZm9ybUluZGV4XSk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgbG9jYXRpb25zW3VuaWZvcm1JbmRleF0gPSBjb250ZXh0LT5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXNbdW5pZm9ybUluZGV4XSk7Cisg
ICAgfQorfQorCit9CisKIFZlcnRleFNoYWRlclBvc1RleDo6VmVydGV4U2hhZGVyUG9zVGV4KCkK
ICAgICA6IG1fbWF0cml4TG9jYXRpb24oLTEpCiB7CiB9CiAKLXZvaWQgVmVydGV4U2hhZGVyUG9z
VGV4Ojppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFt
KQordm9pZCBWZXJ0ZXhTaGFkZXJQb3NUZXg6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNl
VW5pZm9ybUluZGV4KQogewotICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBz
aGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAibWF0cml4IiwKKyAgICB9OworICAgIGludCBs
b2NhdGlvbnNbMV07CisKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBw
cm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3Jtcyks
IFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlmb3Jt
LCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fbWF0cml4TG9jYXRpb24gPSBsb2NhdGlvbnNb
MF07CiAgICAgQVNTRVJUKG1fbWF0cml4TG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC03MSwxMSAr
OTYsMjAgQEAgVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6VmVydGV4U2hhZGVyUG9zVGV4
WVVWU3RyZXRjaCgpCiB7CiB9CiAKLXZvaWQgVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6
aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3Zv
aWQgVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQq
IGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7Ci0gICAgbV95V2lkdGhTY2FsZUZh
Y3RvckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ5X3dp
ZHRoU2NhbGVGYWN0b3IiKTsKLSAgICBtX3V2V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1dl93aWR0aFNjYWxlRmFjdG9yIik7
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJt
YXRyaXgiLAorICAgICAgICAieV93aWR0aFNjYWxlRmFjdG9yIiwKKyAgICAgICAgInV2X3dpZHRo
U2NhbGVGYWN0b3IiLAorICAgIH07CisgICAgaW50IGxvY2F0aW9uc1szXTsKKworICAgIGdldFBy
b2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBX
VEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlv
bnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisg
ICAgbV9tYXRyaXhMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX3lXaWR0aFNjYWxlRmFj
dG9yTG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV91dldpZHRoU2NhbGVGYWN0b3JMb2Nh
dGlvbiA9IGxvY2F0aW9uc1syXTsKICAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAm
JiBtX3lXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24gIT0gLTEgJiYgbV91dldpZHRoU2NhbGVGYWN0
b3JMb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTEwNCw5ICsxMzgsMTYgQEAgVmVydGV4U2hhZGVy
UG9zOjpWZXJ0ZXhTaGFkZXJQb3MoKQogewogfQogCi12b2lkIFZlcnRleFNoYWRlclBvczo6aW5p
dChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQg
VmVydGV4U2hhZGVyUG9zOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNp
Z25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRl
eCkKIHsKLSAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJtYXRyaXgiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9y
bXNbXSA9IHsKKyAgICAgICAgIm1hdHJpeCIsCisgICAgfTsKKyAgICBpbnQgbG9jYXRpb25zWzFd
OworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hh
ZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlf
TEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5kVW5pZm9ybSwgYmFzZVVuaWZv
cm1JbmRleCk7CisKKyAgICBtX21hdHJpeExvY2F0aW9uID0gbG9jYXRpb25zWzBdOwogICAgIEFT
U0VSVChtX21hdHJpeExvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtMTI4LDEwICsxNjksMTggQEAg
VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjpWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0o
KQogewogfQogCi12b2lkIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6aW5pdChXZWJHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgVmVydGV4U2hh
ZGVyUG9zVGV4VHJhbnNmb3JtOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1
bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1J
bmRleCkKIHsKLSAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBtX3RleFRyYW5zZm9ybUxvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFuc2Zvcm0iKTsKKyAgICBz
dGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgIm1hdHJpeCIs
CisgICAgICAgICJ0ZXhUcmFuc2Zvcm0iLAorICAgIH07CisgICAgaW50IGxvY2F0aW9uc1syXTsK
KworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRl
clVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xF
TkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3Jt
SW5kZXgpOworCisgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX3Rl
eFRyYW5zZm9ybUxvY2F0aW9uID0gbG9jYXRpb25zWzFdOwogICAgIEFTU0VSVChtX21hdHJpeExv
Y2F0aW9uICE9IC0xICYmIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC0x
NzAsMTAgKzIxOSwxOCBAQCBTdHJpbmcgVmVydGV4U2hhZGVyUG9zVGV4SWRlbnRpdHk6OmdldFNo
YWRlclN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFkZXJRdWFkOjpp
bml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9p
ZCBWZXJ0ZXhTaGFkZXJRdWFkOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1
bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1J
bmRleCkKIHsKLSAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBtX3BvaW50TG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInBvaW50Iik7CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJtYXRyaXgiLAorICAgICAgICAicG9p
bnQiLAorICAgIH07CisgICAgaW50IGxvY2F0aW9uc1syXTsKKworICAgIGdldFByb2dyYW1Vbmlm
b3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlf
TEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2Nh
dGlvbnMsIHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9tYXRy
aXhMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX3BvaW50TG9jYXRpb24gPSBsb2NhdGlv
bnNbMV07CiAgICAgQVNTRVJUKG1fbWF0cml4TG9jYXRpb24gIT0gLTEgJiYgbV9wb2ludExvY2F0
aW9uICE9IC0xKTsKIH0KIApAQCAtMjA2LDExICsyNjMsMjAgQEAgVmVydGV4U2hhZGVyVGlsZTo6
VmVydGV4U2hhZGVyVGlsZSgpCiB7CiB9CiAKLXZvaWQgVmVydGV4U2hhZGVyVGlsZTo6aW5pdChX
ZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgVmVy
dGV4U2hhZGVyVGlsZTo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWdu
ZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgp
CiB7Ci0gICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAibWF0cml4Iik7Ci0gICAgbV9wb2ludExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sICJwb2ludCIpOwotICAgIG1fdmVydGV4VGV4VHJhbnNmb3Jt
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInZlcnRleFRl
eFRyYW5zZm9ybSIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0g
eworICAgICAgICAibWF0cml4IiwKKyAgICAgICAgInBvaW50IiwKKyAgICAgICAgInZlcnRleFRl
eFRyYW5zZm9ybSIsCisgICAgfTsKKyAgICBpbnQgbG9jYXRpb25zWzNdOworCisgICAgZ2V0UHJv
Z3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdU
Rl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9u
cyksIGxvY2F0aW9ucywgdXNpbmdCaW5kVW5pZm9ybSwgYmFzZVVuaWZvcm1JbmRleCk7CisKKyAg
ICBtX21hdHJpeExvY2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fcG9pbnRMb2NhdGlvbiA9
IGxvY2F0aW9uc1sxXTsKKyAgICBtX3ZlcnRleFRleFRyYW5zZm9ybUxvY2F0aW9uID0gbG9jYXRp
b25zWzJdOwogICAgIEFTU0VSVChtX21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1fcG9pbnRMb2Nh
dGlvbiAhPSAtMSAmJiBtX3ZlcnRleFRleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xKTsKIH0KIApA
QCAtMjQzLDEwICszMDksMTggQEAgVmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OlZlcnRleFNo
YWRlclZpZGVvVHJhbnNmb3JtKCkKIHsKIH0KIAotYm9vbCBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5z
Zm9ybTo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3Jh
bSkKK2Jvb2wgVmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmluaXQoV2ViR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwg
aW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIG1fdGV4TWF0cml4
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleE1hdHJp
eCIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAg
ICAibWF0cml4IiwKKyAgICAgICAgInRleE1hdHJpeCIsCisgICAgfTsKKyAgICBpbnQgbG9jYXRp
b25zWzJdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3Jh
bSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZf
QVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5kVW5pZm9ybSwgYmFz
ZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX21hdHJpeExvY2F0aW9uID0gbG9jYXRpb25zWzBdOwor
ICAgIG1fdGV4TWF0cml4TG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CiAgICAgcmV0dXJuIG1fbWF0
cml4TG9jYXRpb24gIT0gLTEgJiYgbV90ZXhNYXRyaXhMb2NhdGlvbiAhPSAtMTsKIH0KIApAQCAt
MjcyLDExICszNDYsMTggQEAgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmc6OkZyYWdtZW50VGV4QWxw
aGFCaW5kaW5nKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFRleEFscGhhQmluZGluZzo6aW5pdChX
ZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJh
Z21lbnRUZXhBbHBoYUJpbmRpbmc6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9y
bUluZGV4KQogewotICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUiKTsKLSAgICBtX2FscGhhTG9jYXRpb24gPSBjb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJzX3RleHR1cmUiLAorICAg
ICAgICAiYWxwaGEiLAorICAgIH07CisgICAgaW50IGxvY2F0aW9uc1syXTsKIAorICAgIGdldFBy
b2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBX
VEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlv
bnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisg
ICAgbV9zYW1wbGVyTG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CisgICAgbV9hbHBoYUxvY2F0aW9u
ID0gbG9jYXRpb25zWzFdOwogICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBt
X2FscGhhTG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC0yODUsMTAgKzM2NiwxNiBAQCBGcmFnbWVu
dFRleE9wYXF1ZUJpbmRpbmc6OkZyYWdtZW50VGV4T3BhcXVlQmluZGluZygpCiB7CiB9CiAKLXZv
aWQgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmc6
OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJv
b2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fc2Ft
cGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3Rl
eHR1cmUiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAg
ICAgICAgInNfdGV4dHVyZSIsCisgICAgfTsKKyAgICBpbnQgbG9jYXRpb25zWzFdOworCisgICAg
Z2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9y
bXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxv
Y2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5kVW5pZm9ybSwgYmFzZVVuaWZvcm1JbmRleCk7
CiAKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKICAgICBBU1NFUlQobV9z
YW1wbGVyTG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC0zMDcsMTAgKzM5NCwxNiBAQCBTdHJpbmcg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAog
ICAgICk7CiB9CiAKLWJvb2wgRnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjppbml0KFdl
YkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQorYm9vbCBGcmFn
bWVudFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNl
VW5pZm9ybUluZGV4KQogewotICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hh
ciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgInNfdGV4dHVyZSIsCisgICAgfTsKKyAg
ICBpbnQgbG9jYXRpb25zWzFdOwogCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29u
dGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5p
Zm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5k
VW5pZm9ybSwgYmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGxv
Y2F0aW9uc1swXTsKICAgICByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb24gIT0gLTE7CiB9CiAKQEAg
LTQzNywxMiArNTMwLDIwIEBAIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE6OkZyYWdtZW50
U2hhZGVyUkdCQVRleEFscGhhQUEoKQogewogfQogCi12b2lkIEZyYWdtZW50U2hhZGVyUkdCQVRl
eEFscGhhQUE6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHBy
b2dyYW0pCit2b2lkIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE6OmluaXQoV2ViR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5p
Zm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fc2FtcGxlckxvY2F0aW9uID0g
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUiKTsKLSAgICBt
X2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFs
cGhhIik7Ci0gICAgbV9lZGdlTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbSwgImVkZ2UiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNb
XSA9IHsKKyAgICAgICAgInNfdGV4dHVyZSIsCisgICAgICAgICJhbHBoYSIsCisgICAgICAgICJl
ZGdlIiwKKyAgICB9OworICAgIGludCBsb2NhdGlvbnNbM107CisKKyAgICBnZXRQcm9ncmFtVW5p
Zm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZ
X0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9j
YXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUluZGV4KTsKIAorICAgIG1fc2Ft
cGxlckxvY2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fYWxwaGFMb2NhdGlvbiA9IGxvY2F0
aW9uc1sxXTsKKyAgICBtX2VkZ2VMb2NhdGlvbiA9IGxvY2F0aW9uc1syXTsKICAgICBBU1NFUlQo
bV9zYW1wbGVyTG9jYXRpb24gIT0gLTEgJiYgbV9hbHBoYUxvY2F0aW9uICE9IC0xICYmIG1fZWRn
ZUxvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtNDc5LDEzICs1ODAsMjIgQEAgRnJhZ21lbnRUZXhD
bGFtcEFscGhhQUFCaW5kaW5nOjpGcmFnbWVudFRleENsYW1wQWxwaGFBQUJpbmRpbmcoKQogewog
fQogCi12b2lkIEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZzo6aW5pdChXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRUZXhD
bGFtcEFscGhhQUFCaW5kaW5nOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1
bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1J
bmRleCkKIHsKLSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7Ci0gICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBoYSIpOwotICAgIG1fZnJhZ21lbnRU
ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAiZnJhZ21lbnRUZXhUcmFuc2Zvcm0iKTsKLSAgICBtX2VkZ2VMb2NhdGlvbiA9IGNvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiZWRnZSIpOworICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAic190ZXh0dXJlIiwKKyAgICAgICAg
ImFscGhhIiwKKyAgICAgICAgImZyYWdtZW50VGV4VHJhbnNmb3JtIiwKKyAgICAgICAgImVkZ2Ui
LAorICAgIH07CisgICAgaW50IGxvY2F0aW9uc1s0XTsKIAorICAgIGdldFByb2dyYW1Vbmlmb3Jt
TG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVO
R1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlv
bnMsIHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9zYW1wbGVy
TG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CisgICAgbV9hbHBoYUxvY2F0aW9uID0gbG9jYXRpb25z
WzFdOworICAgIG1fZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGxvY2F0aW9uc1syXTsK
KyAgICBtX2VkZ2VMb2NhdGlvbiA9IGxvY2F0aW9uc1szXTsKICAgICBBU1NFUlQobV9zYW1wbGVy
TG9jYXRpb24gIT0gLTEgJiYgbV9hbHBoYUxvY2F0aW9uICE9IC0xICYmIG1fZnJhZ21lbnRUZXhU
cmFuc2Zvcm1Mb2NhdGlvbiAhPSAtMSAmJiBtX2VkZ2VMb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAg
LTU1MCwxMSArNjYwLDIwIEBAIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6RnJhZ21l
bnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFNoYWRlclJH
QkFUZXhBbHBoYU1hc2s6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2ln
bmVkIHByb2dyYW0pCit2b2lkIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6aW5pdChX
ZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2lu
Z0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9zYW1wbGVyTG9j
YXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVyZSIp
OwotICAgIG1fbWFza1NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAic19tYXNrIik7Ci0gICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBoYSIpOworICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAic190ZXh0dXJlIiwKKyAgICAgICAgInNf
bWFzayIsCisgICAgICAgICJhbHBoYSIsCisgICAgfTsKKyAgICBpbnQgbG9jYXRpb25zWzNdOwor
CisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVy
VW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVO
R1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5kVW5pZm9ybSwgYmFzZVVuaWZvcm1J
bmRleCk7CisKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX21h
c2tTYW1wbGVyTG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV9hbHBoYUxvY2F0aW9uID0g
bG9jYXRpb25zWzJdOwogICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX21h
c2tTYW1wbGVyTG9jYXRpb24gIT0gLTEgJiYgbV9hbHBoYUxvY2F0aW9uICE9IC0xKTsKIH0KIApA
QCAtNTgzLDEyICs3MDIsMjIgQEAgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE6OkZy
YWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYU1hc2tBQTo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNr
QUE6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0s
IGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1f
c2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJz
X3RleHR1cmUiKTsKLSAgICBtX21hc2tTYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfbWFzayIpOwotICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNv
bnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiYWxwaGEiKTsKLSAgICBtX2VkZ2VM
b2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiZWRnZSIpOwor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAic190
ZXh0dXJlIiwKKyAgICAgICAgInNfbWFzayIsCisgICAgICAgICJhbHBoYSIsCisgICAgICAgICJl
ZGdlIiwKKyAgICB9OworICAgIGludCBsb2NhdGlvbnNbNF07CisKKyAgICBnZXRQcm9ncmFtVW5p
Zm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZ
X0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9j
YXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fc2Ft
cGxlckxvY2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fbWFza1NhbXBsZXJMb2NhdGlvbiA9
IGxvY2F0aW9uc1sxXTsKKyAgICBtX2FscGhhTG9jYXRpb24gPSBsb2NhdGlvbnNbMl07CisgICAg
bV9lZGdlTG9jYXRpb24gPSBsb2NhdGlvbnNbM107CiAgICAgQVNTRVJUKG1fc2FtcGxlckxvY2F0
aW9uICE9IC0xICYmIG1fbWFza1NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX2FscGhhTG9jYXRp
b24gIT0gLTEgJiYgbV9lZGdlTG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC02MjksMTQgKzc1OCwy
NiBAQCBGcmFnbWVudFNoYWRlcllVVlZpZGVvOjpGcmFnbWVudFNoYWRlcllVVlZpZGVvKCkKIHsK
IH0KIAotdm9pZCBGcmFnbWVudFNoYWRlcllVVlZpZGVvOjppbml0KFdlYkdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFNoYWRlcllVVlZp
ZGVvOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFt
LCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBt
X3lUZXh0dXJlTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
InlfdGV4dHVyZSIpOwotICAgIG1fdVRleHR1cmVMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAidV90ZXh0dXJlIik7Ci0gICAgbV92VGV4dHVyZUxvY2F0aW9u
ID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ2X3RleHR1cmUiKTsKLSAg
ICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
ImFscGhhIik7Ci0gICAgbV9jY01hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJjY19tYXRyaXgiKTsKLSAgICBtX3l1dkFkakxvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ5dXZfYWRqIik7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJ5X3RleHR1cmUiLAor
ICAgICAgICAidV90ZXh0dXJlIiwKKyAgICAgICAgInZfdGV4dHVyZSIsCisgICAgICAgICJhbHBo
YSIsCisgICAgICAgICJjY19tYXRyaXgiLAorICAgICAgICAieXV2X2FkaiIsCisgICAgfTsKKyAg
ICBpbnQgbG9jYXRpb25zWzZdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29u
dGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5p
Zm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5k
VW5pZm9ybSwgYmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX3lUZXh0dXJlTG9jYXRpb24gPSBs
b2NhdGlvbnNbMF07CisgICAgbV91VGV4dHVyZUxvY2F0aW9uID0gbG9jYXRpb25zWzFdOworICAg
IG1fdlRleHR1cmVMb2NhdGlvbiA9IGxvY2F0aW9uc1syXTsKKyAgICBtX2FscGhhTG9jYXRpb24g
PSBsb2NhdGlvbnNbM107CisgICAgbV9jY01hdHJpeExvY2F0aW9uID0gbG9jYXRpb25zWzRdOwor
ICAgIG1feXV2QWRqTG9jYXRpb24gPSBsb2NhdGlvbnNbNV07CiAKICAgICBBU1NFUlQobV95VGV4
dHVyZUxvY2F0aW9uICE9IC0xICYmIG1fdVRleHR1cmVMb2NhdGlvbiAhPSAtMSAmJiBtX3ZUZXh0
dXJlTG9jYXRpb24gIT0gLTEKICAgICAgICAgICAgJiYgbV9hbHBoYUxvY2F0aW9uICE9IC0xICYm
IG1fY2NNYXRyaXhMb2NhdGlvbiAhPSAtMSAmJiBtX3l1dkFkakxvY2F0aW9uICE9IC0xKTsKQEAg
LTY3Miw5ICs4MTMsMTYgQEAgRnJhZ21lbnRTaGFkZXJDb2xvcjo6RnJhZ21lbnRTaGFkZXJDb2xv
cigpCiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJDb2xvcjo6aW5pdChXZWJHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRTaGFkZXJD
b2xvcjo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3Jh
bSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAg
bV9jb2xvckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJj
b2xvciIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAg
ICAgICAiY29sb3IiLAorICAgIH07CisgICAgaW50IGxvY2F0aW9uc1sxXTsKKworICAgIGdldFBy
b2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBX
VEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlv
bnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisg
ICAgbV9jb2xvckxvY2F0aW9uID0gbG9jYXRpb25zWzBdOwogICAgIEFTU0VSVChtX2NvbG9yTG9j
YXRpb24gIT0gLTEpOwogfQogCkBAIC02OTcsMTEgKzg0NSwyMCBAQCBGcmFnbWVudFNoYWRlckNo
ZWNrZXJib2FyZDo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQoKQogewogfQogCi12b2lkIEZy
YWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6
aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9v
bCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9hbHBo
YUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBoYSIp
OwotICAgIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInRleFRyYW5zZm9ybSIpOwotICAgIG1fZnJlcXVlbmN5TG9jYXRpb24gPSBj
b250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImZyZXF1ZW5jeSIpOworICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAiYWxwaGEiLAor
ICAgICAgICAidGV4VHJhbnNmb3JtIiwKKyAgICAgICAgImZyZXF1ZW5jeSIsCisgICAgfTsKKyAg
ICBpbnQgbG9jYXRpb25zWzNdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29u
dGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5p
Zm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5k
VW5pZm9ybSwgYmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX2FscGhhTG9jYXRpb24gPSBsb2Nh
dGlvbnNbMF07CisgICAgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGxvY2F0aW9uc1sxXTsKKyAg
ICBtX2ZyZXF1ZW5jeUxvY2F0aW9uID0gbG9jYXRpb25zWzJdOwogICAgIEFTU0VSVChtX2FscGhh
TG9jYXRpb24gIT0gLTEgJiYgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAtMSAmJiBtX2ZyZXF1
ZW5jeUxvY2F0aW9uICE9IC0xKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKaW5kZXggYTgwY2Zi
NzI3ZmUyYzkxMjdlM2ZlMTM0Y2RhZjk2MDg5OTUyMTI3Mi4uMDA4NzJlNGE0NzExMGIzNzM3MDYw
NzQ3ZjNmZTVjM2RmM2FiMDhiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCkBAIC00MSw3ICs0MSw3
IEBAIGNsYXNzIFZlcnRleFNoYWRlclBvc1RleCB7CiBwdWJsaWM6CiAgICAgVmVydGV4U2hhZGVy
UG9zVGV4KCk7CiAKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCos
IHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29u
dGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJh
c2VVbmlmb3JtSW5kZXgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAog
ICAgIGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247
IH0KQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCB7
CiBwdWJsaWM6CiAgICAgVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCgpOwogCi0gICAgdm9p
ZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsK
KyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHBy
b2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAg
ICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CkBAIC03MSw3ICs3MSw3IEBA
IGNsYXNzIFZlcnRleFNoYWRlclBvcyB7CiBwdWJsaWM6CiAgICAgVmVydGV4U2hhZGVyUG9zKCk7
CiAKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVk
IHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3Jt
SW5kZXgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBt
YXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KQEAgLTgy
LDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgVmVydGV4U2hhZGVyUG9zVGV4SWRlbnRpdHkg
ewogcHVibGljOgotICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgcHJvZ3JhbSkgeyB9CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCog
YmFzZVVuaWZvcm1JbmRleCkgeyB9CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0
OwogfTsKIApAQCAtOTAsNyArOTAsNyBAQCBjbGFzcyBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zv
cm0gewogcHVibGljOgogICAgIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSgpOwogCi0gICAg
dm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFt
KTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVk
IHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsK
ICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CkBAIC0xMDUsNyArMTA1
LDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyUXVhZCB7CiBwdWJsaWM6CiAgICAgVmVydGV4U2hhZGVy
UXVhZCgpOwogCi0gICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1
bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNl
VW5pZm9ybUluZGV4KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAg
ICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9
CkBAIC0xMjAsNyArMTIwLDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyVGlsZSB7CiBwdWJsaWM6CiAg
ICAgVmVydGV4U2hhZGVyVGlsZSgpOwogCi0gICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5p
Zm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5n
KCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21h
dHJpeExvY2F0aW9uOyB9CkBAIC0xMzcsNyArMTM3LDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyVmlk
ZW9UcmFuc2Zvcm0gewogcHVibGljOgogICAgIFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtKCk7
CiAKLSAgICBib29sIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVk
IHByb2dyYW0pOworICAgIGJvb2wgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3Jt
SW5kZXgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBt
YXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KQEAgLTE1
Miw3ICsxNTIsNyBAQCBjbGFzcyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CiBwdWJsaWM6CiAg
ICAgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcoKTsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5n
QmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgaW50IGFscGhhTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0KICAgICBpbnQgZWRnZUxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gLTE7IH0KICAgICBpbnQgZnJhZ21lbnRUZXhUcmFuc2Zvcm1M
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9CkBAIC0xNjcsNyArMTY3LDcgQEAgY2xhc3Mg
RnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nIHsKIHB1YmxpYzoKICAgICBGcmFnbWVudFRleE9wYXF1
ZUJpbmRpbmcoKTsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
KiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCog
YmFzZVVuaWZvcm1JbmRleCk7CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biAtMTsgfQogICAgIGludCBlZGdlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiAtMTsgfQogICAg
IGludCBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gLTE7IH0K
QEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiBjbGFzcyBGcmFnbWVudFNoYWRlck9FU0ltYWdl
RXh0ZXJuYWwgOiBwdWJsaWMgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgewogcHVibGljOgogICAg
IFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKLSAgICBib29sIGluaXQoV2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIGJvb2wgaW5pdChX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2lu
Z0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogcHJpdmF0ZToKICAgICBpbnQg
bV9zYW1wbGVyTG9jYXRpb247CiB9OwpAQCAtMjMyLDcgKzIzMiw3IEBAIGNsYXNzIEZyYWdtZW50
U2hhZGVyUkdCQVRleEFscGhhQUEgewogcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRl
eEFscGhhQUEoKTsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
KiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCog
YmFzZVVuaWZvcm1JbmRleCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0Owog
CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247
IH0KQEAgLTI0OSw3ICsyNDksNyBAQCBjbGFzcyBGcmFnbWVudFRleENsYW1wQWxwaGFBQUJpbmRp
bmcgewogcHVibGljOgogICAgIEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZygpOwogCi0g
ICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9n
cmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2ln
bmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4
KTsKICAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlv
bjsgfQogICAgIGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJM
b2NhdGlvbjsgfQogICAgIGludCBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uOyB9CkBAIC0yNzgsNyArMjc4
LDcgQEAgcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaygpOwogICAg
IFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0
KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVz
aW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgaW50IGFscGhhTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0KICAgICBpbnQgc2FtcGxl
ckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb247IH0KICAgICBpbnQg
bWFza1NhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1NhbXBsZXJMb2NhdGlv
bjsgfQpAQCAtMjk0LDcgKzI5NCw3IEBAIHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRlclJHQkFU
ZXhBbHBoYU1hc2tBQSgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAot
ICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJv
Z3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNp
Z25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRl
eCk7CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRp
b247IH0KICAgICBpbnQgc2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVy
TG9jYXRpb247IH0KICAgICBpbnQgbWFza1NhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbWFza1NhbXBsZXJMb2NhdGlvbjsgfQpAQCAtMzEyLDcgKzMxMiw3IEBAIHB1YmxpYzoKICAg
ICBGcmFnbWVudFNoYWRlcllVVlZpZGVvKCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygp
IGNvbnN0OwogCi0gICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1
bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNl
VW5pZm9ybUluZGV4KTsKIAogICAgIGludCB5VGV4dHVyZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV95VGV4dHVyZUxvY2F0aW9uOyB9CiAgICAgaW50IHVUZXh0dXJlTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3VUZXh0dXJlTG9jYXRpb247IH0KQEAgLTMzNSw3ICszMzUsNyBAQCBwdWJs
aWM6CiAgICAgRnJhZ21lbnRTaGFkZXJDb2xvcigpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdDsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
KiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCog
YmFzZVVuaWZvcm1JbmRleCk7CiAgICAgaW50IGNvbG9yTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2NvbG9yTG9jYXRpb247IH0KIAogcHJpdmF0ZToKQEAgLTM0Nyw3ICszNDcsNyBAQCBwdWJs
aWM6CiAgICAgRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQoKTsKICAgICBTdHJpbmcgZ2V0U2hh
ZGVyU3RyaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdy
YXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3Jt
LCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CiAgICAgaW50IHRleFRyYW5zZm9ybUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQogICAgIGludCBmcmVx
dWVuY3lMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnJlcXVlbmN5TG9jYXRpb247IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVDb3BpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZUNvcGllci5jcHAKaW5kZXggMjYyNzg0ZDY1OGQ1YTk2ZjNlNjgzZDdkYmMyYTM3Mjlk
NGFiYjU2Yi4uMzMyNDNjODU1MmQzZmEyZTg1MWVmN2Y4NjNhNWRlNjIwMzVjNTA4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNv
cGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZUNvcGllci5jcHAKQEAgLTM0LDggKzM0LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLUFjY2VsZXJhdGVkVGV4dHVyZUNv
cGllcjo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQpCitBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OkFjY2VsZXJhdGVkVGV4dHVy
ZUNvcGllcihXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBib29sIHVzaW5n
QmluZFVuaWZvcm1zKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3VzaW5nQmlu
ZFVuaWZvcm1zKHVzaW5nQmluZFVuaWZvcm1zKQogewogICAgIEFTU0VSVChtX2NvbnRleHQpOwog
ICAgIEdMQyhtX2NvbnRleHQsIG1fZmJvID0gbV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigp
KTsKQEAgLTkwLDcgKzkxLDcgQEAgdm9pZCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNvcHlU
ZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiBjY0NvbnRleHQsIHVuc2lnbmUKICAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6Ok5FQVJFU1QpKTsKIAogICAgIGlmICghbV9ibGl0UHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkK
LSAgICAgICAgbV9ibGl0UHJvZ3JhbS0+aW5pdGlhbGl6ZShjb250ZXh0KTsKKyAgICAgICAgbV9i
bGl0UHJvZ3JhbS0+aW5pdGlhbGl6ZShjb250ZXh0LCBtX3VzaW5nQmluZFVuaWZvcm1zKTsKIAog
ICAgIC8vIFRPRE86IFVzZSBFWFRfZnJhbWVidWZmZXJfYmxpdCBpZiBhdmFpbGFibGUuCiAgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPnVzZVByb2dyYW0obV9ibGl0UHJvZ3JhbS0+cHJvZ3JhbSgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlQ29waWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlQ29waWVyLmgKaW5kZXggNjQ2MTg5YWI2MTg4NDM0ZGQ4ZWQwZTc3MjBjMjZm
MDA4MjgxZDNkNi4uOWEzMThhYzQ0ZDg4YTA4MWQ0M2E0NjQzZTg3MGE4NDAzZDQ0MzdlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZUNvcGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVDb3BpZXIuaApAQCAtNTMsMTYgKzUzLDE2IEBAIHByb3RlY3RlZDoKIGNsYXNzIEFj
Y2VsZXJhdGVkVGV4dHVyZUNvcGllciA6IHB1YmxpYyBUZXh0dXJlQ29waWVyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIpOwogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY3JlYXRlKFdlYktp
dDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8
QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBjcmVhdGUoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtcykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKGNvbnRleHQpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoY29udGV4
dCwgdXNpbmdCaW5kVW5pZm9ybXMpKTsKICAgICB9CiAgICAgdmlydHVhbCB+QWNjZWxlcmF0ZWRU
ZXh0dXJlQ29waWVyKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUoQ0NHcmFwaGlj
c0NvbnRleHQqLCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0dXJl
SWQsIGNvbnN0IEludFNpemUmKTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEFjY2VsZXJh
dGVkVGV4dHVyZUNvcGllcihXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgZXhw
bGljaXQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0
M0QqLCBib29sIHVzaW5nQmluZFVuaWZvcm1zKTsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIFBy
b2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleElkZW50aXR5LCBGcmFnbWVudFNoYWRlclJH
QkFUZXg+IEJsaXRQcm9ncmFtOwpAQCAtNzEsNiArNzEsNyBAQCBwcml2YXRlOgogICAgIFBsYXRm
b3JtM0RPYmplY3QgbV9mYm87CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX3Bvc2l0aW9uQnVmZmVy
OwogICAgIE93blB0cjxCbGl0UHJvZ3JhbT4gbV9ibGl0UHJvZ3JhbTsKKyAgICBib29sIG1fdXNp
bmdCaW5kVW5pZm9ybXM7CiB9OwogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBmZGZlMzk1OGNjMzg2MGY5MDkx
OTQwNDcxMjZhYzdmNjUwZjU1MjFjLi41M2JhNDJmZTI5N2IwZTllOGE4YzJlMDg4ZDI0OTE5ZWIw
NjcwYzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTI1LDYgKzEyNSw3IEBA
IHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIHsKICAgICAgICAgLCB1c2luZ0dwdU1l
bW9yeU1hbmFnZXIoZmFsc2UpCiAgICAgICAgICwgdXNpbmdEaXNjYXJkRnJhbWVidWZmZXIoZmFs
c2UpCiAgICAgICAgICwgdXNpbmdFZ2xJbWFnZShmYWxzZSkKKyAgICAgICAgLCB1c2luZ0JpbmRV
bmlmb3JtKGZhbHNlKQogICAgICAgICAsIG1heFRleHR1cmVTaXplKDApIHsgfQogCiAgICAgR0Mz
RGVudW0gYmVzdFRleHR1cmVGb3JtYXQ7CkBAIC0xMzksNiArMTQwLDcgQEAgc3RydWN0IExheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMgewogICAgIGJvb2wgdXNpbmdHcHVNZW1vcnlNYW5hZ2VyOwog
ICAgIGJvb2wgdXNpbmdEaXNjYXJkRnJhbWVidWZmZXI7CiAgICAgYm9vbCB1c2luZ0VnbEltYWdl
OworICAgIGJvb2wgdXNpbmdCaW5kVW5pZm9ybTsKICAgICBpbnQgbWF4VGV4dHVyZVNpemU7CiB9
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150488</attachid>
            <date>2012-07-02 15:47:39 -0700</date>
            <delta_ts>2012-07-02 21:20:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90217-20120702154738.patch</filename>
            <type>text/plain</type>
            <size>53893</size>
            <attacher>alexst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhYmMzOWZiNTVmM2E1
ZTBlNzU1MTUzZmZjOWQzZjFmM2E5YzZiMTlhLi5hMWUyMGRkYWJjYjk0NDRmODg2NTlmNTczZTU3
MTJiMjBjZjg1MDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNy0wMiAg
QWxleCBTYWtoYXJ0Y2hvdWsgIDxhbGV4c3RAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21p
dW1dIEF2b2lkIGNhbGxpbmcgZ2V0VW5pZm9ybUxvY2F0aW9uPz8oKSBpbiB0aGUgY29tcG9zaXRv
ciBzdGFydHVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGluZyBhbiBlbnRyeSBwb2ludCBmb3IgYmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNLgor
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg6CisgICAg
ICAgIChXZWJHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEOjpiaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0pOgorCiAyMDEyLTA3LTAxICBL
ZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxMjE2NTAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVmOGRkYzdhZDc1NTZiMWM4YjFi
MmI4OWY4YWI1Y2ExNTkyNjYyZC4uNzk4NzY4MmM3OTY1Nzg1YWQ5ZmJiZTA5ODM5Y2EyY2NiMjc1
ZTIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTA3LTAyICBBbGV4IFNha2hh
cnRjaG91ayAgPGFsZXhzdEBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gQXZvaWQg
Y2FsbGluZyBnZXRVbmlmb3JtTG9jYXRpb24/PygpIGluIHRoZSBjb21wb3NpdG9yIHN0YXJ0dXAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMjE3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFu
Z2UgYWxsb3dzIGNocm9tZSBjb21wb3NpdG9yIHRvIGJpbmQgdW5pZm9ybSBsb2NhdGlvbnMgaW5z
dGVhZCBvZiBxdWVyeWluZyAKKyAgICAgICAgdGhlbSBmcm9tIHRoZSBncmFwaGljcyBjb250ZXh0
IGJ5IHVzaW5nIEdMX0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbi4KKworICAgICAgICBU
aGUgZXh0ZW50aW9uIGl0c2VsZiBpcyB0ZXN0ZWQgaW4gY2hyb21pdW0gYW5kIHRoZSBjaGFuZ2Ug
aW4gd2Via2l0IHNpbXBseSBhZGRzCisgICAgICAgIHBsdW1iaW5nIHRvIGFsbG93IGl0cyB1c2Fn
ZS4gRXhpc3RpbmcgcGl4ZWwgdGVzdHMgd291bGQgYmUgYWJsZSB0byB2ZXJpZnkgcHJvcGVyIGJl
aGF2aW91ci4gCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNvbGlkQ29sb3JQcm9ncmFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQcm9n
cmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFz
c1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5k
ZXJQYXNzUHJvZ3JhbUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtT3BhcXVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1BQSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZU9wYXF1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFt
U3dpenpsZUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4
dHVyZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0
ZXh0dXJlUHJvZ3JhbUZsaXApOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp0ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OnZpZGVvWVVWUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OnZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAg
ICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFt
QmluZGluZ0Jhc2U6OlByb2dyYW1CaW5kaW5nQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9n
cmFtQmluZGluZ0Jhc2U6On5Qcm9ncmFtQmluZGluZ0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
UHJvZ3JhbUJpbmRpbmdCYXNlOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5k
aW5nQmFzZTo6bGluayk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
b2dyYW1CaW5kaW5nQmFzZTo6Y2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmlu
ZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jh
bUJpbmRpbmdCYXNlOjpjbGVhbnVwU2hhZGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaDoKKyAgICAgICAgKFByb2dyYW1CaW5kaW5nQmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGluZzo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4Ojppbml0KToKKyAgICAgICAgKFdlYkNv
cmU6OlZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OmluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6VmVydGV4U2hhZGVyUG9zOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRl
clBvc1RleFRyYW5zZm9ybTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJR
dWFkOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclRpbGU6OmluaXQpOgor
ICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUJpbmRpbmc6OmluaXQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjppbml0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbDo6aW5pdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBOjppbml0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZzo6aW5pdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6OmluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE6OmluaXQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJZVVZWaWRlbzo6aW5pdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudFNoYWRlckNvbG9yOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50
U2hhZGVyQ2hlY2tlcmJvYXJkOjppbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgorICAgICAgICAoVmVydGV4U2hhZGVyUG9zVGV4KToK
KyAgICAgICAgKFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2gpOgorICAgICAgICAoVmVydGV4
U2hhZGVyUG9zKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleElkZW50aXR5
Ojppbml0KToKKyAgICAgICAgKFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSk6CisgICAgICAg
IChWZXJ0ZXhTaGFkZXJRdWFkKToKKyAgICAgICAgKFZlcnRleFNoYWRlclRpbGUpOgorICAgICAg
ICAoVmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm0pOgorICAgICAgICAoRnJhZ21lbnRUZXhBbHBo
YUJpbmRpbmcpOgorICAgICAgICAoRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nKToKKyAgICAgICAg
KEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbCk6CisgICAgICAgIChGcmFnbWVudFNoYWRl
clJHQkFUZXhBbHBoYUFBKToKKyAgICAgICAgKEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGlu
Zyk6CisgICAgICAgIChGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2spOgorICAgICAgICAo
RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUEpOgorICAgICAgICAoRnJhZ21lbnRTaGFk
ZXJZVVZWaWRlbyk6CisgICAgICAgIChGcmFnbWVudFNoYWRlckNvbG9yKToKKyAgICAgICAgKEZy
YWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVk
VGV4dHVyZUNvcGllcjo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKToKKyAgICAgICAgKEFjY2VsZXJh
dGVkVGV4dHVyZUNvcGllcik6CisKIDIwMTItMDctMDEgIEphbWVzIFJvYmluc29uICA8amFtZXNy
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIxNjM1
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGlj
c0NvbnRleHQzRC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGlj
c0NvbnRleHQzRC5oCmluZGV4IDU3N2Q3MDI4OWI4ZmQ1NzlkNzgxYmU1NDA5ODcwNzdlOTkzZDdi
MjUuLjQ0YzIwNjcxOWFmMThkOGE2MWIyZDQxNzZmOWUzZGRhOTU2ZjgyYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAor
KysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNE
LmgKQEAgLTQxNCw2ICs0MTQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5
aXZFWFQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RlbnVtIHBuYW1lLCBXR0MzRGludCogcGFyYW1z
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZFWFQoV2ViR0xJZCBxdWVy
eSwgV0dDM0RlbnVtIHBuYW1lLCBXR0MzRHVpbnQqIHBhcmFtcykgeyB9CiAKKyAgICAvLyBHTF9D
SFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24KKyAgICB2aXJ0dWFsIHZvaWQgYmluZFVuaWZv
cm1Mb2NhdGlvbkNIUk9NSVVNKFdlYkdMSWQgcHJvZ3JhbSwgV0dDM0RpbnQgbG9jYXRpb24sIGNv
bnN0IFdHQzNEY2hhciogdW5pZm9ybSkgeyB9CisKICAgICAvLyBHTF9DSFJPTUlVTV9jb3B5X3Rl
eHR1cmUKICAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmVDSFJPTUlVTShXR0MzRGVudW0gdGFy
Z2V0LCBXR0MzRHVpbnQgc291cmNlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV0dDM0R1aW50IGRlc3RJZCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBpbnRlcm5h
bEZvcm1hdCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA3
YzgxODFkMzAyNTBkNjRmOTVkODRiYzFmOTQyYTljYTZhODczOTg3Li5kZGQ3ZDUxNTMzZTVlODI4
MGUwY2JhZDAzYTM4MjRhMGMwNGFmZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKQEAgLTE2NCw2ICsxNjQsNyBAQCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVy
UmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsCiAgICAgLCBtX2RlZmF1
bHRSZW5kZXJQYXNzKDApCiAgICAgLCBtX2lzVmlld3BvcnRDaGFuZ2VkKGZhbHNlKQogICAgICwg
bV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKGZhbHNlKQorICAgICwgbV9pc1VzaW5nQmluZFVuaWZv
cm0oZmFsc2UpCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKICAgICAsIG1fdGV4dHVyZVVwbG9hZGVy
U2V0dGluZyh0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQogewpAQCAtMjI3LDYgKzIyOCw4IEBAIGJv
b2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKCkKICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVEVYVFVSRV9T
SVpFLCAmbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpKTsKICAgICBtX2NhcGFiaWxpdGll
cy5iZXN0VGV4dHVyZUZvcm1hdCA9IFBsYXRmb3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9ybWF0KG1f
Y29udGV4dCwgZXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4
ODg4IikpOwogCisgICAgbV9pc1VzaW5nQmluZFVuaWZvcm0gPSBleHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24iKTsKKwogICAgIGlmICghaW5pdGlh
bGl6ZVNoYXJlZE9iamVjdHMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNDI5LDcg
KzE0MzIsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9i
amVjdHMoKQogICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdl
cjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJl
U2l6ZSk7Ci0gICAgbV90ZXh0dXJlQ29waWVyID0gQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpj
cmVhdGUobV9jb250ZXh0KTsKKyAgICBtX3RleHR1cmVDb3BpZXIgPSBBY2NlbGVyYXRlZFRleHR1
cmVDb3BpZXI6OmNyZWF0ZShtX2NvbnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAgICBp
ZiAobV90ZXh0dXJlVXBsb2FkZXJTZXR0aW5nID09IFRocm90dGxlZFVwbG9hZGVyKQogICAgICAg
ICBtX3RleHR1cmVVcGxvYWRlciA9IFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKG1f
Y29udGV4dCk7CiAgICAgZWxzZQpAQCAtMTQ1Miw3ICsxNDU1LDcgQEAgY29uc3QgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp0aWwKICAgICAgICAgbV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSA9IGFkb3B0UHRyKG5l
dyBUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGlsZUNo
ZWNrZXJib2FyZFByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQw
KCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OmNoZWNrZXJib2FyZFByb2dyYW06OmluaXRh
bGl6ZSIpOwotICAgICAgICBtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtLT5pbml0aWFsaXplKG1f
Y29udGV4dCk7CisgICAgICAgIG1fdGlsZUNoZWNrZXJib2FyZFByb2dyYW0tPmluaXRpYWxpemUo
bV9jb250ZXh0LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3Rp
bGVDaGVja2VyYm9hcmRQcm9ncmFtLmdldCgpOwogfQpAQCAtMTQ2Myw3ICsxNDY2LDcgQEAgY29u
c3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpTb2xpZENvbG9yUHJvZ3JhbSogTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpzb2xpZENvbG8KICAgICAgICAgbV9zb2xpZENvbG9yUHJvZ3JhbSA9IGFkb3B0
UHRyKG5ldyBTb2xpZENvbG9yUHJvZ3JhbShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fc29saWRD
b2xvclByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIs
ICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnNvbGlkQ29sb3JQcm9ncmFtOjppbml0aWFsaXplIik7
Ci0gICAgICAgIG1fc29saWRDb2xvclByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAg
ICAgICAgbV9zb2xpZENvbG9yUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNVc2lu
Z0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fc29saWRDb2xvclByb2dyYW0uZ2V0
KCk7CiB9CkBAIC0xNDc0LDcgKzE0NzcsNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OkhlYWRzVXBEaXNwbGF5UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpoZWFkcwogICAg
ICAgICBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBIZWFkc1VwRGlzcGxh
eVByb2dyYW0obV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS0+
aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQcm9ncmFtOjppbml0aWFsaXplIik7Ci0gICAgICAg
IG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCk7CisgICAgICAg
IG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5n
QmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV9oZWFkc1VwRGlzcGxheVByb2dyYW0u
Z2V0KCk7CiB9CkBAIC0xNDg0LDcgKzE0ODcsNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OlJlbmRlclBhc3NQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhcwog
ICAgIEFTU0VSVChtX3JlbmRlclBhc3NQcm9ncmFtKTsKICAgICBpZiAoIW1fcmVuZGVyUGFzc1By
b2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXll
clJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NQcm9ncmFtOjppbml0aWFsaXplIik7Ci0gICAg
ICAgIG1fcmVuZGVyUGFzc1Byb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAgICAgICAg
bV9yZW5kZXJQYXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNVc2luZ0JpbmRV
bmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyUGFzc1Byb2dyYW0uZ2V0KCk7CiB9
CkBAIC0xNDk1LDcgKzE0OTgsNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRl
clBhc3NQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUAogICAgICAgICBt
X3JlbmRlclBhc3NQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc1Byb2dyYW1BQSht
X2NvbnRleHQpKTsKICAgICBpZiAoIW1fcmVuZGVyUGFzc1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQo
KSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
cmVuZGVyUGFzc1Byb2dyYW1BQTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3JlbmRlclBhc3NQ
cm9ncmFtQUEtPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAgICAgICAgbV9yZW5kZXJQYXNzUHJv
Z3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAg
IH0KICAgICByZXR1cm4gbV9yZW5kZXJQYXNzUHJvZ3JhbUFBLmdldCgpOwogfQpAQCAtMTUwNiw3
ICsxNTA5LDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzTWFza1By
b2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGUKICAgICAgICAgbV9yZW5kZXJQYXNz
TWFza1Byb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc01hc2tQcm9ncmFtKG1fY29udGV4
dCkpOwogICAgIGlmICghbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0tPmluaXRpYWxpemVkKCkpIHsK
ICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRl
clBhc3NNYXNrUHJvZ3JhbTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3JlbmRlclBhc3NNYXNr
UHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3JlbmRlclBhc3NNYXNr
UHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAg
ICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtLmdldCgpOwogfQpAQCAtMTUx
Nyw3ICsxNTIwLDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzTWFz
a1Byb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW4KICAgICAgICAgbV9yZW5kZXJQ
YXNzTWFza1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzTWFza1Byb2dyYW1BQSht
X2NvbnRleHQpKTsKICAgICBpZiAoIW1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEtPmluaXRpYWxp
emVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21p
dW06OnJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fcmVu
ZGVyUGFzc01hc2tQcm9ncmFtQUEtPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAgICAgICAgbV9y
ZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNVc2luZ0Jp
bmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEu
Z2V0KCk7CiB9CkBAIC0xNTI3LDcgKzE1MzAsNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OlRpbGVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtKCkKICAg
ICBBU1NFUlQobV90aWxlUHJvZ3JhbSk7CiAgICAgaWYgKCFtX3RpbGVQcm9ncmFtLT5pbml0aWFs
aXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp0aWxlUHJvZ3JhbTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3RpbGVQcm9ncmFtLT5p
bml0aWFsaXplKG1fY29udGV4dCk7CisgICAgICAgIG1fdGlsZVByb2dyYW0tPmluaXRpYWxpemUo
bV9jb250ZXh0LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3Rp
bGVQcm9ncmFtLmdldCgpOwogfQpAQCAtMTUzNyw3ICsxNTQwLDcgQEAgY29uc3QgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpUaWxlUHJvZ3JhbU9wYXF1ZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0
aWxlUHJvZ3IKICAgICBBU1NFUlQobV90aWxlUHJvZ3JhbU9wYXF1ZSk7CiAgICAgaWYgKCFtX3Rp
bGVQcm9ncmFtT3BhcXVlLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgi
Y2MiLCAiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbU9wYXF1ZTo6aW5pdGlhbGl6
ZSIpOwotICAgICAgICBtX3RpbGVQcm9ncmFtT3BhcXVlLT5pbml0aWFsaXplKG1fY29udGV4dCk7
CisgICAgICAgIG1fdGlsZVByb2dyYW1PcGFxdWUtPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lz
VXNpbmdCaW5kVW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3RpbGVQcm9ncmFtT3BhcXVl
LmdldCgpOwogfQpAQCAtMTU0OCw3ICsxNTUxLDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpUaWxlUHJvZ3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtQUEK
ICAgICAgICAgbV90aWxlUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtQUEobV9j
b250ZXh0KSk7CiAgICAgaWYgKCFtX3RpbGVQcm9ncmFtQUEtPmluaXRpYWxpemVkKCkpIHsKICAg
ICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9n
cmFtQUE6OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV90aWxlUHJvZ3JhbUFBLT5pbml0aWFsaXpl
KG1fY29udGV4dCk7CisgICAgICAgIG1fdGlsZVByb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRl
eHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dy
YW1BQS5nZXQoKTsKIH0KQEAgLTE1NTksNyArMTU2Miw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6VGlsZVByb2dyYW1Td2l6emxlKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQ
cm9nCiAgICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlID0gYWRvcHRQdHIobmV3IFRpbGVQcm9n
cmFtU3dpenpsZShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1Td2l6emxlLT5p
bml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp0aWxlUHJvZ3JhbVN3aXp6bGU6OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV90
aWxlUHJvZ3JhbVN3aXp6bGUtPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAgICAgICAgbV90aWxl
UHJvZ3JhbVN3aXp6bGUtPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5kVW5pZm9y
bSk7CiAgICAgfQogICAgIHJldHVybiBtX3RpbGVQcm9ncmFtU3dpenpsZS5nZXQoKTsKIH0KQEAg
LTE1NzAsNyArMTU3Myw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dy
YW1Td2l6emxlT3BhcXVlKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpCiAgICAgICAgIG1fdGls
ZVByb2dyYW1Td2l6emxlT3BhcXVlID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtU3dpenpsZU9w
YXF1ZShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1Td2l6emxlT3BhcXVlLT5p
bml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp0aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWU6OmluaXRpYWxpemUiKTsKLSAgICAg
ICAgbV90aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUtPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAg
ICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUtPmluaXRpYWxpemUobV9jb250ZXh0LCBt
X2lzVXNpbmdCaW5kVW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3RpbGVQcm9ncmFtU3dp
enpsZU9wYXF1ZS5nZXQoKTsKIH0KQEAgLTE1ODEsNyArMTU4NCw3IEBAIGNvbnN0IExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1Td2l6emxlQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dGlsZVByCiAgICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlQUEgPSBhZG9wdFB0cihuZXcg
VGlsZVByb2dyYW1Td2l6emxlQUEobV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3RpbGVQcm9ncmFt
U3dpenpsZUFBLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAi
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbVN3aXp6bGVBQTo6aW5pdGlhbGl6ZSIp
OwotICAgICAgICBtX3RpbGVQcm9ncmFtU3dpenpsZUFBLT5pbml0aWFsaXplKG1fY29udGV4dCk7
CisgICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlQUEtPmluaXRpYWxpemUobV9jb250ZXh0LCBt
X2lzVXNpbmdCaW5kVW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3RpbGVQcm9ncmFtU3dp
enpsZUFBLmdldCgpOwogfQpAQCAtMTU5Miw3ICsxNTk1LDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpUZXh0dXJlUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0ZXh0dXJl
UHJvZ3IKICAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBUZXh0dXJlUHJv
Z3JhbShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGV4dHVyZVByb2dyYW0tPmluaXRpYWxpemVk
KCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06
OnRleHR1cmVQcm9ncmFtOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fdGV4dHVyZVByb2dyYW0t
PmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbS0+aW5pdGlh
bGl6ZShtX2NvbnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJu
IG1fdGV4dHVyZVByb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNjAzLDcgKzE2MDYsNyBAQCBjb25zdCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OlRleHR1cmVQcm9ncmFtRmxpcCogTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjp0ZXh0dXJlUAogICAgICAgICBtX3RleHR1cmVQcm9ncmFtRmxpcCA9IGFkb3B0UHRy
KG5ldyBUZXh0dXJlUHJvZ3JhbUZsaXAobV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3RleHR1cmVQ
cm9ncmFtRmxpcC0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwg
IkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVByb2dyYW1GbGlwOjppbml0aWFsaXplIik7
Ci0gICAgICAgIG1fdGV4dHVyZVByb2dyYW1GbGlwLT5pbml0aWFsaXplKG1fY29udGV4dCk7Cisg
ICAgICAgIG1fdGV4dHVyZVByb2dyYW1GbGlwLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1Vz
aW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV90ZXh0dXJlUHJvZ3JhbUZsaXAu
Z2V0KCk7CiB9CkBAIC0xNjE0LDcgKzE2MTcsNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OlRleHR1cmVJT1N1cmZhY2VQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleAog
ICAgICAgICBtX3RleHR1cmVJT1N1cmZhY2VQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRleHR1cmVJ
T1N1cmZhY2VQcm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlmICghbV90ZXh0dXJlSU9TdXJmYWNl
UHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZUlPU3VyZmFjZVByb2dyYW06OmluaXRpYWxpemUi
KTsKLSAgICAgICAgbV90ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRl
eHQpOworICAgICAgICBtX3RleHR1cmVJT1N1cmZhY2VQcm9ncmFtLT5pbml0aWFsaXplKG1fY29u
dGV4dCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV90ZXh0dXJl
SU9TdXJmYWNlUHJvZ3JhbS5nZXQoKTsKIH0KQEAgLTE2MjUsNyArMTYyOCw3IEBAIGNvbnN0IExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6VmlkZW9ZVVZQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnZpZGVvWVVWUHJvCiAgICAgICAgIG1fdmlkZW9ZVVZQcm9ncmFtID0gYWRvcHRQdHIobmV3
IFZpZGVvWVVWUHJvZ3JhbShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdmlkZW9ZVVZQcm9ncmFt
LT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjp2aWRlb1lVVlByb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV92
aWRlb1lVVlByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAgICAgICAgbV92aWRlb1lV
VlByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CiAg
ICAgfQogICAgIHJldHVybiBtX3ZpZGVvWVVWUHJvZ3JhbS5nZXQoKTsKIH0KQEAgLTE2MzYsNyAr
MTYzOSw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VmlkZW9TdHJlYW1UZXh0dXJl
UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp2CiAgICAgICAgIG1fdmlkZW9TdHJlYW1U
ZXh0dXJlUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBWaWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtKG1f
Y29udGV4dCkpOwogICAgIGlmICghbV92aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtLT5pbml0aWFs
aXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpzdHJlYW1UZXh0dXJlUHJvZ3JhbTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3ZpZGVv
U3RyZWFtVGV4dHVyZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAgICAgICAgbV92
aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5n
QmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV92aWRlb1N0cmVhbVRleHR1cmVQcm9n
cmFtLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCAzNDI1
NGIwMGI5MjIyZjEwZTJmOWQxYzM3OWE1NzkxZmMxODc2OTk1Li42MjVlODJmMDg4ZTA3MjE1MmVl
ZGJjYzY0OGNiYzg1MjllZmM1YTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aApAQCAtMjY5LDYgKzI2OSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNWaWV3cG9ydENo
YW5nZWQ7CiAgICAgYm9vbCBtX2lzRnJhbWVidWZmZXJEaXNjYXJkZWQ7CisgICAgYm9vbCBtX2lz
VXNpbmdCaW5kVW5pZm9ybTsKICAgICBib29sIG1fdmlzaWJsZTsKICAgICBUZXh0dXJlVXBsb2Fk
ZXJPcHRpb24gbV90ZXh0dXJlVXBsb2FkZXJTZXR0aW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5n
LmNwcAppbmRleCA3MmU0OWUyNTVjMzAzMWMyNzY0MDhiNzg1YmRjYmUyN2RjY2QxZjdjLi4xYWJj
MjE4NmEzY2YwMDEyMGE2MGQ4N2QwMGU2NGFlYjBhYWVmMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRp
bmcuY3BwCkBAIC00Miw2ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJvZ3JhbUJp
bmRpbmdCYXNlOjpQcm9ncmFtQmluZGluZ0Jhc2UoKQogICAgIDogbV9wcm9ncmFtKDApCisgICAg
LCBtX3ZlcnRleFNoYWRlcklkKDApCisgICAgLCBtX2ZyYWdtZW50U2hhZGVySWQoMCkKICAgICAs
IG1faW5pdGlhbGl6ZWQoZmFsc2UpCiB7CiB9CkBAIC01MCw2ICs1Miw4IEBAIFByb2dyYW1CaW5k
aW5nQmFzZTo6flByb2dyYW1CaW5kaW5nQmFzZSgpCiB7CiAgICAgLy8gSWYgeW91IGhpdCB0aGVz
ZSBhc3NlcnRzLCB5b3UgaW5pdGlhbGl6ZWQgYnV0IGZvcmdvdCB0byBjYWxsIGNsZWFudXAoKS4K
ICAgICBBU1NFUlQoIW1fcHJvZ3JhbSk7CisgICAgQVNTRVJUKCFtX3ZlcnRleFNoYWRlcklkKTsK
KyAgICBBU1NFUlQoIW1fZnJhZ21lbnRTaGFkZXJJZCk7CiAgICAgQVNTRVJUKCFtX2luaXRpYWxp
emVkKTsKIH0KIApAQCAtNjEsMTAgKzY1LDQzIEBAIHN0YXRpYyBib29sIGNvbnRleHRMb3N0KFdl
YkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogCiB2b2lkIFByb2dyYW1CaW5kaW5nQmFzZTo6
aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhT
aGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpCiB7Ci0gICAgbV9wcm9ncmFtID0g
Y3JlYXRlU2hhZGVyUHJvZ3JhbShjb250ZXh0LCB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVy
KTsKKyAgICBUUkFDRV9FVkVOVCgiUHJvZ3JhbUJpbmRpbmdCYXNlOjppbml0IiwgdGhpcywgMCk7
CisgICAgbV92ZXJ0ZXhTaGFkZXJJZCA9IGxvYWRTaGFkZXIoY29udGV4dCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlZFUlRFWF9TSEFERVIsIHZlcnRleFNoYWRlcik7CisgICAgaWYgKCFtX3ZlcnRleFNo
YWRlcklkKSB7CisgICAgICAgIGlmICghY29udGV4dExvc3QoY29udGV4dCkpCisgICAgICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgdmVydGV4IHNoYWRlciIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9mcmFnbWVudFNoYWRlcklkID0gbG9hZFNoYWRlcihjb250
ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6RlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNoYWRlcik7
CisgICAgaWYgKCFtX2ZyYWdtZW50U2hhZGVySWQpIHsKKyAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPmRlbGV0ZVNoYWRlcihtX3ZlcnRleFNoYWRlcklkKSk7CisgICAgICAgIG1fdmVydGV4
U2hhZGVySWQgPSAwOworICAgICAgICBpZiAoIWNvbnRleHRMb3N0KGNvbnRleHQpKQorICAgICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGZyYWdtZW50IHNoYWRlciIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wcm9ncmFtID0gY3JlYXRlU2hhZGVyUHJvZ3Jh
bShjb250ZXh0LCBtX3ZlcnRleFNoYWRlcklkLCBtX2ZyYWdtZW50U2hhZGVySWQpOwogICAgIEFT
U0VSVChtX3Byb2dyYW0gfHwgY29udGV4dExvc3QoY29udGV4dCkpOwogfQogCit2b2lkIFByb2dy
YW1CaW5kaW5nQmFzZTo6bGluayhXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKK3sKKyAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+bGlua1Byb2dyYW0obV9wcm9ncmFtKSk7CisgICAgY2xl
YW51cFNoYWRlcnMoY29udGV4dCk7CisjaWZuZGVmIE5ERUJVRworICAgIGludCBsaW5rZWQgPSAw
OworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5nZXRQcm9ncmFtaXYobV9wcm9ncmFtLCBHcmFw
aGljc0NvbnRleHQzRDo6TElOS19TVEFUVVMsICZsaW5rZWQpKTsKKyAgICBpZiAoIWxpbmtlZCkg
eworICAgICAgICBpZiAoIWNvbnRleHRMb3N0KGNvbnRleHQpKQorICAgICAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gbGluayBzaGFkZXIgcHJvZ3JhbSIpOworICAgICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShtX3Byb2dyYW0pKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNlbmRpZgorfQorCiB2b2lkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y2xlYW51cChXZWJH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBtX2luaXRpYWxpemVkID0gZmFsc2U7
CkBAIC03NCw2ICsxMTEsOCBAQCB2b2lkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y2xlYW51cChXZWJH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmRlbGV0ZVByb2dyYW0obV9wcm9ncmFtKSk7CiAgICAgbV9wcm9n
cmFtID0gMDsKKworICAgIGNsZWFudXBTaGFkZXJzKGNvbnRleHQpOwogfQogCiB1bnNpZ25lZCBQ
cm9ncmFtQmluZGluZ0Jhc2U6OmxvYWRTaGFkZXIoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIHVuc2lnbmVkIHR5cGUsIGNvbnN0IFN0cmluZyYgc2hhZGVyU291cmNlKQpAQCAtOTUsMjQg
KzEzNCw4IEBAIHVuc2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6bG9hZFNoYWRlcihXZWJHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQKICAgICByZXR1cm4gc2hhZGVyOwogfQog
Ci11bnNpZ25lZCBQcm9ncmFtQmluZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0oV2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyU291cmNl
LCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyU291cmNlKQordW5zaWduZWQgUHJvZ3JhbUJp
bmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtKFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIsIHVuc2lnbmVkIGZyYWdtZW50U2hhZGVyKQogewot
ICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiUHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQ
cm9ncmFtIik7Ci0gICAgdW5zaWduZWQgdmVydGV4U2hhZGVyID0gbG9hZFNoYWRlcihjb250ZXh0
LCBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUiwgdmVydGV4U2hhZGVyU291cmNlKTsK
LSAgICBpZiAoIXZlcnRleFNoYWRlcikgewotICAgICAgICBpZiAoIWNvbnRleHRMb3N0KGNvbnRl
eHQpKQotICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHZlcnRleCBzaGFk
ZXIiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgZnJhZ21lbnRT
aGFkZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9T
SEFERVIsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBpZiAoIWZyYWdtZW50U2hhZGVyKSB7
Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVy
KSk7Ci0gICAgICAgIGlmICghY29udGV4dExvc3QoY29udGV4dCkpCi0gICAgICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZnJhZ21lbnQgc2hhZGVyIik7Ci0gICAgICAgIHJldHVy
biAwOwotICAgIH0KLQogICAgIHVuc2lnbmVkIHByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5jcmVh
dGVQcm9ncmFtKCk7CiAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KSB7CiAgICAgICAgIGlmICghY29u
dGV4dExvc3QoY29udGV4dCkpCkBAIC0xMjcsMjMgKzE1MCwyMSBAQCB1bnNpZ25lZCBQcm9ncmFt
QmluZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0oV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9n
cmFtT2JqZWN0LCBHZW9tZXRyeUJpbmRpbmc6OnBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSwgImFf
cG9zaXRpb24iKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRBdHRyaWJMb2NhdGlv
bihwcm9ncmFtT2JqZWN0LCBHZW9tZXRyeUJpbmRpbmc6OnRleENvb3JkQXR0cmliTG9jYXRpb24o
KSwgImFfdGV4Q29vcmQiKSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+bGlua1Byb2dy
YW0ocHJvZ3JhbU9iamVjdCkpOwotI2lmbmRlZiBOREVCVUcKLSAgICBpbnQgbGlua2VkID0gMDsK
LSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW1PYmplY3QsIEdy
YXBoaWNzQ29udGV4dDNEOjpMSU5LX1NUQVRVUywgJmxpbmtlZCkpOwotICAgIGlmICghbGlua2Vk
KSB7Ci0gICAgICAgIGlmICghY29udGV4dExvc3QoY29udGV4dCkpCi0gICAgICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBsaW5rIHNoYWRlciBwcm9ncmFtIik7Ci0gICAgICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5kZWxldGVQcm9ncmFtKHByb2dyYW1PYmplY3QpKTsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRl
U2hhZGVyKHZlcnRleFNoYWRlcikpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVT
aGFkZXIoZnJhZ21lbnRTaGFkZXIpKTsKICAgICByZXR1cm4gcHJvZ3JhbU9iamVjdDsKIH0KIAor
dm9pZCBQcm9ncmFtQmluZGluZ0Jhc2U6OmNsZWFudXBTaGFkZXJzKFdlYkdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0KQoreworICAgIGlmIChtX3ZlcnRleFNoYWRlcklkKSB7CisgICAgICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFkZXIobV92ZXJ0ZXhTaGFkZXJJZCkpOworICAg
ICAgICBtX3ZlcnRleFNoYWRlcklkID0gMDsKKyAgICB9CisgICAgaWYgKG1fZnJhZ21lbnRTaGFk
ZXJJZCkgeworICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRlU2hhZGVyKG1fZnJh
Z21lbnRTaGFkZXJJZCkpOworICAgICAgICBtX2ZyYWdtZW50U2hhZGVySWQgPSAwOworICAgIH0K
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgKaW5kZXggMzkwNDhmOTAzMjBiYWQyNGVj
M2M0OWY5NTJkNjk0YzQxOGU3ZWViZS4uYzJkNDdkZmZjYWM1YmM0NjhmNzdjMmE2MDhjYWQ2YTlk
OGVhYTllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUHJvZ3JhbUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoK
ICAgICB+UHJvZ3JhbUJpbmRpbmdCYXNlKCk7CiAKICAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCosIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJp
bmcmIGZyYWdtZW50U2hhZGVyKTsKKyAgICB2b2lkIGxpbmsoV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRCopOwogICAgIHZvaWQgY2xlYW51cChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
Kik7CiAKICAgICB1bnNpZ25lZCBwcm9ncmFtKCkgY29uc3QgeyBBU1NFUlQobV9pbml0aWFsaXpl
ZCk7IHJldHVybiBtX3Byb2dyYW07IH0KQEAgLTUwLDkgKzUxLDEyIEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKIAogICAgIHVuc2lnbmVkIGxvYWRTaGFkZXIoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRCosIHVuc2lnbmVkIHR5cGUsIGNvbnN0IFN0cmluZyYgc2hhZGVyU291cmNlKTsKLSAgICB1
bnNpZ25lZCBjcmVhdGVTaGFkZXJQcm9ncmFtKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Qq
LCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlclNvdXJjZSwgY29uc3QgU3RyaW5nJiBmcmFnbWVu
dFNoYWRlclNvdXJjZSk7CisgICAgdW5zaWduZWQgY3JlYXRlU2hhZGVyUHJvZ3JhbShXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgdmVydGV4U2hhZGVyLCB1bnNpZ25lZCBm
cmFnbWVudFNoYWRlcik7CisgICAgdm9pZCBjbGVhbnVwU2hhZGVycyhXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEKik7CiAKICAgICB1bnNpZ25lZCBtX3Byb2dyYW07CisgICAgdW5zaWduZWQg
bV92ZXJ0ZXhTaGFkZXJJZDsKKyAgICB1bnNpZ25lZCBtX2ZyYWdtZW50U2hhZGVySWQ7CiAgICAg
Ym9vbCBtX2luaXRpYWxpemVkOwogfTsKIApAQCAtNjQsMTQgKzY4LDI0IEBAIHB1YmxpYzoKICAg
ICAgICAgUHJvZ3JhbUJpbmRpbmdCYXNlOjppbml0KGNvbnRleHQsIG1fdmVydGV4U2hhZGVyLmdl
dFNoYWRlclN0cmluZygpLCBtX2ZyYWdtZW50U2hhZGVyLmdldFNoYWRlclN0cmluZygpKTsKICAg
ICB9CiAKLSAgICB2b2lkIGluaXRpYWxpemUoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCkKKyAgICB2b2lkIGluaXRpYWxpemUoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtKQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQpOwogICAgICAgICBBU1NFUlQobV9wcm9ncmFtKTsKICAgICAgICAgQVNTRVJUKCFt
X2luaXRpYWxpemVkKTsKIAotICAgICAgICBtX3ZlcnRleFNoYWRlci5pbml0KGNvbnRleHQsIG1f
cHJvZ3JhbSk7Ci0gICAgICAgIG1fZnJhZ21lbnRTaGFkZXIuaW5pdChjb250ZXh0LCBtX3Byb2dy
YW0pOworICAgICAgICAvLyBOZWVkIHRvIGJpbmQgdW5pZm9ybXMgYmVmb3JlIGxpbmtpbmcKKyAg
ICAgICAgaWYgKCF1c2luZ0JpbmRVbmlmb3JtKQorICAgICAgICAgICAgbGluayhjb250ZXh0KTsK
KworICAgICAgICBpbnQgYmFzZVVuaWZvcm1JbmRleCA9IDA7CisgICAgICAgIG1fdmVydGV4U2hh
ZGVyLmluaXQoY29udGV4dCwgbV9wcm9ncmFtLCB1c2luZ0JpbmRVbmlmb3JtLCAmYmFzZVVuaWZv
cm1JbmRleCk7CisgICAgICAgIG1fZnJhZ21lbnRTaGFkZXIuaW5pdChjb250ZXh0LCBtX3Byb2dy
YW0sIHVzaW5nQmluZFVuaWZvcm0sICZiYXNlVW5pZm9ybUluZGV4KTsKKworICAgICAgICAvLyBM
aW5rIGFmdGVyIGJpbmRpbmcgdW5pZm9ybXMKKyAgICAgICAgaWYgKHVzaW5nQmluZFVuaWZvcm0p
CisgICAgICAgICAgICBsaW5rKGNvbnRleHQpOworCiAgICAgICAgIG1faW5pdGlhbGl6ZWQgPSB0
cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCmluZGV4IDJhMTQwZDFkNzg1YjY0
MzliMzFlMGIyZjg0ZjMyNGU1OGNlNzA3ODQuLmUwYjc5MTZhMzdjMjg1ZjI3MGJiOTY3MzVkZjZm
ZmU3MDNkNWNjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKQEAgLTM4LDE0ICszOCwzOSBA
QCB1c2luZyBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK25hbWVzcGFjZSB7CisKK3N0YXRpYyB2b2lkIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRp
b25zKFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBjb25z
dCBjaGFyKiogc2hhZGVyVW5pZm9ybXMsIHNpemVfdCBjb3VudCwgc2l6ZV90IG1heExvY2F0aW9u
cywgaW50KiBsb2NhdGlvbnMsIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9y
bUluZGV4KQoreworICAgIGZvciAoc2l6ZV90IHVuaWZvcm1JbmRleCA9IDA7IHVuaWZvcm1JbmRl
eCA8IGNvdW50OyB1bmlmb3JtSW5kZXggKyspIHsKKyAgICAgICAgaWYgKHVuaWZvcm1JbmRleCA+
PSBtYXhMb2NhdGlvbnMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHVzaW5n
QmluZFVuaWZvcm0pIHsKKyAgICAgICAgICAgIGxvY2F0aW9uc1t1bmlmb3JtSW5kZXhdID0gKCpi
YXNlVW5pZm9ybUluZGV4KSsrOworICAgICAgICAgICAgY29udGV4dC0+YmluZFVuaWZvcm1Mb2Nh
dGlvbkNIUk9NSVVNKHByb2dyYW0sIGxvY2F0aW9uc1t1bmlmb3JtSW5kZXhdLCBzaGFkZXJVbmlm
b3Jtc1t1bmlmb3JtSW5kZXhdKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBsb2NhdGlv
bnNbdW5pZm9ybUluZGV4XSA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBz
aGFkZXJVbmlmb3Jtc1t1bmlmb3JtSW5kZXhdKTsKKyAgICB9Cit9CisKK30KKwogVmVydGV4U2hh
ZGVyUG9zVGV4OjpWZXJ0ZXhTaGFkZXJQb3NUZXgoKQogICAgIDogbV9tYXRyaXhMb2NhdGlvbigt
MSkKIHsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFkZXJQb3NUZXg6OmluaXQoV2ViR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclBvc1Rl
eDo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwg
Ym9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9t
YXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0
cml4Iik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAg
ICAgICJtYXRyaXgiLAorICAgIH07CisgICAgaW50IGxvY2F0aW9uc1sxXTsKKworICAgIGdldFBy
b2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBX
VEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlv
bnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisg
ICAgbV9tYXRyaXhMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKICAgICBBU1NFUlQobV9tYXRyaXhM
b2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTcxLDExICs5NiwyMCBAQCBWZXJ0ZXhTaGFkZXJQb3NU
ZXhZVVZTdHJldGNoOjpWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoKCkKIHsKIH0KIAotdm9p
ZCBWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZT
dHJldGNoOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9n
cmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAg
ICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICJtYXRyaXgiKTsKLSAgICBtX3lXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInlfd2lkdGhTY2FsZUZhY3RvciIpOwotICAgIG1f
dXZXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbSwgInV2X3dpZHRoU2NhbGVGYWN0b3IiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
c2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgIm1hdHJpeCIsCisgICAgICAgICJ5X3dpZHRo
U2NhbGVGYWN0b3IiLAorICAgICAgICAidXZfd2lkdGhTY2FsZUZhY3RvciIsCisgICAgfTsKKyAg
ICBpbnQgbG9jYXRpb25zWzNdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29u
dGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5p
Zm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5k
VW5pZm9ybSwgYmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX21hdHJpeExvY2F0aW9uID0gbG9j
YXRpb25zWzBdOworICAgIG1feVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiA9IGxvY2F0aW9uc1sx
XTsKKyAgICBtX3V2V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uID0gbG9jYXRpb25zWzJdOwogICAg
IEFTU0VSVChtX21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1feVdpZHRoU2NhbGVGYWN0b3JMb2Nh
dGlvbiAhPSAtMSAmJiBtX3V2V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uICE9IC0xKTsKIH0KIApA
QCAtMTA0LDkgKzEzOCwxNiBAQCBWZXJ0ZXhTaGFkZXJQb3M6OlZlcnRleFNoYWRlclBvcygpCiB7
CiB9CiAKLXZvaWQgVmVydGV4U2hhZGVyUG9zOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBWZXJ0ZXhTaGFkZXJQb3M6OmluaXQoV2Vi
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdC
aW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fbWF0cml4TG9jYXRp
b24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOworICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAibWF0cml4
IiwKKyAgICB9OworICAgIGludCBsb2NhdGlvbnNbMV07CisKKyAgICBnZXRQcm9ncmFtVW5pZm9y
bUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xF
TkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRp
b25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fbWF0cml4
TG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CiAgICAgQVNTRVJUKG1fbWF0cml4TG9jYXRpb24gIT0g
LTEpOwogfQogCkBAIC0xMjgsMTAgKzE2OSwxOCBAQCBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zv
cm06OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSgpCiB7CiB9CiAKLXZvaWQgVmVydGV4U2hh
ZGVyUG9zVGV4VHJhbnNmb3JtOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1
bnNpZ25lZCBwcm9ncmFtKQordm9pZCBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06OmluaXQo
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNp
bmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fbWF0cml4TG9j
YXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOwot
ICAgIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbSwgInRleFRyYW5zZm9ybSIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJV
bmlmb3Jtc1tdID0geworICAgICAgICAibWF0cml4IiwKKyAgICAgICAgInRleFRyYW5zZm9ybSIs
CisgICAgfTsKKyAgICBpbnQgbG9jYXRpb25zWzJdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1M
b2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5H
VEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9u
cywgdXNpbmdCaW5kVW5pZm9ybSwgYmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX21hdHJpeExv
Y2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gPSBsb2Nh
dGlvbnNbMV07CiAgICAgQVNTRVJUKG1fbWF0cml4TG9jYXRpb24gIT0gLTEgJiYgbV90ZXhUcmFu
c2Zvcm1Mb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTE3MCwxMCArMjE5LDE4IEBAIFN0cmluZyBW
ZXJ0ZXhTaGFkZXJQb3NUZXhJZGVudGl0eTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAgICAp
OwogfQogCi12b2lkIFZlcnRleFNoYWRlclF1YWQ6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclF1YWQ6OmluaXQo
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNp
bmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fbWF0cml4TG9j
YXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOwot
ICAgIG1fcG9pbnRMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAicG9pbnQiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsK
KyAgICAgICAgIm1hdHJpeCIsCisgICAgICAgICJwb2ludCIsCisgICAgfTsKKyAgICBpbnQgbG9j
YXRpb25zWzJdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJv
Z3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBX
VEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5kVW5pZm9ybSwg
YmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX21hdHJpeExvY2F0aW9uID0gbG9jYXRpb25zWzBd
OworICAgIG1fcG9pbnRMb2NhdGlvbiA9IGxvY2F0aW9uc1sxXTsKICAgICBBU1NFUlQobV9tYXRy
aXhMb2NhdGlvbiAhPSAtMSAmJiBtX3BvaW50TG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC0yMDYs
MTEgKzI2MywyMCBAQCBWZXJ0ZXhTaGFkZXJUaWxlOjpWZXJ0ZXhTaGFkZXJUaWxlKCkKIHsKIH0K
IAotdm9pZCBWZXJ0ZXhTaGFkZXJUaWxlOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBWZXJ0ZXhTaGFkZXJUaWxlOjppbml0KFdlYkdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmlu
ZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX21hdHJpeExvY2F0aW9u
ID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBt
X3BvaW50TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInBv
aW50Iik7Ci0gICAgbV92ZXJ0ZXhUZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidmVydGV4VGV4VHJhbnNmb3JtIik7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJtYXRyaXgiLAorICAg
ICAgICAicG9pbnQiLAorICAgICAgICAidmVydGV4VGV4VHJhbnNmb3JtIiwKKyAgICB9OworICAg
IGludCBsb2NhdGlvbnNbM107CisKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250
ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlm
b3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRV
bmlmb3JtLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fbWF0cml4TG9jYXRpb24gPSBsb2Nh
dGlvbnNbMF07CisgICAgbV9wb2ludExvY2F0aW9uID0gbG9jYXRpb25zWzFdOworICAgIG1fdmVy
dGV4VGV4VHJhbnNmb3JtTG9jYXRpb24gPSBsb2NhdGlvbnNbMl07CiAgICAgQVNTRVJUKG1fbWF0
cml4TG9jYXRpb24gIT0gLTEgJiYgbV9wb2ludExvY2F0aW9uICE9IC0xICYmIG1fdmVydGV4VGV4
VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC0yNDMsMTAgKzMwOSwxOCBAQCBWZXJ0
ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm0oKQogewog
fQogCi1ib29sIFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtOjppbml0KFdlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQorYm9vbCBWZXJ0ZXhTaGFkZXJWaWRl
b1RyYW5zZm9ybTo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQg
cHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7
Ci0gICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAibWF0cml4Iik7Ci0gICAgbV90ZXhNYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4TWF0cml4Iik7CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJtYXRyaXgiLAorICAgICAgICAidGV4
TWF0cml4IiwKKyAgICB9OworICAgIGludCBsb2NhdGlvbnNbMl07CisKKyAgICBnZXRQcm9ncmFt
VW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FS
UkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwg
bG9jYXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1f
bWF0cml4TG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CisgICAgbV90ZXhNYXRyaXhMb2NhdGlvbiA9
IGxvY2F0aW9uc1sxXTsKICAgICByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAmJiBtX3Rl
eE1hdHJpeExvY2F0aW9uICE9IC0xOwogfQogCkBAIC0yNzIsMTEgKzM0NiwxOCBAQCBGcmFnbWVu
dFRleEFscGhhQmluZGluZzo6RnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcoKQogewogfQogCi12b2lk
IEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFRleEFscGhhQmluZGluZzo6aW5p
dChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1
c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9zYW1wbGVy
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVy
ZSIpOwotICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAiYWxwaGEiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNb
XSA9IHsKKyAgICAgICAgInNfdGV4dHVyZSIsCisgICAgICAgICJhbHBoYSIsCisgICAgfTsKKyAg
ICBpbnQgbG9jYXRpb25zWzJdOwogCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29u
dGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5p
Zm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5k
VW5pZm9ybSwgYmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGxv
Y2F0aW9uc1swXTsKKyAgICBtX2FscGhhTG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CiAgICAgQVNT
RVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAtMSk7CiB9
CiAKQEAgLTI4NSwxMCArMzY2LDE2IEBAIEZyYWdtZW50VGV4T3BhcXVlQmluZGluZzo6RnJhZ21l
bnRUZXhPcGFxdWVCaW5kaW5nKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFRleE9wYXF1ZUJpbmRp
bmc6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0p
Cit2b2lkIEZyYWdtZW50VGV4T3BhcXVlQmluZGluZzo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQq
IGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9zYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVyZSIpOworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAic190ZXh0dXJlIiwKKyAgICB9
OworICAgIGludCBsb2NhdGlvbnNbMV07CisKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9u
cyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFk
ZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2lu
Z0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUluZGV4KTsKIAorICAgIG1fc2FtcGxlckxvY2F0aW9u
ID0gbG9jYXRpb25zWzBdOwogICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSk7CiB9
CiAKQEAgLTMwNywxMCArMzk0LDE2IEBAIFN0cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlw
QWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAotYm9vbCBGcmFnbWVu
dFNoYWRlck9FU0ltYWdlRXh0ZXJuYWw6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIHVuc2lnbmVkIHByb2dyYW0pCitib29sIEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5h
bDo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwg
Ym9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9z
YW1wbGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNf
dGV4dHVyZSIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0gewor
ICAgICAgICAic190ZXh0dXJlIiwKKyAgICB9OworICAgIGludCBsb2NhdGlvbnNbMV07CiAKKyAg
ICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlm
b3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgo
bG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUluZGV4
KTsKKworICAgIG1fc2FtcGxlckxvY2F0aW9uID0gbG9jYXRpb25zWzBdOwogICAgIHJldHVybiBt
X3NhbXBsZXJMb2NhdGlvbiAhPSAtMTsKIH0KIApAQCAtNDM3LDEyICs1MzAsMjAgQEAgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4QWxwaGFBQTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSgpCiB7
CiB9CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQTo6aW5pdChXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4QWxwaGFBQTo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5z
aWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5k
ZXgpCiB7Ci0gICAgbV9zYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInNfdGV4dHVyZSIpOwotICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiYWxwaGEiKTsKLSAgICBtX2VkZ2VMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiZWRnZSIpOworICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAic190ZXh0dXJl
IiwKKyAgICAgICAgImFscGhhIiwKKyAgICAgICAgImVkZ2UiLAorICAgIH07CisgICAgaW50IGxv
Y2F0aW9uc1szXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHBy
b2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwg
V1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0s
IGJhc2VVbmlmb3JtSW5kZXgpOwogCisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBsb2NhdGlvbnNb
MF07CisgICAgbV9hbHBoYUxvY2F0aW9uID0gbG9jYXRpb25zWzFdOworICAgIG1fZWRnZUxvY2F0
aW9uID0gbG9jYXRpb25zWzJdOwogICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAm
JiBtX2FscGhhTG9jYXRpb24gIT0gLTEgJiYgbV9lZGdlTG9jYXRpb24gIT0gLTEpOwogfQogCkBA
IC00NzksMTMgKzU4MCwyMiBAQCBGcmFnbWVudFRleENsYW1wQWxwaGFBQUJpbmRpbmc6OkZyYWdt
ZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZygpCiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRUZXhDbGFt
cEFscGhhQUFCaW5kaW5nOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNp
Z25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFRleENsYW1wQWxwaGFBQUJpbmRpbmc6OmluaXQo
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNp
bmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fc2FtcGxlckxv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUi
KTsKLSAgICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgImFscGhhIik7Ci0gICAgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJmcmFnbWVudFRleFRyYW5zZm9ybSIp
OwotICAgIG1fZWRnZUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICJlZGdlIik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7
CisgICAgICAgICJzX3RleHR1cmUiLAorICAgICAgICAiYWxwaGEiLAorICAgICAgICAiZnJhZ21l
bnRUZXhUcmFuc2Zvcm0iLAorICAgICAgICAiZWRnZSIsCisgICAgfTsKKyAgICBpbnQgbG9jYXRp
b25zWzRdOwogCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3Jh
bSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZf
QVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5kVW5pZm9ybSwgYmFz
ZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsK
KyAgICBtX2FscGhhTG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV9mcmFnbWVudFRleFRy
YW5zZm9ybUxvY2F0aW9uID0gbG9jYXRpb25zWzJdOworICAgIG1fZWRnZUxvY2F0aW9uID0gbG9j
YXRpb25zWzNdOwogICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX2FscGhh
TG9jYXRpb24gIT0gLTEgJiYgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xICYm
IG1fZWRnZUxvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtNTUwLDExICs2NjAsMjAgQEAgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2so
KQogewogfQogCi12b2lkIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6aW5pdChXZWJH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVu
aWZvcm1JbmRleCkKIHsKLSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7Ci0gICAgbV9tYXNrU2FtcGxlckxvY2F0
aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX21hc2siKTsKLSAg
ICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
ImFscGhhIik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7Cisg
ICAgICAgICJzX3RleHR1cmUiLAorICAgICAgICAic19tYXNrIiwKKyAgICAgICAgImFscGhhIiwK
KyAgICB9OworICAgIGludCBsb2NhdGlvbnNbM107CisKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxv
Y2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdU
SChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25z
LCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fc2FtcGxlckxv
Y2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fbWFza1NhbXBsZXJMb2NhdGlvbiA9IGxvY2F0
aW9uc1sxXTsKKyAgICBtX2FscGhhTG9jYXRpb24gPSBsb2NhdGlvbnNbMl07CiAgICAgQVNTRVJU
KG1fc2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fbWFza1NhbXBsZXJMb2NhdGlvbiAhPSAtMSAm
JiBtX2FscGhhTG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC01ODMsMTIgKzcwMiwyMiBAQCBGcmFn
bWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFN
YXNrQUEoKQogewogfQogCi12b2lkIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBOjpp
bml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9p
ZCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQTo6aW5pdChXZWJHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBp
bnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9zYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVyZSIpOwotICAgIG1fbWFza1Nh
bXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic19t
YXNrIik7Ci0gICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJhbHBoYSIpOwotICAgIG1fZWRnZUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sICJlZGdlIik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNo
YWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJzX3RleHR1cmUiLAorICAgICAgICAic19tYXNr
IiwKKyAgICAgICAgImFscGhhIiwKKyAgICAgICAgImVkZ2UiLAorICAgIH07CisgICAgaW50IGxv
Y2F0aW9uc1s0XTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHBy
b2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwg
V1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0s
IGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBsb2NhdGlvbnNb
MF07CisgICAgbV9tYXNrU2FtcGxlckxvY2F0aW9uID0gbG9jYXRpb25zWzFdOworICAgIG1fYWxw
aGFMb2NhdGlvbiA9IGxvY2F0aW9uc1syXTsKKyAgICBtX2VkZ2VMb2NhdGlvbiA9IGxvY2F0aW9u
c1szXTsKICAgICBBU1NFUlQobV9zYW1wbGVyTG9jYXRpb24gIT0gLTEgJiYgbV9tYXNrU2FtcGxl
ckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAtMSAmJiBtX2VkZ2VMb2NhdGlv
biAhPSAtMSk7CiB9CiAKQEAgLTYyOSwxNCArNzU4LDI2IEBAIEZyYWdtZW50U2hhZGVyWVVWVmlk
ZW86OkZyYWdtZW50U2hhZGVyWVVWVmlkZW8oKQogewogfQogCi12b2lkIEZyYWdtZW50U2hhZGVy
WVVWVmlkZW86OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHBy
b2dyYW0pCit2b2lkIEZyYWdtZW50U2hhZGVyWVVWVmlkZW86OmluaXQoV2ViR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwg
aW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1feVRleHR1cmVMb2NhdGlvbiA9IGNvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAieV90ZXh0dXJlIik7Ci0gICAgbV91VGV4
dHVyZUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X3Rl
eHR1cmUiKTsKLSAgICBtX3ZUZXh0dXJlTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgInZfdGV4dHVyZSIpOwotICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiYWxwaGEiKTsKLSAgICBtX2NjTWF0cml4
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImNjX21hdHJp
eCIpOwotICAgIG1feXV2QWRqTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbSwgInl1dl9hZGoiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9y
bXNbXSA9IHsKKyAgICAgICAgInlfdGV4dHVyZSIsCisgICAgICAgICJ1X3RleHR1cmUiLAorICAg
ICAgICAidl90ZXh0dXJlIiwKKyAgICAgICAgImFscGhhIiwKKyAgICAgICAgImNjX21hdHJpeCIs
CisgICAgICAgICJ5dXZfYWRqIiwKKyAgICB9OworICAgIGludCBsb2NhdGlvbnNbNl07CisKKyAg
ICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlm
b3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgo
bG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUluZGV4
KTsKKworICAgIG1feVRleHR1cmVMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX3VUZXh0
dXJlTG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV92VGV4dHVyZUxvY2F0aW9uID0gbG9j
YXRpb25zWzJdOworICAgIG1fYWxwaGFMb2NhdGlvbiA9IGxvY2F0aW9uc1szXTsKKyAgICBtX2Nj
TWF0cml4TG9jYXRpb24gPSBsb2NhdGlvbnNbNF07CisgICAgbV95dXZBZGpMb2NhdGlvbiA9IGxv
Y2F0aW9uc1s1XTsKIAogICAgIEFTU0VSVChtX3lUZXh0dXJlTG9jYXRpb24gIT0gLTEgJiYgbV91
VGV4dHVyZUxvY2F0aW9uICE9IC0xICYmIG1fdlRleHR1cmVMb2NhdGlvbiAhPSAtMQogICAgICAg
ICAgICAmJiBtX2FscGhhTG9jYXRpb24gIT0gLTEgJiYgbV9jY01hdHJpeExvY2F0aW9uICE9IC0x
ICYmIG1feXV2QWRqTG9jYXRpb24gIT0gLTEpOwpAQCAtNjcyLDkgKzgxMywxNiBAQCBGcmFnbWVu
dFNoYWRlckNvbG9yOjpGcmFnbWVudFNoYWRlckNvbG9yKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVu
dFNoYWRlckNvbG9yOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25l
ZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFNoYWRlckNvbG9yOjppbml0KFdlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0s
IGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX2NvbG9yTG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImNvbG9yIik7CisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJjb2xvciIsCisgICAgfTsKKyAg
ICBpbnQgbG9jYXRpb25zWzFdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29u
dGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5p
Zm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5k
VW5pZm9ybSwgYmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX2NvbG9yTG9jYXRpb24gPSBsb2Nh
dGlvbnNbMF07CiAgICAgQVNTRVJUKG1fY29sb3JMb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTY5
NywxMSArODQ1LDIwIEBAIEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjpGcmFnbWVudFNoYWRl
ckNoZWNrZXJib2FyZCgpCiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6
OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2
b2lkIEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCog
YmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7Ci0gICAgbV90ZXhUcmFuc2Zvcm1Mb2Nh
dGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4VHJhbnNmb3Jt
Iik7Ci0gICAgbV9mcmVxdWVuY3lMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAiZnJlcXVlbmN5Iik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVu
aWZvcm1zW10gPSB7CisgICAgICAgICJhbHBoYSIsCisgICAgICAgICJ0ZXhUcmFuc2Zvcm0iLAor
ICAgICAgICAiZnJlcXVlbmN5IiwKKyAgICB9OworICAgIGludCBsb2NhdGlvbnNbM107CisKKyAg
ICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlm
b3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgo
bG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUluZGV4
KTsKKworICAgIG1fYWxwaGFMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX3RleFRyYW5z
Zm9ybUxvY2F0aW9uID0gbG9jYXRpb25zWzFdOworICAgIG1fZnJlcXVlbmN5TG9jYXRpb24gPSBs
b2NhdGlvbnNbMl07CiAgICAgQVNTRVJUKG1fYWxwaGFMb2NhdGlvbiAhPSAtMSAmJiBtX3RleFRy
YW5zZm9ybUxvY2F0aW9uICE9IC0xICYmIG1fZnJlcXVlbmN5TG9jYXRpb24gIT0gLTEpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
aGFkZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2hhZGVyQ2hyb21pdW0uaAppbmRleCBhODBjZmI3MjdmZTJjOTEyN2UzZmUxMzRjZGFmOTYw
ODk5NTIxMjcyLi4wMDg3MmU0YTQ3MTEwYjM3MzcwNjA3NDdmM2ZlNWMzZGYzYWIwOGIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1NoYWRlckNocm9taXVtLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyUG9z
VGV4IHsKIHB1YmxpYzoKICAgICBWZXJ0ZXhTaGFkZXJQb3NUZXgoKTsKIAotICAgIHZvaWQgaW5p
dChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAg
dm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFt
LCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgU3Ry
aW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50IG1hdHJpeExvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQpAQCAtNTQsNyArNTQsNyBAQCBjbGFz
cyBWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoIHsKIHB1YmxpYzoKICAgICBWZXJ0ZXhTaGFk
ZXJQb3NUZXhZVVZTdHJldGNoKCk7CiAKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlm
b3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmco
KSBjb25zdDsKIAogICAgIGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0
cml4TG9jYXRpb247IH0KQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyUG9zIHsK
IHB1YmxpYzoKICAgICBWZXJ0ZXhTaGFkZXJQb3MoKTsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0
KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVz
aW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgU3RyaW5nIGdldFNo
YWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiBj
bGFzcyBWZXJ0ZXhTaGFkZXJQb3NUZXhJZGVudGl0eSB7CiBwdWJsaWM6Ci0gICAgdm9pZCBpbml0
KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKSB7IH0KKyAg
ICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dy
YW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KSB7IH0KICAg
ICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiB9OwogCkBAIC05MCw3ICs5MCw3IEBA
IGNsYXNzIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSB7CiBwdWJsaWM6CiAgICAgVmVydGV4
U2hhZGVyUG9zVGV4VHJhbnNmb3JtKCk7CiAKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFw
aGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRV
bmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdDsKIAogICAgIGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
bWF0cml4TG9jYXRpb247IH0KQEAgLTEwNSw3ICsxMDUsNyBAQCBjbGFzcyBWZXJ0ZXhTaGFkZXJR
dWFkIHsKIHB1YmxpYzoKICAgICBWZXJ0ZXhTaGFkZXJRdWFkKCk7CiAKLSAgICB2b2lkIGluaXQo
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZv
aWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwg
Ym9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIFN0cmlu
ZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBtYXRyaXhMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KQEAgLTEyMCw3ICsxMjAsNyBAQCBjbGFz
cyBWZXJ0ZXhTaGFkZXJUaWxlIHsKIHB1YmxpYzoKICAgICBWZXJ0ZXhTaGFkZXJUaWxlKCk7CiAK
LSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHBy
b2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5z
aWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5k
ZXgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBtYXRy
aXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KQEAgLTEzNyw3
ICsxMzcsNyBAQCBjbGFzcyBWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSB7CiBwdWJsaWM6CiAg
ICAgVmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm0oKTsKIAotICAgIGJvb2wgaW5pdChXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgYm9vbCBpbml0
KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVz
aW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgU3RyaW5nIGdldFNo
YWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQpAQCAtMTUyLDcgKzE1Miw3IEBAIGNsYXNzIEZyYWdt
ZW50VGV4QWxwaGFCaW5kaW5nIHsKIHB1YmxpYzoKICAgICBGcmFnbWVudFRleEFscGhhQmluZGlu
ZygpOwogCi0gICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNp
Z25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQz
RCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5p
Zm9ybUluZGV4KTsKICAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxw
aGFMb2NhdGlvbjsgfQogICAgIGludCBlZGdlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiAtMTsg
fQogICAgIGludCBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
LTE7IH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCBjbGFzcyBGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmcg
ewogcHVibGljOgogICAgIEZyYWdtZW50VGV4T3BhcXVlQmluZGluZygpOwogCi0gICAgdm9pZCBp
bml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAg
ICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dy
YW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBp
bnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9CiAgICAgaW50IGVkZ2VMb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9CiAgICAgaW50IGZyYWdtZW50VGV4VHJhbnNmb3Jt
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiAtMTsgfQpAQCAtMjIzLDcgKzIyMyw3IEBAIHB1Ymxp
YzoKIGNsYXNzIEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbCA6IHB1YmxpYyBGcmFnbWVu
dFRleEFscGhhQmluZGluZyB7CiBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygp
IGNvbnN0OwotICAgIGJvb2wgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5z
aWduZWQgcHJvZ3JhbSk7CisgICAgYm9vbCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0
M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVu
aWZvcm1JbmRleCk7CiBwcml2YXRlOgogICAgIGludCBtX3NhbXBsZXJMb2NhdGlvbjsKIH07CkBA
IC0yMzIsNyArMjMyLDcgQEAgY2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSB7CiBw
dWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSgpOwogCi0gICAgdm9pZCBp
bml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAg
ICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dy
YW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBT
dHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgYWxwaGFMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQpAQCAtMjQ5LDcgKzI0OSw3IEBAIGNs
YXNzIEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZyB7CiBwdWJsaWM6CiAgICAgRnJhZ21l
bnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nKCk7CiAKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0Jp
bmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIGludCBhbHBoYUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CiAgICAgaW50IHNhbXBsZXJMb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlckxvY2F0aW9uOyB9CiAgICAgaW50IGZyYWdt
ZW50VGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50VGV4VHJh
bnNmb3JtTG9jYXRpb247IH0KQEAgLTI3OCw3ICsyNzgsNyBAQCBwdWJsaWM6CiAgICAgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrKCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygp
IGNvbnN0OwogCi0gICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1
bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNl
VW5pZm9ybUluZGV4KTsKICAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YWxwaGFMb2NhdGlvbjsgfQogICAgIGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3NhbXBsZXJMb2NhdGlvbjsgfQogICAgIGludCBtYXNrU2FtcGxlckxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9tYXNrU2FtcGxlckxvY2F0aW9uOyB9CkBAIC0yOTQsNyArMjk0LDcgQEAg
cHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBKCk7CiAgICAgU3Ry
aW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCi0gICAgdm9pZCBpbml0KFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdC
aW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBpbnQgYWxwaGFMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQogICAgIGludCBzYW1wbGVyTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbjsgfQogICAgIGludCBtYXNr
U2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrU2FtcGxlckxvY2F0aW9uOyB9
CkBAIC0zMTIsNyArMzEyLDcgQEAgcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyWVVWVmlkZW8o
KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluaXQo
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZv
aWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwg
Ym9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogCiAgICAgaW50
IHlUZXh0dXJlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3lUZXh0dXJlTG9jYXRpb247IH0K
ICAgICBpbnQgdVRleHR1cmVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdVRleHR1cmVMb2Nh
dGlvbjsgfQpAQCAtMzM1LDcgKzMzNSw3IEBAIHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRlckNv
bG9yKCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCi0gICAgdm9pZCBp
bml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAg
ICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dy
YW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBp
bnQgY29sb3JMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JMb2NhdGlvbjsgfQogCiBw
cml2YXRlOgpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRlckNo
ZWNrZXJib2FyZCgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAotICAg
IHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3Jh
bSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25l
ZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCk7
CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247
IH0KICAgICBpbnQgdGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RleFRy
YW5zZm9ybUxvY2F0aW9uOyB9CiAgICAgaW50IGZyZXF1ZW5jeUxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9mcmVxdWVuY3lMb2NhdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcAppbmRleCAy
NjI3ODRkNjU4ZDVhOTZmM2U2ODNkN2RiYzJhMzcyOWQ0YWJiNTZiLi4zMzI0M2M4NTUyZDNmYTJl
ODUxZWY3Zjg2M2E1ZGU2MjAzNWM1MDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcApAQCAtMzQs
OCArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQotQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpBY2NlbGVyYXRlZFRleHR1cmVD
b3BpZXIoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKK0FjY2VsZXJhdGVk
VGV4dHVyZUNvcGllcjo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIGJvb2wgdXNpbmdCaW5kVW5pZm9ybXMpCiAgICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKKyAgICAsIG1fdXNpbmdCaW5kVW5pZm9ybXModXNpbmdCaW5kVW5pZm9y
bXMpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9mYm8g
PSBtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOwpAQCAtOTAsNyArOTEsNyBAQCB2b2lk
IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQq
IGNjQ29udGV4dCwgdW5zaWduZQogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0
ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVCkpOwogCiAgICAgaWYg
KCFtX2JsaXRQcm9ncmFtLT5pbml0aWFsaXplZCgpKQotICAgICAgICBtX2JsaXRQcm9ncmFtLT5p
bml0aWFsaXplKGNvbnRleHQpOworICAgICAgICBtX2JsaXRQcm9ncmFtLT5pbml0aWFsaXplKGNv
bnRleHQsIG1fdXNpbmdCaW5kVW5pZm9ybXMpOwogCiAgICAgLy8gVE9ETzogVXNlIEVYVF9mcmFt
ZWJ1ZmZlcl9ibGl0IGlmIGF2YWlsYWJsZS4KICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNl
UHJvZ3JhbShtX2JsaXRQcm9ncmFtLT5wcm9ncmFtKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaAppbmRl
eCA2NDYxODlhYjYxODg0MzRkZDhlZDBlNzcyMGMyNmYwMDgyODFkM2Q2Li5jMmJjZDQyN2MzMTAw
YzJhNTQ4YTgxMjMyOGFhNzcyYWVhNGZhYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oCkBAIC01Mywx
NiArNTMsMTYgQEAgcHJvdGVjdGVkOgogY2xhc3MgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyIDog
cHVibGljIFRleHR1cmVDb3BpZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJh
dGVkVGV4dHVyZUNvcGllcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8QWNjZWxl
cmF0ZWRUZXh0dXJlQ29waWVyPiBjcmVhdGUoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+
IGNyZWF0ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBib29sIHVzaW5n
QmluZFVuaWZvcm1zKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBY2NlbGVy
YXRlZFRleHR1cmVDb3BpZXIoY29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcihjb250ZXh0LCB1c2luZ0JpbmRVbmlmb3JtcykpOwog
ICAgIH0KICAgICB2aXJ0dWFsIH5BY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBjb3B5VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIHVuc2lnbmVkIHNvdXJj
ZVRleHR1cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIGJvb2wgdXNpbmdCaW5kVW5pZm9ybXMpOwogCiBw
cml2YXRlOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4SWRl
bnRpdHksIEZyYWdtZW50U2hhZGVyUkdCQVRleD4gQmxpdFByb2dyYW07CkBAIC03MSw2ICs3MSw3
IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX2ZibzsKICAgICBQbGF0Zm9ybTNE
T2JqZWN0IG1fcG9zaXRpb25CdWZmZXI7CiAgICAgT3duUHRyPEJsaXRQcm9ncmFtPiBtX2JsaXRQ
cm9ncmFtOworICAgIGJvb2wgbV91c2luZ0JpbmRVbmlmb3JtczsKIH07CiAKICNlbmRpZiAvLyBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150528</attachid>
            <date>2012-07-02 21:21:27 -0700</date>
            <delta_ts>2012-07-03 11:29:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90217-20120702212116.patch</filename>
            <type>text/plain</type>
            <size>55350</size>
            <attacher>alexst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhYmMzOWZiNTVmM2E1
ZTBlNzU1MTUzZmZjOWQzZjFmM2E5YzZiMTlhLi5iZjdhZWI0YjZjNmI4OGZmNWE1NmMyYjU3MWFj
NzdiYmZhNWFkZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNy0wMiAg
QWxleCBTYWtoYXJ0Y2hvdWsgIDxhbGV4c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gQXZvaWQgY2FsbGluZyBnZXRVbmlmb3JtTG9jYXRpb24/PygpIGluIHRoZSBjb21wb3Np
dG9yIHN0YXJ0dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkwMjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkaW5nIGFuIGVudHJ5IHBvaW50IGZvciBiaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0u
CisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAg
ICAgICAgKFdlYkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0Q6OmJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTSk6CisKIDIwMTItMDctMDEg
IEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEyMTY1MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNWY4ZGRjN2FkNzU1NmIxYzhi
MWIyYjg5ZjhhYjVjYTE1OTI2NjJkLi5mMWY0YTgxMjM2ZDJkZmQ3MzdkYTFkZjY3N2M4NmQyNmI3
ZTg5Yzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMTItMDctMDIgIEFsZXggU2Fr
aGFydGNob3VrICA8YWxleHN0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEF2
b2lkIGNhbGxpbmcgZ2V0VW5pZm9ybUxvY2F0aW9uPz8oKSBpbiB0aGUgY29tcG9zaXRvciBzdGFy
dHVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDIx
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFsbG93cyBjaHJvbWUgY29tcG9zaXRvciB0byBiaW5kIHVuaWZvcm0gbG9jYXRpb25z
IGluc3RlYWQgb2YgcXVlcnlpbmcgCisgICAgICAgIHRoZW0gZnJvbSB0aGUgZ3JhcGhpY3MgY29u
dGV4dCBieSB1c2luZyBHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24uCisKKyAgICAg
ICAgVGhlIGV4dGVudGlvbiBpdHNlbGYgaXMgdGVzdGVkIGluIGNocm9taXVtIGFuZCB0aGUgY2hh
bmdlIGluIHdlYmtpdCBzaW1wbHkgYWRkcworICAgICAgICBwbHVtYmluZyB0byBhbGxvdyBpdHMg
dXNhZ2UuIEV4aXN0aW5nIHBpeGVsIHRlc3RzIHdvdWxkIGJlIGFibGUgdG8gdmVyaWZ5IHByb3Bl
ciBiZWhhdmlvdXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNvbGlkQ29sb3JQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVy
UGFzc1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpy
ZW5kZXJQYXNzUHJvZ3JhbUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtT3BhcXVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1BQSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZU9w
YXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9n
cmFtU3dpenpsZUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dGV4dHVyZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp0ZXh0dXJlUHJvZ3JhbUZsaXApOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjp0ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OnZpZGVvWVVWUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgor
ICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9n
cmFtQmluZGluZ0Jhc2U6OlByb2dyYW1CaW5kaW5nQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
cm9ncmFtQmluZGluZ0Jhc2U6On5Qcm9ncmFtQmluZGluZ0Jhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvZ3JhbUJpbmRpbmdCYXNlOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1C
aW5kaW5nQmFzZTo6bGluayk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlByb2dyYW1CaW5kaW5nQmFzZTo6Y2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFt
QmluZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6UHJv
Z3JhbUJpbmRpbmdCYXNlOjpjbGVhbnVwU2hhZGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaDoKKyAgICAgICAgKFByb2dyYW1CaW5kaW5n
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGluZzo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4Ojppbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OmluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmVydGV4U2hhZGVyUG9zOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNo
YWRlclBvc1RleFRyYW5zZm9ybTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFk
ZXJRdWFkOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclRpbGU6OmluaXQp
OgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmluaXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUJpbmRpbmc6OmluaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjppbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbDo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBOjppbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZzo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6OmluaXQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE6OmluaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJZVVZWaWRlbzo6aW5pdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFnbWVudFNoYWRlckNvbG9yOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdt
ZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjppbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgorICAgICAgICAoVmVydGV4U2hhZGVyUG9zVGV4
KToKKyAgICAgICAgKFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2gpOgorICAgICAgICAoVmVy
dGV4U2hhZGVyUG9zKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleElkZW50
aXR5Ojppbml0KToKKyAgICAgICAgKFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSk6CisgICAg
ICAgIChWZXJ0ZXhTaGFkZXJRdWFkKToKKyAgICAgICAgKFZlcnRleFNoYWRlclRpbGUpOgorICAg
ICAgICAoVmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm0pOgorICAgICAgICAoRnJhZ21lbnRUZXhB
bHBoYUJpbmRpbmcpOgorICAgICAgICAoRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nKToKKyAgICAg
ICAgKEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbCk6CisgICAgICAgIChGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYUFBKToKKyAgICAgICAgKEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmlu
ZGluZyk6CisgICAgICAgIChGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2spOgorICAgICAg
ICAoRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUEpOgorICAgICAgICAoRnJhZ21lbnRT
aGFkZXJZVVZWaWRlbyk6CisgICAgICAgIChGcmFnbWVudFNoYWRlckNvbG9yKToKKyAgICAgICAg
KEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJh
dGVkVGV4dHVyZUNvcGllcjo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKToKKyAgICAgICAgKEFjY2Vs
ZXJhdGVkVGV4dHVyZUNvcGllcik6CisKIDIwMTItMDctMDEgIEphbWVzIFJvYmluc29uICA8amFt
ZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIx
NjM1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiYmY4ZjdiNzRmM2Q4MGUwYjY3OTQw
ZTk4NmE1NzdiOTE0ZjFjNTE4Li43ODhkMjliYmE5MjQ4NmY3NmFkYTYwNzMwYjQxZTY4NmRjOTQ3
ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA3
LTAyICBBbGV4IFNha2hhcnRjaG91ayAgPGFsZXhzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBBdm9pZCBjYWxsaW5nIGdldFVuaWZvcm1Mb2NhdGlvbj8/KCkgaW4gdGhlIGNv
bXBvc2l0b3Igc3RhcnR1cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTAyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGaXhpbmcgdGhlIGJ1aWxkIGVycm9yLgorCisgICAgICAgICogdGVzdHMvVGV4dHVy
ZUNvcGllclRlc3QuY3BwOgorCiAyMDEyLTA3LTAxICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjE2NTAuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmgKaW5kZXggNTc3ZDcwMjg5YjhmZDU3OWQ3ODFiZTU0MDk4NzA3N2U5OTNkN2IyNS4u
NDRjMjA2NzE5YWYxOGQ4YTYxYjJkNDE3NmY5ZTNkZGE5NTZmODJhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApA
QCAtNDE0LDYgKzQxNCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdkVY
VChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGVudW0gcG5hbWUsIFdHQzNEaW50KiBwYXJhbXMpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdkVYVChXZWJHTElkIHF1ZXJ5LCBX
R0MzRGVudW0gcG5hbWUsIFdHQzNEdWludCogcGFyYW1zKSB7IH0KIAorICAgIC8vIEdMX0NIUk9N
SVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbgorICAgIHZpcnR1YWwgdm9pZCBiaW5kVW5pZm9ybUxv
Y2F0aW9uQ0hST01JVU0oV2ViR0xJZCBwcm9ncmFtLCBXR0MzRGludCBsb2NhdGlvbiwgY29uc3Qg
V0dDM0RjaGFyKiB1bmlmb3JtKSB7IH0KKwogICAgIC8vIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVy
ZQogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZUNIUk9NSVVNKFdHQzNEZW51bSB0YXJnZXQs
IFdHQzNEdWludCBzb3VyY2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXR0MzRHVpbnQgZGVzdElkLCBXR0MzRGludCBsZXZlbCwgV0dDM0RlbnVtIGludGVybmFsRm9y
bWF0KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDdjODE4
MWQzMDI1MGQ2NGY5NWQ4NGJjMWY5NDJhOWNhNmE4NzM5ODcuLmRkZDdkNTE1MzNlNWU4MjgwZTBj
YmFkMDNhMzgyNGEwYzA0YWZlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcApAQCAtMTY0LDYgKzE2NCw3IEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwKICAgICAsIG1fZGVmYXVsdFJl
bmRlclBhc3MoMCkKICAgICAsIG1faXNWaWV3cG9ydENoYW5nZWQoZmFsc2UpCiAgICAgLCBtX2lz
RnJhbWVidWZmZXJEaXNjYXJkZWQoZmFsc2UpCisgICAgLCBtX2lzVXNpbmdCaW5kVW5pZm9ybShm
YWxzZSkKICAgICAsIG1fdmlzaWJsZSh0cnVlKQogICAgICwgbV90ZXh0dXJlVXBsb2FkZXJTZXR0
aW5nKHRleHR1cmVVcGxvYWRlclNldHRpbmcpCiB7CkBAIC0yMjcsNiArMjI4LDggQEAgYm9vbCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUoKQogICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUs
ICZtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSkpOwogICAgIG1fY2FwYWJpbGl0aWVzLmJl
c3RUZXh0dXJlRm9ybWF0ID0gUGxhdGZvcm1Db2xvcjo6YmVzdFRleHR1cmVGb3JtYXQobV9jb250
ZXh0LCBleHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgi
KSk7CiAKKyAgICBtX2lzVXNpbmdCaW5kVW5pZm9ybSA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbiIpOworCiAgICAgaWYgKCFpbml0aWFsaXpl
U2hhcmVkT2JqZWN0cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE0MjksNyArMTQz
Miw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0
cygpCiAgICAgbV9pbXBsVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKFRl
eHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVNYW5hZ2VyOjpy
ZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXpl
KTsKLSAgICBtX3RleHR1cmVDb3BpZXIgPSBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0
ZShtX2NvbnRleHQpOworICAgIG1fdGV4dHVyZUNvcGllciA9IEFjY2VsZXJhdGVkVGV4dHVyZUNv
cGllcjo6Y3JlYXRlKG1fY29udGV4dCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIGlmICht
X3RleHR1cmVVcGxvYWRlclNldHRpbmcgPT0gVGhyb3R0bGVkVXBsb2FkZXIpCiAgICAgICAgIG1f
dGV4dHVyZVVwbG9hZGVyID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUobV9jb250
ZXh0KTsKICAgICBlbHNlCkBAIC0xNDUyLDcgKzE0NTUsNyBAQCBjb25zdCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OlRpbGVDaGVja2VyYm9hcmRQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnRpbAogICAgICAgICBtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRp
bGVDaGVja2VyYm9hcmRQcm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlmICghbV90aWxlQ2hlY2tl
cmJvYXJkUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNj
IiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2hlY2tlcmJvYXJkUHJvZ3JhbTo6aW5pdGFsaXpl
Iik7Ci0gICAgICAgIG1fdGlsZUNoZWNrZXJib2FyZFByb2dyYW0tPmluaXRpYWxpemUobV9jb250
ZXh0KTsKKyAgICAgICAgbV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZUNo
ZWNrZXJib2FyZFByb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNDYzLDcgKzE0NjYsNyBAQCBjb25zdCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OlNvbGlkQ29sb3JQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnNvbGlkQ29sbwogICAgICAgICBtX3NvbGlkQ29sb3JQcm9ncmFtID0gYWRvcHRQdHIo
bmV3IFNvbGlkQ29sb3JQcm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlmICghbV9zb2xpZENvbG9y
UHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6c29saWRDb2xvclByb2dyYW06OmluaXRpYWxpemUiKTsKLSAg
ICAgICAgbV9zb2xpZENvbG9yUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAg
ICBtX3NvbGlkQ29sb3JQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5nQmlu
ZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV9zb2xpZENvbG9yUHJvZ3JhbS5nZXQoKTsK
IH0KQEAgLTE0NzQsNyArMTQ3Nyw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6SGVh
ZHNVcERpc3BsYXlQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmhlYWRzCiAgICAgICAg
IG1faGVhZHNVcERpc3BsYXlQcm9ncmFtID0gYWRvcHRQdHIobmV3IEhlYWRzVXBEaXNwbGF5UHJv
Z3JhbShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0
aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV9o
ZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAgICAgICAgbV9o
ZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5k
VW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS5nZXQo
KTsKIH0KQEAgLTE0ODQsNyArMTQ4Nyw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
UmVuZGVyUGFzc1Byb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzCiAgICAg
QVNTRVJUKG1fcmVuZGVyUGFzc1Byb2dyYW0pOwogICAgIGlmICghbV9yZW5kZXJQYXNzUHJvZ3Jh
bS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc1Byb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAg
bV9yZW5kZXJQYXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3Jl
bmRlclBhc3NQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5nQmluZFVuaWZv
cm0pOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5kZXJQYXNzUHJvZ3JhbS5nZXQoKTsKIH0KQEAg
LTE0OTUsNyArMTQ5OCw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFz
c1Byb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQCiAgICAgICAgIG1fcmVu
ZGVyUGFzc1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzUHJvZ3JhbUFBKG1fY29u
dGV4dCkpOwogICAgIGlmICghbV9yZW5kZXJQYXNzUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7
CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5k
ZXJQYXNzUHJvZ3JhbUFBOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fcmVuZGVyUGFzc1Byb2dy
YW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFt
QUEtPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CiAgICAgfQog
ICAgIHJldHVybiBtX3JlbmRlclBhc3NQcm9ncmFtQUEuZ2V0KCk7CiB9CkBAIC0xNTA2LDcgKzE1
MDksNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclBhc3NNYXNrUHJvZ3Jh
bSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZQogICAgICAgICBtX3JlbmRlclBhc3NNYXNr
UHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzTWFza1Byb2dyYW0obV9jb250ZXh0KSk7
CiAgICAgaWYgKCFtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAg
ICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFz
c01hc2tQcm9ncmFtOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9n
cmFtLT5pbml0aWFsaXplKG1fY29udGV4dCk7CisgICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9n
cmFtLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIH0K
ICAgICByZXR1cm4gbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNTE3LDcg
KzE1MjAsNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclBhc3NNYXNrUHJv
Z3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbgogICAgICAgICBtX3JlbmRlclBhc3NN
YXNrUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IFJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKG1fY29u
dGV4dCkpOwogICAgIGlmICghbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQo
KSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
cmVuZGVyUGFzc01hc2tQcm9ncmFtQUE6OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV9yZW5kZXJQ
YXNzTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3JlbmRl
clBhc3NNYXNrUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5nQmluZFVu
aWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS5nZXQo
KTsKIH0KQEAgLTE1MjcsNyArMTUzMCw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
VGlsZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW0oKQogICAgIEFT
U0VSVChtX3RpbGVQcm9ncmFtKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW0tPmluaXRpYWxpemVk
KCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06
OnRpbGVQcm9ncmFtOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fdGlsZVByb2dyYW0tPmluaXRp
YWxpemUobV9jb250ZXh0KTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVBy
b2dyYW0uZ2V0KCk7CiB9CkBAIC0xNTM3LDcgKzE1NDAsNyBAQCBjb25zdCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OlRpbGVQcm9ncmFtT3BhcXVlKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQ
cm9ncgogICAgIEFTU0VSVChtX3RpbGVQcm9ncmFtT3BhcXVlKTsKICAgICBpZiAoIW1fdGlsZVBy
b2dyYW1PcGFxdWUtPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIs
ICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtT3BhcXVlOjppbml0aWFsaXplIik7
Ci0gICAgICAgIG1fdGlsZVByb2dyYW1PcGFxdWUtPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAg
ICAgICAgbV90aWxlUHJvZ3JhbU9wYXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNVc2lu
Z0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1PcGFxdWUuZ2V0
KCk7CiB9CkBAIC0xNTQ4LDcgKzE1NTEsNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OlRpbGVQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1BQQogICAg
ICAgICBtX3RpbGVQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1BQShtX2NvbnRl
eHQpKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAg
ICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1B
QTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3RpbGVQcm9ncmFtQUEtPmluaXRpYWxpemUobV9j
b250ZXh0KTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dCwg
bV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV90aWxlUHJvZ3JhbUFB
LmdldCgpOwogfQpAQCAtMTU1OSw3ICsxNTYyLDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpUaWxlUHJvZ3JhbVN3aXp6bGUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2cK
ICAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGUgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1T
d2l6emxlKG1fY29udGV4dCkpOwogICAgIGlmICghbV90aWxlUHJvZ3JhbVN3aXp6bGUtPmluaXRp
YWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hy
b21pdW06OnRpbGVQcm9ncmFtU3dpenpsZTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3RpbGVQ
cm9ncmFtU3dpenpsZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3RpbGVQcm9n
cmFtU3dpenpsZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsK
ICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1Td2l6emxlLmdldCgpOwogfQpAQCAtMTU3
MCw3ICsxNTczLDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlUHJvZ3JhbVN3
aXp6bGVPcGFxdWUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGkKICAgICAgICAgbV90aWxlUHJv
Z3JhbVN3aXp6bGVPcGFxdWUgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1Td2l6emxlT3BhcXVl
KG1fY29udGV4dCkpOwogICAgIGlmICghbV90aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUtPmluaXRp
YWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hy
b21pdW06OnRpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBt
X3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAg
ICBtX3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNV
c2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1Td2l6emxl
T3BhcXVlLmdldCgpOwogfQpAQCAtMTU4MSw3ICsxNTg0LDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpUaWxlUHJvZ3JhbVN3aXp6bGVBQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0
aWxlUHIKICAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGVBQSA9IGFkb3B0UHRyKG5ldyBUaWxl
UHJvZ3JhbVN3aXp6bGVBQShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1Td2l6
emxlQUEtPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXll
clJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZUFBOjppbml0aWFsaXplIik7Ci0g
ICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlQUEtPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAg
ICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGVBQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNV
c2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1Td2l6emxl
QUEuZ2V0KCk7CiB9CkBAIC0xNTkyLDcgKzE1OTUsNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OlRleHR1cmVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleHR1cmVQcm9n
cgogICAgICAgICBtX3RleHR1cmVQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRleHR1cmVQcm9ncmFt
KG1fY29udGV4dCkpOwogICAgIGlmICghbV90ZXh0dXJlUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkg
ewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4
dHVyZVByb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbS0+aW5p
dGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3RleHR1cmVQcm9ncmFtLT5pbml0aWFsaXpl
KG1fY29udGV4dCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV90
ZXh0dXJlUHJvZ3JhbS5nZXQoKTsKIH0KQEAgLTE2MDMsNyArMTYwNiw3IEBAIGNvbnN0IExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6VGV4dHVyZVByb2dyYW1GbGlwKiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnRleHR1cmVQCiAgICAgICAgIG1fdGV4dHVyZVByb2dyYW1GbGlwID0gYWRvcHRQdHIobmV3
IFRleHR1cmVQcm9ncmFtRmxpcChtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGV4dHVyZVByb2dy
YW1GbGlwLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp0ZXh0dXJlUHJvZ3JhbUZsaXA6OmluaXRpYWxpemUiKTsKLSAg
ICAgICAgbV90ZXh0dXJlUHJvZ3JhbUZsaXAtPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAgICAg
ICAgbV90ZXh0dXJlUHJvZ3JhbUZsaXAtPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdC
aW5kVW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3RleHR1cmVQcm9ncmFtRmxpcC5nZXQo
KTsKIH0KQEAgLTE2MTQsNyArMTYxNyw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
VGV4dHVyZUlPU3VyZmFjZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4CiAgICAg
ICAgIG1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgVGV4dHVyZUlPU3Vy
ZmFjZVByb2dyYW0obV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3RleHR1cmVJT1N1cmZhY2VQcm9n
cmFtLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp0ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbTo6aW5pdGlhbGl6ZSIpOwot
ICAgICAgICBtX3RleHR1cmVJT1N1cmZhY2VQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCk7
CisgICAgICAgIG1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0
LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3RleHR1cmVJT1N1
cmZhY2VQcm9ncmFtLmdldCgpOwogfQpAQCAtMTYyNSw3ICsxNjI4LDcgQEAgY29uc3QgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpWaWRlb1lVVlByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dmlkZW9ZVVZQcm8KICAgICAgICAgbV92aWRlb1lVVlByb2dyYW0gPSBhZG9wdFB0cihuZXcgVmlk
ZW9ZVVZQcm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlmICghbV92aWRlb1lVVlByb2dyYW0tPmlu
aXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVy
Q2hyb21pdW06OnZpZGVvWVVWUHJvZ3JhbTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3ZpZGVv
WVVWUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3ZpZGVvWVVWUHJv
Z3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAgICB9
CiAgICAgcmV0dXJuIG1fdmlkZW9ZVVZQcm9ncmFtLmdldCgpOwogfQpAQCAtMTYzNiw3ICsxNjM5
LDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpWaWRlb1N0cmVhbVRleHR1cmVQcm9n
cmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnYKICAgICAgICAgbV92aWRlb1N0cmVhbVRleHR1
cmVQcm9ncmFtID0gYWRvcHRQdHIobmV3IFZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0obV9jb250
ZXh0KSk7CiAgICAgaWYgKCFtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0tPmluaXRpYWxpemVk
KCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06
OnN0cmVhbVRleHR1cmVQcm9ncmFtOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fdmlkZW9TdHJl
YW1UZXh0dXJlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3ZpZGVv
U3RyZWFtVGV4dHVyZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5k
VW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0u
Z2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDM0MjU0YjAw
YjkyMjJmMTBlMmY5ZDFjMzc5YTU3OTFmYzE4NzY5OTUuLjYyNWU4MmYwODhlMDcyMTUyZWVkYmNj
NjQ4Y2JjODUyOWVmYzVhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBA
IC0yNjksNiArMjY5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc1ZpZXdwb3J0Q2hhbmdl
ZDsKICAgICBib29sIG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZDsKKyAgICBib29sIG1faXNVc2lu
Z0JpbmRVbmlmb3JtOwogICAgIGJvb2wgbV92aXNpYmxlOwogICAgIFRleHR1cmVVcGxvYWRlck9w
dGlvbiBtX3RleHR1cmVVcGxvYWRlclNldHRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3Bw
CmluZGV4IDcyZTQ5ZTI1NWMzMDMxYzI3NjQwOGI3ODViZGNiZTI3ZGNjZDFmN2MuLjFhYmMyMTg2
YTNjZjAwMTIwYTYwZDg3ZDAwZTY0YWViMGFhZWYxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5j
cHAKQEAgLTQyLDYgKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQcm9ncmFtQmluZGlu
Z0Jhc2U6OlByb2dyYW1CaW5kaW5nQmFzZSgpCiAgICAgOiBtX3Byb2dyYW0oMCkKKyAgICAsIG1f
dmVydGV4U2hhZGVySWQoMCkKKyAgICAsIG1fZnJhZ21lbnRTaGFkZXJJZCgwKQogICAgICwgbV9p
bml0aWFsaXplZChmYWxzZSkKIHsKIH0KQEAgLTUwLDYgKzUyLDggQEAgUHJvZ3JhbUJpbmRpbmdC
YXNlOjp+UHJvZ3JhbUJpbmRpbmdCYXNlKCkKIHsKICAgICAvLyBJZiB5b3UgaGl0IHRoZXNlIGFz
c2VydHMsIHlvdSBpbml0aWFsaXplZCBidXQgZm9yZ290IHRvIGNhbGwgY2xlYW51cCgpLgogICAg
IEFTU0VSVCghbV9wcm9ncmFtKTsKKyAgICBBU1NFUlQoIW1fdmVydGV4U2hhZGVySWQpOworICAg
IEFTU0VSVCghbV9mcmFnbWVudFNoYWRlcklkKTsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6ZWQp
OwogfQogCkBAIC02MSwxMCArNjUsNDMgQEAgc3RhdGljIGJvb2wgY29udGV4dExvc3QoV2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAKIHZvaWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjppbml0
KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRl
ciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlcikKIHsKLSAgICBtX3Byb2dyYW0gPSBjcmVh
dGVTaGFkZXJQcm9ncmFtKGNvbnRleHQsIHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIpOwor
ICAgIFRSQUNFX0VWRU5UKCJQcm9ncmFtQmluZGluZ0Jhc2U6OmluaXQiLCB0aGlzLCAwKTsKKyAg
ICBtX3ZlcnRleFNoYWRlcklkID0gbG9hZFNoYWRlcihjb250ZXh0LCBHcmFwaGljc0NvbnRleHQz
RDo6VkVSVEVYX1NIQURFUiwgdmVydGV4U2hhZGVyKTsKKyAgICBpZiAoIW1fdmVydGV4U2hhZGVy
SWQpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0TG9zdChjb250ZXh0KSkKKyAgICAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSB2ZXJ0ZXggc2hhZGVyIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2ZyYWdtZW50U2hhZGVySWQgPSBsb2FkU2hhZGVyKGNvbnRleHQs
IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVIsIGZyYWdtZW50U2hhZGVyKTsKKyAg
ICBpZiAoIW1fZnJhZ21lbnRTaGFkZXJJZCkgeworICAgICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+ZGVsZXRlU2hhZGVyKG1fdmVydGV4U2hhZGVySWQpKTsKKyAgICAgICAgbV92ZXJ0ZXhTaGFk
ZXJJZCA9IDA7CisgICAgICAgIGlmICghY29udGV4dExvc3QoY29udGV4dCkpCisgICAgICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZnJhZ21lbnQgc2hhZGVyIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX3Byb2dyYW0gPSBjcmVhdGVTaGFkZXJQcm9ncmFtKGNv
bnRleHQsIG1fdmVydGV4U2hhZGVySWQsIG1fZnJhZ21lbnRTaGFkZXJJZCk7CiAgICAgQVNTRVJU
KG1fcHJvZ3JhbSB8fCBjb250ZXh0TG9zdChjb250ZXh0KSk7CiB9CiAKK3ZvaWQgUHJvZ3JhbUJp
bmRpbmdCYXNlOjpsaW5rKFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQoreworICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5saW5rUHJvZ3JhbShtX3Byb2dyYW0pKTsKKyAgICBjbGVhbnVw
U2hhZGVycyhjb250ZXh0KTsKKyNpZm5kZWYgTkRFQlVHCisgICAgaW50IGxpbmtlZCA9IDA7Cisg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmdldFByb2dyYW1pdihtX3Byb2dyYW0sIEdyYXBoaWNz
Q29udGV4dDNEOjpMSU5LX1NUQVRVUywgJmxpbmtlZCkpOworICAgIGlmICghbGlua2VkKSB7Cisg
ICAgICAgIGlmICghY29udGV4dExvc3QoY29udGV4dCkpCisgICAgICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBsaW5rIHNoYWRlciBwcm9ncmFtIik7CisgICAgICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5kZWxldGVQcm9ncmFtKG1fcHJvZ3JhbSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmCit9CisKIHZvaWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpjbGVhbnVwKFdlYkdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KQogewogICAgIG1faW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAg
LTc0LDYgKzExMSw4IEBAIHZvaWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpjbGVhbnVwKFdlYkdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShtX3Byb2dyYW0pKTsKICAgICBtX3Byb2dyYW0g
PSAwOworCisgICAgY2xlYW51cFNoYWRlcnMoY29udGV4dCk7CiB9CiAKIHVuc2lnbmVkIFByb2dy
YW1CaW5kaW5nQmFzZTo6bG9hZFNoYWRlcihXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
dW5zaWduZWQgdHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJTb3VyY2UpCkBAIC05NSwyNCArMTM0
LDggQEAgdW5zaWduZWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpsb2FkU2hhZGVyKFdlYkdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZAogICAgIHJldHVybiBzaGFkZXI7CiB9CiAKLXVu
c2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNv
bnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJTb3VyY2UpCit1bnNpZ25lZCBQcm9ncmFtQmluZGlu
Z0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0oV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHVuc2lnbmVkIHZlcnRleFNoYWRlciwgdW5zaWduZWQgZnJhZ21lbnRTaGFkZXIpCiB7Ci0gICAg
VFJBQ0VfRVZFTlQwKCJjYyIsICJQcm9ncmFtQmluZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dy
YW0iKTsKLSAgICB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQsIEdy
YXBoaWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVSLCB2ZXJ0ZXhTaGFkZXJTb3VyY2UpOwotICAg
IGlmICghdmVydGV4U2hhZGVyKSB7Ci0gICAgICAgIGlmICghY29udGV4dExvc3QoY29udGV4dCkp
Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgdmVydGV4IHNoYWRlciIp
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBmcmFnbWVudFNoYWRl
ciA9IGxvYWRTaGFkZXIoY29udGV4dCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZSQUdNRU5UX1NIQURF
UiwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIGlmICghZnJhZ21lbnRTaGFkZXIpIHsKLSAg
ICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpKTsK
LSAgICAgICAgaWYgKCFjb250ZXh0TG9zdChjb250ZXh0KSkKLSAgICAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGNyZWF0ZSBmcmFnbWVudCBzaGFkZXIiKTsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotCiAgICAgdW5zaWduZWQgcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmNyZWF0ZVBy
b2dyYW0oKTsKICAgICBpZiAoIXByb2dyYW1PYmplY3QpIHsKICAgICAgICAgaWYgKCFjb250ZXh0
TG9zdChjb250ZXh0KSkKQEAgLTEyNywyMyArMTUwLDIxIEBAIHVuc2lnbmVkIFByb2dyYW1CaW5k
aW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW1P
YmplY3QsIEdlb21ldHJ5QmluZGluZzo6cG9zaXRpb25BdHRyaWJMb2NhdGlvbigpLCAiYV9wb3Np
dGlvbiIpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKHBy
b2dyYW1PYmplY3QsIEdlb21ldHJ5QmluZGluZzo6dGV4Q29vcmRBdHRyaWJMb2NhdGlvbigpLCAi
YV90ZXhDb29yZCIpKTsKIAotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5saW5rUHJvZ3JhbShw
cm9ncmFtT2JqZWN0KSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGludCBsaW5rZWQgPSAwOwotICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbU9iamVjdCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTktfU1RBVFVTLCAmbGlua2VkKSk7Ci0gICAgaWYgKCFsaW5rZWQpIHsK
LSAgICAgICAgaWYgKCFjb250ZXh0TG9zdChjb250ZXh0KSkKLSAgICAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGxpbmsgc2hhZGVyIHByb2dyYW0iKTsKLSAgICAgICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbU9iamVjdCkpOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0jZW5kaWYKLQotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFk
ZXIodmVydGV4U2hhZGVyKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0ZVNoYWRl
cihmcmFnbWVudFNoYWRlcikpOwogICAgIHJldHVybiBwcm9ncmFtT2JqZWN0OwogfQogCit2b2lk
IFByb2dyYW1CaW5kaW5nQmFzZTo6Y2xlYW51cFNoYWRlcnMoV2ViR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQpCit7CisgICAgaWYgKG1fdmVydGV4U2hhZGVySWQpIHsKKyAgICAgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPmRlbGV0ZVNoYWRlcihtX3ZlcnRleFNoYWRlcklkKSk7CisgICAgICAg
IG1fdmVydGV4U2hhZGVySWQgPSAwOworICAgIH0KKyAgICBpZiAobV9mcmFnbWVudFNoYWRlcklk
KSB7CisgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFkZXIobV9mcmFnbWVu
dFNoYWRlcklkKSk7CisgICAgICAgIG1fZnJhZ21lbnRTaGFkZXJJZCA9IDA7CisgICAgfQorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaAppbmRleCAzOTA0OGY5MDMyMGJhZDI0ZWMzYzQ5
Zjk1MmQ2OTRjNDE4ZTdlZWJlLi5jMmQ0N2RmZmNhYzViYzQ2OGY3N2MyYTYwOGNhZDZhOWQ4ZWFh
OWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Qcm9ncmFtQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAg
IH5Qcm9ncmFtQmluZGluZ0Jhc2UoKTsKIAogICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEKiwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYg
ZnJhZ21lbnRTaGFkZXIpOworICAgIHZvaWQgbGluayhXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEKik7CiAgICAgdm9pZCBjbGVhbnVwKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsK
IAogICAgIHVuc2lnbmVkIHByb2dyYW0oKSBjb25zdCB7IEFTU0VSVChtX2luaXRpYWxpemVkKTsg
cmV0dXJuIG1fcHJvZ3JhbTsgfQpAQCAtNTAsOSArNTEsMTIgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogCiAgICAgdW5zaWduZWQgbG9hZFNoYWRlcihXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
KiwgdW5zaWduZWQgdHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJTb3VyY2UpOwotICAgIHVuc2ln
bmVkIGNyZWF0ZVNoYWRlclByb2dyYW0oV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIGNv
bnN0IFN0cmluZyYgdmVydGV4U2hhZGVyU291cmNlLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hh
ZGVyU291cmNlKTsKKyAgICB1bnNpZ25lZCBjcmVhdGVTaGFkZXJQcm9ncmFtKFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIsIHVuc2lnbmVkIGZyYWdt
ZW50U2hhZGVyKTsKKyAgICB2b2lkIGNsZWFudXBTaGFkZXJzKFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqKTsKIAogICAgIHVuc2lnbmVkIG1fcHJvZ3JhbTsKKyAgICB1bnNpZ25lZCBtX3Zl
cnRleFNoYWRlcklkOworICAgIHVuc2lnbmVkIG1fZnJhZ21lbnRTaGFkZXJJZDsKICAgICBib29s
IG1faW5pdGlhbGl6ZWQ7CiB9OwogCkBAIC02NCwxNCArNjgsMjQgQEAgcHVibGljOgogICAgICAg
ICBQcm9ncmFtQmluZGluZ0Jhc2U6OmluaXQoY29udGV4dCwgbV92ZXJ0ZXhTaGFkZXIuZ2V0U2hh
ZGVyU3RyaW5nKCksIG1fZnJhZ21lbnRTaGFkZXIuZ2V0U2hhZGVyU3RyaW5nKCkpOwogICAgIH0K
IAotICAgIHZvaWQgaW5pdGlhbGl6ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KQorICAgIHZvaWQgaW5pdGlhbGl6ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBib29sIHVzaW5nQmluZFVuaWZvcm0pCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCk7CiAgICAgICAgIEFTU0VSVChtX3Byb2dyYW0pOwogICAgICAgICBBU1NFUlQoIW1faW5p
dGlhbGl6ZWQpOwogCi0gICAgICAgIG1fdmVydGV4U2hhZGVyLmluaXQoY29udGV4dCwgbV9wcm9n
cmFtKTsKLSAgICAgICAgbV9mcmFnbWVudFNoYWRlci5pbml0KGNvbnRleHQsIG1fcHJvZ3JhbSk7
CisgICAgICAgIC8vIE5lZWQgdG8gYmluZCB1bmlmb3JtcyBiZWZvcmUgbGlua2luZworICAgICAg
ICBpZiAoIXVzaW5nQmluZFVuaWZvcm0pCisgICAgICAgICAgICBsaW5rKGNvbnRleHQpOworCisg
ICAgICAgIGludCBiYXNlVW5pZm9ybUluZGV4ID0gMDsKKyAgICAgICAgbV92ZXJ0ZXhTaGFkZXIu
aW5pdChjb250ZXh0LCBtX3Byb2dyYW0sIHVzaW5nQmluZFVuaWZvcm0sICZiYXNlVW5pZm9ybUlu
ZGV4KTsKKyAgICAgICAgbV9mcmFnbWVudFNoYWRlci5pbml0KGNvbnRleHQsIG1fcHJvZ3JhbSwg
dXNpbmdCaW5kVW5pZm9ybSwgJmJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgICAgIC8vIExpbmsg
YWZ0ZXIgYmluZGluZyB1bmlmb3JtcworICAgICAgICBpZiAodXNpbmdCaW5kVW5pZm9ybSkKKyAg
ICAgICAgICAgIGxpbmsoY29udGV4dCk7CisKICAgICAgICAgbV9pbml0aWFsaXplZCA9IHRydWU7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKaW5kZXggMmExNDBkMWQ3ODViNjQzOWIz
MWUwYjJmODRmMzI0ZTU4Y2U3MDc4NC4uZTBiNzkxNmEzN2MyODVmMjcwYmI5NjczNWRmNmZmZTcw
M2Q1Y2M5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcApAQCAtMzgsMTQgKzM4LDM5IEBAIHVz
aW5nIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorbmFtZXNwYWNlIHsKKworc3RhdGljIHZvaWQgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMo
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGNvbnN0IGNo
YXIqKiBzaGFkZXJVbmlmb3Jtcywgc2l6ZV90IGNvdW50LCBzaXplX3QgbWF4TG9jYXRpb25zLCBp
bnQqIGxvY2F0aW9ucywgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5k
ZXgpCit7CisgICAgZm9yIChzaXplX3QgdW5pZm9ybUluZGV4ID0gMDsgdW5pZm9ybUluZGV4IDwg
Y291bnQ7IHVuaWZvcm1JbmRleCArKykgeworICAgICAgICBpZiAodW5pZm9ybUluZGV4ID49IG1h
eExvY2F0aW9ucykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodXNpbmdCaW5k
VW5pZm9ybSkgeworICAgICAgICAgICAgbG9jYXRpb25zW3VuaWZvcm1JbmRleF0gPSAoKmJhc2VV
bmlmb3JtSW5kZXgpKys7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5kVW5pZm9ybUxvY2F0aW9u
Q0hST01JVU0ocHJvZ3JhbSwgbG9jYXRpb25zW3VuaWZvcm1JbmRleF0sIHNoYWRlclVuaWZvcm1z
W3VuaWZvcm1JbmRleF0pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGxvY2F0aW9uc1t1
bmlmb3JtSW5kZXhdID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIHNoYWRl
clVuaWZvcm1zW3VuaWZvcm1JbmRleF0pOworICAgIH0KK30KKworfQorCiBWZXJ0ZXhTaGFkZXJQ
b3NUZXg6OlZlcnRleFNoYWRlclBvc1RleCgpCiAgICAgOiBtX21hdHJpeExvY2F0aW9uKC0xKQog
ewogfQogCi12b2lkIFZlcnRleFNoYWRlclBvc1RleDo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgVmVydGV4U2hhZGVyUG9zVGV4Ojpp
bml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29s
IHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX21hdHJp
eExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgi
KTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAg
Im1hdHJpeCIsCisgICAgfTsKKyAgICBpbnQgbG9jYXRpb25zWzFdOworCisgICAgZ2V0UHJvZ3Jh
bVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9B
UlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyks
IGxvY2F0aW9ucywgdXNpbmdCaW5kVW5pZm9ybSwgYmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBt
X21hdHJpeExvY2F0aW9uID0gbG9jYXRpb25zWzBdOwogICAgIEFTU0VSVChtX21hdHJpeExvY2F0
aW9uICE9IC0xKTsKIH0KIApAQCAtNzEsMTEgKzk2LDIwIEBAIFZlcnRleFNoYWRlclBvc1RleFlV
VlN0cmV0Y2g6OlZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2goKQogewogfQogCi12b2lkIFZl
cnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0
Y2g6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0s
IGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1f
bWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1h
dHJpeCIpOwotICAgIG1feVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAieV93aWR0aFNjYWxlRmFjdG9yIik7Ci0gICAgbV91dldp
ZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAidXZfd2lkdGhTY2FsZUZhY3RvciIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFk
ZXJVbmlmb3Jtc1tdID0geworICAgICAgICAibWF0cml4IiwKKyAgICAgICAgInlfd2lkdGhTY2Fs
ZUZhY3RvciIsCisgICAgICAgICJ1dl93aWR0aFNjYWxlRmFjdG9yIiwKKyAgICB9OworICAgIGlu
dCBsb2NhdGlvbnNbM107CisKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0
LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3Jt
cyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlm
b3JtLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fbWF0cml4TG9jYXRpb24gPSBsb2NhdGlv
bnNbMF07CisgICAgbV95V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uID0gbG9jYXRpb25zWzFdOwor
ICAgIG1fdXZXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24gPSBsb2NhdGlvbnNbMl07CiAgICAgQVNT
RVJUKG1fbWF0cml4TG9jYXRpb24gIT0gLTEgJiYgbV95V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9u
ICE9IC0xICYmIG1fdXZXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC0x
MDQsOSArMTM4LDE2IEBAIFZlcnRleFNoYWRlclBvczo6VmVydGV4U2hhZGVyUG9zKCkKIHsKIH0K
IAotdm9pZCBWZXJ0ZXhTaGFkZXJQb3M6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclBvczo6aW5pdChXZWJHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRV
bmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9tYXRyaXhMb2NhdGlvbiA9
IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7CisgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJtYXRyaXgiLAor
ICAgIH07CisgICAgaW50IGxvY2F0aW9uc1sxXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9j
YXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RI
KHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMs
IHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9tYXRyaXhMb2Nh
dGlvbiA9IGxvY2F0aW9uc1swXTsKICAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSk7
CiB9CiAKQEAgLTEyOCwxMCArMTY5LDE4IEBAIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6
VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtKCkKIHsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFkZXJQ
b3NUZXhUcmFuc2Zvcm06OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2ln
bmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6aW5pdChXZWJH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0Jp
bmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9tYXRyaXhMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7Ci0gICAg
bV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAidGV4VHJhbnNmb3JtIik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZv
cm1zW10gPSB7CisgICAgICAgICJtYXRyaXgiLAorICAgICAgICAidGV4VHJhbnNmb3JtIiwKKyAg
ICB9OworICAgIGludCBsb2NhdGlvbnNbMl07CisKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0
aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChz
aGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1
c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fbWF0cml4TG9jYXRp
b24gPSBsb2NhdGlvbnNbMF07CisgICAgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGxvY2F0aW9u
c1sxXTsKICAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAmJiBtX3RleFRyYW5zZm9y
bUxvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtMTcwLDEwICsyMTksMTggQEAgU3RyaW5nIFZlcnRl
eFNoYWRlclBvc1RleElkZW50aXR5OjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogICAgICk7CiB9
CiAKLXZvaWQgVmVydGV4U2hhZGVyUXVhZDo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgVmVydGV4U2hhZGVyUXVhZDo6aW5pdChXZWJH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0Jp
bmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9tYXRyaXhMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7Ci0gICAg
bV9wb2ludExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJw
b2ludCIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAg
ICAgICAibWF0cml4IiwKKyAgICAgICAgInBvaW50IiwKKyAgICB9OworICAgIGludCBsb2NhdGlv
bnNbMl07CisKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFt
LCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9B
UlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNl
VW5pZm9ybUluZGV4KTsKKworICAgIG1fbWF0cml4TG9jYXRpb24gPSBsb2NhdGlvbnNbMF07Cisg
ICAgbV9wb2ludExvY2F0aW9uID0gbG9jYXRpb25zWzFdOwogICAgIEFTU0VSVChtX21hdHJpeExv
Y2F0aW9uICE9IC0xICYmIG1fcG9pbnRMb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTIwNiwxMSAr
MjYzLDIwIEBAIFZlcnRleFNoYWRlclRpbGU6OlZlcnRleFNoYWRlclRpbGUoKQogewogfQogCi12
b2lkIFZlcnRleFNoYWRlclRpbGU6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclRpbGU6OmluaXQoV2ViR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5p
Zm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fbWF0cml4TG9jYXRpb24gPSBj
b250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIG1fcG9p
bnRMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAicG9pbnQi
KTsKLSAgICBtX3ZlcnRleFRleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ2ZXJ0ZXhUZXhUcmFuc2Zvcm0iKTsKKyAgICBzdGF0aWMgY29u
c3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgIm1hdHJpeCIsCisgICAgICAg
ICJwb2ludCIsCisgICAgICAgICJ2ZXJ0ZXhUZXhUcmFuc2Zvcm0iLAorICAgIH07CisgICAgaW50
IGxvY2F0aW9uc1szXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQs
IHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1z
KSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZv
cm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGxvY2F0aW9u
c1swXTsKKyAgICBtX3BvaW50TG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV92ZXJ0ZXhU
ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGxvY2F0aW9uc1syXTsKICAgICBBU1NFUlQobV9tYXRyaXhM
b2NhdGlvbiAhPSAtMSAmJiBtX3BvaW50TG9jYXRpb24gIT0gLTEgJiYgbV92ZXJ0ZXhUZXhUcmFu
c2Zvcm1Mb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTI0MywxMCArMzA5LDE4IEBAIFZlcnRleFNo
YWRlclZpZGVvVHJhbnNmb3JtOjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSgpCiB7CiB9CiAK
LWJvb2wgVmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCitib29sIFZlcnRleFNoYWRlclZpZGVvVHJh
bnNmb3JtOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9n
cmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAg
ICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICJtYXRyaXgiKTsKLSAgICBtX3RleE1hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhNYXRyaXgiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
c2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgIm1hdHJpeCIsCisgICAgICAgICJ0ZXhNYXRy
aXgiLAorICAgIH07CisgICAgaW50IGxvY2F0aW9uc1syXTsKKworICAgIGdldFByb2dyYW1Vbmlm
b3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlf
TEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2Nh
dGlvbnMsIHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9tYXRy
aXhMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX3RleE1hdHJpeExvY2F0aW9uID0gbG9j
YXRpb25zWzFdOwogICAgIHJldHVybiBtX21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1fdGV4TWF0
cml4TG9jYXRpb24gIT0gLTE7CiB9CiAKQEAgLTI3MiwxMSArMzQ2LDE4IEBAIEZyYWdtZW50VGV4
QWxwaGFCaW5kaW5nOjpGcmFnbWVudFRleEFscGhhQmluZGluZygpCiB7CiB9CiAKLXZvaWQgRnJh
Z21lbnRUZXhBbHBoYUJpbmRpbmc6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nOjppbml0KFdl
YkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5n
QmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX3NhbXBsZXJMb2Nh
dGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7
Ci0gICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICJhbHBoYSIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0g
eworICAgICAgICAic190ZXh0dXJlIiwKKyAgICAgICAgImFscGhhIiwKKyAgICB9OworICAgIGlu
dCBsb2NhdGlvbnNbMl07CiAKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0
LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3Jt
cyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlm
b3JtLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fc2FtcGxlckxvY2F0aW9uID0gbG9jYXRp
b25zWzBdOworICAgIG1fYWxwaGFMb2NhdGlvbiA9IGxvY2F0aW9uc1sxXTsKICAgICBBU1NFUlQo
bV9zYW1wbGVyTG9jYXRpb24gIT0gLTEgJiYgbV9hbHBoYUxvY2F0aW9uICE9IC0xKTsKIH0KIApA
QCAtMjg1LDEwICszNjYsMTYgQEAgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjpGcmFnbWVudFRl
eE9wYXF1ZUJpbmRpbmcoKQogewogfQogCi12b2lkIEZyYWdtZW50VGV4T3BhcXVlQmluZGluZzo6
aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3Zv
aWQgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFz
ZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJzX3RleHR1cmUiLAorICAgIH07Cisg
ICAgaW50IGxvY2F0aW9uc1sxXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNv
bnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVu
aWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzaW5nQmlu
ZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOwogCisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBs
b2NhdGlvbnNbMF07CiAgICAgQVNTRVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0xKTsKIH0KIApA
QCAtMzA3LDEwICszOTQsMTYgQEAgU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBo
YTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAgICApOwogfQogCi1ib29sIEZyYWdtZW50U2hh
ZGVyT0VTSW1hZ2VFeHRlcm5hbDo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
dW5zaWduZWQgcHJvZ3JhbSkKK2Jvb2wgRnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjpp
bml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29s
IHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX3NhbXBs
ZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0
dXJlIik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAg
ICAgICJzX3RleHR1cmUiLAorICAgIH07CisgICAgaW50IGxvY2F0aW9uc1sxXTsKIAorICAgIGdl
dFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1z
LCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2Nh
dGlvbnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOwor
CisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CiAgICAgcmV0dXJuIG1fc2Ft
cGxlckxvY2F0aW9uICE9IC0xOwogfQogCkBAIC00MzcsMTIgKzUzMCwyMCBAQCBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYUFBOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBKCkKIHsKIH0K
IAotdm9pZCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBOjppbml0KFdlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFNoYWRlclJH
QkFUZXhBbHBoYUFBOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25l
ZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCkK
IHsKLSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAic190ZXh0dXJlIik7Ci0gICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBoYSIpOwotICAgIG1fZWRnZUxvY2F0aW9uID0g
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJlZGdlIik7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJzX3RleHR1cmUiLAor
ICAgICAgICAiYWxwaGEiLAorICAgICAgICAiZWRnZSIsCisgICAgfTsKKyAgICBpbnQgbG9jYXRp
b25zWzNdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3Jh
bSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZf
QVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5kVW5pZm9ybSwgYmFz
ZVVuaWZvcm1JbmRleCk7CiAKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsK
KyAgICBtX2FscGhhTG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV9lZGdlTG9jYXRpb24g
PSBsb2NhdGlvbnNbMl07CiAgICAgQVNTRVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1f
YWxwaGFMb2NhdGlvbiAhPSAtMSAmJiBtX2VkZ2VMb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTQ3
OSwxMyArNTgwLDIyIEBAIEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZzo6RnJhZ21lbnRU
ZXhDbGFtcEFscGhhQUFCaW5kaW5nKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFRleENsYW1wQWxw
aGFBQUJpbmRpbmc6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVk
IHByb2dyYW0pCit2b2lkIEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZzo6aW5pdChXZWJH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0Jp
bmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9zYW1wbGVyTG9jYXRp
b24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVyZSIpOwot
ICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAiYWxwaGEiKTsKLSAgICBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImZyYWdtZW50VGV4VHJhbnNmb3JtIik7Ci0g
ICAgbV9lZGdlTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
ImVkZ2UiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAg
ICAgICAgInNfdGV4dHVyZSIsCisgICAgICAgICJhbHBoYSIsCisgICAgICAgICJmcmFnbWVudFRl
eFRyYW5zZm9ybSIsCisgICAgICAgICJlZGdlIiwKKyAgICB9OworICAgIGludCBsb2NhdGlvbnNb
NF07CiAKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBz
aGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJB
WV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5p
Zm9ybUluZGV4KTsKKworICAgIG1fc2FtcGxlckxvY2F0aW9uID0gbG9jYXRpb25zWzBdOworICAg
IG1fYWxwaGFMb2NhdGlvbiA9IGxvY2F0aW9uc1sxXTsKKyAgICBtX2ZyYWdtZW50VGV4VHJhbnNm
b3JtTG9jYXRpb24gPSBsb2NhdGlvbnNbMl07CisgICAgbV9lZGdlTG9jYXRpb24gPSBsb2NhdGlv
bnNbM107CiAgICAgQVNTRVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2Nh
dGlvbiAhPSAtMSAmJiBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEgJiYgbV9l
ZGdlTG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC01NTAsMTEgKzY2MCwyMCBAQCBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYU1hc2s6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaygpCiB7
CiB9CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrOjppbml0KFdlYkdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYU1hc2s6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9y
bUluZGV4KQogewotICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUiKTsKLSAgICBtX21hc2tTYW1wbGVyTG9jYXRpb24g
PSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfbWFzayIpOwotICAgIG1f
YWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiYWxw
aGEiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAg
ICAgInNfdGV4dHVyZSIsCisgICAgICAgICJzX21hc2siLAorICAgICAgICAiYWxwaGEiLAorICAg
IH07CisgICAgaW50IGxvY2F0aW9uc1szXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRp
b25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNo
YWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVz
aW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9zYW1wbGVyTG9jYXRp
b24gPSBsb2NhdGlvbnNbMF07CisgICAgbV9tYXNrU2FtcGxlckxvY2F0aW9uID0gbG9jYXRpb25z
WzFdOworICAgIG1fYWxwaGFMb2NhdGlvbiA9IGxvY2F0aW9uc1syXTsKICAgICBBU1NFUlQobV9z
YW1wbGVyTG9jYXRpb24gIT0gLTEgJiYgbV9tYXNrU2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1f
YWxwaGFMb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTU4MywxMiArNzAyLDIyIEBAIEZyYWdtZW50
U2hhZGVyUkdCQVRleEFscGhhTWFza0FBOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tB
QSgpCiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE6OmluaXQo
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIEZy
YWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFza0FBOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCog
YmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7Ci0gICAgbV9tYXNrU2FtcGxl
ckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX21hc2si
KTsKLSAgICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgImFscGhhIik7Ci0gICAgbV9lZGdlTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgImVkZ2UiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVy
VW5pZm9ybXNbXSA9IHsKKyAgICAgICAgInNfdGV4dHVyZSIsCisgICAgICAgICJzX21hc2siLAor
ICAgICAgICAiYWxwaGEiLAorICAgICAgICAiZWRnZSIsCisgICAgfTsKKyAgICBpbnQgbG9jYXRp
b25zWzRdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3Jh
bSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZf
QVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5kVW5pZm9ybSwgYmFz
ZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsK
KyAgICBtX21hc2tTYW1wbGVyTG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV9hbHBoYUxv
Y2F0aW9uID0gbG9jYXRpb25zWzJdOworICAgIG1fZWRnZUxvY2F0aW9uID0gbG9jYXRpb25zWzNd
OwogICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX21hc2tTYW1wbGVyTG9j
YXRpb24gIT0gLTEgJiYgbV9hbHBoYUxvY2F0aW9uICE9IC0xICYmIG1fZWRnZUxvY2F0aW9uICE9
IC0xKTsKIH0KIApAQCAtNjI5LDE0ICs3NTgsMjYgQEAgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbzo6
RnJhZ21lbnRTaGFkZXJZVVZWaWRlbygpCiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJZVVZW
aWRlbzo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3Jh
bSkKK3ZvaWQgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbzo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQq
IGJhc2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV95VGV4dHVyZUxvY2F0aW9uID0gY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ5X3RleHR1cmUiKTsKLSAgICBtX3VUZXh0dXJl
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfdGV4dHVy
ZSIpOwotICAgIG1fdlRleHR1cmVMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAidl90ZXh0dXJlIik7Ci0gICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBoYSIpOwotICAgIG1fY2NNYXRyaXhMb2Nh
dGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiY2NfbWF0cml4Iik7
Ci0gICAgbV95dXZBZGpMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAieXV2X2FkaiIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1td
ID0geworICAgICAgICAieV90ZXh0dXJlIiwKKyAgICAgICAgInVfdGV4dHVyZSIsCisgICAgICAg
ICJ2X3RleHR1cmUiLAorICAgICAgICAiYWxwaGEiLAorICAgICAgICAiY2NfbWF0cml4IiwKKyAg
ICAgICAgInl1dl9hZGoiLAorICAgIH07CisgICAgaW50IGxvY2F0aW9uc1s2XTsKKworICAgIGdl
dFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1z
LCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2Nh
dGlvbnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOwor
CisgICAgbV95VGV4dHVyZUxvY2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fdVRleHR1cmVM
b2NhdGlvbiA9IGxvY2F0aW9uc1sxXTsKKyAgICBtX3ZUZXh0dXJlTG9jYXRpb24gPSBsb2NhdGlv
bnNbMl07CisgICAgbV9hbHBoYUxvY2F0aW9uID0gbG9jYXRpb25zWzNdOworICAgIG1fY2NNYXRy
aXhMb2NhdGlvbiA9IGxvY2F0aW9uc1s0XTsKKyAgICBtX3l1dkFkakxvY2F0aW9uID0gbG9jYXRp
b25zWzVdOwogCiAgICAgQVNTRVJUKG1feVRleHR1cmVMb2NhdGlvbiAhPSAtMSAmJiBtX3VUZXh0
dXJlTG9jYXRpb24gIT0gLTEgJiYgbV92VGV4dHVyZUxvY2F0aW9uICE9IC0xCiAgICAgICAgICAg
ICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAtMSAmJiBtX2NjTWF0cml4TG9jYXRpb24gIT0gLTEgJiYg
bV95dXZBZGpMb2NhdGlvbiAhPSAtMSk7CkBAIC02NzIsOSArODEzLDE2IEBAIEZyYWdtZW50U2hh
ZGVyQ29sb3I6OkZyYWdtZW50U2hhZGVyQ29sb3IoKQogewogfQogCi12b2lkIEZyYWdtZW50U2hh
ZGVyQ29sb3I6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHBy
b2dyYW0pCit2b2lkIEZyYWdtZW50U2hhZGVyQ29sb3I6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50
KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fY29sb3JMb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiY29sb3IiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hh
ciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgImNvbG9yIiwKKyAgICB9OworICAgIGlu
dCBsb2NhdGlvbnNbMV07CisKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0
LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3Jt
cyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlm
b3JtLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fY29sb3JMb2NhdGlvbiA9IGxvY2F0aW9u
c1swXTsKICAgICBBU1NFUlQobV9jb2xvckxvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtNjk3LDEx
ICs4NDUsMjAgQEAgRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OkZyYWdtZW50U2hhZGVyQ2hl
Y2tlcmJvYXJkKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6aW5p
dChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQg
RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNl
VW5pZm9ybUluZGV4KQogewotICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAiYWxwaGEiKTsKLSAgICBtX3RleFRyYW5zZm9ybUxvY2F0aW9u
ID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFuc2Zvcm0iKTsK
LSAgICBtX2ZyZXF1ZW5jeUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJmcmVxdWVuY3kiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9y
bXNbXSA9IHsKKyAgICAgICAgImFscGhhIiwKKyAgICAgICAgInRleFRyYW5zZm9ybSIsCisgICAg
ICAgICJmcmVxdWVuY3kiLAorICAgIH07CisgICAgaW50IGxvY2F0aW9uc1szXTsKKworICAgIGdl
dFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1z
LCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2Nh
dGlvbnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOwor
CisgICAgbV9hbHBoYUxvY2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fdGV4VHJhbnNmb3Jt
TG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV9mcmVxdWVuY3lMb2NhdGlvbiA9IGxvY2F0
aW9uc1syXTsKICAgICBBU1NFUlQobV9hbHBoYUxvY2F0aW9uICE9IC0xICYmIG1fdGV4VHJhbnNm
b3JtTG9jYXRpb24gIT0gLTEgJiYgbV9mcmVxdWVuY3lMb2NhdGlvbiAhPSAtMSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRl
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
aGFkZXJDaHJvbWl1bS5oCmluZGV4IGE4MGNmYjcyN2ZlMmM5MTI3ZTNmZTEzNGNkYWY5NjA4OTk1
MjEyNzIuLjAwODcyZTRhNDcxMTBiMzczNzA2MDc0N2YzZmU1YzNkZjNhYjA4YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hh
ZGVyQ2hyb21pdW0uaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBWZXJ0ZXhTaGFkZXJQb3NUZXgg
ewogcHVibGljOgogICAgIFZlcnRleFNoYWRlclBvc1RleCgpOwogCi0gICAgdm9pZCBpbml0KFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lk
IGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJv
b2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBTdHJpbmcg
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFZl
cnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2ggewogcHVibGljOgogICAgIFZlcnRleFNoYWRlclBv
c1RleFlVVlN0cmV0Y2goKTsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29u
dGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0s
IGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNv
bnN0OwogCiAgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhM
b2NhdGlvbjsgfQpAQCAtNzEsNyArNzEsNyBAQCBjbGFzcyBWZXJ0ZXhTaGFkZXJQb3MgewogcHVi
bGljOgogICAgIFZlcnRleFNoYWRlclBvcygpOwogCi0gICAgdm9pZCBpbml0KFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdC
aW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVy
U3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX21hdHJpeExvY2F0aW9uOyB9CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKIGNsYXNz
IFZlcnRleFNoYWRlclBvc1RleElkZW50aXR5IHsKIHB1YmxpYzoKLSAgICB2b2lkIGluaXQoV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pIHsgfQorICAgIHZv
aWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwg
Ym9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpIHsgfQogICAgIFN0
cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07CiAKQEAgLTkwLDcgKzkwLDcgQEAgY2xh
c3MgVmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtIHsKIHB1YmxpYzoKICAgICBWZXJ0ZXhTaGFk
ZXJQb3NUZXhUcmFuc2Zvcm0oKTsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZv
cm0sIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygp
IGNvbnN0OwogCiAgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRy
aXhMb2NhdGlvbjsgfQpAQCAtMTA1LDcgKzEwNSw3IEBAIGNsYXNzIFZlcnRleFNoYWRlclF1YWQg
ewogcHVibGljOgogICAgIFZlcnRleFNoYWRlclF1YWQoKTsKIAotICAgIHZvaWQgaW5pdChXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBp
bml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29s
IHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgU3RyaW5nIGdl
dFNoYWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQpAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIFZl
cnRleFNoYWRlclRpbGUgewogcHVibGljOgogICAgIFZlcnRleFNoYWRlclRpbGUoKTsKIAotICAg
IHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3Jh
bSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25l
ZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCk7
CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50IG1hdHJpeExv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQpAQCAtMTM3LDcgKzEz
Nyw3IEBAIGNsYXNzIFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtIHsKIHB1YmxpYzoKICAgICBW
ZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSgpOwogCi0gICAgYm9vbCBpbml0KFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICBib29sIGluaXQoV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdC
aW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVy
U3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX21hdHJpeExvY2F0aW9uOyB9CkBAIC0xNTIsNyArMTUyLDcgQEAgY2xhc3MgRnJhZ21lbnRU
ZXhBbHBoYUJpbmRpbmcgewogcHVibGljOgogICAgIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nKCk7
CiAKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVk
IHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3Jt
SW5kZXgpOwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYUxv
Y2F0aW9uOyB9CiAgICAgaW50IGVkZ2VMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9CiAg
ICAgaW50IGZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiAtMTsg
fQpAQCAtMTY3LDcgKzE2Nyw3IEBAIGNsYXNzIEZyYWdtZW50VGV4T3BhcXVlQmluZGluZyB7CiBw
dWJsaWM6CiAgICAgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nKCk7CiAKLSAgICB2b2lkIGluaXQo
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZv
aWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwg
Ym9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIGludCBh
bHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gLTE7IH0KICAgICBpbnQgZWRnZUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gLTE7IH0KICAgICBpbnQgZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgog
Y2xhc3MgRnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsIDogcHVibGljIEZyYWdtZW50VGV4
QWxwaGFCaW5kaW5nIHsKIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29u
c3Q7Ci0gICAgYm9vbCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25l
ZCBwcm9ncmFtKTsKKyAgICBib29sIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCos
IHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9y
bUluZGV4KTsKIHByaXZhdGU6CiAgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOwogfTsKQEAgLTIz
Miw3ICsyMzIsNyBAQCBjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBIHsKIHB1Ymxp
YzoKICAgICBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBKCk7CiAKLSAgICB2b2lkIGluaXQo
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZv
aWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwg
Ym9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIFN0cmlu
ZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CkBAIC0yNDksNyArMjQ5LDcgQEAgY2xhc3Mg
RnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nIHsKIHB1YmxpYzoKICAgICBGcmFnbWVudFRl
eENsYW1wQWxwaGFBQUJpbmRpbmcoKTsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVu
aWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0KICAgICBpbnQgc2FtcGxlckxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb247IH0KICAgICBpbnQgZnJhZ21lbnRU
ZXhUcmFuc2Zvcm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRUZXhUcmFuc2Zv
cm1Mb2NhdGlvbjsgfQpAQCAtMjc4LDcgKzI3OCw3IEBAIHB1YmxpYzoKICAgICBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYU1hc2soKTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29u
c3Q7CiAKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2ln
bmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
KiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlm
b3JtSW5kZXgpOwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbHBo
YUxvY2F0aW9uOyB9CiAgICAgaW50IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
c2FtcGxlckxvY2F0aW9uOyB9CiAgICAgaW50IG1hc2tTYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX21hc2tTYW1wbGVyTG9jYXRpb247IH0KQEAgLTI5NCw3ICsyOTQsNyBAQCBwdWJs
aWM6CiAgICAgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUEoKTsKICAgICBTdHJpbmcg
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFw
aGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRV
bmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CiAgICAgaW50IHNhbXBsZXJMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlckxvY2F0aW9uOyB9CiAgICAgaW50IG1hc2tTYW1w
bGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hc2tTYW1wbGVyTG9jYXRpb247IH0KQEAg
LTMxMiw3ICszMTIsNyBAQCBwdWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbygpOwog
ICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAotICAgIHZvaWQgaW5pdChXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBp
bml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29s
IHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAKICAgICBpbnQgeVRl
eHR1cmVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1feVRleHR1cmVMb2NhdGlvbjsgfQogICAg
IGludCB1VGV4dHVyZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91VGV4dHVyZUxvY2F0aW9u
OyB9CkBAIC0zMzUsNyArMzM1LDcgQEAgcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyQ29sb3Io
KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluaXQo
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZv
aWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwg
Ym9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIGludCBj
b2xvckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvckxvY2F0aW9uOyB9CiAKIHByaXZh
dGU6CkBAIC0zNDcsNyArMzQ3LDcgQEAgcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyQ2hlY2tl
cmJvYXJkKCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCi0gICAgdm9p
ZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsK
KyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHBy
b2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAg
ICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQog
ICAgIGludCB0ZXhUcmFuc2Zvcm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4VHJhbnNm
b3JtTG9jYXRpb247IH0KICAgICBpbnQgZnJlcXVlbmN5TG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2ZyZXF1ZW5jeUxvY2F0aW9uOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCmluZGV4IDI2Mjc4
NGQ2NThkNWE5NmYzZTY4M2Q3ZGJjMmEzNzI5ZDRhYmI1NmIuLjMzMjQzYzg1NTJkM2ZhMmU4NTFl
ZjdmODYzYTVkZTYyMDM1YzUwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCkBAIC0zNCw4ICsz
NCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCi1BY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGll
cihXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorQWNjZWxlcmF0ZWRUZXh0
dXJlQ29waWVyOjpBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtcykKICAgICA6IG1fY29udGV4
dChjb250ZXh0KQorICAgICwgbV91c2luZ0JpbmRVbmlmb3Jtcyh1c2luZ0JpbmRVbmlmb3JtcykK
IHsKICAgICBBU1NFUlQobV9jb250ZXh0KTsKICAgICBHTEMobV9jb250ZXh0LCBtX2ZibyA9IG1f
Y29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKSk7CkBAIC05MCw3ICs5MSw3IEBAIHZvaWQgQWNj
ZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY2ND
b250ZXh0LCB1bnNpZ25lCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7CiAKICAgICBpZiAoIW1f
YmxpdFByb2dyYW0tPmluaXRpYWxpemVkKCkpCi0gICAgICAgIG1fYmxpdFByb2dyYW0tPmluaXRp
YWxpemUoY29udGV4dCk7CisgICAgICAgIG1fYmxpdFByb2dyYW0tPmluaXRpYWxpemUoY29udGV4
dCwgbV91c2luZ0JpbmRVbmlmb3Jtcyk7CiAKICAgICAvLyBUT0RPOiBVc2UgRVhUX2ZyYW1lYnVm
ZmVyX2JsaXQgaWYgYXZhaWxhYmxlLgogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9n
cmFtKG1fYmxpdFByb2dyYW0tPnByb2dyYW0oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oCmluZGV4IDY0
NjE4OWFiNjE4ODQzNGRkOGVkMGU3NzIwYzI2ZjAwODI4MWQzZDYuLmMyYmNkNDI3YzMxMDBjMmE1
NDhhODEyMzI4YWE3NzJhZWE0ZmFhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgKQEAgLTUzLDE2ICs1
MywxNiBAQCBwcm90ZWN0ZWQ6CiBjbGFzcyBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIgOiBwdWJs
aWMgVGV4dHVyZUNvcGllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRU
ZXh0dXJlQ29waWVyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxBY2NlbGVyYXRl
ZFRleHR1cmVDb3BpZXI+IGNyZWF0ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY3Jl
YXRlKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGJvb2wgdXNpbmdCaW5k
VW5pZm9ybXMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEFjY2VsZXJhdGVk
VGV4dHVyZUNvcGllcihjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQWNj
ZWxlcmF0ZWRUZXh0dXJlQ29waWVyKGNvbnRleHQsIHVzaW5nQmluZFVuaWZvcm1zKSk7CiAgICAg
fQogICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcigpOwogCiAgICAgdmlydHVh
bCB2b2lkIGNvcHlUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgdW5zaWduZWQgc291cmNlVGV4
dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJik7CiAKIHByb3Rl
Y3RlZDoKLSAgICBleHBsaWNpdCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCopOworICAgIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcihXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgYm9vbCB1c2luZ0JpbmRVbmlmb3Jtcyk7CiAKIHByaXZh
dGU6CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhJZGVudGl0
eSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4PiBCbGl0UHJvZ3JhbTsKQEAgLTcxLDYgKzcxLDcgQEAg
cHJpdmF0ZToKICAgICBQbGF0Zm9ybTNET2JqZWN0IG1fZmJvOwogICAgIFBsYXRmb3JtM0RPYmpl
Y3QgbV9wb3NpdGlvbkJ1ZmZlcjsKICAgICBPd25QdHI8QmxpdFByb2dyYW0+IG1fYmxpdFByb2dy
YW07CisgICAgYm9vbCBtX3VzaW5nQmluZFVuaWZvcm1zOwogfTsKIAogI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAKaW5kZXggMmM5MGM0ZWQ1YWYxZmYwOWExZGU4NGZi
ZmViZTZhM2NmODJiZGI4OS4uYjNlZjRjMmViZWZiODRkMWU3MjM0YjUzNDY1MThjMDU2ZTk5N2Iz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVy
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVy
VGVzdC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgVEVTVChUZXh0dXJlQ29waWVyVGVzdCwgdGVzdERy
YXdBcnJheXNDb3B5KQogICAgIGludCBzb3VyY2VUZXh0dXJlSWQgPSAxOwogICAgIGludCBkZXN0
VGV4dHVyZUlkID0gMjsKICAgICBJbnRTaXplIHNpemUoMjU2LCAxMjgpOwotICAgIE93blB0cjxB
Y2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IGNvcGllcihBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6
OmNyZWF0ZShjY0NvbnRleHQtPmNvbnRleHQzRCgpKSk7CisgICAgT3duUHRyPEFjY2VsZXJhdGVk
VGV4dHVyZUNvcGllcj4gY29waWVyKEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKGNj
Q29udGV4dC0+Y29udGV4dDNEKCksIGZhbHNlKSk7CiAgICAgY29waWVyLT5jb3B5VGV4dHVyZShj
Y0NvbnRleHQuZ2V0KCksIHNvdXJjZVRleHR1cmVJZCwgZGVzdFRleHR1cmVJZCwgc2l6ZSk7CiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150650</attachid>
            <date>2012-07-03 11:30:01 -0700</date>
            <delta_ts>2012-07-03 19:34:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90217-20120703113000.patch</filename>
            <type>text/plain</type>
            <size>55332</size>
            <attacher>alexst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhYmMzOWZiNTVmM2E1
ZTBlNzU1MTUzZmZjOWQzZjFmM2E5YzZiMTlhLi5iZjdhZWI0YjZjNmI4OGZmNWE1NmMyYjU3MWFj
NzdiYmZhNWFkZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNy0wMiAg
QWxleCBTYWtoYXJ0Y2hvdWsgIDxhbGV4c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gQXZvaWQgY2FsbGluZyBnZXRVbmlmb3JtTG9jYXRpb24/PygpIGluIHRoZSBjb21wb3Np
dG9yIHN0YXJ0dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkwMjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkaW5nIGFuIGVudHJ5IHBvaW50IGZvciBiaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0u
CisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAg
ICAgICAgKFdlYkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0Q6OmJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTSk6CisKIDIwMTItMDctMDEg
IEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEyMTY1MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNWY4ZGRjN2FkNzU1NmIxYzhi
MWIyYjg5ZjhhYjVjYTE1OTI2NjJkLi5mMWY0YTgxMjM2ZDJkZmQ3MzdkYTFkZjY3N2M4NmQyNmI3
ZTg5Yzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMTItMDctMDIgIEFsZXggU2Fr
aGFydGNob3VrICA8YWxleHN0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEF2
b2lkIGNhbGxpbmcgZ2V0VW5pZm9ybUxvY2F0aW9uPz8oKSBpbiB0aGUgY29tcG9zaXRvciBzdGFy
dHVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDIx
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFsbG93cyBjaHJvbWUgY29tcG9zaXRvciB0byBiaW5kIHVuaWZvcm0gbG9jYXRpb25z
IGluc3RlYWQgb2YgcXVlcnlpbmcgCisgICAgICAgIHRoZW0gZnJvbSB0aGUgZ3JhcGhpY3MgY29u
dGV4dCBieSB1c2luZyBHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24uCisKKyAgICAg
ICAgVGhlIGV4dGVudGlvbiBpdHNlbGYgaXMgdGVzdGVkIGluIGNocm9taXVtIGFuZCB0aGUgY2hh
bmdlIGluIHdlYmtpdCBzaW1wbHkgYWRkcworICAgICAgICBwbHVtYmluZyB0byBhbGxvdyBpdHMg
dXNhZ2UuIEV4aXN0aW5nIHBpeGVsIHRlc3RzIHdvdWxkIGJlIGFibGUgdG8gdmVyaWZ5IHByb3Bl
ciBiZWhhdmlvdXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNvbGlkQ29sb3JQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVy
UGFzc1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpy
ZW5kZXJQYXNzUHJvZ3JhbUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtT3BhcXVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1BQSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZU9w
YXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9n
cmFtU3dpenpsZUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dGV4dHVyZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp0ZXh0dXJlUHJvZ3JhbUZsaXApOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjp0ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OnZpZGVvWVVWUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgor
ICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9n
cmFtQmluZGluZ0Jhc2U6OlByb2dyYW1CaW5kaW5nQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
cm9ncmFtQmluZGluZ0Jhc2U6On5Qcm9ncmFtQmluZGluZ0Jhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvZ3JhbUJpbmRpbmdCYXNlOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1C
aW5kaW5nQmFzZTo6bGluayk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlByb2dyYW1CaW5kaW5nQmFzZTo6Y2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFt
QmluZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6UHJv
Z3JhbUJpbmRpbmdCYXNlOjpjbGVhbnVwU2hhZGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaDoKKyAgICAgICAgKFByb2dyYW1CaW5kaW5n
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGluZzo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4Ojppbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OmluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmVydGV4U2hhZGVyUG9zOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNo
YWRlclBvc1RleFRyYW5zZm9ybTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFk
ZXJRdWFkOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclRpbGU6OmluaXQp
OgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm06OmluaXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUJpbmRpbmc6OmluaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjppbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbDo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBOjppbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZzo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6OmluaXQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE6OmluaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJZVVZWaWRlbzo6aW5pdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFnbWVudFNoYWRlckNvbG9yOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdt
ZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjppbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgorICAgICAgICAoVmVydGV4U2hhZGVyUG9zVGV4
KToKKyAgICAgICAgKFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2gpOgorICAgICAgICAoVmVy
dGV4U2hhZGVyUG9zKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleElkZW50
aXR5Ojppbml0KToKKyAgICAgICAgKFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSk6CisgICAg
ICAgIChWZXJ0ZXhTaGFkZXJRdWFkKToKKyAgICAgICAgKFZlcnRleFNoYWRlclRpbGUpOgorICAg
ICAgICAoVmVydGV4U2hhZGVyVmlkZW9UcmFuc2Zvcm0pOgorICAgICAgICAoRnJhZ21lbnRUZXhB
bHBoYUJpbmRpbmcpOgorICAgICAgICAoRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nKToKKyAgICAg
ICAgKEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5hbCk6CisgICAgICAgIChGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYUFBKToKKyAgICAgICAgKEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFBQmlu
ZGluZyk6CisgICAgICAgIChGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2spOgorICAgICAg
ICAoRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUEpOgorICAgICAgICAoRnJhZ21lbnRT
aGFkZXJZVVZWaWRlbyk6CisgICAgICAgIChGcmFnbWVudFNoYWRlckNvbG9yKToKKyAgICAgICAg
KEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJh
dGVkVGV4dHVyZUNvcGllcjo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKToKKyAgICAgICAgKEFjY2Vs
ZXJhdGVkVGV4dHVyZUNvcGllcik6CisKIDIwMTItMDctMDEgIEphbWVzIFJvYmluc29uICA8amFt
ZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIx
NjM1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiYmY4ZjdiNzRmM2Q4MGUwYjY3OTQw
ZTk4NmE1NzdiOTE0ZjFjNTE4Li43ODhkMjliYmE5MjQ4NmY3NmFkYTYwNzMwYjQxZTY4NmRjOTQ3
ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA3
LTAyICBBbGV4IFNha2hhcnRjaG91ayAgPGFsZXhzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBBdm9pZCBjYWxsaW5nIGdldFVuaWZvcm1Mb2NhdGlvbj8/KCkgaW4gdGhlIGNv
bXBvc2l0b3Igc3RhcnR1cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTAyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGaXhpbmcgdGhlIGJ1aWxkIGVycm9yLgorCisgICAgICAgICogdGVzdHMvVGV4dHVy
ZUNvcGllclRlc3QuY3BwOgorCiAyMDEyLTA3LTAxICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjE2NTAuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmgKaW5kZXggNTc3ZDcwMjg5YjhmZDU3OWQ3ODFiZTU0MDk4NzA3N2U5OTNkN2IyNS4u
NDRjMjA2NzE5YWYxOGQ4YTYxYjJkNDE3NmY5ZTNkZGE5NTZmODJhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApA
QCAtNDE0LDYgKzQxNCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdkVY
VChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGVudW0gcG5hbWUsIFdHQzNEaW50KiBwYXJhbXMpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdkVYVChXZWJHTElkIHF1ZXJ5LCBX
R0MzRGVudW0gcG5hbWUsIFdHQzNEdWludCogcGFyYW1zKSB7IH0KIAorICAgIC8vIEdMX0NIUk9N
SVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbgorICAgIHZpcnR1YWwgdm9pZCBiaW5kVW5pZm9ybUxv
Y2F0aW9uQ0hST01JVU0oV2ViR0xJZCBwcm9ncmFtLCBXR0MzRGludCBsb2NhdGlvbiwgY29uc3Qg
V0dDM0RjaGFyKiB1bmlmb3JtKSB7IH0KKwogICAgIC8vIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVy
ZQogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZUNIUk9NSVVNKFdHQzNEZW51bSB0YXJnZXQs
IFdHQzNEdWludCBzb3VyY2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXR0MzRHVpbnQgZGVzdElkLCBXR0MzRGludCBsZXZlbCwgV0dDM0RlbnVtIGludGVybmFsRm9y
bWF0KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDdjODE4
MWQzMDI1MGQ2NGY5NWQ4NGJjMWY5NDJhOWNhNmE4NzM5ODcuLmRkZDdkNTE1MzNlNWU4MjgwZTBj
YmFkMDNhMzgyNGEwYzA0YWZlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcApAQCAtMTY0LDYgKzE2NCw3IEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwKICAgICAsIG1fZGVmYXVsdFJl
bmRlclBhc3MoMCkKICAgICAsIG1faXNWaWV3cG9ydENoYW5nZWQoZmFsc2UpCiAgICAgLCBtX2lz
RnJhbWVidWZmZXJEaXNjYXJkZWQoZmFsc2UpCisgICAgLCBtX2lzVXNpbmdCaW5kVW5pZm9ybShm
YWxzZSkKICAgICAsIG1fdmlzaWJsZSh0cnVlKQogICAgICwgbV90ZXh0dXJlVXBsb2FkZXJTZXR0
aW5nKHRleHR1cmVVcGxvYWRlclNldHRpbmcpCiB7CkBAIC0yMjcsNiArMjI4LDggQEAgYm9vbCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUoKQogICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUs
ICZtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSkpOwogICAgIG1fY2FwYWJpbGl0aWVzLmJl
c3RUZXh0dXJlRm9ybWF0ID0gUGxhdGZvcm1Db2xvcjo6YmVzdFRleHR1cmVGb3JtYXQobV9jb250
ZXh0LCBleHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgi
KSk7CiAKKyAgICBtX2lzVXNpbmdCaW5kVW5pZm9ybSA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbiIpOworCiAgICAgaWYgKCFpbml0aWFsaXpl
U2hhcmVkT2JqZWN0cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE0MjksNyArMTQz
Miw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0
cygpCiAgICAgbV9pbXBsVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKFRl
eHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVNYW5hZ2VyOjpy
ZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXpl
KTsKLSAgICBtX3RleHR1cmVDb3BpZXIgPSBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0
ZShtX2NvbnRleHQpOworICAgIG1fdGV4dHVyZUNvcGllciA9IEFjY2VsZXJhdGVkVGV4dHVyZUNv
cGllcjo6Y3JlYXRlKG1fY29udGV4dCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIGlmICht
X3RleHR1cmVVcGxvYWRlclNldHRpbmcgPT0gVGhyb3R0bGVkVXBsb2FkZXIpCiAgICAgICAgIG1f
dGV4dHVyZVVwbG9hZGVyID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUobV9jb250
ZXh0KTsKICAgICBlbHNlCkBAIC0xNDUyLDcgKzE0NTUsNyBAQCBjb25zdCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OlRpbGVDaGVja2VyYm9hcmRQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnRpbAogICAgICAgICBtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRp
bGVDaGVja2VyYm9hcmRQcm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlmICghbV90aWxlQ2hlY2tl
cmJvYXJkUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNj
IiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2hlY2tlcmJvYXJkUHJvZ3JhbTo6aW5pdGFsaXpl
Iik7Ci0gICAgICAgIG1fdGlsZUNoZWNrZXJib2FyZFByb2dyYW0tPmluaXRpYWxpemUobV9jb250
ZXh0KTsKKyAgICAgICAgbV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZUNo
ZWNrZXJib2FyZFByb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNDYzLDcgKzE0NjYsNyBAQCBjb25zdCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OlNvbGlkQ29sb3JQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnNvbGlkQ29sbwogICAgICAgICBtX3NvbGlkQ29sb3JQcm9ncmFtID0gYWRvcHRQdHIo
bmV3IFNvbGlkQ29sb3JQcm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlmICghbV9zb2xpZENvbG9y
UHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6c29saWRDb2xvclByb2dyYW06OmluaXRpYWxpemUiKTsKLSAg
ICAgICAgbV9zb2xpZENvbG9yUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAg
ICBtX3NvbGlkQ29sb3JQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5nQmlu
ZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV9zb2xpZENvbG9yUHJvZ3JhbS5nZXQoKTsK
IH0KQEAgLTE0NzQsNyArMTQ3Nyw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6SGVh
ZHNVcERpc3BsYXlQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmhlYWRzCiAgICAgICAg
IG1faGVhZHNVcERpc3BsYXlQcm9ncmFtID0gYWRvcHRQdHIobmV3IEhlYWRzVXBEaXNwbGF5UHJv
Z3JhbShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0
aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV9o
ZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAgICAgICAgbV9o
ZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5k
VW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS5nZXQo
KTsKIH0KQEAgLTE0ODQsNyArMTQ4Nyw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
UmVuZGVyUGFzc1Byb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzCiAgICAg
QVNTRVJUKG1fcmVuZGVyUGFzc1Byb2dyYW0pOwogICAgIGlmICghbV9yZW5kZXJQYXNzUHJvZ3Jh
bS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc1Byb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAg
bV9yZW5kZXJQYXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3Jl
bmRlclBhc3NQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5nQmluZFVuaWZv
cm0pOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5kZXJQYXNzUHJvZ3JhbS5nZXQoKTsKIH0KQEAg
LTE0OTUsNyArMTQ5OCw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFz
c1Byb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQCiAgICAgICAgIG1fcmVu
ZGVyUGFzc1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzUHJvZ3JhbUFBKG1fY29u
dGV4dCkpOwogICAgIGlmICghbV9yZW5kZXJQYXNzUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7
CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5k
ZXJQYXNzUHJvZ3JhbUFBOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fcmVuZGVyUGFzc1Byb2dy
YW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFt
QUEtPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CiAgICAgfQog
ICAgIHJldHVybiBtX3JlbmRlclBhc3NQcm9ncmFtQUEuZ2V0KCk7CiB9CkBAIC0xNTA2LDcgKzE1
MDksNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclBhc3NNYXNrUHJvZ3Jh
bSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZQogICAgICAgICBtX3JlbmRlclBhc3NNYXNr
UHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzTWFza1Byb2dyYW0obV9jb250ZXh0KSk7
CiAgICAgaWYgKCFtX3JlbmRlclBhc3NNYXNrUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAg
ICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFz
c01hc2tQcm9ncmFtOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9n
cmFtLT5pbml0aWFsaXplKG1fY29udGV4dCk7CisgICAgICAgIG1fcmVuZGVyUGFzc01hc2tQcm9n
cmFtLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIH0K
ICAgICByZXR1cm4gbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNTE3LDcg
KzE1MjAsNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclBhc3NNYXNrUHJv
Z3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbgogICAgICAgICBtX3JlbmRlclBhc3NN
YXNrUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IFJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKG1fY29u
dGV4dCkpOwogICAgIGlmICghbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQo
KSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
cmVuZGVyUGFzc01hc2tQcm9ncmFtQUE6OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV9yZW5kZXJQ
YXNzTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3JlbmRl
clBhc3NNYXNrUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5nQmluZFVu
aWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS5nZXQo
KTsKIH0KQEAgLTE1MjcsNyArMTUzMCw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
VGlsZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW0oKQogICAgIEFT
U0VSVChtX3RpbGVQcm9ncmFtKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW0tPmluaXRpYWxpemVk
KCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06
OnRpbGVQcm9ncmFtOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fdGlsZVByb2dyYW0tPmluaXRp
YWxpemUobV9jb250ZXh0KTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVBy
b2dyYW0uZ2V0KCk7CiB9CkBAIC0xNTM3LDcgKzE1NDAsNyBAQCBjb25zdCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OlRpbGVQcm9ncmFtT3BhcXVlKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQ
cm9ncgogICAgIEFTU0VSVChtX3RpbGVQcm9ncmFtT3BhcXVlKTsKICAgICBpZiAoIW1fdGlsZVBy
b2dyYW1PcGFxdWUtPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIs
ICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtT3BhcXVlOjppbml0aWFsaXplIik7
Ci0gICAgICAgIG1fdGlsZVByb2dyYW1PcGFxdWUtPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAg
ICAgICAgbV90aWxlUHJvZ3JhbU9wYXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNVc2lu
Z0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1PcGFxdWUuZ2V0
KCk7CiB9CkBAIC0xNTQ4LDcgKzE1NTEsNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OlRpbGVQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1BQQogICAg
ICAgICBtX3RpbGVQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1BQShtX2NvbnRl
eHQpKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAg
ICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1B
QTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3RpbGVQcm9ncmFtQUEtPmluaXRpYWxpemUobV9j
b250ZXh0KTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dCwg
bV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV90aWxlUHJvZ3JhbUFB
LmdldCgpOwogfQpAQCAtMTU1OSw3ICsxNTYyLDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpUaWxlUHJvZ3JhbVN3aXp6bGUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2cK
ICAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGUgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1T
d2l6emxlKG1fY29udGV4dCkpOwogICAgIGlmICghbV90aWxlUHJvZ3JhbVN3aXp6bGUtPmluaXRp
YWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hy
b21pdW06OnRpbGVQcm9ncmFtU3dpenpsZTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3RpbGVQ
cm9ncmFtU3dpenpsZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3RpbGVQcm9n
cmFtU3dpenpsZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsK
ICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1Td2l6emxlLmdldCgpOwogfQpAQCAtMTU3
MCw3ICsxNTczLDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlUHJvZ3JhbVN3
aXp6bGVPcGFxdWUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGkKICAgICAgICAgbV90aWxlUHJv
Z3JhbVN3aXp6bGVPcGFxdWUgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1Td2l6emxlT3BhcXVl
KG1fY29udGV4dCkpOwogICAgIGlmICghbV90aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUtPmluaXRp
YWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hy
b21pdW06OnRpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBt
X3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAg
ICBtX3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNV
c2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1Td2l6emxl
T3BhcXVlLmdldCgpOwogfQpAQCAtMTU4MSw3ICsxNTg0LDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpUaWxlUHJvZ3JhbVN3aXp6bGVBQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0
aWxlUHIKICAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGVBQSA9IGFkb3B0UHRyKG5ldyBUaWxl
UHJvZ3JhbVN3aXp6bGVBQShtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1Td2l6
emxlQUEtPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXll
clJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZUFBOjppbml0aWFsaXplIik7Ci0g
ICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlQUEtPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAg
ICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGVBQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNV
c2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1Td2l6emxl
QUEuZ2V0KCk7CiB9CkBAIC0xNTkyLDcgKzE1OTUsNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OlRleHR1cmVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleHR1cmVQcm9n
cgogICAgICAgICBtX3RleHR1cmVQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRleHR1cmVQcm9ncmFt
KG1fY29udGV4dCkpOwogICAgIGlmICghbV90ZXh0dXJlUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkg
ewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4
dHVyZVByb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbS0+aW5p
dGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3RleHR1cmVQcm9ncmFtLT5pbml0aWFsaXpl
KG1fY29udGV4dCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV90
ZXh0dXJlUHJvZ3JhbS5nZXQoKTsKIH0KQEAgLTE2MDMsNyArMTYwNiw3IEBAIGNvbnN0IExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6VGV4dHVyZVByb2dyYW1GbGlwKiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnRleHR1cmVQCiAgICAgICAgIG1fdGV4dHVyZVByb2dyYW1GbGlwID0gYWRvcHRQdHIobmV3
IFRleHR1cmVQcm9ncmFtRmxpcChtX2NvbnRleHQpKTsKICAgICBpZiAoIW1fdGV4dHVyZVByb2dy
YW1GbGlwLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp0ZXh0dXJlUHJvZ3JhbUZsaXA6OmluaXRpYWxpemUiKTsKLSAg
ICAgICAgbV90ZXh0dXJlUHJvZ3JhbUZsaXAtPmluaXRpYWxpemUobV9jb250ZXh0KTsKKyAgICAg
ICAgbV90ZXh0dXJlUHJvZ3JhbUZsaXAtPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdC
aW5kVW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3RleHR1cmVQcm9ncmFtRmxpcC5nZXQo
KTsKIH0KQEAgLTE2MTQsNyArMTYxNyw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
VGV4dHVyZUlPU3VyZmFjZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4CiAgICAg
ICAgIG1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgVGV4dHVyZUlPU3Vy
ZmFjZVByb2dyYW0obV9jb250ZXh0KSk7CiAgICAgaWYgKCFtX3RleHR1cmVJT1N1cmZhY2VQcm9n
cmFtLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp0ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbTo6aW5pdGlhbGl6ZSIpOwot
ICAgICAgICBtX3RleHR1cmVJT1N1cmZhY2VQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCk7
CisgICAgICAgIG1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0
LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3RleHR1cmVJT1N1
cmZhY2VQcm9ncmFtLmdldCgpOwogfQpAQCAtMTYyNSw3ICsxNjI4LDcgQEAgY29uc3QgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpWaWRlb1lVVlByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dmlkZW9ZVVZQcm8KICAgICAgICAgbV92aWRlb1lVVlByb2dyYW0gPSBhZG9wdFB0cihuZXcgVmlk
ZW9ZVVZQcm9ncmFtKG1fY29udGV4dCkpOwogICAgIGlmICghbV92aWRlb1lVVlByb2dyYW0tPmlu
aXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVy
Q2hyb21pdW06OnZpZGVvWVVWUHJvZ3JhbTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3ZpZGVv
WVVWUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3ZpZGVvWVVWUHJv
Z3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAgICB9
CiAgICAgcmV0dXJuIG1fdmlkZW9ZVVZQcm9ncmFtLmdldCgpOwogfQpAQCAtMTYzNiw3ICsxNjM5
LDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpWaWRlb1N0cmVhbVRleHR1cmVQcm9n
cmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnYKICAgICAgICAgbV92aWRlb1N0cmVhbVRleHR1
cmVQcm9ncmFtID0gYWRvcHRQdHIobmV3IFZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0obV9jb250
ZXh0KSk7CiAgICAgaWYgKCFtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0tPmluaXRpYWxpemVk
KCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06
OnN0cmVhbVRleHR1cmVQcm9ncmFtOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fdmlkZW9TdHJl
YW1UZXh0dXJlUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQpOworICAgICAgICBtX3ZpZGVv
U3RyZWFtVGV4dHVyZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5k
VW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0u
Z2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDM0MjU0YjAw
YjkyMjJmMTBlMmY5ZDFjMzc5YTU3OTFmYzE4NzY5OTUuLjYyNWU4MmYwODhlMDcyMTUyZWVkYmNj
NjQ4Y2JjODUyOWVmYzVhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBA
IC0yNjksNiArMjY5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc1ZpZXdwb3J0Q2hhbmdl
ZDsKICAgICBib29sIG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZDsKKyAgICBib29sIG1faXNVc2lu
Z0JpbmRVbmlmb3JtOwogICAgIGJvb2wgbV92aXNpYmxlOwogICAgIFRleHR1cmVVcGxvYWRlck9w
dGlvbiBtX3RleHR1cmVVcGxvYWRlclNldHRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3Bw
CmluZGV4IDcyZTQ5ZTI1NWMzMDMxYzI3NjQwOGI3ODViZGNiZTI3ZGNjZDFmN2MuLjFhYmMyMTg2
YTNjZjAwMTIwYTYwZDg3ZDAwZTY0YWViMGFhZWYxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5j
cHAKQEAgLTQyLDYgKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQcm9ncmFtQmluZGlu
Z0Jhc2U6OlByb2dyYW1CaW5kaW5nQmFzZSgpCiAgICAgOiBtX3Byb2dyYW0oMCkKKyAgICAsIG1f
dmVydGV4U2hhZGVySWQoMCkKKyAgICAsIG1fZnJhZ21lbnRTaGFkZXJJZCgwKQogICAgICwgbV9p
bml0aWFsaXplZChmYWxzZSkKIHsKIH0KQEAgLTUwLDYgKzUyLDggQEAgUHJvZ3JhbUJpbmRpbmdC
YXNlOjp+UHJvZ3JhbUJpbmRpbmdCYXNlKCkKIHsKICAgICAvLyBJZiB5b3UgaGl0IHRoZXNlIGFz
c2VydHMsIHlvdSBpbml0aWFsaXplZCBidXQgZm9yZ290IHRvIGNhbGwgY2xlYW51cCgpLgogICAg
IEFTU0VSVCghbV9wcm9ncmFtKTsKKyAgICBBU1NFUlQoIW1fdmVydGV4U2hhZGVySWQpOworICAg
IEFTU0VSVCghbV9mcmFnbWVudFNoYWRlcklkKTsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6ZWQp
OwogfQogCkBAIC02MSwxMCArNjUsNDMgQEAgc3RhdGljIGJvb2wgY29udGV4dExvc3QoV2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAKIHZvaWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjppbml0
KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRl
ciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlcikKIHsKLSAgICBtX3Byb2dyYW0gPSBjcmVh
dGVTaGFkZXJQcm9ncmFtKGNvbnRleHQsIHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIpOwor
ICAgIFRSQUNFX0VWRU5UKCJQcm9ncmFtQmluZGluZ0Jhc2U6OmluaXQiLCB0aGlzLCAwKTsKKyAg
ICBtX3ZlcnRleFNoYWRlcklkID0gbG9hZFNoYWRlcihjb250ZXh0LCBHcmFwaGljc0NvbnRleHQz
RDo6VkVSVEVYX1NIQURFUiwgdmVydGV4U2hhZGVyKTsKKyAgICBpZiAoIW1fdmVydGV4U2hhZGVy
SWQpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0TG9zdChjb250ZXh0KSkKKyAgICAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSB2ZXJ0ZXggc2hhZGVyIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2ZyYWdtZW50U2hhZGVySWQgPSBsb2FkU2hhZGVyKGNvbnRleHQs
IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVIsIGZyYWdtZW50U2hhZGVyKTsKKyAg
ICBpZiAoIW1fZnJhZ21lbnRTaGFkZXJJZCkgeworICAgICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+ZGVsZXRlU2hhZGVyKG1fdmVydGV4U2hhZGVySWQpKTsKKyAgICAgICAgbV92ZXJ0ZXhTaGFk
ZXJJZCA9IDA7CisgICAgICAgIGlmICghY29udGV4dExvc3QoY29udGV4dCkpCisgICAgICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZnJhZ21lbnQgc2hhZGVyIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX3Byb2dyYW0gPSBjcmVhdGVTaGFkZXJQcm9ncmFtKGNv
bnRleHQsIG1fdmVydGV4U2hhZGVySWQsIG1fZnJhZ21lbnRTaGFkZXJJZCk7CiAgICAgQVNTRVJU
KG1fcHJvZ3JhbSB8fCBjb250ZXh0TG9zdChjb250ZXh0KSk7CiB9CiAKK3ZvaWQgUHJvZ3JhbUJp
bmRpbmdCYXNlOjpsaW5rKFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQoreworICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5saW5rUHJvZ3JhbShtX3Byb2dyYW0pKTsKKyAgICBjbGVhbnVw
U2hhZGVycyhjb250ZXh0KTsKKyNpZm5kZWYgTkRFQlVHCisgICAgaW50IGxpbmtlZCA9IDA7Cisg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmdldFByb2dyYW1pdihtX3Byb2dyYW0sIEdyYXBoaWNz
Q29udGV4dDNEOjpMSU5LX1NUQVRVUywgJmxpbmtlZCkpOworICAgIGlmICghbGlua2VkKSB7Cisg
ICAgICAgIGlmICghY29udGV4dExvc3QoY29udGV4dCkpCisgICAgICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBsaW5rIHNoYWRlciBwcm9ncmFtIik7CisgICAgICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5kZWxldGVQcm9ncmFtKG1fcHJvZ3JhbSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmCit9CisKIHZvaWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpjbGVhbnVwKFdlYkdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KQogewogICAgIG1faW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAg
LTc0LDYgKzExMSw4IEBAIHZvaWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpjbGVhbnVwKFdlYkdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShtX3Byb2dyYW0pKTsKICAgICBtX3Byb2dyYW0g
PSAwOworCisgICAgY2xlYW51cFNoYWRlcnMoY29udGV4dCk7CiB9CiAKIHVuc2lnbmVkIFByb2dy
YW1CaW5kaW5nQmFzZTo6bG9hZFNoYWRlcihXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
dW5zaWduZWQgdHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJTb3VyY2UpCkBAIC05NSwyNCArMTM0
LDggQEAgdW5zaWduZWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpsb2FkU2hhZGVyKFdlYkdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZAogICAgIHJldHVybiBzaGFkZXI7CiB9CiAKLXVu
c2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNv
bnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJTb3VyY2UpCit1bnNpZ25lZCBQcm9ncmFtQmluZGlu
Z0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0oV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHVuc2lnbmVkIHZlcnRleFNoYWRlciwgdW5zaWduZWQgZnJhZ21lbnRTaGFkZXIpCiB7Ci0gICAg
VFJBQ0VfRVZFTlQwKCJjYyIsICJQcm9ncmFtQmluZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dy
YW0iKTsKLSAgICB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQsIEdy
YXBoaWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVSLCB2ZXJ0ZXhTaGFkZXJTb3VyY2UpOwotICAg
IGlmICghdmVydGV4U2hhZGVyKSB7Ci0gICAgICAgIGlmICghY29udGV4dExvc3QoY29udGV4dCkp
Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgdmVydGV4IHNoYWRlciIp
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBmcmFnbWVudFNoYWRl
ciA9IGxvYWRTaGFkZXIoY29udGV4dCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZSQUdNRU5UX1NIQURF
UiwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIGlmICghZnJhZ21lbnRTaGFkZXIpIHsKLSAg
ICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpKTsK
LSAgICAgICAgaWYgKCFjb250ZXh0TG9zdChjb250ZXh0KSkKLSAgICAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGNyZWF0ZSBmcmFnbWVudCBzaGFkZXIiKTsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotCiAgICAgdW5zaWduZWQgcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmNyZWF0ZVBy
b2dyYW0oKTsKICAgICBpZiAoIXByb2dyYW1PYmplY3QpIHsKICAgICAgICAgaWYgKCFjb250ZXh0
TG9zdChjb250ZXh0KSkKQEAgLTEyNywyMyArMTUwLDIxIEBAIHVuc2lnbmVkIFByb2dyYW1CaW5k
aW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW1P
YmplY3QsIEdlb21ldHJ5QmluZGluZzo6cG9zaXRpb25BdHRyaWJMb2NhdGlvbigpLCAiYV9wb3Np
dGlvbiIpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKHBy
b2dyYW1PYmplY3QsIEdlb21ldHJ5QmluZGluZzo6dGV4Q29vcmRBdHRyaWJMb2NhdGlvbigpLCAi
YV90ZXhDb29yZCIpKTsKIAotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5saW5rUHJvZ3JhbShw
cm9ncmFtT2JqZWN0KSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGludCBsaW5rZWQgPSAwOwotICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbU9iamVjdCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTktfU1RBVFVTLCAmbGlua2VkKSk7Ci0gICAgaWYgKCFsaW5rZWQpIHsK
LSAgICAgICAgaWYgKCFjb250ZXh0TG9zdChjb250ZXh0KSkKLSAgICAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGxpbmsgc2hhZGVyIHByb2dyYW0iKTsKLSAgICAgICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbU9iamVjdCkpOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0jZW5kaWYKLQotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFk
ZXIodmVydGV4U2hhZGVyKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0ZVNoYWRl
cihmcmFnbWVudFNoYWRlcikpOwogICAgIHJldHVybiBwcm9ncmFtT2JqZWN0OwogfQogCit2b2lk
IFByb2dyYW1CaW5kaW5nQmFzZTo6Y2xlYW51cFNoYWRlcnMoV2ViR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQpCit7CisgICAgaWYgKG1fdmVydGV4U2hhZGVySWQpIHsKKyAgICAgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPmRlbGV0ZVNoYWRlcihtX3ZlcnRleFNoYWRlcklkKSk7CisgICAgICAg
IG1fdmVydGV4U2hhZGVySWQgPSAwOworICAgIH0KKyAgICBpZiAobV9mcmFnbWVudFNoYWRlcklk
KSB7CisgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFkZXIobV9mcmFnbWVu
dFNoYWRlcklkKSk7CisgICAgICAgIG1fZnJhZ21lbnRTaGFkZXJJZCA9IDA7CisgICAgfQorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaAppbmRleCAzOTA0OGY5MDMyMGJhZDI0ZWMzYzQ5
Zjk1MmQ2OTRjNDE4ZTdlZWJlLi5jMmQ0N2RmZmNhYzViYzQ2OGY3N2MyYTYwOGNhZDZhOWQ4ZWFh
OWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Qcm9ncmFtQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAg
IH5Qcm9ncmFtQmluZGluZ0Jhc2UoKTsKIAogICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEKiwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYg
ZnJhZ21lbnRTaGFkZXIpOworICAgIHZvaWQgbGluayhXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEKik7CiAgICAgdm9pZCBjbGVhbnVwKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsK
IAogICAgIHVuc2lnbmVkIHByb2dyYW0oKSBjb25zdCB7IEFTU0VSVChtX2luaXRpYWxpemVkKTsg
cmV0dXJuIG1fcHJvZ3JhbTsgfQpAQCAtNTAsOSArNTEsMTIgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogCiAgICAgdW5zaWduZWQgbG9hZFNoYWRlcihXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
KiwgdW5zaWduZWQgdHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJTb3VyY2UpOwotICAgIHVuc2ln
bmVkIGNyZWF0ZVNoYWRlclByb2dyYW0oV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIGNv
bnN0IFN0cmluZyYgdmVydGV4U2hhZGVyU291cmNlLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hh
ZGVyU291cmNlKTsKKyAgICB1bnNpZ25lZCBjcmVhdGVTaGFkZXJQcm9ncmFtKFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIsIHVuc2lnbmVkIGZyYWdt
ZW50U2hhZGVyKTsKKyAgICB2b2lkIGNsZWFudXBTaGFkZXJzKFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqKTsKIAogICAgIHVuc2lnbmVkIG1fcHJvZ3JhbTsKKyAgICB1bnNpZ25lZCBtX3Zl
cnRleFNoYWRlcklkOworICAgIHVuc2lnbmVkIG1fZnJhZ21lbnRTaGFkZXJJZDsKICAgICBib29s
IG1faW5pdGlhbGl6ZWQ7CiB9OwogCkBAIC02NCwxNCArNjgsMjQgQEAgcHVibGljOgogICAgICAg
ICBQcm9ncmFtQmluZGluZ0Jhc2U6OmluaXQoY29udGV4dCwgbV92ZXJ0ZXhTaGFkZXIuZ2V0U2hh
ZGVyU3RyaW5nKCksIG1fZnJhZ21lbnRTaGFkZXIuZ2V0U2hhZGVyU3RyaW5nKCkpOwogICAgIH0K
IAotICAgIHZvaWQgaW5pdGlhbGl6ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KQorICAgIHZvaWQgaW5pdGlhbGl6ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBib29sIHVzaW5nQmluZFVuaWZvcm0pCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCk7CiAgICAgICAgIEFTU0VSVChtX3Byb2dyYW0pOwogICAgICAgICBBU1NFUlQoIW1faW5p
dGlhbGl6ZWQpOwogCi0gICAgICAgIG1fdmVydGV4U2hhZGVyLmluaXQoY29udGV4dCwgbV9wcm9n
cmFtKTsKLSAgICAgICAgbV9mcmFnbWVudFNoYWRlci5pbml0KGNvbnRleHQsIG1fcHJvZ3JhbSk7
CisgICAgICAgIC8vIE5lZWQgdG8gYmluZCB1bmlmb3JtcyBiZWZvcmUgbGlua2luZworICAgICAg
ICBpZiAoIXVzaW5nQmluZFVuaWZvcm0pCisgICAgICAgICAgICBsaW5rKGNvbnRleHQpOworCisg
ICAgICAgIGludCBiYXNlVW5pZm9ybUluZGV4ID0gMDsKKyAgICAgICAgbV92ZXJ0ZXhTaGFkZXIu
aW5pdChjb250ZXh0LCBtX3Byb2dyYW0sIHVzaW5nQmluZFVuaWZvcm0sICZiYXNlVW5pZm9ybUlu
ZGV4KTsKKyAgICAgICAgbV9mcmFnbWVudFNoYWRlci5pbml0KGNvbnRleHQsIG1fcHJvZ3JhbSwg
dXNpbmdCaW5kVW5pZm9ybSwgJmJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgICAgIC8vIExpbmsg
YWZ0ZXIgYmluZGluZyB1bmlmb3JtcworICAgICAgICBpZiAodXNpbmdCaW5kVW5pZm9ybSkKKyAg
ICAgICAgICAgIGxpbmsoY29udGV4dCk7CisKICAgICAgICAgbV9pbml0aWFsaXplZCA9IHRydWU7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKaW5kZXggMmExNDBkMWQ3ODViNjQzOWIz
MWUwYjJmODRmMzI0ZTU4Y2U3MDc4NC4uN2VlNWEyMWI5ODYxODNlM2RkMmI4ODg4ZWI4YTJiZWY3
NzFhZmE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcApAQCAtMzgsMTQgKzM4LDM4IEBAIHVz
aW5nIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorbmFtZXNwYWNlIHsKKworc3RhdGljIHZvaWQgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMo
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGNvbnN0IGNo
YXIqKiBzaGFkZXJVbmlmb3Jtcywgc2l6ZV90IGNvdW50LCBzaXplX3QgbWF4TG9jYXRpb25zLCBp
bnQqIGxvY2F0aW9ucywgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5k
ZXgpCit7CisgICAgZm9yIChzaXplX3QgdW5pZm9ybUluZGV4ID0gMDsgdW5pZm9ybUluZGV4IDwg
Y291bnQ7IHVuaWZvcm1JbmRleCArKykgeworICAgICAgICBBU1NFUlQodW5pZm9ybUluZGV4IDwg
bWF4TG9jYXRpb25zKTsKKworICAgICAgICBpZiAodXNpbmdCaW5kVW5pZm9ybSkgeworICAgICAg
ICAgICAgbG9jYXRpb25zW3VuaWZvcm1JbmRleF0gPSAoKmJhc2VVbmlmb3JtSW5kZXgpKys7Cisg
ICAgICAgICAgICBjb250ZXh0LT5iaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0ocHJvZ3JhbSwg
bG9jYXRpb25zW3VuaWZvcm1JbmRleF0sIHNoYWRlclVuaWZvcm1zW3VuaWZvcm1JbmRleF0pOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGxvY2F0aW9uc1t1bmlmb3JtSW5kZXhdID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIHNoYWRlclVuaWZvcm1zW3VuaWZvcm1J
bmRleF0pOworICAgIH0KK30KKworfQorCiBWZXJ0ZXhTaGFkZXJQb3NUZXg6OlZlcnRleFNoYWRl
clBvc1RleCgpCiAgICAgOiBtX21hdHJpeExvY2F0aW9uKC0xKQogewogfQogCi12b2lkIFZlcnRl
eFNoYWRlclBvc1RleDo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWdu
ZWQgcHJvZ3JhbSkKK3ZvaWQgVmVydGV4U2hhZGVyUG9zVGV4Ojppbml0KFdlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0s
IGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKKyAgICBzdGF0aWMgY29u
c3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgIm1hdHJpeCIsCisgICAgfTsK
KyAgICBpbnQgbG9jYXRpb25zWzFdOworCisgICAgZ2V0UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMo
Y29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZGVy
VW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0aW9ucyksIGxvY2F0aW9ucywgdXNpbmdC
aW5kVW5pZm9ybSwgYmFzZVVuaWZvcm1JbmRleCk7CisKKyAgICBtX21hdHJpeExvY2F0aW9uID0g
bG9jYXRpb25zWzBdOwogICAgIEFTU0VSVChtX21hdHJpeExvY2F0aW9uICE9IC0xKTsKIH0KIApA
QCAtNzEsMTEgKzk1LDIwIEBAIFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OlZlcnRleFNo
YWRlclBvc1RleFlVVlN0cmV0Y2goKQogewogfQogCi12b2lkIFZlcnRleFNoYWRlclBvc1RleFlV
VlN0cmV0Y2g6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHBy
b2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OmluaXQoV2ViR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5p
Zm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1fbWF0cml4TG9jYXRpb24gPSBj
b250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIG1feVdp
ZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAieV93aWR0aFNjYWxlRmFjdG9yIik7Ci0gICAgbV91dldpZHRoU2NhbGVGYWN0b3JMb2Nh
dGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidXZfd2lkdGhTY2Fs
ZUZhY3RvciIpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0gewor
ICAgICAgICAibWF0cml4IiwKKyAgICAgICAgInlfd2lkdGhTY2FsZUZhY3RvciIsCisgICAgICAg
ICJ1dl93aWR0aFNjYWxlRmFjdG9yIiwKKyAgICB9OworICAgIGludCBsb2NhdGlvbnNbM107CisK
KyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJV
bmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5H
VEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUlu
ZGV4KTsKKworICAgIG1fbWF0cml4TG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CisgICAgbV95V2lk
dGhTY2FsZUZhY3RvckxvY2F0aW9uID0gbG9jYXRpb25zWzFdOworICAgIG1fdXZXaWR0aFNjYWxl
RmFjdG9yTG9jYXRpb24gPSBsb2NhdGlvbnNbMl07CiAgICAgQVNTRVJUKG1fbWF0cml4TG9jYXRp
b24gIT0gLTEgJiYgbV95V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uICE9IC0xICYmIG1fdXZXaWR0
aFNjYWxlRmFjdG9yTG9jYXRpb24gIT0gLTEpOwogfQogCkBAIC0xMDQsOSArMTM3LDE2IEBAIFZl
cnRleFNoYWRlclBvczo6VmVydGV4U2hhZGVyUG9zKCkKIHsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFk
ZXJQb3M6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dy
YW0pCit2b2lkIFZlcnRleFNoYWRlclBvczo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VV
bmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNo
YWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJtYXRyaXgiLAorICAgIH07CisgICAgaW50IGxv
Y2F0aW9uc1sxXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHBy
b2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwg
V1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0s
IGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGxvY2F0aW9uc1sw
XTsKICAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTEyOCwxMCAr
MTY4LDE4IEBAIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6VmVydGV4U2hhZGVyUG9zVGV4
VHJhbnNmb3JtKCkKIHsKIH0KIAotdm9pZCBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06Omlu
aXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lk
IFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJh
c2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7Ci0gICAgbV90ZXhUcmFuc2Zvcm1Mb2Nh
dGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4VHJhbnNmb3Jt
Iik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAg
ICJtYXRyaXgiLAorICAgICAgICAidGV4VHJhbnNmb3JtIiwKKyAgICB9OworICAgIGludCBsb2Nh
dGlvbnNbMl07CisKKyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9n
cmFtLCBzaGFkZXJVbmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdU
Rl9BUlJBWV9MRU5HVEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBi
YXNlVW5pZm9ybUluZGV4KTsKKworICAgIG1fbWF0cml4TG9jYXRpb24gPSBsb2NhdGlvbnNbMF07
CisgICAgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGxvY2F0aW9uc1sxXTsKICAgICBBU1NFUlQo
bV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAmJiBtX3RleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xKTsK
IH0KIApAQCAtMTcwLDEwICsyMTgsMTggQEAgU3RyaW5nIFZlcnRleFNoYWRlclBvc1RleElkZW50
aXR5OjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogICAgICk7CiB9CiAKLXZvaWQgVmVydGV4U2hh
ZGVyUXVhZDo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJv
Z3JhbSkKK3ZvaWQgVmVydGV4U2hhZGVyUXVhZDo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJh
c2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7Ci0gICAgbV9wb2ludExvY2F0aW9uID0g
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJwb2ludCIpOworICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAibWF0cml4IiwKKyAg
ICAgICAgInBvaW50IiwKKyAgICB9OworICAgIGludCBsb2NhdGlvbnNbMl07CisKKyAgICBnZXRQ
cm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3Jtcywg
V1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRp
b25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUluZGV4KTsKKwor
ICAgIG1fbWF0cml4TG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CisgICAgbV9wb2ludExvY2F0aW9u
ID0gbG9jYXRpb25zWzFdOwogICAgIEFTU0VSVChtX21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1f
cG9pbnRMb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTIwNiwxMSArMjYyLDIwIEBAIFZlcnRleFNo
YWRlclRpbGU6OlZlcnRleFNoYWRlclRpbGUoKQogewogfQogCi12b2lkIFZlcnRleFNoYWRlclRp
bGU6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0p
Cit2b2lkIFZlcnRleFNoYWRlclRpbGU6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5p
Zm9ybUluZGV4KQogewotICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIG1fcG9pbnRMb2NhdGlvbiA9IGNvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAicG9pbnQiKTsKLSAgICBtX3ZlcnRleFRl
eFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICJ2ZXJ0ZXhUZXhUcmFuc2Zvcm0iKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5p
Zm9ybXNbXSA9IHsKKyAgICAgICAgIm1hdHJpeCIsCisgICAgICAgICJwb2ludCIsCisgICAgICAg
ICJ2ZXJ0ZXhUZXhUcmFuc2Zvcm0iLAorICAgIH07CisgICAgaW50IGxvY2F0aW9uc1szXTsKKwor
ICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVu
aWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdU
SChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5k
ZXgpOworCisgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX3BvaW50
TG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV92ZXJ0ZXhUZXhUcmFuc2Zvcm1Mb2NhdGlv
biA9IGxvY2F0aW9uc1syXTsKICAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAmJiBt
X3BvaW50TG9jYXRpb24gIT0gLTEgJiYgbV92ZXJ0ZXhUZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAt
MSk7CiB9CiAKQEAgLTI0MywxMCArMzA4LDE4IEBAIFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3Jt
OjpWZXJ0ZXhTaGFkZXJWaWRlb1RyYW5zZm9ybSgpCiB7CiB9CiAKLWJvb2wgVmVydGV4U2hhZGVy
VmlkZW9UcmFuc2Zvcm06OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2ln
bmVkIHByb2dyYW0pCitib29sIFZlcnRleFNoYWRlclZpZGVvVHJhbnNmb3JtOjppbml0KFdlYkdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmlu
ZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX21hdHJpeExvY2F0aW9u
ID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBt
X3RleE1hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICJ0ZXhNYXRyaXgiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9
IHsKKyAgICAgICAgIm1hdHJpeCIsCisgICAgICAgICJ0ZXhNYXRyaXgiLAorICAgIH07CisgICAg
aW50IGxvY2F0aW9uc1syXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRl
eHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZv
cm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVu
aWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGxvY2F0
aW9uc1swXTsKKyAgICBtX3RleE1hdHJpeExvY2F0aW9uID0gbG9jYXRpb25zWzFdOwogICAgIHJl
dHVybiBtX21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1fdGV4TWF0cml4TG9jYXRpb24gIT0gLTE7
CiB9CiAKQEAgLTI3MiwxMSArMzQ1LDE4IEBAIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nOjpGcmFn
bWVudFRleEFscGhhQmluZGluZygpCiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRUZXhBbHBoYUJpbmRp
bmc6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0p
Cit2b2lkIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCog
YmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7Ci0gICAgbV9hbHBoYUxvY2F0
aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBoYSIpOworICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAic190ZXh0
dXJlIiwKKyAgICAgICAgImFscGhhIiwKKyAgICB9OworICAgIGludCBsb2NhdGlvbnNbMl07CiAK
KyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJV
bmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5H
VEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUlu
ZGV4KTsKKworICAgIG1fc2FtcGxlckxvY2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fYWxw
aGFMb2NhdGlvbiA9IGxvY2F0aW9uc1sxXTsKICAgICBBU1NFUlQobV9zYW1wbGVyTG9jYXRpb24g
IT0gLTEgJiYgbV9hbHBoYUxvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtMjg1LDEwICszNjUsMTYg
QEAgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjpGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmcoKQog
ewogfQogCi12b2lkIEZyYWdtZW50VGV4T3BhcXVlQmluZGluZzo6aW5pdChXZWJHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRUZXhPcGFx
dWVCaW5kaW5nOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBw
cm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsK
LSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAic190ZXh0dXJlIik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1z
W10gPSB7CisgICAgICAgICJzX3RleHR1cmUiLAorICAgIH07CisgICAgaW50IGxvY2F0aW9uc1sx
XTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNo
YWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZ
X0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlm
b3JtSW5kZXgpOwogCisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBsb2NhdGlvbnNbMF07CiAgICAg
QVNTRVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtMzA3LDEwICszOTMsMTYg
QEAgU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYTo6Z2V0U2hhZGVyU3RyaW5n
KCkgY29uc3QKICAgICApOwogfQogCi1ib29sIEZyYWdtZW50U2hhZGVyT0VTSW1hZ2VFeHRlcm5h
bDo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkK
K2Jvb2wgRnJhZ21lbnRTaGFkZXJPRVNJbWFnZUV4dGVybmFsOjppbml0KFdlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0s
IGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIHNoYWRlclVuaWZvcm1zW10gPSB7CisgICAgICAgICJzX3RleHR1cmUiLAor
ICAgIH07CisgICAgaW50IGxvY2F0aW9uc1sxXTsKIAorICAgIGdldFByb2dyYW1Vbmlmb3JtTG9j
YXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RI
KHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMs
IHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9zYW1wbGVyTG9j
YXRpb24gPSBsb2NhdGlvbnNbMF07CiAgICAgcmV0dXJuIG1fc2FtcGxlckxvY2F0aW9uICE9IC0x
OwogfQogCkBAIC00MzcsMTIgKzUyOSwyMCBAQCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFB
OjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYUFBOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1
bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBOjppbml0
KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVz
aW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCkKIHsKLSAgICBtX3NhbXBsZXJM
b2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJl
Iik7Ci0gICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJhbHBoYSIpOwotICAgIG1fZWRnZUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJlZGdlIik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRl
clVuaWZvcm1zW10gPSB7CisgICAgICAgICJzX3RleHR1cmUiLAorICAgICAgICAiYWxwaGEiLAor
ICAgICAgICAiZWRnZSIsCisgICAgfTsKKyAgICBpbnQgbG9jYXRpb25zWzNdOworCisgICAgZ2V0
UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMs
IFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0
aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5kVW5pZm9ybSwgYmFzZVVuaWZvcm1JbmRleCk7CiAK
KyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX2FscGhhTG9jYXRp
b24gPSBsb2NhdGlvbnNbMV07CisgICAgbV9lZGdlTG9jYXRpb24gPSBsb2NhdGlvbnNbMl07CiAg
ICAgQVNTRVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAt
MSAmJiBtX2VkZ2VMb2NhdGlvbiAhPSAtMSk7CiB9CiAKQEAgLTQ3OSwxMyArNTc5LDIyIEBAIEZy
YWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZzo6RnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5k
aW5nKCkKIHsKIH0KIAotdm9pZCBGcmFnbWVudFRleENsYW1wQWxwaGFBQUJpbmRpbmc6OmluaXQo
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIEZy
YWdtZW50VGV4Q2xhbXBBbHBoYUFBQmluZGluZzo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJh
c2VVbmlmb3JtSW5kZXgpCiB7Ci0gICAgbV9zYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVyZSIpOwotICAgIG1fYWxwaGFMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiYWxwaGEiKTsKLSAgICBt
X2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgImZyYWdtZW50VGV4VHJhbnNmb3JtIik7Ci0gICAgbV9lZGdlTG9jYXRpb24g
PSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImVkZ2UiKTsKKyAgICBzdGF0
aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgInNfdGV4dHVyZSIs
CisgICAgICAgICJhbHBoYSIsCisgICAgICAgICJmcmFnbWVudFRleFRyYW5zZm9ybSIsCisgICAg
ICAgICJlZGdlIiwKKyAgICB9OworICAgIGludCBsb2NhdGlvbnNbNF07CiAKKyAgICBnZXRQcm9n
cmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJVbmlmb3JtcywgV1RG
X0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5HVEgobG9jYXRpb25z
KSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUluZGV4KTsKKworICAg
IG1fc2FtcGxlckxvY2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fYWxwaGFMb2NhdGlvbiA9
IGxvY2F0aW9uc1sxXTsKKyAgICBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24gPSBsb2Nh
dGlvbnNbMl07CisgICAgbV9lZGdlTG9jYXRpb24gPSBsb2NhdGlvbnNbM107CiAgICAgQVNTRVJU
KG1fc2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAtMSAmJiBtX2Zy
YWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEgJiYgbV9lZGdlTG9jYXRpb24gIT0gLTEp
OwogfQogCkBAIC01NTAsMTEgKzY1OSwyMCBAQCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1h
c2s6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaygpCiB7CiB9CiAKLXZvaWQgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQordm9pZCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1h
c2s6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0s
IGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewotICAgIG1f
c2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJz
X3RleHR1cmUiKTsKLSAgICBtX21hc2tTYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfbWFzayIpOwotICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNv
bnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiYWxwaGEiKTsKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAgInNfdGV4dHVyZSIsCisg
ICAgICAgICJzX21hc2siLAorICAgICAgICAiYWxwaGEiLAorICAgIH07CisgICAgaW50IGxvY2F0
aW9uc1szXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9jYXRpb25zKGNvbnRleHQsIHByb2dy
YW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRlclVuaWZvcm1zKSwgV1RG
X0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMsIHVzaW5nQmluZFVuaWZvcm0sIGJh
c2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBsb2NhdGlvbnNbMF07
CisgICAgbV9tYXNrU2FtcGxlckxvY2F0aW9uID0gbG9jYXRpb25zWzFdOworICAgIG1fYWxwaGFM
b2NhdGlvbiA9IGxvY2F0aW9uc1syXTsKICAgICBBU1NFUlQobV9zYW1wbGVyTG9jYXRpb24gIT0g
LTEgJiYgbV9tYXNrU2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAt
MSk7CiB9CiAKQEAgLTU4MywxMiArNzAxLDIyIEBAIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhh
TWFza0FBOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQSgpCiB7CiB9CiAKLXZvaWQg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIEZyYWdtZW50U2hhZGVyUkdCQVRl
eEFscGhhTWFza0FBOjppbml0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25l
ZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCkK
IHsKLSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAic190ZXh0dXJlIik7Ci0gICAgbV9tYXNrU2FtcGxlckxvY2F0aW9uID0gY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX21hc2siKTsKLSAgICBtX2FscGhhTG9j
YXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7Ci0g
ICAgbV9lZGdlTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
ImVkZ2UiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAg
ICAgICAgInNfdGV4dHVyZSIsCisgICAgICAgICJzX21hc2siLAorICAgICAgICAiYWxwaGEiLAor
ICAgICAgICAiZWRnZSIsCisgICAgfTsKKyAgICBpbnQgbG9jYXRpb25zWzRdOworCisgICAgZ2V0
UHJvZ3JhbVVuaWZvcm1Mb2NhdGlvbnMoY29udGV4dCwgcHJvZ3JhbSwgc2hhZGVyVW5pZm9ybXMs
IFdURl9BUlJBWV9MRU5HVEgoc2hhZGVyVW5pZm9ybXMpLCBXVEZfQVJSQVlfTEVOR1RIKGxvY2F0
aW9ucyksIGxvY2F0aW9ucywgdXNpbmdCaW5kVW5pZm9ybSwgYmFzZVVuaWZvcm1JbmRleCk7CisK
KyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKKyAgICBtX21hc2tTYW1wbGVy
TG9jYXRpb24gPSBsb2NhdGlvbnNbMV07CisgICAgbV9hbHBoYUxvY2F0aW9uID0gbG9jYXRpb25z
WzJdOworICAgIG1fZWRnZUxvY2F0aW9uID0gbG9jYXRpb25zWzNdOwogICAgIEFTU0VSVChtX3Nh
bXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX21hc2tTYW1wbGVyTG9jYXRpb24gIT0gLTEgJiYgbV9h
bHBoYUxvY2F0aW9uICE9IC0xICYmIG1fZWRnZUxvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtNjI5
LDE0ICs3NTcsMjYgQEAgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbzo6RnJhZ21lbnRTaGFkZXJZVVZW
aWRlbygpCiB7CiB9CiAKLXZvaWQgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbzo6aW5pdChXZWJHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRT
aGFkZXJZVVZWaWRlbzo6aW5pdChXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWdu
ZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgp
CiB7Ci0gICAgbV95VGV4dHVyZUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJ5X3RleHR1cmUiKTsKLSAgICBtX3VUZXh0dXJlTG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfdGV4dHVyZSIpOwotICAgIG1fdlRleHR1
cmVMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidl90ZXh0
dXJlIik7Ci0gICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJhbHBoYSIpOwotICAgIG1fY2NNYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiY2NfbWF0cml4Iik7Ci0gICAgbV95dXZBZGpMb2Nh
dGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAieXV2X2FkaiIpOwor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJVbmlmb3Jtc1tdID0geworICAgICAgICAieV90
ZXh0dXJlIiwKKyAgICAgICAgInVfdGV4dHVyZSIsCisgICAgICAgICJ2X3RleHR1cmUiLAorICAg
ICAgICAiYWxwaGEiLAorICAgICAgICAiY2NfbWF0cml4IiwKKyAgICAgICAgInl1dl9hZGoiLAor
ICAgIH07CisgICAgaW50IGxvY2F0aW9uc1s2XTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9j
YXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RI
KHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMs
IHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV95VGV4dHVyZUxv
Y2F0aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fdVRleHR1cmVMb2NhdGlvbiA9IGxvY2F0aW9u
c1sxXTsKKyAgICBtX3ZUZXh0dXJlTG9jYXRpb24gPSBsb2NhdGlvbnNbMl07CisgICAgbV9hbHBo
YUxvY2F0aW9uID0gbG9jYXRpb25zWzNdOworICAgIG1fY2NNYXRyaXhMb2NhdGlvbiA9IGxvY2F0
aW9uc1s0XTsKKyAgICBtX3l1dkFkakxvY2F0aW9uID0gbG9jYXRpb25zWzVdOwogCiAgICAgQVNT
RVJUKG1feVRleHR1cmVMb2NhdGlvbiAhPSAtMSAmJiBtX3VUZXh0dXJlTG9jYXRpb24gIT0gLTEg
JiYgbV92VGV4dHVyZUxvY2F0aW9uICE9IC0xCiAgICAgICAgICAgICYmIG1fYWxwaGFMb2NhdGlv
biAhPSAtMSAmJiBtX2NjTWF0cml4TG9jYXRpb24gIT0gLTEgJiYgbV95dXZBZGpMb2NhdGlvbiAh
PSAtMSk7CkBAIC02NzIsOSArODEyLDE2IEBAIEZyYWdtZW50U2hhZGVyQ29sb3I6OkZyYWdtZW50
U2hhZGVyQ29sb3IoKQogewogfQogCi12b2lkIEZyYWdtZW50U2hhZGVyQ29sb3I6OmluaXQoV2Vi
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIEZyYWdt
ZW50U2hhZGVyQ29sb3I6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2ln
bmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4
KQogewotICAgIG1fY29sb3JMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAiY29sb3IiKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNb
XSA9IHsKKyAgICAgICAgImNvbG9yIiwKKyAgICB9OworICAgIGludCBsb2NhdGlvbnNbMV07CisK
KyAgICBnZXRQcm9ncmFtVW5pZm9ybUxvY2F0aW9ucyhjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXJV
bmlmb3JtcywgV1RGX0FSUkFZX0xFTkdUSChzaGFkZXJVbmlmb3JtcyksIFdURl9BUlJBWV9MRU5H
VEgobG9jYXRpb25zKSwgbG9jYXRpb25zLCB1c2luZ0JpbmRVbmlmb3JtLCBiYXNlVW5pZm9ybUlu
ZGV4KTsKKworICAgIG1fY29sb3JMb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKICAgICBBU1NFUlQo
bV9jb2xvckxvY2F0aW9uICE9IC0xKTsKIH0KIApAQCAtNjk3LDExICs4NDQsMjAgQEAgRnJhZ21l
bnRTaGFkZXJDaGVja2VyYm9hcmQ6OkZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkKCkKIHsKIH0K
IAotdm9pZCBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6aW5pdChXZWJHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3ZvaWQgRnJhZ21lbnRTaGFkZXJDaGVj
a2VyYm9hcmQ6OmluaXQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHBy
b2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KQogewot
ICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAiYWxwaGEiKTsKLSAgICBtX3RleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFuc2Zvcm0iKTsKLSAgICBtX2ZyZXF1ZW5jeUxv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJmcmVxdWVuY3ki
KTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyVW5pZm9ybXNbXSA9IHsKKyAgICAgICAg
ImFscGhhIiwKKyAgICAgICAgInRleFRyYW5zZm9ybSIsCisgICAgICAgICJmcmVxdWVuY3kiLAor
ICAgIH07CisgICAgaW50IGxvY2F0aW9uc1szXTsKKworICAgIGdldFByb2dyYW1Vbmlmb3JtTG9j
YXRpb25zKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlclVuaWZvcm1zLCBXVEZfQVJSQVlfTEVOR1RI
KHNoYWRlclVuaWZvcm1zKSwgV1RGX0FSUkFZX0xFTkdUSChsb2NhdGlvbnMpLCBsb2NhdGlvbnMs
IHVzaW5nQmluZFVuaWZvcm0sIGJhc2VVbmlmb3JtSW5kZXgpOworCisgICAgbV9hbHBoYUxvY2F0
aW9uID0gbG9jYXRpb25zWzBdOworICAgIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gPSBsb2NhdGlv
bnNbMV07CisgICAgbV9mcmVxdWVuY3lMb2NhdGlvbiA9IGxvY2F0aW9uc1syXTsKICAgICBBU1NF
UlQobV9hbHBoYUxvY2F0aW9uICE9IC0xICYmIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEg
JiYgbV9mcmVxdWVuY3lMb2NhdGlvbiAhPSAtMSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCmlu
ZGV4IGE4MGNmYjcyN2ZlMmM5MTI3ZTNmZTEzNGNkYWY5NjA4OTk1MjEyNzIuLjAwODcyZTRhNDcx
MTBiMzczNzA2MDc0N2YzZmU1YzNkZjNhYjA4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaApAQCAt
NDEsNyArNDEsNyBAQCBjbGFzcyBWZXJ0ZXhTaGFkZXJQb3NUZXggewogcHVibGljOgogICAgIFZl
cnRleFNoYWRlclBvc1RleCgpOwogCi0gICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9y
bSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkg
Y29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJp
eExvY2F0aW9uOyB9CkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFZlcnRleFNoYWRlclBvc1RleFlV
VlN0cmV0Y2ggewogcHVibGljOgogICAgIFZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2goKTsK
IAotICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQg
cHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1
bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1J
bmRleCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50IG1h
dHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQpAQCAtNzEs
NyArNzEsNyBAQCBjbGFzcyBWZXJ0ZXhTaGFkZXJQb3MgewogcHVibGljOgogICAgIFZlcnRleFNo
YWRlclBvcygpOwogCi0gICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Qq
LCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBi
YXNlVW5pZm9ybUluZGV4KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAK
ICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9u
OyB9CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFZlcnRleFNoYWRlclBvc1Rl
eElkZW50aXR5IHsKIHB1YmxpYzoKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pIHsgfQorICAgIHZvaWQgaW5pdChXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlm
b3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpIHsgfQogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdDsKIH07CiAKQEAgLTkwLDcgKzkwLDcgQEAgY2xhc3MgVmVydGV4U2hhZGVyUG9z
VGV4VHJhbnNmb3JtIHsKIHB1YmxpYzoKICAgICBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0o
KTsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWdu
ZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Qq
LCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZv
cm1JbmRleCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50
IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQpAQCAt
MTA1LDcgKzEwNSw3IEBAIGNsYXNzIFZlcnRleFNoYWRlclF1YWQgewogcHVibGljOgogICAgIFZl
cnRleFNoYWRlclF1YWQoKTsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29u
dGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0s
IGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNv
bnN0OwogCiAgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhM
b2NhdGlvbjsgfQpAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIFZlcnRleFNoYWRlclRpbGUgewog
cHVibGljOgogICAgIFZlcnRleFNoYWRlclRpbGUoKTsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0
KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVz
aW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAgICAgU3RyaW5nIGdldFNo
YWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQpAQCAtMTM3LDcgKzEzNyw3IEBAIGNsYXNzIFZlcnRl
eFNoYWRlclZpZGVvVHJhbnNmb3JtIHsKIHB1YmxpYzoKICAgICBWZXJ0ZXhTaGFkZXJWaWRlb1Ry
YW5zZm9ybSgpOwogCi0gICAgYm9vbCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Qq
LCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICBib29sIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBi
YXNlVW5pZm9ybUluZGV4KTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAK
ICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9u
OyB9CkBAIC0xNTIsNyArMTUyLDcgQEAgY2xhc3MgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgewog
cHVibGljOgogICAgIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nKCk7CiAKLSAgICB2b2lkIGluaXQo
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZv
aWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwg
Ym9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIGludCBh
bHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CiAgICAgaW50
IGVkZ2VMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9CiAgICAgaW50IGZyYWdtZW50VGV4
VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiAtMTsgfQpAQCAtMTY3LDcgKzE2Nyw3
IEBAIGNsYXNzIEZyYWdtZW50VGV4T3BhcXVlQmluZGluZyB7CiBwdWJsaWM6CiAgICAgRnJhZ21l
bnRUZXhPcGFxdWVCaW5kaW5nKCk7CiAKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlm
b3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gLTE7IH0KICAgICBpbnQgZWRnZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
LTE7IH0KICAgICBpbnQgZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIC0xOyB9CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogY2xhc3MgRnJhZ21lbnRTaGFk
ZXJPRVNJbWFnZUV4dGVybmFsIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKIHB1
YmxpYzoKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBpbml0
KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICBi
b29sIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0s
IGJvb2wgdXNpbmdCaW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKIHByaXZhdGU6
CiAgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOwogfTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBjbGFz
cyBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBIHsKIHB1YmxpYzoKICAgICBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYUFBKCk7CiAKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlm
b3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmco
KSBjb25zdDsKIAogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbHBo
YUxvY2F0aW9uOyB9CkBAIC0yNDksNyArMjQ5LDcgQEAgY2xhc3MgRnJhZ21lbnRUZXhDbGFtcEFs
cGhhQUFCaW5kaW5nIHsKIHB1YmxpYzoKICAgICBGcmFnbWVudFRleENsYW1wQWxwaGFBQUJpbmRp
bmcoKTsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5z
aWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0
M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0sIGludCogYmFzZVVu
aWZvcm1JbmRleCk7CiAgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Fs
cGhhTG9jYXRpb247IH0KICAgICBpbnQgc2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zYW1wbGVyTG9jYXRpb247IH0KICAgICBpbnQgZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQpAQCAt
Mjc4LDcgKzI3OCw3IEBAIHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1h
c2soKTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIGlu
aXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAg
IHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3Jh
bSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIGlu
dCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CiAgICAg
aW50IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlckxvY2F0aW9uOyB9
CiAgICAgaW50IG1hc2tTYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hc2tTYW1w
bGVyTG9jYXRpb247IH0KQEAgLTI5NCw3ICsyOTQsNyBAQCBwdWJsaWM6CiAgICAgRnJhZ21lbnRT
aGFkZXJSR0JBVGV4QWxwaGFNYXNrQUEoKTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkg
Y29uc3Q7CiAKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlmb3JtLCBpbnQqIGJhc2VV
bmlmb3JtSW5kZXgpOwogICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9h
bHBoYUxvY2F0aW9uOyB9CiAgICAgaW50IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2FtcGxlckxvY2F0aW9uOyB9CiAgICAgaW50IG1hc2tTYW1wbGVyTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX21hc2tTYW1wbGVyTG9jYXRpb247IH0KQEAgLTMxMiw3ICszMTIsNyBAQCBw
dWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbygpOwogICAgIFN0cmluZyBnZXRTaGFk
ZXJTdHJpbmcoKSBjb25zdDsKIAotICAgIHZvaWQgaW5pdChXZWJLaXQ6OldlYkdyYXBoaWNzQ29u
dGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgdm9pZCBpbml0KFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBib29sIHVzaW5nQmluZFVuaWZvcm0s
IGludCogYmFzZVVuaWZvcm1JbmRleCk7CiAKICAgICBpbnQgeVRleHR1cmVMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1feVRleHR1cmVMb2NhdGlvbjsgfQogICAgIGludCB1VGV4dHVyZUxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV91VGV4dHVyZUxvY2F0aW9uOyB9CkBAIC0zMzUsNyArMzM1
LDcgQEAgcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyQ29sb3IoKTsKICAgICBTdHJpbmcgZ2V0
U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluaXQoV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIHZvaWQgaW5pdChXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSwgYm9vbCB1c2luZ0JpbmRVbmlm
b3JtLCBpbnQqIGJhc2VVbmlmb3JtSW5kZXgpOwogICAgIGludCBjb2xvckxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9jb2xvckxvY2F0aW9uOyB9CiAKIHByaXZhdGU6CkBAIC0zNDcsNyArMzQ3
LDcgQEAgcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkKCk7CiAgICAgU3Ry
aW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCi0gICAgdm9pZCBpbml0KFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICB2b2lkIGluaXQoV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0sIGJvb2wgdXNpbmdC
aW5kVW5pZm9ybSwgaW50KiBiYXNlVW5pZm9ybUluZGV4KTsKICAgICBpbnQgYWxwaGFMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQogICAgIGludCB0ZXhUcmFuc2Zv
cm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4VHJhbnNmb3JtTG9jYXRpb247IH0KICAg
ICBpbnQgZnJlcXVlbmN5TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZyZXF1ZW5jeUxvY2F0
aW9uOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlQ29waWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCmluZGV4IDI2Mjc4NGQ2NThkNWE5NmYzZTY4M2Q3
ZGJjMmEzNzI5ZDRhYmI1NmIuLjMzMjQzYzg1NTJkM2ZhMmU4NTFlZjdmODYzYTVkZTYyMDM1YzUw
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVDb3BpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCkBAIC0zNCw4ICszNCw5IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi1BY2NlbGVyYXRl
ZFRleHR1cmVDb3BpZXI6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcihXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KQorQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpBY2NlbGVy
YXRlZFRleHR1cmVDb3BpZXIoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
Ym9vbCB1c2luZ0JpbmRVbmlmb3JtcykKICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwg
bV91c2luZ0JpbmRVbmlmb3Jtcyh1c2luZ0JpbmRVbmlmb3JtcykKIHsKICAgICBBU1NFUlQobV9j
b250ZXh0KTsKICAgICBHTEMobV9jb250ZXh0LCBtX2ZibyA9IG1fY29udGV4dC0+Y3JlYXRlRnJh
bWVidWZmZXIoKSk7CkBAIC05MCw3ICs5MSw3IEBAIHZvaWQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29w
aWVyOjpjb3B5VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY2NDb250ZXh0LCB1bnNpZ25lCiAg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpORUFSRVNUKSk7CiAKICAgICBpZiAoIW1fYmxpdFByb2dyYW0tPmluaXRp
YWxpemVkKCkpCi0gICAgICAgIG1fYmxpdFByb2dyYW0tPmluaXRpYWxpemUoY29udGV4dCk7Cisg
ICAgICAgIG1fYmxpdFByb2dyYW0tPmluaXRpYWxpemUoY29udGV4dCwgbV91c2luZ0JpbmRVbmlm
b3Jtcyk7CiAKICAgICAvLyBUT0RPOiBVc2UgRVhUX2ZyYW1lYnVmZmVyX2JsaXQgaWYgYXZhaWxh
YmxlLgogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9ncmFtKG1fYmxpdFByb2dyYW0t
PnByb2dyYW0oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oCmluZGV4IDY0NjE4OWFiNjE4ODQzNGRkOGVk
MGU3NzIwYzI2ZjAwODI4MWQzZDYuLmMyYmNkNDI3YzMxMDBjMmE1NDhhODEyMzI4YWE3NzJhZWE0
ZmFhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgKQEAgLTUzLDE2ICs1MywxNiBAQCBwcm90ZWN0ZWQ6
CiBjbGFzcyBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIgOiBwdWJsaWMgVGV4dHVyZUNvcGllciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IGNy
ZWF0ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY3JlYXRlKFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGJvb2wgdXNpbmdCaW5kVW5pZm9ybXMpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcihjb250
ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQWNjZWxlcmF0ZWRUZXh0dXJlQ29w
aWVyKGNvbnRleHQsIHVzaW5nQmluZFVuaWZvcm1zKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkFj
Y2VsZXJhdGVkVGV4dHVyZUNvcGllcigpOwogCiAgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJl
KENDR3JhcGhpY3NDb250ZXh0KiwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBk
ZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJik7CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNp
dCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCop
OworICAgIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcihXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEKiwgYm9vbCB1c2luZ0JpbmRVbmlmb3Jtcyk7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBQ
cm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhJZGVudGl0eSwgRnJhZ21lbnRTaGFkZXJS
R0JBVGV4PiBCbGl0UHJvZ3JhbTsKQEAgLTcxLDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBQbGF0
Zm9ybTNET2JqZWN0IG1fZmJvOwogICAgIFBsYXRmb3JtM0RPYmplY3QgbV9wb3NpdGlvbkJ1ZmZl
cjsKICAgICBPd25QdHI8QmxpdFByb2dyYW0+IG1fYmxpdFByb2dyYW07CisgICAgYm9vbCBtX3Vz
aW5nQmluZFVuaWZvcm1zOwogfTsKIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUNv
cGllclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVy
VGVzdC5jcHAKaW5kZXggMmM5MGM0ZWQ1YWYxZmYwOWExZGU4NGZiZmViZTZhM2NmODJiZGI4OS4u
YjNlZjRjMmViZWZiODRkMWU3MjM0YjUzNDY1MThjMDU2ZTk5N2IzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAKQEAgLTc4LDcg
Kzc4LDcgQEAgVEVTVChUZXh0dXJlQ29waWVyVGVzdCwgdGVzdERyYXdBcnJheXNDb3B5KQogICAg
IGludCBzb3VyY2VUZXh0dXJlSWQgPSAxOwogICAgIGludCBkZXN0VGV4dHVyZUlkID0gMjsKICAg
ICBJbnRTaXplIHNpemUoMjU2LCAxMjgpOwotICAgIE93blB0cjxBY2NlbGVyYXRlZFRleHR1cmVD
b3BpZXI+IGNvcGllcihBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0ZShjY0NvbnRleHQt
PmNvbnRleHQzRCgpKSk7CisgICAgT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY29w
aWVyKEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKGNjQ29udGV4dC0+Y29udGV4dDNE
KCksIGZhbHNlKSk7CiAgICAgY29waWVyLT5jb3B5VGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIHNv
dXJjZVRleHR1cmVJZCwgZGVzdFRleHR1cmVJZCwgc2l6ZSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>