<?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>81437</bug_id>
          
          <creation_ts>2012-03-16 17:54:01 -0700</creation_ts>
          <short_desc>[chromium] Early out in a new prepareToDraw() step if checkerboarding an accelerated animation in order to skip the frame</short_desc>
          <delta_ts>2012-03-22 08:09:29 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>81106</dependson>
    
    <dependson>81862</dependson>
          <blocked>79536</blocked>
    
    <blocked>81716</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>vollick</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>epenner</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>581162</commentid>
    <comment_count>0</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-03-16 17:54:01 -0700</bug_when>
    <thetext>During an accelerated css animation, if we find that we are about to draw a frame with missing textures, this should not make it to the screen. If this happens at time t, and it takes n seconds before we get the textures, the textures should be positioned as they would be at ~time t + n in the animation, not t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581512</commentid>
    <comment_count>1</comment_count>
      <attachid>132506</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-18 16:22:05 -0700</bug_when>
    <thetext>Created attachment 132506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581513</commentid>
    <comment_count>2</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-18 16:22:50 -0700</bug_when>
    <thetext>Adding dep on bug #81106 because it needs it for the unit tests to build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583068</commentid>
    <comment_count>3</comment_count>
      <attachid>132825</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-20 07:55:18 -0700</bug_when>
    <thetext>Created attachment 132825
Patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583417</commentid>
    <comment_count>4</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-20 13:58:15 -0700</bug_when>
    <thetext>nat&apos;s going to look this over first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583461</commentid>
    <comment_count>5</comment_count>
      <attachid>132825</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-20 14:33:51 -0700</bug_when>
    <thetext>Comment on attachment 132825
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.cpp:153
&gt; +                bool layerHasAnimatingTransform = screenSpaceTransformIsAnimating() || drawTransformIsAnimating();

I&apos;d suggest moving the check for animation up to calculateRenderPasses and instead just return if any checkerboards were needed for that layer.  It&apos;d allow us to potentially change the logic to &quot;on desktop, don&apos;t show any checkerboards&quot; more easily in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583603</commentid>
    <comment_count>6</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-20 16:32:56 -0700</bug_when>
    <thetext>I had a conversation with Nat, which I&apos;ll paraphrase here.

Essentially, when the scheduler says &quot;draw a frame&quot; it really expects to draw a frame, and you can&apos;t just abort.

Ultimately, to make this happen scheduledActionDrawAndSwap needs to become scheduledActionPrepareToDraw (animate, calculateRenderPasses) and scheduledActionDrawAndSwap (actually draw, if you can).  Changing the scheduler and the proxies can be done in bug 81716.

Before that happens, CCLTHI::drawLayers also needs to be split out into a CCLTHI::prepareToDraw that generates the render passes (and stores them somewhere) and returns a boolean whether not it can draw.  That boolean will get ignored until the scheduler and proxy changes happen.

You could split that out in this bug or in a separate one, if that&apos;s easier.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584523</commentid>
    <comment_count>7</comment_count>
      <attachid>133100</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-21 12:54:08 -0700</bug_when>
    <thetext>Created attachment 133100
Patch

Split CCLTHI::drawLayers() into:

bool prepareToDraw(FrameData&amp;);
void drawLayers(const FrameData&amp;);

I felt dirty sticking state on the LayerTreeHost, so I made a struct that the proxy owns and passes in.

Proxys call both of these but assume that prepareToDraw is always true for now. Follow up CL will fix that.

Great call on passing up &quot;usedCheckboard&quot; and doing the animation check in calcRenderPasses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584525</commentid>
    <comment_count>8</comment_count>
      <attachid>133100</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-21 12:55:22 -0700</bug_when>
    <thetext>Comment on attachment 133100
Patch

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

Me gusta.

&gt; Source/WebCore/ChangeLog:3
&gt; +        [chromium] During accelerated css animations, don&apos;t draw frames with missing textures

bug name and description of what this does out of date

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:289
&gt; +    bool unableToDrawAnimation = false;

unableToDrawDueToAnimationCausedCheckerboard?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:-165
&gt; -    void calculateRenderPasses(CCRenderPassList&amp;, CCLayerList&amp; renderSurfaceLayerList);

// explaining return value and what it means

&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.h:41
&gt; +    virtual bool append(PassOwnPtr&lt;CCDrawQuad&gt; passDrawQuad);

// explaining bool ret</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584528</commentid>
    <comment_count>9</comment_count>
      <attachid>133100</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-21 12:57:06 -0700</bug_when>
    <thetext>Comment on attachment 133100
Patch

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

This one&apos;s even better. :)

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:289
&gt;&gt;      typedef CCLayerIterator&lt;CCLayerImpl, Vector&lt;CCLayerImpl*&gt;, CCRenderSurface, CCLayerIteratorActions::FrontToBack&gt; CCLayerIteratorType;
&gt; 
&gt; unableToDrawDueToAnimationCausedCheckerboard?

OH, nvm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584536</commentid>
    <comment_count>10</comment_count>
      <attachid>133101</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-21 13:02:36 -0700</bug_when>
    <thetext>Created attachment 133101
Patch

Added //explain for bool returns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584541</commentid>
    <comment_count>11</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-21 13:08:34 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=133101) [details]
&gt; Patch
&gt; 
&gt; Added //explain for bool returns.

Just to make sure this is line with future plans, when bug 81716 gets addressed, is the proxy going to end up owning the FrameData as a member variable? Or, how is that going to get transferred between two separate scheduler actions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584545</commentid>
    <comment_count>12</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-21 13:11:04 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Created an attachment (id=133101) [details] [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Added //explain for bool returns.
&gt; 
&gt; Just to make sure this is line with future plans, when bug 81716 gets addressed, is the proxy going to end up owning the FrameData as a member variable? Or, how is that going to get transferred between two separate scheduler actions?

TBH I didn&apos;t think in those terms. But I think I&apos;d rather the proxy own it than the LayerTreeHost. Do you agree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584549</commentid>
    <comment_count>13</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-21 13:17:36 -0700</bug_when>
    <thetext>&gt; TBH I didn&apos;t think in those terms. But I think I&apos;d rather the proxy own it than the LayerTreeHost. Do you agree?

Seems fair. We&apos;ll see what the scheduler is in the mood to do. Its a moody best, the scheduler. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584564</commentid>
    <comment_count>14</comment_count>
      <attachid>133101</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-21 13:27:20 -0700</bug_when>
    <thetext>Comment on attachment 133101
Patch

Thanks for all the changes.  Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584568</commentid>
    <comment_count>15</comment_count>
      <attachid>133101</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 13:31:48 -0700</bug_when>
    <thetext>Comment on attachment 133101
Patch

Rejecting attachment 133101 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:
patching file Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp
patching file Source/WebKit/chromium/tests/CCQuadCullerTest.cpp
patching file Source/WebKit/chromium/tests/CCSolidColorLayerImplTest.cpp
patching file Source/WebKit/chromium/tests/CCTiledLayerImplTest.cpp
patching file Source/WebKit/chromium/tests/MockCCQuadCuller.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Adrienne W...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12034667</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584645</commentid>
    <comment_count>16</comment_count>
      <attachid>133113</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-21 14:44:56 -0700</bug_when>
    <thetext>Created attachment 133113
Patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584729</commentid>
    <comment_count>17</comment_count>
      <attachid>133113</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 15:59:55 -0700</bug_when>
    <thetext>Comment on attachment 133113
Patch

Clearing flags on attachment: 133113

Committed r111616: &lt;http://trac.webkit.org/changeset/111616&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584730</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 16:00:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584885</commentid>
    <comment_count>19</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-21 19:01:41 -0700</bug_when>
    <thetext>Reopening to fix scoping issue in the unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585217</commentid>
    <comment_count>20</comment_count>
      <attachid>133251</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-22 07:00:06 -0700</bug_when>
    <thetext>Created attachment 133251
Patch

Fix mac build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585297</commentid>
    <comment_count>21</comment_count>
      <attachid>133251</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 08:09:23 -0700</bug_when>
    <thetext>Comment on attachment 133251
Patch

Clearing flags on attachment: 133251

Committed r111700: &lt;http://trac.webkit.org/changeset/111700&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585298</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 08:09:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132506</attachid>
            <date>2012-03-18 16:22:05 -0700</date>
            <delta_ts>2012-03-20 07:55:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81437-20120318192203.patch</filename>
            <type>text/plain</type>
            <size>39998</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTFlYjcxMmQ2ZTRlMzkw
ZGU0Njk5OWQ4ZGE3ZGQyYTNmMjU5NzE1OC4uNjJjOTkwYmNjMWJkMGM0NzgxZmZiNmQ2OGFlYTlh
MDM0NmNjZmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAzLTE4ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRHVy
aW5nIGFjY2VsZXJhdGVkIGNzcyBhbmltYXRpb25zLCBkb24ndCBkcmF3IGZyYW1lcyB3aXRoIG1p
c3NpbmcgdGV4dHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgxNDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2hlbiBjYWxjdWxhdGluZyBhIFJlbmRlclBhc3MsIGFuZCB3ZSBjaGVja2VyYm9hcmQg
YSBxdWFkIG9uIGEKKyAgICAgICAgbGF5ZXIgd2hpY2ggaXMgdHJhbnNmb3JtaW5nIGR1ZSB0byBh
biBhbmltYXRpb24sIGJ1YmJsZSB0aGlzIGluZm8KKyAgICAgICAgYmFjayB1cCB0byBDQ0xheWVy
VHJlZUhvc3RJbXBsIGFuZCBhYm9ydCBkcmF3aW5nIHRoZSBmcmFtZS4KKworICAgICAgICBVbml0
IHRlc3Q6IENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmFuaW1hdGlvbkFib3J0c0ZyYW1lV2hlbk1p
c3NpbmdUZXh0dXJlCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YXBwZW5kUXVh
ZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
Lmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAo
Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVhZEN1bGxlcjo6
YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuaDoKKyAgICAgICAgKENDUXVhZEN1bGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmg6CisgICAgICAgIChDQ1JlbmRlclBhc3Mp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3Jv
bGxiYXJMYXllckltcGwuaDoKKyAgICAgICAgKENDU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9y
TGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1NvbGlkQ29sb3JMYXllckltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaDoK
KyAgICAgICAgKENDVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAgICAoQ0NUaWxlZExheWVy
SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xh
eWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRR
dWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xh
eWVySW1wbC5oOgorICAgICAgICAoQ0NWaWRlb0xheWVySW1wbCk6CisKIDIwMTItMDMtMTYgIERh
bmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBU
cmFuc2Zvcm0gYW5pbWF0aW9uIHN0YXRlIHNob3VsZCBiZSBpbmhlcml0ZWQgZnJvbSBwYXJlbnRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFmMzg4MjE5MWI0MzliNDdjNjc0ZmRhYWQ1
Mzk0NjZhOWFmNTJmYTAuLjFlZDk5ODQ2MWMwZDYxYTFlNWY4NTNmN2YwNGY0OWYxZTAzZDUwOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTItMDMtMTgg
IERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBEdXJpbmcgYWNjZWxlcmF0ZWQgY3NzIGFuaW1hdGlvbnMsIGRvbid0IGRyYXcgZnJhbWVzIHdp
dGggbWlzc2luZyB0ZXh0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODE0MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHRlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEFuaW1hdGVkVHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjphZGRPcGFjaXR5VHJhbnNpdGlvblRvTGF5ZXIpOgorICAgICAgICAo
V2ViS2l0VGVzdHMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OmFkZEFuaW1hdGVkVHJhbnNmb3Jt
VG9MYXllcik6CisgICAgICAgICogdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKiB0ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChEaWREcmF3Q2hlY2tMYXllcik6
CisgICAgICAgIChXZWJLaXRUZXN0czo6RGlkRHJhd0NoZWNrTGF5ZXI6OkRpZERyYXdDaGVja0xh
eWVyKToKKyAgICAgICAgKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIpOgorICAgICAgICAo
V2ViS2l0VGVzdHM6Ok1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXRUZXN0czo6TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6TWlzc2luZ1Rl
eHR1cmVBbmltYXRpbmdMYXllcik6CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6VEVTVF9GKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpCbGVuZFN0YXRlQ2hl
Y2tMYXllcjo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHRlc3RzL0ND
U29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246
OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcDoKKyAgICAg
ICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpURVNUKToKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9u
OjpnZXRRdWFkcyk6CisgICAgICAgICogdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0NDUXVhZEN1bGxlcjo6YXBwZW5kKToKKwogMjAxMi0wMy0xNiAgRGFu
YSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFRy
YW5zZm9ybSBhbmltYXRpb24gc3RhdGUgc2hvdWxkIGJlIGluaGVyaXRlZCBmcm9tIHBhcmVudHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCAxNjQxZjE2OGE3M2Q0MmIwMWZjNmE3ZGUyZTMw
MGRhODUwNjJlMzNkLi4yNmQzNjQxNGJmMjNlYTdiOTgwYzhkZTJkZmJiNDk3NTdkZWUzMTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgUGFzc093blB0cjxD
Q1NoYXJlZFF1YWRTdGF0ZT4gQ0NMYXllckltcGw6OmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpIGNv
bnN0CiAgICAgcmV0dXJuIENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUocXVhZFRyYW5zZm9ybSgp
LCBkcmF3VHJhbnNmb3JtKCksIHZpc2libGVMYXllclJlY3QoKSwgbGF5ZXJDbGlwUmVjdCwgZHJh
d09wYWNpdHkoKSwgb3BhcXVlKCkpOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlKQordm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBx
dWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYp
CiB7CiAgICAgYXBwZW5kR3V0dGVyUXVhZHMocXVhZExpc3QsIHNoYXJlZFF1YWRTdGF0ZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaAppbmRleCBhYWY2ZmUyZjZlNTk5YTVhMGZlMGRlZTE5YmVmNWMx
N2RhYTBkY2NkLi4zZTRiNjE4Njc1N2NmZDUyNDI4NjE2ZWVhZjBiMDAzZjhlNmIyOGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgUGFzc093
blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSopOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVuYWJsZVRvRHJhd0FuaW1hdGlvbik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKSB7IH0KICAgICB2b2lkIGFwcGVuZERlYnVnQm9yZGVy
UXVhZChDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDRjZTZhZjQwY2VjOTli
ZGJkNjdmY2I4NTE2Nzk5MjQzYmRkNmJmNjAuLjk1MjM0NGRmMzhlYjc4YzEwYTc2YjY3MmY5N2Nl
OWZhN2M4YTY4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBA
IC0yMzAsNyArMjMwLDcgQEAgc3RhdGljIEZsb2F0UmVjdCBkYW1hZ2VJblN1cmZhY2VTcGFjZShD
Q0xheWVySW1wbCogcmVuZGVyU3VyZmFjZUxheWVyLCBjb25zdCBGbG8KICAgICByZXR1cm4gc3Vy
ZmFjZURhbWFnZVJlY3Q7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRl
UmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllckxpc3QmIHJlbmRl
clN1cmZhY2VMYXllckxpc3QpCitib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJl
bmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZXJMaXN0JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KQogewogICAgIFRSQUNFX0VWRU5UMSgid2Via2l0IiwgIkNDTGF5ZXJU
cmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyIsICJyZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LnNpemUoKSIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZyB1bnNpZ25lZD4ocmVuZGVyU3VyZmFj
ZUxheWVyTGlzdC5zaXplKCkpKTsKIApAQCAtMjgwLDYgKzI4MCw5IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3Nl
cywgQ0NMYXllCiAgICAgLy8gQWRkIHF1YWRzIHRvIHRoZSBSZW5kZXIgcGFzc2VzIGluIEZyb250
VG9CYWNrIG9yZGVyIHRvIGFsbG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVyZm9ybWlu
ZyBjdWxsaW5nIGR1cmluZyB0aGUgdHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJh
dG9yPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBD
Q0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsK
IAorICAgIC8vIElmIHdlIGFyZSB1bmFibGUgdG8gZHJhdyBhbiBhbmltYXRpb24gb24gc29tZSBs
YXllciwgdGhlbiB3ZSBhYm9ydCB0aGUgZW50aXJlIGZyYW1lLgorICAgIGJvb2wgdW5hYmxlVG9E
cmF3QW5pbWF0aW9uID0gZmFsc2U7CisKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IEND
TGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgZm9y
IChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJl
bmRlclN1cmZhY2VMYXllckxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgQ0NSZW5k
ZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlID0gaXQudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCkt
PnJlbmRlclN1cmZhY2UoKTsKQEAgLTMwMywxMSArMzA2LDE3IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3Nlcywg
Q0NMYXllCiAgICAgICAgIH0KIAogICAgICAgICBpdC0+d2lsbERyYXcobV9sYXllclJlbmRlcmVy
LmdldCgpKTsKLSAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNp
b25UcmFja2VyKTsKKyAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2Ns
dXNpb25UcmFja2VyLCB1bmFibGVUb0RyYXdBbmltYXRpb24pOworICAgICAgICBpZiAodW5hYmxl
VG9EcmF3QW5pbWF0aW9uKQorICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgb2NjbHVzaW9u
VHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcigqaXQpOwogICAgIH0KIAotICAgIG9jY2x1
c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucmVjb3JkTWV0cmljcyh0aGlzKTsKKyAgICBi
b29sIGRyYXdGcmFtZSA9ICF1bmFibGVUb0RyYXdBbmltYXRpb247CisgICAgaWYgKGRyYXdGcmFt
ZSkKKyAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5yZWNvcmRNZXRy
aWNzKHRoaXMpOworICAgIHJldHVybiBkcmF3RnJhbWU7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6YW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCogY3VycmVudCwgZG91
YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50
c1ZlY3RvciogZXZlbnRzLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXll
cnMpCkBAIC0zNTcsNyArMzY2LDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5
ZXJzKCkKIAogICAgIENDUmVuZGVyUGFzc0xpc3QgcGFzc2VzOwogICAgIENDTGF5ZXJMaXN0IHJl
bmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgY2FsY3VsYXRlUmVuZGVyUGFzc2VzKHBhc3Nlcywg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgaWYgKCFjYWxjdWxhdGVSZW5kZXJQYXNzZXMo
cGFzc2VzLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9sYXllclJlbmRlcmVyLT5iZWdpbkRyYXdpbmdGcmFtZSgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcGFzc2VzLnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oCmluZGV4IDgyNDM1ZmNlNDBjN2Q2MWI3OTFmNzU4ZTM5Mzg5YTc1MzMyYTBjOWQuLmE5
ODAwMjIxZmNmY2RiODMzYzZmNTE1MjI0ODg0YTBlNTg1OTgxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgYWRqdXN0U2Nyb2xsc0ZvclBhZ2VTY2FsZUNoYW5nZShmbG9hdCk7CiAgICAgdm9pZCB1cGRh
dGVNYXhTY3JvbGxQb3NpdGlvbigpOwogICAgIHZvaWQgdHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNl
cyhDQ0xheWVySW1wbCogcm9vdERyYXdMYXllciwgY29uc3QgQ0NMYXllckxpc3QmIHJlbmRlclN1
cmZhY2VMYXllckxpc3QpOwotICAgIHZvaWQgY2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVy
UGFzc0xpc3QmLCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgYm9v
bCBjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYsIENDTGF5ZXJMaXN0JiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICB2b2lkIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUo
Q0NMYXllckltcGwqLCBkb3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUs
IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKiwgYm9vbCYgZGlkQW5pbWF0ZSwgYm9vbCYgbmVlZHNB
bmltYXRlTGF5ZXJzKTsKICAgICBJbnRTaXplIGNvbnRlbnRTaXplKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZW5kRGlkTG9zZUNvbnRleHRSZWN1cnNpdmUoQ0NMYXllckltcGwqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1
YWRDdWxsZXIuY3BwCmluZGV4IGYyYTg1ODcxNzBjM2JhNWFlMjJlMWIzODhmM2Y4ODI2ZDBlZmQz
YWMuLjM1ZDE5NDYxNzc5NTkyZmViNGVmODQ3MWIzOGZlMGQ1ZWY5Yzg0NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NRdWFkQ3VsbGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBDQ1F1YWRDdWxsZXI6OkNDUXVhZEN1
bGxlcihDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgQ0NMYXllckltcGwqIGxheWVyLCBDQ09jY2x1c2lv
bgogewogfQogCi12b2lkIENDUXVhZEN1bGxlcjo6YXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVh
ZD4gcGFzc0RyYXdRdWFkKQorYm9vbCBDQ1F1YWRDdWxsZXI6OmFwcGVuZChQYXNzT3duUHRyPEND
RHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCkKIHsKICAgICBPd25QdHI8Q0NEcmF3UXVhZD4gZHJhd1F1
YWQocGFzc0RyYXdRdWFkKTsKICAgICBJbnRSZWN0IGN1bGxlZFJlY3QgPSBtX29jY2x1c2lvblRy
YWNrZXItPnVub2NjbHVkZWRDb250ZW50UmVjdChtX2xheWVyLCBkcmF3UXVhZC0+cXVhZFJlY3Qo
KSk7CkBAIC02MSw2ICs2MSw3IEBAIHZvaWQgQ0NRdWFkQ3VsbGVyOjphcHBlbmQoUGFzc093blB0
cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpCiAgICAgLy8gUmVsZWFzZSB0aGUgcXVhZCBhZnRl
ciB3ZSdyZSBkb25lIHVzaW5nIGl0LgogICAgIGlmIChrZWVwUXVhZCkKICAgICAgICAgbV9xdWFk
TGlzdC5hcHBlbmQoZHJhd1F1YWQucmVsZWFzZSgpKTsKKyAgICByZXR1cm4ga2VlcFF1YWQ7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKaW5kZXggMWY0
YjkyMDU2MmFlOTVjNTZkZjcwNjkzZDhiOWMxNzA4ZmM5OTcyMC4uZjRmMjVlOGM0NTg5MDI3ZTNj
NzMyOGU4NzVkNTE2MzUzODM3MmIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKQEAgLTM4LDcg
KzM4LDcgQEAgcHVibGljOgogICAgIC8vIGRvbmUgdG8gZXN0aW1hdGUgb3ZlciBkcmF3IHN0YXRp
c3RpY3MuCiAgICAgQ0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmLCBDQ0xheWVySW1wbCosIENDT2Nj
bHVzaW9uVHJhY2tlckltcGwqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoUGFzc093blB0
cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpOworICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoUGFz
c093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpOwogCiBwcml2YXRlOgogICAgIENDUXVh
ZExpc3QmIG1fcXVhZExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAppbmRleCBhMTJiZmJi
NTlmNGE3YjkzOTYzZDI0MzRlYzYwY2JlODUwMDU2MzRhLi43NGFjNWEwYTlmNTcyZDZmNTZkYjM2
NDA1YzQ3OTVmZDcwNGY5ZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKQEAgLTQ2LDEy
ICs0NiwxMiBAQCBDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyhDQ1JlbmRlclN1cmZhY2UqIHRh
cmdldFN1cmZhY2UpCiAgICAgQVNTRVJUKG1fdGFyZ2V0U3VyZmFjZSk7CiB9CiAKLXZvaWQgQ0NS
ZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2Ns
dXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tlcikKK3ZvaWQgQ0NSZW5kZXJQYXNzOjph
cHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2NsdXNpb25UcmFja2Vy
SW1wbCogb2NjbHVzaW9uVHJhY2tlciwgYm9vbCYgdW5hYmxlVG9EcmF3QW5pbWF0aW9uKQogewog
ICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKG1fcXVhZExpc3QsIGxheWVyLCBvY2NsdXNpb25U
cmFja2VyKTsKIAogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRl
ID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgIGxheWVyLT5hcHBlbmRRdWFk
cyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgIGxheWVyLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVuYWJsZVRvRHJhd0FuaW1h
dGlvbik7CiAgICAgbGF5ZXItPmFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkQ3VsbGVyLCBzaGFy
ZWRRdWFkU3RhdGUuZ2V0KCkpOwogICAgIG1fc2hhcmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hh
cmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCmluZGV4IGFj
OGRiYzFhMGQyNmE4NDc2NjU3ZmI2NzJjMmYxNWFhYjI0YzhlZTEuLjlhMzkyM2E3ZThhNjcxYmYz
YjVkYzQwNmVmZDdkZjczZGI1ODI5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCkBAIC01NCw3
ICs1NCw3IEBAIGNsYXNzIENDUmVuZGVyUGFzcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8Q0NSZW5kZXJQYXNzPiBjcmVhdGUoQ0NSZW5kZXJTdXJmYWNlKik7CiAKLSAgICB2b2lk
IGFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBs
Kik7CisgICAgdm9pZCBhcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiwgQ0NPY2NsdXNp
b25UcmFja2VySW1wbCosIGJvb2wmIHVuYWJsZVRvRHJhd0FuaW1hdGlvbik7CiAgICAgdm9pZCBh
cHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCopOwogCiAgICAgY29u
c3QgQ0NRdWFkTGlzdCYgcXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRMaXN0OyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njcm9sbGJhckxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKaW5kZXggNDM3ZjRmNzc2ZDhi
MDdkNWI5YWZjZDFjMGM1MDNkZDhjODkxNDJhNS4uMTUyMDY1ZDA4ZTExMWQ5YWUxY2RiNWZkNjMz
MWU4MTk0MDEwYzVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNw
cApAQCAtNzksNyArNzksNyBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjp3aWxsRHJhdyhM
YXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAgICAgfQogfQogCi12b2lkIEND
U2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQordm9pZCBDQ1Njcm9sbGJh
ckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgaWYgKCFtX3Rl
eHR1cmUtPmlzUmVzZXJ2ZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllcklt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Ny
b2xsYmFyTGF5ZXJJbXBsLmgKaW5kZXggZmNlYzExMGUyNDE4MzFiZGIyMWY4NjcyYmJkMGM3Mzcy
MTFkM2ZjYy4uNGMzNzMyZTgwMzdkMWNkY2FlYjg3ZTllNWRlMzRhZjEwOWQwZTM5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3Jv
bGxiYXJMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNjcm9sbExheWVyKENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllcikgeyBt
X3Njcm9sbExheWVyID0gc2Nyb2xsTGF5ZXI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJh
dyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMo
Q0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBi
b29sJiB1bmFibGVUb0RyYXdBbmltYXRpb24pOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCk7
CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3Bw
CmluZGV4IGJmNjcwZWNjODllMWIwZmExN2ZlZTc2MDM4MzllYzI3Y2JmZDQ5MTcuLjZhZTNhMTcy
OThlOWM2YzMxODI3YWQ2OWVhYjQ2YjllOGVkM2U0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
b2xpZENvbG9yTGF5ZXJJbXBsLmNwcApAQCAtNTcsNyArNTcsNyBAQCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBDQ1NvbGlkQ29sb3JMYXllckltcGw6OnF1YWRUcmFuc2Zvcm0oKSBjb25zdAogICAgIHJl
dHVybiBzb2xpZENvbG9yVHJhbnNmb3JtOwogfQogCi12b2lkIENDU29saWRDb2xvckxheWVySW1w
bDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkKK3ZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICAvLyBXZSBjcmVhdGUgYSBzZXJpZXMgb2Yg
c21hbGxlciBxdWFkcyBpbnN0ZWFkIG9mIGp1c3Qgb25lIGxhcmdlIG9uZSBzbyB0aGF0IHRoZQog
ICAgIC8vIGN1bGxlciBjYW4gcmVkdWNlIHRoZSB0b3RhbCBwaXhlbHMgZHJhd24uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlk
Q29sb3JMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCmluZGV4IDdkMDc2NzM4Y2YzYTBjY2NjOTgy
YjQyMmVhYmQ4ZGEwMGIwMWJlYmEuLmRjYWFiOGVhNjY4YmE1OGM4ODUyZmZiZGVlNzczODkzOWVh
N2ExNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCkBAIC00Miw3
ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ1NvbGlkQ29sb3JMYXllckltcGwoKTsK
IAogICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRyYW5zZm9ybSgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSopOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxs
ZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVuYWJsZVRvRHJhd0FuaW1hdGlv
bik7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDQ1NvbGlkQ29sb3JMYXllckltcGwoaW50
IGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwCmluZGV4IGUwNmY3MmY2
ZjI0OWI2MWM3MWFhM2RhZDMzNjQzMWE4YjJlNjJiM2MuLjEyY2JhYjYyNTcwNjY3Yzg4ZGM4Nzcw
OTY2ODgzMjM4OGMyNGY5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNw
cApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6d2lsbERyYXcoTGF5
ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgIH0KIH0KIAotdm9pZCBDQ1Rl
eHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCit2b2lkIENDVGV4dHVyZUxheWVy
SW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgSW50UmVjdCBxdWFkUmVj
dChJbnRQb2ludCgpLCBib3VuZHMoKSk7CiAgICAgcXVhZExpc3QuYXBwZW5kKENDVGV4dHVyZURy
YXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV90ZXh0dXJlSWQsIG1f
aGFzQWxwaGEsIG1fcHJlbXVsdGlwbGllZEFscGhhLCBtX3V2UmVjdCwgbV9mbGlwcGVkLCBtX2lv
U3VyZmFjZVNpemUsIG1faW9TdXJmYWNlVGV4dHVyZUlkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZUxheWVySW1wbC5oCmluZGV4IGE4MWMzNjE2YWVkYjY0NWEyMWE3MzUwYjkxYmQ5M2Q2MDdmOGJj
NzIuLmMxNjcyYzdlMmJiZGNiNDQ5MDA4NGFiZDVlZTUyNTFhZmNmOWJlYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxh
eWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB9
CiAgICAgdmlydHVhbCB+Q0NUZXh0dXJlTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBib29sJiB1bmFibGVUb0RyYXdBbmltYXRpb24pOwogCiAgICAgdHlwZWRlZiBQ
cm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEZs
aXBBbHBoYT4gUHJvZ3JhbUZsaXA7CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhT
aGFkZXJQb3NUZXhTdHJldGNoLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUHJvZ3JhbVN0
cmV0Y2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IGExODc3Yjk4N2Fm
NjVlY2Y3MTU4Yjg3Mjg1ZTZkODgwOWFhNTdmZTQuLjg5YTI5OTI2ZWIwNzVlMGUxMjdlODRiY2Ew
MzYwNGRiMTg4NDI0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0x
MjMsNyArMTIzLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NUaWxlZExheWVySW1wbDo6cXVh
ZFRyYW5zZm9ybSgpIGNvbnN0CiAgICAgcmV0dXJuIHRyYW5zZm9ybTsKIH0KIAotdm9pZCBDQ1Rp
bGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQordm9pZCBDQ1RpbGVkTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJiB1bmFibGVUb0RyYXdBbmltYXRpb24pCiB7CiAg
ICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOwogCkBAIC0x
NDksNyArMTQ5LDEyIEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFk
Q3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgICAgIGlmICghdGlsZSB8fCAhdGlsZS0+dGV4dHVyZUlkKCkp
IHsKLSAgICAgICAgICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6
OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCBiYWNrZ3JvdW5kQ29sb3IoKSkpOwor
ICAgICAgICAgICAgICAgIGJvb2wgdXNlZENoZWNrZXJCb2FyZCA9IHF1YWRMaXN0LmFwcGVuZChD
Q1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIGJh
Y2tncm91bmRDb2xvcigpKSk7CisgICAgICAgICAgICAgICAgYm9vbCBsYXllckhhc0FuaW1hdGlu
Z1RyYW5zZm9ybSA9IHNjcmVlblNwYWNlVHJhbnNmb3JtSXNBbmltYXRpbmcoKSB8fCBkcmF3VHJh
bnNmb3JtSXNBbmltYXRpbmcoKTsKKyAgICAgICAgICAgICAgICBpZiAodXNlZENoZWNrZXJCb2Fy
ZCAmJiBsYXllckhhc0FuaW1hdGluZ1RyYW5zZm9ybSkgeworICAgICAgICAgICAgICAgICAgICB1
bmFibGVUb0RyYXdBbmltYXRpb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggMGJlNjU3NzQzOGMwMDM2
MzE3NDRiNzc3MzVjYTY5YWQyODM4NTRhZC4uNzcwNzc2YmU0ZDIwOTEyYzYwYjA4ZWQwMmNhNTQw
ZDQ4MzlmMWY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVGlsZWRMYXllckltcGwoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSopOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXIm
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVuYWJsZVRvRHJhd0FuaW1hdGlvbik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZShMYXllclJlbmRlcmVyQ2hy
b21pdW0qKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCBiNWFhM2Ux
NzE1MGZlMDU0ZjczZTUxZWYwMDJhNmZkYWJmN2ZjNjQ3Li5hNTZjZjU4OTEzZDU0ZDYyZWY4YzM0
MDE2ZTgwN2JhODZhODQxOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApA
QCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJS
ZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgIH0KIH0KIAotdm9pZCBDQ1ZpZGVv
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAppbmRleCA0ZmI0NWViZDk3MGZi
M2Y5YzkzOWU5MGI2OWUwNGNkYmRhMGFkZDJmLi43YWQ4MjBmN2FmZGYxMzcxMmNjNjk1ZmMxMWYy
MDMxNDkwOTg0YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ1ZpZGVvTGF5ZXJJbXBsKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7Ci0gICAgdmlydHVh
bCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
Kik7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgdW5hYmxlVG9EcmF3QW5pbWF0aW9uKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRHJhdygpOwogCiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhT
aGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUkdC
QVByb2dyYW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5p
bWF0aW9uVGVzdENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5p
bWF0aW9uVGVzdENvbW1vbi5jcHAKaW5kZXggYzIyZTQzMjJiOTE3ODRmODIxYWNjMjJkN2Q2MTYz
NmRlNTY1YTg5Zi4uMGFhN2NlNjQ4ODhmMDhkMTkyMDNmMmIxZWM2MGZmNzIyNTJhNTdkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21t
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0
Q29tbW9uLmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5o
IgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC01MCw2ICs1MiwyNCBAQCB2b2lkIGFkZE9wYWNpdHlUcmFuc2l0aW9uKFRhcmdldCYg
dGFyZ2V0LCBkb3VibGUgZHVyYXRpb24sIGZsb2F0IHN0YXJ0T3BhY2l0eSwgZgogICAgIHRhcmdl
dC5hZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksIDAsIDAsIDAp
OwogfQogCit0ZW1wbGF0ZSA8Y2xhc3MgVGFyZ2V0Pgordm9pZCBhZGRBbmltYXRlZFRyYW5zZm9y
bShUYXJnZXQmIHRhcmdldCwgZG91YmxlIGR1cmF0aW9uLCBpbnQgZGVsdGFYLCBpbnQgZGVsdGFZ
KQoreworICAgIHN0YXRpYyBpbnQgaWQgPSAwOworICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVM
aXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKKworICAgIFRyYW5z
Zm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKKyAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5h
cHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKGRlbHRhWCwg
Rml4ZWQpLCBMZW5ndGgoZGVsdGFZLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFX1gpKTsKKyAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgw
LCAmb3BlcmF0aW9ucykpOworCisgICAgUmVmUHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uID0gQW5p
bWF0aW9uOjpjcmVhdGUoKTsKKyAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0aW9uKTsK
KworICAgIEludFNpemUgYm94U2l6ZTsKKworICAgIHRhcmdldC5hZGRBbmltYXRpb24odmFsdWVz
LCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksICsraWQsIDAsIDApOworfQorCiB9IC8vIG5hbWVz
cGFjZQogCiBuYW1lc3BhY2UgV2ViS2l0VGVzdHMgewpAQCAtMTMwLDQgKzE1MCwxOSBAQCB2b2lk
IGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9MYXllcihXZWJDb3JlOjpMYXllckNocm9taXVtJiBsYXll
ciwgZG91YmxlIGR1cmF0aW9uLAogICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uKGxheWVyLCBkdXJh
dGlvbiwgc3RhcnRPcGFjaXR5LCBlbmRPcGFjaXR5KTsKIH0KIAordm9pZCBhZGRPcGFjaXR5VHJh
bnNpdGlvblRvTGF5ZXIoV2ViQ29yZTo6Q0NMYXllckltcGwmIGxheWVyLCBkb3VibGUgZHVyYXRp
b24sIGZsb2F0IHN0YXJ0T3BhY2l0eSwgZmxvYXQgZW5kT3BhY2l0eSkKK3sKKyAgICBhZGRPcGFj
aXR5VHJhbnNpdGlvbigqbGF5ZXIubGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCksIGR1cmF0aW9u
LCBzdGFydE9wYWNpdHksIGVuZE9wYWNpdHkpOworfQorCit2b2lkIGFkZEFuaW1hdGVkVHJhbnNm
b3JtVG9MYXllcihXZWJDb3JlOjpMYXllckNocm9taXVtJiBsYXllciwgZG91YmxlIGR1cmF0aW9u
LCBpbnQgZGVsdGFYLCBpbnQgZGVsdGFZKQoreworICAgIGFkZEFuaW1hdGVkVHJhbnNmb3JtKGxh
eWVyLCBkdXJhdGlvbiwgZGVsdGFYLCBkZWx0YVkpOworfQorCit2b2lkIGFkZEFuaW1hdGVkVHJh
bnNmb3JtVG9MYXllcihXZWJDb3JlOjpDQ0xheWVySW1wbCYgbGF5ZXIsIGRvdWJsZSBkdXJhdGlv
biwgaW50IGRlbHRhWCwgaW50IGRlbHRhWSkKK3sKKyAgICBhZGRBbmltYXRlZFRyYW5zZm9ybSgq
bGF5ZXIubGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCksIGR1cmF0aW9uLCBkZWx0YVgsIGRlbHRh
WSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdFRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uaAppbmRleCAyM2E4OGY3
ZDZjYzY4OTJkMzgzMTJmNmJlY2I4OTlkMmMzM2FjMGM0Li43YzJjNWRjZGMzMDZjZDRkNjQzMDRk
OTU5NTAwNDNiZWFmY2YzMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENDTGF5ZXJJbXBs
OwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIH0KIApAQCAtOTgsNiArOTksMTAgQEAgcHJpdmF0ZToK
IHZvaWQgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0NvbnRyb2xsZXIoV2ViQ29yZTo6Q0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXImLCBkb3VibGUgZHVyYXRpb24sIGZsb2F0IHN0YXJ0T3BhY2l0eSwg
ZmxvYXQgZW5kT3BhY2l0eSk7CiAKIHZvaWQgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xheWVyKFdl
YkNvcmU6OkxheWVyQ2hyb21pdW0mLCBkb3VibGUgZHVyYXRpb24sIGZsb2F0IHN0YXJ0T3BhY2l0
eSwgZmxvYXQgZW5kT3BhY2l0eSk7Cit2b2lkIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9MYXllcihX
ZWJDb3JlOjpDQ0xheWVySW1wbCYsIGRvdWJsZSBkdXJhdGlvbiwgZmxvYXQgc3RhcnRPcGFjaXR5
LCBmbG9hdCBlbmRPcGFjaXR5KTsKKwordm9pZCBhZGRBbmltYXRlZFRyYW5zZm9ybVRvTGF5ZXIo
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSYsIGRvdWJsZSBkdXJhdGlvbiwgaW50IGRlbHRhWCwgaW50
IGRlbHRhWSk7Cit2b2lkIGFkZEFuaW1hdGVkVHJhbnNmb3JtVG9MYXllcihXZWJDb3JlOjpDQ0xh
eWVySW1wbCYsIGRvdWJsZSBkdXJhdGlvbiwgaW50IGRlbHRhWCwgaW50IGRlbHRhWSk7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdFRlc3RzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggYTE5MmJhNTU3
YmYwZWExNmMyMWU0YzA0MjQyY2IyNWQwOTBhMTc2My4uMDc2M2JjN2Q2MjNkNTQ3YzNmOGIyMDVk
ODk5OTkwZTE2MmI5M2MyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKIAorI2luY2x1ZGUgIkNDQW5pbWF0
aW9uVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgpAQCAtMzYsNiArMzcsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVz
dHM7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTM5MCw3ICszOTIsNyBAQCBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIHBhZ2VTY2FsZUFuaW1hdGlvbikKICAgICB9CiB9CiAKLWNsYXNzIERp
ZERyYXdDaGVja0xheWVyIDogcHVibGljIENDTGF5ZXJJbXBsIHsKK2NsYXNzIERpZERyYXdDaGVj
a0xheWVyIDogcHVibGljIENDVGlsZWRMYXllckltcGwgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPERpZERyYXdDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkKSB7IHJldHVybiBhZG9w
dFB0cihuZXcgRGlkRHJhd0NoZWNrTGF5ZXIoaWQpKTsgfQogCkBAIC00MDcsOSArNDA5LDkgQEAg
cHVibGljOgogICAgIGJvb2wgZGlkRHJhd0NhbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkRHJh
d0NhbGxlZDsgfQogICAgIGJvb2wgd2lsbERyYXdDYWxsZWQoKSBjb25zdCB7IHJldHVybiBtX3dp
bGxEcmF3Q2FsbGVkOyB9CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgRGlk
RHJhd0NoZWNrTGF5ZXIoaW50IGlkKQotICAgICAgICA6IENDTGF5ZXJJbXBsKGlkKQorICAgICAg
ICA6IENDVGlsZWRMYXllckltcGwoaWQpCiAgICAgICAgICwgbV9kaWREcmF3Q2FsbGVkKGZhbHNl
KQogICAgICAgICAsIG1fd2lsbERyYXdDYWxsZWQoZmFsc2UpCiAgICAgewpAQCAtNDE4LDYgKzQy
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICB9CiAK
K3ByaXZhdGU6CiAgICAgYm9vbCBtX2RpZERyYXdDYWxsZWQ7CiAgICAgYm9vbCBtX3dpbGxEcmF3
Q2FsbGVkOwogfTsKQEAgLTQ4Nyw2ICs0OTAsNzkgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCBkaWREcmF3Q2FsbGVkT25BbGxMYXllcnMpCiAgICAgRVhQRUNUX1RSVUUoISFsYXll
cjEtPnJlbmRlclN1cmZhY2UoKSk7CiB9CiAKK2NsYXNzIE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5n
TGF5ZXIgOiBwdWJsaWMgRGlkRHJhd0NoZWNrTGF5ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI+IGNyZWF0ZShpbnQgaWQsIGJv
b2wgdGlsZU1pc3NpbmcsIGJvb2wgc2tpcHNEcmF3LCBib29sIGFuaW1hdGluZykgeyByZXR1cm4g
YWRvcHRQdHIobmV3IE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIoaWQsIHRpbGVNaXNzaW5n
LCBza2lwc0RyYXcsIGFuaW1hdGluZykpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWlz
c2luZ1RleHR1cmVBbmltYXRpbmdMYXllcihpbnQgaWQsIGJvb2wgdGlsZU1pc3NpbmcsIGJvb2wg
c2tpcHNEcmF3LCBib29sIGFuaW1hdGluZykKKyAgICAgICAgOiBEaWREcmF3Q2hlY2tMYXllcihp
ZCkKKyAgICB7CisgICAgICAgIE93blB0cjxDQ0xheWVyVGlsaW5nRGF0YT4gdGlsaW5nRGF0YSA9
IENDTGF5ZXJUaWxpbmdEYXRhOjpjcmVhdGUoSW50U2l6ZSgxMCwgMTApLCBDQ0xheWVyVGlsaW5n
RGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOworICAgICAgICB0aWxpbmdEYXRhLT5zZXRCb3VuZHMoYm91
bmRzKCkpOworICAgICAgICBzZXRUaWxpbmdEYXRhKCp0aWxpbmdEYXRhLmdldCgpKTsKKyAgICAg
ICAgc2V0U2tpcHNEcmF3KHNraXBzRHJhdyk7CisgICAgICAgIGlmICghdGlsZU1pc3NpbmcpCisg
ICAgICAgICAgICBwdXNoVGlsZVByb3BlcnRpZXMoMCwgMCwgMSwgSW50UmVjdCgpKTsKKyAgICAg
ICAgaWYgKGFuaW1hdGluZykKKyAgICAgICAgICAgIGFkZEFuaW1hdGVkVHJhbnNmb3JtVG9MYXll
cigqdGhpcywgMTAsIDMsIDApOworICAgIH0KK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgYW5pbWF0aW9uQWJvcnRzRnJhbWVXaGVuTWlzc2luZ1RleHR1cmUpCit7CisgICAg
bV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpKTsKKyAg
ICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKKworICAgIC8v
IFdoZW4gdGhlIHRleHR1cmUgaXMgbm90IG1pc3NpbmcsIHdlIGRyYXcgYXMgdXN1YWwuCisgICAg
bV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCkpOwor
ICAgIERpZERyYXdDaGVja0xheWVyKiByb290ID0gc3RhdGljX2Nhc3Q8RGlkRHJhd0NoZWNrTGF5
ZXIqPihtX2hvc3RJbXBsLT5yb290TGF5ZXIoKSk7CisgICAgcm9vdC0+YWRkQ2hpbGQoTWlzc2lu
Z1RleHR1cmVBbmltYXRpbmdMYXllcjo6Y3JlYXRlKDEsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkpOwor
ICAgIERpZERyYXdDaGVja0xheWVyKiBsYXllciA9IHN0YXRpY19jYXN0PE1pc3NpbmdUZXh0dXJl
QW5pbWF0aW5nTGF5ZXIqPihyb290LT5jaGlsZHJlbigpWzBdLmdldCgpKTsKKworICAgIEVYUEVD
VF9GQUxTRShyb290LT5kaWREcmF3Q2FsbGVkKCkpOworICAgIEVYUEVDVF9GQUxTRShsYXllci0+
ZGlkRHJhd0NhbGxlZCgpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQ
RUNUX1RSVUUocm9vdC0+ZGlkRHJhd0NhbGxlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllci0+
ZGlkRHJhd0NhbGxlZCgpKTsKKworICAgIC8vIFdoZW4gYSB0ZXh0dXJlIGlzIG1pc3NpbmcgYW5k
IHdlJ3JlIG5vdCBhbmltYXRpbmcsIHdlIGRyYXcgYXMgdXN1YWwgd2l0aCBjaGVja2VyYm9hcmRp
bmcuCisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVh
dGUoMCkpOworICAgIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9z
dEltcGwtPnJvb3RMYXllcigpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFu
aW1hdGluZ0xheWVyOjpjcmVhdGUoMSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSk7CisgICAgbGF5ZXIg
PSBzdGF0aWNfY2FzdDxNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyKj4ocm9vdC0+Y2hpbGRy
ZW4oKVswXS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+ZGlkRHJhd0NhbGxlZCgp
KTsKKyAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPmRpZERyYXdDYWxsZWQoKSk7CisgICAgbV9ob3N0
SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKHJvb3QtPmRpZERyYXdDYWxsZWQo
KSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXItPmRpZERyYXdDYWxsZWQoKSk7CisKKyAgICAvLyBX
aGVuIGEgdGV4dHVyZSBpcyBtaXNzaW5nIGFuZCB3ZSdyZSBhbmltYXRpbmcsIHdlIGRvbid0IGRy
YXcgYW55dGhpbmcuCisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xh
eWVyOjpjcmVhdGUoMCkpOworICAgIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXll
cio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNzaW5n
VGV4dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMSwgdHJ1ZSwgZmFsc2UsIHRydWUpKTsKKyAg
ICBsYXllciA9IHN0YXRpY19jYXN0PE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIqPihyb290
LT5jaGlsZHJlbigpWzBdLmdldCgpKTsKKworICAgIEVYUEVDVF9GQUxTRShyb290LT5kaWREcmF3
Q2FsbGVkKCkpOworICAgIEVYUEVDVF9GQUxTRShsYXllci0+ZGlkRHJhd0NhbGxlZCgpKTsKKyAg
ICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmRpZERy
YXdDYWxsZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5kaWREcmF3Q2FsbGVkKCkpOwor
CisgICAgLy8gV2hlbiB0aGUgbGF5ZXIgc2tpcHMgZHJhdyBhbmQgd2UncmUgYW5pbWF0aW5nLCB3
ZSBzdGlsbCBkcmF3IHRoZSBmcmFtZS4KKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlk
RHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CisgICAgcm9vdCA9IHN0YXRpY19jYXN0PERpZERy
YXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOworICAgIHJvb3QtPmFkZENo
aWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgxLCBmYWxzZSwgdHJ1ZSwg
dHJ1ZSkpOworICAgIGxheWVyID0gc3RhdGljX2Nhc3Q8TWlzc2luZ1RleHR1cmVBbmltYXRpbmdM
YXllcio+KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOworCisgICAgRVhQRUNUX0ZBTFNFKHJv
b3QtPmRpZERyYXdDYWxsZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5kaWREcmF3Q2Fs
bGVkKCkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShy
b290LT5kaWREcmF3Q2FsbGVkKCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyLT5kaWREcmF3Q2Fs
bGVkKCkpOworfQorCiBjbGFzcyBCbGVuZFN0YXRlVHJhY2tlckNvbnRleHQ6IHB1YmxpYyBGYWtl
V2ViR3JhcGhpY3NDb250ZXh0M0QgewogcHVibGljOgogICAgIEJsZW5kU3RhdGVUcmFja2VyQ29u
dGV4dCgpIDogbV9ibGVuZChmYWxzZSkgeyB9CkBAIC01MTMsNyArNTg5LDcgQEAgY2xhc3MgQmxl
bmRTdGF0ZUNoZWNrTGF5ZXIgOiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaWQpKTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1
YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGJvb2wmKQogICAgIHsKICAgICAgICAgbV9xdWFkc0FwcGVuZGVkID0gdHJ1
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxs
ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVz
dC5jcHAKaW5kZXggMTU4YjBjMDhiNzBmMWMxZjg2OTdkNzEyOTBiYjljZTZlNmQzYjdhNC4uYjFj
MjgzMTI3MWFjODcxODUwYmFmMGIwNmUxMjdkNDI0MDMwNjYwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC04Miw3ICs4Miw4
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBDQ1RpbGVk
TGF5ZXJJbXBsKiBsYXllciwgQ0NPY2NsdXNpCiB7CiAgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxs
ZXIocXVhZExpc3QsIGxheWVyLCAmb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgT3duUHRyPENDU2hh
cmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0
YXRlKCk7Ci0gICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0
ZS5nZXQoKSk7CisgICAgYm9vbCB1bmFibGVUb0RyYXdBbmltYXRpb24gPSBmYWxzZTsKKyAgICBs
YXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1bmFi
bGVUb0RyYXdBbmltYXRpb24pOwogfQogCiAjZGVmaW5lIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVf
VEVTVF9RVUFEUyAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCmluZGV4IDdjNzQz
ZDJhNzY2YWMwMjc1NjcyOTQ2NTdhZDRmNDgxZmI4YWMyMTcuLjA5MGUwNzQwNGJjMzJmN2VkM2E1
ODMwNDg4NGEwMzg0MzNjMTc3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcApAQCAtNTIsNyArNTIs
OCBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeVRpbGluZ0NvbXBsZXRl
QW5kTm9PdmVybGFwKQogICAgIGxheWVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKIAogICAgIE93
blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNo
YXJlZFF1YWRTdGF0ZSgpOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFy
ZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgIGJvb2wgdW5hYmxlVG9EcmF3QW5pbWF0aW9uID0gZmFs
c2U7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5n
ZXQoKSwgdW5hYmxlVG9EcmF3QW5pbWF0aW9uKTsKIAogICAgIHZlcmlmeVF1YWRzRXhhY3RseUNv
dmVyUmVjdChxdWFkQ3VsbGVyLnF1YWRMaXN0KCksIHZpc2libGVMYXllclJlY3QpOwogfQpAQCAt
NzMsNyArNzQsOCBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJl
Y3RCYWNrZ3JvdW5kQ29sb3JJblF1YWQpCiAgICAgbGF5ZXItPnNldEJhY2tncm91bmRDb2xvcih0
ZXN0Q29sb3IpOwogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3Rh
dGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0gICAgbGF5ZXItPmFwcGVuZFF1
YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7CisgICAgYm9vbCB1bmFibGVU
b0RyYXdBbmltYXRpb24gPSBmYWxzZTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxl
ciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1bmFibGVUb0RyYXdBbmltYXRpb24pOwogCiAgICAg
QVNTRVJUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIDFVKTsKICAgICBFWFBFQ1Rf
RVEocXVhZEN1bGxlci5xdWFkTGlzdCgpWzBdLT50b1NvbGlkQ29sb3JEcmF3UXVhZCgpLT5jb2xv
cigpLCB0ZXN0Q29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDVGlsZWRMYXllckltcGxUZXN0LmNwcAppbmRleCBmZThjYThlYjAyMTdhZjUyMzMyNGUyMGNj
NzRlYWYxYzUzZGRhOGZmLi45NmVkOTZjNDE5ZmRiZTNhYmIzNDUzNzYyMWJhZjk0OThkNGExYjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllcklt
cGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXll
ckltcGxUZXN0LmNwcApAQCAtNzIsNyArNzIsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0
LCBlbXB0eVF1YWRMaXN0KQogICAgICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIg
PSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9C
b3JkZXJUZXhlbHMpOwogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7CiAgICAg
ICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNy
ZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1
bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICAgICAgYm9vbCB1bmFibGVUb0RyYXdB
bmltYXRpb24gPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIs
IHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdW5hYmxlVG9EcmF3QW5pbWF0aW9uKTsKICAgICAgICAg
Y29uc3QgdW5zaWduZWQgbnVtVGlsZXMgPSBudW1UaWxlc1ggKiBudW1UaWxlc1k7CiAgICAgICAg
IEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCBudW1UaWxlcyk7CiAgICAg
fQpAQCAtODQsNyArODUsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRM
aXN0KQogCiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKICAgICAgICAgT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hh
cmVkUXVhZFN0YXRlKCk7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVuYWJsZVRvRHJhd0FuaW1hdGlv
biA9IGZhbHNlOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVk
UXVhZFN0YXRlLmdldCgpLCB1bmFibGVUb0RyYXdBbmltYXRpb24pOwogICAgICAgICBFWFBFQ1Rf
RVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgIH0KIApAQCAtOTcsNyAr
OTksOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAg
ICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKICAgICAgICAgT3duUHRyPENDU2hhcmVk
UXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRl
KCk7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3Rh
dGUuZ2V0KCkpOworICAgICAgICBib29sIHVuYWJsZVRvRHJhd0FuaW1hdGlvbiA9IGZhbHNlOwor
ICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdl
dCgpLCB1bmFibGVUb0RyYXdBbmltYXRpb24pOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxl
ci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgIH0KIApAQCAtMTA4LDcgKzExMSw4IEBAIFRF
U1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGVtcHR5UXVhZExpc3QpCiAKICAgICAgICAgTW9ja0ND
UXVhZEN1bGxlciBxdWFkQ3VsbGVyOwogICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICAg
ICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7
CisgICAgICAgIGJvb2wgdW5hYmxlVG9EcmF3QW5pbWF0aW9uID0gZmFsc2U7CisgICAgICAgIGxh
eWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVuYWJs
ZVRvRHJhd0FuaW1hdGlvbik7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0
KCkuc2l6ZSgpLCAwdSk7CiAgICAgfQogfQpAQCAtMTI4LDcgKzEzMiw4IEBAIFRFU1QoQ0NUaWxl
ZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKICAgICAvLyBObyBjaGVja2VyYm9hcmRp
bmcKICAgICB7CiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAg
bGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7Cisg
ICAgICAgIGJvb2wgdW5hYmxlVG9EcmF3QW5pbWF0aW9uID0gZmFsc2U7CisgICAgICAgIGxheWVy
LT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVuYWJsZVRv
RHJhd0FuaW1hdGlvbik7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCku
c2l6ZSgpLCA0dSk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVy
LnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCkBAIC0xNDIsNyArMTQ3LDkgQEAgVEVTVChDQ1RpbGVk
TGF5ZXJJbXBsVGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogICAgIC8vIEFsbCBjaGVja2VyYm9hcmRp
bmcKICAgICB7CiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAg
bGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7Cisg
ICAgICAgIGJvb2wgdW5hYmxlVG9EcmF3QW5pbWF0aW9uID0gZmFsc2U7CisgICAgICAgIGxheWVy
LT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVuYWJsZVRv
RHJhd0FuaW1hdGlvbik7CisgICAgICAgIEVYUEVDVF9GQUxTRSh1bmFibGVUb0RyYXdBbmltYXRp
b24pOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgNHUp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3QoKS5z
aXplKCk7ICsraSkKICAgICAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KClb
aV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlNvbGlkQ29sb3IpOwpAQCAtMTU3LDcgKzE2NCw4
IEBAIHN0YXRpYyBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBnZXRRdWFkcyhDQ1F1YWRM
aXN0JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6CiAKICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRD
dWxsZXIocXVhZHMpOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0
YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgIGxheWVyLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgIGJvb2wgdW5hYmxl
VG9EcmF3QW5pbWF0aW9uID0gZmFsc2U7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxs
ZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdW5hYmxlVG9EcmF3QW5pbWF0aW9uKTsKICAgICBy
ZXR1cm4gc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKTsgLy8gVGhlIHNoYXJlZCBkYXRhIG11c3Qg
YmUgb3duZWQgYXMgbG9uZyBhcyB0aGUgcXVhZCBsaXN0IGV4aXN0cy4KIH0KIApAQCAtMjc1LDcg
KzI4Myw4IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGJhY2tncm91bmRDb3ZlcnNWaWV3
cG9ydCkKICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUg
PSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAKICAgICAgICAgTW9ja0NDUXVhZEN1
bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwg
c2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICAgICAgYm9vbCB1bmFibGVUb0RyYXdBbmltYXRp
b24gPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJl
ZFF1YWRTdGF0ZS5nZXQoKSwgdW5hYmxlVG9EcmF3QW5pbWF0aW9uKTsKICAgICAgICAgRVhQRUNU
X0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIG51bVRpbGVzKTsKIAogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkK
QEAgLTI5MCw3ICsyOTksOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBiYWNrZ3JvdW5k
Q292ZXJzVmlld3BvcnQpCiAKICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFy
ZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAgICAgICAgIE1v
Y2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1
YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7CisgICAgICAgIGJvb2wgdW5hYmxlVG9E
cmF3QW5pbWF0aW9uID0gZmFsc2U7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3Vs
bGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVuYWJsZVRvRHJhd0FuaW1hdGlvbik7CiAKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgp
OyArK2kpCiAgICAgICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5t
YXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yKTsKQEAgLTMwNiw3ICszMTYsOCBAQCBU
RVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQpCiAKICAg
ICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+
Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1
bGxlcjsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRT
dGF0ZS5nZXQoKSk7CisgICAgICAgIGJvb2wgdW5hYmxlVG9EcmF3QW5pbWF0aW9uID0gZmFsc2U7
CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUu
Z2V0KCksIHVuYWJsZVRvRHJhd0FuaW1hdGlvbik7CiAKICAgICAgICAgdW5zaWduZWQgbnVtQ29u
dGVudFRpbGVzID0gMCwgbnVtR3V0dGVyVGlsZXMgPSAwOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaAppbmRleCA3OTFhZjUw
MzNmNzhmNjYxMGFhMjY2NTJiMzRiYjhkZmUwN2Y4ZGI5Li5kOWNkMzEzMjY4MzBiZDEyMjAzMWNm
MGM4ZTE4ZWRjZDkwZWM5NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL01vY2tDQ1F1YWRDdWxsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L01vY2tDQ1F1YWRDdWxsZXIuaApAQCAtNDQsMTEgKzQ0LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
LCBtX2FjdGl2ZVF1YWRMaXN0KGV4dGVybmFsUXVhZExpc3QpCiAgICAgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kKFdURjo6UGFzc093blB0cjxXZWJDb3JlOjpDQ0RyYXdRdWFkPiBuZXdR
dWFkKQorICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoV1RGOjpQYXNzT3duUHRyPFdlYkNvcmU6OkND
RHJhd1F1YWQ+IG5ld1F1YWQpCiAgICAgewogICAgICAgICBPd25QdHI8V2ViQ29yZTo6Q0NEcmF3
UXVhZD4gZHJhd1F1YWQgPSBuZXdRdWFkOwotICAgICAgICBpZiAoIWRyYXdRdWFkLT5xdWFkUmVj
dCgpLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKCFkcmF3UXVhZC0+cXVhZFJlY3QoKS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIG1fYWN0aXZlUXVhZExpc3QuYXBwZW5kKGRyYXdRdWFkLnJlbGVh
c2UoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3QgV2ViQ29yZTo6Q0NRdWFkTGlzdCYgcXVhZExp
c3QoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVF1YWRMaXN0OyB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132825</attachid>
            <date>2012-03-20 07:55:18 -0700</date>
            <delta_ts>2012-03-21 12:54:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81437-20120320105517.patch</filename>
            <type>text/plain</type>
            <size>40017</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI3OTYyOTEwYTUwY2E5
NDM0ODM3ODQ4YmFhMGMzODZiMzFlMzZkNC4uZjE1MTA5MmUzNWRjZTdlNzE5YjZhMTZkM2E0Njcz
Mjk0NGJjYmJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAzLTE4ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRHVy
aW5nIGFjY2VsZXJhdGVkIGNzcyBhbmltYXRpb25zLCBkb24ndCBkcmF3IGZyYW1lcyB3aXRoIG1p
c3NpbmcgdGV4dHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgxNDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2hlbiBjYWxjdWxhdGluZyBhIFJlbmRlclBhc3MsIGFuZCB3ZSBjaGVja2VyYm9hcmQg
YSBxdWFkIG9uIGEKKyAgICAgICAgbGF5ZXIgd2hpY2ggaXMgdHJhbnNmb3JtaW5nIGR1ZSB0byBh
biBhbmltYXRpb24sIGJ1YmJsZSB0aGlzIGluZm8KKyAgICAgICAgYmFjayB1cCB0byBDQ0xheWVy
VHJlZUhvc3RJbXBsIGFuZCBhYm9ydCBkcmF3aW5nIHRoZSBmcmFtZS4KKworICAgICAgICBVbml0
IHRlc3Q6IENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmFuaW1hdGlvbkFib3J0c0ZyYW1lV2hlbk1p
c3NpbmdUZXh0dXJlCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YXBwZW5kUXVh
ZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
Lmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAo
Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVhZEN1bGxlcjo6
YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuaDoKKyAgICAgICAgKENDUXVhZEN1bGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmg6CisgICAgICAgIChDQ1JlbmRlclBhc3Mp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3Jv
bGxiYXJMYXllckltcGwuaDoKKyAgICAgICAgKENDU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9y
TGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1NvbGlkQ29sb3JMYXllckltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaDoK
KyAgICAgICAgKENDVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAgICAoQ0NUaWxlZExheWVy
SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xh
eWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRR
dWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xh
eWVySW1wbC5oOgorICAgICAgICAoQ0NWaWRlb0xheWVySW1wbCk6CisKIDIwMTItMDMtMjAgIElh
biBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBJ
bmZyYXN0cnVjdHVyZSB0byBhbGxvdyBhbmltYXRpbmcgbGF5ZXJzIHRvIGJlIG9ubHkgcGFydGlh
bGx5IHVwZGF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMmYyYzMwNjcxYjZiZGEy
ZDhhYThlN2YwZTAyODAzMjQxOWQxNzZjOS4uNDY2NmEzODNmOTc3ZTgwYjM1NzZlNmRiNDRhZmE3
MjFlZGM2ZDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAor
MjAxMi0wMy0xOCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIER1cmluZyBhY2NlbGVyYXRlZCBjc3MgYW5pbWF0aW9ucywgZG9uJ3QgZHJh
dyBmcmFtZXMgd2l0aCBtaXNzaW5nIHRleHR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQW5pbWF0ZWRUcmFuc2Zv
cm0pOgorICAgICAgICAoV2ViS2l0VGVzdHM6OmFkZE9wYWNpdHlUcmFuc2l0aW9uVG9MYXllcik6
CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6YWRkQW5pbWF0
ZWRUcmFuc2Zvcm1Ub0xheWVyKToKKyAgICAgICAgKiB0ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21t
b24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0VGVzdHMpOgorICAgICAg
ICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKERpZERyYXdD
aGVja0xheWVyKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpEaWREcmF3Q2hlY2tMYXllcjo6RGlk
RHJhd0NoZWNrTGF5ZXIpOgorICAgICAgICAoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcik6
CisgICAgICAgIChXZWJLaXRUZXN0czo6TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVy
OjpNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyKToKKyAgICAgICAgKFdlYktpdFRlc3RzKToK
KyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUX0YpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkJs
ZW5kU3RhdGVDaGVja0xheWVyOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogdGVzdHMvQ0NRdWFk
Q3VsbGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRRdWFkcyk6CisgICAgICAg
ICogdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChDQ0xheWVy
VGVzdENvbW1vbjo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3Qu
Y3BwOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OlRFU1QpOgorICAgICAgICAoQ0NMYXll
clRlc3RDb21tb246OmdldFF1YWRzKToKKyAgICAgICAgKiB0ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0NRdWFkQ3VsbGVyOjphcHBlbmQpOgorCiAyMDEy
LTAzLTIwICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gSW5mcmFzdHJ1Y3R1cmUgdG8gYWxsb3cgYW5pbWF0aW5nIGxheWVycyB0byBiZSBv
bmx5IHBhcnRpYWxseSB1cGRhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggZDdlMmI4
YTBkNGFiYzZjMDU2ZTBlMzhiOGE0NGE0NmE5MTU5NGNkNC4uYmM3N2IyZWExNGNlODgzOGZiMTBj
OWRkYjhlM2FmMTMzMjM2NDgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMTM2LDcg
KzEzNiw3IEBAIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDTGF5ZXJJbXBsOjpjcmVh
dGVTaGFyZWRRdWFkU3RhdGUoKSBjb25zdAogICAgIHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6
Y3JlYXRlKHF1YWRUcmFuc2Zvcm0oKSwgZHJhd1RyYW5zZm9ybSgpLCB2aXNpYmxlTGF5ZXJSZWN0
KCksIGxheWVyQ2xpcFJlY3QsIGRyYXdPcGFjaXR5KCksIG9wYXF1ZSgpKTsKIH0KIAotdm9pZCBD
Q0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkKK3ZvaWQgQ0NMYXllckltcGw6OmFwcGVu
ZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGJvb2wmKQogewogICAgIGFwcGVuZEd1dHRlclF1YWRzKHF1YWRMaXN0
LCBzaGFyZWRRdWFkU3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggNmYwMmVmODI3
NDI1ODZiODQ1NDMxMTVlZWZkMDc3YmZkNjQ0ZGU5MS4uYTI4MzAzN2E0MjJjNDgyZmYyOGExM2Jj
YmNjMmJhNzU0NTFkODdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC04NCw3ICs4NCw3IEBA
IHB1YmxpYzoKIAogICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVNoYXJl
ZFF1YWRTdGF0ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRl
cmVyQ2hyb21pdW0qKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3Vs
bGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5k
UXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1bmFi
bGVUb0RyYXdBbmltYXRpb24pOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCkgeyB9CiAgICAg
dm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAppbmRleCBhZDg5MmYyOGY0NWZjN2I5ZDQyYjA2NDZkOTg0YjhmYzQ2MTU5NjZlLi4zMWUyMWRl
NDAwMzRkZWI0NTQwNWIxMjE4MTUxNmVkYTNlNDhkZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHN0YXRpYyBGbG9hdFJlY3Qg
ZGFtYWdlSW5TdXJmYWNlU3BhY2UoQ0NMYXllckltcGwqIHJlbmRlclN1cmZhY2VMYXllciwgY29u
c3QgRmxvCiAgICAgcmV0dXJuIHN1cmZhY2VEYW1hZ2VSZWN0OwogfQogCi12b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNz
ZXMsIENDTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQorYm9vbCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2Vz
LCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIHsKICAgICBUUkFDRV9FVkVO
VDEoIndlYmtpdCIsICJDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMi
LCAicmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmcg
dW5zaWduZWQ+KHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpKSk7CiAKQEAgLTI4NSw2ICsy
ODUsOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhD
Q1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZQogICAgIC8vIEFkZCBxdWFkcyB0byB0aGUg
UmVuZGVyIHBhc3NlcyBpbiBGcm9udFRvQmFjayBvcmRlciB0byBhbGxvdyBmb3IgdGVzdGluZyBv
Y2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRyZWUgd2Fsay4KICAg
ICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBs
Kj4sIENDUmVuZGVyU3VyZmFjZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+
IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKKyAgICAvLyBJZiB3ZSBhcmUgdW5hYmxlIHRvIGRyYXcg
YW4gYW5pbWF0aW9uIG9uIHNvbWUgbGF5ZXIsIHRoZW4gd2UgYWJvcnQgdGhlIGVudGlyZSBmcmFt
ZS4KKyAgICBib29sIHVuYWJsZVRvRHJhd0FuaW1hdGlvbiA9IGZhbHNlOworCiAgICAgQ0NMYXll
ckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJnJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOwogICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJ
dGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgIENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSA9IGl0LnRhcmdl
dFJlbmRlclN1cmZhY2VMYXllcigpLT5yZW5kZXJTdXJmYWNlKCk7CkBAIC0zMDgsMTEgKzMxMSwx
NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1Jl
bmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZQogICAgICAgICB9CiAKICAgICAgICAgaXQtPndp
bGxEcmF3KG1fbGF5ZXJSZW5kZXJlci5nZXQoKSk7Ci0gICAgICAgIHBhc3MtPmFwcGVuZFF1YWRz
Rm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlcik7CisgICAgICAgIHBhc3MtPmFwcGVuZFF1
YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwgdW5hYmxlVG9EcmF3QW5pbWF0aW9u
KTsKKyAgICAgICAgaWYgKHVuYWJsZVRvRHJhd0FuaW1hdGlvbikKKyAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoKml0
KTsKICAgICB9CiAKLSAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnJlY29y
ZE1ldHJpY3ModGhpcyk7CisgICAgYm9vbCBkcmF3RnJhbWUgPSAhdW5hYmxlVG9EcmF3QW5pbWF0
aW9uOworICAgIGlmIChkcmF3RnJhbWUpCisgICAgICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRy
YXdNZXRyaWNzKCkucmVjb3JkTWV0cmljcyh0aGlzKTsKKyAgICByZXR1cm4gZHJhd0ZyYW1lOwog
fQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnNSZWN1cnNpdmUoQ0NM
YXllckltcGwqIGN1cnJlbnQsIGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2Nr
VGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqIGV2ZW50cywgYm9vbCYgZGlkQW5pbWF0ZSwg
Ym9vbCYgbmVlZHNBbmltYXRlTGF5ZXJzKQpAQCAtMzYyLDcgKzM3MSw4IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycygpCiAKICAgICBDQ1JlbmRlclBhc3NMaXN0IHBhc3Nl
czsKICAgICBDQ0xheWVyTGlzdCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIGNhbGN1bGF0
ZVJlbmRlclBhc3NlcyhwYXNzZXMsIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIGlmICgh
Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKHBhc3NlcywgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkpCisg
ICAgICAgIHJldHVybjsKIAogICAgIG1fbGF5ZXJSZW5kZXJlci0+YmVnaW5EcmF3aW5nRnJhbWUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhc3Nlcy5zaXplKCk7ICsraSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCAzMTQ5NDc0YzRiNThhNWM1ZDBlZTcw
YjYzYTYxMWFlMmU4MmMxMmM2Li4xZDUyMjhlYTliNzlhZjU3M2FjZTRlMmZiYTRhY2IzZjIyMDhl
MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xNjIsNyArMTYy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkanVzdFNjcm9sbHNGb3JQYWdlU2NhbGVDaGFuZ2Uo
ZmxvYXQpOwogICAgIHZvaWQgdXBkYXRlTWF4U2Nyb2xsUG9zaXRpb24oKTsKICAgICB2b2lkIHRy
YWNrRGFtYWdlRm9yQWxsU3VyZmFjZXMoQ0NMYXllckltcGwqIHJvb3REcmF3TGF5ZXIsIGNvbnN0
IENDTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAgICB2b2lkIGNhbGN1bGF0
ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiwgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOworICAgIGJvb2wgY2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFz
c0xpc3QmLCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgdm9pZCBh
bmltYXRlTGF5ZXJzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiwgZG91YmxlIG1vbm90b25pY1RpbWUs
IGRvdWJsZSB3YWxsQ2xvY2tUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciosIGJvb2wmIGRp
ZEFuaW1hdGUsIGJvb2wmIG5lZWRzQW5pbWF0ZUxheWVycyk7CiAgICAgSW50U2l6ZSBjb250ZW50
U2l6ZSgpIGNvbnN0OwogICAgIHZvaWQgc2VuZERpZExvc2VDb250ZXh0UmVjdXJzaXZlKENDTGF5
ZXJJbXBsKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCBmMmE4NTg3MTcwYzNiYTVh
ZTIyZTFiMzg4ZjNmODgyNmQwZWZkM2FjLi4zNWQxOTQ2MTc3OTU5MmZlYjRlZjg0NzFiMzhmZTBk
NWVmOWM4NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
Q0NRdWFkQ3VsbGVyOjpDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDTGF5ZXJJ
bXBsKiBsYXllciwgQ0NPY2NsdXNpb24KIHsKIH0KIAotdm9pZCBDQ1F1YWRDdWxsZXI6OmFwcGVu
ZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCkKK2Jvb2wgQ0NRdWFkQ3VsbGVy
OjphcHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpCiB7CiAgICAgT3du
UHRyPENDRHJhd1F1YWQ+IGRyYXdRdWFkKHBhc3NEcmF3UXVhZCk7CiAgICAgSW50UmVjdCBjdWxs
ZWRSZWN0ID0gbV9vY2NsdXNpb25UcmFja2VyLT51bm9jY2x1ZGVkQ29udGVudFJlY3QobV9sYXll
ciwgZHJhd1F1YWQtPnF1YWRSZWN0KCkpOwpAQCAtNjEsNiArNjEsNyBAQCB2b2lkIENDUXVhZEN1
bGxlcjo6YXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKQogICAgIC8v
IFJlbGVhc2UgdGhlIHF1YWQgYWZ0ZXIgd2UncmUgZG9uZSB1c2luZyBpdC4KICAgICBpZiAoa2Vl
cFF1YWQpCiAgICAgICAgIG1fcXVhZExpc3QuYXBwZW5kKGRyYXdRdWFkLnJlbGVhc2UoKSk7Cisg
ICAgcmV0dXJuIGtlZXBRdWFkOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZEN1bGxlci5oCmluZGV4IDFmNGI5MjA1NjJhZTk1YzU2ZGY3MDY5M2Q4YjljMTcwOGZjOTk3
MjAuLmY0ZjI1ZThjNDU4OTAyN2UzYzczMjhlODc1ZDUxNjM1MzgzNzJiM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZEN1bGxlci5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICAvLyBkb25lIHRvIGVz
dGltYXRlIG92ZXIgZHJhdyBzdGF0aXN0aWNzLgogICAgIENDUXVhZEN1bGxlcihDQ1F1YWRMaXN0
JiwgQ0NMYXllckltcGwqLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKTsKKyAgICB2
aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKTsK
IAogcHJpdmF0ZToKICAgICBDQ1F1YWRMaXN0JiBtX3F1YWRMaXN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5jcHAKaW5kZXggYTEyYmZiYjU5ZjRhN2I5Mzk2M2QyNDM0ZWM2MGNiZTg1MDA1NjM0YS4u
NzRhYzVhMGE5ZjU3MmQ2ZjU2ZGIzNjQwNWM0Nzk1ZmQ3MDRmOWQ0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3MuY3BwCkBAIC00NiwxMiArNDYsMTIgQEAgQ0NSZW5kZXJQYXNzOjpDQ1JlbmRlclBh
c3MoQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNlKQogICAgIEFTU0VSVChtX3RhcmdldFN1
cmZhY2UpOwogfQogCi12b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JMYXllcihDQ0xh
eWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIp
Cit2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JMYXllcihDQ0xheWVySW1wbCogbGF5
ZXIsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIsIGJvb2wmIHVuYWJs
ZVRvRHJhd0FuaW1hdGlvbikKIHsKICAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihtX3F1YWRM
aXN0LCBsYXllciwgb2NjbHVzaW9uVHJhY2tlcik7CiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsK
LSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgp
KTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdl
dCgpLCB1bmFibGVUb0RyYXdBbmltYXRpb24pOwogICAgIGxheWVyLT5hcHBlbmREZWJ1Z0JvcmRl
clF1YWQocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKICAgICBtX3NoYXJlZFF1
YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3MuaAppbmRleCBhYzhkYmMxYTBkMjZhODQ3NjY1N2ZiNjcyYzJmMTVhYWIyNGM4
ZWUxLi45YTM5MjNhN2U4YTY3MWJmM2I1ZGM0MDZlZmQ3ZGY3M2RiNTgyOWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3MuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDQ1JlbmRlclBhc3MgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKENDUmVuZGVy
U3VyZmFjZSopOwogCi0gICAgdm9pZCBhcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiwg
Q0NPY2NsdXNpb25UcmFja2VySW1wbCopOworICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JMYXllcihD
Q0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tlckltcGwqLCBib29sJiB1bmFibGVUb0RyYXdB
bmltYXRpb24pOwogICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NM
YXllckltcGwqKTsKIAogICAgIGNvbnN0IENDUXVhZExpc3QmIHF1YWRMaXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9xdWFkTGlzdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwu
Y3BwCmluZGV4IDQzN2Y0Zjc3NmQ4YjA3ZDViOWFmY2QxYzBjNTAzZGQ4Yzg5MTQyYTUuLjE1MjA2
NWQwOGUxMTFkOWFlMWNkYjVmZDYzMzFlODE5NDAxMGM1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njcm9sbGJhckxheWVySW1wbC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBDQ1Njcm9sbGJh
ckxheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVy
KQogICAgIH0KIH0KIAotdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NR
dWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSkKK3ZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxl
ciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJv
b2wmKQogewogICAgIGlmICghbV90ZXh0dXJlLT5pc1Jlc2VydmVkKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCmluZGV4IGZjZWMxMTBlMjQx
ODMxYmRiMjFmODY3MmJiZDBjNzM3MjExZDNmY2MuLjRjMzczMmU4MDM3ZDFjZGNhZWI4N2U5ZTVk
ZTM0YWYxMDlkMGUzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaApA
QCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllcihDQ0xheWVy
SW1wbCogc2Nyb2xsTGF5ZXIpIHsgbV9zY3JvbGxMYXllciA9IHNjcm9sbExheWVyOyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7Ci0gICAgdmly
dHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKik7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgdW5hYmxlVG9EcmF3QW5pbWF0aW9uKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRHJhdygpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllcklt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
b2xpZENvbG9yTGF5ZXJJbXBsLmNwcAppbmRleCBiZjY3MGVjYzg5ZTFiMGZhMTdmZWU3NjAzODM5
ZWMyN2NiZmQ0OTE3Li42YWUzYTE3Mjk4ZTljNmMzMTgyN2FkNjllYWI0NmI5ZThlZDNlNDYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NvbGlkQ29sb3JMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjpxdWFkVHJh
bnNmb3JtKCkgY29uc3QKICAgICByZXR1cm4gc29saWRDb2xvclRyYW5zZm9ybTsKIH0KIAotdm9p
ZCBDQ1NvbGlkQ29sb3JMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExp
c3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCit2b2lkIENDU29s
aWRDb2xvckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgLy8g
V2UgY3JlYXRlIGEgc2VyaWVzIG9mIHNtYWxsZXIgcXVhZHMgaW5zdGVhZCBvZiBqdXN0IG9uZSBs
YXJnZSBvbmUgc28gdGhhdCB0aGUKICAgICAvLyBjdWxsZXIgY2FuIHJlZHVjZSB0aGUgdG90YWwg
cGl4ZWxzIGRyYXduLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaAppbmRl
eCA3ZDA3NjczOGNmM2EwY2NjYzk4MmI0MjJlYWJkOGRhMDBiMDFiZWJhLi5kY2FhYjhlYTY2OGJh
NThjODg1MmZmYmRlZTc3Mzg5MzllYTdhMTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29s
b3JMYXllckltcGwuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NT
b2xpZENvbG9yTGF5ZXJJbXBsKCk7CiAKICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHF1YWRUcmFuc2Zvcm0oKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NR
dWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29s
JiB1bmFibGVUb0RyYXdBbmltYXRpb24pOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NT
b2xpZENvbG9yTGF5ZXJJbXBsKGludCBpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJ
bXBsLmNwcAppbmRleCBlMDZmNzJmNmYyNDliNjFjNzFhYTNkYWQzMzY0MzFhOGIyZTYyYjNjLi4x
MmNiYWI2MjU3MDY2N2M4OGRjODc3MDk2Njg4MzIzODhjMjRmOTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBDQ1RleHR1cmVM
YXllckltcGw6OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikK
ICAgICB9CiB9CiAKLXZvaWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRD
dWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
KQordm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVh
ZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQog
ewogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKCkpOwogICAgIHF1YWRM
aXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVh
ZFJlY3QsIG1fdGV4dHVyZUlkLCBtX2hhc0FscGhhLCBtX3ByZW11bHRpcGxpZWRBbHBoYSwgbV91
dlJlY3QsIG1fZmxpcHBlZCwgbV9pb1N1cmZhY2VTaXplLCBtX2lvU3VyZmFjZVRleHR1cmVJZCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaAppbmRleCBhODFjMzYxNmFlZGI2NDVh
MjFhNzM1MGI5MWJkOTNkNjA3ZjhiYzcyLi5jMTY3MmM3ZTJiYmRjYjQ0OTAwODRhYmQ1ZWU1MjUx
YWZjZjliZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaApAQCAtNDAsNyAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVGV4dHVyZUxheWVySW1wbCgp
OwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKik7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1
bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgdW5hYmxlVG9EcmF3QW5pbWF0
aW9uKTsKIAogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBG
cmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+IFByb2dyYW1GbGlwOwogICAgIHR5cGVkZWYg
UHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4U3RyZXRjaCwgRnJhZ21lbnRTaGFkZXJS
R0JBVGV4QWxwaGE+IFByb2dyYW1TdHJldGNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmNwcAppbmRleCBhMTg3N2I5ODdhZjY1ZWNmNzE1OGI4NzI4NWU2ZDg4MDlhYTU3ZmU0Li44OWEy
OTkyNmViMDc1ZTBlMTI3ZTg0YmNhMDM2MDRkYjE4ODQyNGIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4
IENDVGlsZWRMYXllckltcGw6OnF1YWRUcmFuc2Zvcm0oKSBjb25zdAogICAgIHJldHVybiB0cmFu
c2Zvcm07CiB9CiAKLXZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3Vs
bGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkK
K3ZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlz
dCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYgdW5hYmxl
VG9EcmF3QW5pbWF0aW9uKQogewogICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHZpc2li
bGVMYXllclJlY3QoKTsKIApAQCAtMTQ5LDcgKzE0OSwxMiBAQCB2b2lkIENDVGlsZWRMYXllcklt
cGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAoIXRpbGUg
fHwgIXRpbGUtPnRleHR1cmVJZCgpKSB7Ci0gICAgICAgICAgICAgICAgcXVhZExpc3QuYXBwZW5k
KENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwg
YmFja2dyb3VuZENvbG9yKCkpKTsKKyAgICAgICAgICAgICAgICBib29sIHVzZWRDaGVja2VyQm9h
cmQgPSBxdWFkTGlzdC5hcHBlbmQoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRR
dWFkU3RhdGUsIHRpbGVSZWN0LCBiYWNrZ3JvdW5kQ29sb3IoKSkpOworICAgICAgICAgICAgICAg
IGJvb2wgbGF5ZXJIYXNBbmltYXRpbmdUcmFuc2Zvcm0gPSBzY3JlZW5TcGFjZVRyYW5zZm9ybUlz
QW5pbWF0aW5nKCkgfHwgZHJhd1RyYW5zZm9ybUlzQW5pbWF0aW5nKCk7CisgICAgICAgICAgICAg
ICAgaWYgKHVzZWRDaGVja2VyQm9hcmQgJiYgbGF5ZXJIYXNBbmltYXRpbmdUcmFuc2Zvcm0pIHsK
KyAgICAgICAgICAgICAgICAgICAgdW5hYmxlVG9EcmF3QW5pbWF0aW9uID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5o
CmluZGV4IDBiZTY1Nzc0MzhjMDAzNjMxNzQ0Yjc3NzM1Y2E2OWFkMjgzODU0YWQuLjc3MDc3NmJl
NGQyMDkxMmM2MGIwOGVkMDJjYTU0MGQ0ODM5ZjFmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5
ZXJJbXBsLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5D
Q1RpbGVkTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFk
Q3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1
bmFibGVUb0RyYXdBbmltYXRpb24pOwogCiAgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1Rl
eHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5jcHAKaW5kZXggYjVhYTNlMTcxNTBmZTA1NGY3M2U1MWVmMDAyYTZmZGFiZjdmYzY0Ny4u
YTU2Y2Y1ODkxM2Q1NGQ2MmVmOGMzNDAxNmU4MDdiYTg2YTg0MTliMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NWaWRlb0xheWVySW1wbC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIENDVmlkZW9MYXll
ckltcGw6OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAg
ICB9CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVy
JiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkKK3Zv
aWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwg
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAg
aWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmgKaW5kZXggNGZiNDVlYmQ5NzBmYjNmOWM5MzllOTBiNjllMDRjZGJkYTBhZGQyZi4uN2FkODIw
ZjdhZmRmMTM3MTJjYzY5NWZjMTFmMjAzMTQ5MDk4NGMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9M
YXllckltcGwuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NWaWRl
b0xheWVySW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJD
aHJvbWl1bSopOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhD
Q1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVuYWJsZVRvRHJh
d0FuaW1hdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKTsKIAogICAgIHR5cGVkZWYg
UHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRl
clJHQkFUZXhGbGlwQWxwaGE+IFJHQkFQcm9ncmFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uY3BwCmluZGV4IGMyMmU0MzIy
YjkxNzg0ZjgyMWFjYzIyZDdkNjE2MzZkZTU2NWE4OWYuLjBhYTdjZTY0ODg4ZjA4ZDE5MjAzZjJi
MWVjNjBmZjcyMjUyYTU3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5j
bHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTAsNiArNTIsMjQgQEAgdm9pZCBhZGRPcGFj
aXR5VHJhbnNpdGlvbihUYXJnZXQmIHRhcmdldCwgZG91YmxlIGR1cmF0aW9uLCBmbG9hdCBzdGFy
dE9wYWNpdHksIGYKICAgICB0YXJnZXQuYWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5p
bWF0aW9uLmdldCgpLCAwLCAwLCAwKTsKIH0KIAordGVtcGxhdGUgPGNsYXNzIFRhcmdldD4KK3Zv
aWQgYWRkQW5pbWF0ZWRUcmFuc2Zvcm0oVGFyZ2V0JiB0YXJnZXQsIGRvdWJsZSBkdXJhdGlvbiwg
aW50IGRlbHRhWCwgaW50IGRlbHRhWSkKK3sKKyAgICBzdGF0aWMgaW50IGlkID0gMDsKKyAgICBX
ZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnM7CisgICAgb3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6
Y3JlYXRlKExlbmd0aChkZWx0YVgsIEZpeGVkKSwgTGVuZ3RoKGRlbHRhWSwgRml4ZWQpLCBUcmFu
c2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7CisgICAgdmFsdWVzLmluc2VydChuZXcgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJm9wZXJhdGlvbnMpKTsKKworICAgIFJlZlB0cjxBbmlt
YXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CisgICAgYW5pbWF0aW9uLT5z
ZXREdXJhdGlvbihkdXJhdGlvbik7CisKKyAgICBJbnRTaXplIGJveFNpemU7CisKKyAgICB0YXJn
ZXQuYWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0aW9uLmdldCgpLCArK2lkLCAw
LCAwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogbmFtZXNwYWNlIFdlYktpdFRlc3RzIHsKQEAg
LTEzMCw0ICsxNTAsMTkgQEAgdm9pZCBhZGRPcGFjaXR5VHJhbnNpdGlvblRvTGF5ZXIoV2ViQ29y
ZTo6TGF5ZXJDaHJvbWl1bSYgbGF5ZXIsIGRvdWJsZSBkdXJhdGlvbiwKICAgICBhZGRPcGFjaXR5
VHJhbnNpdGlvbihsYXllciwgZHVyYXRpb24sIHN0YXJ0T3BhY2l0eSwgZW5kT3BhY2l0eSk7CiB9
CiAKK3ZvaWQgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xheWVyKFdlYkNvcmU6OkNDTGF5ZXJJbXBs
JiBsYXllciwgZG91YmxlIGR1cmF0aW9uLCBmbG9hdCBzdGFydE9wYWNpdHksIGZsb2F0IGVuZE9w
YWNpdHkpCit7CisgICAgYWRkT3BhY2l0eVRyYW5zaXRpb24oKmxheWVyLmxheWVyQW5pbWF0aW9u
Q29udHJvbGxlcigpLCBkdXJhdGlvbiwgc3RhcnRPcGFjaXR5LCBlbmRPcGFjaXR5KTsKK30KKwor
dm9pZCBhZGRBbmltYXRlZFRyYW5zZm9ybVRvTGF5ZXIoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSYg
bGF5ZXIsIGRvdWJsZSBkdXJhdGlvbiwgaW50IGRlbHRhWCwgaW50IGRlbHRhWSkKK3sKKyAgICBh
ZGRBbmltYXRlZFRyYW5zZm9ybShsYXllciwgZHVyYXRpb24sIGRlbHRhWCwgZGVsdGFZKTsKK30K
Kwordm9pZCBhZGRBbmltYXRlZFRyYW5zZm9ybVRvTGF5ZXIoV2ViQ29yZTo6Q0NMYXllckltcGwm
IGxheWVyLCBkb3VibGUgZHVyYXRpb24sIGludCBkZWx0YVgsIGludCBkZWx0YVkpCit7CisgICAg
YWRkQW5pbWF0ZWRUcmFuc2Zvcm0oKmxheWVyLmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLCBk
dXJhdGlvbiwgZGVsdGFYLCBkZWx0YVkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXRUZXN0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRl
c3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0
Q29tbW9uLmgKaW5kZXggMTQ2NDE0ZTMwMWJhNDg3MTZmYTQ3MDg0ZTNlMTQyYTE4YmU0ZTYzZC4u
ZDkzMDM0MjAzNDBkNzg2ZDM1MDM2MjliZjE0YTNjYjNjN2ZjODdjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5oCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIExheWVyQ2hyb21pdW07CiB9CiAKQEAgLTk4
LDYgKzk5LDEwIEBAIHByaXZhdGU6CiB2b2lkIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9Db250cm9s
bGVyKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyJiwgZG91YmxlIGR1cmF0aW9u
LCBmbG9hdCBzdGFydE9wYWNpdHksIGZsb2F0IGVuZE9wYWNpdHkpOwogCiB2b2lkIGFkZE9wYWNp
dHlUcmFuc2l0aW9uVG9MYXllcihXZWJDb3JlOjpMYXllckNocm9taXVtJiwgZG91YmxlIGR1cmF0
aW9uLCBmbG9hdCBzdGFydE9wYWNpdHksIGZsb2F0IGVuZE9wYWNpdHkpOwordm9pZCBhZGRPcGFj
aXR5VHJhbnNpdGlvblRvTGF5ZXIoV2ViQ29yZTo6Q0NMYXllckltcGwmLCBkb3VibGUgZHVyYXRp
b24sIGZsb2F0IHN0YXJ0T3BhY2l0eSwgZmxvYXQgZW5kT3BhY2l0eSk7CisKK3ZvaWQgYWRkQW5p
bWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKFdlYkNvcmU6OkxheWVyQ2hyb21pdW0mLCBkb3VibGUgZHVy
YXRpb24sIGludCBkZWx0YVgsIGludCBkZWx0YVkpOwordm9pZCBhZGRBbmltYXRlZFRyYW5zZm9y
bVRvTGF5ZXIoV2ViQ29yZTo6Q0NMYXllckltcGwmLCBkb3VibGUgZHVyYXRpb24sIGludCBkZWx0
YVgsIGludCBkZWx0YVkpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXRUZXN0cwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwCmluZGV4IGExOTJiYTU1N2JmMGVhMTZjMjFlNGMwNDI0MmNiMjVkMDkwYTE3NjMuLjA3
NjNiYzdkNjIzZDU0N2MzZjhiMjA1ZDg5OTk5MGUxNjJiOTNjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgi
CiAKKyNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTM2LDYgKzM3LDcgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwogCiBuYW1lc3BhY2UgewogCkBAIC0zOTAsNyArMzky
LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYWdlU2NhbGVBbmltYXRpb24p
CiAgICAgfQogfQogCi1jbGFzcyBEaWREcmF3Q2hlY2tMYXllciA6IHB1YmxpYyBDQ0xheWVySW1w
bCB7CitjbGFzcyBEaWREcmF3Q2hlY2tMYXllciA6IHB1YmxpYyBDQ1RpbGVkTGF5ZXJJbXBsIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxEaWREcmF3Q2hlY2tMYXllcj4gY3JlYXRl
KGludCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IERpZERyYXdDaGVja0xheWVyKGlkKSk7IH0K
IApAQCAtNDA3LDkgKzQwOSw5IEBAIHB1YmxpYzoKICAgICBib29sIGRpZERyYXdDYWxsZWQoKSBj
b25zdCB7IHJldHVybiBtX2RpZERyYXdDYWxsZWQ7IH0KICAgICBib29sIHdpbGxEcmF3Q2FsbGVk
KCkgY29uc3QgeyByZXR1cm4gbV93aWxsRHJhd0NhbGxlZDsgfQogCi1wcml2YXRlOgorcHJvdGVj
dGVkOgogICAgIGV4cGxpY2l0IERpZERyYXdDaGVja0xheWVyKGludCBpZCkKLSAgICAgICAgOiBD
Q0xheWVySW1wbChpZCkKKyAgICAgICAgOiBDQ1RpbGVkTGF5ZXJJbXBsKGlkKQogICAgICAgICAs
IG1fZGlkRHJhd0NhbGxlZChmYWxzZSkKICAgICAgICAgLCBtX3dpbGxEcmF3Q2FsbGVkKGZhbHNl
KQogICAgIHsKQEAgLTQxOCw2ICs0MjAsNyBAQCBwcml2YXRlOgogICAgICAgICBzZXREcmF3c0Nv
bnRlbnQodHJ1ZSk7CiAgICAgfQogCitwcml2YXRlOgogICAgIGJvb2wgbV9kaWREcmF3Q2FsbGVk
OwogICAgIGJvb2wgbV93aWxsRHJhd0NhbGxlZDsKIH07CkBAIC00ODcsNiArNDkwLDc5IEBAIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZGlkRHJhd0NhbGxlZE9uQWxsTGF5ZXJzKQog
ICAgIEVYUEVDVF9UUlVFKCEhbGF5ZXIxLT5yZW5kZXJTdXJmYWNlKCkpOwogfQogCitjbGFzcyBN
aXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyIDogcHVibGljIERpZERyYXdDaGVja0xheWVyIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xh
eWVyPiBjcmVhdGUoaW50IGlkLCBib29sIHRpbGVNaXNzaW5nLCBib29sIHNraXBzRHJhdywgYm9v
bCBhbmltYXRpbmcpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBNaXNzaW5nVGV4dHVyZUFuaW1hdGlu
Z0xheWVyKGlkLCB0aWxlTWlzc2luZywgc2tpcHNEcmF3LCBhbmltYXRpbmcpKTsgfQorCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIoaW50IGlkLCBi
b29sIHRpbGVNaXNzaW5nLCBib29sIHNraXBzRHJhdywgYm9vbCBhbmltYXRpbmcpCisgICAgICAg
IDogRGlkRHJhd0NoZWNrTGF5ZXIoaWQpCisgICAgeworICAgICAgICBPd25QdHI8Q0NMYXllclRp
bGluZ0RhdGE+IHRpbGluZ0RhdGEgPSBDQ0xheWVyVGlsaW5nRGF0YTo6Y3JlYXRlKEludFNpemUo
MTAsIDEwKSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICAgICAgdGls
aW5nRGF0YS0+c2V0Qm91bmRzKGJvdW5kcygpKTsKKyAgICAgICAgc2V0VGlsaW5nRGF0YSgqdGls
aW5nRGF0YS5nZXQoKSk7CisgICAgICAgIHNldFNraXBzRHJhdyhza2lwc0RyYXcpOworICAgICAg
ICBpZiAoIXRpbGVNaXNzaW5nKQorICAgICAgICAgICAgcHVzaFRpbGVQcm9wZXJ0aWVzKDAsIDAs
IDEsIEludFJlY3QoKSk7CisgICAgICAgIGlmIChhbmltYXRpbmcpCisgICAgICAgICAgICBhZGRB
bmltYXRlZFRyYW5zZm9ybVRvTGF5ZXIoKnRoaXMsIDEwLCAzLCAwKTsKKyAgICB9Cit9OworCitU
RVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGFuaW1hdGlvbkFib3J0c0ZyYW1lV2hlbk1p
c3NpbmdUZXh0dXJlKQoreworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVy
KGNyZWF0ZUNvbnRleHQoKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNp
emUoMTAsIDEwKSk7CisKKyAgICAvLyBXaGVuIHRoZSB0ZXh0dXJlIGlzIG5vdCBtaXNzaW5nLCB3
ZSBkcmF3IGFzIHVzdWFsLgorICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hl
Y2tMYXllcjo6Y3JlYXRlKDApKTsKKyAgICBEaWREcmF3Q2hlY2tMYXllciogcm9vdCA9IHN0YXRp
Y19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOworICAg
IHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgxLCBm
YWxzZSwgZmFsc2UsIHRydWUpKTsKKyAgICBEaWREcmF3Q2hlY2tMYXllciogbGF5ZXIgPSBzdGF0
aWNfY2FzdDxNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyKj4ocm9vdC0+Y2hpbGRyZW4oKVsw
XS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+ZGlkRHJhd0NhbGxlZCgpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UobGF5ZXItPmRpZERyYXdDYWxsZWQoKSk7CisgICAgbV9ob3N0SW1wbC0+
ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKHJvb3QtPmRpZERyYXdDYWxsZWQoKSk7Cisg
ICAgRVhQRUNUX1RSVUUobGF5ZXItPmRpZERyYXdDYWxsZWQoKSk7CisKKyAgICAvLyBXaGVuIGEg
dGV4dHVyZSBpcyBtaXNzaW5nIGFuZCB3ZSdyZSBub3QgYW5pbWF0aW5nLCB3ZSBkcmF3IGFzIHVz
dWFsIHdpdGggY2hlY2tlcmJvYXJkaW5nLgorICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihE
aWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDApKTsKKyAgICByb290ID0gc3RhdGljX2Nhc3Q8RGlk
RHJhd0NoZWNrTGF5ZXIqPihtX2hvc3RJbXBsLT5yb290TGF5ZXIoKSk7CisgICAgcm9vdC0+YWRk
Q2hpbGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6Y3JlYXRlKDEsIHRydWUsIGZhbHNl
LCBmYWxzZSkpOworICAgIGxheWVyID0gc3RhdGljX2Nhc3Q8TWlzc2luZ1RleHR1cmVBbmltYXRp
bmdMYXllcio+KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOworCisgICAgRVhQRUNUX0ZBTFNF
KHJvb3QtPmRpZERyYXdDYWxsZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5kaWREcmF3
Q2FsbGVkKCkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJV
RShyb290LT5kaWREcmF3Q2FsbGVkKCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyLT5kaWREcmF3
Q2FsbGVkKCkpOworCisgICAgLy8gV2hlbiBhIHRleHR1cmUgaXMgbWlzc2luZyBhbmQgd2UncmUg
YW5pbWF0aW5nLCB3ZSBkb24ndCBkcmF3IGFueXRoaW5nLgorICAgIG1faG9zdEltcGwtPnNldFJv
b3RMYXllcihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDApKTsKKyAgICByb290ID0gc3RhdGlj
X2Nhc3Q8RGlkRHJhd0NoZWNrTGF5ZXIqPihtX2hvc3RJbXBsLT5yb290TGF5ZXIoKSk7CisgICAg
cm9vdC0+YWRkQ2hpbGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6Y3JlYXRlKDEsIHRy
dWUsIGZhbHNlLCB0cnVlKSk7CisgICAgbGF5ZXIgPSBzdGF0aWNfY2FzdDxNaXNzaW5nVGV4dHVy
ZUFuaW1hdGluZ0xheWVyKj4ocm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKSk7CisKKyAgICBFWFBF
Q1RfRkFMU0Uocm9vdC0+ZGlkRHJhd0NhbGxlZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UobGF5ZXIt
PmRpZERyYXdDYWxsZWQoKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVY
UEVDVF9GQUxTRShyb290LT5kaWREcmF3Q2FsbGVkKCkpOworICAgIEVYUEVDVF9GQUxTRShsYXll
ci0+ZGlkRHJhd0NhbGxlZCgpKTsKKworICAgIC8vIFdoZW4gdGhlIGxheWVyIHNraXBzIGRyYXcg
YW5kIHdlJ3JlIGFuaW1hdGluZywgd2Ugc3RpbGwgZHJhdyB0aGUgZnJhbWUuCisgICAgbV9ob3N0
SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCkpOworICAgIHJv
b3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXll
cigpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpj
cmVhdGUoMSwgZmFsc2UsIHRydWUsIHRydWUpKTsKKyAgICBsYXllciA9IHN0YXRpY19jYXN0PE1p
c3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIqPihyb290LT5jaGlsZHJlbigpWzBdLmdldCgpKTsK
KworICAgIEVYUEVDVF9GQUxTRShyb290LT5kaWREcmF3Q2FsbGVkKCkpOworICAgIEVYUEVDVF9G
QUxTRShsYXllci0+ZGlkRHJhd0NhbGxlZCgpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KCk7CisgICAgRVhQRUNUX1RSVUUocm9vdC0+ZGlkRHJhd0NhbGxlZCgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShsYXllci0+ZGlkRHJhd0NhbGxlZCgpKTsKK30KKwogY2xhc3MgQmxlbmRTdGF0ZVRyYWNr
ZXJDb250ZXh0OiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKIHB1YmxpYzoKICAg
ICBCbGVuZFN0YXRlVHJhY2tlckNvbnRleHQoKSA6IG1fYmxlbmQoZmFsc2UpIHsgfQpAQCAtNTEz
LDcgKzU4OSw3IEBAIGNsYXNzIEJsZW5kU3RhdGVDaGVja0xheWVyIDogcHVibGljIENDTGF5ZXJJ
bXBsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXll
cj4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IEJsZW5kU3RhdGVDaGVja0xh
eWVyKGlkKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXIm
IHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQorICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKICAgICB7CiAgICAgICAg
IG1fcXVhZHNBcHBlbmRlZCA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCmluZGV4IDExYTA4OWE1MmNkZWM5YmVkNGVmYjNk
YzIxMjRhM2YzZTQzYjc1OWYuLjZmYTM2MWRhMjFhMzQ4M2VlNTI3ZWNkYTYwOGQzNzI1ZjljYmVl
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVy
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJU
ZXN0LmNwcApAQCAtODIsNyArODIsOCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRM
aXN0JiBxdWFkTGlzdCwgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPgogewogICAg
IENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKHF1YWRMaXN0LCBsYXllciwgJm9jY2x1c2lvblRyYWNr
ZXIpOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5
ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFk
Q3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgIGJvb2wgdW5hYmxlVG9EcmF3QW5p
bWF0aW9uID0gZmFsc2U7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJl
ZFF1YWRTdGF0ZS5nZXQoKSwgdW5hYmxlVG9EcmF3QW5pbWF0aW9uKTsKICAgICBzaGFyZWRTdGF0
ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxU
ZXN0LmNwcAppbmRleCA3Yzc0M2QyYTc2NmFjMDI3NTY3Mjk0NjU3YWQ0ZjQ4MWZiOGFjMjE3Li4w
OTBlMDc0MDRiYzMyZjdlZDNhNTgzMDQ4ODRhMDM4NDMzYzE3N2M3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVz
dC5jcHAKQEAgLTUyLDcgKzUyLDggQEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LCB2
ZXJpZnlUaWxpbmdDb21wbGV0ZUFuZE5vT3ZlcmxhcCkKICAgICBsYXllci0+c2V0Qm91bmRzKGxh
eWVyU2l6ZSk7CiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0
ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICBsYXllci0+YXBwZW5kUXVh
ZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICBib29sIHVuYWJsZVRv
RHJhd0FuaW1hdGlvbiA9IGZhbHNlOworICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVuYWJsZVRvRHJhd0FuaW1hdGlvbik7CiAKICAgICB2
ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZEN1bGxlci5xdWFkTGlzdCgpLCB2aXNpYmxl
TGF5ZXJSZWN0KTsKIH0KQEAgLTczLDcgKzc0LDggQEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllcklt
cGxUZXN0LCB2ZXJpZnlDb3JyZWN0QmFja2dyb3VuZENvbG9ySW5RdWFkKQogICAgIGxheWVyLT5z
ZXRCYWNrZ3JvdW5kQ29sb3IodGVzdENvbG9yKTsKIAogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwot
ICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkp
OworICAgIGJvb2wgdW5hYmxlVG9EcmF3QW5pbWF0aW9uID0gZmFsc2U7CisgICAgbGF5ZXItPmFw
cGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdW5hYmxlVG9EcmF3
QW5pbWF0aW9uKTsKIAogICAgIEFTU0VSVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgp
LCAxVSk7CiAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKVswXS0+dG9Tb2xpZENv
bG9yRHJhd1F1YWQoKS0+Y29sb3IoKSwgdGVzdENvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggZmU4Y2E4
ZWIwMjE3YWY1MjMzMjRlMjBjYzc0ZWFmMWM1M2RkYThmZi4uOTZlZDk2YzQxOWZkYmUzYWJiMzQ1
Mzc2MjFiYWY5NDk4ZDRhMWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTcyLDcgKzcyLDggQEAgVEVTVChD
Q1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKICAgICAgICAgT3duUHRyPENDVGls
ZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NM
YXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKICAgICAgICAgTW9ja0NDUXVhZEN1bGxl
ciBxdWFkQ3VsbGVyOwogICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1
YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICAgICAgbGF5ZXIt
PmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7CisgICAgICAg
IGJvb2wgdW5hYmxlVG9EcmF3QW5pbWF0aW9uID0gZmFsc2U7CisgICAgICAgIGxheWVyLT5hcHBl
bmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVuYWJsZVRvRHJhd0Fu
aW1hdGlvbik7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIG51bVRpbGVzID0gbnVtVGlsZXNYICog
bnVtVGlsZXNZOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUo
KSwgbnVtVGlsZXMpOwogICAgIH0KQEAgLTg0LDcgKzg1LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJ
bXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKIAogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRD
dWxsZXI7CiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRl
ID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgICAgICBsYXllci0+YXBwZW5k
UXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICAgICAgYm9vbCB1
bmFibGVUb0RyYXdBbmltYXRpb24gPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRz
KHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdW5hYmxlVG9EcmF3QW5pbWF0aW9u
KTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIDB1KTsK
ICAgICB9CiAKQEAgLTk3LDcgKzk5LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1w
dHlRdWFkTGlzdCkKIAogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7CiAgICAg
ICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNy
ZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1
bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICAgICAgYm9vbCB1bmFibGVUb0RyYXdB
bmltYXRpb24gPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIs
IHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdW5hYmxlVG9EcmF3QW5pbWF0aW9uKTsKICAgICAgICAg
RVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIDB1KTsKICAgICB9CiAKQEAg
LTEwOCw3ICsxMTEsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0
KQogCiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKICAgICAgICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVk
UXVhZFN0YXRlKCk7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFy
ZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVuYWJsZVRvRHJhd0FuaW1hdGlvbiA9
IGZhbHNlOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVh
ZFN0YXRlLmdldCgpLCB1bmFibGVUb0RyYXdBbmltYXRpb24pOwogICAgICAgICBFWFBFQ1RfRVEo
cXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgIH0KIH0KQEAgLTEyOCw3ICsx
MzIsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBjaGVja2VyYm9hcmRpbmcpCiAgICAg
Ly8gTm8gY2hlY2tlcmJvYXJkaW5nCiAgICAgewogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1
YWRDdWxsZXI7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRR
dWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVuYWJsZVRvRHJhd0FuaW1hdGlvbiA9IGZh
bHNlOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0
YXRlLmdldCgpLCB1bmFibGVUb0RyYXdBbmltYXRpb24pOwogICAgICAgICBFWFBFQ1RfRVEocXVh
ZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgNHUpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKTsgKytpKQpAQCAtMTQyLDcgKzE0
Nyw5IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKICAgICAv
LyBBbGwgY2hlY2tlcmJvYXJkaW5nCiAgICAgewogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1
YWRDdWxsZXI7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRR
dWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVuYWJsZVRvRHJhd0FuaW1hdGlvbiA9IGZh
bHNlOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0
YXRlLmdldCgpLCB1bmFibGVUb0RyYXdBbmltYXRpb24pOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
dW5hYmxlVG9EcmF3QW5pbWF0aW9uKTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVh
ZExpc3QoKS5zaXplKCksIDR1KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFk
Q3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBFWFBFQ1RfRVEocXVh
ZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpTb2xpZENvbG9y
KTsKQEAgLTE1Nyw3ICsxNjQsOCBAQCBzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0
ZT4gZ2V0UXVhZHMoQ0NRdWFkTGlzdCYgcXVhZHMsIEludFNpemUgdGlsZVNpegogCiAgICAgTW9j
a0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKHF1YWRzKTsKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsK
LSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgp
KTsKKyAgICBib29sIHVuYWJsZVRvRHJhd0FuaW1hdGlvbiA9IGZhbHNlOworICAgIGxheWVyLT5h
cHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVuYWJsZVRvRHJh
d0FuaW1hdGlvbik7CiAgICAgcmV0dXJuIHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCk7IC8vIFRo
ZSBzaGFyZWQgZGF0YSBtdXN0IGJlIG93bmVkIGFzIGxvbmcgYXMgdGhlIHF1YWQgbGlzdCBleGlz
dHMuCiB9CiAKQEAgLTI3NSw3ICsyODMsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBi
YWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQpCiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0
ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogCiAg
ICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgbGF5ZXItPmFwcGVu
ZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7CisgICAgICAgIGJvb2wg
dW5hYmxlVG9EcmF3QW5pbWF0aW9uID0gZmFsc2U7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFk
cyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVuYWJsZVRvRHJhd0FuaW1hdGlv
bik7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCBudW1U
aWxlcyk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRM
aXN0KCkuc2l6ZSgpOyArK2kpCkBAIC0yOTAsNyArMjk5LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJ
bXBsVGVzdCwgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQogCiAgICAgICAgIE93blB0cjxDQ1No
YXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRT
dGF0ZSgpOwogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAgIGxh
eWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAg
ICAgICBib29sIHVuYWJsZVRvRHJhd0FuaW1hdGlvbiA9IGZhbHNlOworICAgICAgICBsYXllci0+
YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1bmFibGVUb0Ry
YXdBbmltYXRpb24pOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZEN1bGxl
ci5xdWFkTGlzdCgpLnNpemUoKTsgKytpKQogICAgICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxs
ZXIucXVhZExpc3QoKVtpXS0+bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6U29saWRDb2xvcik7CkBA
IC0zMDYsNyArMzE2LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgYmFja2dyb3VuZENv
dmVyc1ZpZXdwb3J0KQogCiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVk
UXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogICAgICAgICBNb2Nr
Q0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFk
Q3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVuYWJsZVRvRHJh
d0FuaW1hdGlvbiA9IGZhbHNlOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxl
ciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1bmFibGVUb0RyYXdBbmltYXRpb24pOwogCiAgICAg
ICAgIHVuc2lnbmVkIG51bUNvbnRlbnRUaWxlcyA9IDAsIG51bUd1dHRlclRpbGVzID0gMDsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgp
OyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0ND
UXVhZEN1bGxlci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrQ0NRdWFkQ3Vs
bGVyLmgKaW5kZXggNzkxYWY1MDMzZjc4ZjY2MTBhYTI2NjUyYjM0YmI4ZGZlMDdmOGRiOS4uZDlj
ZDMxMzI2ODMwYmQxMjIwMzFjZjBjOGUxOGVkY2Q5MGVjOTVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmgKQEAgLTQ0LDExICs0NCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgICwgbV9hY3RpdmVRdWFkTGlzdChleHRlcm5hbFF1YWRMaXN0KQog
ICAgIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChXVEY6OlBhc3NPd25QdHI8V2ViQ29y
ZTo6Q0NEcmF3UXVhZD4gbmV3UXVhZCkKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFdURjo6UGFz
c093blB0cjxXZWJDb3JlOjpDQ0RyYXdRdWFkPiBuZXdRdWFkKQogICAgIHsKICAgICAgICAgT3du
UHRyPFdlYkNvcmU6OkNDRHJhd1F1YWQ+IGRyYXdRdWFkID0gbmV3UXVhZDsKLSAgICAgICAgaWYg
KCFkcmF3UXVhZC0+cXVhZFJlY3QoKS5pc0VtcHR5KCkpCisgICAgICAgIGlmICghZHJhd1F1YWQt
PnF1YWRSZWN0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX2FjdGl2ZVF1YWRMaXN0LmFw
cGVuZChkcmF3UXVhZC5yZWxlYXNlKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGNvbnN0IFdlYkNvcmU6
OkNDUXVhZExpc3QmIHF1YWRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVRdWFkTGlzdDsg
fTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133100</attachid>
            <date>2012-03-21 12:54:08 -0700</date>
            <delta_ts>2012-03-21 13:02:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81437-20120321155407.patch</filename>
            <type>text/plain</type>
            <size>59986</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI3OTYyOTEwYTUwY2E5
NDM0ODM3ODQ4YmFhMGMzODZiMzFlMzZkNC4uZDc4MTZkNWMyNzYxZjU2ZjcyNmU2MWRhZjZjNDEz
N2E3ZjY3MmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAzLTIxICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRWFy
bHkgb3V0IGluIGEgbmV3IHByZXBhcmVUb0RyYXcoKSBzdGVwIGlmIGNoZWNrZXJib2FyZGluZyBh
biBhY2NlbGVyYXRlZCBhbmltYXRpb24gaW4gb3JkZXIgdG8gc2tpcCB0aGUgZnJhbWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BsaXQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6ZHJhd0xheWVycygpIGludG8gdHdvIHBoYXNlczoKKyAgICAgICAgcHJlcGFy
ZVRvRHJhdygpIGFuZCBkcmF3TGF5ZXJzKCkuCisKKyAgICAgICAgV2hlbiBjYWxjdWxhdGluZyBh
IFJlbmRlclBhc3MsIGFuZCB3ZSBjaGVja2VyYm9hcmQgYSBxdWFkIG9uIGEKKyAgICAgICAgbGF5
ZXIsIGJ1YmJsZSB0aGlzIGluZm8gYmFjayB1cCB0byBDQ0xheWVyVHJlZUhvc3RJbXBsLiBJZiB0
aGUKKyAgICAgICAgbGF5ZXIgaXMgdHJhbnNmb3JtaW5nIGluIGFuIGFuaW1hdGlvbiwgdGhlbiBh
Ym9ydCB0aGUgcHJlcGFyZVRvRHJhdygpCisgICAgICAgIHBoYXNlIGFuZCBjYXVzZSBpdCB0byBy
ZXR1cm4gZmFsc2UgYmFjayB0byB0aGUgdGhyZWFkIHByb3h5LgorCisgICAgICAgIFVuaXQgdGVz
dDogQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QucHJlcGFyZVRvRHJhd0ZhaWxzV2hlbkFuaW1hdGlv
blVzZXNDaGVja2VyYm9hcmQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3Nlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xh
eWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChG
cmFtZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVh
ZEN1bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmg6Cisg
ICAgICAgIChDQ1F1YWRDdWxsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6
OmFwcGVuZFF1YWRzRm9yTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChDQ1Njcm9sbGJhckxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDU29saWRDb2xvckxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVy
SW1wbC5oOgorICAgICAgICAoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUZXh0dXJlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmg6CisgICAg
ICAgIChDQ1RleHR1cmVMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXApOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKyAgICAgICAgKENDVGlsZWRM
YXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6YXBw
ZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuaDoKKyAgICAgICAgKENDVmlkZW9MYXllckltcGwpOgorCiAyMDEyLTAzLTIw
ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gSW5mcmFzdHJ1Y3R1cmUgdG8gYWxsb3cgYW5pbWF0aW5nIGxheWVycyB0byBiZSBvbmx5IHBh
cnRpYWxseSB1cGRhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDJmMmMzMDY3MWI2
YmRhMmQ4YWE4ZTdmMGUwMjgwMzI0MTlkMTc2YzkuLjYyOGQ4ZmZhYWNlZDg1YjVlN2UxMjQwMDgz
Y2U2Y2FmZjA1M2ViNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTItMDMtMjEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBFYXJseSBvdXQgaW4gYSBuZXcgcHJlcGFyZVRvRHJhdygpIHN0ZXAg
aWYgY2hlY2tlcmJvYXJkaW5nIGFuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbiBpbiBvcmRlciB0byBz
a2lwIHRoZSBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODE0MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHRlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEFuaW1hdGVkVHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YktpdFRlc3RzOjphZGRPcGFjaXR5VHJhbnNpdGlvblRvTGF5ZXIpOgorICAgICAgICAoV2ViS2l0
VGVzdHMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OmFkZEFuaW1hdGVkVHJhbnNmb3JtVG9MYXll
cik6CisgICAgICAgICogdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToKKyAg
ICAgICAgKERpZERyYXdDaGVja0xheWVyKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpEaWREcmF3
Q2hlY2tMYXllcjo6RGlkRHJhd0NoZWNrTGF5ZXIpOgorICAgICAgICAoTWlzc2luZ1RleHR1cmVB
bmltYXRpbmdMYXllcik6CisgICAgICAgIChXZWJLaXRUZXN0czo6TWlzc2luZ1RleHR1cmVBbmlt
YXRpbmdMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNaXNzaW5nVGV4dHVy
ZUFuaW1hdGluZ0xheWVyOjpNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyKToKKyAgICAgICAg
KFdlYktpdFRlc3RzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpCbGVuZFN0YXRlQ2hlY2tMYXll
cjo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
OgorICAgICAgICAoV1RGOjpUZXN0SG9va3M6OnByZXBhcmVUb0RyYXdPbkNDVGhyZWFkKToKKyAg
ICAgICAgKFdURjo6TW9ja0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KToKKyAgICAg
ICAgKE1vY2tMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVI
b3N0SW1wbDo6ZHJhd0xheWVycyk6CisgICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogdGVzdHMvQ0NT
b2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6
VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwOgorICAgICAg
ICAoQ0NMYXllclRlc3RDb21tb246OlRFU1QpOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246
OmdldFF1YWRzKToKKyAgICAgICAgKiB0ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ0NRdWFkQ3VsbGVyOjphcHBlbmQpOgorCiAyMDEyLTAzLTIwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gSW5m
cmFzdHJ1Y3R1cmUgdG8gYWxsb3cgYW5pbWF0aW5nIGxheWVycyB0byBiZSBvbmx5IHBhcnRpYWxs
eSB1cGRhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggZDdlMmI4YTBkNGFiYzZjMDU2
ZTBlMzhiOGE0NGE0NmE5MTU5NGNkNC4uYmM3N2IyZWExNGNlODgzOGZiMTBjOWRkYjhlM2FmMTMz
MjM2NDgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIFBh
c3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDTGF5ZXJJbXBsOjpjcmVhdGVTaGFyZWRRdWFk
U3RhdGUoKSBjb25zdAogICAgIHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHF1YWRU
cmFuc2Zvcm0oKSwgZHJhd1RyYW5zZm9ybSgpLCB2aXNpYmxlTGF5ZXJSZWN0KCksIGxheWVyQ2xp
cFJlY3QsIGRyYXdPcGFjaXR5KCksIG9wYXF1ZSgpKTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSkKK3ZvaWQgQ0NMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVh
ZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGJvb2wmKQogewogICAgIGFwcGVuZEd1dHRlclF1YWRzKHF1YWRMaXN0LCBzaGFyZWRRdWFk
U3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggNmYwMmVmODI3NDI1ODZiODQ1NDMx
MTVlZWZkMDc3YmZkNjQ0ZGU5MS4uZmFlYmJjODg3NDQ3MzdjYmM2MDBiOWMzNGEyMTllM2U0ZGYz
ZWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKIAog
ICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0q
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFk
Q3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJk
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdygpIHsgfQogICAgIHZvaWQgYXBwZW5kRGVidWdC
b3JkZXJRdWFkKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKikgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggYWQ4OTJmMjhm
NDVmYzdiOWQ0MmIwNjQ2ZDk4NGI4ZmM0NjE1OTY2ZS4uN2JhM2QzZDJiODE2NmMxZTRmYWUyMjI2
NjUzZWNmNjMwMDhmZDg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKQEAgLTIzNSw5ICsyMzUsMTAgQEAgc3RhdGljIEZsb2F0UmVjdCBkYW1hZ2VJblN1cmZhY2VT
cGFjZShDQ0xheWVySW1wbCogcmVuZGVyU3VyZmFjZUxheWVyLCBjb25zdCBGbG8KICAgICByZXR1
cm4gc3VyZmFjZURhbWFnZVJlY3Q7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2Fs
Y3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllckxpc3Qm
IHJlbmRlclN1cmZhY2VMYXllckxpc3QpCitib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1
bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZXJMaXN0JiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQogewotICAgIFRSQUNFX0VWRU5UMSgid2Via2l0IiwgIkND
TGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyIsICJyZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LnNpemUoKSIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZyB1bnNpZ25lZD4ocmVuZGVy
U3VyZmFjZUxheWVyTGlzdC5zaXplKCkpKTsKKyAgICBBU1NFUlQocGFzc2VzLmlzRW1wdHkoKSk7
CisgICAgQVNTRVJUKHJlbmRlclN1cmZhY2VMYXllckxpc3QuaXNFbXB0eSgpKTsKIAogICAgIHJl
bmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHJvb3RMYXllcigpKTsKIApAQCAtMjU0LDYgKzI1
NSw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEND
UmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENv
bW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllcigpLCBy
b290TGF5ZXIoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCByb290TGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKSwgJm1f
bGF5ZXJTb3J0ZXIsIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7
CiAgICAgfQogCisgICAgVFJBQ0VfRVZFTlQxKCJ3ZWJraXQiLCAiQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzIiwgInJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgp
Iiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nIHVuc2lnbmVkPihyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LnNpemUoKSkpOworCiAgICAgaWYgKGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ1Bh
cnRpYWxTd2FwKQogICAgICAgICB0cmFja0RhbWFnZUZvckFsbFN1cmZhY2VzKHJvb3RMYXllcigp
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBtX3Jvb3REYW1hZ2VSZWN0ID0gcm9vdExh
eWVyKCktPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVj
dCgpOwpAQCAtMjg1LDYgKzI4OCw5IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3Vs
YXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAgICAgLy8g
QWRkIHF1YWRzIHRvIHRoZSBSZW5kZXIgcGFzc2VzIGluIEZyb250VG9CYWNrIG9yZGVyIHRvIGFs
bG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVyZm9ybWluZyBjdWxsaW5nIGR1cmluZyB0
aGUgdHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBW
ZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBDQ0xheWVySXRlcmF0b3JBY3Rp
b25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAorICAgIC8vIElmIHdlIGFy
ZSB1bmFibGUgdG8gZHJhdyBhbiBhbmltYXRpb24gb24gc29tZSBsYXllciwgdGhlbiB3ZSBhYm9y
dCB0aGUgZW50aXJlIGZyYW1lLgorICAgIGJvb2wgZHJhd0ZyYW1lID0gdHJ1ZTsKKwogICAgIEND
TGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xh
eWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVu
ZDsgKytpdCkgewogICAgICAgICBDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UgPSBpdC50
YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOwpAQCAtMzA4LDExICsz
MTQsMjMgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMo
Q0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWUKICAgICAgICAgfQogCiAgICAgICAgIGl0
LT53aWxsRHJhdyhtX2xheWVyUmVuZGVyZXIuZ2V0KCkpOwotICAgICAgICBwYXNzLT5hcHBlbmRR
dWFkc0ZvckxheWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIpOworCisgICAgICAgIGJvb2wgdXNl
ZENoZWNrZXJib2FyZCA9IGZhbHNlOworICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvckxheWVy
KCppdCwgJm9jY2x1c2lvblRyYWNrZXIsIHVzZWRDaGVja2VyYm9hcmQpOworICAgICAgICBpZiAo
dXNlZENoZWNrZXJib2FyZCkgeworICAgICAgICAgICAgYm9vbCBsYXllckhhc0FuaW1hdGluZ1Ry
YW5zZm9ybSA9IGl0LT5zY3JlZW5TcGFjZVRyYW5zZm9ybUlzQW5pbWF0aW5nKCkgfHwgaXQtPmRy
YXdUcmFuc2Zvcm1Jc0FuaW1hdGluZygpOworICAgICAgICAgICAgaWYgKGxheWVySGFzQW5pbWF0
aW5nVHJhbnNmb3JtKSB7CisgICAgICAgICAgICAgICAgZHJhd0ZyYW1lID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBv
Y2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKCppdCk7CiAgICAgfQogCi0g
ICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5yZWNvcmRNZXRyaWNzKHRoaXMp
OworICAgIGlmIChkcmF3RnJhbWUpCisgICAgICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdN
ZXRyaWNzKCkucmVjb3JkTWV0cmljcyh0aGlzKTsKKyAgICByZXR1cm4gZHJhd0ZyYW1lOwogfQog
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnNSZWN1cnNpdmUoQ0NMYXll
ckltcGwqIGN1cnJlbnQsIGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGlt
ZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqIGV2ZW50cywgYm9vbCYgZGlkQW5pbWF0ZSwgYm9v
bCYgbmVlZHNBbmltYXRlTGF5ZXJzKQpAQCAtMzUyLDI2ICszNzAsMzkgQEAgSW50U2l6ZSBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjb250ZW50U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2Nyb2xs
TGF5ZXJJbXBsLT5jaGlsZHJlbigpWzBdLT5jb250ZW50Qm91bmRzKCk7CiB9CiAKLXZvaWQgQ0NM
YXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycygpCitib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6
OnByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJiBmcmFtZSkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NM
YXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2xh
eWVyUmVuZGVyZXIpOworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVw
YXJlVG9EcmF3IiwgdGhpcywgMCk7CisKKyAgICBmcmFtZS5yZW5kZXJQYXNzZXMuY2xlYXIoKTsK
KyAgICBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmNsZWFyKCk7CiAKICAgICBpZiAoIXJv
b3RMYXllcigpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IENDUmVuZGVyUGFzc0xpc3QgcGFzc2VzOwotICAgIENDTGF5ZXJMaXN0IHJlbmRlclN1cmZhY2VM
YXllckxpc3Q7Ci0gICAgY2FsY3VsYXRlUmVuZGVyUGFzc2VzKHBhc3NlcywgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCk7CisgICAgaWYgKCFjYWxjdWxhdGVSZW5kZXJQYXNzZXMoZnJhbWUucmVuZGVy
UGFzc2VzLCBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSkgeworICAgICAgICBmcmFtZS5y
ZW5kZXJQYXNzZXMuY2xlYXIoKTsKKyAgICAgICAgZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5jbGVhcigpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gSWYgd2Ug
cmV0dXJuIHRydWUsIHRoZW4gd2UgZXhwZWN0IGRyYXdMYXllcnMoKSB0byBiZSBjYWxsZWQgYmVm
b3JlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFnYWluLgorICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJiBm
cmFtZSkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVy
cyIsIHRoaXMsIDApOworICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIpOwogCiAgICAgbV9sYXll
clJlbmRlcmVyLT5iZWdpbkRyYXdpbmdGcmFtZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcGFzc2VzLnNpemUoKTsgKytpKQotICAgICAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdSZW5k
ZXJQYXNzKHBhc3Nlc1tpXS5nZXQoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFt
ZS5yZW5kZXJQYXNzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+ZHJh
d1JlbmRlclBhc3MoZnJhbWUucmVuZGVyUGFzc2VzW2ldLmdldCgpKTsKIAogICAgIHR5cGVkZWYg
Q0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5k
ZXJTdXJmYWNlLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0
ZXJhdG9yVHlwZTsKIAotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJh
dG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAgICBmb3IgKENDTGF5ZXJJ
dGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUg
ZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KTsKKyAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JU
eXBlOjpiZWdpbigmZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytp
dCkgewogICAgICAgICBpZiAoaXQucmVwcmVzZW50c0l0c2VsZigpICYmICFpdC0+dmlzaWJsZUxh
eWVyUmVjdCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGl0LT5kaWREcmF3KCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDMxNDk0NzRjNGI1OGE1YzVk
MGVlNzBiNjNhNjExYWUyZTgyYzEyYzYuLjAzZWFiY2EzMmFkNjZkMWY1OTE4OGI4MjBjOGY3YWFk
NjYxMWYxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTYwLDYg
KzYwLDggQEAgcHVibGljOgogLy8gQ0NMYXllclRyZWVIb3N0SW1wbCBvd25zIHRoZSBDQ0xheWVy
SW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2NpYXRlZCByZW5kZXJpbmcgc3RhdGUKIGNsYXNzIEND
TGF5ZXJUcmVlSG9zdEltcGwgOiBwdWJsaWMgQ0NJbnB1dEhhbmRsZXJDbGllbnQsIExheWVyUmVu
ZGVyZXJDaHJvbWl1bUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NMYXllclRy
ZWVIb3N0SW1wbCk7CisgICAgdHlwZWRlZiBWZWN0b3I8Q0NMYXllckltcGwqPiBDQ0xheWVyTGlz
dDsKKwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+
IGNyZWF0ZShjb25zdCBDQ1NldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwog
ICAgIHZpcnR1YWwgfkNDTGF5ZXJUcmVlSG9zdEltcGwoKTsKQEAgLTc3LDExICs3OSwxNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZUdlc3R1cmVBbmltYXRpb24oUGFzc093
blB0cjxDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24+KTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVBbmltYXRpb24oKTsKIAorICAgIHN0cnVjdCBGcmFtZURhdGEgeworICAgICAgICBDQ1JlbmRl
clBhc3NMaXN0IHJlbmRlclBhc3NlczsKKyAgICAgICAgQ0NMYXllckxpc3QgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdDsKKyAgICB9OworCiAgICAgLy8gVmlydHVhbCBmb3IgdGVzdGluZy4KICAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5Db21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxl
dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUgbW9ub3RvbmljVGltZSwgZG91
YmxlIHdhbGxDbG9ja1RpbWUpOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKCk7CisgICAg
dmlydHVhbCBib29sIHByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJik7CisgICAgdmlydHVhbCB2b2lk
IGRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJik7CiAKICAgICAvLyBMYXllclJlbmRlcmVyQ2hy
b21pdW1DbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CkBAIC0xNTEsOCAr
MTU5LDYgQEAgcHJvdGVjdGVkOgogICAgIGludCBtX2ZyYW1lTnVtYmVyOwogCiBwcml2YXRlOgot
ICAgIHR5cGVkZWYgVmVjdG9yPENDTGF5ZXJJbXBsKj4gQ0NMYXllckxpc3Q7Ci0KICAgICB2b2lk
IGNvbXB1dGVEb3VibGVUYXBab29tRGVsdGFzKENDU2Nyb2xsQW5kU2NhbGVTZXQqIHNjcm9sbElu
Zm8pOwogICAgIHZvaWQgY29tcHV0ZVBpbmNoWm9vbURlbHRhcyhDQ1Njcm9sbEFuZFNjYWxlU2V0
KiBzY3JvbGxJbmZvKTsKICAgICB2b2lkIG1ha2VTY3JvbGxBbmRTY2FsZVNldChDQ1Njcm9sbEFu
ZFNjYWxlU2V0KiBzY3JvbGxJbmZvLCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQsIGZsb2F0
IHBhZ2VTY2FsZSk7CkBAIC0xNjIsNyArMTY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkanVz
dFNjcm9sbHNGb3JQYWdlU2NhbGVDaGFuZ2UoZmxvYXQpOwogICAgIHZvaWQgdXBkYXRlTWF4U2Ny
b2xsUG9zaXRpb24oKTsKICAgICB2b2lkIHRyYWNrRGFtYWdlRm9yQWxsU3VyZmFjZXMoQ0NMYXll
ckltcGwqIHJvb3REcmF3TGF5ZXIsIGNvbnN0IENDTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsKLSAgICB2b2lkIGNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0
JiwgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIGJvb2wgY2FsY3Vs
YXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllckxpc3QmIHJl
bmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIHZvaWQgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShD
Q0xheWVySW1wbCosIGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSwg
Q0NBbmltYXRpb25FdmVudHNWZWN0b3IqLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0Fu
aW1hdGVMYXllcnMpOwogICAgIEludFNpemUgY29udGVudFNpemUoKSBjb25zdDsKICAgICB2b2lk
IHNlbmREaWRMb3NlQ29udGV4dFJlY3Vyc2l2ZShDQ0xheWVySW1wbCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVh
ZEN1bGxlci5jcHAKaW5kZXggZjJhODU4NzE3MGMzYmE1YWUyMmUxYjM4OGYzZjg4MjZkMGVmZDNh
Yy4uMzVkMTk0NjE3Nzk1OTJmZWI0ZWY4NDcxYjM4ZmUwZDVlZjljODQ0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1F1YWRDdWxsZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENDUXVhZEN1bGxlcjo6Q0NRdWFkQ3Vs
bGVyKENDUXVhZExpc3QmIHF1YWRMaXN0LCBDQ0xheWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9u
CiB7CiB9CiAKLXZvaWQgQ0NRdWFkQ3VsbGVyOjphcHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFk
PiBwYXNzRHJhd1F1YWQpCitib29sIENDUXVhZEN1bGxlcjo6YXBwZW5kKFBhc3NPd25QdHI8Q0NE
cmF3UXVhZD4gcGFzc0RyYXdRdWFkKQogewogICAgIE93blB0cjxDQ0RyYXdRdWFkPiBkcmF3UXVh
ZChwYXNzRHJhd1F1YWQpOwogICAgIEludFJlY3QgY3VsbGVkUmVjdCA9IG1fb2NjbHVzaW9uVHJh
Y2tlci0+dW5vY2NsdWRlZENvbnRlbnRSZWN0KG1fbGF5ZXIsIGRyYXdRdWFkLT5xdWFkUmVjdCgp
KTsKQEAgLTYxLDYgKzYxLDcgQEAgdm9pZCBDQ1F1YWRDdWxsZXI6OmFwcGVuZChQYXNzT3duUHRy
PENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCkKICAgICAvLyBSZWxlYXNlIHRoZSBxdWFkIGFmdGVy
IHdlJ3JlIGRvbmUgdXNpbmcgaXQuCiAgICAgaWYgKGtlZXBRdWFkKQogICAgICAgICBtX3F1YWRM
aXN0LmFwcGVuZChkcmF3UXVhZC5yZWxlYXNlKCkpOworICAgIHJldHVybiBrZWVwUXVhZDsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAppbmRleCAxZjRi
OTIwNTYyYWU5NWM1NmRmNzA2OTNkOGI5YzE3MDhmYzk5NzIwLi5mNGYyNWU4YzQ1ODkwMjdlM2M3
MzI4ZTg3NWQ1MTYzNTM4MzcyYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaApAQCAtMzgsNyAr
MzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gZG9uZSB0byBlc3RpbWF0ZSBvdmVyIGRyYXcgc3RhdGlz
dGljcy4KICAgICBDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYsIENDTGF5ZXJJbXBsKiwgQ0NPY2Ns
dXNpb25UcmFja2VySW1wbCopOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChQYXNzT3duUHRy
PENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCk7CisgICAgdmlydHVhbCBib29sIGFwcGVuZChQYXNz
T3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCk7CiAKIHByaXZhdGU6CiAgICAgQ0NRdWFk
TGlzdCYgbV9xdWFkTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCmluZGV4IGExMmJmYmI1
OWY0YTdiOTM5NjNkMjQzNGVjNjBjYmU4NTAwNTYzNGEuLmNmNDdiNmNiODdhNDM3NjAyMTAzMDdk
Y2RmOTA2OTA3MWU0YTRlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcApAQCAtNDYsMTIg
KzQ2LDEyIEBAIENDUmVuZGVyUGFzczo6Q0NSZW5kZXJQYXNzKENDUmVuZGVyU3VyZmFjZSogdGFy
Z2V0U3VyZmFjZSkKICAgICBBU1NFUlQobV90YXJnZXRTdXJmYWNlKTsKIH0KIAotdm9pZCBDQ1Jl
bmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBDQ09jY2x1
c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyKQordm9pZCBDQ1JlbmRlclBhc3M6OmFw
cGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsKiBvY2NsdXNpb25UcmFja2VyLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKQogewogICAgIEND
UXVhZEN1bGxlciBxdWFkQ3VsbGVyKG1fcXVhZExpc3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2Vy
KTsKIAogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5
ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFk
Q3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgIGxheWVyLT5hcHBlbmRRdWFkcyhx
dWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwogICAg
IGxheWVyLT5hcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRl
LmdldCgpKTsKICAgICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0
ZS5yZWxlYXNlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaAppbmRleCBhYzhkYmMxYTBkMjZh
ODQ3NjY1N2ZiNjcyYzJmMTVhYWIyNGM4ZWUxLi41OTkwMWM4YzU4Y2YzNzZhMGMxZjBjYzA5YzU3
OGVlMDRkMzE2MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaApAQCAtNTQsNyArNTQsNyBAQCBj
bGFzcyBDQ1JlbmRlclBhc3MgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVu
ZGVyUGFzcz4gY3JlYXRlKENDUmVuZGVyU3VyZmFjZSopOwogCi0gICAgdm9pZCBhcHBlbmRRdWFk
c0ZvckxheWVyKENDTGF5ZXJJbXBsKiwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCopOworICAgIHZv
aWQgYXBwZW5kUXVhZHNGb3JMYXllcihDQ0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tlcklt
cGwqLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKTsKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yUmVu
ZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKik7CiAKICAgICBjb25zdCBDQ1F1YWRMaXN0JiBx
dWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZExpc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRleCA0MzdmNGY3NzZkOGIwN2Q1YjlhZmNkMWMwYzUw
M2RkOGM4OTE0MmE1Li4xNTIwNjVkMDhlMTExZDlhZTFjZGI1ZmQ2MzMxZTgxOTQwMTBjNWRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njcm9sbGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJv
bWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICB9CiB9CiAKLXZvaWQgQ0NTY3JvbGxiYXJMYXllcklt
cGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCit2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICBpZiAoIW1fdGV4dHVyZS0+aXNSZXNlcnZl
ZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwu
aAppbmRleCBmY2VjMTEwZTI0MTgzMWJkYjIxZjg2NzJiYmQwYzczNzIxMWQzZmNjLi5iMDNlNDUx
ZWIzOTIzNTAxYzJlNjUzOWZkY2FjNmY0Nzg1YTljNzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Ny
b2xsYmFyTGF5ZXJJbXBsLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2Nyb2xsTGF5ZXIoQ0NMYXllckltcGwqIHNjcm9sbExheWVyKSB7IG1fc2Nyb2xsTGF5ZXIgPSBz
Y3JvbGxMYXllcjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJD
aHJvbWl1bSopOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhD
Q1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVzZWRDaGVja2Vy
Ym9hcmQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCk7CiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggYjZmYzc2YjUyZThiZGY0ZmVh
OTc1NTBhMjE2ZWYxMzJmZjdiNWJmNS4uNjA3YjM4YWY3YTIyY2M3NzRmZjZhMTcyNzkzZDNkZTU5
ZTQwMzY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI5
OCw3ICsyOTgsOSBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKCkKICAg
ICAgIGRvdWJsZSB3YWxsQ2xvY2tUaW1lID0gY3VycmVudFRpbWUoKTsKIAogICAgICAgbV9sYXll
clRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lKTsKLSAg
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICAgIENDTGF5ZXJUcmVl
SG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnBy
ZXBhcmVUb0RyYXcoZnJhbWUpOworICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVy
cyhmcmFtZSk7CiAgICAgfQogCiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmlzQ29udGV4
dExvc3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAKaW5k
ZXggYmY2NzBlY2M4OWUxYjBmYTE3ZmVlNzYwMzgzOWVjMjdjYmZkNDkxNy4uNmFlM2ExNzI5OGU5
YzZjMzE4MjdhZDY5ZWFiNDZiOWU4ZWQzZTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlk
Q29sb3JMYXllckltcGwuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4
IENDU29saWRDb2xvckxheWVySW1wbDo6cXVhZFRyYW5zZm9ybSgpIGNvbnN0CiAgICAgcmV0dXJu
IHNvbGlkQ29sb3JUcmFuc2Zvcm07CiB9CiAKLXZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlKQordm9pZCBDQ1NvbGlkQ29sb3JMYXllckltcGw6OmFwcGVuZFF1
YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGJvb2wmKQogewogICAgIC8vIFdlIGNyZWF0ZSBhIHNlcmllcyBvZiBzbWFs
bGVyIHF1YWRzIGluc3RlYWQgb2YganVzdCBvbmUgbGFyZ2Ugb25lIHNvIHRoYXQgdGhlCiAgICAg
Ly8gY3VsbGVyIGNhbiByZWR1Y2UgdGhlIHRvdGFsIHBpeGVscyBkcmF3bi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xv
ckxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKaW5kZXggN2QwNzY3MzhjZjNhMGNjY2M5ODJiNDIy
ZWFiZDhkYTAwYjAxYmViYS4uMTBjNmFkZTNmNDczYjU0ZGJiYTc5MDQ1M2YyYzBkZThhNWI2YWNl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKQEAgLTQyLDcgKzQy
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNDU29saWRDb2xvckxheWVySW1wbCgpOwogCiAg
ICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBxdWFkVHJhbnNmb3JtKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKik7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgdXNlZENoZWNrZXJib2FyZCk7CiAKIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBDQ1NvbGlkQ29sb3JMYXllckltcGwoaW50IGlkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwCmluZGV4IGUwNmY3MmY2ZjI0OWI2MWM3
MWFhM2RhZDMzNjQzMWE4YjJlNjJiM2MuLjEyY2JhYjYyNTcwNjY3Yzg4ZGM4NzcwOTY2ODgzMjM4
OGMyNGY5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcApAQCAtOTAs
NyArOTAsNyBAQCB2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgIH0KIH0KIAotdm9pZCBDQ1RleHR1cmVMYXll
ckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCit2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6YXBw
ZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2lu
dCgpLCBib3VuZHMoKSk7CiAgICAgcXVhZExpc3QuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpj
cmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV90ZXh0dXJlSWQsIG1faGFzQWxwaGEs
IG1fcHJlbXVsdGlwbGllZEFscGhhLCBtX3V2UmVjdCwgbV9mbGlwcGVkLCBtX2lvU3VyZmFjZVNp
emUsIG1faW9TdXJmYWNlVGV4dHVyZUlkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1w
bC5oCmluZGV4IGE4MWMzNjE2YWVkYjY0NWEyMWE3MzUwYjkxYmQ5M2Q2MDdmOGJjNzIuLjkyZDFh
OTBiOWZmY2Q1NDgyMTFiYzhjNjUxOTYxY2RhYjM2N2M5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZUxheWVySW1wbC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmly
dHVhbCB+Q0NUZXh0dXJlTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVh
ZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
LCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKTsKIAogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8
VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+IFByb2dy
YW1GbGlwOwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4U3Ry
ZXRjaCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGE+IFByb2dyYW1TdHJldGNoOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBkNTQ4OGYyYzcxZDljYjUwYTMxNzViMWFkNzdlMGE3
ZGM1ZDRkNTIwLi5kODVlYzQzYzM4NTNhNDQ5MGQzODZlNGY3ZjgyN2Q0ZmIzZGMzNzVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNTU1LDcgKzU1NSw5IEBAIHZvaWQgQ0NUaHJl
YWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQogCiAgICAgbV9pbnB1dEhhbmRs
ZXJPbkltcGxUaHJlYWQtPmFuaW1hdGUobW9ub3RvbmljVGltZSk7CiAgICAgbV9sYXllclRyZWVI
b3N0SW1wbC0+YW5pbWF0ZShtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lKTsKLSAgICBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6
RnJhbWVEYXRhIGZyYW1lOworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByZXBhcmVUb0RyYXco
ZnJhbWUpOworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogCiAg
ICAgLy8gQ2hlY2sgZm9yIGEgcGVuZGluZyBjb21wb3NpdGVBbmRSZWFkYmFjay4KICAgICBpZiAo
bV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVy
SW1wbC5jcHAKaW5kZXggYTE4NzdiOTg3YWY2NWVjZjcxNThiODcyODVlNmQ4ODA5YWE1N2ZlNC4u
M2Y3YjBiM2FjMjE5YTc2MDc3NWE1ZWJmMDAxOGRmZDg5NDIzNzc3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBDQ1RpbGVkTGF5ZXJJbXBsOjpxdWFkVHJhbnNmb3JtKCkgY29uc3QKICAgICByZXR1cm4g
dHJhbnNmb3JtOwogfQogCi12b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVh
ZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUpCit2b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVh
ZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmIHVz
ZWRDaGVja2VyYm9hcmQpCiB7CiAgICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0ID0gdmlzaWJs
ZUxheWVyUmVjdCgpOwogCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGEKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKCF0aWxlIHx8
ICF0aWxlLT50ZXh0dXJlSWQoKSkgewotICAgICAgICAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChD
Q1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIGJh
Y2tncm91bmRDb2xvcigpKSk7CisgICAgICAgICAgICAgICAgdXNlZENoZWNrZXJib2FyZCB8PSBx
dWFkTGlzdC5hcHBlbmQoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3Rh
dGUsIHRpbGVSZWN0LCBiYWNrZ3JvdW5kQ29sb3IoKSkpOwogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXgg
MGJlNjU3NzQzOGMwMDM2MzE3NDRiNzc3MzVjYTY5YWQyODM4NTRhZC4uMzBhNGFhNjM4ZmFlMjhh
YjhiOTBmZDUxMGQ0ZGY4ZWNjZGM4YWViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
aApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVGlsZWRM
YXllckltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXIm
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFk
cyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVzZWRDaGVj
a2VyYm9hcmQpOwogCiAgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoTGF5ZXJS
ZW5kZXJlckNocm9taXVtKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKaW5k
ZXggYjVhYTNlMTcxNTBmZTA1NGY3M2U1MWVmMDAyYTZmZGFiZjdmYzY0Ny4uYTU2Y2Y1ODkxM2Q1
NGQ2MmVmOGMzNDAxNmU4MDdiYTg2YTg0MTliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxE
cmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICB9CiB9CiAKLXZv
aWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwg
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkKK3ZvaWQgQ0NWaWRlb0xh
eWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgaWYgKCFtX2ZyYW1l
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggNGZi
NDVlYmQ5NzBmYjNmOWM5MzllOTBiNjllMDRjZGJkYTBhZGQyZi4uZGRiMjc5YzgzYWZlZmQ4N2Rm
MzY2NzYxZTExY2U2YTg5ZjdhZTNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApA
QCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NWaWRlb0xheWVySW1wbCgp
OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwot
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSopOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXIm
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWREcmF3KCk7CiAKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZl
cnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhh
PiBSR0JBUHJvZ3JhbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NBbmltYXRpb25UZXN0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NBbmltYXRpb25UZXN0Q29tbW9uLmNwcAppbmRleCBjMjJlNDMyMmI5MTc4NGY4MjFhY2MyMmQ3
ZDYxNjM2ZGU1NjVhODlmLi4wYWE3Y2U2NDg4OGYwOGQxOTIwM2YyYjFlYzYwZmY3MjI1MmE1N2Q2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5pbWF0aW9uVGVz
dENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlv
blRlc3RDb21tb24uY3BwCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0xh
eWVyLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTUwLDYgKzUyLDI0IEBAIHZvaWQgYWRkT3BhY2l0eVRyYW5zaXRpb24oVGFy
Z2V0JiB0YXJnZXQsIGRvdWJsZSBkdXJhdGlvbiwgZmxvYXQgc3RhcnRPcGFjaXR5LCBmCiAgICAg
dGFyZ2V0LmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlvbi5nZXQoKSwgMCwg
MCwgMCk7CiB9CiAKK3RlbXBsYXRlIDxjbGFzcyBUYXJnZXQ+Cit2b2lkIGFkZEFuaW1hdGVkVHJh
bnNmb3JtKFRhcmdldCYgdGFyZ2V0LCBkb3VibGUgZHVyYXRpb24sIGludCBkZWx0YVgsIGludCBk
ZWx0YVkpCit7CisgICAgc3RhdGljIGludCBpZCA9IDA7CisgICAgV2ViQ29yZTo6S2V5ZnJhbWVW
YWx1ZUxpc3QgdmFsdWVzKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOworCisgICAg
VHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOworICAgIG9wZXJhdGlvbnMub3BlcmF0aW9u
cygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoZGVs
dGFYLCBGaXhlZCksIExlbmd0aChkZWx0YVksIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpU
UkFOU0xBVEVfWCkpOworICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZh
bHVlKDAsICZvcGVyYXRpb25zKSk7CisKKyAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24g
PSBBbmltYXRpb246OmNyZWF0ZSgpOworICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRp
b24pOworCisgICAgSW50U2l6ZSBib3hTaXplOworCisgICAgdGFyZ2V0LmFkZEFuaW1hdGlvbih2
YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlvbi5nZXQoKSwgKytpZCwgMCwgMCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlCiAKIG5hbWVzcGFjZSBXZWJLaXRUZXN0cyB7CkBAIC0xMzAsNCArMTUwLDE5IEBA
IHZvaWQgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xheWVyKFdlYkNvcmU6OkxheWVyQ2hyb21pdW0m
IGxheWVyLCBkb3VibGUgZHVyYXRpb24sCiAgICAgYWRkT3BhY2l0eVRyYW5zaXRpb24obGF5ZXIs
IGR1cmF0aW9uLCBzdGFydE9wYWNpdHksIGVuZE9wYWNpdHkpOwogfQogCit2b2lkIGFkZE9wYWNp
dHlUcmFuc2l0aW9uVG9MYXllcihXZWJDb3JlOjpDQ0xheWVySW1wbCYgbGF5ZXIsIGRvdWJsZSBk
dXJhdGlvbiwgZmxvYXQgc3RhcnRPcGFjaXR5LCBmbG9hdCBlbmRPcGFjaXR5KQoreworICAgIGFk
ZE9wYWNpdHlUcmFuc2l0aW9uKCpsYXllci5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSwgZHVy
YXRpb24sIHN0YXJ0T3BhY2l0eSwgZW5kT3BhY2l0eSk7Cit9CisKK3ZvaWQgYWRkQW5pbWF0ZWRU
cmFuc2Zvcm1Ub0xheWVyKFdlYkNvcmU6OkxheWVyQ2hyb21pdW0mIGxheWVyLCBkb3VibGUgZHVy
YXRpb24sIGludCBkZWx0YVgsIGludCBkZWx0YVkpCit7CisgICAgYWRkQW5pbWF0ZWRUcmFuc2Zv
cm0obGF5ZXIsIGR1cmF0aW9uLCBkZWx0YVgsIGRlbHRhWSk7Cit9CisKK3ZvaWQgYWRkQW5pbWF0
ZWRUcmFuc2Zvcm1Ub0xheWVyKFdlYkNvcmU6OkNDTGF5ZXJJbXBsJiBsYXllciwgZG91YmxlIGR1
cmF0aW9uLCBpbnQgZGVsdGFYLCBpbnQgZGVsdGFZKQoreworICAgIGFkZEFuaW1hdGVkVHJhbnNm
b3JtKCpsYXllci5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSwgZHVyYXRpb24sIGRlbHRhWCwg
ZGVsdGFZKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0VGVzdHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5oCmluZGV4IDE0
NjQxNGUzMDFiYTQ4NzE2ZmE0NzA4NGUzZTE0MmExOGJlNGU2M2QuLmQ5MzAzNDIwMzQwZDc4NmQz
NTAzNjI5YmYxNGEzY2IzYzdmYzg3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0NMYXll
ckltcGw7CiBjbGFzcyBMYXllckNocm9taXVtOwogfQogCkBAIC05OCw2ICs5OSwxMCBAQCBwcml2
YXRlOgogdm9pZCBhZGRPcGFjaXR5VHJhbnNpdGlvblRvQ29udHJvbGxlcihXZWJDb3JlOjpDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlciYsIGRvdWJsZSBkdXJhdGlvbiwgZmxvYXQgc3RhcnRPcGFj
aXR5LCBmbG9hdCBlbmRPcGFjaXR5KTsKIAogdm9pZCBhZGRPcGFjaXR5VHJhbnNpdGlvblRvTGF5
ZXIoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSYsIGRvdWJsZSBkdXJhdGlvbiwgZmxvYXQgc3RhcnRP
cGFjaXR5LCBmbG9hdCBlbmRPcGFjaXR5KTsKK3ZvaWQgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xh
eWVyKFdlYkNvcmU6OkNDTGF5ZXJJbXBsJiwgZG91YmxlIGR1cmF0aW9uLCBmbG9hdCBzdGFydE9w
YWNpdHksIGZsb2F0IGVuZE9wYWNpdHkpOworCit2b2lkIGFkZEFuaW1hdGVkVHJhbnNmb3JtVG9M
YXllcihXZWJDb3JlOjpMYXllckNocm9taXVtJiwgZG91YmxlIGR1cmF0aW9uLCBpbnQgZGVsdGFY
LCBpbnQgZGVsdGFZKTsKK3ZvaWQgYWRkQW5pbWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKFdlYkNvcmU6
OkNDTGF5ZXJJbXBsJiwgZG91YmxlIGR1cmF0aW9uLCBpbnQgZGVsdGFYLCBpbnQgZGVsdGFZKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0VGVzdHMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBhMTky
YmE1NTdiZjBlYTE2YzIxZTRjMDQyNDJjYjI1ZDA5MGExNzYzLi40NGRjZDE0MjQyZjUzMTBmYWNm
ZmZmNzRhNzhhYzdjMmUzY2VhOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMjYsNiArMjYsNyBA
QAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogCisjaW5jbHVkZSAiQ0NB
bmltYXRpb25UZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgiCkBAIC0zNiw2ICszNyw3IEBACiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXRUZXN0czsKIAogbmFtZXNwYWNlIHsKIApAQCAtMjUwLDcgKzI1Miw5IEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb25XaXRoT2Zmc2V0KQog
ICAgIHJvb3QtPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKEludFJlY3QoMCwgMCwgNTAsIDUw
KSk7CiAgICAgcm9vdC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgtMjUsIDApKTsKICAgICBtX2hv
c3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwotICAgIG1faG9zdEltcGwtPmRy
YXdMYXllcnMoKTsgLy8gVXBkYXRlIGRyYXcgdHJhbnNmb3JtcyBzbyB3ZSBjYW4gY29ycmVjdGx5
IG1hcCBwb2ludHMgaW50byBsYXllciBzcGFjZS4KKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpG
cmFtZURhdGEgZnJhbWU7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJh
dyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOyAvLyBVcGRhdGUg
ZHJhdyB0cmFuc2Zvcm1zIHNvIHdlIGNhbiBjb3JyZWN0bHkgbWFwIHBvaW50cyBpbnRvIGxheWVy
IHNwYWNlLgogCiAgICAgLy8gVGhpcyBwb2ludCB3b3VsZCBmYWxsIGludG8gdGhlIG5vbi1mYXN0
IHNjcm9sbGFibGUgcmVnaW9uIGV4Y2VwdCB0aGF0IHdlJ3ZlIG1vdmVkIHRoZSBsYXllciBkb3du
IGJ5IDI1IHBpeGVscy4KICAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50
UG9pbnQoNDAsIDEwKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwpAQCAtMzkwLDcgKzM5NCw3IEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFnZVNjYWxlQW5pbWF0aW9uKQogICAgIH0KIH0KIAotY2xh
c3MgRGlkRHJhd0NoZWNrTGF5ZXIgOiBwdWJsaWMgQ0NMYXllckltcGwgeworY2xhc3MgRGlkRHJh
d0NoZWNrTGF5ZXIgOiBwdWJsaWMgQ0NUaWxlZExheWVySW1wbCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8RGlkRHJhd0NoZWNrTGF5ZXI+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJu
IGFkb3B0UHRyKG5ldyBEaWREcmF3Q2hlY2tMYXllcihpZCkpOyB9CiAKQEAgLTQwNyw5ICs0MTEs
OSBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWREcmF3Q2FsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9k
aWREcmF3Q2FsbGVkOyB9CiAgICAgYm9vbCB3aWxsRHJhd0NhbGxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2lsbERyYXdDYWxsZWQ7IH0KIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBsaWNp
dCBEaWREcmF3Q2hlY2tMYXllcihpbnQgaWQpCi0gICAgICAgIDogQ0NMYXllckltcGwoaWQpCisg
ICAgICAgIDogQ0NUaWxlZExheWVySW1wbChpZCkKICAgICAgICAgLCBtX2RpZERyYXdDYWxsZWQo
ZmFsc2UpCiAgICAgICAgICwgbV93aWxsRHJhd0NhbGxlZChmYWxzZSkKICAgICB7CkBAIC00MTgs
NiArNDIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0RHJhd3NDb250ZW50KHRydWUpOwogICAg
IH0KIAorcHJpdmF0ZToKICAgICBib29sIG1fZGlkRHJhd0NhbGxlZDsKICAgICBib29sIG1fd2ls
bERyYXdDYWxsZWQ7CiB9OwpAQCAtNDMyLDEwICs0MzcsMTMgQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBkaWREcmF3Tm90Q2FsbGVkT25IaWRkZW5MYXllcikKICAgICBtX2hvc3RJ
bXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CiAgICAgRGlk
RHJhd0NoZWNrTGF5ZXIqIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1f
aG9zdEltcGwtPnJvb3RMYXllcigpKTsKIAorICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1l
RGF0YSBmcmFtZTsKKwogICAgIEVYUEVDVF9GQUxTRShyb290LT53aWxsRHJhd0NhbGxlZCgpKTsK
ICAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+ZGlkRHJhd0NhbGxlZCgpKTsKIAotICAgIG1faG9zdElt
cGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9E
cmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAKICAgICBF
WFBFQ1RfRkFMU0Uocm9vdC0+d2lsbERyYXdDYWxsZWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJv
b3QtPmRpZERyYXdDYWxsZWQoKSk7CkBAIC00NDgsNyArNDU2LDggQEAgVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Tm90Q2FsbGVkT25IaWRkZW5MYXllcikKICAgICBFWFBF
Q1RfRkFMU0Uocm9vdC0+d2lsbERyYXdDYWxsZWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJvb3Qt
PmRpZERyYXdDYWxsZWQoKSk7CiAKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAg
RVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9z
dEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogCiAgICAgRVhQRUNUX1RSVUUocm9vdC0+d2lsbERy
YXdDYWxsZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUocm9vdC0+ZGlkRHJhd0NhbGxlZCgpKTsKQEAg
LTQ3Nyw3ICs0ODYsOSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdD
YWxsZWRPbkFsbExheWVycykKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXIxLT5kaWREcmF3Q2FsbGVk
KCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllcjItPmRpZERyYXdDYWxsZWQoKSk7CiAKLSAgICBt
X2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVE
YXRhIGZyYW1lOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJh
bWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKIAogICAgIEVYUEVDVF9U
UlVFKHJvb3QtPmRpZERyYXdDYWxsZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5kaWRE
cmF3Q2FsbGVkKCkpOwpAQCAtNDg3LDYgKzQ5OCw2OCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIGRpZERyYXdDYWxsZWRPbkFsbExheWVycykKICAgICBFWFBFQ1RfVFJVRSghIWxh
eWVyMS0+cmVuZGVyU3VyZmFjZSgpKTsKIH0KIAorY2xhc3MgTWlzc2luZ1RleHR1cmVBbmltYXRp
bmdMYXllciA6IHB1YmxpYyBEaWREcmF3Q2hlY2tMYXllciB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcj4gY3JlYXRlKGludCBpZCwg
Ym9vbCB0aWxlTWlzc2luZywgYm9vbCBza2lwc0RyYXcsIGJvb2wgYW5pbWF0aW5nKSB7IHJldHVy
biBhZG9wdFB0cihuZXcgTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcihpZCwgdGlsZU1pc3Np
bmcsIHNraXBzRHJhdywgYW5pbWF0aW5nKSk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBN
aXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyKGludCBpZCwgYm9vbCB0aWxlTWlzc2luZywgYm9v
bCBza2lwc0RyYXcsIGJvb2wgYW5pbWF0aW5nKQorICAgICAgICA6IERpZERyYXdDaGVja0xheWVy
KGlkKQorICAgIHsKKyAgICAgICAgT3duUHRyPENDTGF5ZXJUaWxpbmdEYXRhPiB0aWxpbmdEYXRh
ID0gQ0NMYXllclRpbGluZ0RhdGE6OmNyZWF0ZShJbnRTaXplKDEwLCAxMCksIENDTGF5ZXJUaWxp
bmdEYXRhOjpOb0JvcmRlclRleGVscyk7CisgICAgICAgIHRpbGluZ0RhdGEtPnNldEJvdW5kcyhi
b3VuZHMoKSk7CisgICAgICAgIHNldFRpbGluZ0RhdGEoKnRpbGluZ0RhdGEuZ2V0KCkpOworICAg
ICAgICBzZXRTa2lwc0RyYXcoc2tpcHNEcmF3KTsKKyAgICAgICAgaWYgKCF0aWxlTWlzc2luZykK
KyAgICAgICAgICAgIHB1c2hUaWxlUHJvcGVydGllcygwLCAwLCAxLCBJbnRSZWN0KCkpOworICAg
ICAgICBpZiAoYW5pbWF0aW5nKQorICAgICAgICAgICAgYWRkQW5pbWF0ZWRUcmFuc2Zvcm1Ub0xh
eWVyKCp0aGlzLCAxMCwgMywgMCk7CisgICAgfQorfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVuQW5pbWF0aW9uVXNlc0NoZWNrZXJib2Fy
ZCkKK3sKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250
ZXh0KCkpOworICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkp
OworCisgICAgLy8gV2hlbiB0aGUgdGV4dHVyZSBpcyBub3QgbWlzc2luZywgd2UgZHJhdyBhcyB1
c3VhbC4KKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNy
ZWF0ZSgwKSk7CisgICAgRGlkRHJhd0NoZWNrTGF5ZXIqIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWRE
cmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKKyAgICByb290LT5hZGRD
aGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMSwgZmFsc2UsIGZhbHNl
LCB0cnVlKSk7CisgICAgRGlkRHJhd0NoZWNrTGF5ZXIqIGxheWVyID0gc3RhdGljX2Nhc3Q8TWlz
c2luZ1RleHR1cmVBbmltYXRpbmdMYXllcio+KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOwor
CisgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworCisgICAgRVhQRUNU
X1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwt
PmRyYXdMYXllcnMoZnJhbWUpOworCisgICAgLy8gV2hlbiBhIHRleHR1cmUgaXMgbWlzc2luZyBh
bmQgd2UncmUgbm90IGFuaW1hdGluZywgd2UgZHJhdyBhcyB1c3VhbCB3aXRoIGNoZWNrZXJib2Fy
ZGluZy4KKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNy
ZWF0ZSgwKSk7CisgICAgcm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9o
b3N0SW1wbC0+cm9vdExheWVyKCkpOworICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJl
QW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgxLCB0cnVlLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBsYXll
ciA9IHN0YXRpY19jYXN0PE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIqPihyb290LT5jaGls
ZHJlbigpWzBdLmdldCgpKTsKKworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVU
b0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKworICAg
IC8vIFdoZW4gYSB0ZXh0dXJlIGlzIG1pc3NpbmcgYW5kIHdlJ3JlIGFuaW1hdGluZywgd2UgZG9u
J3QgZHJhdyBhbnl0aGluZy4KKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0No
ZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CisgICAgcm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVj
a0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOworICAgIHJvb3QtPmFkZENoaWxkKE1p
c3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgxLCB0cnVlLCBmYWxzZSwgdHJ1ZSkp
OworICAgIGxheWVyID0gc3RhdGljX2Nhc3Q8TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcio+
KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOworCisgICAgRVhQRUNUX0ZBTFNFKG1faG9zdElt
cGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAgIC8vIFdoZW4gdGhlIGxheWVyIHNraXBz
IGRyYXcgYW5kIHdlJ3JlIGFuaW1hdGluZywgd2Ugc3RpbGwgZHJhdyB0aGUgZnJhbWUuCisgICAg
bV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCkpOwor
ICAgIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJv
b3RMYXllcigpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xh
eWVyOjpjcmVhdGUoMSwgZmFsc2UsIHRydWUsIHRydWUpKTsKKyAgICBsYXllciA9IHN0YXRpY19j
YXN0PE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIqPihyb290LT5jaGlsZHJlbigpWzBdLmdl
dCgpKTsKKworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUp
KTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKK30KKwogY2xhc3MgQmxlbmRT
dGF0ZVRyYWNrZXJDb250ZXh0OiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKIHB1
YmxpYzoKICAgICBCbGVuZFN0YXRlVHJhY2tlckNvbnRleHQoKSA6IG1fYmxlbmQoZmFsc2UpIHsg
fQpAQCAtNTEzLDcgKzU4Niw3IEBAIGNsYXNzIEJsZW5kU3RhdGVDaGVja0xheWVyIDogcHVibGlj
IENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxCbGVuZFN0YXRl
Q2hlY2tMYXllcj4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IEJsZW5kU3Rh
dGVDaGVja0xheWVyKGlkKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1
YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlKQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKICAgICB7
CiAgICAgICAgIG1fcXVhZHNBcHBlbmRlZCA9IHRydWU7CiAKQEAgLTU4NCwyNSArNjU3LDMwIEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09w
YXF1ZUxheWVycykKICAgICByb290LT5hZGRDaGlsZChCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3Jl
YXRlKDEpKTsKICAgICBCbGVuZFN0YXRlQ2hlY2tMYXllciogbGF5ZXIxID0gc3RhdGljX2Nhc3Q8
QmxlbmRTdGF0ZUNoZWNrTGF5ZXIqPihyb290LT5jaGlsZHJlbigpWzBdLmdldCgpKTsKIAorICAg
IENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKwogICAgIC8vIE9wYXF1ZSBs
YXllciwgZHJhd24gd2l0aG91dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVl
KTsKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRzKHRydWUpOwogICAgIGxheWVyMS0+c2V0
RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7
CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAg
IG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+
cXVhZHNBcHBlbmRlZCgpKTsKIAogICAgIC8vIExheWVyIHdpdGggdHJhbnNsdWNlbnQgY29udGVu
dCwgYnV0IG9wYXF1ZSBjb250ZW50LCBzbyBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIGxh
eWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRzKHRy
dWUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKLSAgICBtX2hv
c3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAg
IEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKIAogICAgIC8vIExheWVyIHdp
dGggdHJhbnNsdWNlbnQgY29udGVudCBhbmQgcGFpbnRpbmcsIHNvIGRyYXduIHdpdGggYmxlbmRp
bmcuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0T3BhcXVl
Q29udGVudHMoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2Up
OwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJ
bXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhm
cmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCiAgICAg
Ly8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5LCBkcmF3biB3aXRoIGJsZW5kaW5nLgpA
QCAtNjEwLDcgKzY4OCw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRp
bmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRl
bnRzKHRydWUpOwogICAgIGxheWVyMS0+c2V0T3BhY2l0eSgwLjUpOwogICAgIGxheWVyMS0+c2V0
RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsK
KyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAg
bV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5x
dWFkc0FwcGVuZGVkKCkpOwogCiAgICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5
IGFuZCBwYWludGluZywgZHJhd24gd2l0aCBibGVuZGluZy4KQEAgLTYxOCw3ICs2OTcsOCBAQCBU
RVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFx
dWVMYXllcnMpCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb250ZW50cyhmYWxzZSk7CiAgICAgbGF5
ZXIxLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBm
YWxzZSk7Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1f
aG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5
ZXJzKGZyYW1lKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAK
ICAgICBsYXllcjEtPmFkZENoaWxkKEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUoMikpOwpA
QCAtNjMzLDcgKzcxMyw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRp
bmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBsYXllcjItPnNldE9wYXF1ZUNvbnRl
bnRzKHRydWUpOwogICAgIGxheWVyMi0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjItPnNldEV4
cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwor
ICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBt
X2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1
YWRzQXBwZW5kZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkp
OwogCkBAIC02NDMsNyArNzI0LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBi
bGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIGxheWVyMS0+c2V0T3BhcXVl
Q29udGVudHMoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2Up
OwogICAgIGxheWVyMi0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKLSAgICBtX2hvc3RJ
bXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRv
RHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAgIEVY
UEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXll
cjItPnF1YWRzQXBwZW5kZWQoKSk7CiAKQEAgLTY1Myw3ICs3MzUsOCBAQCBURVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAg
ICAgbGF5ZXIxLT5zZXRPcGFxdWVDb250ZW50cyh0cnVlKTsKICAgICBsYXllcjEtPnNldEV4cGVj
dGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwg
ZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRSht
X2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xh
eWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwog
ICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKIApAQCAtNjY3LDcgKzc1
MCw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJh
d2luZ09wYXF1ZUxheWVycykKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsKICAgICBsYXll
cjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCB0cnVlKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0
aW9uKGZhbHNlLCBmYWxzZSk7Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVY
UEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJ
bXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBw
ZW5kZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogCkBA
IC02ODEsNyArNzY1LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGlu
Z09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIGxheWVyMi0+c2V0T3BhcXVlQ29udGVu
dHModHJ1ZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgbGF5ZXIyLT5zZXRF
eHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwor
ICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBt
X2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1
YWRzQXBwZW5kZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkp
OwogCkBAIC02OTMsNyArNzc4LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBi
bGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIGxheWVyMi0+c2V0T3BhcXVl
Q29udGVudHMoZmFsc2UpOwogICAgIGxheWVyMi0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjIt
PnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KCk7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOwor
ICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAgIEVYUEVDVF9UUlVFKGxheWVy
MS0+cXVhZHNBcHBlbmRlZCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5k
ZWQoKSk7CiAKQEAgLTcwNSw3ICs3OTEsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5ZXIyLT5zZXRP
cGFxdWVDb250ZW50cyh0cnVlKTsKICAgICBsYXllcjItPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5
ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdM
YXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1l
KSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUo
bGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNB
cHBlbmRlZCgpKTsKIApAQCAtNzE2LDcgKzgwMyw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBsYXllcjEt
PnNldE9wYXF1ZUNvbnRlbnRzKGZhbHNlKTsKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRS
ZWN0KEludFJlY3QoNSwgNSwgMiwgNSkpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1
ZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJV
RShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJh
d0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkp
OwogCiAgICAgLy8gTGF5ZXIgd2l0aCBwYXJ0aWFsbHkgb3BhcXVlIGNvbnRlbnRzIHBhcnRpYWxs
eSBjdWxsZWQsIGRyYXduIHdpdGggYmxlbmRpbmcuCkBAIC03MjYsNyArODE0LDggQEAgVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5
ZXJzKQogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudHMoZmFsc2UpOwogICAgIGxheWVyMS0+
c2V0T3BhcXVlQ29udGVudFJlY3QoSW50UmVjdCg1LCA1LCAyLCA1KSk7CiAgICAgbGF5ZXIxLT5z
ZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygp
OworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAg
ICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEt
PnF1YWRzQXBwZW5kZWQoKSk7CiAKICAgICAvLyBMYXllciB3aXRoIHBhcnRpYWxseSBvcGFxdWUg
Y29udGVudHMgY3VsbGVkLCBkcmF3biB3aXRoIGJsZW5kaW5nLgpAQCAtNzM2LDcgKzgyNSw4IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09w
YXF1ZUxheWVycykKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRzKGZhbHNlKTsKICAgICBs
YXllcjEtPnNldE9wYXF1ZUNvbnRlbnRSZWN0KEludFJlY3QoNSwgNSwgMiwgNSkpOwogICAgIGxh
eWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdM
YXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1l
KSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUo
bGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCiAgICAgLy8gTGF5ZXIgd2l0aCBwYXJ0aWFsbHkg
b3BhcXVlIGNvbnRlbnRzIGFuZCB0cmFuc2x1Y2VudCBjb250ZW50cyBjdWxsZWQsIGRyYXduIHdp
dGhvdXQgYmxlbmRpbmcuCkBAIC03NDYsNyArODM2LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIGxheWVy
MS0+c2V0T3BhcXVlQ29udGVudHMoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVu
dFJlY3QoSW50UmVjdCg1LCA1LCAyLCA1KSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihm
YWxzZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1Rf
VFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+
ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVk
KCkpOwogCiB9CkBAIC03ODgsNyArODc5LDkgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCByZXNoYXBlTm90Q2FsbGVkVW50aWxEcmF3KQogICAgIG1faG9zdEltcGwtPnNldFJvb3RM
YXllcihhZG9wdFB0cihyb290KSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc2hhcGVUcmFja2VyLT5y
ZXNoYXBlQ2FsbGVkKCkpOwogCi0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEND
TGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICBFWFBFQ1RfVFJVRShtX2hv
c3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVy
cyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUocmVzaGFwZVRyYWNrZXItPnJlc2hhcGVDYWxsZWQo
KSk7CiB9CiAKQEAgLTg0MCw4ICs5MzMsMTEgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKICAgICByb290LT5hZGRDaGlsZChh
ZG9wdFB0cihjaGlsZCkpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zZXRSb290TGF5ZXIoYWRv
cHRQdHIocm9vdCkpOwogCisgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1l
OworCiAgICAgLy8gRmlyc3QgZnJhbWUsIHRoZSBlbnRpcmUgc2NyZWVuIHNob3VsZCBnZXQgc3dh
cHBlZC4KLSAgICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9U
UlVFKGxheWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbGF5ZXJU
cmVlSG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5z
d2FwQnVmZmVycygpOwogICAgIEludFJlY3QgYWN0dWFsU3dhcFJlY3QgPSBwYXJ0aWFsU3dhcFRy
YWNrZXItPnBhcnRpYWxTd2FwUmVjdCgpOwogICAgIEludFJlY3QgZXhwZWN0ZWRTd2FwUmVjdCA9
IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwpAQCAtODU1LDcg
Kzk1MSw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBSZWNl
aXZlc0RhbWFnZVJlY3QpCiAgICAgLy8gZXhwZWN0ZWQgZGFtYWdlIHJlY3Q6IEludFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSgyNiwgMjgpKTsKICAgICAvLyBleHBlY3RlZCBzd2FwIHJl
Y3Q6IHZlcnRpY2FsbHkgZmxpcHBlZCwgd2l0aCBvcmlnaW4gYXQgYm90dG9tIGxlZnQgY29ybmVy
LgogICAgIGNoaWxkLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIDApKTsKLSAgICBsYXllclRy
ZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyVHJlZUhvc3RJ
bXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdM
YXllcnMoZnJhbWUpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwogICAg
IGFjdHVhbFN3YXBSZWN0ID0gcGFydGlhbFN3YXBUcmFja2VyLT5wYXJ0aWFsU3dhcFJlY3QoKTsK
ICAgICBleHBlY3RlZFN3YXBSZWN0ID0gSW50UmVjdChJbnRQb2ludCgwLCA1MDAtMjgpLCBJbnRT
aXplKDI2LCAyOCkpOwpAQCAtODY5LDcgKzk2Niw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAgICAgLy8gZXhwZWN0ZWQg
c3dhcCByZWN0OiBmbGlwcGVkIGRhbWFnZSByZWN0LCBidXQgYWxzbyBjbGFtcGVkIHRvIHZpZXdw
b3J0CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAx
MCkpOwogICAgIHJvb3QtPnNldE9wYWNpdHkoMC43KTsgLy8gdGhpcyB3aWxsIGRhbWFnZSBldmVy
eXRoaW5nCi0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1Rf
VFJVRShsYXllclRyZWVIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIGxheWVy
VHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+
c3dhcEJ1ZmZlcnMoKTsKICAgICBhY3R1YWxTd2FwUmVjdCA9IHBhcnRpYWxTd2FwVHJhY2tlci0+
cGFydGlhbFN3YXBSZWN0KCk7CiAgICAgZXhwZWN0ZWRTd2FwUmVjdCA9IEludFJlY3QoSW50UG9p
bnQ6Onplcm8oKSwgSW50U2l6ZSgxMCwgMTApKTsKQEAgLTkwMCwxOSArOTk4LDI0IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdmlzaWJpbGl0eUNoYW5nZVJlc2V0c0RhbWFnZSkK
ICAgICByb290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwt
PnNldFJvb3RMYXllcihhZG9wdFB0cihyb290KSk7CiAKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpGcmFtZURhdGEgZnJhbWU7CisKICAgICAvLyBGaXJzdCBmcmFtZTogaWdub3JlLgotICAgIGxh
eWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXJUcmVl
SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBsYXllclRyZWVIb3N0SW1wbC0+
ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7
CiAKICAgICAvLyBTZWNvbmQgZnJhbWU6IG5vdGhpbmcgaGFzIGNoYW5nZWQgLS0tIHNvIHdlIHNv
dWxkbid0IHB1c2ggYW55dGhpbmcgd2l0aCBwYXJ0aWFsIHN3YXAuCi0gICAgbGF5ZXJUcmVlSG9z
dEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllclRyZWVIb3N0SW1wbC0+
cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJz
KGZyYW1lKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKICAgICBFWFBF
Q1RfVFJVRShwYXJ0aWFsU3dhcFRyYWNrZXItPnBhcnRpYWxTd2FwUmVjdCgpLmlzRW1wdHkoKSk7
CiAKICAgICAvLyBUaGlyZCBmcmFtZTogdmlzaWJpbGl0eSBjaGFuZ2UgLS0tIHNvIHdlIHNob3Vs
ZCBwdXNoIGEgZnVsbCBmcmFtZSB3aXRoIHBhcnRpYWwgc3dhcC4KICAgICBsYXllclRyZWVIb3N0
SW1wbC0+c2V0VmlzaWJsZShmYWxzZSk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2li
bGUodHJ1ZSk7Ci0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBF
Q1RfVFJVRShsYXllclRyZWVIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIGxh
eWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBsYXllclRyZWVIb3N0SW1w
bC0+c3dhcEJ1ZmZlcnMoKTsKICAgICBJbnRSZWN0IGFjdHVhbFN3YXBSZWN0ID0gcGFydGlhbFN3
YXBUcmFja2VyLT5wYXJ0aWFsU3dhcFJlY3QoKTsKICAgICBJbnRSZWN0IGV4cGVjdGVkU3dhcFJl
Y3QgPSBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIEludFNpemUoNTAwLCA1MDApKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
CmluZGV4IDNmZGEyYzllZTdhY2FmMGJlZTM2N2RlYjVlNmIxZDkzYThkMWNiNTYuLmM3MzhmM2Fm
Mzg0NzFhMTkwN2IyMWY2NWZkMDgxNzMwYTA5YTU2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtNjMsNiArNjMs
NyBAQCBjbGFzcyBUZXN0SG9va3MgOiBwdWJsaWMgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlIHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21taXRPbkNDVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdEltcGwqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhy
ZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRv
RHJhd09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGFuaW1hdGVMYXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCosIGRvdWJsZSBtb25v
dG9uaWNUaW1lKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25z
dCBJbnRTaXplJiwgZmxvYXQpIHsgfQpAQCAtOTUsOSArOTYsMTYgQEAgcHVibGljOgogICAgICAg
ICBtX3Rlc3RIb29rcy0+Y29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKHRoaXMpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKCkKKyAgICB2aXJ0dWFsIGJvb2wgcHJlcGFyZVRv
RHJhdyhGcmFtZURhdGEmIGZyYW1lKQogICAgIHsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1w
bDo6ZHJhd0xheWVycygpOworICAgICAgICBib29sIHJlc3VsdCA9IENDTGF5ZXJUcmVlSG9zdElt
cGw6OnByZXBhcmVUb0RyYXcoZnJhbWUpOworICAgICAgICBtX3Rlc3RIb29rcy0+cHJlcGFyZVRv
RHJhd09uQ0NUaHJlYWQodGhpcyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJiBmcmFtZSkKKyAgICB7
CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoZnJhbWUpOwogICAgICAg
ICBtX3Rlc3RIb29rcy0+ZHJhd0xheWVyc09uQ0NUaHJlYWQodGhpcyk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAppbmRl
eCAxMWEwODlhNTJjZGVjOWJlZDRlZmIzZGMyMTI0YTNmM2U0M2I3NTlmLi4zZGVhMWVkNzQ1NTlm
M2UyYTM4NTk0ODI1OTBkNzE1ZTQxN2ZmY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTgyLDcgKzgyLDggQEAgc3RhdGlj
IHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIFZlY3RvcjxPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+ID4KIHsKICAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihxdWFkTGlz
dCwgbGF5ZXIsICZvY2NsdXNpb25UcmFja2VyKTsKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAg
ICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsK
KyAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAgICBsYXllci0+YXBwZW5kUXVh
ZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsK
ICAgICBzaGFyZWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xv
ckxheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlk
Q29sb3JMYXllckltcGxUZXN0LmNwcAppbmRleCA3Yzc0M2QyYTc2NmFjMDI3NTY3Mjk0NjU3YWQ0
ZjQ4MWZiOGFjMjE3Li4xMmY4YzIyNGRlNTFmYzc5Y2VjNGVkNGQ5NGFhNTAzYjk3YjBkMjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVy
SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENv
bG9yTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTUyLDcgKzUyLDggQEAgVEVTVChDQ1NvbGlkQ29sb3JM
YXllckltcGxUZXN0LCB2ZXJpZnlUaWxpbmdDb21wbGV0ZUFuZE5vT3ZlcmxhcCkKICAgICBsYXll
ci0+c2V0Qm91bmRzKGxheWVyU2l6ZSk7CiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICBs
YXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAg
ICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMo
cXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKIAog
ICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChxdWFkQ3VsbGVyLnF1YWRMaXN0KCksIHZp
c2libGVMYXllclJlY3QpOwogfQpAQCAtNzMsNyArNzQsOCBAQCBURVNUKENDU29saWRDb2xvckxh
eWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RCYWNrZ3JvdW5kQ29sb3JJblF1YWQpCiAgICAgbGF5
ZXItPnNldEJhY2tncm91bmRDb2xvcih0ZXN0Q29sb3IpOwogCiAgICAgT3duUHRyPENDU2hhcmVk
UXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRl
KCk7Ci0gICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5n
ZXQoKSk7CisgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7CisgICAgbGF5ZXItPmFw
cGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJi
b2FyZCk7CiAKICAgICBBU1NFUlRfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMVUp
OwogICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KClbMF0tPnRvU29saWRDb2xvckRy
YXdRdWFkKCktPmNvbG9yKCksIHRlc3RDb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwCmluZGV4IGZlOGNhOGViMDIx
N2FmNTIzMzI0ZTIwY2M3NGVhZjFjNTNkZGE4ZmYuLjU3Y2FhN2RjMTcxNGExZjllNTJlNTIxYzU4
ZDQwMzkyNTM1MzdiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaWxlZExheWVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwCkBAIC03Miw3ICs3Miw4IEBAIFRFU1QoQ0NUaWxl
ZExheWVySW1wbFRlc3QsIGVtcHR5UXVhZExpc3QpCiAgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJU
aWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVh
ZEN1bGxlcjsKICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3Rh
dGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0gICAgICAgIGxheWVyLT5hcHBl
bmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29s
IHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1
YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CiAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIG51bVRpbGVzID0gbnVtVGlsZXNYICogbnVtVGlsZXNZOwogICAg
ICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgbnVtVGlsZXMpOwog
ICAgIH0KQEAgLTg0LDcgKzg1LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlR
dWFkTGlzdCkKIAogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7CiAgICAgICAg
IE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0
ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxl
ciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJk
ID0gZmFsc2U7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRR
dWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwogICAgICAgICBFWFBFQ1RfRVEocXVh
ZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgIH0KIApAQCAtOTcsNyArOTksOCBA
QCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgICAgIE1v
Y2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0g
ICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0
KCkpOworICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAgICAgICAgbGF5
ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENo
ZWNrZXJib2FyZCk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6
ZSgpLCAwdSk7CiAgICAgfQogCkBAIC0xMDgsNyArMTExLDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJ
bXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKIAogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRD
dWxsZXI7CiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRl
ID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgICAgICBsYXllci0+YXBwZW5k
UXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICAgICAgYm9vbCB1
c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFk
Q3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwogICAgICAg
ICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgIH0KIH0K
QEAgLTEyOCw4ICsxMzIsMTAgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgY2hlY2tlcmJv
YXJkaW5nKQogICAgIC8vIE5vIGNoZWNrZXJib2FyZGluZwogICAgIHsKICAgICAgICAgTW9ja0ND
UXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1
bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJv
YXJkID0gZmFsc2U7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFy
ZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwogICAgICAgICBFWFBFQ1RfRVEo
cXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgNHUpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
dXNlZENoZWNrZXJib2FyZCk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFk
Q3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBFWFBFQ1RfRVEocXVh
ZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRl
bnQpOwpAQCAtMTQyLDcgKzE0OCw5IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNr
ZXJib2FyZGluZykKICAgICAvLyBBbGwgY2hlY2tlcmJvYXJkaW5nCiAgICAgewogICAgICAgICBN
b2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhx
dWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVzZWRDaGVj
a2VyYm9hcmQgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIs
IHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CisgICAgICAgIEVYUEVD
VF9UUlVFKHVzZWRDaGVja2VyYm9hcmQpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5x
dWFkTGlzdCgpLnNpemUoKSwgNHUpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1
YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkKICAgICAgICAgICAgIEVYUEVDVF9FUShx
dWFkQ3VsbGVyLnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlNvbGlkQ29s
b3IpOwpAQCAtMTU3LDcgKzE2NSw4IEBAIHN0YXRpYyBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6CiAKICAgICBN
b2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIocXVhZHMpOwogICAgIE93blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgp
OwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0
KCkpOworICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZhbHNlOworICAgIGxheWVyLT5hcHBl
bmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9h
cmQpOwogICAgIHJldHVybiBzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpOyAvLyBUaGUgc2hhcmVk
IGRhdGEgbXVzdCBiZSBvd25lZCBhcyBsb25nIGFzIHRoZSBxdWFkIGxpc3QgZXhpc3RzLgogfQog
CkBAIC0yNzUsNyArMjg0LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgYmFja2dyb3Vu
ZENvdmVyc1ZpZXdwb3J0KQogICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJl
ZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKIAogICAgICAgICBN
b2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhx
dWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVzZWRDaGVj
a2VyYm9hcmQgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIs
IHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgICAgIEVYUEVD
VF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCBudW1UaWxlcyk7CiAKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kp
CkBAIC0yOTAsNyArMzAwLDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgYmFja2dyb3Vu
ZENvdmVyc1ZpZXdwb3J0KQogCiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hh
cmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogICAgICAgICBN
b2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhx
dWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVzZWRDaGVj
a2VyYm9hcmQgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIs
IHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CiAKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCiAg
ICAgICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgp
LCBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yKTsKQEAgLTMwNiw3ICszMTcsOCBAQCBURVNUKENDVGls
ZWRMYXllckltcGxUZXN0LCBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQpCiAKICAgICAgICAgT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hh
cmVkUXVhZFN0YXRlKCk7CiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAg
ICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQo
KSk7CisgICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZhbHNlOworICAgICAgICBsYXll
ci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hl
Y2tlcmJvYXJkKTsKIAogICAgICAgICB1bnNpZ25lZCBudW1Db250ZW50VGlsZXMgPSAwLCBudW1H
dXR0ZXJUaWxlcyA9IDA7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZEN1bGxl
ci5xdWFkTGlzdCgpLnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCmluZGV4IDc5MWFmNTAzM2Y3OGY2NjEwYWEyNjY1MmIz
NGJiOGRmZTA3ZjhkYjkuLmQ5Y2QzMTMyNjgzMGJkMTIyMDMxY2YwYzhlMThlZGNkOTBlYzk1Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5o
CkBAIC00NCwxMSArNDQsMTQgQEAgcHVibGljOgogICAgICAgICAsIG1fYWN0aXZlUXVhZExpc3Qo
ZXh0ZXJuYWxRdWFkTGlzdCkKICAgICB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoV1RG
OjpQYXNzT3duUHRyPFdlYkNvcmU6OkNDRHJhd1F1YWQ+IG5ld1F1YWQpCisgICAgdmlydHVhbCBi
b29sIGFwcGVuZChXVEY6OlBhc3NPd25QdHI8V2ViQ29yZTo6Q0NEcmF3UXVhZD4gbmV3UXVhZCkK
ICAgICB7CiAgICAgICAgIE93blB0cjxXZWJDb3JlOjpDQ0RyYXdRdWFkPiBkcmF3UXVhZCA9IG5l
d1F1YWQ7Ci0gICAgICAgIGlmICghZHJhd1F1YWQtPnF1YWRSZWN0KCkuaXNFbXB0eSgpKQorICAg
ICAgICBpZiAoIWRyYXdRdWFkLT5xdWFkUmVjdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
bV9hY3RpdmVRdWFkTGlzdC5hcHBlbmQoZHJhd1F1YWQucmVsZWFzZSgpKTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBjb25zdCBXZWJDb3JlOjpDQ1F1YWRMaXN0JiBxdWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fYWN0aXZlUXVhZExpc3Q7IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133101</attachid>
            <date>2012-03-21 13:02:36 -0700</date>
            <delta_ts>2012-03-21 14:44:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81437-20120321160235.patch</filename>
            <type>text/plain</type>
            <size>60136</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI3OTYyOTEwYTUwY2E5
NDM0ODM3ODQ4YmFhMGMzODZiMzFlMzZkNC4uZDc4MTZkNWMyNzYxZjU2ZjcyNmU2MWRhZjZjNDEz
N2E3ZjY3MmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAzLTIxICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRWFy
bHkgb3V0IGluIGEgbmV3IHByZXBhcmVUb0RyYXcoKSBzdGVwIGlmIGNoZWNrZXJib2FyZGluZyBh
biBhY2NlbGVyYXRlZCBhbmltYXRpb24gaW4gb3JkZXIgdG8gc2tpcCB0aGUgZnJhbWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BsaXQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6ZHJhd0xheWVycygpIGludG8gdHdvIHBoYXNlczoKKyAgICAgICAgcHJlcGFy
ZVRvRHJhdygpIGFuZCBkcmF3TGF5ZXJzKCkuCisKKyAgICAgICAgV2hlbiBjYWxjdWxhdGluZyBh
IFJlbmRlclBhc3MsIGFuZCB3ZSBjaGVja2VyYm9hcmQgYSBxdWFkIG9uIGEKKyAgICAgICAgbGF5
ZXIsIGJ1YmJsZSB0aGlzIGluZm8gYmFjayB1cCB0byBDQ0xheWVyVHJlZUhvc3RJbXBsLiBJZiB0
aGUKKyAgICAgICAgbGF5ZXIgaXMgdHJhbnNmb3JtaW5nIGluIGFuIGFuaW1hdGlvbiwgdGhlbiBh
Ym9ydCB0aGUgcHJlcGFyZVRvRHJhdygpCisgICAgICAgIHBoYXNlIGFuZCBjYXVzZSBpdCB0byBy
ZXR1cm4gZmFsc2UgYmFjayB0byB0aGUgdGhyZWFkIHByb3h5LgorCisgICAgICAgIFVuaXQgdGVz
dDogQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QucHJlcGFyZVRvRHJhd0ZhaWxzV2hlbkFuaW1hdGlv
blVzZXNDaGVja2VyYm9hcmQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3Nlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xh
eWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChG
cmFtZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVh
ZEN1bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmg6Cisg
ICAgICAgIChDQ1F1YWRDdWxsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6
OmFwcGVuZFF1YWRzRm9yTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChDQ1Njcm9sbGJhckxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDU29saWRDb2xvckxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVy
SW1wbC5oOgorICAgICAgICAoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUZXh0dXJlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmg6CisgICAg
ICAgIChDQ1RleHR1cmVMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXApOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKyAgICAgICAgKENDVGlsZWRM
YXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6YXBw
ZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuaDoKKyAgICAgICAgKENDVmlkZW9MYXllckltcGwpOgorCiAyMDEyLTAzLTIw
ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gSW5mcmFzdHJ1Y3R1cmUgdG8gYWxsb3cgYW5pbWF0aW5nIGxheWVycyB0byBiZSBvbmx5IHBh
cnRpYWxseSB1cGRhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDJmMmMzMDY3MWI2
YmRhMmQ4YWE4ZTdmMGUwMjgwMzI0MTlkMTc2YzkuLjYyOGQ4ZmZhYWNlZDg1YjVlN2UxMjQwMDgz
Y2U2Y2FmZjA1M2ViNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTItMDMtMjEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBFYXJseSBvdXQgaW4gYSBuZXcgcHJlcGFyZVRvRHJhdygpIHN0ZXAg
aWYgY2hlY2tlcmJvYXJkaW5nIGFuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbiBpbiBvcmRlciB0byBz
a2lwIHRoZSBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODE0MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHRlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEFuaW1hdGVkVHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YktpdFRlc3RzOjphZGRPcGFjaXR5VHJhbnNpdGlvblRvTGF5ZXIpOgorICAgICAgICAoV2ViS2l0
VGVzdHMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OmFkZEFuaW1hdGVkVHJhbnNmb3JtVG9MYXll
cik6CisgICAgICAgICogdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToKKyAg
ICAgICAgKERpZERyYXdDaGVja0xheWVyKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpEaWREcmF3
Q2hlY2tMYXllcjo6RGlkRHJhd0NoZWNrTGF5ZXIpOgorICAgICAgICAoTWlzc2luZ1RleHR1cmVB
bmltYXRpbmdMYXllcik6CisgICAgICAgIChXZWJLaXRUZXN0czo6TWlzc2luZ1RleHR1cmVBbmlt
YXRpbmdMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNaXNzaW5nVGV4dHVy
ZUFuaW1hdGluZ0xheWVyOjpNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyKToKKyAgICAgICAg
KFdlYktpdFRlc3RzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpCbGVuZFN0YXRlQ2hlY2tMYXll
cjo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
OgorICAgICAgICAoV1RGOjpUZXN0SG9va3M6OnByZXBhcmVUb0RyYXdPbkNDVGhyZWFkKToKKyAg
ICAgICAgKFdURjo6TW9ja0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KToKKyAgICAg
ICAgKE1vY2tMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVI
b3N0SW1wbDo6ZHJhd0xheWVycyk6CisgICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogdGVzdHMvQ0NT
b2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6
VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwOgorICAgICAg
ICAoQ0NMYXllclRlc3RDb21tb246OlRFU1QpOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246
OmdldFF1YWRzKToKKyAgICAgICAgKiB0ZXN0cy9Nb2NrQ0NRdWFkQ3VsbGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ0NRdWFkQ3VsbGVyOjphcHBlbmQpOgorCiAyMDEyLTAzLTIwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gSW5m
cmFzdHJ1Y3R1cmUgdG8gYWxsb3cgYW5pbWF0aW5nIGxheWVycyB0byBiZSBvbmx5IHBhcnRpYWxs
eSB1cGRhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggZDdlMmI4YTBkNGFiYzZjMDU2
ZTBlMzhiOGE0NGE0NmE5MTU5NGNkNC4uYmM3N2IyZWExNGNlODgzOGZiMTBjOWRkYjhlM2FmMTMz
MjM2NDgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIFBh
c3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDTGF5ZXJJbXBsOjpjcmVhdGVTaGFyZWRRdWFk
U3RhdGUoKSBjb25zdAogICAgIHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHF1YWRU
cmFuc2Zvcm0oKSwgZHJhd1RyYW5zZm9ybSgpLCB2aXNpYmxlTGF5ZXJSZWN0KCksIGxheWVyQ2xp
cFJlY3QsIGRyYXdPcGFjaXR5KCksIG9wYXF1ZSgpKTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSkKK3ZvaWQgQ0NMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVh
ZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGJvb2wmKQogewogICAgIGFwcGVuZEd1dHRlclF1YWRzKHF1YWRMaXN0LCBzaGFyZWRRdWFk
U3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggNmYwMmVmODI3NDI1ODZiODQ1NDMx
MTVlZWZkMDc3YmZkNjQ0ZGU5MS4uZmFlYmJjODg3NDQ3MzdjYmM2MDBiOWMzNGEyMTllM2U0ZGYz
ZWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKIAog
ICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0q
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFk
Q3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJk
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdygpIHsgfQogICAgIHZvaWQgYXBwZW5kRGVidWdC
b3JkZXJRdWFkKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKikgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggYWQ4OTJmMjhm
NDVmYzdiOWQ0MmIwNjQ2ZDk4NGI4ZmM0NjE1OTY2ZS4uN2JhM2QzZDJiODE2NmMxZTRmYWUyMjI2
NjUzZWNmNjMwMDhmZDg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKQEAgLTIzNSw5ICsyMzUsMTAgQEAgc3RhdGljIEZsb2F0UmVjdCBkYW1hZ2VJblN1cmZhY2VT
cGFjZShDQ0xheWVySW1wbCogcmVuZGVyU3VyZmFjZUxheWVyLCBjb25zdCBGbG8KICAgICByZXR1
cm4gc3VyZmFjZURhbWFnZVJlY3Q7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2Fs
Y3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllckxpc3Qm
IHJlbmRlclN1cmZhY2VMYXllckxpc3QpCitib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1
bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZXJMaXN0JiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQogewotICAgIFRSQUNFX0VWRU5UMSgid2Via2l0IiwgIkND
TGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyIsICJyZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LnNpemUoKSIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZyB1bnNpZ25lZD4ocmVuZGVy
U3VyZmFjZUxheWVyTGlzdC5zaXplKCkpKTsKKyAgICBBU1NFUlQocGFzc2VzLmlzRW1wdHkoKSk7
CisgICAgQVNTRVJUKHJlbmRlclN1cmZhY2VMYXllckxpc3QuaXNFbXB0eSgpKTsKIAogICAgIHJl
bmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHJvb3RMYXllcigpKTsKIApAQCAtMjU0LDYgKzI1
NSw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEND
UmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENv
bW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllcigpLCBy
b290TGF5ZXIoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCByb290TGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKSwgJm1f
bGF5ZXJTb3J0ZXIsIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7
CiAgICAgfQogCisgICAgVFJBQ0VfRVZFTlQxKCJ3ZWJraXQiLCAiQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzIiwgInJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgp
Iiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nIHVuc2lnbmVkPihyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LnNpemUoKSkpOworCiAgICAgaWYgKGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ1Bh
cnRpYWxTd2FwKQogICAgICAgICB0cmFja0RhbWFnZUZvckFsbFN1cmZhY2VzKHJvb3RMYXllcigp
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBtX3Jvb3REYW1hZ2VSZWN0ID0gcm9vdExh
eWVyKCktPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVj
dCgpOwpAQCAtMjg1LDYgKzI4OCw5IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3Vs
YXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAgICAgLy8g
QWRkIHF1YWRzIHRvIHRoZSBSZW5kZXIgcGFzc2VzIGluIEZyb250VG9CYWNrIG9yZGVyIHRvIGFs
bG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVyZm9ybWluZyBjdWxsaW5nIGR1cmluZyB0
aGUgdHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBW
ZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBDQ0xheWVySXRlcmF0b3JBY3Rp
b25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAorICAgIC8vIElmIHdlIGFy
ZSB1bmFibGUgdG8gZHJhdyBhbiBhbmltYXRpb24gb24gc29tZSBsYXllciwgdGhlbiB3ZSBhYm9y
dCB0aGUgZW50aXJlIGZyYW1lLgorICAgIGJvb2wgZHJhd0ZyYW1lID0gdHJ1ZTsKKwogICAgIEND
TGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xh
eWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVu
ZDsgKytpdCkgewogICAgICAgICBDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UgPSBpdC50
YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOwpAQCAtMzA4LDExICsz
MTQsMjMgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMo
Q0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWUKICAgICAgICAgfQogCiAgICAgICAgIGl0
LT53aWxsRHJhdyhtX2xheWVyUmVuZGVyZXIuZ2V0KCkpOwotICAgICAgICBwYXNzLT5hcHBlbmRR
dWFkc0ZvckxheWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIpOworCisgICAgICAgIGJvb2wgdXNl
ZENoZWNrZXJib2FyZCA9IGZhbHNlOworICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvckxheWVy
KCppdCwgJm9jY2x1c2lvblRyYWNrZXIsIHVzZWRDaGVja2VyYm9hcmQpOworICAgICAgICBpZiAo
dXNlZENoZWNrZXJib2FyZCkgeworICAgICAgICAgICAgYm9vbCBsYXllckhhc0FuaW1hdGluZ1Ry
YW5zZm9ybSA9IGl0LT5zY3JlZW5TcGFjZVRyYW5zZm9ybUlzQW5pbWF0aW5nKCkgfHwgaXQtPmRy
YXdUcmFuc2Zvcm1Jc0FuaW1hdGluZygpOworICAgICAgICAgICAgaWYgKGxheWVySGFzQW5pbWF0
aW5nVHJhbnNmb3JtKSB7CisgICAgICAgICAgICAgICAgZHJhd0ZyYW1lID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBv
Y2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKCppdCk7CiAgICAgfQogCi0g
ICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5yZWNvcmRNZXRyaWNzKHRoaXMp
OworICAgIGlmIChkcmF3RnJhbWUpCisgICAgICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdN
ZXRyaWNzKCkucmVjb3JkTWV0cmljcyh0aGlzKTsKKyAgICByZXR1cm4gZHJhd0ZyYW1lOwogfQog
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnNSZWN1cnNpdmUoQ0NMYXll
ckltcGwqIGN1cnJlbnQsIGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGlt
ZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqIGV2ZW50cywgYm9vbCYgZGlkQW5pbWF0ZSwgYm9v
bCYgbmVlZHNBbmltYXRlTGF5ZXJzKQpAQCAtMzUyLDI2ICszNzAsMzkgQEAgSW50U2l6ZSBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjb250ZW50U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2Nyb2xs
TGF5ZXJJbXBsLT5jaGlsZHJlbigpWzBdLT5jb250ZW50Qm91bmRzKCk7CiB9CiAKLXZvaWQgQ0NM
YXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycygpCitib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6
OnByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJiBmcmFtZSkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NM
YXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2xh
eWVyUmVuZGVyZXIpOworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVw
YXJlVG9EcmF3IiwgdGhpcywgMCk7CisKKyAgICBmcmFtZS5yZW5kZXJQYXNzZXMuY2xlYXIoKTsK
KyAgICBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmNsZWFyKCk7CiAKICAgICBpZiAoIXJv
b3RMYXllcigpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IENDUmVuZGVyUGFzc0xpc3QgcGFzc2VzOwotICAgIENDTGF5ZXJMaXN0IHJlbmRlclN1cmZhY2VM
YXllckxpc3Q7Ci0gICAgY2FsY3VsYXRlUmVuZGVyUGFzc2VzKHBhc3NlcywgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCk7CisgICAgaWYgKCFjYWxjdWxhdGVSZW5kZXJQYXNzZXMoZnJhbWUucmVuZGVy
UGFzc2VzLCBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSkgeworICAgICAgICBmcmFtZS5y
ZW5kZXJQYXNzZXMuY2xlYXIoKTsKKyAgICAgICAgZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5jbGVhcigpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gSWYgd2Ug
cmV0dXJuIHRydWUsIHRoZW4gd2UgZXhwZWN0IGRyYXdMYXllcnMoKSB0byBiZSBjYWxsZWQgYmVm
b3JlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFnYWluLgorICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJiBm
cmFtZSkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVy
cyIsIHRoaXMsIDApOworICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIpOwogCiAgICAgbV9sYXll
clJlbmRlcmVyLT5iZWdpbkRyYXdpbmdGcmFtZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcGFzc2VzLnNpemUoKTsgKytpKQotICAgICAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdSZW5k
ZXJQYXNzKHBhc3Nlc1tpXS5nZXQoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFt
ZS5yZW5kZXJQYXNzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+ZHJh
d1JlbmRlclBhc3MoZnJhbWUucmVuZGVyUGFzc2VzW2ldLmdldCgpKTsKIAogICAgIHR5cGVkZWYg
Q0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5k
ZXJTdXJmYWNlLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0
ZXJhdG9yVHlwZTsKIAotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJh
dG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAgICBmb3IgKENDTGF5ZXJJ
dGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUg
ZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KTsKKyAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JU
eXBlOjpiZWdpbigmZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytp
dCkgewogICAgICAgICBpZiAoaXQucmVwcmVzZW50c0l0c2VsZigpICYmICFpdC0+dmlzaWJsZUxh
eWVyUmVjdCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGl0LT5kaWREcmF3KCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDMxNDk0NzRjNGI1OGE1YzVk
MGVlNzBiNjNhNjExYWUyZTgyYzEyYzYuLmUwYzZlNzNhMzM0MjBkZDQ3ZDA5NTQyODYyY2I5YTQ4
YTBhZDFjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTYwLDYg
KzYwLDggQEAgcHVibGljOgogLy8gQ0NMYXllclRyZWVIb3N0SW1wbCBvd25zIHRoZSBDQ0xheWVy
SW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2NpYXRlZCByZW5kZXJpbmcgc3RhdGUKIGNsYXNzIEND
TGF5ZXJUcmVlSG9zdEltcGwgOiBwdWJsaWMgQ0NJbnB1dEhhbmRsZXJDbGllbnQsIExheWVyUmVu
ZGVyZXJDaHJvbWl1bUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NMYXllclRy
ZWVIb3N0SW1wbCk7CisgICAgdHlwZWRlZiBWZWN0b3I8Q0NMYXllckltcGwqPiBDQ0xheWVyTGlz
dDsKKwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+
IGNyZWF0ZShjb25zdCBDQ1NldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwog
ICAgIHZpcnR1YWwgfkNDTGF5ZXJUcmVlSG9zdEltcGwoKTsKQEAgLTc3LDExICs3OSwxNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZUdlc3R1cmVBbmltYXRpb24oUGFzc093
blB0cjxDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24+KTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVBbmltYXRpb24oKTsKIAorICAgIHN0cnVjdCBGcmFtZURhdGEgeworICAgICAgICBDQ1JlbmRl
clBhc3NMaXN0IHJlbmRlclBhc3NlczsKKyAgICAgICAgQ0NMYXllckxpc3QgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdDsKKyAgICB9OworCiAgICAgLy8gVmlydHVhbCBmb3IgdGVzdGluZy4KICAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5Db21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxl
dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUgbW9ub3RvbmljVGltZSwgZG91
YmxlIHdhbGxDbG9ja1RpbWUpOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKCk7CisgICAg
dmlydHVhbCBib29sIHByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJik7CisgICAgdmlydHVhbCB2b2lk
IGRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJik7CiAKICAgICAvLyBMYXllclJlbmRlcmVyQ2hy
b21pdW1DbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CkBAIC0xNTEsOCAr
MTU5LDYgQEAgcHJvdGVjdGVkOgogICAgIGludCBtX2ZyYW1lTnVtYmVyOwogCiBwcml2YXRlOgot
ICAgIHR5cGVkZWYgVmVjdG9yPENDTGF5ZXJJbXBsKj4gQ0NMYXllckxpc3Q7Ci0KICAgICB2b2lk
IGNvbXB1dGVEb3VibGVUYXBab29tRGVsdGFzKENDU2Nyb2xsQW5kU2NhbGVTZXQqIHNjcm9sbElu
Zm8pOwogICAgIHZvaWQgY29tcHV0ZVBpbmNoWm9vbURlbHRhcyhDQ1Njcm9sbEFuZFNjYWxlU2V0
KiBzY3JvbGxJbmZvKTsKICAgICB2b2lkIG1ha2VTY3JvbGxBbmRTY2FsZVNldChDQ1Njcm9sbEFu
ZFNjYWxlU2V0KiBzY3JvbGxJbmZvLCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQsIGZsb2F0
IHBhZ2VTY2FsZSk7CkBAIC0xNjIsNyArMTY4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkanVz
dFNjcm9sbHNGb3JQYWdlU2NhbGVDaGFuZ2UoZmxvYXQpOwogICAgIHZvaWQgdXBkYXRlTWF4U2Ny
b2xsUG9zaXRpb24oKTsKICAgICB2b2lkIHRyYWNrRGFtYWdlRm9yQWxsU3VyZmFjZXMoQ0NMYXll
ckltcGwqIHJvb3REcmF3TGF5ZXIsIGNvbnN0IENDTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsKLSAgICB2b2lkIGNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0
JiwgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIC8vIFJldHVybnMg
ZmFsc2UgaWYgdGhlIGZyYW1lIHNob3VsZCBub3QgYmUgZGlzcGxheWVkLgorICAgIGJvb2wgY2Fs
Y3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmLCBDQ0xheWVyTGlzdCYgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCk7CiAgICAgdm9pZCBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKENDTGF5
ZXJJbXBsKiwgZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lLCBDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3RvciosIGJvb2wmIGRpZEFuaW1hdGUsIGJvb2wmIG5lZWRzQW5pbWF0
ZUxheWVycyk7CiAgICAgSW50U2l6ZSBjb250ZW50U2l6ZSgpIGNvbnN0OwogICAgIHZvaWQgc2Vu
ZERpZExvc2VDb250ZXh0UmVjdXJzaXZlKENDTGF5ZXJJbXBsKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3Vs
bGVyLmNwcAppbmRleCBmMmE4NTg3MTcwYzNiYTVhZTIyZTFiMzg4ZjNmODgyNmQwZWZkM2FjLi4z
NWQxOTQ2MTc3OTU5MmZlYjRlZjg0NzFiMzhmZTBkNWVmOWM4NDQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVh
ZEN1bGxlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQ0NRdWFkQ3VsbGVyOjpDQ1F1YWRDdWxsZXIo
Q0NRdWFkTGlzdCYgcXVhZExpc3QsIENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2NsdXNpb24KIHsK
IH0KIAotdm9pZCBDQ1F1YWRDdWxsZXI6OmFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBh
c3NEcmF3UXVhZCkKK2Jvb2wgQ0NRdWFkQ3VsbGVyOjphcHBlbmQoUGFzc093blB0cjxDQ0RyYXdR
dWFkPiBwYXNzRHJhd1F1YWQpCiB7CiAgICAgT3duUHRyPENDRHJhd1F1YWQ+IGRyYXdRdWFkKHBh
c3NEcmF3UXVhZCk7CiAgICAgSW50UmVjdCBjdWxsZWRSZWN0ID0gbV9vY2NsdXNpb25UcmFja2Vy
LT51bm9jY2x1ZGVkQ29udGVudFJlY3QobV9sYXllciwgZHJhd1F1YWQtPnF1YWRSZWN0KCkpOwpA
QCAtNjEsNiArNjEsNyBAQCB2b2lkIENDUXVhZEN1bGxlcjo6YXBwZW5kKFBhc3NPd25QdHI8Q0NE
cmF3UXVhZD4gcGFzc0RyYXdRdWFkKQogICAgIC8vIFJlbGVhc2UgdGhlIHF1YWQgYWZ0ZXIgd2Un
cmUgZG9uZSB1c2luZyBpdC4KICAgICBpZiAoa2VlcFF1YWQpCiAgICAgICAgIG1fcXVhZExpc3Qu
YXBwZW5kKGRyYXdRdWFkLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIGtlZXBRdWFkOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oCmluZGV4IDFmNGI5MjA1
NjJhZTk1YzU2ZGY3MDY5M2Q4YjljMTcwOGZjOTk3MjAuLjM0MzViNzJmNWQzNTAzYjllOTllNTBm
ODI0ODgyNmMxYzk4ZWUwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oCkBAIC0zOCw3ICszOCw4
IEBAIHB1YmxpYzoKICAgICAvLyBkb25lIHRvIGVzdGltYXRlIG92ZXIgZHJhdyBzdGF0aXN0aWNz
LgogICAgIENDUXVhZEN1bGxlcihDQ1F1YWRMaXN0JiwgQ0NMYXllckltcGwqLCBDQ09jY2x1c2lv
blRyYWNrZXJJbXBsKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKFBhc3NPd25QdHI8Q0NE
cmF3UXVhZD4gcGFzc0RyYXdRdWFkKTsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHF1YWQg
aXMgYWRkZWQgdG8gdGhlIGxpc3QsIGFuZCBmYWxzZSBpZiB0aGUgcXVhZCBpcyBlbnRpcmVseSBj
dWxsZWQuCisgICAgdmlydHVhbCBib29sIGFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBh
c3NEcmF3UXVhZCk7CiAKIHByaXZhdGU6CiAgICAgQ0NRdWFkTGlzdCYgbV9xdWFkTGlzdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3MuY3BwCmluZGV4IGExMmJmYmI1OWY0YTdiOTM5NjNkMjQzNGVjNjBj
YmU4NTAwNTYzNGEuLmNmNDdiNmNiODdhNDM3NjAyMTAzMDdkY2RmOTA2OTA3MWU0YTRlMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBAIENDUmVuZGVyUGFz
czo6Q0NSZW5kZXJQYXNzKENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3VyZmFjZSkKICAgICBBU1NF
UlQobV90YXJnZXRTdXJmYWNlKTsKIH0KIAotdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRz
Rm9yTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2Ns
dXNpb25UcmFja2VyKQordm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NM
YXllckltcGwqIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2Vy
LCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKQogewogICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVy
KG1fcXVhZExpc3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2VyKTsKIAogICAgIE93blB0cjxDQ1No
YXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRT
dGF0ZSgpOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3Rh
dGUuZ2V0KCkpOworICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFk
U3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwogICAgIGxheWVyLT5hcHBlbmREZWJ1Z0Jv
cmRlclF1YWQocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKICAgICBtX3NoYXJl
ZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3MuaAppbmRleCBhYzhkYmMxYTBkMjZhODQ3NjY1N2ZiNjcyYzJmMTVhYWIy
NGM4ZWUxLi41OTkwMWM4YzU4Y2YzNzZhMGMxZjBjYzA5YzU3OGVlMDRkMzE2MmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3MuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDQ1JlbmRlclBhc3Mgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKENDUmVu
ZGVyU3VyZmFjZSopOwogCi0gICAgdm9pZCBhcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBs
KiwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCopOworICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JMYXll
cihDQ0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tlckltcGwqLCBib29sJiB1c2VkQ2hlY2tl
cmJvYXJkKTsKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5
ZXJJbXBsKik7CiAKICAgICBjb25zdCBDQ1F1YWRMaXN0JiBxdWFkTGlzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcXVhZExpc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNw
cAppbmRleCA0MzdmNGY3NzZkOGIwN2Q1YjlhZmNkMWMwYzUwM2RkOGM4OTE0MmE1Li4xNTIwNjVk
MDhlMTExZDlhZTFjZGI1ZmQ2MzMxZTgxOTQwMTBjNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgQ0NTY3JvbGxiYXJM
YXllckltcGw6OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikK
ICAgICB9CiB9CiAKLXZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVh
ZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUpCit2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXIm
IHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29s
JikKIHsKICAgICBpZiAoIW1fdGV4dHVyZS0+aXNSZXNlcnZlZCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njcm9sbGJhckxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaAppbmRleCBmY2VjMTEwZTI0MTgz
MWJkYjIxZjg2NzJiYmQwYzczNzIxMWQzZmNjLi5iMDNlNDUxZWIzOTIzNTAxYzJlNjUzOWZkY2Fj
NmY0Nzg1YTljNzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKQEAg
LTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoQ0NMYXllcklt
cGwqIHNjcm9sbExheWVyKSB7IG1fc2Nyb2xsTGF5ZXIgPSBzY3JvbGxMYXllcjsgfQogCiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwotICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSopOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWREcmF3KCk7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKaW5kZXggYjZmYzc2YjUyZThiZGY0ZmVhOTc1NTBhMjE2ZWYxMzJmZjdiNWJm
NS4uNjA3YjM4YWY3YTIyY2M3NzRmZjZhMTcyNzkzZDNkZTU5ZTQwMzY4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI5OCw3ICsyOTgsOSBAQCBib29sIEND
U2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKCkKICAgICAgIGRvdWJsZSB3YWxsQ2xvY2tU
aW1lID0gY3VycmVudFRpbWUoKTsKIAogICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0
ZShtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lKTsKLSAgICAgIG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmRyYXdMYXllcnMoKTsKKyAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBm
cmFtZTsKKyAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpOwor
ICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgfQogCiAg
ICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmlzQ29udGV4dExvc3QoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENv
bG9yTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAKaW5kZXggYmY2NzBlY2M4OWUxYjBmYTE3
ZmVlNzYwMzgzOWVjMjdjYmZkNDkxNy4uNmFlM2ExNzI5OGU5YzZjMzE4MjdhZDY5ZWFiNDZiOWU4
ZWQzZTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IENDU29saWRDb2xvckxheWVySW1w
bDo6cXVhZFRyYW5zZm9ybSgpIGNvbnN0CiAgICAgcmV0dXJuIHNvbGlkQ29sb3JUcmFuc2Zvcm07
CiB9CiAKLXZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxs
ZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQor
dm9pZCBDQ1NvbGlkQ29sb3JMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVh
ZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQog
ewogICAgIC8vIFdlIGNyZWF0ZSBhIHNlcmllcyBvZiBzbWFsbGVyIHF1YWRzIGluc3RlYWQgb2Yg
anVzdCBvbmUgbGFyZ2Ugb25lIHNvIHRoYXQgdGhlCiAgICAgLy8gY3VsbGVyIGNhbiByZWR1Y2Ug
dGhlIHRvdGFsIHBpeGVscyBkcmF3bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJ
bXBsLmgKaW5kZXggN2QwNzY3MzhjZjNhMGNjY2M5ODJiNDIyZWFiZDhkYTAwYjAxYmViYS4uMTBj
NmFkZTNmNDczYjU0ZGJiYTc5MDQ1M2YyYzBkZThhNWI2YWNlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfkNDU29saWRDb2xvckxheWVySW1wbCgpOwogCiAgICAgdmlydHVhbCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBxdWFkVHJhbnNmb3JtKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVu
ZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKik7CisgICAgdmly
dHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiwgYm9vbCYgdXNlZENoZWNrZXJib2FyZCk7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNp
dCBDQ1NvbGlkQ29sb3JMYXllckltcGwoaW50IGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVM
YXllckltcGwuY3BwCmluZGV4IGUwNmY3MmY2ZjI0OWI2MWM3MWFhM2RhZDMzNjQzMWE4YjJlNjJi
M2MuLjEyY2JhYjYyNTcwNjY3Yzg4ZGM4NzcwOTY2ODgzMjM4OGMyNGY5NGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxh
eWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIENDVGV4
dHVyZUxheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyKQogICAgIH0KIH0KIAotdm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKEND
UXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUpCit2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVy
JiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9v
bCYpCiB7CiAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBib3VuZHMoKSk7CiAgICAg
cXVhZExpc3QuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCBxdWFkUmVjdCwgbV90ZXh0dXJlSWQsIG1faGFzQWxwaGEsIG1fcHJlbXVsdGlwbGllZEFscGhh
LCBtX3V2UmVjdCwgbV9mbGlwcGVkLCBtX2lvU3VyZmFjZVNpemUsIG1faW9TdXJmYWNlVGV4dHVy
ZUlkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCmluZGV4IGE4MWMzNjE2YWVk
YjY0NWEyMWE3MzUwYjkxYmQ5M2Q2MDdmOGJjNzIuLjkyZDFhOTBiOWZmY2Q1NDgyMTFiYzhjNjUx
OTYxY2RhYjM2N2M5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCkBAIC00
MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NUZXh0dXJlTGF5ZXJJ
bXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NR
dWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hlY2tlcmJv
YXJkKTsKIAogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBG
cmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+IFByb2dyYW1GbGlwOwogICAgIHR5cGVkZWYg
UHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4U3RyZXRjaCwgRnJhZ21lbnRTaGFkZXJS
R0JBVGV4QWxwaGE+IFByb2dyYW1TdHJldGNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApp
bmRleCBkNTQ4OGYyYzcxZDljYjUwYTMxNzViMWFkNzdlMGE3ZGM1ZDRkNTIwLi5kODVlYzQzYzM4
NTNhNDQ5MGQzODZlNGY3ZjgyN2Q0ZmIzZGMzNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcApAQCAtNTU1LDcgKzU1NSw5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXAoKQogCiAgICAgbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQtPmFuaW1h
dGUobW9ub3RvbmljVGltZSk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25v
dG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lKTsKLSAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3
TGF5ZXJzKCk7CisgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpOworICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogCiAgICAgLy8gQ2hlY2sgZm9yIGEgcGVu
ZGluZyBjb21wb3NpdGVBbmRSZWFkYmFjay4KICAgICBpZiAobV9yZWFkYmFja1JlcXVlc3RPbklt
cGxUaHJlYWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggYTE4Nzdi
OTg3YWY2NWVjZjcxNThiODcyODVlNmQ4ODA5YWE1N2ZlNC4uM2Y3YjBiM2FjMjE5YTc2MDc3NWE1
ZWJmMDAxOGRmZDg5NDIzNzc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAK
QEAgLTEyMyw3ICsxMjMsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBDQ1RpbGVkTGF5ZXJJbXBs
OjpxdWFkVHJhbnNmb3JtKCkgY29uc3QKICAgICByZXR1cm4gdHJhbnNmb3JtOwogfQogCi12b2lk
IENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCit2b2lkIENDVGlsZWRMYXll
ckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpCiB7CiAg
ICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOwogCkBAIC0x
NDksNyArMTQ5LDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRD
dWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGEKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAgICAgaWYgKCF0aWxlIHx8ICF0aWxlLT50ZXh0dXJlSWQoKSkg
ewotICAgICAgICAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6
Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIGJhY2tncm91bmRDb2xvcigpKSk7Cisg
ICAgICAgICAgICAgICAgdXNlZENoZWNrZXJib2FyZCB8PSBxdWFkTGlzdC5hcHBlbmQoQ0NTb2xp
ZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCBiYWNrZ3Jv
dW5kQ29sb3IoKSkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggMGJlNjU3NzQzOGMwMDM2MzE3NDRi
Nzc3MzVjYTY5YWQyODM4NTRhZC4uMzBhNGFhNjM4ZmFlMjhhYjhiOTBmZDUxMGQ0ZGY4ZWNjZGM4
YWViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNDMsNyArNDMsNyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVGlsZWRMYXllckltcGwoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSopOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOwogCiAgICAgdmly
dHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVmlkZW9MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKaW5kZXggYjVhYTNlMTcxNTBmZTA1NGY3
M2U1MWVmMDAyYTZmZGFiZjdmYzY0Ny4uYTU2Y2Y1ODkxM2Q1NGQ2MmVmOGMzNDAxNmU4MDdiYTg2
YTg0MTliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKQEAgLTE1NCw3ICsx
NTQsNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJv
bWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICB9CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSkKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMo
Q0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggNGZiNDVlYmQ5NzBmYjNmOWM5MzllOTBi
NjllMDRjZGJkYTBhZGQyZi4uZGRiMjc5YzgzYWZlZmQ4N2RmMzY2NzYxZTExY2U2YTg5ZjdhZTNh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+Q0NWaWRlb0xheWVySW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwotICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopOworICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3
KCk7CiAKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5z
Zm9ybSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhPiBSR0JBUHJvZ3JhbTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9u
LmNwcAppbmRleCBjMjJlNDMyMmI5MTc4NGY4MjFhY2MyMmQ3ZDYxNjM2ZGU1NjVhODlmLi4wYWE3
Y2U2NDg4OGYwOGQxOTIwM2YyYjFlYzYwZmY3MjI1MmE1N2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uY3BwCkBAIC0y
OCw3ICsyOCw5IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiTGF5
ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiY2Mv
Q0NMYXllckltcGwuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTUwLDYgKzUy
LDI0IEBAIHZvaWQgYWRkT3BhY2l0eVRyYW5zaXRpb24oVGFyZ2V0JiB0YXJnZXQsIGRvdWJsZSBk
dXJhdGlvbiwgZmxvYXQgc3RhcnRPcGFjaXR5LCBmCiAgICAgdGFyZ2V0LmFkZEFuaW1hdGlvbih2
YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlvbi5nZXQoKSwgMCwgMCwgMCk7CiB9CiAKK3RlbXBsYXRl
IDxjbGFzcyBUYXJnZXQ+Cit2b2lkIGFkZEFuaW1hdGVkVHJhbnNmb3JtKFRhcmdldCYgdGFyZ2V0
LCBkb3VibGUgZHVyYXRpb24sIGludCBkZWx0YVgsIGludCBkZWx0YVkpCit7CisgICAgc3RhdGlj
IGludCBpZCA9IDA7CisgICAgV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QgdmFsdWVzKEFuaW1h
dGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOworCisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBv
cGVyYXRpb25zOworICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoZGVsdGFYLCBGaXhlZCksIExlbmd0aChk
ZWx0YVksIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOworICAgIHZh
bHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZvcGVyYXRpb25zKSk7
CisKKyAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgp
OworICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24pOworCisgICAgSW50U2l6ZSBi
b3hTaXplOworCisgICAgdGFyZ2V0LmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1h
dGlvbi5nZXQoKSwgKytpZCwgMCwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKIG5hbWVzcGFj
ZSBXZWJLaXRUZXN0cyB7CkBAIC0xMzAsNCArMTUwLDE5IEBAIHZvaWQgYWRkT3BhY2l0eVRyYW5z
aXRpb25Ub0xheWVyKFdlYkNvcmU6OkxheWVyQ2hyb21pdW0mIGxheWVyLCBkb3VibGUgZHVyYXRp
b24sCiAgICAgYWRkT3BhY2l0eVRyYW5zaXRpb24obGF5ZXIsIGR1cmF0aW9uLCBzdGFydE9wYWNp
dHksIGVuZE9wYWNpdHkpOwogfQogCit2b2lkIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9MYXllcihX
ZWJDb3JlOjpDQ0xheWVySW1wbCYgbGF5ZXIsIGRvdWJsZSBkdXJhdGlvbiwgZmxvYXQgc3RhcnRP
cGFjaXR5LCBmbG9hdCBlbmRPcGFjaXR5KQoreworICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uKCps
YXllci5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSwgZHVyYXRpb24sIHN0YXJ0T3BhY2l0eSwg
ZW5kT3BhY2l0eSk7Cit9CisKK3ZvaWQgYWRkQW5pbWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKFdlYkNv
cmU6OkxheWVyQ2hyb21pdW0mIGxheWVyLCBkb3VibGUgZHVyYXRpb24sIGludCBkZWx0YVgsIGlu
dCBkZWx0YVkpCit7CisgICAgYWRkQW5pbWF0ZWRUcmFuc2Zvcm0obGF5ZXIsIGR1cmF0aW9uLCBk
ZWx0YVgsIGRlbHRhWSk7Cit9CisKK3ZvaWQgYWRkQW5pbWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKFdl
YkNvcmU6OkNDTGF5ZXJJbXBsJiBsYXllciwgZG91YmxlIGR1cmF0aW9uLCBpbnQgZGVsdGFYLCBp
bnQgZGVsdGFZKQoreworICAgIGFkZEFuaW1hdGVkVHJhbnNmb3JtKCpsYXllci5sYXllckFuaW1h
dGlvbkNvbnRyb2xsZXIoKSwgZHVyYXRpb24sIGRlbHRhWCwgZGVsdGFZKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0VGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5oCmluZGV4IDE0NjQxNGUzMDFiYTQ4NzE2ZmE0NzA4
NGUzZTE0MmExOGJlNGU2M2QuLmQ5MzAzNDIwMzQwZDc4NmQzNTAzNjI5YmYxNGEzY2IzYzdmYzg3
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25U
ZXN0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlv
blRlc3RDb21tb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBMYXllckNo
cm9taXVtOwogfQogCkBAIC05OCw2ICs5OSwxMCBAQCBwcml2YXRlOgogdm9pZCBhZGRPcGFjaXR5
VHJhbnNpdGlvblRvQ29udHJvbGxlcihXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ciYsIGRvdWJsZSBkdXJhdGlvbiwgZmxvYXQgc3RhcnRPcGFjaXR5LCBmbG9hdCBlbmRPcGFjaXR5
KTsKIAogdm9pZCBhZGRPcGFjaXR5VHJhbnNpdGlvblRvTGF5ZXIoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bSYsIGRvdWJsZSBkdXJhdGlvbiwgZmxvYXQgc3RhcnRPcGFjaXR5LCBmbG9hdCBlbmRPcGFj
aXR5KTsKK3ZvaWQgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xheWVyKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsJiwgZG91YmxlIGR1cmF0aW9uLCBmbG9hdCBzdGFydE9wYWNpdHksIGZsb2F0IGVuZE9wYWNp
dHkpOworCit2b2lkIGFkZEFuaW1hdGVkVHJhbnNmb3JtVG9MYXllcihXZWJDb3JlOjpMYXllckNo
cm9taXVtJiwgZG91YmxlIGR1cmF0aW9uLCBpbnQgZGVsdGFYLCBpbnQgZGVsdGFZKTsKK3ZvaWQg
YWRkQW5pbWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKFdlYkNvcmU6OkNDTGF5ZXJJbXBsJiwgZG91Ymxl
IGR1cmF0aW9uLCBpbnQgZGVsdGFYLCBpbnQgZGVsdGFZKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0VGVzdHMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBhMTkyYmE1NTdiZjBlYTE2YzIxZTRjMDQy
NDJjYjI1ZDA5MGExNzYzLi40NGRjZDE0MjQyZjUzMTBmYWNmZmZmNzRhNzhhYzdjMmUzY2VhOGFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oIgogCisjaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgi
CiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgi
CkBAIC0zNiw2ICszNyw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXRUZXN0czsKIAogbmFtZXNwYWNl
IHsKIApAQCAtMjUwLDcgKzI1Miw5IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
bm9uRmFzdFNjcm9sbGFibGVSZWdpb25XaXRoT2Zmc2V0KQogICAgIHJvb3QtPnNldE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uKEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgcm9vdC0+c2V0UG9z
aXRpb24oRmxvYXRQb2ludCgtMjUsIDApKTsKICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIo
cm9vdC5yZWxlYXNlKCkpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsgLy8gVXBkYXRl
IGRyYXcgdHJhbnNmb3JtcyBzbyB3ZSBjYW4gY29ycmVjdGx5IG1hcCBwb2ludHMgaW50byBsYXll
ciBzcGFjZS4KKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAg
RVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9z
dEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOyAvLyBVcGRhdGUgZHJhdyB0cmFuc2Zvcm1zIHNvIHdl
IGNhbiBjb3JyZWN0bHkgbWFwIHBvaW50cyBpbnRvIGxheWVyIHNwYWNlLgogCiAgICAgLy8gVGhp
cyBwb2ludCB3b3VsZCBmYWxsIGludG8gdGhlIG5vbi1mYXN0IHNjcm9sbGFibGUgcmVnaW9uIGV4
Y2VwdCB0aGF0IHdlJ3ZlIG1vdmVkIHRoZSBsYXllciBkb3duIGJ5IDI1IHBpeGVscy4KICAgICBF
WFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoNDAsIDEwKSwgQ0NJbnB1
dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0
ZWQpOwpAQCAtMzkwLDcgKzM5NCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
cGFnZVNjYWxlQW5pbWF0aW9uKQogICAgIH0KIH0KIAotY2xhc3MgRGlkRHJhd0NoZWNrTGF5ZXIg
OiBwdWJsaWMgQ0NMYXllckltcGwgeworY2xhc3MgRGlkRHJhd0NoZWNrTGF5ZXIgOiBwdWJsaWMg
Q0NUaWxlZExheWVySW1wbCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8RGlkRHJh
d0NoZWNrTGF5ZXI+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBEaWREcmF3
Q2hlY2tMYXllcihpZCkpOyB9CiAKQEAgLTQwNyw5ICs0MTEsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBkaWREcmF3Q2FsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaWREcmF3Q2FsbGVkOyB9CiAgICAg
Ym9vbCB3aWxsRHJhd0NhbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbERyYXdDYWxsZWQ7IH0K
IAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBsaWNpdCBEaWREcmF3Q2hlY2tMYXllcihp
bnQgaWQpCi0gICAgICAgIDogQ0NMYXllckltcGwoaWQpCisgICAgICAgIDogQ0NUaWxlZExheWVy
SW1wbChpZCkKICAgICAgICAgLCBtX2RpZERyYXdDYWxsZWQoZmFsc2UpCiAgICAgICAgICwgbV93
aWxsRHJhd0NhbGxlZChmYWxzZSkKICAgICB7CkBAIC00MTgsNiArNDIyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgc2V0RHJhd3NDb250ZW50KHRydWUpOwogICAgIH0KIAorcHJpdmF0ZToKICAgICBi
b29sIG1fZGlkRHJhd0NhbGxlZDsKICAgICBib29sIG1fd2lsbERyYXdDYWxsZWQ7CiB9OwpAQCAt
NDMyLDEwICs0MzcsMTMgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3
Tm90Q2FsbGVkT25IaWRkZW5MYXllcikKICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlk
RHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CiAgICAgRGlkRHJhd0NoZWNrTGF5ZXIqIHJvb3Qg
PSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigp
KTsKIAorICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKwogICAgIEVY
UEVDVF9GQUxTRShyb290LT53aWxsRHJhd0NhbGxlZCgpKTsKICAgICBFWFBFQ1RfRkFMU0Uocm9v
dC0+ZGlkRHJhd0NhbGxlZCgpKTsKIAotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAg
ICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9o
b3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAKICAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+d2ls
bERyYXdDYWxsZWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmRpZERyYXdDYWxsZWQoKSk7
CkBAIC00NDgsNyArNDU2LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWRE
cmF3Tm90Q2FsbGVkT25IaWRkZW5MYXllcikKICAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+d2lsbERy
YXdDYWxsZWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmRpZERyYXdDYWxsZWQoKSk7CiAK
LSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1w
bC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJh
bWUpOwogCiAgICAgRVhQRUNUX1RSVUUocm9vdC0+d2lsbERyYXdDYWxsZWQoKSk7CiAgICAgRVhQ
RUNUX1RSVUUocm9vdC0+ZGlkRHJhd0NhbGxlZCgpKTsKQEAgLTQ3Nyw3ICs0ODYsOSBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdDYWxsZWRPbkFsbExheWVycykKICAg
ICBFWFBFQ1RfRkFMU0UobGF5ZXIxLT5kaWREcmF3Q2FsbGVkKCkpOwogICAgIEVYUEVDVF9GQUxT
RShsYXllcjItPmRpZERyYXdDYWxsZWQoKSk7CiAKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KCk7CisgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgIEVYUEVD
VF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBs
LT5kcmF3TGF5ZXJzKGZyYW1lKTsKIAogICAgIEVYUEVDVF9UUlVFKHJvb3QtPmRpZERyYXdDYWxs
ZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5kaWREcmF3Q2FsbGVkKCkpOwpAQCAtNDg3
LDYgKzQ5OCw2OCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdDYWxs
ZWRPbkFsbExheWVycykKICAgICBFWFBFQ1RfVFJVRSghIWxheWVyMS0+cmVuZGVyU3VyZmFjZSgp
KTsKIH0KIAorY2xhc3MgTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllciA6IHB1YmxpYyBEaWRE
cmF3Q2hlY2tMYXllciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8TWlzc2luZ1Rl
eHR1cmVBbmltYXRpbmdMYXllcj4gY3JlYXRlKGludCBpZCwgYm9vbCB0aWxlTWlzc2luZywgYm9v
bCBza2lwc0RyYXcsIGJvb2wgYW5pbWF0aW5nKSB7IHJldHVybiBhZG9wdFB0cihuZXcgTWlzc2lu
Z1RleHR1cmVBbmltYXRpbmdMYXllcihpZCwgdGlsZU1pc3NpbmcsIHNraXBzRHJhdywgYW5pbWF0
aW5nKSk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNaXNzaW5nVGV4dHVyZUFuaW1hdGlu
Z0xheWVyKGludCBpZCwgYm9vbCB0aWxlTWlzc2luZywgYm9vbCBza2lwc0RyYXcsIGJvb2wgYW5p
bWF0aW5nKQorICAgICAgICA6IERpZERyYXdDaGVja0xheWVyKGlkKQorICAgIHsKKyAgICAgICAg
T3duUHRyPENDTGF5ZXJUaWxpbmdEYXRhPiB0aWxpbmdEYXRhID0gQ0NMYXllclRpbGluZ0RhdGE6
OmNyZWF0ZShJbnRTaXplKDEwLCAxMCksIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVs
cyk7CisgICAgICAgIHRpbGluZ0RhdGEtPnNldEJvdW5kcyhib3VuZHMoKSk7CisgICAgICAgIHNl
dFRpbGluZ0RhdGEoKnRpbGluZ0RhdGEuZ2V0KCkpOworICAgICAgICBzZXRTa2lwc0RyYXcoc2tp
cHNEcmF3KTsKKyAgICAgICAgaWYgKCF0aWxlTWlzc2luZykKKyAgICAgICAgICAgIHB1c2hUaWxl
UHJvcGVydGllcygwLCAwLCAxLCBJbnRSZWN0KCkpOworICAgICAgICBpZiAoYW5pbWF0aW5nKQor
ICAgICAgICAgICAgYWRkQW5pbWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKCp0aGlzLCAxMCwgMywgMCk7
CisgICAgfQorfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9E
cmF3RmFpbHNXaGVuQW5pbWF0aW9uVXNlc0NoZWNrZXJib2FyZCkKK3sKKyAgICBtX2hvc3RJbXBs
LT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOworICAgIG1faG9zdElt
cGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOworCisgICAgLy8gV2hlbiB0aGUg
dGV4dHVyZSBpcyBub3QgbWlzc2luZywgd2UgZHJhdyBhcyB1c3VhbC4KKyAgICBtX2hvc3RJbXBs
LT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CisgICAgRGlkRHJh
d0NoZWNrTGF5ZXIqIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9z
dEltcGwtPnJvb3RMYXllcigpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFu
aW1hdGluZ0xheWVyOjpjcmVhdGUoMSwgZmFsc2UsIGZhbHNlLCB0cnVlKSk7CisgICAgRGlkRHJh
d0NoZWNrTGF5ZXIqIGxheWVyID0gc3RhdGljX2Nhc3Q8TWlzc2luZ1RleHR1cmVBbmltYXRpbmdM
YXllcio+KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOworCisgICAgQ0NMYXllclRyZWVIb3N0
SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworCisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJl
cGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwor
CisgICAgLy8gV2hlbiBhIHRleHR1cmUgaXMgbWlzc2luZyBhbmQgd2UncmUgbm90IGFuaW1hdGlu
Zywgd2UgZHJhdyBhcyB1c3VhbCB3aXRoIGNoZWNrZXJib2FyZGluZy4KKyAgICBtX2hvc3RJbXBs
LT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CisgICAgcm9vdCA9
IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkp
OworICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0
ZSgxLCB0cnVlLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBsYXllciA9IHN0YXRpY19jYXN0PE1pc3Np
bmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIqPihyb290LT5jaGlsZHJlbigpWzBdLmdldCgpKTsKKwor
ICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBt
X2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKworICAgIC8vIFdoZW4gYSB0ZXh0dXJlIGlz
IG1pc3NpbmcgYW5kIHdlJ3JlIGFuaW1hdGluZywgd2UgZG9uJ3QgZHJhdyBhbnl0aGluZy4KKyAg
ICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7
CisgICAgcm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+
cm9vdExheWVyKCkpOworICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5n
TGF5ZXI6OmNyZWF0ZSgxLCB0cnVlLCBmYWxzZSwgdHJ1ZSkpOworICAgIGxheWVyID0gc3RhdGlj
X2Nhc3Q8TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcio+KHJvb3QtPmNoaWxkcmVuKClbMF0u
Z2V0KCkpOworCisgICAgRVhQRUNUX0ZBTFNFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJh
bWUpKTsKKworICAgIC8vIFdoZW4gdGhlIGxheWVyIHNraXBzIGRyYXcgYW5kIHdlJ3JlIGFuaW1h
dGluZywgd2Ugc3RpbGwgZHJhdyB0aGUgZnJhbWUuCisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExh
eWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCkpOworICAgIHJvb3QgPSBzdGF0aWNfY2Fz
dDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKKyAgICByb290
LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMSwgZmFsc2Us
IHRydWUsIHRydWUpKTsKKyAgICBsYXllciA9IHN0YXRpY19jYXN0PE1pc3NpbmdUZXh0dXJlQW5p
bWF0aW5nTGF5ZXIqPihyb290LT5jaGlsZHJlbigpWzBdLmdldCgpKTsKKworICAgIEVYUEVDVF9U
UlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5k
cmF3TGF5ZXJzKGZyYW1lKTsKK30KKwogY2xhc3MgQmxlbmRTdGF0ZVRyYWNrZXJDb250ZXh0OiBw
dWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKIHB1YmxpYzoKICAgICBCbGVuZFN0YXRl
VHJhY2tlckNvbnRleHQoKSA6IG1fYmxlbmQoZmFsc2UpIHsgfQpAQCAtNTEzLDcgKzU4Niw3IEBA
IGNsYXNzIEJsZW5kU3RhdGVDaGVja0xheWVyIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc093blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gY3JlYXRlKGlu
dCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IEJsZW5kU3RhdGVDaGVja0xheWVyKGlkKSk7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQorICAgIHZpcnR1YWwgdm9p
ZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKICAgICB7CiAgICAgICAgIG1fcXVhZHNBcHBl
bmRlZCA9IHRydWU7CiAKQEAgLTU4NCwyNSArNjU3LDMwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICByb290
LT5hZGRDaGlsZChCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsKICAgICBCbGVuZFN0
YXRlQ2hlY2tMYXllciogbGF5ZXIxID0gc3RhdGljX2Nhc3Q8QmxlbmRTdGF0ZUNoZWNrTGF5ZXIq
Pihyb290LT5jaGlsZHJlbigpWzBdLmdldCgpKTsKIAorICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6
OkZyYW1lRGF0YSBmcmFtZTsKKwogICAgIC8vIE9wYXF1ZSBsYXllciwgZHJhd24gd2l0aG91dCBi
bGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKICAgICBsYXllcjEtPnNldE9w
YXF1ZUNvbnRlbnRzKHRydWUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZh
bHNlKTsKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobV9o
b3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXll
cnMoZnJhbWUpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKIAog
ICAgIC8vIExheWVyIHdpdGggdHJhbnNsdWNlbnQgY29udGVudCwgYnV0IG9wYXF1ZSBjb250ZW50
LCBzbyBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNl
KTsKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRzKHRydWUpOwogICAgIGxheWVyMS0+c2V0
RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7
CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAg
IG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+
cXVhZHNBcHBlbmRlZCgpKTsKIAogICAgIC8vIExheWVyIHdpdGggdHJhbnNsdWNlbnQgY29udGVu
dCBhbmQgcGFpbnRpbmcsIHNvIGRyYXduIHdpdGggYmxlbmRpbmcuCiAgICAgbGF5ZXIxLT5zZXRP
cGFxdWUoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudHMoZmFsc2UpOwogICAg
IGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRy
YXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZy
YW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RS
VUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCiAgICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1
Y2VudCBvcGFjaXR5LCBkcmF3biB3aXRoIGJsZW5kaW5nLgpAQCAtNjEwLDcgKzY4OCw4IEBAIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1
ZUxheWVycykKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRzKHRydWUpOwogICAgIGxheWVy
MS0+c2V0T3BhY2l0eSgwLjUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFs
c2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hv
c3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVy
cyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCiAg
ICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5IGFuZCBwYWludGluZywgZHJhd24g
d2l0aCBibGVuZGluZy4KQEAgLTYxOCw3ICs2OTcsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5ZXIx
LT5zZXRPcGFxdWVDb250ZW50cyhmYWxzZSk7CiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDAuNSk7
CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7Ci0gICAgbV9ob3N0SW1w
bC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0Ry
YXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBFWFBF
Q1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAKICAgICBsYXllcjEtPmFkZENoaWxk
KEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUoMikpOwpAQCAtNjMzLDcgKzcxMyw4IEBAIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1
ZUxheWVycykKICAgICBsYXllcjItPnNldE9wYXF1ZUNvbnRlbnRzKHRydWUpOwogICAgIGxheWVy
Mi0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxz
ZSk7Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1faG9z
dEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KGZyYW1lKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAgICAg
RVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogCkBAIC02NDMsNyArNzI0LDgg
QEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5n
T3BhcXVlTGF5ZXJzKQogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudHMoZmFsc2UpOwogICAg
IGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIGxheWVyMi0+c2V0RXhw
ZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7Cisg
ICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1f
aG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVh
ZHNBcHBlbmRlZCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7
CiAKQEAgLTY1Myw3ICs3MzUsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJs
ZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWVD
b250ZW50cyh0cnVlKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7
CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwotICAgIG1faG9zdElt
cGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9E
cmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQ
RUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVy
Mi0+cXVhZHNBcHBlbmRlZCgpKTsKIApAQCAtNjY3LDcgKzc1MCw4IEBAIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAg
ICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZh
bHNlLCB0cnVlKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7Ci0g
ICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwt
PnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1l
KTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAgICAgRVhQRUNU
X1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogCkBAIC02ODEsNyArNzY1LDggQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVl
TGF5ZXJzKQogICAgIGxheWVyMi0+c2V0T3BhcXVlQ29udGVudHModHJ1ZSk7CiAgICAgbGF5ZXIy
LT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxz
ZSk7Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1faG9z
dEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KGZyYW1lKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAgICAg
RVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogCkBAIC02OTMsNyArNzc4LDgg
QEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5n
T3BhcXVlTGF5ZXJzKQogICAgIGxheWVyMi0+c2V0T3BhcXVlQ29udGVudHMoZmFsc2UpOwogICAg
IGxheWVyMi0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKHRydWUs
IGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUo
bV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdM
YXllcnMoZnJhbWUpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsK
ICAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7CiAKQEAgLTcwNSw3ICs3
OTEsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRy
YXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5ZXIyLT5zZXRPcGFxdWVDb250ZW50cyh0cnVlKTsK
ICAgICBsYXllcjItPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihm
YWxzZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1Rf
VFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+
ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVk
KCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKIApAQCAtNzE2
LDcgKzgwMyw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZX
aGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRzKGZh
bHNlKTsKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRSZWN0KEludFJlY3QoNSwgNSwgMiwg
NSkpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwotICAgIG1faG9z
dEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJl
VG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAg
RVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCiAgICAgLy8gTGF5ZXIgd2l0
aCBwYXJ0aWFsbHkgb3BhcXVlIGNvbnRlbnRzIHBhcnRpYWxseSBjdWxsZWQsIGRyYXduIHdpdGgg
YmxlbmRpbmcuCkBAIC03MjYsNyArODE0LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIGxheWVyMS0+c2V0
T3BhcXVlQ29udGVudHMoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudFJlY3Qo
SW50UmVjdCg1LCA1LCAyLCA1KSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBm
YWxzZSk7Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1f
aG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5
ZXJzKGZyYW1lKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAK
ICAgICAvLyBMYXllciB3aXRoIHBhcnRpYWxseSBvcGFxdWUgY29udGVudHMgY3VsbGVkLCBkcmF3
biB3aXRoIGJsZW5kaW5nLgpAQCAtNzM2LDcgKzgyNSw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBsYXll
cjEtPnNldE9wYXF1ZUNvbnRlbnRzKGZhbHNlKTsKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRl
bnRSZWN0KEludFJlY3QoNSwgNSwgMiwgNSkpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24o
dHJ1ZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1Rf
VFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+
ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVk
KCkpOwogCiAgICAgLy8gTGF5ZXIgd2l0aCBwYXJ0aWFsbHkgb3BhcXVlIGNvbnRlbnRzIGFuZCB0
cmFuc2x1Y2VudCBjb250ZW50cyBjdWxsZWQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCkBAIC03
NDYsNyArODM2LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09m
ZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudHMo
ZmFsc2UpOwogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudFJlY3QoSW50UmVjdCg1LCA1LCAy
LCA1KSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwotICAgIG1f
aG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVw
YXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAg
ICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCiB9CkBAIC03ODgsNyAr
ODc5LDkgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByZXNoYXBlTm90Q2FsbGVk
VW50aWxEcmF3KQogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihhZG9wdFB0cihyb290KSk7
CiAgICAgRVhQRUNUX0ZBTFNFKHJlc2hhcGVUcmFja2VyLT5yZXNoYXBlQ2FsbGVkKCkpOwogCi0g
ICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZy
YW1lRGF0YSBmcmFtZTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3
KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNU
X1RSVUUocmVzaGFwZVRyYWNrZXItPnJlc2hhcGVDYWxsZWQoKSk7CiB9CiAKQEAgLTg0MCw4ICs5
MzMsMTEgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2Vp
dmVzRGFtYWdlUmVjdCkKICAgICByb290LT5hZGRDaGlsZChhZG9wdFB0cihjaGlsZCkpOwogICAg
IGxheWVyVHJlZUhvc3RJbXBsLT5zZXRSb290TGF5ZXIoYWRvcHRQdHIocm9vdCkpOwogCisgICAg
Q0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworCiAgICAgLy8gRmlyc3QgZnJh
bWUsIHRoZSBlbnRpcmUgc2NyZWVuIHNob3VsZCBnZXQgc3dhcHBlZC4KLSAgICBsYXllclRyZWVI
b3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyVHJlZUhvc3RJbXBs
LT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXll
cnMoZnJhbWUpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwogICAgIElu
dFJlY3QgYWN0dWFsU3dhcFJlY3QgPSBwYXJ0aWFsU3dhcFRyYWNrZXItPnBhcnRpYWxTd2FwUmVj
dCgpOwogICAgIEludFJlY3QgZXhwZWN0ZWRTd2FwUmVjdCA9IEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwpAQCAtODU1LDcgKzk1MSw4IEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAgICAg
Ly8gZXhwZWN0ZWQgZGFtYWdlIHJlY3Q6IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6
ZSgyNiwgMjgpKTsKICAgICAvLyBleHBlY3RlZCBzd2FwIHJlY3Q6IHZlcnRpY2FsbHkgZmxpcHBl
ZCwgd2l0aCBvcmlnaW4gYXQgYm90dG9tIGxlZnQgY29ybmVyLgogICAgIGNoaWxkLT5zZXRQb3Np
dGlvbihGbG9hdFBvaW50KDAsIDApKTsKLSAgICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVy
cygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZy
YW1lKSk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAgIGxh
eWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwogICAgIGFjdHVhbFN3YXBSZWN0ID0gcGFy
dGlhbFN3YXBUcmFja2VyLT5wYXJ0aWFsU3dhcFJlY3QoKTsKICAgICBleHBlY3RlZFN3YXBSZWN0
ID0gSW50UmVjdChJbnRQb2ludCgwLCA1MDAtMjgpLCBJbnRTaXplKDI2LCAyOCkpOwpAQCAtODY5
LDcgKzk2Niw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBS
ZWNlaXZlc0RhbWFnZVJlY3QpCiAgICAgLy8gZXhwZWN0ZWQgc3dhcCByZWN0OiBmbGlwcGVkIGRh
bWFnZSByZWN0LCBidXQgYWxzbyBjbGFtcGVkIHRvIHZpZXdwb3J0CiAgICAgbGF5ZXJUcmVlSG9z
dEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogICAgIHJvb3QtPnNldE9w
YWNpdHkoMC43KTsgLy8gdGhpcyB3aWxsIGRhbWFnZSBldmVyeXRoaW5nCi0gICAgbGF5ZXJUcmVl
SG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllclRyZWVIb3N0SW1w
bC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5
ZXJzKGZyYW1lKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKICAgICBh
Y3R1YWxTd2FwUmVjdCA9IHBhcnRpYWxTd2FwVHJhY2tlci0+cGFydGlhbFN3YXBSZWN0KCk7CiAg
ICAgZXhwZWN0ZWRTd2FwUmVjdCA9IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSgx
MCwgMTApKTsKQEAgLTkwMCwxOSArOTk4LDI0IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgdmlzaWJpbGl0eUNoYW5nZVJlc2V0c0RhbWFnZSkKICAgICByb290LT5zZXREcmF3c0Nv
bnRlbnQodHJ1ZSk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFJvb3RMYXllcihhZG9wdFB0
cihyb290KSk7CiAKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisK
ICAgICAvLyBGaXJzdCBmcmFtZTogaWdub3JlLgotICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3
TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXJUcmVlSG9zdEltcGwtPnByZXBhcmVUb0Ry
YXcoZnJhbWUpKTsKKyAgICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAg
ICAgbGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7CiAKICAgICAvLyBTZWNvbmQgZnJh
bWU6IG5vdGhpbmcgaGFzIGNoYW5nZWQgLS0tIHNvIHdlIHNvdWxkbid0IHB1c2ggYW55dGhpbmcg
d2l0aCBwYXJ0aWFsIHN3YXAuCi0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsK
KyAgICBFWFBFQ1RfVFJVRShsYXllclRyZWVIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkp
OworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBsYXllclRy
ZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKICAgICBFWFBFQ1RfVFJVRShwYXJ0aWFsU3dhcFRy
YWNrZXItPnBhcnRpYWxTd2FwUmVjdCgpLmlzRW1wdHkoKSk7CiAKICAgICAvLyBUaGlyZCBmcmFt
ZTogdmlzaWJpbGl0eSBjaGFuZ2UgLS0tIHNvIHdlIHNob3VsZCBwdXNoIGEgZnVsbCBmcmFtZSB3
aXRoIHBhcnRpYWwgc3dhcC4KICAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJsZShmYWxz
ZSk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUodHJ1ZSk7Ci0gICAgbGF5ZXJU
cmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllclRyZWVIb3N0
SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3
TGF5ZXJzKGZyYW1lKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKICAg
ICBJbnRSZWN0IGFjdHVhbFN3YXBSZWN0ID0gcGFydGlhbFN3YXBUcmFja2VyLT5wYXJ0aWFsU3dh
cFJlY3QoKTsKICAgICBJbnRSZWN0IGV4cGVjdGVkU3dhcFJlY3QgPSBJbnRSZWN0KEludFBvaW50
Ojp6ZXJvKCksIEludFNpemUoNTAwLCA1MDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDNmZGEyYzllZTdhY2Fm
MGJlZTM2N2RlYjVlNmIxZDkzYThkMWNiNTYuLmM3MzhmM2FmMzg0NzFhMTkwN2IyMWY2NWZkMDgx
NzMwYTA5YTU2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBUZXN0SG9va3Mg
OiBwdWJsaWMgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5Db21taXRPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvRHJhd09uQ0NUaHJlYWQoQ0NMYXll
clRyZWVIb3N0SW1wbCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVh
ZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXll
cnMoQ0NMYXllclRyZWVIb3N0SW1wbCosIGRvdWJsZSBtb25vdG9uaWNUaW1lKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiwgZmxvYXQpIHsg
fQpAQCAtOTUsOSArOTYsMTYgQEAgcHVibGljOgogICAgICAgICBtX3Rlc3RIb29rcy0+Y29tbWl0
Q29tcGxldGVPbkNDVGhyZWFkKHRoaXMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3
TGF5ZXJzKCkKKyAgICB2aXJ0dWFsIGJvb2wgcHJlcGFyZVRvRHJhdyhGcmFtZURhdGEmIGZyYW1l
KQogICAgIHsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycygpOworICAg
ICAgICBib29sIHJlc3VsdCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OnByZXBhcmVUb0RyYXcoZnJh
bWUpOworICAgICAgICBtX3Rlc3RIb29rcy0+cHJlcGFyZVRvRHJhd09uQ0NUaHJlYWQodGhpcyk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRyYXdM
YXllcnMoY29uc3QgRnJhbWVEYXRhJiBmcmFtZSkKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVl
SG9zdEltcGw6OmRyYXdMYXllcnMoZnJhbWUpOwogICAgICAgICBtX3Rlc3RIb29rcy0+ZHJhd0xh
eWVyc09uQ0NUaHJlYWQodGhpcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAppbmRleCAxMWEwODlhNTJjZGVjOWJlZDRl
ZmIzZGMyMTI0YTNmM2U0M2I3NTlmLi4zZGVhMWVkNzQ1NTlmM2UyYTM4NTk0ODI1OTBkNzE1ZTQx
N2ZmY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1
bGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3Vs
bGVyVGVzdC5jcHAKQEAgLTgyLDcgKzgyLDggQEAgc3RhdGljIHZvaWQgYXBwZW5kUXVhZHMoQ0NR
dWFkTGlzdCYgcXVhZExpc3QsIFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4KIHsK
ICAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihxdWFkTGlzdCwgbGF5ZXIsICZvY2NsdXNpb25U
cmFja2VyKTsKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9
IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMo
cXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICBib29sIHVzZWRDaGVja2Vy
Ym9hcmQgPSBmYWxzZTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVk
UXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKICAgICBzaGFyZWRTdGF0ZUxpc3Qu
YXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNw
cAppbmRleCA3Yzc0M2QyYTc2NmFjMDI3NTY3Mjk0NjU3YWQ0ZjQ4MWZiOGFjMjE3Li4xMmY4YzIy
NGRlNTFmYzc5Y2VjNGVkNGQ5NGFhNTAzYjk3YjBkMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAK
QEAgLTUyLDcgKzUyLDggQEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LCB2ZXJpZnlU
aWxpbmdDb21wbGV0ZUFuZE5vT3ZlcmxhcCkKICAgICBsYXllci0+c2V0Qm91bmRzKGxheWVyU2l6
ZSk7CiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxh
eWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVh
ZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICBib29sIHVzZWRDaGVja2VyYm9h
cmQgPSBmYWxzZTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVh
ZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKIAogICAgIHZlcmlmeVF1YWRzRXhhY3Rs
eUNvdmVyUmVjdChxdWFkQ3VsbGVyLnF1YWRMaXN0KCksIHZpc2libGVMYXllclJlY3QpOwogfQpA
QCAtNzMsNyArNzQsOCBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeUNv
cnJlY3RCYWNrZ3JvdW5kQ29sb3JJblF1YWQpCiAgICAgbGF5ZXItPnNldEJhY2tncm91bmRDb2xv
cih0ZXN0Q29sb3IpOwogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFk
U3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0gICAgbGF5ZXItPmFwcGVu
ZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7CisgICAgYm9vbCB1c2Vk
Q2hlY2tlcmJvYXJkID0gZmFsc2U7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIs
IHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CiAKICAgICBBU1NFUlRf
RVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMVUpOwogICAgIEVYUEVDVF9FUShxdWFk
Q3VsbGVyLnF1YWRMaXN0KClbMF0tPnRvU29saWRDb2xvckRyYXdRdWFkKCktPmNvbG9yKCksIHRl
c3RDb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGls
ZWRMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxl
ZExheWVySW1wbFRlc3QuY3BwCmluZGV4IGZlOGNhOGViMDIxN2FmNTIzMzI0ZTIwY2M3NGVhZjFj
NTNkZGE4ZmYuLjU3Y2FhN2RjMTcxNGExZjllNTJlNTIxYzU4ZDQwMzkyNTM1MzdiYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRl
c3QuY3BwCkBAIC03Miw3ICs3Miw4IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGVtcHR5
UXVhZExpc3QpCiAgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0
ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRl
eGVscyk7CiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKICAgICAgICAgT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hh
cmVkUXVhZFN0YXRlKCk7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBm
YWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRT
dGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIG51
bVRpbGVzID0gbnVtVGlsZXNYICogbnVtVGlsZXNZOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1
bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgbnVtVGlsZXMpOwogICAgIH0KQEAgLTg0LDcgKzg1LDgg
QEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKIAogICAgICAgICBN
b2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7CiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwot
ICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdl
dCgpKTsKKyAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7CisgICAgICAgIGxh
eWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRD
aGVja2VyYm9hcmQpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNp
emUoKSwgMHUpOwogICAgIH0KIApAQCAtOTcsNyArOTksOCBAQCBURVNUKENDVGlsZWRMYXllcklt
cGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1
bGxlcjsKICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUg
PSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVz
ZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRD
dWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgICAg
IEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAwdSk7CiAgICAgfQogCkBA
IC0xMDgsNyArMTExLDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlz
dCkKIAogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7CiAgICAgICAgIE93blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJl
ZFF1YWRTdGF0ZSgpOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hh
cmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFs
c2U7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3Rh
dGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxl
ci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgIH0KIH0KQEAgLTEyOCw4ICsxMzIsMTAgQEAg
VEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogICAgIC8vIE5vIGNo
ZWNrZXJib2FyZGluZwogICAgIHsKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVy
OwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRl
LmdldCgpKTsKKyAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7CisgICAgICAg
IGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVz
ZWRDaGVja2VyYm9hcmQpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgp
LnNpemUoKSwgNHUpOworICAgICAgICBFWFBFQ1RfRkFMU0UodXNlZENoZWNrZXJib2FyZCk7CiAK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6
ZSgpOyArK2kpCiAgICAgICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ld
LT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQpOwpAQCAtMTQyLDcgKzE0OCw5
IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKICAgICAvLyBB
bGwgY2hlY2tlcmJvYXJkaW5nCiAgICAgewogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRD
dWxsZXI7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFk
U3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAg
ICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQo
KSwgdXNlZENoZWNrZXJib2FyZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKHVzZWRDaGVja2VyYm9h
cmQpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgNHUp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3QoKS5z
aXplKCk7ICsraSkKICAgICAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KClb
aV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlNvbGlkQ29sb3IpOwpAQCAtMTU3LDcgKzE2NSw4
IEBAIHN0YXRpYyBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBnZXRRdWFkcyhDQ1F1YWRM
aXN0JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6CiAKICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRD
dWxsZXIocXVhZHMpOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0
YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgIGxheWVyLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgIGJvb2wgdXNlZENo
ZWNrZXJib2FyZCA9IGZhbHNlOworICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwogICAgIHJldHVybiBzaGFy
ZWRRdWFkU3RhdGUucmVsZWFzZSgpOyAvLyBUaGUgc2hhcmVkIGRhdGEgbXVzdCBiZSBvd25lZCBh
cyBsb25nIGFzIHRoZSBxdWFkIGxpc3QgZXhpc3RzLgogfQogCkBAIC0yNzUsNyArMjg0LDggQEAg
VEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQogICAg
ICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5j
cmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKIAogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRD
dWxsZXI7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFk
U3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAg
ICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQo
KSwgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRM
aXN0KCkuc2l6ZSgpLCBudW1UaWxlcyk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCkBAIC0yOTAsNyArMzAwLDggQEAg
VEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQogCiAg
ICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXIt
PmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRD
dWxsZXI7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFk
U3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAg
ICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQo
KSwgdXNlZENoZWNrZXJib2FyZCk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBx
dWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBFWFBFQ1RfRVEo
cXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpTb2xpZENv
bG9yKTsKQEAgLTMwNiw3ICszMTcsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBiYWNr
Z3JvdW5kQ292ZXJzVmlld3BvcnQpCiAKICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRl
PiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAgICAg
ICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1
YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7CisgICAgICAgIGJvb2wgdXNl
ZENoZWNrZXJib2FyZCA9IGZhbHNlOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1
bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKIAogICAgICAg
ICB1bnNpZ25lZCBudW1Db250ZW50VGlsZXMgPSAwLCBudW1HdXR0ZXJUaWxlcyA9IDA7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKTsg
KytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1
YWRDdWxsZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxl
ci5oCmluZGV4IDc5MWFmNTAzM2Y3OGY2NjEwYWEyNjY1MmIzNGJiOGRmZTA3ZjhkYjkuLmQ5Y2Qz
MTMyNjgzMGJkMTIyMDMxY2YwYzhlMThlZGNkOTBlYzk1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCkBAIC00NCwxMSArNDQsMTQgQEAg
cHVibGljOgogICAgICAgICAsIG1fYWN0aXZlUXVhZExpc3QoZXh0ZXJuYWxRdWFkTGlzdCkKICAg
ICB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoV1RGOjpQYXNzT3duUHRyPFdlYkNvcmU6
OkNDRHJhd1F1YWQ+IG5ld1F1YWQpCisgICAgdmlydHVhbCBib29sIGFwcGVuZChXVEY6OlBhc3NP
d25QdHI8V2ViQ29yZTo6Q0NEcmF3UXVhZD4gbmV3UXVhZCkKICAgICB7CiAgICAgICAgIE93blB0
cjxXZWJDb3JlOjpDQ0RyYXdRdWFkPiBkcmF3UXVhZCA9IG5ld1F1YWQ7Ci0gICAgICAgIGlmICgh
ZHJhd1F1YWQtPnF1YWRSZWN0KCkuaXNFbXB0eSgpKQorICAgICAgICBpZiAoIWRyYXdRdWFkLT5x
dWFkUmVjdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgbV9hY3RpdmVRdWFkTGlzdC5hcHBl
bmQoZHJhd1F1YWQucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBjb25zdCBXZWJDb3JlOjpD
Q1F1YWRMaXN0JiBxdWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlUXVhZExpc3Q7IH07
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133113</attachid>
            <date>2012-03-21 14:44:56 -0700</date>
            <delta_ts>2012-03-22 07:00:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81437-20120321174454.patch</filename>
            <type>text/plain</type>
            <size>60235</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2YTU4Y2MzOGVjOWQ2
ODBjNDlhN2JmY2Y1Y2Y0ZDZiNmNiMzI3OS4uMmQ1YTBiZDFhN2IxYzAxY2I0MGRlYmU3OWI2NDVl
ODkyMTk4Mjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAzLTIxICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRWFy
bHkgb3V0IGluIGEgbmV3IHByZXBhcmVUb0RyYXcoKSBzdGVwIGlmIGNoZWNrZXJib2FyZGluZyBh
biBhY2NlbGVyYXRlZCBhbmltYXRpb24gaW4gb3JkZXIgdG8gc2tpcCB0aGUgZnJhbWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAgICAgIFNwbGl0IENDTGF5ZXJU
cmVlSG9zdEltcGw6OmRyYXdMYXllcnMoKSBpbnRvIHR3byBwaGFzZXM6CisgICAgICAgIHByZXBh
cmVUb0RyYXcoKSBhbmQgZHJhd0xheWVycygpLgorCisgICAgICAgIFdoZW4gY2FsY3VsYXRpbmcg
YSBSZW5kZXJQYXNzLCBhbmQgd2UgY2hlY2tlcmJvYXJkIGEgcXVhZCBvbiBhCisgICAgICAgIGxh
eWVyLCBidWJibGUgdGhpcyBpbmZvIGJhY2sgdXAgdG8gQ0NMYXllclRyZWVIb3N0SW1wbC4gSWYg
dGhlCisgICAgICAgIGxheWVyIGlzIHRyYW5zZm9ybWluZyBpbiBhbiBhbmltYXRpb24sIHRoZW4g
YWJvcnQgdGhlIHByZXBhcmVUb0RyYXcoKQorICAgICAgICBwaGFzZSBhbmQgY2F1c2UgaXQgdG8g
cmV0dXJuIGZhbHNlIGJhY2sgdG8gdGhlIHRocmVhZCBwcm94eS4KKworICAgICAgICBVbml0IHRl
c3Q6IENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LnByZXBhcmVUb0RyYXdGYWlsc1doZW5BbmltYXRp
b25Vc2VzQ2hlY2tlcmJvYXJkCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YXBw
ZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdM
YXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAo
RnJhbWVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1
YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjphcHBlbmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oOgor
ICAgICAgICAoQ0NRdWFkQ3VsbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNz
OjphcHBlbmRRdWFkc0ZvckxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAgICAgICAgKENDUmVuZGVyUGFzcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVy
SW1wbC5oOgorICAgICAgICAoQ0NTY3JvbGxiYXJMYXllckltcGwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21wb3NpdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NvbGlkQ29sb3JMYXllckltcGw6OmFwcGVuZFF1YWRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXll
ckltcGwuaDoKKyAgICAgICAgKENDU29saWRDb2xvckxheWVySW1wbCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oOgorICAg
ICAgICAoQ0NUZXh0dXJlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RpbGVk
TGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmFw
cGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1ZpZGVvTGF5ZXJJbXBsKToKKwogMjAxMi0wMy0y
MSAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVhbHBo
YWJldGl6ZSBhYm91dCB3ZWJhdWRpbyBtb3ZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGFiOWNmNWZmYmNmMzhiZDcyZGNhNWVkNjA3M2Q1NjRmODViZmExOTYuLjNiMWZlMGQ2YTNjYTI3
ODNmOTQzNGVjMDFhODljOWNmNjA0OGE2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTItMDMtMjEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFYXJseSBvdXQgaW4gYSBuZXcgcHJlcGFyZVRv
RHJhdygpIHN0ZXAgaWYgY2hlY2tlcmJvYXJkaW5nIGFuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbiBp
biBvcmRlciB0byBza2lwIHRoZSBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MzcKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBX
YWxrZXIuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRBbmltYXRlZFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJLaXRUZXN0czo6YWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xheWVyKToKKyAg
ICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjphZGRBbmltYXRlZFRy
YW5zZm9ybVRvTGF5ZXIpOgorICAgICAgICAqIHRlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlRFU1RfRik6CisgICAgICAgIChEaWREcmF3Q2hlY2tMYXllcik6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6RGlkRHJhd0NoZWNrTGF5ZXI6OkRpZERyYXdDaGVja0xheWVyKToKKyAgICAgICAgKE1p
c3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViS2l0VGVzdHM6Ok1pc3Np
bmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXll
cik6CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6QmxlbmRT
dGF0ZUNoZWNrTGF5ZXI6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6VGVzdEhvb2tzOjpwcmVwYXJlVG9EcmF3T25D
Q1RocmVhZCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRv
RHJhdyk6CisgICAgICAgIChNb2NrTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV1RGOjpN
b2NrTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMpOgorICAgICAgICAqIHRlc3RzL0NDUXVh
ZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUXVhZHMpOgorICAgICAg
ICAqIHRlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXll
clRlc3RDb21tb246OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0
LmNwcDoKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpURVNUKToKKyAgICAgICAgKENDTGF5
ZXJUZXN0Q29tbW9uOjpnZXRRdWFkcyk6CisgICAgICAgICogdGVzdHMvTW9ja0NDUXVhZEN1bGxl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NDUXVhZEN1bGxlcjo6YXBwZW5kKToKKwogMjAx
Mi0wMy0yMSAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtDaHJvbWl1bV0gR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIGFuZCBHTF9DSFJPTUlV
TV9jb21tYW5kX2J1ZmZlcl9xdWVyeSBzdXBwb3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmlu
ZGV4IDY5ZjA2MWYwMGRkNGMyZDY4Y2Y1Njg3NzY1OWNiOGEzN2M1NzFiNjYuLjJhZmI5ZDhmZjc0
MWY5MzM1OTU2NmExNjlmZDQzNzI5NzAyYTc5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAK
QEAgLTEzNiw3ICsxMzYsNyBAQCBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBDQ0xheWVy
SW1wbDo6Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29uc3QKICAgICByZXR1cm4gQ0NTaGFyZWRR
dWFkU3RhdGU6OmNyZWF0ZShxdWFkVHJhbnNmb3JtKCksIGRyYXdUcmFuc2Zvcm0oKSwgdmlzaWJs
ZUxheWVyUmVjdCgpLCBsYXllckNsaXBSZWN0LCBkcmF3T3BhY2l0eSgpLCBvcGFxdWUoKSk7CiB9
CiAKLXZvaWQgQ0NMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3Qs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCit2b2lkIENDTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICBhcHBlbmRHdXR0ZXJRdWFk
cyhxdWFkTGlzdCwgc2hhcmVkUXVhZFN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4
IGJlZTlmMWJiNWNmMDE1NWJkMDdkOGQzOGQwMDkwMWQwMzc1MjYzN2IuLjc0YTAzOWVmYjBlNDNh
OTBkYTcyNjE1MjFmMGEwMzgzNzVjOTFmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtODQs
NyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBj
cmVhdGVTaGFyZWRRdWFkU3RhdGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXco
TGF5ZXJSZW5kZXJlckNocm9taXVtKikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRz
KENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKik7CisgICAgdmlydHVhbCB2
b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
Ym9vbCYgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKSB7IH0K
ICAgICB2b2lkIGFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSopIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCmluZGV4IDBhYmZhZTE4OGRiOWZlMjNlN2UzMzM1NTY0ZjMwMzJlYjU5NTY5YWUuLjQ0
M2ExZmZhYTc3YmEwZWU1MjAyOWRmMGUzYWIxNDk2N2Y0YzUyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yMjAsOSArMjIwLDEwIEBAIHN0YXRpYyBGbG9h
dFJlY3QgZGFtYWdlSW5TdXJmYWNlU3BhY2UoQ0NMYXllckltcGwqIHJlbmRlclN1cmZhY2VMYXll
ciwgY29uc3QgRmxvCiAgICAgcmV0dXJuIHN1cmZhY2VEYW1hZ2VSZWN0OwogfQogCi12b2lkIEND
TGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0
JiBwYXNzZXMsIENDTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQorYm9vbCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYg
cGFzc2VzLCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIHsKLSAgICBUUkFD
RV9FVkVOVDEoIndlYmtpdCIsICJDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQ
YXNzZXMiLCAicmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkiLCBzdGF0aWNfY2FzdDxsb25n
IGxvbmcgdW5zaWduZWQ+KHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpKSk7CisgICAgQVNT
RVJUKHBhc3Nlcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LmlzRW1wdHkoKSk7CiAKICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5
ZXIoKSk7CiAKQEAgLTIzOSw2ICsyNDAsOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNh
bGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZQogICAg
ICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlz
aWJpbGl0eShyb290TGF5ZXIoKSwgcm9vdExheWVyKCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0
eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgcm9vdExheWVyKCktPnJlbmRlclN1cmZh
Y2UoKS0+bGF5ZXJMaXN0KCksICZtX2xheWVyU29ydGVyLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKCkubWF4VGV4dHVyZVNpemUpOwogICAgIH0KIAorICAgIFRSQUNFX0VWRU5UMSgid2Via2l0
IiwgIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyIsICJyZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LnNpemUoKSIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZyB1bnNpZ25lZD4o
cmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkpKTsKKwogICAgIGlmIChsYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKCkudXNpbmdQYXJ0aWFsU3dhcCkKICAgICAgICAgdHJhY2tEYW1hZ2VGb3JB
bGxTdXJmYWNlcyhyb290TGF5ZXIoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgbV9y
b290RGFtYWdlUmVjdCA9IHJvb3RMYXllcigpLT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNr
ZXIoKS0+Y3VycmVudERhbWFnZVJlY3QoKTsKQEAgLTI3Miw2ICsyNzUsOSBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBw
YXNzZXMsIENDTGF5ZQogICAgIC8vIEFkZCBxdWFkcyB0byB0aGUgUmVuZGVyIHBhc3NlcyBpbiBG
cm9udFRvQmFjayBvcmRlciB0byBhbGxvdyBmb3IgdGVzdGluZyBvY2NsdXNpb24gYW5kIHBlcmZv
cm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRyZWUgd2Fsay4KICAgICB0eXBlZGVmIENDTGF5ZXJJ
dGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFj
ZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5
cGU7CiAKKyAgICAvLyBJZiB3ZSBhcmUgdW5hYmxlIHRvIGRyYXcgYW4gYW5pbWF0aW9uIG9uIHNv
bWUgbGF5ZXIsIHRoZW4gd2UgYWJvcnQgdGhlIGVudGlyZSBmcmFtZS4KKyAgICBib29sIGRyYXdG
cmFtZSA9IHRydWU7CisKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVy
YXRvclR5cGU6OmVuZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgZm9yIChDQ0xheWVy
SXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgQ0NSZW5kZXJTdXJmYWNl
KiByZW5kZXJTdXJmYWNlID0gaXQudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCktPnJlbmRlclN1
cmZhY2UoKTsKQEAgLTI5NSwxMSArMzAxLDIzIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6
Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAg
ICAgICAgIH0KIAogICAgICAgICBpdC0+d2lsbERyYXcobV9sYXllclJlbmRlcmVyLmdldCgpKTsK
LSAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2Vy
KTsKKworICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAgICAgICAgcGFz
cy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2VyLCB1c2VkQ2hlY2tl
cmJvYXJkKTsKKyAgICAgICAgaWYgKHVzZWRDaGVja2VyYm9hcmQpIHsKKyAgICAgICAgICAgIGJv
b2wgbGF5ZXJIYXNBbmltYXRpbmdUcmFuc2Zvcm0gPSBpdC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm1J
c0FuaW1hdGluZygpIHx8IGl0LT5kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmcoKTsKKyAgICAgICAg
ICAgIGlmIChsYXllckhhc0FuaW1hdGluZ1RyYW5zZm9ybSkgeworICAgICAgICAgICAgICAgIGRy
YXdGcmFtZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcigqaXQpOwogICAgIH0KIAotICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNz
KCkucmVjb3JkTWV0cmljcyh0aGlzKTsKKyAgICBpZiAoZHJhd0ZyYW1lKQorICAgICAgICBvY2Ns
dXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnJlY29yZE1ldHJpY3ModGhpcyk7CisgICAg
cmV0dXJuIGRyYXdGcmFtZTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRl
TGF5ZXJzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBjdXJyZW50LCBkb3VibGUgbW9ub3RvbmljVGlt
ZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKiBldmVudHMs
IGJvb2wmIGRpZEFuaW1hdGUsIGJvb2wmIG5lZWRzQW5pbWF0ZUxheWVycykKQEAgLTMzOSwyNiAr
MzU3LDM5IEBAIEludFNpemUgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGVudFNpemUoKSBjb25z
dAogICAgIHJldHVybiBtX3Njcm9sbExheWVySW1wbC0+Y2hpbGRyZW4oKVswXS0+Y29udGVudEJv
dW5kcygpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoKQorYm9v
bCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiB7
Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMiLCB0aGlz
LCAwKTsKLSAgICBBU1NFUlQobV9sYXllclJlbmRlcmVyKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NM
YXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyIsIHRoaXMsIDApOworCisgICAgZnJhbWUu
cmVuZGVyUGFzc2VzLmNsZWFyKCk7CisgICAgZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdC5j
bGVhcigpOwogCiAgICAgaWYgKCFyb290TGF5ZXIoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBDQ1JlbmRlclBhc3NMaXN0IHBhc3NlczsKLSAgICBDQ0xh
eWVyTGlzdCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIGNhbGN1bGF0ZVJlbmRlclBhc3Nl
cyhwYXNzZXMsIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIGlmICghY2FsY3VsYXRlUmVu
ZGVyUGFzc2VzKGZyYW1lLnJlbmRlclBhc3NlcywgZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlz
dCkpIHsKKyAgICAgICAgZnJhbWUucmVuZGVyUGFzc2VzLmNsZWFyKCk7CisgICAgICAgIGZyYW1l
LnJlbmRlclN1cmZhY2VMYXllckxpc3QuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIC8vIElmIHdlIHJldHVybiB0cnVlLCB0aGVuIHdlIGV4cGVjdCBkcmF3TGF5
ZXJzKCkgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZ2Fpbi4K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5
ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJU
cmVlSG9zdEltcGw6OmRyYXdMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQobV9sYXllclJl
bmRlcmVyKTsKIAogICAgIG1fbGF5ZXJSZW5kZXJlci0+YmVnaW5EcmF3aW5nRnJhbWUoKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhc3Nlcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9s
YXllclJlbmRlcmVyLT5kcmF3UmVuZGVyUGFzcyhwYXNzZXNbaV0uZ2V0KCkpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKTsgKytpKQorICAgICAg
ICBtX2xheWVyUmVuZGVyZXItPmRyYXdSZW5kZXJQYXNzKGZyYW1lLnJlbmRlclBhc3Nlc1tpXS5n
ZXQoKSk7CiAKICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9y
PENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6
QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKLSAgICBDQ0xheWVySXRlcmF0b3JU
eXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCk7Ci0gICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlw
ZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmZnJh
bWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBl
IGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJmZyYW1lLnJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNJdHNl
bGYoKSAmJiAhaXQtPnZpc2libGVMYXllclJlY3QoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBp
dC0+ZGlkRHJhdygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApp
bmRleCAzMTQ5NDc0YzRiNThhNWM1ZDBlZTcwYjYzYTYxMWFlMmU4MmMxMmM2Li5lMGM2ZTczYTMz
NDIwZGQ0N2QwOTU0Mjg2MmNiOWE0OGEwYWQxY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKIC8vIENDTGF5ZXJUcmVlSG9z
dEltcGwgb3ducyB0aGUgQ0NMYXllckltcGwgdHJlZSBhcyB3ZWxsIGFzIGFzc29jaWF0ZWQgcmVu
ZGVyaW5nIHN0YXRlCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsIDogcHVibGljIENDSW5wdXRI
YW5kbGVyQ2xpZW50LCBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENDTGF5ZXJUcmVlSG9zdEltcGwpOworICAgIHR5cGVkZWYgVmVjdG9yPEND
TGF5ZXJJbXBsKj4gQ0NMYXllckxpc3Q7CisKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0
cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoY29uc3QgQ0NTZXR0aW5ncyYsIENDTGF5ZXJU
cmVlSG9zdEltcGxDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3RJbXBsKCk7
CkBAIC03NywxMSArNzksMTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPik7CiAg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7CiAKKyAgICBzdHJ1Y3QgRnJhbWVE
YXRhIHsKKyAgICAgICAgQ0NSZW5kZXJQYXNzTGlzdCByZW5kZXJQYXNzZXM7CisgICAgICAgIEND
TGF5ZXJMaXN0IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgfTsKKwogICAgIC8vIFZpcnR1
YWwgZm9yIHRlc3RpbmcuCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0KCk7CiAgICAgdmly
dHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91
YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhd0xheWVycygpOworICAgIHZpcnR1YWwgYm9vbCBwcmVwYXJlVG9EcmF3KEZyYW1lRGF0
YSYpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKGNvbnN0IEZyYW1lRGF0YSYpOwogCiAg
ICAgLy8gTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmly
dHVhbCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdw
b3J0U2l6ZTsgfQpAQCAtMTUxLDggKzE1OSw2IEBAIHByb3RlY3RlZDoKICAgICBpbnQgbV9mcmFt
ZU51bWJlcjsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIFZlY3RvcjxDQ0xheWVySW1wbCo+IEND
TGF5ZXJMaXN0OwotCiAgICAgdm9pZCBjb21wdXRlRG91YmxlVGFwWm9vbURlbHRhcyhDQ1Njcm9s
bEFuZFNjYWxlU2V0KiBzY3JvbGxJbmZvKTsKICAgICB2b2lkIGNvbXB1dGVQaW5jaFpvb21EZWx0
YXMoQ0NTY3JvbGxBbmRTY2FsZVNldCogc2Nyb2xsSW5mbyk7CiAgICAgdm9pZCBtYWtlU2Nyb2xs
QW5kU2NhbGVTZXQoQ0NTY3JvbGxBbmRTY2FsZVNldCogc2Nyb2xsSW5mbywgY29uc3QgSW50U2l6
ZSYgc2Nyb2xsT2Zmc2V0LCBmbG9hdCBwYWdlU2NhbGUpOwpAQCAtMTYyLDcgKzE2OCw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhZGp1c3RTY3JvbGxzRm9yUGFnZVNjYWxlQ2hhbmdlKGZsb2F0KTsK
ICAgICB2b2lkIHVwZGF0ZU1heFNjcm9sbFBvc2l0aW9uKCk7CiAgICAgdm9pZCB0cmFja0RhbWFn
ZUZvckFsbFN1cmZhY2VzKENDTGF5ZXJJbXBsKiByb290RHJhd0xheWVyLCBjb25zdCBDQ0xheWVy
TGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7Ci0gICAgdm9pZCBjYWxjdWxhdGVSZW5kZXJQ
YXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYsIENDTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KTsKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGRp
c3BsYXllZC4KKyAgICBib29sIGNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0
JiwgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIHZvaWQgYW5pbWF0
ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCosIGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3Vi
bGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqLCBib29sJiBkaWRBbmlt
YXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXllcnMpOwogICAgIEludFNpemUgY29udGVudFNpemUo
KSBjb25zdDsKICAgICB2b2lkIHNlbmREaWRMb3NlQ29udGV4dFJlY3Vyc2l2ZShDQ0xheWVySW1w
bCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKaW5kZXggZjJhODU4NzE3MGMzYmE1YWUyMmUx
YjM4OGYzZjg4MjZkMGVmZDNhYy4uMzVkMTk0NjE3Nzk1OTJmZWI0ZWY4NDcxYjM4ZmUwZDVlZjlj
ODQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENDUXVh
ZEN1bGxlcjo6Q0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmIHF1YWRMaXN0LCBDQ0xheWVySW1wbCog
bGF5ZXIsIENDT2NjbHVzaW9uCiB7CiB9CiAKLXZvaWQgQ0NRdWFkQ3VsbGVyOjphcHBlbmQoUGFz
c093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpCitib29sIENDUXVhZEN1bGxlcjo6YXBw
ZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKQogewogICAgIE93blB0cjxD
Q0RyYXdRdWFkPiBkcmF3UXVhZChwYXNzRHJhd1F1YWQpOwogICAgIEludFJlY3QgY3VsbGVkUmVj
dCA9IG1fb2NjbHVzaW9uVHJhY2tlci0+dW5vY2NsdWRlZENvbnRlbnRSZWN0KG1fbGF5ZXIsIGRy
YXdRdWFkLT5xdWFkUmVjdCgpKTsKQEAgLTYxLDYgKzYxLDcgQEAgdm9pZCBDQ1F1YWRDdWxsZXI6
OmFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCkKICAgICAvLyBSZWxl
YXNlIHRoZSBxdWFkIGFmdGVyIHdlJ3JlIGRvbmUgdXNpbmcgaXQuCiAgICAgaWYgKGtlZXBRdWFk
KQogICAgICAgICBtX3F1YWRMaXN0LmFwcGVuZChkcmF3UXVhZC5yZWxlYXNlKCkpOworICAgIHJl
dHVybiBrZWVwUXVhZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuaAppbmRleCAxZjRiOTIwNTYyYWU5NWM1NmRmNzA2OTNkOGI5YzE3MDhmYzk5NzIwLi4z
NDM1YjcyZjVkMzUwM2I5ZTk5ZTUwZjgyNDg4MjZjMWM5OGVlMDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuaApAQCAtMzgsNyArMzgsOCBAQCBwdWJsaWM6CiAgICAgLy8gZG9uZSB0byBlc3RpbWF0
ZSBvdmVyIGRyYXcgc3RhdGlzdGljcy4KICAgICBDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYsIEND
TGF5ZXJJbXBsKiwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCopOwogCi0gICAgdmlydHVhbCB2b2lk
IGFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCk7CisgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBxdWFkIGlzIGFkZGVkIHRvIHRoZSBsaXN0LCBhbmQgZmFsc2UgaWYg
dGhlIHF1YWQgaXMgZW50aXJlbHkgY3VsbGVkLgorICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoUGFz
c093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpOwogCiBwcml2YXRlOgogICAgIENDUXVh
ZExpc3QmIG1fcXVhZExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAppbmRleCBhMTJiZmJi
NTlmNGE3YjkzOTYzZDI0MzRlYzYwY2JlODUwMDU2MzRhLi5jZjQ3YjZjYjg3YTQzNzYwMjEwMzA3
ZGNkZjkwNjkwNzFlNGE0ZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKQEAgLTQ2LDEy
ICs0NiwxMiBAQCBDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyhDQ1JlbmRlclN1cmZhY2UqIHRh
cmdldFN1cmZhY2UpCiAgICAgQVNTRVJUKG1fdGFyZ2V0U3VyZmFjZSk7CiB9CiAKLXZvaWQgQ0NS
ZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2Ns
dXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tlcikKK3ZvaWQgQ0NSZW5kZXJQYXNzOjph
cHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2NsdXNpb25UcmFja2Vy
SW1wbCogb2NjbHVzaW9uVHJhY2tlciwgYm9vbCYgdXNlZENoZWNrZXJib2FyZCkKIHsKICAgICBD
Q1F1YWRDdWxsZXIgcXVhZEN1bGxlcihtX3F1YWRMaXN0LCBsYXllciwgb2NjbHVzaW9uVHJhY2tl
cik7CiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxh
eWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVh
ZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMo
cXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKICAg
ICBsYXllci0+YXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0
ZS5nZXQoKSk7CiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3Rh
dGUucmVsZWFzZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggYWM4ZGJjMWEwZDI2
YTg0NzY2NTdmYjY3MmMyZjE1YWFiMjRjOGVlMS4uNTk5MDFjOGM1OGNmMzc2YTBjMWYwY2MwOWM1
NzhlZTA0ZDMxNjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTU0LDcgKzU0LDcgQEAg
Y2xhc3MgQ0NSZW5kZXJQYXNzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Jl
bmRlclBhc3M+IGNyZWF0ZShDQ1JlbmRlclN1cmZhY2UqKTsKIAotICAgIHZvaWQgYXBwZW5kUXVh
ZHNGb3JMYXllcihDQ0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tlckltcGwqKTsKKyAgICB2
b2lkIGFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqLCBDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsKiwgYm9vbCYgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgdm9pZCBhcHBlbmRRdWFkc0ZvclJl
bmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCopOwogCiAgICAgY29uc3QgQ0NRdWFkTGlzdCYg
cXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRMaXN0OyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njcm9sbGJhckxheWVySW1wbC5jcHAKaW5kZXggNDM3ZjRmNzc2ZDhiMDdkNWI5YWZjZDFjMGM1
MDNkZDhjODkxNDJhNS4uMTUyMDY1ZDA4ZTExMWQ5YWUxY2RiNWZkNjMzMWU4MTk0MDEwYzVkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY3JvbGxiYXJMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcApAQCAtNzksNyArNzks
NyBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjp3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hy
b21pdW0qIGxheWVyUmVuZGVyZXIpCiAgICAgfQogfQogCi12b2lkIENDU2Nyb2xsYmFyTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQordm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBw
ZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgaWYgKCFtX3RleHR1cmUtPmlzUmVzZXJ2
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBs
LmgKaW5kZXggZmNlYzExMGUyNDE4MzFiZGIyMWY4NjcyYmJkMGM3MzcyMTFkM2ZjYy4uYjAzZTQ1
MWViMzkyMzUwMWMyZTY1MzlmZGNhYzZmNDc4NWE5Yzc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNjcm9sbExheWVyKENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllcikgeyBtX3Njcm9sbExheWVyID0g
c2Nyb2xsTGF5ZXI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVy
Q2hyb21pdW0qKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwg
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMo
Q0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hlY2tl
cmJvYXJkKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdygpOwogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IGI2ZmM3NmI1MmU4YmRmNGZl
YTk3NTUwYTIxNmVmMTMyZmY3YjViZjUuLjYwN2IzOGFmN2EyMmNjNzc0ZmY2YTE3Mjc5M2QzZGU1
OWU0MDM2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0y
OTgsNyArMjk4LDkgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSgpCiAg
ICAgICBkb3VibGUgd2FsbENsb2NrVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKICAgICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7Ci0g
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgICBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5w
cmVwYXJlVG9EcmF3KGZyYW1lKTsKKyAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXll
cnMoZnJhbWUpOwogICAgIH0KIAogICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRl
eHRMb3N0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwCmlu
ZGV4IGJmNjcwZWNjODllMWIwZmExN2ZlZTc2MDM4MzllYzI3Y2JmZDQ5MTcuLjZhZTNhMTcyOThl
OWM2YzMxODI3YWQ2OWVhYjQ2YjllOGVkM2U0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsLmNwcApAQCAtNTcsNyArNTcsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBDQ1NvbGlkQ29sb3JMYXllckltcGw6OnF1YWRUcmFuc2Zvcm0oKSBjb25zdAogICAgIHJldHVy
biBzb2xpZENvbG9yVHJhbnNmb3JtOwogfQogCi12b2lkIENDU29saWRDb2xvckxheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSkKK3ZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBlbmRR
dWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICAvLyBXZSBjcmVhdGUgYSBzZXJpZXMgb2Ygc21h
bGxlciBxdWFkcyBpbnN0ZWFkIG9mIGp1c3Qgb25lIGxhcmdlIG9uZSBzbyB0aGF0IHRoZQogICAg
IC8vIGN1bGxlciBjYW4gcmVkdWNlIHRoZSB0b3RhbCBwaXhlbHMgZHJhd24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29s
b3JMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCmluZGV4IDdkMDc2NzM4Y2YzYTBjY2NjOTgyYjQy
MmVhYmQ4ZGEwMGIwMWJlYmEuLjEwYzZhZGUzZjQ3M2I1NGRiYmE3OTA0NTNmMmMwZGU4YTViNmFj
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ1NvbGlkQ29sb3JMYXllckltcGwoKTsKIAog
ICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRyYW5zZm9ybSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSopOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXIm
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsKGludCBpZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcAppbmRleCBlMDZmNzJmNmYyNDliNjFj
NzFhYTNkYWQzMzY0MzFhOGIyZTYyYjNjLi4xMmNiYWI2MjU3MDY2N2M4OGRjODc3MDk2Njg4MzIz
ODhjMjRmOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTkw
LDcgKzkwLDcgQEAgdm9pZCBDQ1RleHR1cmVMYXllckltcGw6OndpbGxEcmF3KExheWVyUmVuZGVy
ZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICB9CiB9CiAKLXZvaWQgQ0NUZXh0dXJlTGF5
ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQordm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQogewogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9p
bnQoKSwgYm91bmRzKCkpOwogICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6
Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fdGV4dHVyZUlkLCBtX2hhc0FscGhh
LCBtX3ByZW11bHRpcGxpZWRBbHBoYSwgbV91dlJlY3QsIG1fZmxpcHBlZCwgbV9pb1N1cmZhY2VT
aXplLCBtX2lvU3VyZmFjZVRleHR1cmVJZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllcklt
cGwuaAppbmRleCBhODFjMzYxNmFlZGI2NDVhMjFhNzM1MGI5MWJkOTNkNjA3ZjhiYzcyLi45MmQx
YTkwYjlmZmNkNTQ4MjExYmM4YzY1MTk2MWNkYWIzNjdjOWYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVMYXllckltcGwuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZp
cnR1YWwgfkNDVGV4dHVyZUxheWVySW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1
YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKik7CisgICAgdmlydHVh
bCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiwgYm9vbCYgdXNlZENoZWNrZXJib2FyZCk7CiAKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5n
PFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhPiBQcm9n
cmFtRmxpcDsKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFN0
cmV0Y2gsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBQcm9ncmFtU3RyZXRjaDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggODc5YWFiZmNjZDFjNjhmMGUzODkzZjk4YjM1MGRj
ODljMDBjNjU1ZS4uZTQxNzNhOGFkNjExM2Y3ZWRjNGI5MDJhYjBhN2Y4NTA4NjNhMTQ1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTU1NSw3ICs1NTUsOSBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKIAogICAgIG1faW5wdXRIYW5k
bGVyT25JbXBsVGhyZWFkLT5hbmltYXRlKG1vbm90b25pY1RpbWUpOwogICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7Ci0gICAgbV9s
YXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6
OkZyYW1lRGF0YSBmcmFtZTsKKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3
KGZyYW1lKTsKKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKIAog
ICAgIC8vIENoZWNrIGZvciBhIHBlbmRpbmcgY29tcG9zaXRlQW5kUmVhZGJhY2suCiAgICAgaWYg
KG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuY3BwCmluZGV4IGExODc3Yjk4N2FmNjVlY2Y3MTU4Yjg3Mjg1ZTZkODgwOWFhNTdmZTQu
LjNmN2IwYjNhYzIxOWE3NjA3NzVhNWViZjAwMThkZmQ4OTQyMzc3NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgVHJhbnNmb3JtYXRpb25N
YXRyaXggQ0NUaWxlZExheWVySW1wbDo6cXVhZFRyYW5zZm9ybSgpIGNvbnN0CiAgICAgcmV0dXJu
IHRyYW5zZm9ybTsKIH0KIAotdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1
YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlKQordm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1
YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJiB1
c2VkQ2hlY2tlcmJvYXJkKQogewogICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHZpc2li
bGVMYXllclJlY3QoKTsKIApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1w
bDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmICghdGlsZSB8
fCAhdGlsZS0+dGV4dHVyZUlkKCkpIHsKLSAgICAgICAgICAgICAgICBxdWFkTGlzdC5hcHBlbmQo
Q0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCBi
YWNrZ3JvdW5kQ29sb3IoKSkpOworICAgICAgICAgICAgICAgIHVzZWRDaGVja2VyYm9hcmQgfD0g
cXVhZExpc3QuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0
YXRlLCB0aWxlUmVjdCwgYmFja2dyb3VuZENvbG9yKCkpKTsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCmluZGV4
IDBiZTY1Nzc0MzhjMDAzNjMxNzQ0Yjc3NzM1Y2E2OWFkMjgzODU0YWQuLjMwYTRhYTYzOGZhZTI4
YWI4YjkwZmQ1MTBkNGRmOGVjY2RjOGFlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1RpbGVk
TGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVy
JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVh
ZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hl
Y2tlcmJvYXJkKTsKIAogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKExheWVy
UmVuZGVyZXJDaHJvbWl1bSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmlu
ZGV4IGI1YWEzZTE3MTUwZmUwNTRmNzNlNTFlZjAwMmE2ZmRhYmY3ZmM2NDcuLmE1NmNmNTg5MTNk
NTRkNjJlZjhjMzQwMTZlODA3YmE4NmE4NDE5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXll
ckltcGwuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxs
RHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAgICAgfQogfQogCi12
b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3Qs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCit2b2lkIENDVmlkZW9M
YXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQogewogICAgIGlmICghbV9mcmFt
ZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCmluZGV4IDRm
YjQ1ZWJkOTcwZmIzZjljOTM5ZTkwYjY5ZTA0Y2RiZGEwYWRkMmYuLmRkYjI3OWM4M2FmZWZkODdk
ZjM2Njc2MWUxMWNlNmE4OWY3YWUzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNDVmlkZW9MYXllckltcGwo
KTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsK
LSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVy
JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRHJhdygpOwogCiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxW
ZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBo
YT4gUkdCQVByb2dyYW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDQW5pbWF0aW9uVGVzdENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDQW5pbWF0aW9uVGVzdENvbW1vbi5jcHAKaW5kZXggYTFkOTdhNTFiYjQ3MzE0ZDBiYTk1YzU0
OTFkNzc2MDA1MmY3NzkzZC4uN2U5YTgxYzllMTNhMDRmZmQ0MzQxMjI3NjQ1MTE2OWI4Zjg5NTVh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRl
c3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRp
b25UZXN0Q29tbW9uLmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllci5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlci5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC01Myw2ICs1NSwyNCBAQCB2b2lkIGFkZE9wYWNpdHlUcmFuc2l0aW9uKFRh
cmdldCYgdGFyZ2V0LCBkb3VibGUgZHVyYXRpb24sIGZsb2F0IHN0YXJ0T3BhY2l0eSwgZgogICAg
IHRhcmdldC5hZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksIDAs
IDAsIDApOwogfQogCit0ZW1wbGF0ZSA8Y2xhc3MgVGFyZ2V0Pgordm9pZCBhZGRBbmltYXRlZFRy
YW5zZm9ybShUYXJnZXQmIHRhcmdldCwgZG91YmxlIGR1cmF0aW9uLCBpbnQgZGVsdGFYLCBpbnQg
ZGVsdGFZKQoreworICAgIHN0YXRpYyBpbnQgaWQgPSAwOworICAgIFdlYkNvcmU6OktleWZyYW1l
VmFsdWVMaXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKKworICAg
IFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKKyAgICBvcGVyYXRpb25zLm9wZXJhdGlv
bnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKGRl
bHRhWCwgRml4ZWQpLCBMZW5ndGgoZGVsdGFZLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6
VFJBTlNMQVRFX1gpKTsKKyAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25W
YWx1ZSgwLCAmb3BlcmF0aW9ucykpOworCisgICAgUmVmUHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9u
ID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKKyAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0
aW9uKTsKKworICAgIEludFNpemUgYm94U2l6ZTsKKworICAgIHRhcmdldC5hZGRBbmltYXRpb24o
dmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksICsraWQsIDAsIDApOworfQorCiB9IC8v
IG5hbWVzcGFjZQogCiBuYW1lc3BhY2UgV2ViS2l0VGVzdHMgewpAQCAtMTMzLDQgKzE1MywxOSBA
QCB2b2lkIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9MYXllcihXZWJDb3JlOjpMYXllckNocm9taXVt
JiBsYXllciwgZG91YmxlIGR1cmF0aW9uLAogICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uKGxheWVy
LCBkdXJhdGlvbiwgc3RhcnRPcGFjaXR5LCBlbmRPcGFjaXR5LCB1c2VUaW1pbmdGdW5jdGlvbik7
CiB9CiAKK3ZvaWQgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xheWVyKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsJiBsYXllciwgZG91YmxlIGR1cmF0aW9uLCBmbG9hdCBzdGFydE9wYWNpdHksIGZsb2F0IGVu
ZE9wYWNpdHksIGJvb2wgdXNlVGltaW5nRnVuY3Rpb24pCit7CisgICAgYWRkT3BhY2l0eVRyYW5z
aXRpb24oKmxheWVyLmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLCBkdXJhdGlvbiwgc3RhcnRP
cGFjaXR5LCBlbmRPcGFjaXR5LCB1c2VUaW1pbmdGdW5jdGlvbik7Cit9CisKK3ZvaWQgYWRkQW5p
bWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKFdlYkNvcmU6OkxheWVyQ2hyb21pdW0mIGxheWVyLCBkb3Vi
bGUgZHVyYXRpb24sIGludCBkZWx0YVgsIGludCBkZWx0YVkpCit7CisgICAgYWRkQW5pbWF0ZWRU
cmFuc2Zvcm0obGF5ZXIsIGR1cmF0aW9uLCBkZWx0YVgsIGRlbHRhWSk7Cit9CisKK3ZvaWQgYWRk
QW5pbWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKFdlYkNvcmU6OkNDTGF5ZXJJbXBsJiBsYXllciwgZG91
YmxlIGR1cmF0aW9uLCBpbnQgZGVsdGFYLCBpbnQgZGVsdGFZKQoreworICAgIGFkZEFuaW1hdGVk
VHJhbnNmb3JtKCpsYXllci5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSwgZHVyYXRpb24sIGRl
bHRhWCwgZGVsdGFZKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0VGVzdHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5oCmlu
ZGV4IDExYTc2YjhhY2IwN2NmOGFiYTc5OTUyZmU4MTQ2MDM0MDZlMzlkYTQuLjIwMzNiZjlkMDBl
M2FjOTBlNzcxYjE5YzM4OTg0MmMxNDU4YTFiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uaApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
Q0NMYXllckltcGw7CiBjbGFzcyBMYXllckNocm9taXVtOwogfQogCkBAIC05OCw2ICs5OSwxMCBA
QCBwcml2YXRlOgogdm9pZCBhZGRPcGFjaXR5VHJhbnNpdGlvblRvQ29udHJvbGxlcihXZWJDb3Jl
OjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciYsIGRvdWJsZSBkdXJhdGlvbiwgZmxvYXQgc3Rh
cnRPcGFjaXR5LCBmbG9hdCBlbmRPcGFjaXR5LCBib29sIHVzZVRpbWluZ0Z1bmN0aW9uKTsKIAog
dm9pZCBhZGRPcGFjaXR5VHJhbnNpdGlvblRvTGF5ZXIoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSYs
IGRvdWJsZSBkdXJhdGlvbiwgZmxvYXQgc3RhcnRPcGFjaXR5LCBmbG9hdCBlbmRPcGFjaXR5LCBi
b29sIHVzZVRpbWluZ0Z1bmN0aW9uKTsKK3ZvaWQgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xheWVy
KFdlYkNvcmU6OkNDTGF5ZXJJbXBsJiwgZG91YmxlIGR1cmF0aW9uLCBmbG9hdCBzdGFydE9wYWNp
dHksIGZsb2F0IGVuZE9wYWNpdHksIGJvb2wgdXNlVGltaW5nRnVuY3Rpb24pOworCit2b2lkIGFk
ZEFuaW1hdGVkVHJhbnNmb3JtVG9MYXllcihXZWJDb3JlOjpMYXllckNocm9taXVtJiwgZG91Ymxl
IGR1cmF0aW9uLCBpbnQgZGVsdGFYLCBpbnQgZGVsdGFZKTsKK3ZvaWQgYWRkQW5pbWF0ZWRUcmFu
c2Zvcm1Ub0xheWVyKFdlYkNvcmU6OkNDTGF5ZXJJbXBsJiwgZG91YmxlIGR1cmF0aW9uLCBpbnQg
ZGVsdGFYLCBpbnQgZGVsdGFZKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0VGVzdHMKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcAppbmRleCBhMTkyYmE1NTdiZjBlYTE2YzIxZTRjMDQyNDJjYjI1ZDA5MGExNzYz
Li40NGRjZDE0MjQyZjUzMTBmYWNmZmZmNzRhNzhhYzdjMmUzY2VhOGFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5oIgogCisjaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFr
ZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCkBAIC0zNiw2ICszNyw3
IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXRUZXN0czsKIAogbmFtZXNwYWNlIHsKIApAQCAtMjUwLDcg
KzI1Miw5IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9uRmFzdFNjcm9sbGFi
bGVSZWdpb25XaXRoT2Zmc2V0KQogICAgIHJvb3QtPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9u
KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgcm9vdC0+c2V0UG9zaXRpb24oRmxvYXRQb2lu
dCgtMjUsIDApKTsKICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkp
OwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsgLy8gVXBkYXRlIGRyYXcgdHJhbnNmb3Jt
cyBzbyB3ZSBjYW4gY29ycmVjdGx5IG1hcCBwb2ludHMgaW50byBsYXllciBzcGFjZS4KKyAgICBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgRVhQRUNUX1RSVUUobV9o
b3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXll
cnMoZnJhbWUpOyAvLyBVcGRhdGUgZHJhdyB0cmFuc2Zvcm1zIHNvIHdlIGNhbiBjb3JyZWN0bHkg
bWFwIHBvaW50cyBpbnRvIGxheWVyIHNwYWNlLgogCiAgICAgLy8gVGhpcyBwb2ludCB3b3VsZCBm
YWxsIGludG8gdGhlIG5vbi1mYXN0IHNjcm9sbGFibGUgcmVnaW9uIGV4Y2VwdCB0aGF0IHdlJ3Zl
IG1vdmVkIHRoZSBsYXllciBkb3duIGJ5IDI1IHBpeGVscy4KICAgICBFWFBFQ1RfRVEobV9ob3N0
SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoNDAsIDEwKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6
OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwpAQCAtMzkwLDcg
KzM5NCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFnZVNjYWxlQW5pbWF0
aW9uKQogICAgIH0KIH0KIAotY2xhc3MgRGlkRHJhd0NoZWNrTGF5ZXIgOiBwdWJsaWMgQ0NMYXll
ckltcGwgeworY2xhc3MgRGlkRHJhd0NoZWNrTGF5ZXIgOiBwdWJsaWMgQ0NUaWxlZExheWVySW1w
bCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8RGlkRHJhd0NoZWNrTGF5ZXI+IGNy
ZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBEaWREcmF3Q2hlY2tMYXllcihpZCkp
OyB9CiAKQEAgLTQwNyw5ICs0MTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWREcmF3Q2FsbGVk
KCkgY29uc3QgeyByZXR1cm4gbV9kaWREcmF3Q2FsbGVkOyB9CiAgICAgYm9vbCB3aWxsRHJhd0Nh
bGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbERyYXdDYWxsZWQ7IH0KIAotcHJpdmF0ZToKK3By
b3RlY3RlZDoKICAgICBleHBsaWNpdCBEaWREcmF3Q2hlY2tMYXllcihpbnQgaWQpCi0gICAgICAg
IDogQ0NMYXllckltcGwoaWQpCisgICAgICAgIDogQ0NUaWxlZExheWVySW1wbChpZCkKICAgICAg
ICAgLCBtX2RpZERyYXdDYWxsZWQoZmFsc2UpCiAgICAgICAgICwgbV93aWxsRHJhd0NhbGxlZChm
YWxzZSkKICAgICB7CkBAIC00MTgsNiArNDIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0RHJh
d3NDb250ZW50KHRydWUpOwogICAgIH0KIAorcHJpdmF0ZToKICAgICBib29sIG1fZGlkRHJhd0Nh
bGxlZDsKICAgICBib29sIG1fd2lsbERyYXdDYWxsZWQ7CiB9OwpAQCAtNDMyLDEwICs0MzcsMTMg
QEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Tm90Q2FsbGVkT25IaWRk
ZW5MYXllcikKICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6
OmNyZWF0ZSgwKSk7CiAgICAgRGlkRHJhd0NoZWNrTGF5ZXIqIHJvb3QgPSBzdGF0aWNfY2FzdDxE
aWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKIAorICAgIENDTGF5
ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKwogICAgIEVYUEVDVF9GQUxTRShyb290
LT53aWxsRHJhd0NhbGxlZCgpKTsKICAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+ZGlkRHJhd0NhbGxl
ZCgpKTsKIAotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRSht
X2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xh
eWVycyhmcmFtZSk7CiAKICAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+d2lsbERyYXdDYWxsZWQoKSk7
CiAgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmRpZERyYXdDYWxsZWQoKSk7CkBAIC00NDgsNyArNDU2
LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Tm90Q2FsbGVkT25I
aWRkZW5MYXllcikKICAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+d2lsbERyYXdDYWxsZWQoKSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmRpZERyYXdDYWxsZWQoKSk7CiAKLSAgICBtX2hvc3RJbXBs
LT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJh
dyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogCiAgICAgRVhQ
RUNUX1RSVUUocm9vdC0+d2lsbERyYXdDYWxsZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUocm9vdC0+
ZGlkRHJhd0NhbGxlZCgpKTsKQEAgLTQ3Nyw3ICs0ODYsOSBAQCBURVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIGRpZERyYXdDYWxsZWRPbkFsbExheWVycykKICAgICBFWFBFQ1RfRkFMU0Uo
bGF5ZXIxLT5kaWREcmF3Q2FsbGVkKCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllcjItPmRpZERy
YXdDYWxsZWQoKSk7CiAKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgQ0NMYXll
clRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgIEVYUEVDVF9UUlVFKG1faG9zdElt
cGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZy
YW1lKTsKIAogICAgIEVYUEVDVF9UUlVFKHJvb3QtPmRpZERyYXdDYWxsZWQoKSk7CiAgICAgRVhQ
RUNUX1RSVUUobGF5ZXIxLT5kaWREcmF3Q2FsbGVkKCkpOwpAQCAtNDg3LDYgKzQ5OCw2OCBAQCBU
RVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdDYWxsZWRPbkFsbExheWVycykK
ICAgICBFWFBFQ1RfVFJVRSghIWxheWVyMS0+cmVuZGVyU3VyZmFjZSgpKTsKIH0KIAorY2xhc3Mg
TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllciA6IHB1YmxpYyBEaWREcmF3Q2hlY2tMYXllciB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8TWlzc2luZ1RleHR1cmVBbmltYXRpbmdM
YXllcj4gY3JlYXRlKGludCBpZCwgYm9vbCB0aWxlTWlzc2luZywgYm9vbCBza2lwc0RyYXcsIGJv
b2wgYW5pbWF0aW5nKSB7IHJldHVybiBhZG9wdFB0cihuZXcgTWlzc2luZ1RleHR1cmVBbmltYXRp
bmdMYXllcihpZCwgdGlsZU1pc3NpbmcsIHNraXBzRHJhdywgYW5pbWF0aW5nKSk7IH0KKworcHJp
dmF0ZToKKyAgICBleHBsaWNpdCBNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyKGludCBpZCwg
Ym9vbCB0aWxlTWlzc2luZywgYm9vbCBza2lwc0RyYXcsIGJvb2wgYW5pbWF0aW5nKQorICAgICAg
ICA6IERpZERyYXdDaGVja0xheWVyKGlkKQorICAgIHsKKyAgICAgICAgT3duUHRyPENDTGF5ZXJU
aWxpbmdEYXRhPiB0aWxpbmdEYXRhID0gQ0NMYXllclRpbGluZ0RhdGE6OmNyZWF0ZShJbnRTaXpl
KDEwLCAxMCksIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CisgICAgICAgIHRp
bGluZ0RhdGEtPnNldEJvdW5kcyhib3VuZHMoKSk7CisgICAgICAgIHNldFRpbGluZ0RhdGEoKnRp
bGluZ0RhdGEuZ2V0KCkpOworICAgICAgICBzZXRTa2lwc0RyYXcoc2tpcHNEcmF3KTsKKyAgICAg
ICAgaWYgKCF0aWxlTWlzc2luZykKKyAgICAgICAgICAgIHB1c2hUaWxlUHJvcGVydGllcygwLCAw
LCAxLCBJbnRSZWN0KCkpOworICAgICAgICBpZiAoYW5pbWF0aW5nKQorICAgICAgICAgICAgYWRk
QW5pbWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKCp0aGlzLCAxMCwgMywgMCk7CisgICAgfQorfTsKKwor
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVuQW5p
bWF0aW9uVXNlc0NoZWNrZXJib2FyZCkKK3sKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOworICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKDEwLCAxMCkpOworCisgICAgLy8gV2hlbiB0aGUgdGV4dHVyZSBpcyBub3Qg
bWlzc2luZywgd2UgZHJhdyBhcyB1c3VhbC4KKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIo
RGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CisgICAgRGlkRHJhd0NoZWNrTGF5ZXIqIHJv
b3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXll
cigpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpj
cmVhdGUoMSwgZmFsc2UsIGZhbHNlLCB0cnVlKSk7CisgICAgRGlkRHJhd0NoZWNrTGF5ZXIqIGxh
eWVyID0gc3RhdGljX2Nhc3Q8TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcio+KHJvb3QtPmNo
aWxkcmVuKClbMF0uZ2V0KCkpOworCisgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRh
IGZyYW1lOworCisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFt
ZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworCisgICAgLy8gV2hlbiBh
IHRleHR1cmUgaXMgbWlzc2luZyBhbmQgd2UncmUgbm90IGFuaW1hdGluZywgd2UgZHJhdyBhcyB1
c3VhbCB3aXRoIGNoZWNrZXJib2FyZGluZy4KKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIo
RGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CisgICAgcm9vdCA9IHN0YXRpY19jYXN0PERp
ZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOworICAgIHJvb3QtPmFk
ZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgxLCB0cnVlLCBmYWxz
ZSwgZmFsc2UpKTsKKyAgICBsYXllciA9IHN0YXRpY19jYXN0PE1pc3NpbmdUZXh0dXJlQW5pbWF0
aW5nTGF5ZXIqPihyb290LT5jaGlsZHJlbigpWzBdLmdldCgpKTsKKworICAgIEVYUEVDVF9UUlVF
KG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3
TGF5ZXJzKGZyYW1lKTsKKworICAgIC8vIFdoZW4gYSB0ZXh0dXJlIGlzIG1pc3NpbmcgYW5kIHdl
J3JlIGFuaW1hdGluZywgd2UgZG9uJ3QgZHJhdyBhbnl0aGluZy4KKyAgICBtX2hvc3RJbXBsLT5z
ZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CisgICAgcm9vdCA9IHN0
YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwor
ICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgx
LCB0cnVlLCBmYWxzZSwgdHJ1ZSkpOworICAgIGxheWVyID0gc3RhdGljX2Nhc3Q8TWlzc2luZ1Rl
eHR1cmVBbmltYXRpbmdMYXllcio+KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOworCisgICAg
RVhQRUNUX0ZBTFNFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKworICAgIC8v
IFdoZW4gdGhlIGxheWVyIHNraXBzIGRyYXcgYW5kIHdlJ3JlIGFuaW1hdGluZywgd2Ugc3RpbGwg
ZHJhdyB0aGUgZnJhbWUuCisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVj
a0xheWVyOjpjcmVhdGUoMCkpOworICAgIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tM
YXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNz
aW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMSwgZmFsc2UsIHRydWUsIHRydWUpKTsK
KyAgICBsYXllciA9IHN0YXRpY19jYXN0PE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIqPihy
b290LT5jaGlsZHJlbigpWzBdLmdldCgpKTsKKworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwt
PnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1l
KTsKK30KKwogY2xhc3MgQmxlbmRTdGF0ZVRyYWNrZXJDb250ZXh0OiBwdWJsaWMgRmFrZVdlYkdy
YXBoaWNzQ29udGV4dDNEIHsKIHB1YmxpYzoKICAgICBCbGVuZFN0YXRlVHJhY2tlckNvbnRleHQo
KSA6IG1fYmxlbmQoZmFsc2UpIHsgfQpAQCAtNTEzLDcgKzU4Niw3IEBAIGNsYXNzIEJsZW5kU3Rh
dGVDaGVja0xheWVyIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc093blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4g
YWRvcHRQdHIobmV3IEJsZW5kU3RhdGVDaGVja0xheWVyKGlkKSk7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhD
Q1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBib29sJikKICAgICB7CiAgICAgICAgIG1fcXVhZHNBcHBlbmRlZCA9IHRydWU7CiAK
QEAgLTU4NCwyNSArNjU3LDMwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxl
bmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICByb290LT5hZGRDaGlsZChCbGVu
ZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsKICAgICBCbGVuZFN0YXRlQ2hlY2tMYXllciog
bGF5ZXIxID0gc3RhdGljX2Nhc3Q8QmxlbmRTdGF0ZUNoZWNrTGF5ZXIqPihyb290LT5jaGlsZHJl
bigpWzBdLmdldCgpKTsKIAorICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFt
ZTsKKwogICAgIC8vIE9wYXF1ZSBsYXllciwgZHJhd24gd2l0aG91dCBibGVuZGluZy4KICAgICBs
YXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRzKHRy
dWUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKLSAgICBtX2hv
c3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAg
IEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKIAogICAgIC8vIExheWVyIHdp
dGggdHJhbnNsdWNlbnQgY29udGVudCwgYnV0IG9wYXF1ZSBjb250ZW50LCBzbyBkcmF3biB3aXRo
b3V0IGJsZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKICAgICBsYXllcjEt
PnNldE9wYXF1ZUNvbnRlbnRzKHRydWUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFs
c2UsIGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RS
VUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRy
YXdMYXllcnMoZnJhbWUpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgp
KTsKIAogICAgIC8vIExheWVyIHdpdGggdHJhbnNsdWNlbnQgY29udGVudCBhbmQgcGFpbnRpbmcs
IHNvIGRyYXduIHdpdGggYmxlbmRpbmcuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUoZmFsc2UpOwog
ICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudHMoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0RXhw
ZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAg
ICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9o
b3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFk
c0FwcGVuZGVkKCkpOwogCiAgICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5LCBk
cmF3biB3aXRoIGJsZW5kaW5nLgpAQCAtNjEwLDcgKzY4OCw4IEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBs
YXllcjEtPnNldE9wYXF1ZUNvbnRlbnRzKHRydWUpOwogICAgIGxheWVyMS0+c2V0T3BhY2l0eSgw
LjUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwotICAgIG1faG9z
dEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJl
VG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAg
RVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCiAgICAgLy8gTGF5ZXIgd2l0
aCB0cmFuc2x1Y2VudCBvcGFjaXR5IGFuZCBwYWludGluZywgZHJhd24gd2l0aCBibGVuZGluZy4K
QEAgLTYxOCw3ICs2OTcsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5k
aW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb250
ZW50cyhmYWxzZSk7CiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgbGF5ZXIxLT5z
ZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygp
OworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAg
ICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEt
PnF1YWRzQXBwZW5kZWQoKSk7CiAKICAgICBsYXllcjEtPmFkZENoaWxkKEJsZW5kU3RhdGVDaGVj
a0xheWVyOjpjcmVhdGUoMikpOwpAQCAtNjMzLDcgKzcxMyw4IEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBs
YXllcjItPnNldE9wYXF1ZUNvbnRlbnRzKHRydWUpOwogICAgIGxheWVyMi0+c2V0T3BhY2l0eSgx
KTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7Ci0gICAgbV9ob3N0
SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVU
b0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBF
WFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5
ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogCkBAIC02NDMsNyArNzI0LDggQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQog
ICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudHMoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0RXhw
ZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIGxheWVyMi0+c2V0RXhwZWN0YXRpb24oZmFsc2Us
IGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUo
bV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdM
YXllcnMoZnJhbWUpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsK
ICAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7CiAKQEAgLTY1Myw3ICs3
MzUsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRy
YXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb250ZW50cyh0cnVlKTsK
ICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAgICAgbGF5ZXIyLT5z
ZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMo
KTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7Cisg
ICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIx
LT5xdWFkc0FwcGVuZGVkKCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRl
ZCgpKTsKIApAQCAtNjY3LDcgKzc1MCw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBsYXllcjEtPnNldE9w
YWNpdHkoMC41KTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCB0cnVlKTsKICAg
ICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7Ci0gICAgbV9ob3N0SW1wbC0+
ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXco
ZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBFWFBFQ1Rf
VFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5x
dWFkc0FwcGVuZGVkKCkpOwogCkBAIC02ODEsNyArNzY1LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIGxh
eWVyMi0+c2V0T3BhcXVlQ29udGVudHModHJ1ZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFjaXR5KDAu
NSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7Ci0gICAgbV9ob3N0
SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVU
b0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBF
WFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5
ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogCkBAIC02OTMsNyArNzc4LDggQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQog
ICAgIGxheWVyMi0+c2V0T3BhcXVlQ29udGVudHMoZmFsc2UpOwogICAgIGxheWVyMi0+c2V0T3Bh
Y2l0eSgxKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKLSAgICBt
X2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJl
cGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwog
ICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKICAgICBFWFBFQ1RfVFJV
RShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7CiAKQEAgLTcwNSw3ICs3OTEsOCBAQCBURVNUX0Yo
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXll
cnMpCiAgICAgbGF5ZXIyLT5zZXRPcGFxdWVDb250ZW50cyh0cnVlKTsKICAgICBsYXllcjItPnNl
dE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwot
ICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBs
LT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFt
ZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogICAgIEVYUEVD
VF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKIApAQCAtNzE2LDcgKzgwMyw4IEBAIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1
ZUxheWVycykKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRzKGZhbHNlKTsKICAgICBsYXll
cjEtPnNldE9wYXF1ZUNvbnRlbnRSZWN0KEludFJlY3QoNSwgNSwgMiwgNSkpOwogICAgIGxheWVy
MS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXll
cnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7
CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5
ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCiAgICAgLy8gTGF5ZXIgd2l0aCBwYXJ0aWFsbHkgb3Bh
cXVlIGNvbnRlbnRzIHBhcnRpYWxseSBjdWxsZWQsIGRyYXduIHdpdGggYmxlbmRpbmcuCkBAIC03
MjYsNyArODE0LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09m
ZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudHMo
ZmFsc2UpOwogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudFJlY3QoSW50UmVjdCg1LCA1LCAy
LCA1KSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7Ci0gICAgbV9o
b3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBh
cmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAg
ICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAKICAgICAvLyBMYXllciB3
aXRoIHBhcnRpYWxseSBvcGFxdWUgY29udGVudHMgY3VsbGVkLCBkcmF3biB3aXRoIGJsZW5kaW5n
LgpAQCAtNzM2LDcgKzgyNSw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxl
bmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBsYXllcjEtPnNldE9wYXF1ZUNv
bnRlbnRzKGZhbHNlKTsKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRSZWN0KEludFJlY3Qo
NSwgNSwgMiwgNSkpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwot
ICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBs
LT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFt
ZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCiAgICAgLy8g
TGF5ZXIgd2l0aCBwYXJ0aWFsbHkgb3BhcXVlIGNvbnRlbnRzIGFuZCB0cmFuc2x1Y2VudCBjb250
ZW50cyBjdWxsZWQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCkBAIC03NDYsNyArODM2LDggQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3Bh
cXVlTGF5ZXJzKQogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudHMoZmFsc2UpOwogICAgIGxh
eWVyMS0+c2V0T3BhcXVlQ29udGVudFJlY3QoSW50UmVjdCg1LCA1LCAyLCA1KSk7CiAgICAgbGF5
ZXIxLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdM
YXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1l
KSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUo
bGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCiB9CkBAIC03ODgsNyArODc5LDkgQEAgVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByZXNoYXBlTm90Q2FsbGVkVW50aWxEcmF3KQogICAg
IG1faG9zdEltcGwtPnNldFJvb3RMYXllcihhZG9wdFB0cihyb290KSk7CiAgICAgRVhQRUNUX0ZB
TFNFKHJlc2hhcGVUcmFja2VyLT5yZXNoYXBlQ2FsbGVkKCkpOwogCi0gICAgbV9ob3N0SW1wbC0+
ZHJhd0xheWVycygpOworICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsK
KyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAg
bV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUocmVzaGFwZVRy
YWNrZXItPnJlc2hhcGVDYWxsZWQoKSk7CiB9CiAKQEAgLTg0MCw4ICs5MzMsMTEgQEAgVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkK
ICAgICByb290LT5hZGRDaGlsZChhZG9wdFB0cihjaGlsZCkpOwogICAgIGxheWVyVHJlZUhvc3RJ
bXBsLT5zZXRSb290TGF5ZXIoYWRvcHRQdHIocm9vdCkpOwogCisgICAgQ0NMYXllclRyZWVIb3N0
SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworCiAgICAgLy8gRmlyc3QgZnJhbWUsIHRoZSBlbnRpcmUg
c2NyZWVuIHNob3VsZCBnZXQgc3dhcHBlZC4KLSAgICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xh
eWVycygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3
KGZyYW1lKSk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAg
IGxheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwogICAgIEludFJlY3QgYWN0dWFsU3dh
cFJlY3QgPSBwYXJ0aWFsU3dhcFRyYWNrZXItPnBhcnRpYWxTd2FwUmVjdCgpOwogICAgIEludFJl
Y3QgZXhwZWN0ZWRTd2FwUmVjdCA9IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSg1
MDAsIDUwMCkpOwpAQCAtODU1LDcgKzk1MSw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAgICAgLy8gZXhwZWN0ZWQgZGFt
YWdlIHJlY3Q6IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSgyNiwgMjgpKTsKICAg
ICAvLyBleHBlY3RlZCBzd2FwIHJlY3Q6IHZlcnRpY2FsbHkgZmxpcHBlZCwgd2l0aCBvcmlnaW4g
YXQgYm90dG9tIGxlZnQgY29ybmVyLgogICAgIGNoaWxkLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50
KDAsIDApKTsKLSAgICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVD
VF9UUlVFKGxheWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbGF5
ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAgIGxheWVyVHJlZUhvc3RJbXBs
LT5zd2FwQnVmZmVycygpOwogICAgIGFjdHVhbFN3YXBSZWN0ID0gcGFydGlhbFN3YXBUcmFja2Vy
LT5wYXJ0aWFsU3dhcFJlY3QoKTsKICAgICBleHBlY3RlZFN3YXBSZWN0ID0gSW50UmVjdChJbnRQ
b2ludCgwLCA1MDAtMjgpLCBJbnRTaXplKDI2LCAyOCkpOwpAQCAtODY5LDcgKzk2Niw4IEBAIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFnZVJl
Y3QpCiAgICAgLy8gZXhwZWN0ZWQgc3dhcCByZWN0OiBmbGlwcGVkIGRhbWFnZSByZWN0LCBidXQg
YWxzbyBjbGFtcGVkIHRvIHZpZXdwb3J0CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdw
b3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogICAgIHJvb3QtPnNldE9wYWNpdHkoMC43KTsgLy8g
dGhpcyB3aWxsIGRhbWFnZSBldmVyeXRoaW5nCi0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdM
YXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllclRyZWVIb3N0SW1wbC0+cHJlcGFyZVRvRHJh
dyhmcmFtZSkpOworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAg
ICBsYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKICAgICBhY3R1YWxTd2FwUmVjdCA9
IHBhcnRpYWxTd2FwVHJhY2tlci0+cGFydGlhbFN3YXBSZWN0KCk7CiAgICAgZXhwZWN0ZWRTd2Fw
UmVjdCA9IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSgxMCwgMTApKTsKQEAgLTkw
MCwxOSArOTk4LDI0IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdmlzaWJpbGl0
eUNoYW5nZVJlc2V0c0RhbWFnZSkKICAgICByb290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAg
ICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFJvb3RMYXllcihhZG9wdFB0cihyb290KSk7CiAKKyAg
ICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisKICAgICAvLyBGaXJzdCBm
cmFtZTogaWdub3JlLgotICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAg
RVhQRUNUX1RSVUUobGF5ZXJUcmVlSG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAg
ICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgbGF5ZXJUcmVlSG9z
dEltcGwtPnN3YXBCdWZmZXJzKCk7CiAKICAgICAvLyBTZWNvbmQgZnJhbWU6IG5vdGhpbmcgaGFz
IGNoYW5nZWQgLS0tIHNvIHdlIHNvdWxkbid0IHB1c2ggYW55dGhpbmcgd2l0aCBwYXJ0aWFsIHN3
YXAuCi0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJV
RShsYXllclRyZWVIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIGxheWVyVHJl
ZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c3dh
cEJ1ZmZlcnMoKTsKICAgICBFWFBFQ1RfVFJVRShwYXJ0aWFsU3dhcFRyYWNrZXItPnBhcnRpYWxT
d2FwUmVjdCgpLmlzRW1wdHkoKSk7CiAKICAgICAvLyBUaGlyZCBmcmFtZTogdmlzaWJpbGl0eSBj
aGFuZ2UgLS0tIHNvIHdlIHNob3VsZCBwdXNoIGEgZnVsbCBmcmFtZSB3aXRoIHBhcnRpYWwgc3dh
cC4KICAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJsZShmYWxzZSk7CiAgICAgbGF5ZXJU
cmVlSG9zdEltcGwtPnNldFZpc2libGUodHJ1ZSk7Ci0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRy
YXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllclRyZWVIb3N0SW1wbC0+cHJlcGFyZVRv
RHJhdyhmcmFtZSkpOworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsK
ICAgICBsYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKICAgICBJbnRSZWN0IGFjdHVh
bFN3YXBSZWN0ID0gcGFydGlhbFN3YXBUcmFja2VyLT5wYXJ0aWFsU3dhcFJlY3QoKTsKICAgICBJ
bnRSZWN0IGV4cGVjdGVkU3dhcFJlY3QgPSBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIEludFNp
emUoNTAwLCA1MDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDVmN2ZiY2EwYzBmNmJkNTNiMDc3NmJiY2M0ODA5
NzQ4NDE3YjI1ZDguLmM3MjM4MzcwMmMxMTNlMjEwYzM0NDI2Nzk3N2Q5NWE4OTMxYjRlZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBUZXN0SG9va3MgOiBwdWJsaWMgQ0NMYXll
ckFuaW1hdGlvbkRlbGVnYXRlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21t
aXRPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
Y29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvRHJhd09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCop
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhv
c3RJbXBsKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXllcnMoQ0NMYXllclRyZWVI
b3N0SW1wbCosIGRvdWJsZSBtb25vdG9uaWNUaW1lKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBw
bHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiwgZmxvYXQpIHsgfQpAQCAtOTUsOSArOTYs
MTYgQEAgcHVibGljOgogICAgICAgICBtX3Rlc3RIb29rcy0+Y29tbWl0Q29tcGxldGVPbkNDVGhy
ZWFkKHRoaXMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKCkKKyAgICB2
aXJ0dWFsIGJvb2wgcHJlcGFyZVRvRHJhdyhGcmFtZURhdGEmIGZyYW1lKQogICAgIHsKLSAgICAg
ICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycygpOworICAgICAgICBib29sIHJlc3Vs
dCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OnByZXBhcmVUb0RyYXcoZnJhbWUpOworICAgICAgICBt
X3Rlc3RIb29rcy0+cHJlcGFyZVRvRHJhd09uQ0NUaHJlYWQodGhpcyk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnMoY29uc3QgRnJh
bWVEYXRhJiBmcmFtZSkKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdM
YXllcnMoZnJhbWUpOwogICAgICAgICBtX3Rlc3RIb29rcy0+ZHJhd0xheWVyc09uQ0NUaHJlYWQo
dGhpcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1
YWRDdWxsZXJUZXN0LmNwcAppbmRleCBjMWJiY2U2MjUyNmQxNTNiZTU4MjllNWE5YWZhZjk5N2Y4
MTc5ZDhhLi5hZWYwZDZlZjVhOTZjNTc0MWFhZjVmYmIzNTRhYmNkMGU2Nzc1ZDc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAg
LTgyLDcgKzgyLDggQEAgc3RhdGljIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExp
c3QsIFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4KIHsKICAgICBDQ1F1YWRDdWxs
ZXIgcXVhZEN1bGxlcihxdWFkTGlzdCwgbGF5ZXIsICZvY2NsdXNpb25UcmFja2VyKTsKICAgICBP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVT
aGFyZWRRdWFkU3RhdGUoKTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hh
cmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsK
KyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgp
LCB1c2VkQ2hlY2tlcmJvYXJkKTsKICAgICBzaGFyZWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1
YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcAppbmRleCA3Yzc0M2Qy
YTc2NmFjMDI3NTY3Mjk0NjU3YWQ0ZjQ4MWZiOGFjMjE3Li4xMmY4YzIyNGRlNTFmYzc5Y2VjNGVk
NGQ5NGFhNTAzYjk3YjBkMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTUyLDcgKzUyLDgg
QEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LCB2ZXJpZnlUaWxpbmdDb21wbGV0ZUFu
ZE5vT3ZlcmxhcCkKICAgICBsYXllci0+c2V0Qm91bmRzKGxheWVyU2l6ZSk7CiAKICAgICBPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFy
ZWRRdWFkU3RhdGUoKTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVk
UXVhZFN0YXRlLmdldCgpKTsKKyAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAg
ICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1
c2VkQ2hlY2tlcmJvYXJkKTsKIAogICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChxdWFk
Q3VsbGVyLnF1YWRMaXN0KCksIHZpc2libGVMYXllclJlY3QpOwogfQpAQCAtNzMsNyArNzQsOCBA
QCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RCYWNrZ3JvdW5k
Q29sb3JJblF1YWQpCiAgICAgbGF5ZXItPnNldEJhY2tncm91bmRDb2xvcih0ZXN0Q29sb3IpOwog
CiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+
Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0gICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxs
ZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7CisgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0g
ZmFsc2U7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0
ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CiAKICAgICBBU1NFUlRfRVEocXVhZEN1bGxlci5x
dWFkTGlzdCgpLnNpemUoKSwgMVUpOwogICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0
KClbMF0tPnRvU29saWRDb2xvckRyYXdRdWFkKCktPmNvbG9yKCksIHRlc3RDb2xvcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3Qu
Y3BwCmluZGV4IGZlOGNhOGViMDIxN2FmNTIzMzI0ZTIwY2M3NGVhZjFjNTNkZGE4ZmYuLjU3Y2Fh
N2RjMTcxNGExZjllNTJlNTIxYzU4ZDQwMzkyNTM1MzdiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwCkBAIC03Miw3
ICs3Miw4IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGVtcHR5UXVhZExpc3QpCiAgICAg
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXpl
LCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAgICAgICAg
IE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7
Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUu
Z2V0KCkpOworICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAgICAgICAg
bGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNl
ZENoZWNrZXJib2FyZCk7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIG51bVRpbGVzID0gbnVtVGls
ZXNYICogbnVtVGlsZXNZOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgp
LnNpemUoKSwgbnVtVGlsZXMpOwogICAgIH0KQEAgLTg0LDcgKzg1LDggQEAgVEVTVChDQ1RpbGVk
TGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKIAogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVy
IHF1YWRDdWxsZXI7CiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVh
ZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgICAgICBsYXllci0+
YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICAgICAg
Ym9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFk
cyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwog
ICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAg
IH0KIApAQCAtOTcsNyArOTksOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1
YWRMaXN0KQogCiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKICAgICAgICAg
T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRl
U2hhcmVkUXVhZFN0YXRlKCk7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQg
PSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1
YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFk
Q3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAwdSk7CiAgICAgfQogCkBAIC0xMDgsNyArMTExLDgg
QEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKIAogICAgICAgICBN
b2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7CiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwot
ICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdl
dCgpKTsKKyAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7CisgICAgICAgIGxh
eWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRD
aGVja2VyYm9hcmQpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNp
emUoKSwgMHUpOwogICAgIH0KIH0KQEAgLTEyOCw4ICsxMzIsMTAgQEAgVEVTVChDQ1RpbGVkTGF5
ZXJJbXBsVGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogICAgIC8vIE5vIGNoZWNrZXJib2FyZGluZwog
ICAgIHsKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBsYXll
ci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICAg
ICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7CisgICAgICAgIGxheWVyLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQp
OwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgNHUpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0UodXNlZENoZWNrZXJib2FyZCk7CiAKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCiAgICAg
ICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpLCBD
Q0RyYXdRdWFkOjpUaWxlZENvbnRlbnQpOwpAQCAtMTQyLDcgKzE0OCw5IEBAIFRFU1QoQ0NUaWxl
ZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKICAgICAvLyBBbGwgY2hlY2tlcmJvYXJk
aW5nCiAgICAgewogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAg
IGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOwor
ICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFw
cGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJi
b2FyZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKHVzZWRDaGVja2VyYm9hcmQpOwogICAgICAgICBF
WFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgNHUpOwogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkKICAg
ICAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCks
IENDRHJhd1F1YWQ6OlNvbGlkQ29sb3IpOwpAQCAtMTU3LDcgKzE2NSw4IEBAIHN0YXRpYyBQYXNz
T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkcywgSW50
U2l6ZSB0aWxlU2l6CiAKICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIocXVhZHMpOwog
ICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNy
ZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZh
bHNlOworICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUu
Z2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwogICAgIHJldHVybiBzaGFyZWRRdWFkU3RhdGUucmVs
ZWFzZSgpOyAvLyBUaGUgc2hhcmVkIGRhdGEgbXVzdCBiZSBvd25lZCBhcyBsb25nIGFzIHRoZSBx
dWFkIGxpc3QgZXhpc3RzLgogfQogCkBAIC0yNzUsNyArMjg0LDggQEAgVEVTVChDQ1RpbGVkTGF5
ZXJJbXBsVGVzdCwgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQogICAgICAgICBPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFk
U3RhdGUoKTsKIAogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAg
IGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOwor
ICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFw
cGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJi
b2FyZCk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCBu
dW1UaWxlcyk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1
YWRMaXN0KCkuc2l6ZSgpOyArK2kpCkBAIC0yOTAsNyArMzAwLDggQEAgVEVTVChDQ1RpbGVkTGF5
ZXJJbXBsVGVzdCwgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQogCiAgICAgICAgIE93blB0cjxD
Q1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1
YWRTdGF0ZSgpOwogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAg
IGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOwor
ICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFw
cGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJi
b2FyZCk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRM
aXN0KCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFk
TGlzdCgpW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yKTsKQEAgLTMwNiw3
ICszMTcsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBiYWNrZ3JvdW5kQ292ZXJzVmll
d3BvcnQpCiAKICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3Rh
dGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAgICAgICAgIE1vY2tDQ1F1YWRD
dWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIs
IHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7CisgICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9
IGZhbHNlOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVh
ZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKIAogICAgICAgICB1bnNpZ25lZCBudW1D
b250ZW50VGlsZXMgPSAwLCBudW1HdXR0ZXJUaWxlcyA9IDA7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKTsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCmluZGV4IDc5MWFm
NTAzM2Y3OGY2NjEwYWEyNjY1MmIzNGJiOGRmZTA3ZjhkYjkuLmQ5Y2QzMTMyNjgzMGJkMTIyMDMx
Y2YwYzhlMThlZGNkOTBlYzk1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvTW9ja0NDUXVhZEN1bGxlci5oCkBAIC00NCwxMSArNDQsMTQgQEAgcHVibGljOgogICAgICAg
ICAsIG1fYWN0aXZlUXVhZExpc3QoZXh0ZXJuYWxRdWFkTGlzdCkKICAgICB7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmQoV1RGOjpQYXNzT3duUHRyPFdlYkNvcmU6OkNDRHJhd1F1YWQ+IG5l
d1F1YWQpCisgICAgdmlydHVhbCBib29sIGFwcGVuZChXVEY6OlBhc3NPd25QdHI8V2ViQ29yZTo6
Q0NEcmF3UXVhZD4gbmV3UXVhZCkKICAgICB7CiAgICAgICAgIE93blB0cjxXZWJDb3JlOjpDQ0Ry
YXdRdWFkPiBkcmF3UXVhZCA9IG5ld1F1YWQ7Ci0gICAgICAgIGlmICghZHJhd1F1YWQtPnF1YWRS
ZWN0KCkuaXNFbXB0eSgpKQorICAgICAgICBpZiAoIWRyYXdRdWFkLT5xdWFkUmVjdCgpLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgbV9hY3RpdmVRdWFkTGlzdC5hcHBlbmQoZHJhd1F1YWQucmVs
ZWFzZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICBjb25zdCBXZWJDb3JlOjpDQ1F1YWRMaXN0JiBxdWFk
TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlUXVhZExpc3Q7IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133251</attachid>
            <date>2012-03-22 07:00:06 -0700</date>
            <delta_ts>2012-03-22 08:09:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81437-20120322100005.patch</filename>
            <type>text/plain</type>
            <size>60253</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2YTU4Y2MzOGVjOWQ2
ODBjNDlhN2JmY2Y1Y2Y0ZDZiNmNiMzI3OS4uMmQ1YTBiZDFhN2IxYzAxY2I0MGRlYmU3OWI2NDVl
ODkyMTk4Mjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAzLTIxICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRWFy
bHkgb3V0IGluIGEgbmV3IHByZXBhcmVUb0RyYXcoKSBzdGVwIGlmIGNoZWNrZXJib2FyZGluZyBh
biBhY2NlbGVyYXRlZCBhbmltYXRpb24gaW4gb3JkZXIgdG8gc2tpcCB0aGUgZnJhbWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAgICAgIFNwbGl0IENDTGF5ZXJU
cmVlSG9zdEltcGw6OmRyYXdMYXllcnMoKSBpbnRvIHR3byBwaGFzZXM6CisgICAgICAgIHByZXBh
cmVUb0RyYXcoKSBhbmQgZHJhd0xheWVycygpLgorCisgICAgICAgIFdoZW4gY2FsY3VsYXRpbmcg
YSBSZW5kZXJQYXNzLCBhbmQgd2UgY2hlY2tlcmJvYXJkIGEgcXVhZCBvbiBhCisgICAgICAgIGxh
eWVyLCBidWJibGUgdGhpcyBpbmZvIGJhY2sgdXAgdG8gQ0NMYXllclRyZWVIb3N0SW1wbC4gSWYg
dGhlCisgICAgICAgIGxheWVyIGlzIHRyYW5zZm9ybWluZyBpbiBhbiBhbmltYXRpb24sIHRoZW4g
YWJvcnQgdGhlIHByZXBhcmVUb0RyYXcoKQorICAgICAgICBwaGFzZSBhbmQgY2F1c2UgaXQgdG8g
cmV0dXJuIGZhbHNlIGJhY2sgdG8gdGhlIHRocmVhZCBwcm94eS4KKworICAgICAgICBVbml0IHRl
c3Q6IENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LnByZXBhcmVUb0RyYXdGYWlsc1doZW5BbmltYXRp
b25Vc2VzQ2hlY2tlcmJvYXJkCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YXBw
ZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdM
YXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAo
RnJhbWVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1
YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjphcHBlbmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oOgor
ICAgICAgICAoQ0NRdWFkQ3VsbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNz
OjphcHBlbmRRdWFkc0ZvckxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAgICAgICAgKENDUmVuZGVyUGFzcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVy
SW1wbC5oOgorICAgICAgICAoQ0NTY3JvbGxiYXJMYXllckltcGwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21wb3NpdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NvbGlkQ29sb3JMYXllckltcGw6OmFwcGVuZFF1YWRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXll
ckltcGwuaDoKKyAgICAgICAgKENDU29saWRDb2xvckxheWVySW1wbCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oOgorICAg
ICAgICAoQ0NUZXh0dXJlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RpbGVk
TGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmFw
cGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1ZpZGVvTGF5ZXJJbXBsKToKKwogMjAxMi0wMy0y
MSAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVhbHBo
YWJldGl6ZSBhYm91dCB3ZWJhdWRpbyBtb3ZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGFiOWNmNWZmYmNmMzhiZDcyZGNhNWVkNjA3M2Q1NjRmODViZmExOTYuLjNiMWZlMGQ2YTNjYTI3
ODNmOTQzNGVjMDFhODljOWNmNjA0OGE2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTItMDMtMjEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFYXJseSBvdXQgaW4gYSBuZXcgcHJlcGFyZVRv
RHJhdygpIHN0ZXAgaWYgY2hlY2tlcmJvYXJkaW5nIGFuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbiBp
biBvcmRlciB0byBza2lwIHRoZSBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MzcKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBX
YWxrZXIuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRBbmltYXRlZFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJLaXRUZXN0czo6YWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xheWVyKToKKyAg
ICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjphZGRBbmltYXRlZFRy
YW5zZm9ybVRvTGF5ZXIpOgorICAgICAgICAqIHRlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlRFU1RfRik6CisgICAgICAgIChEaWREcmF3Q2hlY2tMYXllcik6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6RGlkRHJhd0NoZWNrTGF5ZXI6OkRpZERyYXdDaGVja0xheWVyKToKKyAgICAgICAgKE1p
c3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViS2l0VGVzdHM6Ok1pc3Np
bmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXll
cik6CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6QmxlbmRT
dGF0ZUNoZWNrTGF5ZXI6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6VGVzdEhvb2tzOjpwcmVwYXJlVG9EcmF3T25D
Q1RocmVhZCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRv
RHJhdyk6CisgICAgICAgIChNb2NrTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV1RGOjpN
b2NrTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMpOgorICAgICAgICAqIHRlc3RzL0NDUXVh
ZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUXVhZHMpOgorICAgICAg
ICAqIHRlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXll
clRlc3RDb21tb246OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0
LmNwcDoKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpURVNUKToKKyAgICAgICAgKENDTGF5
ZXJUZXN0Q29tbW9uOjpnZXRRdWFkcyk6CisgICAgICAgICogdGVzdHMvTW9ja0NDUXVhZEN1bGxl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NDUXVhZEN1bGxlcjo6YXBwZW5kKToKKwogMjAx
Mi0wMy0yMSAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtDaHJvbWl1bV0gR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIGFuZCBHTF9DSFJPTUlV
TV9jb21tYW5kX2J1ZmZlcl9xdWVyeSBzdXBwb3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmlu
ZGV4IDY5ZjA2MWYwMGRkNGMyZDY4Y2Y1Njg3NzY1OWNiOGEzN2M1NzFiNjYuLjJhZmI5ZDhmZjc0
MWY5MzM1OTU2NmExNjlmZDQzNzI5NzAyYTc5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAK
QEAgLTEzNiw3ICsxMzYsNyBAQCBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBDQ0xheWVy
SW1wbDo6Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29uc3QKICAgICByZXR1cm4gQ0NTaGFyZWRR
dWFkU3RhdGU6OmNyZWF0ZShxdWFkVHJhbnNmb3JtKCksIGRyYXdUcmFuc2Zvcm0oKSwgdmlzaWJs
ZUxheWVyUmVjdCgpLCBsYXllckNsaXBSZWN0LCBkcmF3T3BhY2l0eSgpLCBvcGFxdWUoKSk7CiB9
CiAKLXZvaWQgQ0NMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3Qs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCit2b2lkIENDTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICBhcHBlbmRHdXR0ZXJRdWFk
cyhxdWFkTGlzdCwgc2hhcmVkUXVhZFN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4
IGJlZTlmMWJiNWNmMDE1NWJkMDdkOGQzOGQwMDkwMWQwMzc1MjYzN2IuLjc0YTAzOWVmYjBlNDNh
OTBkYTcyNjE1MjFmMGEwMzgzNzVjOTFmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtODQs
NyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBj
cmVhdGVTaGFyZWRRdWFkU3RhdGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXco
TGF5ZXJSZW5kZXJlckNocm9taXVtKikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRz
KENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKik7CisgICAgdmlydHVhbCB2
b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
Ym9vbCYgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKSB7IH0K
ICAgICB2b2lkIGFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSopIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCmluZGV4IDBhYmZhZTE4OGRiOWZlMjNlN2UzMzM1NTY0ZjMwMzJlYjU5NTY5YWUuLjQ0
M2ExZmZhYTc3YmEwZWU1MjAyOWRmMGUzYWIxNDk2N2Y0YzUyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yMjAsOSArMjIwLDEwIEBAIHN0YXRpYyBGbG9h
dFJlY3QgZGFtYWdlSW5TdXJmYWNlU3BhY2UoQ0NMYXllckltcGwqIHJlbmRlclN1cmZhY2VMYXll
ciwgY29uc3QgRmxvCiAgICAgcmV0dXJuIHN1cmZhY2VEYW1hZ2VSZWN0OwogfQogCi12b2lkIEND
TGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0
JiBwYXNzZXMsIENDTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQorYm9vbCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYg
cGFzc2VzLCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIHsKLSAgICBUUkFD
RV9FVkVOVDEoIndlYmtpdCIsICJDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQ
YXNzZXMiLCAicmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkiLCBzdGF0aWNfY2FzdDxsb25n
IGxvbmcgdW5zaWduZWQ+KHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpKSk7CisgICAgQVNT
RVJUKHBhc3Nlcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LmlzRW1wdHkoKSk7CiAKICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5
ZXIoKSk7CiAKQEAgLTIzOSw2ICsyNDAsOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNh
bGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZQogICAg
ICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlz
aWJpbGl0eShyb290TGF5ZXIoKSwgcm9vdExheWVyKCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0
eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgcm9vdExheWVyKCktPnJlbmRlclN1cmZh
Y2UoKS0+bGF5ZXJMaXN0KCksICZtX2xheWVyU29ydGVyLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKCkubWF4VGV4dHVyZVNpemUpOwogICAgIH0KIAorICAgIFRSQUNFX0VWRU5UMSgid2Via2l0
IiwgIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyIsICJyZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LnNpemUoKSIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZyB1bnNpZ25lZD4o
cmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkpKTsKKwogICAgIGlmIChsYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKCkudXNpbmdQYXJ0aWFsU3dhcCkKICAgICAgICAgdHJhY2tEYW1hZ2VGb3JB
bGxTdXJmYWNlcyhyb290TGF5ZXIoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgbV9y
b290RGFtYWdlUmVjdCA9IHJvb3RMYXllcigpLT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNr
ZXIoKS0+Y3VycmVudERhbWFnZVJlY3QoKTsKQEAgLTI3Miw2ICsyNzUsOSBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBw
YXNzZXMsIENDTGF5ZQogICAgIC8vIEFkZCBxdWFkcyB0byB0aGUgUmVuZGVyIHBhc3NlcyBpbiBG
cm9udFRvQmFjayBvcmRlciB0byBhbGxvdyBmb3IgdGVzdGluZyBvY2NsdXNpb24gYW5kIHBlcmZv
cm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRyZWUgd2Fsay4KICAgICB0eXBlZGVmIENDTGF5ZXJJ
dGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFj
ZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5
cGU7CiAKKyAgICAvLyBJZiB3ZSBhcmUgdW5hYmxlIHRvIGRyYXcgYW4gYW5pbWF0aW9uIG9uIHNv
bWUgbGF5ZXIsIHRoZW4gd2UgYWJvcnQgdGhlIGVudGlyZSBmcmFtZS4KKyAgICBib29sIGRyYXdG
cmFtZSA9IHRydWU7CisKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVy
YXRvclR5cGU6OmVuZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgZm9yIChDQ0xheWVy
SXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgQ0NSZW5kZXJTdXJmYWNl
KiByZW5kZXJTdXJmYWNlID0gaXQudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCktPnJlbmRlclN1
cmZhY2UoKTsKQEAgLTI5NSwxMSArMzAxLDIzIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6
Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAg
ICAgICAgIH0KIAogICAgICAgICBpdC0+d2lsbERyYXcobV9sYXllclJlbmRlcmVyLmdldCgpKTsK
LSAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2Vy
KTsKKworICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAgICAgICAgcGFz
cy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2VyLCB1c2VkQ2hlY2tl
cmJvYXJkKTsKKyAgICAgICAgaWYgKHVzZWRDaGVja2VyYm9hcmQpIHsKKyAgICAgICAgICAgIGJv
b2wgbGF5ZXJIYXNBbmltYXRpbmdUcmFuc2Zvcm0gPSBpdC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm1J
c0FuaW1hdGluZygpIHx8IGl0LT5kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmcoKTsKKyAgICAgICAg
ICAgIGlmIChsYXllckhhc0FuaW1hdGluZ1RyYW5zZm9ybSkgeworICAgICAgICAgICAgICAgIGRy
YXdGcmFtZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcigqaXQpOwogICAgIH0KIAotICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNz
KCkucmVjb3JkTWV0cmljcyh0aGlzKTsKKyAgICBpZiAoZHJhd0ZyYW1lKQorICAgICAgICBvY2Ns
dXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnJlY29yZE1ldHJpY3ModGhpcyk7CisgICAg
cmV0dXJuIGRyYXdGcmFtZTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRl
TGF5ZXJzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBjdXJyZW50LCBkb3VibGUgbW9ub3RvbmljVGlt
ZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKiBldmVudHMs
IGJvb2wmIGRpZEFuaW1hdGUsIGJvb2wmIG5lZWRzQW5pbWF0ZUxheWVycykKQEAgLTMzOSwyNiAr
MzU3LDM5IEBAIEludFNpemUgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGVudFNpemUoKSBjb25z
dAogICAgIHJldHVybiBtX3Njcm9sbExheWVySW1wbC0+Y2hpbGRyZW4oKVswXS0+Y29udGVudEJv
dW5kcygpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoKQorYm9v
bCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiB7
Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMiLCB0aGlz
LCAwKTsKLSAgICBBU1NFUlQobV9sYXllclJlbmRlcmVyKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NM
YXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyIsIHRoaXMsIDApOworCisgICAgZnJhbWUu
cmVuZGVyUGFzc2VzLmNsZWFyKCk7CisgICAgZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdC5j
bGVhcigpOwogCiAgICAgaWYgKCFyb290TGF5ZXIoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBDQ1JlbmRlclBhc3NMaXN0IHBhc3NlczsKLSAgICBDQ0xh
eWVyTGlzdCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIGNhbGN1bGF0ZVJlbmRlclBhc3Nl
cyhwYXNzZXMsIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIGlmICghY2FsY3VsYXRlUmVu
ZGVyUGFzc2VzKGZyYW1lLnJlbmRlclBhc3NlcywgZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlz
dCkpIHsKKyAgICAgICAgZnJhbWUucmVuZGVyUGFzc2VzLmNsZWFyKCk7CisgICAgICAgIGZyYW1l
LnJlbmRlclN1cmZhY2VMYXllckxpc3QuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIC8vIElmIHdlIHJldHVybiB0cnVlLCB0aGVuIHdlIGV4cGVjdCBkcmF3TGF5
ZXJzKCkgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZ2Fpbi4K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5
ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJU
cmVlSG9zdEltcGw6OmRyYXdMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQobV9sYXllclJl
bmRlcmVyKTsKIAogICAgIG1fbGF5ZXJSZW5kZXJlci0+YmVnaW5EcmF3aW5nRnJhbWUoKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhc3Nlcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9s
YXllclJlbmRlcmVyLT5kcmF3UmVuZGVyUGFzcyhwYXNzZXNbaV0uZ2V0KCkpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKTsgKytpKQorICAgICAg
ICBtX2xheWVyUmVuZGVyZXItPmRyYXdSZW5kZXJQYXNzKGZyYW1lLnJlbmRlclBhc3Nlc1tpXS5n
ZXQoKSk7CiAKICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9y
PENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6
QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKLSAgICBDQ0xheWVySXRlcmF0b3JU
eXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCk7Ci0gICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlw
ZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmZnJh
bWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBl
IGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJmZyYW1lLnJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNJdHNl
bGYoKSAmJiAhaXQtPnZpc2libGVMYXllclJlY3QoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBp
dC0+ZGlkRHJhdygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApp
bmRleCAzMTQ5NDc0YzRiNThhNWM1ZDBlZTcwYjYzYTYxMWFlMmU4MmMxMmM2Li5lMGM2ZTczYTMz
NDIwZGQ0N2QwOTU0Mjg2MmNiOWE0OGEwYWQxY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKIC8vIENDTGF5ZXJUcmVlSG9z
dEltcGwgb3ducyB0aGUgQ0NMYXllckltcGwgdHJlZSBhcyB3ZWxsIGFzIGFzc29jaWF0ZWQgcmVu
ZGVyaW5nIHN0YXRlCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsIDogcHVibGljIENDSW5wdXRI
YW5kbGVyQ2xpZW50LCBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENDTGF5ZXJUcmVlSG9zdEltcGwpOworICAgIHR5cGVkZWYgVmVjdG9yPEND
TGF5ZXJJbXBsKj4gQ0NMYXllckxpc3Q7CisKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0
cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoY29uc3QgQ0NTZXR0aW5ncyYsIENDTGF5ZXJU
cmVlSG9zdEltcGxDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3RJbXBsKCk7
CkBAIC03NywxMSArNzksMTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPik7CiAg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7CiAKKyAgICBzdHJ1Y3QgRnJhbWVE
YXRhIHsKKyAgICAgICAgQ0NSZW5kZXJQYXNzTGlzdCByZW5kZXJQYXNzZXM7CisgICAgICAgIEND
TGF5ZXJMaXN0IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgfTsKKwogICAgIC8vIFZpcnR1
YWwgZm9yIHRlc3RpbmcuCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0KCk7CiAgICAgdmly
dHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91
YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhd0xheWVycygpOworICAgIHZpcnR1YWwgYm9vbCBwcmVwYXJlVG9EcmF3KEZyYW1lRGF0
YSYpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKGNvbnN0IEZyYW1lRGF0YSYpOwogCiAg
ICAgLy8gTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmly
dHVhbCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdw
b3J0U2l6ZTsgfQpAQCAtMTUxLDggKzE1OSw2IEBAIHByb3RlY3RlZDoKICAgICBpbnQgbV9mcmFt
ZU51bWJlcjsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIFZlY3RvcjxDQ0xheWVySW1wbCo+IEND
TGF5ZXJMaXN0OwotCiAgICAgdm9pZCBjb21wdXRlRG91YmxlVGFwWm9vbURlbHRhcyhDQ1Njcm9s
bEFuZFNjYWxlU2V0KiBzY3JvbGxJbmZvKTsKICAgICB2b2lkIGNvbXB1dGVQaW5jaFpvb21EZWx0
YXMoQ0NTY3JvbGxBbmRTY2FsZVNldCogc2Nyb2xsSW5mbyk7CiAgICAgdm9pZCBtYWtlU2Nyb2xs
QW5kU2NhbGVTZXQoQ0NTY3JvbGxBbmRTY2FsZVNldCogc2Nyb2xsSW5mbywgY29uc3QgSW50U2l6
ZSYgc2Nyb2xsT2Zmc2V0LCBmbG9hdCBwYWdlU2NhbGUpOwpAQCAtMTYyLDcgKzE2OCw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhZGp1c3RTY3JvbGxzRm9yUGFnZVNjYWxlQ2hhbmdlKGZsb2F0KTsK
ICAgICB2b2lkIHVwZGF0ZU1heFNjcm9sbFBvc2l0aW9uKCk7CiAgICAgdm9pZCB0cmFja0RhbWFn
ZUZvckFsbFN1cmZhY2VzKENDTGF5ZXJJbXBsKiByb290RHJhd0xheWVyLCBjb25zdCBDQ0xheWVy
TGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7Ci0gICAgdm9pZCBjYWxjdWxhdGVSZW5kZXJQ
YXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYsIENDTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KTsKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGRp
c3BsYXllZC4KKyAgICBib29sIGNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0
JiwgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIHZvaWQgYW5pbWF0
ZUxheWVyc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCosIGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3Vi
bGUgd2FsbENsb2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqLCBib29sJiBkaWRBbmlt
YXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXllcnMpOwogICAgIEludFNpemUgY29udGVudFNpemUo
KSBjb25zdDsKICAgICB2b2lkIHNlbmREaWRMb3NlQ29udGV4dFJlY3Vyc2l2ZShDQ0xheWVySW1w
bCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKaW5kZXggZjJhODU4NzE3MGMzYmE1YWUyMmUx
YjM4OGYzZjg4MjZkMGVmZDNhYy4uMzVkMTk0NjE3Nzk1OTJmZWI0ZWY4NDcxYjM4ZmUwZDVlZjlj
ODQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENDUXVh
ZEN1bGxlcjo6Q0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmIHF1YWRMaXN0LCBDQ0xheWVySW1wbCog
bGF5ZXIsIENDT2NjbHVzaW9uCiB7CiB9CiAKLXZvaWQgQ0NRdWFkQ3VsbGVyOjphcHBlbmQoUGFz
c093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpCitib29sIENDUXVhZEN1bGxlcjo6YXBw
ZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKQogewogICAgIE93blB0cjxD
Q0RyYXdRdWFkPiBkcmF3UXVhZChwYXNzRHJhd1F1YWQpOwogICAgIEludFJlY3QgY3VsbGVkUmVj
dCA9IG1fb2NjbHVzaW9uVHJhY2tlci0+dW5vY2NsdWRlZENvbnRlbnRSZWN0KG1fbGF5ZXIsIGRy
YXdRdWFkLT5xdWFkUmVjdCgpKTsKQEAgLTYxLDYgKzYxLDcgQEAgdm9pZCBDQ1F1YWRDdWxsZXI6
OmFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCkKICAgICAvLyBSZWxl
YXNlIHRoZSBxdWFkIGFmdGVyIHdlJ3JlIGRvbmUgdXNpbmcgaXQuCiAgICAgaWYgKGtlZXBRdWFk
KQogICAgICAgICBtX3F1YWRMaXN0LmFwcGVuZChkcmF3UXVhZC5yZWxlYXNlKCkpOworICAgIHJl
dHVybiBrZWVwUXVhZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuaAppbmRleCAxZjRiOTIwNTYyYWU5NWM1NmRmNzA2OTNkOGI5YzE3MDhmYzk5NzIwLi4z
NDM1YjcyZjVkMzUwM2I5ZTk5ZTUwZjgyNDg4MjZjMWM5OGVlMDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuaApAQCAtMzgsNyArMzgsOCBAQCBwdWJsaWM6CiAgICAgLy8gZG9uZSB0byBlc3RpbWF0
ZSBvdmVyIGRyYXcgc3RhdGlzdGljcy4KICAgICBDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYsIEND
TGF5ZXJJbXBsKiwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCopOwogCi0gICAgdmlydHVhbCB2b2lk
IGFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCk7CisgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBxdWFkIGlzIGFkZGVkIHRvIHRoZSBsaXN0LCBhbmQgZmFsc2UgaWYg
dGhlIHF1YWQgaXMgZW50aXJlbHkgY3VsbGVkLgorICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoUGFz
c093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpOwogCiBwcml2YXRlOgogICAgIENDUXVh
ZExpc3QmIG1fcXVhZExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAppbmRleCBhMTJiZmJi
NTlmNGE3YjkzOTYzZDI0MzRlYzYwY2JlODUwMDU2MzRhLi5jZjQ3YjZjYjg3YTQzNzYwMjEwMzA3
ZGNkZjkwNjkwNzFlNGE0ZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKQEAgLTQ2LDEy
ICs0NiwxMiBAQCBDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyhDQ1JlbmRlclN1cmZhY2UqIHRh
cmdldFN1cmZhY2UpCiAgICAgQVNTRVJUKG1fdGFyZ2V0U3VyZmFjZSk7CiB9CiAKLXZvaWQgQ0NS
ZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2Ns
dXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tlcikKK3ZvaWQgQ0NSZW5kZXJQYXNzOjph
cHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2NsdXNpb25UcmFja2Vy
SW1wbCogb2NjbHVzaW9uVHJhY2tlciwgYm9vbCYgdXNlZENoZWNrZXJib2FyZCkKIHsKICAgICBD
Q1F1YWRDdWxsZXIgcXVhZEN1bGxlcihtX3F1YWRMaXN0LCBsYXllciwgb2NjbHVzaW9uVHJhY2tl
cik7CiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxh
eWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVh
ZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMo
cXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKICAg
ICBsYXllci0+YXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0
ZS5nZXQoKSk7CiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3Rh
dGUucmVsZWFzZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggYWM4ZGJjMWEwZDI2
YTg0NzY2NTdmYjY3MmMyZjE1YWFiMjRjOGVlMS4uNTk5MDFjOGM1OGNmMzc2YTBjMWYwY2MwOWM1
NzhlZTA0ZDMxNjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTU0LDcgKzU0LDcgQEAg
Y2xhc3MgQ0NSZW5kZXJQYXNzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Jl
bmRlclBhc3M+IGNyZWF0ZShDQ1JlbmRlclN1cmZhY2UqKTsKIAotICAgIHZvaWQgYXBwZW5kUXVh
ZHNGb3JMYXllcihDQ0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tlckltcGwqKTsKKyAgICB2
b2lkIGFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqLCBDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsKiwgYm9vbCYgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgdm9pZCBhcHBlbmRRdWFkc0ZvclJl
bmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCopOwogCiAgICAgY29uc3QgQ0NRdWFkTGlzdCYg
cXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRMaXN0OyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njcm9sbGJhckxheWVySW1wbC5jcHAKaW5kZXggNDM3ZjRmNzc2ZDhiMDdkNWI5YWZjZDFjMGM1
MDNkZDhjODkxNDJhNS4uMTUyMDY1ZDA4ZTExMWQ5YWUxY2RiNWZkNjMzMWU4MTk0MDEwYzVkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY3JvbGxiYXJMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcApAQCAtNzksNyArNzks
NyBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjp3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hy
b21pdW0qIGxheWVyUmVuZGVyZXIpCiAgICAgfQogfQogCi12b2lkIENDU2Nyb2xsYmFyTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQordm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBw
ZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CiAgICAgaWYgKCFtX3RleHR1cmUtPmlzUmVzZXJ2
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBs
LmgKaW5kZXggZmNlYzExMGUyNDE4MzFiZGIyMWY4NjcyYmJkMGM3MzcyMTFkM2ZjYy4uYjAzZTQ1
MWViMzkyMzUwMWMyZTY1MzlmZGNhYzZmNDc4NWE5Yzc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNjcm9sbExheWVyKENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllcikgeyBtX3Njcm9sbExheWVyID0g
c2Nyb2xsTGF5ZXI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVy
Q2hyb21pdW0qKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwg
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMo
Q0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hlY2tl
cmJvYXJkKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdygpOwogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IGI2ZmM3NmI1MmU4YmRmNGZl
YTk3NTUwYTIxNmVmMTMyZmY3YjViZjUuLjYwN2IzOGFmN2EyMmNjNzc0ZmY2YTE3Mjc5M2QzZGU1
OWU0MDM2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0y
OTgsNyArMjk4LDkgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSgpCiAg
ICAgICBkb3VibGUgd2FsbENsb2NrVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKICAgICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7Ci0g
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgICBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5w
cmVwYXJlVG9EcmF3KGZyYW1lKTsKKyAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXll
cnMoZnJhbWUpOwogICAgIH0KIAogICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRl
eHRMb3N0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwCmlu
ZGV4IGJmNjcwZWNjODllMWIwZmExN2ZlZTc2MDM4MzllYzI3Y2JmZDQ5MTcuLjZhZTNhMTcyOThl
OWM2YzMxODI3YWQ2OWVhYjQ2YjllOGVkM2U0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsLmNwcApAQCAtNTcsNyArNTcsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBDQ1NvbGlkQ29sb3JMYXllckltcGw6OnF1YWRUcmFuc2Zvcm0oKSBjb25zdAogICAgIHJldHVy
biBzb2xpZENvbG9yVHJhbnNmb3JtOwogfQogCi12b2lkIENDU29saWRDb2xvckxheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSkKK3ZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBlbmRR
dWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICAvLyBXZSBjcmVhdGUgYSBzZXJpZXMgb2Ygc21h
bGxlciBxdWFkcyBpbnN0ZWFkIG9mIGp1c3Qgb25lIGxhcmdlIG9uZSBzbyB0aGF0IHRoZQogICAg
IC8vIGN1bGxlciBjYW4gcmVkdWNlIHRoZSB0b3RhbCBwaXhlbHMgZHJhd24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29s
b3JMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCmluZGV4IDdkMDc2NzM4Y2YzYTBjY2NjOTgyYjQy
MmVhYmQ4ZGEwMGIwMWJlYmEuLjEwYzZhZGUzZjQ3M2I1NGRiYmE3OTA0NTNmMmMwZGU4YTViNmFj
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ1NvbGlkQ29sb3JMYXllckltcGwoKTsKIAog
ICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRyYW5zZm9ybSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSopOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXIm
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsKGludCBpZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcAppbmRleCBlMDZmNzJmNmYyNDliNjFj
NzFhYTNkYWQzMzY0MzFhOGIyZTYyYjNjLi4xMmNiYWI2MjU3MDY2N2M4OGRjODc3MDk2Njg4MzIz
ODhjMjRmOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTkw
LDcgKzkwLDcgQEAgdm9pZCBDQ1RleHR1cmVMYXllckltcGw6OndpbGxEcmF3KExheWVyUmVuZGVy
ZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICB9CiB9CiAKLXZvaWQgQ0NUZXh0dXJlTGF5
ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQordm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQogewogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9p
bnQoKSwgYm91bmRzKCkpOwogICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6
Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fdGV4dHVyZUlkLCBtX2hhc0FscGhh
LCBtX3ByZW11bHRpcGxpZWRBbHBoYSwgbV91dlJlY3QsIG1fZmxpcHBlZCwgbV9pb1N1cmZhY2VT
aXplLCBtX2lvU3VyZmFjZVRleHR1cmVJZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllcklt
cGwuaAppbmRleCBhODFjMzYxNmFlZGI2NDVhMjFhNzM1MGI5MWJkOTNkNjA3ZjhiYzcyLi45MmQx
YTkwYjlmZmNkNTQ4MjExYmM4YzY1MTk2MWNkYWIzNjdjOWYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVMYXllckltcGwuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZp
cnR1YWwgfkNDVGV4dHVyZUxheWVySW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1
YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKik7CisgICAgdmlydHVh
bCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiwgYm9vbCYgdXNlZENoZWNrZXJib2FyZCk7CiAKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5n
PFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhPiBQcm9n
cmFtRmxpcDsKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFN0
cmV0Y2gsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBQcm9ncmFtU3RyZXRjaDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggODc5YWFiZmNjZDFjNjhmMGUzODkzZjk4YjM1MGRj
ODljMDBjNjU1ZS4uZTQxNzNhOGFkNjExM2Y3ZWRjNGI5MDJhYjBhN2Y4NTA4NjNhMTQ1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTU1NSw3ICs1NTUsOSBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKIAogICAgIG1faW5wdXRIYW5k
bGVyT25JbXBsVGhyZWFkLT5hbmltYXRlKG1vbm90b25pY1RpbWUpOwogICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7Ci0gICAgbV9s
YXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6
OkZyYW1lRGF0YSBmcmFtZTsKKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3
KGZyYW1lKTsKKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKIAog
ICAgIC8vIENoZWNrIGZvciBhIHBlbmRpbmcgY29tcG9zaXRlQW5kUmVhZGJhY2suCiAgICAgaWYg
KG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuY3BwCmluZGV4IGExODc3Yjk4N2FmNjVlY2Y3MTU4Yjg3Mjg1ZTZkODgwOWFhNTdmZTQu
LjNmN2IwYjNhYzIxOWE3NjA3NzVhNWViZjAwMThkZmQ4OTQyMzc3NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgVHJhbnNmb3JtYXRpb25N
YXRyaXggQ0NUaWxlZExheWVySW1wbDo6cXVhZFRyYW5zZm9ybSgpIGNvbnN0CiAgICAgcmV0dXJu
IHRyYW5zZm9ybTsKIH0KIAotdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1
YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlKQordm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1
YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJiB1
c2VkQ2hlY2tlcmJvYXJkKQogewogICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHZpc2li
bGVMYXllclJlY3QoKTsKIApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1w
bDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmICghdGlsZSB8
fCAhdGlsZS0+dGV4dHVyZUlkKCkpIHsKLSAgICAgICAgICAgICAgICBxdWFkTGlzdC5hcHBlbmQo
Q0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCBi
YWNrZ3JvdW5kQ29sb3IoKSkpOworICAgICAgICAgICAgICAgIHVzZWRDaGVja2VyYm9hcmQgfD0g
cXVhZExpc3QuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0
YXRlLCB0aWxlUmVjdCwgYmFja2dyb3VuZENvbG9yKCkpKTsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCmluZGV4
IDBiZTY1Nzc0MzhjMDAzNjMxNzQ0Yjc3NzM1Y2E2OWFkMjgzODU0YWQuLjMwYTRhYTYzOGZhZTI4
YWI4YjkwZmQ1MTBkNGRmOGVjY2RjOGFlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1RpbGVk
TGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVy
JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVh
ZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hl
Y2tlcmJvYXJkKTsKIAogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKExheWVy
UmVuZGVyZXJDaHJvbWl1bSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmlu
ZGV4IGI1YWEzZTE3MTUwZmUwNTRmNzNlNTFlZjAwMmE2ZmRhYmY3ZmM2NDcuLmE1NmNmNTg5MTNk
NTRkNjJlZjhjMzQwMTZlODA3YmE4NmE4NDE5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXll
ckltcGwuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxs
RHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAgICAgfQogfQogCi12
b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3Qs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCit2b2lkIENDVmlkZW9M
YXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQogewogICAgIGlmICghbV9mcmFt
ZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCmluZGV4IDRm
YjQ1ZWJkOTcwZmIzZjljOTM5ZTkwYjY5ZTA0Y2RiZGEwYWRkMmYuLmRkYjI3OWM4M2FmZWZkODdk
ZjM2Njc2MWUxMWNlNmE4OWY3YWUzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNDVmlkZW9MYXllckltcGwo
KTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsK
LSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVy
JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRHJhdygpOwogCiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxW
ZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBo
YT4gUkdCQVByb2dyYW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDQW5pbWF0aW9uVGVzdENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDQW5pbWF0aW9uVGVzdENvbW1vbi5jcHAKaW5kZXggYTFkOTdhNTFiYjQ3MzE0ZDBiYTk1YzU0
OTFkNzc2MDA1MmY3NzkzZC4uZTQ3YTE0YzhiNDcwYjI4YjNlZDMxYjE3YmNhNzAzYjBkNDM3OTA0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRl
c3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRp
b25UZXN0Q29tbW9uLmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllci5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlci5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC01Myw2ICs1NSwyNCBAQCB2b2lkIGFkZE9wYWNpdHlUcmFuc2l0aW9uKFRh
cmdldCYgdGFyZ2V0LCBkb3VibGUgZHVyYXRpb24sIGZsb2F0IHN0YXJ0T3BhY2l0eSwgZgogICAg
IHRhcmdldC5hZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksIDAs
IDAsIDApOwogfQogCit0ZW1wbGF0ZSA8Y2xhc3MgVGFyZ2V0Pgordm9pZCBhZGRBbmltYXRlZFRy
YW5zZm9ybShUYXJnZXQmIHRhcmdldCwgZG91YmxlIGR1cmF0aW9uLCBpbnQgZGVsdGFYLCBpbnQg
ZGVsdGFZKQoreworICAgIHN0YXRpYyBpbnQgaWQgPSAwOworICAgIFdlYkNvcmU6OktleWZyYW1l
VmFsdWVMaXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKKworICAg
IFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKKyAgICBvcGVyYXRpb25zLm9wZXJhdGlv
bnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKGRl
bHRhWCwgV2ViQ29yZTo6Rml4ZWQpLCBMZW5ndGgoZGVsdGFZLCBXZWJDb3JlOjpGaXhlZCksIFRy
YW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKKyAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBU
cmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgwLCAmb3BlcmF0aW9ucykpOworCisgICAgUmVmUHRyPEFu
aW1hdGlvbj4gYW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKKyAgICBhbmltYXRpb24t
PnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKworICAgIEludFNpemUgYm94U2l6ZTsKKworICAgIHRh
cmdldC5hZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksICsraWQs
IDAsIDApOworfQorCiB9IC8vIG5hbWVzcGFjZQogCiBuYW1lc3BhY2UgV2ViS2l0VGVzdHMgewpA
QCAtMTMzLDQgKzE1MywxOSBAQCB2b2lkIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9MYXllcihXZWJD
b3JlOjpMYXllckNocm9taXVtJiBsYXllciwgZG91YmxlIGR1cmF0aW9uLAogICAgIGFkZE9wYWNp
dHlUcmFuc2l0aW9uKGxheWVyLCBkdXJhdGlvbiwgc3RhcnRPcGFjaXR5LCBlbmRPcGFjaXR5LCB1
c2VUaW1pbmdGdW5jdGlvbik7CiB9CiAKK3ZvaWQgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0xheWVy
KFdlYkNvcmU6OkNDTGF5ZXJJbXBsJiBsYXllciwgZG91YmxlIGR1cmF0aW9uLCBmbG9hdCBzdGFy
dE9wYWNpdHksIGZsb2F0IGVuZE9wYWNpdHksIGJvb2wgdXNlVGltaW5nRnVuY3Rpb24pCit7Cisg
ICAgYWRkT3BhY2l0eVRyYW5zaXRpb24oKmxheWVyLmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigp
LCBkdXJhdGlvbiwgc3RhcnRPcGFjaXR5LCBlbmRPcGFjaXR5LCB1c2VUaW1pbmdGdW5jdGlvbik7
Cit9CisKK3ZvaWQgYWRkQW5pbWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKFdlYkNvcmU6OkxheWVyQ2hy
b21pdW0mIGxheWVyLCBkb3VibGUgZHVyYXRpb24sIGludCBkZWx0YVgsIGludCBkZWx0YVkpCit7
CisgICAgYWRkQW5pbWF0ZWRUcmFuc2Zvcm0obGF5ZXIsIGR1cmF0aW9uLCBkZWx0YVgsIGRlbHRh
WSk7Cit9CisKK3ZvaWQgYWRkQW5pbWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsJiBsYXllciwgZG91YmxlIGR1cmF0aW9uLCBpbnQgZGVsdGFYLCBpbnQgZGVsdGFZKQor
eworICAgIGFkZEFuaW1hdGVkVHJhbnNmb3JtKCpsYXllci5sYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXIoKSwgZHVyYXRpb24sIGRlbHRhWCwgZGVsdGFZKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0VGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmlt
YXRpb25UZXN0Q29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5pbWF0
aW9uVGVzdENvbW1vbi5oCmluZGV4IDExYTc2YjhhY2IwN2NmOGFiYTc5OTUyZmU4MTQ2MDM0MDZl
MzlkYTQuLjIwMzNiZjlkMDBlM2FjOTBlNzcxYjE5YzM4OTg0MmMxNDU4YTFiMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24u
aApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBMYXllckNocm9taXVtOwogfQog
CkBAIC05OCw2ICs5OSwxMCBAQCBwcml2YXRlOgogdm9pZCBhZGRPcGFjaXR5VHJhbnNpdGlvblRv
Q29udHJvbGxlcihXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciYsIGRvdWJsZSBk
dXJhdGlvbiwgZmxvYXQgc3RhcnRPcGFjaXR5LCBmbG9hdCBlbmRPcGFjaXR5LCBib29sIHVzZVRp
bWluZ0Z1bmN0aW9uKTsKIAogdm9pZCBhZGRPcGFjaXR5VHJhbnNpdGlvblRvTGF5ZXIoV2ViQ29y
ZTo6TGF5ZXJDaHJvbWl1bSYsIGRvdWJsZSBkdXJhdGlvbiwgZmxvYXQgc3RhcnRPcGFjaXR5LCBm
bG9hdCBlbmRPcGFjaXR5LCBib29sIHVzZVRpbWluZ0Z1bmN0aW9uKTsKK3ZvaWQgYWRkT3BhY2l0
eVRyYW5zaXRpb25Ub0xheWVyKFdlYkNvcmU6OkNDTGF5ZXJJbXBsJiwgZG91YmxlIGR1cmF0aW9u
LCBmbG9hdCBzdGFydE9wYWNpdHksIGZsb2F0IGVuZE9wYWNpdHksIGJvb2wgdXNlVGltaW5nRnVu
Y3Rpb24pOworCit2b2lkIGFkZEFuaW1hdGVkVHJhbnNmb3JtVG9MYXllcihXZWJDb3JlOjpMYXll
ckNocm9taXVtJiwgZG91YmxlIGR1cmF0aW9uLCBpbnQgZGVsdGFYLCBpbnQgZGVsdGFZKTsKK3Zv
aWQgYWRkQW5pbWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKFdlYkNvcmU6OkNDTGF5ZXJJbXBsJiwgZG91
YmxlIGR1cmF0aW9uLCBpbnQgZGVsdGFYLCBpbnQgZGVsdGFZKTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0VGVzdHMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBhMTkyYmE1NTdiZjBlYTE2YzIxZTRj
MDQyNDJjYjI1ZDA5MGExNzYzLi40NGRjZDE0MjQyZjUzMTBmYWNmZmZmNzRhNzhhYzdjMmUzY2Vh
OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oIgogCisjaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9u
LmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgiCkBAIC0zNiw2ICszNyw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXRUZXN0czsKIAogbmFtZXNw
YWNlIHsKIApAQCAtMjUwLDcgKzI1Miw5IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb25XaXRoT2Zmc2V0KQogICAgIHJvb3QtPnNldE5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uKEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgcm9vdC0+c2V0
UG9zaXRpb24oRmxvYXRQb2ludCgtMjUsIDApKTsKICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5
ZXIocm9vdC5yZWxlYXNlKCkpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsgLy8gVXBk
YXRlIGRyYXcgdHJhbnNmb3JtcyBzbyB3ZSBjYW4gY29ycmVjdGx5IG1hcCBwb2ludHMgaW50byBs
YXllciBzcGFjZS4KKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7Cisg
ICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1f
aG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOyAvLyBVcGRhdGUgZHJhdyB0cmFuc2Zvcm1zIHNv
IHdlIGNhbiBjb3JyZWN0bHkgbWFwIHBvaW50cyBpbnRvIGxheWVyIHNwYWNlLgogCiAgICAgLy8g
VGhpcyBwb2ludCB3b3VsZCBmYWxsIGludG8gdGhlIG5vbi1mYXN0IHNjcm9sbGFibGUgcmVnaW9u
IGV4Y2VwdCB0aGF0IHdlJ3ZlIG1vdmVkIHRoZSBsYXllciBkb3duIGJ5IDI1IHBpeGVscy4KICAg
ICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoNDAsIDEwKSwgQ0NJ
bnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0
YXJ0ZWQpOwpAQCAtMzkwLDcgKzM5NCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgcGFnZVNjYWxlQW5pbWF0aW9uKQogICAgIH0KIH0KIAotY2xhc3MgRGlkRHJhd0NoZWNrTGF5
ZXIgOiBwdWJsaWMgQ0NMYXllckltcGwgeworY2xhc3MgRGlkRHJhd0NoZWNrTGF5ZXIgOiBwdWJs
aWMgQ0NUaWxlZExheWVySW1wbCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8RGlk
RHJhd0NoZWNrTGF5ZXI+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBEaWRE
cmF3Q2hlY2tMYXllcihpZCkpOyB9CiAKQEAgLTQwNyw5ICs0MTEsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBkaWREcmF3Q2FsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaWREcmF3Q2FsbGVkOyB9CiAg
ICAgYm9vbCB3aWxsRHJhd0NhbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbERyYXdDYWxsZWQ7
IH0KIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBsaWNpdCBEaWREcmF3Q2hlY2tMYXll
cihpbnQgaWQpCi0gICAgICAgIDogQ0NMYXllckltcGwoaWQpCisgICAgICAgIDogQ0NUaWxlZExh
eWVySW1wbChpZCkKICAgICAgICAgLCBtX2RpZERyYXdDYWxsZWQoZmFsc2UpCiAgICAgICAgICwg
bV93aWxsRHJhd0NhbGxlZChmYWxzZSkKICAgICB7CkBAIC00MTgsNiArNDIyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgc2V0RHJhd3NDb250ZW50KHRydWUpOwogICAgIH0KIAorcHJpdmF0ZToKICAg
ICBib29sIG1fZGlkRHJhd0NhbGxlZDsKICAgICBib29sIG1fd2lsbERyYXdDYWxsZWQ7CiB9OwpA
QCAtNDMyLDEwICs0MzcsMTMgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWRE
cmF3Tm90Q2FsbGVkT25IaWRkZW5MYXllcikKICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIo
RGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CiAgICAgRGlkRHJhd0NoZWNrTGF5ZXIqIHJv
b3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXll
cigpKTsKIAorICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKwogICAg
IEVYUEVDVF9GQUxTRShyb290LT53aWxsRHJhd0NhbGxlZCgpKTsKICAgICBFWFBFQ1RfRkFMU0Uo
cm9vdC0+ZGlkRHJhd0NhbGxlZCgpKTsKIAotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsK
KyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAg
bV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAKICAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+
d2lsbERyYXdDYWxsZWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmRpZERyYXdDYWxsZWQo
KSk7CkBAIC00NDgsNyArNDU2LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBk
aWREcmF3Tm90Q2FsbGVkT25IaWRkZW5MYXllcikKICAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+d2ls
bERyYXdDYWxsZWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmRpZERyYXdDYWxsZWQoKSk7
CiAKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0
SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMo
ZnJhbWUpOwogCiAgICAgRVhQRUNUX1RSVUUocm9vdC0+d2lsbERyYXdDYWxsZWQoKSk7CiAgICAg
RVhQRUNUX1RSVUUocm9vdC0+ZGlkRHJhd0NhbGxlZCgpKTsKQEAgLTQ3Nyw3ICs0ODYsOSBAQCBU
RVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdDYWxsZWRPbkFsbExheWVycykK
ICAgICBFWFBFQ1RfRkFMU0UobGF5ZXIxLT5kaWREcmF3Q2FsbGVkKCkpOwogICAgIEVYUEVDVF9G
QUxTRShsYXllcjItPmRpZERyYXdDYWxsZWQoKSk7CiAKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5
ZXJzKCk7CisgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgIEVY
UEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJ
bXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKIAogICAgIEVYUEVDVF9UUlVFKHJvb3QtPmRpZERyYXdD
YWxsZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5kaWREcmF3Q2FsbGVkKCkpOwpAQCAt
NDg3LDYgKzQ5OCw2OCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdD
YWxsZWRPbkFsbExheWVycykKICAgICBFWFBFQ1RfVFJVRSghIWxheWVyMS0+cmVuZGVyU3VyZmFj
ZSgpKTsKIH0KIAorY2xhc3MgTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllciA6IHB1YmxpYyBE
aWREcmF3Q2hlY2tMYXllciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8TWlzc2lu
Z1RleHR1cmVBbmltYXRpbmdMYXllcj4gY3JlYXRlKGludCBpZCwgYm9vbCB0aWxlTWlzc2luZywg
Ym9vbCBza2lwc0RyYXcsIGJvb2wgYW5pbWF0aW5nKSB7IHJldHVybiBhZG9wdFB0cihuZXcgTWlz
c2luZ1RleHR1cmVBbmltYXRpbmdMYXllcihpZCwgdGlsZU1pc3NpbmcsIHNraXBzRHJhdywgYW5p
bWF0aW5nKSk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNaXNzaW5nVGV4dHVyZUFuaW1h
dGluZ0xheWVyKGludCBpZCwgYm9vbCB0aWxlTWlzc2luZywgYm9vbCBza2lwc0RyYXcsIGJvb2wg
YW5pbWF0aW5nKQorICAgICAgICA6IERpZERyYXdDaGVja0xheWVyKGlkKQorICAgIHsKKyAgICAg
ICAgT3duUHRyPENDTGF5ZXJUaWxpbmdEYXRhPiB0aWxpbmdEYXRhID0gQ0NMYXllclRpbGluZ0Rh
dGE6OmNyZWF0ZShJbnRTaXplKDEwLCAxMCksIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRl
eGVscyk7CisgICAgICAgIHRpbGluZ0RhdGEtPnNldEJvdW5kcyhib3VuZHMoKSk7CisgICAgICAg
IHNldFRpbGluZ0RhdGEoKnRpbGluZ0RhdGEuZ2V0KCkpOworICAgICAgICBzZXRTa2lwc0RyYXco
c2tpcHNEcmF3KTsKKyAgICAgICAgaWYgKCF0aWxlTWlzc2luZykKKyAgICAgICAgICAgIHB1c2hU
aWxlUHJvcGVydGllcygwLCAwLCAxLCBJbnRSZWN0KCkpOworICAgICAgICBpZiAoYW5pbWF0aW5n
KQorICAgICAgICAgICAgYWRkQW5pbWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKCp0aGlzLCAxMCwgMywg
MCk7CisgICAgfQorfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJl
VG9EcmF3RmFpbHNXaGVuQW5pbWF0aW9uVXNlc0NoZWNrZXJib2FyZCkKK3sKKyAgICBtX2hvc3RJ
bXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOworICAgIG1faG9z
dEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOworCisgICAgLy8gV2hlbiB0
aGUgdGV4dHVyZSBpcyBub3QgbWlzc2luZywgd2UgZHJhdyBhcyB1c3VhbC4KKyAgICBtX2hvc3RJ
bXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CisgICAgRGlk
RHJhd0NoZWNrTGF5ZXIqIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1f
aG9zdEltcGwtPnJvb3RMYXllcigpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVy
ZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMSwgZmFsc2UsIGZhbHNlLCB0cnVlKSk7CisgICAgRGlk
RHJhd0NoZWNrTGF5ZXIqIGxheWVyID0gc3RhdGljX2Nhc3Q8TWlzc2luZ1RleHR1cmVBbmltYXRp
bmdMYXllcio+KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOworCisgICAgQ0NMYXllclRyZWVI
b3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworCisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+
cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUp
OworCisgICAgLy8gV2hlbiBhIHRleHR1cmUgaXMgbWlzc2luZyBhbmQgd2UncmUgbm90IGFuaW1h
dGluZywgd2UgZHJhdyBhcyB1c3VhbCB3aXRoIGNoZWNrZXJib2FyZGluZy4KKyAgICBtX2hvc3RJ
bXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CisgICAgcm9v
dCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVy
KCkpOworICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNy
ZWF0ZSgxLCB0cnVlLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBsYXllciA9IHN0YXRpY19jYXN0PE1p
c3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIqPihyb290LT5jaGlsZHJlbigpWzBdLmdldCgpKTsK
KworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAg
ICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKworICAgIC8vIFdoZW4gYSB0ZXh0dXJl
IGlzIG1pc3NpbmcgYW5kIHdlJ3JlIGFuaW1hdGluZywgd2UgZG9uJ3QgZHJhdyBhbnl0aGluZy4K
KyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgw
KSk7CisgICAgcm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1w
bC0+cm9vdExheWVyKCkpOworICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0
aW5nTGF5ZXI6OmNyZWF0ZSgxLCB0cnVlLCBmYWxzZSwgdHJ1ZSkpOworICAgIGxheWVyID0gc3Rh
dGljX2Nhc3Q8TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcio+KHJvb3QtPmNoaWxkcmVuKClb
MF0uZ2V0KCkpOworCisgICAgRVhQRUNUX0ZBTFNFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXco
ZnJhbWUpKTsKKworICAgIC8vIFdoZW4gdGhlIGxheWVyIHNraXBzIGRyYXcgYW5kIHdlJ3JlIGFu
aW1hdGluZywgd2Ugc3RpbGwgZHJhdyB0aGUgZnJhbWUuCisgICAgbV9ob3N0SW1wbC0+c2V0Um9v
dExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCkpOworICAgIHJvb3QgPSBzdGF0aWNf
Y2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKKyAgICBy
b290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMSwgZmFs
c2UsIHRydWUsIHRydWUpKTsKKyAgICBsYXllciA9IHN0YXRpY19jYXN0PE1pc3NpbmdUZXh0dXJl
QW5pbWF0aW5nTGF5ZXIqPihyb290LT5jaGlsZHJlbigpWzBdLmdldCgpKTsKKworICAgIEVYUEVD
VF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBs
LT5kcmF3TGF5ZXJzKGZyYW1lKTsKK30KKwogY2xhc3MgQmxlbmRTdGF0ZVRyYWNrZXJDb250ZXh0
OiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKIHB1YmxpYzoKICAgICBCbGVuZFN0
YXRlVHJhY2tlckNvbnRleHQoKSA6IG1fYmxlbmQoZmFsc2UpIHsgfQpAQCAtNTEzLDcgKzU4Niw3
IEBAIGNsYXNzIEJsZW5kU3RhdGVDaGVja0xheWVyIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gY3JlYXRl
KGludCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IEJsZW5kU3RhdGVDaGVja0xheWVyKGlkKSk7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQorICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKICAgICB7CiAgICAgICAgIG1fcXVhZHNB
cHBlbmRlZCA9IHRydWU7CiAKQEAgLTU4NCwyNSArNjU3LDMwIEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBy
b290LT5hZGRDaGlsZChCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsKICAgICBCbGVu
ZFN0YXRlQ2hlY2tMYXllciogbGF5ZXIxID0gc3RhdGljX2Nhc3Q8QmxlbmRTdGF0ZUNoZWNrTGF5
ZXIqPihyb290LT5jaGlsZHJlbigpWzBdLmdldCgpKTsKIAorICAgIENDTGF5ZXJUcmVlSG9zdElt
cGw6OkZyYW1lRGF0YSBmcmFtZTsKKwogICAgIC8vIE9wYXF1ZSBsYXllciwgZHJhd24gd2l0aG91
dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKICAgICBsYXllcjEtPnNl
dE9wYXF1ZUNvbnRlbnRzKHRydWUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2Us
IGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUo
bV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdM
YXllcnMoZnJhbWUpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsK
IAogICAgIC8vIExheWVyIHdpdGggdHJhbnNsdWNlbnQgY29udGVudCwgYnV0IG9wYXF1ZSBjb250
ZW50LCBzbyBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKGZh
bHNlKTsKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRzKHRydWUpOwogICAgIGxheWVyMS0+
c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KCk7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOwor
ICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAgIEVYUEVDVF9UUlVFKGxheWVy
MS0+cXVhZHNBcHBlbmRlZCgpKTsKIAogICAgIC8vIExheWVyIHdpdGggdHJhbnNsdWNlbnQgY29u
dGVudCBhbmQgcGFpbnRpbmcsIHNvIGRyYXduIHdpdGggYmxlbmRpbmcuCiAgICAgbGF5ZXIxLT5z
ZXRPcGFxdWUoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudHMoZmFsc2UpOwog
ICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwt
PmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3
KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNU
X1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCiAgICAgLy8gTGF5ZXIgd2l0aCB0cmFu
c2x1Y2VudCBvcGFjaXR5LCBkcmF3biB3aXRoIGJsZW5kaW5nLgpAQCAtNjEwLDcgKzY4OCw4IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09w
YXF1ZUxheWVycykKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRzKHRydWUpOwogICAgIGxh
eWVyMS0+c2V0T3BhY2l0eSgwLjUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwg
ZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRSht
X2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xh
eWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwog
CiAgICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5IGFuZCBwYWludGluZywgZHJh
d24gd2l0aCBibGVuZGluZy4KQEAgLTYxOCw3ICs2OTcsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5
ZXIxLT5zZXRPcGFxdWVDb250ZW50cyhmYWxzZSk7CiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDAu
NSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7Ci0gICAgbV9ob3N0
SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVU
b0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBF
WFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAKICAgICBsYXllcjEtPmFkZENo
aWxkKEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUoMikpOwpAQCAtNjMzLDcgKzcxMyw4IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09w
YXF1ZUxheWVycykKICAgICBsYXllcjItPnNldE9wYXF1ZUNvbnRlbnRzKHRydWUpOwogICAgIGxh
eWVyMi0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBm
YWxzZSk7Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1f
aG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5
ZXJzKGZyYW1lKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAg
ICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogCkBAIC02NDMsNyArNzI0
LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3
aW5nT3BhcXVlTGF5ZXJzKQogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudHMoZmFsc2UpOwog
ICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIGxheWVyMi0+c2V0
RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7
CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAg
IG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+
cXVhZHNBcHBlbmRlZCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQo
KSk7CiAKQEAgLTY1Myw3ICs3MzUsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qs
IGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5ZXIxLT5zZXRPcGFx
dWVDb250ZW50cyh0cnVlKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxz
ZSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwotICAgIG1faG9z
dEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJl
VG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAg
RVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogICAgIEVYUEVDVF9UUlVFKGxh
eWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKIApAQCAtNjY3LDcgKzc1MCw4IEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykK
ICAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9u
KGZhbHNlLCB0cnVlKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7
Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1faG9zdElt
cGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZy
YW1lKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAgICAgRVhQ
RUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogCkBAIC02ODEsNyArNzY1LDggQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3Bh
cXVlTGF5ZXJzKQogICAgIGxheWVyMi0+c2V0T3BhcXVlQ29udGVudHModHJ1ZSk7CiAgICAgbGF5
ZXIyLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBm
YWxzZSk7Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKG1f
aG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5
ZXJzKGZyYW1lKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAg
ICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogCkBAIC02OTMsNyArNzc4
LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3
aW5nT3BhcXVlTGF5ZXJzKQogICAgIGxheWVyMi0+c2V0T3BhcXVlQ29udGVudHMoZmFsc2UpOwog
ICAgIGxheWVyMi0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKHRy
dWUsIGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RS
VUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRy
YXdMYXllcnMoZnJhbWUpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgp
KTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7CiAKQEAgLTcwNSw3
ICs3OTEsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hl
bkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5ZXIyLT5zZXRPcGFxdWVDb250ZW50cyh0cnVl
KTsKICAgICBsYXllcjItPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlv
bihmYWxzZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBF
Q1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1w
bC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVu
ZGVkKCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKIApAQCAt
NzE2LDcgKzgwMyw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdP
ZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRz
KGZhbHNlKTsKICAgICBsYXllcjEtPnNldE9wYXF1ZUNvbnRlbnRSZWN0KEludFJlY3QoNSwgNSwg
MiwgNSkpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwotICAgIG1f
aG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVw
YXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAg
ICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCiAgICAgLy8gTGF5ZXIg
d2l0aCBwYXJ0aWFsbHkgb3BhcXVlIGNvbnRlbnRzIHBhcnRpYWxseSBjdWxsZWQsIGRyYXduIHdp
dGggYmxlbmRpbmcuCkBAIC03MjYsNyArODE0LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIGxheWVyMS0+
c2V0T3BhcXVlQ29udGVudHMoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudFJl
Y3QoSW50UmVjdCg1LCA1LCAyLCA1KSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0cnVl
LCBmYWxzZSk7Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVF
KG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3
TGF5ZXJzKGZyYW1lKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7
CiAKICAgICAvLyBMYXllciB3aXRoIHBhcnRpYWxseSBvcGFxdWUgY29udGVudHMgY3VsbGVkLCBk
cmF3biB3aXRoIGJsZW5kaW5nLgpAQCAtNzM2LDcgKzgyNSw4IEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBs
YXllcjEtPnNldE9wYXF1ZUNvbnRlbnRzKGZhbHNlKTsKICAgICBsYXllcjEtPnNldE9wYXF1ZUNv
bnRlbnRSZWN0KEludFJlY3QoNSwgNSwgMiwgNSkpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRp
b24odHJ1ZSwgZmFsc2UpOwotICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBF
Q1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1w
bC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVu
ZGVkKCkpOwogCiAgICAgLy8gTGF5ZXIgd2l0aCBwYXJ0aWFsbHkgb3BhcXVlIGNvbnRlbnRzIGFu
ZCB0cmFuc2x1Y2VudCBjb250ZW50cyBjdWxsZWQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCkBA
IC03NDYsNyArODM2LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGlu
Z09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVu
dHMoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0T3BhcXVlQ29udGVudFJlY3QoSW50UmVjdCg1LCA1
LCAyLCA1KSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwotICAg
IG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5w
cmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7
CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCiB9CkBAIC03ODgs
NyArODc5LDkgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByZXNoYXBlTm90Q2Fs
bGVkVW50aWxEcmF3KQogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihhZG9wdFB0cihyb290
KSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc2hhcGVUcmFja2VyLT5yZXNoYXBlQ2FsbGVkKCkpOwog
Ci0gICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6
OkZyYW1lRGF0YSBmcmFtZTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9E
cmF3KGZyYW1lKSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgRVhQ
RUNUX1RSVUUocmVzaGFwZVRyYWNrZXItPnJlc2hhcGVDYWxsZWQoKSk7CiB9CiAKQEAgLTg0MCw4
ICs5MzMsMTEgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJl
Y2VpdmVzRGFtYWdlUmVjdCkKICAgICByb290LT5hZGRDaGlsZChhZG9wdFB0cihjaGlsZCkpOwog
ICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zZXRSb290TGF5ZXIoYWRvcHRQdHIocm9vdCkpOwogCisg
ICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworCiAgICAgLy8gRmlyc3Qg
ZnJhbWUsIHRoZSBlbnRpcmUgc2NyZWVuIHNob3VsZCBnZXQgc3dhcHBlZC4KLSAgICBsYXllclRy
ZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyVHJlZUhvc3RJ
bXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdM
YXllcnMoZnJhbWUpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwogICAg
IEludFJlY3QgYWN0dWFsU3dhcFJlY3QgPSBwYXJ0aWFsU3dhcFRyYWNrZXItPnBhcnRpYWxTd2Fw
UmVjdCgpOwogICAgIEludFJlY3QgZXhwZWN0ZWRTd2FwUmVjdCA9IEludFJlY3QoSW50UG9pbnQ6
Onplcm8oKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwpAQCAtODU1LDcgKzk1MSw4IEBAIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAg
ICAgLy8gZXhwZWN0ZWQgZGFtYWdlIHJlY3Q6IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgSW50
U2l6ZSgyNiwgMjgpKTsKICAgICAvLyBleHBlY3RlZCBzd2FwIHJlY3Q6IHZlcnRpY2FsbHkgZmxp
cHBlZCwgd2l0aCBvcmlnaW4gYXQgYm90dG9tIGxlZnQgY29ybmVyLgogICAgIGNoaWxkLT5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50KDAsIDApKTsKLSAgICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xh
eWVycygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3
KGZyYW1lKSk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAg
IGxheWVyVHJlZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOwogICAgIGFjdHVhbFN3YXBSZWN0ID0g
cGFydGlhbFN3YXBUcmFja2VyLT5wYXJ0aWFsU3dhcFJlY3QoKTsKICAgICBleHBlY3RlZFN3YXBS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgwLCA1MDAtMjgpLCBJbnRTaXplKDI2LCAyOCkpOwpAQCAt
ODY5LDcgKzk2Niw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3
YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAgICAgLy8gZXhwZWN0ZWQgc3dhcCByZWN0OiBmbGlwcGVk
IGRhbWFnZSByZWN0LCBidXQgYWxzbyBjbGFtcGVkIHRvIHZpZXdwb3J0CiAgICAgbGF5ZXJUcmVl
SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogICAgIHJvb3QtPnNl
dE9wYWNpdHkoMC43KTsgLy8gdGhpcyB3aWxsIGRhbWFnZSBldmVyeXRoaW5nCi0gICAgbGF5ZXJU
cmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllclRyZWVIb3N0
SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3
TGF5ZXJzKGZyYW1lKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKICAg
ICBhY3R1YWxTd2FwUmVjdCA9IHBhcnRpYWxTd2FwVHJhY2tlci0+cGFydGlhbFN3YXBSZWN0KCk7
CiAgICAgZXhwZWN0ZWRTd2FwUmVjdCA9IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6
ZSgxMCwgMTApKTsKQEAgLTkwMCwxOSArOTk4LDI0IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgdmlzaWJpbGl0eUNoYW5nZVJlc2V0c0RhbWFnZSkKICAgICByb290LT5zZXREcmF3
c0NvbnRlbnQodHJ1ZSk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFJvb3RMYXllcihhZG9w
dFB0cihyb290KSk7CiAKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7
CisKICAgICAvLyBGaXJzdCBmcmFtZTogaWdub3JlLgotICAgIGxheWVyVHJlZUhvc3RJbXBsLT5k
cmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXJUcmVlSG9zdEltcGwtPnByZXBhcmVU
b0RyYXcoZnJhbWUpKTsKKyAgICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7
CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7CiAKICAgICAvLyBTZWNvbmQg
ZnJhbWU6IG5vdGhpbmcgaGFzIGNoYW5nZWQgLS0tIHNvIHdlIHNvdWxkbid0IHB1c2ggYW55dGhp
bmcgd2l0aCBwYXJ0aWFsIHN3YXAuCi0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMo
KTsKKyAgICBFWFBFQ1RfVFJVRShsYXllclRyZWVIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFt
ZSkpOworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBsYXll
clRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKICAgICBFWFBFQ1RfVFJVRShwYXJ0aWFsU3dh
cFRyYWNrZXItPnBhcnRpYWxTd2FwUmVjdCgpLmlzRW1wdHkoKSk7CiAKICAgICAvLyBUaGlyZCBm
cmFtZTogdmlzaWJpbGl0eSBjaGFuZ2UgLS0tIHNvIHdlIHNob3VsZCBwdXNoIGEgZnVsbCBmcmFt
ZSB3aXRoIHBhcnRpYWwgc3dhcC4KICAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJsZShm
YWxzZSk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUodHJ1ZSk7Ci0gICAgbGF5
ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllclRyZWVI
b3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5k
cmF3TGF5ZXJzKGZyYW1lKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsK
ICAgICBJbnRSZWN0IGFjdHVhbFN3YXBSZWN0ID0gcGFydGlhbFN3YXBUcmFja2VyLT5wYXJ0aWFs
U3dhcFJlY3QoKTsKICAgICBJbnRSZWN0IGV4cGVjdGVkU3dhcFJlY3QgPSBJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIEludFNpemUoNTAwLCA1MDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDVmN2ZiY2EwYzBm
NmJkNTNiMDc3NmJiY2M0ODA5NzQ4NDE3YjI1ZDguLmM3MjM4MzcwMmMxMTNlMjEwYzM0NDI2Nzk3
N2Q5NWE4OTMxYjRlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBUZXN0SG9v
a3MgOiBwdWJsaWMgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlIHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgYmVnaW5Db21taXRPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvRHJhd09uQ0NUaHJlYWQoQ0NM
YXllclRyZWVIb3N0SW1wbCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1Ro
cmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVM
YXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCosIGRvdWJsZSBtb25vdG9uaWNUaW1lKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiwgZmxvYXQp
IHsgfQpAQCAtOTUsOSArOTYsMTYgQEAgcHVibGljOgogICAgICAgICBtX3Rlc3RIb29rcy0+Y29t
bWl0Q29tcGxldGVPbkNDVGhyZWFkKHRoaXMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
cmF3TGF5ZXJzKCkKKyAgICB2aXJ0dWFsIGJvb2wgcHJlcGFyZVRvRHJhdyhGcmFtZURhdGEmIGZy
YW1lKQogICAgIHsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycygpOwor
ICAgICAgICBib29sIHJlc3VsdCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OnByZXBhcmVUb0RyYXco
ZnJhbWUpOworICAgICAgICBtX3Rlc3RIb29rcy0+cHJlcGFyZVRvRHJhd09uQ0NUaHJlYWQodGhp
cyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRy
YXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJiBmcmFtZSkKKyAgICB7CisgICAgICAgIENDTGF5ZXJU
cmVlSG9zdEltcGw6OmRyYXdMYXllcnMoZnJhbWUpOwogICAgICAgICBtX3Rlc3RIb29rcy0+ZHJh
d0xheWVyc09uQ0NUaHJlYWQodGhpcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAppbmRleCBjMWJiY2U2MjUyNmQxNTNi
ZTU4MjllNWE5YWZhZjk5N2Y4MTc5ZDhhLi5hZWYwZDZlZjVhOTZjNTc0MWFhZjVmYmIzNTRhYmNk
MGU2Nzc1ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVh
ZEN1bGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFk
Q3VsbGVyVGVzdC5jcHAKQEAgLTgyLDcgKzgyLDggQEAgc3RhdGljIHZvaWQgYXBwZW5kUXVhZHMo
Q0NRdWFkTGlzdCYgcXVhZExpc3QsIFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4K
IHsKICAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihxdWFkTGlzdCwgbGF5ZXIsICZvY2NsdXNp
b25UcmFja2VyKTsKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0
ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICBsYXllci0+YXBwZW5kUXVh
ZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICBib29sIHVzZWRDaGVj
a2VyYm9hcmQgPSBmYWxzZTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hh
cmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKICAgICBzaGFyZWRTdGF0ZUxp
c3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0
LmNwcAppbmRleCA3Yzc0M2QyYTc2NmFjMDI3NTY3Mjk0NjU3YWQ0ZjQ4MWZiOGFjMjE3Li4xMmY4
YzIyNGRlNTFmYzc5Y2VjNGVkNGQ5NGFhNTAzYjk3YjBkMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5j
cHAKQEAgLTUyLDcgKzUyLDggQEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LCB2ZXJp
ZnlUaWxpbmdDb21wbGV0ZUFuZE5vT3ZlcmxhcCkKICAgICBsYXllci0+c2V0Qm91bmRzKGxheWVy
U2l6ZSk7CiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9
IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMo
cXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICBib29sIHVzZWRDaGVja2Vy
Ym9hcmQgPSBmYWxzZTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVk
UXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKIAogICAgIHZlcmlmeVF1YWRzRXhh
Y3RseUNvdmVyUmVjdChxdWFkQ3VsbGVyLnF1YWRMaXN0KCksIHZpc2libGVMYXllclJlY3QpOwog
fQpAQCAtNzMsNyArNzQsOCBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlm
eUNvcnJlY3RCYWNrZ3JvdW5kQ29sb3JJblF1YWQpCiAgICAgbGF5ZXItPnNldEJhY2tncm91bmRD
b2xvcih0ZXN0Q29sb3IpOwogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRR
dWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0gICAgbGF5ZXItPmFw
cGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7CisgICAgYm9vbCB1
c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxs
ZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CiAKICAgICBBU1NF
UlRfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMVUpOwogICAgIEVYUEVDVF9FUShx
dWFkQ3VsbGVyLnF1YWRMaXN0KClbMF0tPnRvU29saWRDb2xvckRyYXdRdWFkKCktPmNvbG9yKCks
IHRlc3RDb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
VGlsZWRMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
aWxlZExheWVySW1wbFRlc3QuY3BwCmluZGV4IGZlOGNhOGViMDIxN2FmNTIzMzI0ZTIwY2M3NGVh
ZjFjNTNkZGE4ZmYuLjU3Y2FhN2RjMTcxNGExZjllNTJlNTIxYzU4ZDQwMzkyNTM1MzdiYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1w
bFRlc3QuY3BwCkBAIC03Miw3ICs3Miw4IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGVt
cHR5UXVhZExpc3QpCiAgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNy
ZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRl
clRleGVscyk7CiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKICAgICAgICAg
T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRl
U2hhcmVkUXVhZFN0YXRlKCk7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQg
PSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1
YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IG51bVRpbGVzID0gbnVtVGlsZXNYICogbnVtVGlsZXNZOwogICAgICAgICBFWFBFQ1RfRVEocXVh
ZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgbnVtVGlsZXMpOwogICAgIH0KQEAgLTg0LDcgKzg1
LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKIAogICAgICAg
ICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7CiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgp
OwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRl
LmdldCgpKTsKKyAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7CisgICAgICAg
IGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVz
ZWRDaGVja2VyYm9hcmQpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgp
LnNpemUoKSwgMHUpOwogICAgIH0KIApAQCAtOTcsNyArOTksOCBAQCBURVNUKENDVGlsZWRMYXll
ckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVh
ZEN1bGxlcjsKICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3Rh
dGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0gICAgICAgIGxheWVyLT5hcHBl
bmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29s
IHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1
YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CiAgICAg
ICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAwdSk7CiAgICAgfQog
CkBAIC0xMDgsNyArMTExLDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFk
TGlzdCkKIAogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7CiAgICAgICAgIE93
blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNo
YXJlZFF1YWRTdGF0ZSgpOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwg
c2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0g
ZmFsc2U7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFk
U3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1
bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgIH0KIH0KQEAgLTEyOCw4ICsxMzIsMTAg
QEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogICAgIC8vIE5v
IGNoZWNrZXJib2FyZGluZwogICAgIHsKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3Vs
bGVyOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0
YXRlLmdldCgpKTsKKyAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7CisgICAg
ICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCks
IHVzZWRDaGVja2VyYm9hcmQpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlz
dCgpLnNpemUoKSwgNHUpOworICAgICAgICBFWFBFQ1RfRkFMU0UodXNlZENoZWNrZXJib2FyZCk7
CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCku
c2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgp
W2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQpOwpAQCAtMTQyLDcgKzE0
OCw5IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKICAgICAv
LyBBbGwgY2hlY2tlcmJvYXJkaW5nCiAgICAgewogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1
YWRDdWxsZXI7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRR
dWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsK
KyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5n
ZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKHVzZWRDaGVja2Vy
Ym9hcmQpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwg
NHUpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3Qo
KS5zaXplKCk7ICsraSkKICAgICAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0
KClbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlNvbGlkQ29sb3IpOwpAQCAtMTU3LDcgKzE2
NSw4IEBAIHN0YXRpYyBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBnZXRRdWFkcyhDQ1F1
YWRMaXN0JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6CiAKICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1
YWRDdWxsZXIocXVhZHMpOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVh
ZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgIGxheWVyLT5hcHBl
bmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgIGJvb2wgdXNl
ZENoZWNrZXJib2FyZCA9IGZhbHNlOworICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwogICAgIHJldHVybiBz
aGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpOyAvLyBUaGUgc2hhcmVkIGRhdGEgbXVzdCBiZSBvd25l
ZCBhcyBsb25nIGFzIHRoZSBxdWFkIGxpc3QgZXhpc3RzLgogfQogCkBAIC0yNzUsNyArMjg0LDgg
QEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQog
ICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVy
LT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKIAogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1
YWRDdWxsZXI7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRR
dWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsK
KyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5n
ZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1
YWRMaXN0KCkuc2l6ZSgpLCBudW1UaWxlcyk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCkBAIC0yOTAsNyArMzAwLDgg
QEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQog
CiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5
ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1
YWRDdWxsZXI7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRR
dWFkU3RhdGUuZ2V0KCkpOworICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsK
KyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5n
ZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBFWFBFQ1Rf
RVEocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpTb2xp
ZENvbG9yKTsKQEAgLTMwNiw3ICszMTcsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBi
YWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQpCiAKICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAg
ICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgbGF5ZXItPmFwcGVu
ZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7CisgICAgICAgIGJvb2wg
dXNlZENoZWNrZXJib2FyZCA9IGZhbHNlOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVh
ZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKIAogICAg
ICAgICB1bnNpZ25lZCBudW1Db250ZW50VGlsZXMgPSAwLCBudW1HdXR0ZXJUaWxlcyA9IDA7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUo
KTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tD
Q1F1YWRDdWxsZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1
bGxlci5oCmluZGV4IDc5MWFmNTAzM2Y3OGY2NjEwYWEyNjY1MmIzNGJiOGRmZTA3ZjhkYjkuLmQ5
Y2QzMTMyNjgzMGJkMTIyMDMxY2YwYzhlMThlZGNkOTBlYzk1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCkBAIC00NCwxMSArNDQsMTQg
QEAgcHVibGljOgogICAgICAgICAsIG1fYWN0aXZlUXVhZExpc3QoZXh0ZXJuYWxRdWFkTGlzdCkK
ICAgICB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoV1RGOjpQYXNzT3duUHRyPFdlYkNv
cmU6OkNDRHJhd1F1YWQ+IG5ld1F1YWQpCisgICAgdmlydHVhbCBib29sIGFwcGVuZChXVEY6OlBh
c3NPd25QdHI8V2ViQ29yZTo6Q0NEcmF3UXVhZD4gbmV3UXVhZCkKICAgICB7CiAgICAgICAgIE93
blB0cjxXZWJDb3JlOjpDQ0RyYXdRdWFkPiBkcmF3UXVhZCA9IG5ld1F1YWQ7Ci0gICAgICAgIGlm
ICghZHJhd1F1YWQtPnF1YWRSZWN0KCkuaXNFbXB0eSgpKQorICAgICAgICBpZiAoIWRyYXdRdWFk
LT5xdWFkUmVjdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgbV9hY3RpdmVRdWFkTGlzdC5h
cHBlbmQoZHJhd1F1YWQucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpDQ1F1YWRMaXN0JiBxdWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlUXVhZExpc3Q7
IH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>