<?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>80100</bug_id>
          
          <creation_ts>2012-03-01 22:17:08 -0800</creation_ts>
          <short_desc>[chromium] CCThreadProxy context lost support</short_desc>
          <delta_ts>2012-03-06 20:58:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>levin+threading</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>569259</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-01 22:17:08 -0800</bug_when>
    <thetext>[chromium] CCThreadProxy context lost support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569261</commentid>
    <comment_count>1</comment_count>
      <attachid>129817</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-01 22:17:40 -0800</bug_when>
    <thetext>Created attachment 129817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569263</commentid>
    <comment_count>2</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-01 22:18:47 -0800</bug_when>
    <thetext>I think this is mostly in a shape to get initial review feedback. James, seem sane?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569843</commentid>
    <comment_count>3</comment_count>
      <attachid>129817</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-02 12:20:54 -0800</bug_when>
    <thetext>Comment on attachment 129817
Patch

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

Not fully-brained wrapped but what I think I understand so far looks good

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:47
&gt; +    bool shouldDraw = (m_needsRedraw &amp;&amp; m_insideVSync &amp;&amp; m_visible &amp;&amp; canDraw &amp;&amp; m_canDraw &amp;&amp; m_contextState == CONTEXT_ACTIVE) || m_needsForcedRedraw;

this is getting hairy. maybe this should be a helper function with the states listed out as if()+returns, or just broken out into more intermediate bools?

would context loss collapse more naturally into canDraw?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:192
&gt; +    if (m_contextState == CONTEXT_LOST || m_contextState == CONTEXT_RECREATING)

how can we hit this call without transitioning first to CONTEXT_ACTIVE?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:230
&gt; +                                          AllowCrossThreadAccess(&amp;completion),

indentation here seems to have gone a bit off. i think aligning with the first parameter of the innermost call would be appropriate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569967</commentid>
    <comment_count>4</comment_count>
      <attachid>129817</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-02 14:59:16 -0800</bug_when>
    <thetext>Comment on attachment 129817
Patch

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

Logic looks pretty sound near as I can tell.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

remember to take care of this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571577</commentid>
    <comment_count>5</comment_count>
      <attachid>130312</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-06 00:12:30 -0800</bug_when>
    <thetext>Created attachment 130312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571640</commentid>
    <comment_count>6</comment_count>
      <attachid>130312</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-06 01:35:58 -0800</bug_when>
    <thetext>Comment on attachment 130312
Patch

Attachment 130312 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11835259

New failing tests:
platform/chromium/compositing/lost-compositor-context.html
platform/chromium/compositing/webgl-loses-compositor-context.html
platform/chromium/compositing/lost-compositor-context-with-rendersurface.html
platform/chromium/compositing/lost-compositor-context-with-video.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572120</commentid>
    <comment_count>7</comment_count>
      <attachid>130435</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-06 13:43:46 -0800</bug_when>
    <thetext>Created attachment 130435
it works this time really</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572130</commentid>
    <comment_count>8</comment_count>
      <attachid>130437</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-06 13:58:41 -0800</bug_when>
    <thetext>Created attachment 130437
Integrate @kbrs didRecreate event delivery</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572199</commentid>
    <comment_count>9</comment_count>
      <attachid>130437</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-06 15:16:00 -0800</bug_when>
    <thetext>Comment on attachment 130437
Integrate @kbrs didRecreate event delivery

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:208
&gt; +    virtual void onContextLost()
&gt; +    {
&gt; +        m_client-&gt;didLoseContext();

is it worth having an adapter just do to the rename onContextLost -&gt; didLoseContext? can&apos;t we just pick one name and have the LayerRendererChromiumClient satisfy the ContextLostCallback interface?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:212
&gt; +    ContextLostCallbackAdapter(LayerRendererChromiumClient* client)

explicit.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:213
&gt; +            : m_client(client) { }

indentation off

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h:72
&gt; +    // Where possible, redraws are scissored to a damage region calculated from changes to
&gt; +    // layer properties. This function overrides the damage region for the next draw cycle.

i think this comment wandered off from its true home (it was associated with setFullRootLayerDamage(), but that&apos;s not on this client interface). probably can be deleted completely now

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:137
&gt; +    enum RecreateResult {

i know the scheduler follows a different convention but everywhere else in WebKit enum values are named like normal variables - i.e. CamelCased, not MACRO_STYLE

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:415
&gt; +    if (wasRecreate)
&gt; +        sendContextLostAndRestoredNotificationRecursive(m_rootLayerImpl.get());

this could be moved up next to the close() call to avoid the temporary.

the function is somewhat misnamed (IMO). it&apos;s notifying the CCLayerImpl tree that the context they were using was lost.  it doesn&apos;t actually matter whether we have a new context or not as far as the CCLayerImpls go - they just need to know that any resources that they had are no longer valid - so the ordering w.r.t. restoring the next context doesn&apos;t matter much.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:42
&gt; +    , m_contextState(CONTEXT_ACTIVE) { }

nit: if you move the { } at the end of line out to the next two lines you&apos;ll get 1 less line of diff every time this changes, and less chance of merge conflicts

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h:98
&gt; +    class ContextRecreationTimer : public CCTimer, CCTimerClient {

sucks that we need all this boilerplate to use a CCTimer :/

since this is stored via an OwnPtr&lt;&gt; can we just forward declare the type in the header and hide the implementation in the .cpp?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h:107
&gt; +        enum Recreation { RecreationTickRate = 30 };

this could probably use a type-tag. I had assumed it was seconds, and 30 seconds seemed like a pretty long time to wait until I checked CCTimer.h!

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h:110
&gt; +        ContextRecreationTimer(CCThreadProxy* proxy) : CCTimer(CCProxy::mainThread(), this), m_proxy(proxy) { }

explicit.

expand the initialization out to be one per line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572224</commentid>
    <comment_count>10</comment_count>
      <attachid>130437</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-06 15:47:25 -0800</bug_when>
    <thetext>Comment on attachment 130437
Integrate @kbrs didRecreate event delivery

Ooh and the bots look happy too. R=me, but consider the feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572228</commentid>
    <comment_count>11</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-06 15:51:24 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:208
&gt; &gt; +    virtual void onContextLost()
&gt; &gt; +    {
&gt; &gt; +        m_client-&gt;didLoseContext();
&gt; 
&gt; is it worth having an adapter just do to the rename onContextLost -&gt; didLoseContext? can&apos;t we just pick one name and have the LayerRendererChromiumClient satisfy the ContextLostCallback interface?

Yeah, if the purpose of this was just to do that conversion, that&apos;d be a fair point. But, the adapter is also keeping the GC3D-basedness of the LRC out of the header. That&apos;s more the win I see. I could make LRC implement GraphicsContext3D::ContextLostCallback if you wanted to avoid the adapter...

WDYT?

sendContextLostAndRestoredNotificationRecursive(m_rootLayerImpl.get());
&gt; the function is somewhat misnamed (IMO).

I changed the naming to be more normative.

&gt; sucks that we need all this boilerplate to use a CCTimer :/

Hugely. I&apos;ve got in the back of my head using the machinery of CCTask for method callbacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572234</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-06 15:53:11 -0800</bug_when>
    <thetext>Ah, good point about isolation.  If only interfaces worked like they did in Go this would all go away. I agree that&apos;s probably enough to do an adapter (although LRC itself could be &apos;the adapter&apos; as you point out).  Whichever you prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572266</commentid>
    <comment_count>13</comment_count>
      <attachid>130471</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-06 16:40:26 -0800</bug_when>
    <thetext>Created attachment 130471
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572492</commentid>
    <comment_count>14</comment_count>
      <attachid>130471</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-06 20:58:29 -0800</bug_when>
    <thetext>Comment on attachment 130471
Patch for landing

Clearing flags on attachment: 130471

Committed r110010: &lt;http://trac.webkit.org/changeset/110010&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572493</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-06 20:58:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129817</attachid>
            <date>2012-03-01 22:17:40 -0800</date>
            <delta_ts>2012-03-06 00:12:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80100-20120301221739.patch</filename>
            <type>text/plain</type>
            <size>24171</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThjM2FjZDc1NmY5NjZh
MjNmZTM0YTJlM2FjNmZlMWRmZWE1NTFkNS4uNTdhNmU5MGExYzIwZjhhMzllMzhiNmY4ODUyODQ0
ZGY1ZGI3M2NmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAzLTAxICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENDVGhyZWFk
UHJveHkgY29udGV4dCBsb3N0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwMTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NjaGVkdWxlcjo6ZGlkTG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkUmVjcmVhdGVDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaDoKKyAgICAg
ICAgKENDU2NoZWR1bGVyQ2xpZW50KToKKyAgICAgICAgKENDU2NoZWR1bGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6Om5leHRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjp2c3luY0NhbGxiYWNrTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpkaWRMb3NlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpkaWRSZWNyZWF0ZUNvbnRleHQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmg6CisgICAgICAgIChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvbkRyYXdBbmRTd2FwKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OnNldEFuaW1hdGlvbkV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpi
ZWdpbkNvbnRleHRSZWNyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5Ojpsb3NlQ29udGV4dE9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQcm94
eSk6CisKIDIwMTItMDItMjkgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gTW92ZSBjb250ZXh0IGxvc3QgY29udHJvbCBjb2RlIGZyb20gQ0NTaW5n
bGVUaHJlYWRQcm94eSB0byBDQ0xheWVyVHJlZUhvc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggMTFkMTAwMGEzOTdlYWJjNWZlMjk3MTI4NzcwMjYyMjE1YmUyYTVjMC4uZWQyOGU1YmMy
NzM2YjRjMDMwYWVkNzEwNjBlOGVlZWQ0ODIzMmM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMy0wMSAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDQ1RocmVhZFByb3h5IGNvbnRleHQgbG9zdCBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDEwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
dGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9D
Q1NjaGVkdWxlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VDQ1NjaGVkdWxl
ckNsaWVudDo6c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbik6CisgICAgICAg
IChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzRHJhd0luc2lkZURyYXc6
OnNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24pOgorICAgICAgICAoV2ViS2l0
VGVzdHM6OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURyYXc6OnNjaGVk
dWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24pOgorCiAyMDEyLTAyLTI5ICBOYXQgRHVj
YSAgPG5kdWNhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1vdmUgY29udGV4
dCBsb3N0IGNvbnRyb2wgY29kZSBmcm9tIENDU2luZ2xlVGhyZWFkUHJveHkgdG8gQ0NMYXllclRy
ZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKaW5kZXggODU4MDQ2N2YwMjMwMzJjMTQ1MjIx
MmY1NjU2MmUwNjE4NTFkOTc0Mi4uNjMzZjIxZDQ3YjkzMWNjYTg0Nzg1NDI2YTcxZjRmOGQzYjZl
NDY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcApAQCAtODYsMTAgKzg2LDE5IEBAIHZvaWQg
Q0NTY2hlZHVsZXI6OmRpZFN3YXBCdWZmZXJzQ29tcGxldGUoKQogICAgIG1fZnJhbWVSYXRlQ29u
dHJvbGxlci0+ZGlkRmluaXNoRnJhbWUoKTsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlcjo6ZGlkU3dh
cEJ1ZmZlcnNBYm9ydCgpCit2b2lkIENDU2NoZWR1bGVyOjpkaWRMb3NlQ29udGV4dCgpCiB7Ci0g
ICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpkaWRTd2FwQnVmZmVyc0Fib3J0IiwgdGhpcywg
MCk7CisgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpkaWRMb3NlQ29udGV4dCIsIHRoaXMs
IDApOwogICAgIG1fZnJhbWVSYXRlQ29udHJvbGxlci0+ZGlkQWJvcnRBbGxQZW5kaW5nRnJhbWVz
KCk7CisgICAgbV9zdGF0ZU1hY2hpbmUuZGlkTG9zZUNvbnRleHQoKTsKKyAgICBwcm9jZXNzU2No
ZWR1bGVkQWN0aW9ucygpOworfQorCit2b2lkIENDU2NoZWR1bGVyOjpkaWRSZWNyZWF0ZUNvbnRl
eHQoKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6ZGlkUmVjcmVhdGVDb250ZXh0
IiwgdGhpcywgMCk7CisgICAgbV9zdGF0ZU1hY2hpbmUuZGlkUmVjcmVhdGVDb250ZXh0KCk7Cisg
ICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIH0KIAogdm9pZCBDQ1NjaGVkdWxlcjo6YmVn
aW5GcmFtZSgpCkBAIC0xNTEsNiArMTYwLDkgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1Nj
aGVkdWxlZEFjdGlvbnMoKQogICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwKCk7CiAgICAgICAgICAgICBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXItPmRpZEJlZ2lu
RnJhbWUoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9OOgorICAgICAgICAgICAg
bV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoYWN0aW9uICE9IENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCmluZGV4
IDczMTA1ODFiMTFiNWZkZjNmODg5N2ZhY2Y2YzZmOTE5NGMyZTJjYTEuLmY4YmEyMWY5OWYyNGM1
YTljZTA3ZDE2YmEyMzUxNTY0MzlkMGVlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAtNDQs
NiArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdB
bmRTd2FwKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3Jl
UmVzb3VyY2VzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3Jl
YXRpb24oKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DQ1NjaGVkdWxlckNsaWVu
dCgpIHsgfQpAQCAtNzEsNyArNzIsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE1heEZyYW1l
c1BlbmRpbmcoaW50KTsKICAgICB2b2lkIGRpZFN3YXBCdWZmZXJzQ29tcGxldGUoKTsKLSAgICB2
b2lkIGRpZFN3YXBCdWZmZXJzQWJvcnQoKTsKKworICAgIHZvaWQgZGlkTG9zZUNvbnRleHQoKTsK
KyAgICB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dCgpOwogCiAgICAgYm9vbCBjb21taXRQZW5kaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUuY29tbWl0UGVuZGluZygpOyB9CiAgICAg
Ym9vbCByZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUucmVkcmF3
UGVuZGluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5j
cHAKaW5kZXggZDFhYTVjY2RjNzQ0YzhmY2I0MDMwYjBmYmM1NjU4MzM0ZjY1ZGViZi4uZTZkZGUy
NjQ0Y2YzZGJkMmM5MWNkYmQ0NzVhZjQyODgzNDc1MjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcApAQCAtMzgsMTQgKzM4LDE5IEBAIENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSgpCiAgICAgLCBtX3VwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKQogICAgICwgbV9pbnNpZGVWU3luYyhmYWxzZSkK
ICAgICAsIG1fdmlzaWJsZShmYWxzZSkKLSAgICAsIG1fY2FuRHJhdyh0cnVlKSB7IH0KKyAgICAs
IG1fY2FuRHJhdyh0cnVlKQorICAgICwgbV9jb250ZXh0U3RhdGUoQ09OVEVYVF9BQ1RJVkUpIHsg
fQogCiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpuZXh0QWN0aW9uKCkgY29uc3QKIHsKICAgICBib29sIGNhbkRyYXcgPSBtX2N1cnJlbnRG
cmFtZU51bWJlciAhPSBtX2xhc3RGcmFtZU51bWJlcldoZXJlRHJhd1dhc0NhbGxlZDsKLSAgICBi
b29sIHNob3VsZERyYXcgPSAobV9uZWVkc1JlZHJhdyAmJiBtX2luc2lkZVZTeW5jICYmIG1fdmlz
aWJsZSAmJiBjYW5EcmF3ICYmIG1fY2FuRHJhdykgfHwgbV9uZWVkc0ZvcmNlZFJlZHJhdzsKKyAg
ICBib29sIHNob3VsZERyYXcgPSAobV9uZWVkc1JlZHJhdyAmJiBtX2luc2lkZVZTeW5jICYmIG1f
dmlzaWJsZSAmJiBjYW5EcmF3ICYmIG1fY2FuRHJhdyAmJiBtX2NvbnRleHRTdGF0ZSA9PSBDT05U
RVhUX0FDVElWRSkgfHwgbV9uZWVkc0ZvcmNlZFJlZHJhdzsKICAgICBzd2l0Y2ggKG1fY29tbWl0
U3RhdGUpIHsKICAgICBjYXNlIENPTU1JVF9TVEFURV9JRExFOgorICAgICAgICBpZiAobV9jb250
ZXh0U3RhdGUgPT0gQ09OVEVYVF9MT1NUKQorICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJ
Tl9DT05URVhUX1JFQ1JFQVRJT047CisgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSA9PSBDT05U
RVhUX1JFQ1JFQVRJTkcpCisgICAgICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAgICAgICAg
IGlmIChzaG91bGREcmF3KQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwogICAgICAg
ICBpZiAobV9uZWVkc0NvbW1pdCAmJiBtX3Zpc2libGUpCkBAIC02OCw3ICs3Myw3IEBAIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRB
Y3Rpb24oKSBjb25zdAogICAgICAgICByZXR1cm4gQUNUSU9OX0NPTU1JVDsKIAogICAgIGNhc2Ug
Q09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVc6Ci0gICAgICAgIGlmIChzaG91bGRE
cmF3KQorICAgICAgICBpZiAoc2hvdWxkRHJhdyB8fCBtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhU
X0xPU1QpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAgICAgICAgIC8vIENPTU1J
VF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXIHdhbnRzIHRvIGVuZm9yY2UgYSBkcmF3LiBJ
ZiBtX2NhbkRyYXcgaXMgZmFsc2UsCiAgICAgICAgIC8vIHByb2NlZWQgdG8gdGhlIG5leHQgc3Rl
cCAoc2ltaWxhciBhcyBpbiBDT01NSVRfU1RBVEVfSURMRSkuCkBAIC0xMTUsMTIgKzEyMCwxOCBA
QCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZShBY3Rpb24gYWN0aW9u
KQogICAgICAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9JRExFOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgQUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVD
UkVBVElPTjoKKyAgICAgICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0lE
TEUpOworICAgICAgICBBU1NFUlQobV9jb250ZXh0U3RhdGUgPT0gQ09OVEVYVF9MT1NUKTsKKyAg
ICAgICAgbV9jb250ZXh0U3RhdGUgPSBDT05URVhUX1JFQ1JFQVRJTkc7CisgICAgICAgIHJldHVy
bjsKICAgICB9CiB9CiAKIGJvb2wgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnZzeW5jQ2FsbGJh
Y2tOZWVkZWQoKSBjb25zdAogewotICAgIGlmICghbV92aXNpYmxlKSB7CisgICAgaWYgKCFtX3Zp
c2libGUgfHwgbV9jb250ZXh0U3RhdGUgIT0gQ09OVEVYVF9BQ1RJVkUpIHsKICAgICAgICAgaWYg
KG1fbmVlZHNGb3JjZWRSZWRyYXcpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMTc2
LDQgKzE4NywxOCBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpiZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKQogICAgICAgICBtX2NvbW1pdFN0
YXRlID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIAordm9pZCBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6ZGlkTG9zZUNvbnRleHQoKQoreworICAgIGlmIChtX2NvbnRleHRTdGF0
ZSA9PSBDT05URVhUX0xPU1QgfHwgbV9jb250ZXh0U3RhdGUgPT0gQ09OVEVYVF9SRUNSRUFUSU5H
KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0U3RhdGUgPSBDT05URVhUX0xPU1Q7Cit9
CisKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmRpZFJlY3JlYXRlQ29udGV4dCgpCit7
CisgICAgQVNTRVJUKG1fY29udGV4dFN0YXRlID09IENPTlRFWFRfUkVDUkVBVElORyk7CisgICAg
bV9jb250ZXh0U3RhdGUgPSBDT05URVhUX0FDVElWRTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOwor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAppbmRleCA3
ZGU3MTg4NDZlN2UzMTc0OGFjNTY5ODZmYmZjMjJjODc1MTQ3N2IzLi4yMjVlODg1YjQ5OGVkNDA1
OGI3MDdiOTkxZjAxOGJmZjhjMjlmMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmgKQEAgLTUxLDYgKzUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgQ09NTUlU
X1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsCiAgICAgfTsKIAorICAgIGVudW0gQ29udGV4
dFN0YXRlIHsKKyAgICAgICAgQ09OVEVYVF9BQ1RJVkUsCisgICAgICAgIENPTlRFWFRfTE9TVCwK
KyAgICAgICAgQ09OVEVYVF9SRUNSRUFUSU5HLAorICAgIH07CiAgICAgYm9vbCBjb21taXRQZW5k
aW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2NvbW1pdFN0YXRlICE9IENPTU1J
VF9TVEFURV9JRExFOwpAQCAtNjQsNiArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIEFDVElPTl9C
RUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsCiAgICAgICAgIEFDVElPTl9DT01NSVQsCiAgICAg
ICAgIEFDVElPTl9EUkFXLAorICAgICAgICBBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9O
CiAgICAgfTsKICAgICBBY3Rpb24gbmV4dEFjdGlvbigpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRl
U3RhdGUoQWN0aW9uKTsKQEAgLTEwNyw2ICsxMTMsOSBAQCBwdWJsaWM6CiAgICAgLy8gd2hlbiBz
dWNoIGJlaGF2aW9yIHdvdWxkIGJlIHVuZGVzaXJhYmxlLgogICAgIHZvaWQgc2V0Q2FuRHJhdyhi
b29sIGNhbikgeyBtX2NhbkRyYXcgPSBjYW47IH0KIAorICAgIHZvaWQgZGlkTG9zZUNvbnRleHQo
KTsKKyAgICB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dCgpOworCiBwcm90ZWN0ZWQ6CiAgICAgQ29t
bWl0U3RhdGUgbV9jb21taXRTdGF0ZTsKIApAQCAtMTE5LDYgKzEyOCw3IEBAIHByb3RlY3RlZDoK
ICAgICBib29sIG1faW5zaWRlVlN5bmM7CiAgICAgYm9vbCBtX3Zpc2libGU7CiAgICAgYm9vbCBt
X2NhbkRyYXc7CisgICAgQ29udGV4dFN0YXRlIG1fY29udGV4dFN0YXRlOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA5MDVhMDk0YzA3YTYxMWUxMjc3Y2IxNmVhMzdi
MjM1ZDZiZTY1M2UxLi5mYzAzZWEyNmFjNmY4MzhlMDkyZGQ4ZmJhMTE1NjNlYjk2YjIzODNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMjA3LDggKzIwNywzNSBAQCBib29sIEND
VGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkKIAogYm9vbCBDQ1RocmVhZFBy
b3h5OjpyZWNyZWF0ZUNvbnRleHQoKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBmYWxzZTsKKyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnJl
Y3JlYXRlQ29udGV4dCIpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBU
cnkgdG8gY3JlYXRlIHRoZSBjb250ZXh0LgorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y29udGV4dCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlQ29udGV4dCgpOworICAgIGlmICghY29u
dGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChjb250ZXh0LT5oYXNPbmVS
ZWYoKSk7CisKKyAgICAvLyBMZWFrIHRoZSBjb250ZXh0IHBvaW50ZXIgc28gd2UgY2FuIHRyYW5z
ZmVyIG93bmVyc2hpcCBvZiBpdCB0byB0aGUgb3RoZXIgc2lkZS4uLgorICAgIEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0UHRyID0gY29udGV4dC5yZWxlYXNlKCkubGVha1JlZigpOworICAgIEFT
U0VSVChjb250ZXh0UHRyLT5oYXNPbmVSZWYoKSk7CisKKyAgICAvLyBNYWtlIGEgYmxvY2tpbmcg
Y2FsbCB0byByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQuIFRoZSByZXN1bHRzIG9mIHRoYXQK
KyAgICAvLyBjYWxsIGFyZSBwdXNoZWQgaW50byB0aGUgcmVjcmVhdGVTdWNjZWVkZWQgYW5kIGNh
cGFiaWxpdGllcyBsb2NhbAorICAgIC8vIHZhcmlhYmxlcy4KKyAgICBDQ0NvbXBsZXRpb25FdmVu
dCBjb21wbGV0aW9uOworICAgIGJvb2wgcmVjcmVhdGVTdWNjZWVkZWQgPSBmYWxzZTsKKyAgICBM
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllczsKKyAgICBDQ1Byb3h5OjppbXBs
VGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94
eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKGNvbnRleHRQdHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmcmVjcmVhdGVTdWNjZWVkZWQpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vz
cygmY2FwYWJpbGl0aWVzKSkpOworICAgIGNvbXBsZXRpb24ud2FpdCgpOworCisgICAgaWYgKHJl
Y3JlYXRlU3VjY2VlZGVkKQorICAgICAgICBtX2xheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXNNYWlu
VGhyZWFkQ29weSA9IGNhcGFiaWxpdGllczsKKyAgICByZXR1cm4gcmVjcmVhdGVTdWNjZWVkZWQ7
CiB9CiAKIGludCBDQ1RocmVhZFByb3h5Ojpjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0CkBA
IC0yMjUsNyArMjUyLDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NUaHJl
YWRQcm94eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnMKIAogdm9pZCBDQ1RocmVh
ZFByb3h5Ojpsb3NlQ29udGV4dCgpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
Q0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywg
JkNDVGhyZWFkUHJveHk6Omxvc2VDb250ZXh0T25JbXBsVGhyZWFkKSk7CiB9CiAKIHZvaWQgQ0NU
aHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlKCkKQEAgLTUxNyw2ICs1NDQsMTIgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQogICAgIG1fY29tbWl0Q29tcGxl
dGlvbkV2ZW50T25JbXBsVGhyZWFkID0gMDsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkKK3sKKyAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOworICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVh
ZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luQ29udGV4dFJlY3JlYXRpb24pKTsKK30K
Kwogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCiB7CiAg
ICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
IiwgdGhpcywgMCk7CkBAIC01NDEsMTAgKzU3NCw2IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2No
ZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQogCiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3dh
cEJ1ZmZlcnMoKTsKIAotICAgIC8vIEZJWE1FOiBoYW5kbGUgY2FzZSB3aGVyZSBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5pc0NvbnRleHRMb3N0LgotICAgIC8vIEZJWE1FOiBwYXNzIGRpZFN3YXBCdWZm
ZXJzQWJvcnQgaWYgbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdC4KLSAgICBBU1NF
UlQoIW1fbGF5ZXJUcmVlSG9zdEltcGwtPmlzQ29udGV4dExvc3QoKSk7Ci0KICAgICAvLyBQcm9j
ZXNzIGFueSBmaW5pc2ggcmVxdWVzdAogICAgIGlmIChtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBs
ZXRpb25FdmVudE9uSW1wbFRocmVhZCkgewogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5m
aW5pc2hBbGxSZW5kZXJpbmcoKTsKQEAgLTU1Nyw2ICs1ODYsMTAgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCiAgICAgICAgIG1fbmV4dEZyYW1lSXNO
ZXdseUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkID0gZmFsc2U7CiAgICAgICAgIG1fbWFpblRo
cmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJv
eHk6OmRpZENvbW1pdEFuZERyYXdGcmFtZSkpOwogICAgIH0KKworICAgIC8vIERldGVjdCBhIGNv
bnRleHQgbG9zdAorICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRleHRMb3N0KCkp
CisgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5kaWRMb3NlQ29udGV4dCgpOwogfQog
CiB2b2lkIENDVGhyZWFkUHJveHk6OmRpZENvbW1pdEFuZERyYXdGcmFtZSgpCkBAIC01NzcsMTIg
KzYxMCwyMCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKQog
CiB2b2lkIENDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cyhQYXNzT3duUHRyPENDQW5p
bWF0aW9uRXZlbnRzVmVjdG9yPiBldmVudHMpCiB7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJD
Q1RocmVhZFByb3h5OjpzZXRBbmltYXRpb25FdmVudHMiKTsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIGlmICghbV9sYXllclRyZWVIb3N0KQogICAgICAgICByZXR1cm47CiAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXRBbmltYXRpb25FdmVudHMoZXZlbnRzKTsKIH0KIAordm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkKK3sKKyAgICBUUkFDRV9FVkVO
VDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OmJlZ2luQ29udGV4dFJlY3JlYXRpb24iKTsKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGlkTG9zZUNvbnRl
eHQoKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKQEAgLTY0
Myw0ICs2ODQsMjQgQEAgc2l6ZV90IENDVGhyZWFkUHJveHk6Om1heFBhcnRpYWxUZXh0dXJlVXBk
YXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIHRleHR1cmVVcGRhdGVzUGVyRnJhbWU7CiB9CiAKK3Zv
aWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlv
bkV2ZW50KiBjb21wbGV0aW9uLCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dFB0ciwgYm9vbCog
cmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqIGNhcGFiaWxpdGll
cykKK3sKKyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29u
dGV4dE9uSW1wbFRocmVhZCIpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgbV9s
YXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAqcmVjcmVhdGVT
dWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihh
ZG9wdFJlZihjb250ZXh0UHRyKSk7CisgICAgaWYgKCpyZWNyZWF0ZVN1Y2NlZWRlZCkgeworICAg
ICAgICAqY2FwYWJpbGl0aWVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpOworICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+ZGlkUmVjcmVh
dGVDb250ZXh0KCk7CisgICAgfQorICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworfQorCit2b2lk
IENDVGhyZWFkUHJveHk6Omxvc2VDb250ZXh0T25JbXBsVGhyZWFkKCkKK3sKKyAgICBUUkFDRV9F
VkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6Omxvc2VDb250ZXh0T25JbXBsVGhyZWFkIik7Cisg
ICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+
ZGlkTG9zZUNvbnRleHQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oCmluZGV4IDU3YmE1OTg3NDg4ODY5ZTkzMjgwZWU0NTUzMGY4Yjg5NzU4MmJi
MzcuLmU5YTc0MTIxYThhMDRhNTM2NWRjOTcwYWJmMTc3ZWJkZWRhYTY0MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmgKQEAgLTgxLDYgKzgxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
ZEFjdGlvbkNvbW1pdCgpOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNv
bnRleHRSZWNyZWF0aW9uKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94
eShDQ0xheWVyVHJlZUhvc3QqKTsKQEAgLTkwLDYgKzkxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVy
cygpOwogICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25F
dmVudHNWZWN0b3I+KTsKKyAgICB2b2lkIGJlZ2luQ29udGV4dFJlY3JlYXRpb24oKTsKIAogICAg
IC8vIENhbGxlZCBvbiBpbXBsIHRocmVhZAogICAgIHN0cnVjdCBSZWFkYmFja1JlcXVlc3QgewpA
QCAtMTEwLDYgKzExMiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWaXNpYmxlT25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgYm9vbCB2aXNpYmxlKTsKICAgICB2b2lkIGxheWVyVHJl
ZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHNl
dEZ1bGxSb290TGF5ZXJEYW1hZ2VPbkltcGxUaHJlYWQoKTsKKyAgICB2b2lkIGxvc2VDb250ZXh0
T25JbXBsVGhyZWFkKCk7CisgICAgdm9pZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqLCBHcmFwaGljc0NvbnRleHQzRCosIGJvb2wqIHJlY3JlYXRlU3VjY2Vl
ZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKik7CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBt
YWluIHRocmVhZCBvbmx5LgogICAgIGJvb2wgbV9hbmltYXRlUmVxdWVzdGVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QuY3BwCmluZGV4IDM5MDhmNDBhOTlhZTc1NzAzMWU5YWQ5MWI0MjljNjJmYmI1MzYx
NjguLjMyNTJiNTY0NTZmN2ZhNjYwNThhMDkwY2U0ZjBkMWUzNTc4ZWQ4MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdC5jcHAKQEAgLTYwNCw0ICs2MDQsMTQ5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0R29lc0ludmlzaWJsZU1pZENvbW1pdCkKICAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwogfQogCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0
V2hlbkNvbXBsZXRlbHlJZGxlKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0
ZS5zZXRWaXNpYmxlKHRydWUpOworCisgICAgc3RhdGUuZGlkTG9zZUNvbnRleHQoKTsKKworICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRf
UkVDUkVBVElPTiwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShz
dGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gT25jZSBjb250ZXh0IHJlY3JlYXRpb24gYmVn
aW5zLCBub3RoaW5nIHNob3VsZCBoYXBwZW4uCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFJl
Y3JlYXRlIHRoZSBjb250ZXh0CisgICAgc3RhdGUuZGlkUmVjcmVhdGVDb250ZXh0KCk7CisKKyAg
ICAvLyBXaGVuIHRoZSBjb250ZXh0IGlzIHJlY3JlYXRlZCwgd2Ugc2hvdWxkIGJlZ2luIGEgY29t
bWl0CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
RlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUu
bmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3RDb250ZXh0TG9zdFdoZW5JZGxlQW5kQ29tbWl0UmVxdWVzdGVkV2hpbGVSZWNyZWF0aW5nKQor
eworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwor
CisgICAgc3RhdGUuZGlkTG9zZUNvbnRleHQoKTsKKworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTiwgc3RhdGUubmV4
dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
CisgICAgLy8gT25jZSBjb250ZXh0IHJlY3JlYXRpb24gYmVnaW5zLCBub3RoaW5nIHNob3VsZCBo
YXBwZW4uCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9O
RSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFdoaWxlIGNvbnRleHQgaXMgcmVjcmVh
dGluZywgY29tbWl0cyBzaG91bGRuJ3QgYmVnaW4uCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQo
dHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9O
RSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFJlY3JlYXRlIHRoZSBjb250ZXh0Cisg
ICAgc3RhdGUuZGlkUmVjcmVhdGVDb250ZXh0KCk7CisKKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0
IGlzIHJlY3JlYXRlZCwgd2Ugc2hvdWxkIGJlZ2luIGEgY29tbWl0CisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAg
IC8vIE9uY2UgdGhlIGNvbnRleHQgaXMgcmVjcmVhdGVkLCB3aGV0aGVyIHdlIGRyYXcgc2hvdWxk
IGJlIGJhc2VkIG9uCisgICAgLy8gc2V0Q2FuRHJhdy4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJh
dyh0cnVlKTsKKyAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAg
ICBzdGF0ZS5zZXRDYW5EcmF3KGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnNl
dENhbkRyYXcodHJ1ZSk7CisgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOworfQorCitURVNUKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblBy
b2dyZXNzKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxl
KHRydWUpOworCisgICAgLy8gR2V0IGEgY29tbWl0IGluIGZsaWdodC4KKyAgICBzdGF0ZS5zZXRO
ZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRh
dGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gU2V0IGRhbWFnZSBhbmQgZXhw
ZWN0IGEgZHJhdy4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAgICBzdGF0ZS5k
aWRFbnRlclZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKKworICAgIC8v
IENhdXNlIGEgbG9zdCBjb250ZXh0IHdoaWxlIHRoZSBiZWdpbiBmcmFtZSBpcyBpbiBmbGlnaHQu
CisgICAgc3RhdGUuZGlkTG9zZUNvbnRleHQoKTsKKworICAgIC8vIEFzayBmb3IgYW5vdGhlciBk
cmF3LiBFeHBlY3Qgbm90aGluZyBoYXBwZW5zLgorICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRy
dWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBGaW5pc2ggdGhlIGZyYW1lLCB1cGRhdGUg
cmVzb3VyY2VzLCBhbmQgY29tbWl0LgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVT
dGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuYmVn
aW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gRXhw
ZWN0IHRvIGJlIHRvbGQgdG8gYmVnaW4gY29udGV4dCByZWNyZWF0aW9uLCBpbmRlcGVuZGVudCBv
ZiB2c3luYyBzdGF0ZQorICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT04s
IHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOworICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVD
UkVBVElPTiwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoaWxlQ29tbWl0SW5Qcm9ncmVzc0FuZEFub3Ro
ZXJDb21taXRSZXF1ZXN0ZWQpCit7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRl
LnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBHZXQgYSBjb21taXQgaW4gZmxpZ2h0LgorICAg
IHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAg
IHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBTZXQgZGFt
YWdlIGFuZCBleHBlY3QgYSBkcmF3LgorICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwor
ICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuZGlkTGVhdmVWU3luYygp
OworCisgICAgLy8gQ2F1c2UgYSBsb3N0IGNvbnRleHQgd2hpbGUgdGhlIGJlZ2luIGZyYW1lIGlz
IGluIGZsaWdodC4KKyAgICBzdGF0ZS5kaWRMb3NlQ29udGV4dCgpOworCisgICAgLy8gQXNrIGZv
ciBhbm90aGVyIGRyYXcgYW5kIGFsc28gc2V0IG5lZWRzIGNvbW1pdC4gRXhwZWN0IG5vdGhpbmcg
aGFwcGVucy4KKyAgICAvLyBTZXR0aW5nIGFub3RoZXIgY29tbWl0IHdpbGwgcHV0IHVzIGludG8K
KyAgICAvLyBDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVyBhZnRlciB3ZSBmaW5p
c2ggdGhlIGZyYW1lIG9uIHRoZSBtYWluCisgICAgLy8gdGhyZWFkLgorICAgIHN0YXRlLnNldE5l
ZWRzUmVkcmF3KHRydWUpOworICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CisKKyAgICAvLyBGaW5pc2ggdGhlIGZyYW1lLCB1cGRhdGUgcmVzb3VyY2VzLCBh
bmQgY29tbWl0LgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09V
UkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51
cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVywgc3Rh
dGUuY29tbWl0U3RhdGUoKSk7CisKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0
YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBFeHBlY3QgdG8gYmUgdG9sZCB0byBi
ZWdpbiBjb250ZXh0IHJlY3JlYXRpb24sIGluZGVwZW5kZW50IG9mIHZzeW5jIHN0YXRlCisgICAg
c3RhdGUuZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTiwgc3RhdGUubmV4dEFjdGlvbigp
KTsKKyAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9OLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
U2NoZWR1bGVyVGVzdC5jcHAKaW5kZXggNDc1OTg3ZjEzYWM1ODlmNTA3MjRmMjM5ZWYwYWRkMzA1
MjQ3NDA2Yy4uNDVmNjFiOTBiZjU0ZTJlY2U3OGJkYTg4M2ZmYTBhMjZiZDU0MzZlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcApAQCAt
NTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcCIpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNv
dXJjZXMoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVS
ZXNvdXJjZXMiKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQoKSB7
IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIpOyB9CisgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKSB7IG1fYWN0
aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24iKTsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2hhc01vcmVSZXNvdXJjZVVwZGF0ZXM7CkBAIC0x
NTgsNiArMTU5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlv
blVwZGF0ZU1vcmVSZXNvdXJjZXMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0
aW9uQ29tbWl0KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29u
dGV4dFJlY3JlYXRpb24oKSB7IH0KIAogcHJvdGVjdGVkOgogICAgIGludCBtX251bURyYXdzOwpA
QCAtMjE1LDYgKzIxNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRB
Y3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
ZEFjdGlvbkNvbW1pdCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdp
bkNvbnRleHRSZWNyZWF0aW9uKCkgeyB9CiAKIHByb3RlY3RlZDoKICAgICBpbnQgbV9udW1EcmF3
czsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130312</attachid>
            <date>2012-03-06 00:12:30 -0800</date>
            <delta_ts>2012-03-06 13:43:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80100-20120306001229.patch</filename>
            <type>text/plain</type>
            <size>50016</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThjM2FjZDc1NmY5NjZh
MjNmZTM0YTJlM2FjNmZlMWRmZWE1NTFkNS4uZDY3ODM1Njc4MjU2Yzk2MDdlYTZjZGNlNmQwODhh
ZTIzMWJiNTZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAzLTAxICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENDVGhyZWFk
UHJveHkgY29udGV4dCBsb3N0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwMTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkTG9zZUNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlk
UmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpwcm9jZXNz
U2NoZWR1bGVkQWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXIuaDoKKyAgICAgICAgKENDU2NoZWR1bGVyQ2xpZW50KToKKyAgICAgICAg
KENDU2NoZWR1bGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp2c3luY0NhbGxiYWNrTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpkaWRMb3NlQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpkaWRSZWNyZWF0ZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAgICAgIChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZWNy
ZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bG9zZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVn
aW5Db250ZXh0UmVjcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkNvbnRleHRSZWNyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpsb3NlQ29udGV4dE9uSW1wbFRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
OgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisKIDIwMTItMDItMjkgIE5hdCBEdWNhICA8bmR1
Y2FAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBjb250ZXh0IGxvc3Qg
Y29udHJvbCBjb2RlIGZyb20gQ0NTaW5nbGVUaHJlYWRQcm94eSB0byBDQ0xheWVyVHJlZUhvc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMTFkMTAwMGEzOTdlYWJjNWZlMjk3MTI4Nzcw
MjYyMjE1YmUyYTVjMC4uZWQyOGU1YmMyNzM2YjRjMDMwYWVkNzEwNjBlOGVlZWQ0ODIzMmM0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMy0wMSAg
TmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDQ1Ro
cmVhZFByb3h5IGNvbnRleHQgbG9zdCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDEwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OkZha2VDQ1NjaGVkdWxlckNsaWVudDo6c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250
ZXh0UmVjcmVhdGlvbik6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhh
dFNldE5lZWRzRHJhd0luc2lkZURyYXc6OnNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3Jl
YXRpb24pOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVk
c0NvbW1pdEluc2lkZURyYXc6OnNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24p
OgorCiAyMDEyLTAyLTI5ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIE1vdmUgY29udGV4dCBsb3N0IGNvbnRyb2wgY29kZSBmcm9tIENDU2luZ2xl
VGhyZWFkUHJveHkgdG8gQ0NMYXllclRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcAppbmRleCA3YTI2ZGIyOGEwY2U3MzQzZDVlNDQ1OWU4YzdmNzFkYzc1OTg3N2Y0
Li42OTFkNzAwZWVjYzgyZmRhN2I2NmY3MTg5MmQxZjk0MWZkMDM3Mjg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTE3NSwxOCArMTc1LDE4IEBAIHByaXZhdGU6
CiB9OwogCiAKLVBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RJbXBsKiBvd25lciwgUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKK1Bhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9t
aXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW1D
bGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKIHsK
LSAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRy
KG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0ob3duZXIsIGNvbnRleHQpKSk7CisgICAgT3duUHRy
PExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFB0cihuZXcgTGF5ZXJS
ZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCkpKTsKICAgICBpZiAoIWxheWVyUmVuZGVy
ZXItPmluaXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4g
bGF5ZXJSZW5kZXJlci5yZWxlYXNlKCk7CiB9CiAKLUxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtKENDTGF5ZXJUcmVlSG9zdEltcGwqIG93bmVyLAorTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVt
Q2xpZW50KiBjbGllbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQotICAgIDogbV9vd25l
cihvd25lcikKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fY3VycmVudFJlbmRlclN1
cmZhY2UoMCkKICAgICAsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCgwKQogICAgICwgbV9jb250
ZXh0KGNvbnRleHQpCkBAIC0xOTYsMTEgKzE5NiwzMiBAQCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OkxheWVyUmVuZGVyZXJDaHJvbWl1bShDQ0xheWVyVHJlZUhvc3RJbXBsKiBvd25lciwKIHsKIH0K
IAorY2xhc3MgQ29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXIgOiBwdWJsaWMgR3JhcGhpY3NDb250
ZXh0M0Q6OkNvbnRleHRMb3N0Q2FsbGJhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9t
aXVtQ2xpZW50KiBjbGllbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENv
bnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyKGNsaWVudCkpOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBvbkNvbnRleHRMb3N0KCkKKyAgICB7CisgICAgICAgIG1fY2xpZW50LT5kaWRMb3NlQ29u
dGV4dCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDb250ZXh0TG9zdENhbGxiYWNrQWRhcHRl
cihMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCkKKyAgICAgICAgICAgIDogbV9j
bGllbnQoY2xpZW50KSB7IH0KKworICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogbV9j
bGllbnQ7Cit9OworCiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSgpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKKyAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2soQ29udGV4
dExvc3RDYWxsYmFja0FkYXB0ZXI6OmNyZWF0ZShtX2NsaWVudCkpOworCiAjaWYgVVNFKFNLSUEp
CiAgICAgaWYgKHNldHRpbmdzKCkuYWNjZWxlcmF0ZVBhaW50aW5nICYmIGNvbnRleHRTdXBwb3J0
c0FjY2VsZXJhdGVkUGFpbnRpbmcobV9jb250ZXh0LmdldCgpKSkKICAgICAgICAgbV9jYXBhYmls
aXRpZXMudXNpbmdBY2NlbGVyYXRlZFBhaW50aW5nID0gdHJ1ZTsKQEAgLTMwNiwxMSArMzI3LDYg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQog
ICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1NldFZpc2liaWxpdHkpIHsKICAgICAgICAgRXh0
ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMzRENocm9taXVtID0gc3RhdGljX2Nhc3Q8RXh0
ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CiAgICAgICAg
IGV4dGVuc2lvbnMzRENocm9taXVtLT5zZXRWaXNpYmlsaXR5Q0hST01JVU0odmlzaWJsZSk7Ci0K
LSAgICAgICAgLy8gUmVzZXQgdGhlIGRhbWFnZSB0cmFja2VyIGJlY2F1c2UgdGhlIGZyb250L2Jh
Y2sgYnVmZmVycyBtYXkgaGF2ZSBiZWVuIGRhbWFnZWQgYnkgdGhlIEdQVQotICAgICAgICAvLyBw
cm9jZXNzIG9uIHZpc2liaWxpdHkgY2hhbmdlLgotICAgICAgICBpZiAodmlzaWJsZSAmJiBtX2Nh
cGFiaWxpdGllcy51c2luZ1BhcnRpYWxTd2FwKQotICAgICAgICAgICAgbV9vd25lci0+c2V0RnVs
bFJvb3RMYXllckRhbWFnZSgpOwogICAgIH0KIH0KIApAQCAtMTA2Miw3ICsxMDc4LDcgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnN3YXBCdWZmZXJzKGNvbnN0IEludFJlY3QmIHN1YkJ1
ZmZlcikKIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06Om9uU3dhcEJ1ZmZlcnNDb21wbGV0
ZSgpCiB7Ci0gICAgbV9vd25lci0+b25Td2FwQnVmZmVyc0NvbXBsZXRlKCk7CisgICAgbV9jbGll
bnQtPm9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Z2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBlZTk4OTVhZTFkNGM5
NGNkYTYzMTBkYzdiM2ZiMDQzZDI5NWNiN2RjLi5iYTFhNGViODRkZmRlMDhmZDg5YmZkZTQ3YWMz
MWIwMjk2YTk1MmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtNDIs
NyArNDIsNyBAQAogI2luY2x1ZGUgIlZpZGVvTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNj
L0NDQ2FudmFzTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NIZWFkc1VwRGlzcGxheS5oIgot
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ1BsdWdpbkxheWVySW1wbC5oIgogI2luY2x1ZGUg
ImNjL0NDVmlkZW9MYXllckltcGwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNjAs
MzQgKzYwLDQ1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NIZWFkc1VwRGlzcGxh
eTsKIGNsYXNzIENDTGF5ZXJJbXBsOwotY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNz
IENDUmVuZGVyUGFzczsKIGNsYXNzIEdlb21ldHJ5QmluZGluZzsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDNEOwogY2xhc3MgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOwogY2xhc3MgTGF5ZXJSZW5k
ZXJlclN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0FkYXB0ZXI7CiAKK2NsYXNzIExheWVyUmVu
ZGVyZXJDaHJvbWl1bUNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gV2hlcmUgcG9zc2libGUsIHJl
ZHJhd3MgYXJlIHNjaXNzb3JlZCB0byBhIGRhbWFnZSByZWdpb24gY2FsY3VsYXRlZCBmcm9tIGNo
YW5nZXMgdG8KKyAgICAvLyBsYXllciBwcm9wZXJ0aWVzLiBUaGlzIGZ1bmN0aW9uIG92ZXJyaWRl
cyB0aGUgZGFtYWdlIHJlZ2lvbiBmb3IgdGhlIG5leHQgZHJhdyBjeWNsZS4KKyAgICB2aXJ0dWFs
IGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNv
bnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQ0NMYXll
ckltcGwqIHJvb3RMYXllcigpID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IENDTGF5ZXJJbXBsKiBy
b290TGF5ZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKSA9IDA7Cit9Owor
CiAvLyBDbGFzcyB0aGF0IGhhbmRsZXMgZHJhd2luZyBvZiBjb21wb3NpdGVkIHJlbmRlciBsYXll
cnMgdXNpbmcgR0wuCiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW0gewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKExheWVyUmVuZGVyZXJDaHJvbWl1bSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0
SW1wbCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKKyAgICBzdGF0aWMgUGFzc093
blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW1D
bGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CiAKICAgICAvLyBNdXN0IGJl
IGNhbGxlZCBpbiBvcmRlciB0byBhbGxvdyB0aGUgTGF5ZXJSZW5kZXJlckNocm9taXVtIHRvIGRl
c3RydWN0CiAgICAgdm9pZCBjbG9zZSgpOwogCiAgICAgfkxheWVyUmVuZGVyZXJDaHJvbWl1bSgp
OwogCi0gICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX293
bmVyLT5zZXR0aW5ncygpOyB9CisgICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25z
dCB7IHJldHVybiBtX2NsaWVudC0+c2V0dGluZ3MoKTsgfQogICAgIGNvbnN0IExheWVyUmVuZGVy
ZXJDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwYWJpbGl0
aWVzOyB9CiAKLSAgICBDQ0xheWVySW1wbCogcm9vdExheWVyKCkgeyByZXR1cm4gbV9vd25lci0+
cm9vdExheWVyKCk7IH0KLSAgICBjb25zdCBDQ0xheWVySW1wbCogcm9vdExheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9vd25lci0+cm9vdExheWVyKCk7IH0KKyAgICBDQ0xheWVySW1wbCogcm9vdExh
eWVyKCkgeyByZXR1cm4gbV9jbGllbnQtPnJvb3RMYXllcigpOyB9CisgICAgY29uc3QgQ0NMYXll
ckltcGwqIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LT5yb290TGF5ZXIoKTsg
fQogCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKTsKICAgICBib29sIGNvbnRleHRT
dXBwb3J0c01hcFN1YigpIGNvbnN0IHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzLnVzaW5nTWFwU3Vi
OyB9CiAKLSAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSB7IHJldHVybiBtX293bmVy
LT52aWV3cG9ydFNpemUoKTsgfQorICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgpIHsg
cmV0dXJuIG1fY2xpZW50LT52aWV3cG9ydFNpemUoKTsgfQogICAgIGludCB2aWV3cG9ydFdpZHRo
KCkgeyByZXR1cm4gdmlld3BvcnRTaXplKCkud2lkdGgoKTsgfQogICAgIGludCB2aWV3cG9ydEhl
aWdodCgpIHsgcmV0dXJuIHZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpOyB9CiAKQEAgLTE0NCwxMCAr
MTU1LDEwIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsK
IAotICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpOwotCiAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wp
OwogCisgICAgYm9vbCBpc0NvbnRleHRMb3N0KCk7CisKICAgICBHQzNEZW51bSBiZXN0VGV4dHVy
ZUZvcm1hdCgpOwogCiAgICAgc3RhdGljIHZvaWQgdG9HTE1hdHJpeChmbG9hdCosIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4Jik7CkBAIC0xNTYsNyArMTY3LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgbWF0cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0aW9u
LCBpbnQgcXVhZExvY2F0aW9uKTsKIAogcHJpdmF0ZToKLSAgICBMYXllclJlbmRlcmVyQ2hyb21p
dW0oQ0NMYXllclRyZWVIb3N0SW1wbCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsK
KyAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50Kiwg
UGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwog
CiAgICAgdm9pZCBkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiwgY29uc3QgRmxvYXRSZWN0JiBz
dXJmYWNlRGFtYWdlUmVjdCk7CkBAIC0yMDAsNyArMjExLDcgQEAgcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgTGF5ZXJSZW5kZXJlclN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0FkYXB0ZXI7
CiAgICAgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKTsKIAotICAgIENDTGF5ZXJUcmVlSG9z
dEltcGwqIG1fb3duZXI7CisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBtX2NsaWVu
dDsKIAogICAgIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMgbV9jYXBhYmlsaXRpZXM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDdjY2I1ZmQ3MThjMjM3NzAwMzg4ZWFj
MTk5OWRmZWY5YmM2OGNiMDQuLjEzOGU0YTRlZThiYjg4MWQ3ZmY4ZmQ1YmNhM2EzNTNjZjNlYzc1
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgbV9s
YXllclJlbmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVlOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9z
dDo6cmVjcmVhdGVDb250ZXh0KCkKK0NDTGF5ZXJUcmVlSG9zdDo6UmVjcmVhdGVSZXN1bHQgQ0NM
YXllclRyZWVIb3N0OjpyZWNyZWF0ZUNvbnRleHQoKQogewogICAgIFRSQUNFX0VWRU5UMCgiY2Mi
LCAiQ0NMYXllclRyZWVIb3N0OjpyZWNyZWF0ZUNvbnRleHQiKTsKICAgICBBU1NFUlQobV9jb250
ZXh0TG9zdCk7CkBAIC0xNDgsMjAgKzE0OCwyNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cmVj
cmVhdGVDb250ZXh0KCkKICAgICBpZiAocmVjcmVhdGVkKSB7CiAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNyZWF0ZUNvbnRleHQodHJ1ZSk7CiAgICAgICAgIG1fY29udGV4dExvc3QgPSBmYWxzZTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gUkVDUkVBVEVfU1VDQ0VFREVEOwogICAg
IH0KIAogICAgIC8vIFRvbGVyYXRlIGEgY2VydGFpbiBudW1iZXIgb2YgcmVjcmVhdGlvbiBmYWls
dXJlcyB0byB3b3JrIGFyb3VuZCByYWNlcwogICAgIC8vIGluIHRoZSBjb250ZXh0LWxvc3QgbWFj
aGluZXJ5LgogICAgIG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0cysrOwogICAgIGlmIChtX251
bUZhaWxlZFJlY3JlYXRlQXR0ZW1wdHMgPCA1KSB7Ci0gICAgICAgIHNldE5lZWRzQ29tbWl0KCk7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRklYTUU6IFRoZSBzaW5nbGUgdGhyZWFkIGRv
ZXMgbm90IHNlbGYtc2NoZWR1bGUgY29udGV4dAorICAgICAgICAvLyByZWNyZWF0aW9uLiBTbyBm
b3JjZSBhbm90aGVyIHJlY3JlYXRpb24gYXR0ZW1wdCB0byBoYXBwZW4gYnkgcmVxdWVzdGluZwor
ICAgICAgICAvLyBhbm90aGVyIGNvbW1pdC4KKyAgICAgICAgaWYgKCFDQ1Byb3h5OjpoYXNJbXBs
VGhyZWFkKCkpCisgICAgICAgICAgICBzZXROZWVkc0NvbW1pdCgpOworICAgICAgICByZXR1cm4g
UkVDUkVBVEVfRkFJTEVEX0JVVF9UUllfQUdBSU47CiAgICAgfQogCiAgICAgLy8gV2UgaGF2ZSB0
cmllZCB0b28gbWFueSB0aW1lcyB0byByZWNyZWF0ZSB0aGUgY29udGV4dC4gVGVsbCB0aGUgaG9z
dCB0byBmYWxsCiAgICAgLy8gYmFjayB0byBzb2Z0d2FyZSByZW5kZXJpbmcuCiAgICAgbV9jbGll
bnQtPmRpZFJlY3JlYXRlQ29udGV4dChmYWxzZSk7CisgICAgcmV0dXJuIFJFQ1JFQVRFX0ZBSUxF
RF9BTkRfR0FWRV9VUDsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZUNvbnRlbnRz
VGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQpAQCAtMjU1
LDggKzI2MCw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGVBbmRSZWFkYmFjayh2
b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIGlmIChtX2NvbnRleHRMb3N0KSB7Ci0gICAgICAgIHJlY3JlYXRlQ29u
dGV4dCgpOwotICAgICAgICBpZiAobV9jb250ZXh0TG9zdCkKKyAgICAgICAgaWYgKCFyZWNyZWF0
ZUNvbnRleHQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgbV90cmln
Z2VySWRsZVBhaW50cyA9IGZhbHNlOwpAQCAtNDE5LDggKzQyMyw3IEBAIGJvb2wgQ0NMYXllclRy
ZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBpZiAobV9jb250ZXh0TG9zdCkgewotICAgICAgICByZWNyZWF0ZUNvbnRleHQoKTsKLSAg
ICAgICAgaWYgKG1fY29udGV4dExvc3QpCisgICAgICAgIGlmICghcmVjcmVhdGVDb250ZXh0KCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oCmluZGV4IDJhMWJkZDFmNGNiOGFjYWFmZjY4ZDU2ODAzOWYxMDk2MzA0ZTI1M2EuLjhm
ZmEzZDUxZGIwNTllMDcwYTM2MWZkMTU2ZWQ0YWUxZmM5ODExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oCkBAIC0xMzQsNiArMTM0LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NM
YXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIHZvaWQgZGlkQmVjb21lSW52aXNpYmxlT25J
bXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKICAgICB2b2lkIGRpZExvc2VDb250ZXh0
KCk7CisgICAgZW51bSBSZWNyZWF0ZVJlc3VsdCB7CisgICAgICAgIFJFQ1JFQVRFX1NVQ0NFRURF
RCwKKyAgICAgICAgUkVDUkVBVEVfRkFJTEVEX0JVVF9UUllfQUdBSU4sCisgICAgICAgIFJFQ1JF
QVRFX0ZBSUxFRF9BTkRfR0FWRV9VUCwKKyAgICB9OworICAgIFJlY3JlYXRlUmVzdWx0IHJlY3Jl
YXRlQ29udGV4dCgpOwogICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyBtX2NsaWVu
dC0+ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7IH0KICAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1
ZmZlcnMoKSB7IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7IH0KICAgICB2b2lk
IGRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciopOwpA
QCAtMjA2LDcgKzIxMiw2IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPE1h
bmFnZWRUZXh0dXJlPiA+IFRleHR1cmVMaXN0OwogCiAgICAgdm9pZCBpbml0aWFsaXplTGF5ZXJS
ZW5kZXJlcigpOwotICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0KCk7CiAKICAgICBlbnVtIFBhaW50
VHlwZSB7IFBhaW50VmlzaWJsZSwgUGFpbnRJZGxlIH07CiAgICAgc3RhdGljIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlwZSwgY29uc3QgUmVnaW9uJiBv
Y2NsdWRlZFNjcmVlblNwYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKaW5kZXggMWI5NmU0OTVkZDA4ZDY5NGRiZWY4MTk1ZTNjYWY2ODgyNWVlN2JmYi4uNzdkZGU4
ZjNkZTc4NzM0MDM3NWMwZTk4YWM1NjA1ZTFmMjc4OTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTMzOSwxMCArMzM5LDE1IEBAIFRleHR1cmVBbGxvY2F0
b3IqIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0
CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3dhcEJ1ZmZlcnMoKQogewotICAgIEFTU0VS
VChtX2xheWVyUmVuZGVyZXIgJiYgIWlzQ29udGV4dExvc3QoKSk7CisgICAgQVNTRVJUKG1fbGF5
ZXJSZW5kZXJlcik7CiAgICAgbV9sYXllclJlbmRlcmVyLT5zd2FwQnVmZmVycyhlbmNsb3NpbmdJ
bnRSZWN0KG1fcm9vdERhbWFnZVJlY3QpKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpkaWRMb3NlQ29udGV4dCgpCit7CisgICAgbV9jbGllbnQtPmRpZExvc2VDb250ZXh0T25JbXBs
VGhyZWFkKCk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6b25Td2FwQnVmZmVyc0Nv
bXBsZXRlKCkKIHsKICAgICBtX2NsaWVudC0+b25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhy
ZWFkKCk7CkBAIC0zNTAsNyArMzU1LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpvblN3
YXBCdWZmZXJzQ29tcGxldGUoKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnJlYWRiYWNr
KHZvaWQqIHBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBBU1NFUlQobV9sYXll
clJlbmRlcmVyICYmICFpc0NvbnRleHRMb3N0KCkpOworICAgIEFTU0VSVChtX2xheWVyUmVuZGVy
ZXIpOwogICAgIG1fbGF5ZXJSZW5kZXJlci0+Z2V0RnJhbWVidWZmZXJQaXhlbHMocGl4ZWxzLCBy
ZWN0KTsKIH0KIApAQCAtMzg3LDYgKzM5MiwxMSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6
OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogCiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikKICAg
ICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRWaXNpYmxlKHZpc2libGUpOworCisgICAgLy8gUmVz
ZXQgdGhlIGRhbWFnZSB0cmFja2VyIGJlY2F1c2UgdGhlIGZyb250L2JhY2sgYnVmZmVycyBtYXkg
aGF2ZSBiZWVuIGRhbWFnZWQgYnkgdGhlIEdQVQorICAgIC8vIHByb2Nlc3Mgb24gdmlzaWJpbGl0
eSBjaGFuZ2UuCisgICAgaWYgKHZpc2libGUgJiYgbV9sYXllclJlbmRlcmVyLT5jYXBhYmlsaXRp
ZXMoKS51c2luZ1BhcnRpYWxTd2FwKQorICAgICAgICBzZXRGdWxsUm9vdExheWVyRGFtYWdlKCk7
CiB9CiAKIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
UGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaAppbmRleCBmNzdlMGViODQyMTczZjcxY2ZhNDc3Nzc0ZTk1YjMzNDcz
OTEyYWYxLi5iMjUxNmM4NTUzNDkzODVjMGQ1NTA0YzYwMDNkODJkZDM5MjM4MzAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVm
IENDTGF5ZXJUcmVlSG9zdEltcGxfaAogI2RlZmluZSBDQ0xheWVyVHJlZUhvc3RJbXBsX2gKIAor
I2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNjL0NDQW5pbWF0
aW9uRXZlbnRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVyU29ydGVyLmgiCkBAIC0zOSw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENDQ29tcGxldGlvbkV2ZW50OwogY2xhc3MgQ0NQYWdlU2NhbGVBbmltYXRpb247CiBj
bGFzcyBDQ0xheWVySW1wbDsKLWNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIGNsYXNzIFRl
eHR1cmVBbGxvY2F0b3I7CiBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllczsKIGNsYXNz
IFRyYW5zZm9ybWF0aW9uTWF0cml4OwpAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDsKIC8vIENDTGF5ZXJUcmVlSG9zdC0+Q0NQcm94eSBjYWxsYmFjayBpbnRlcmZh
Y2UuCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKIHB1YmxpYzoKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkTG9zZUNvbnRleHRPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwpAQCAtNTQsNyArNTUsNyBAQCBwdWJs
aWM6CiB9OwogCiAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsIG93bnMgdGhlIENDTGF5ZXJJbXBsIHRy
ZWUgYXMgd2VsbCBhcyBhc3NvY2lhdGVkIHJlbmRlcmluZyBzdGF0ZQotY2xhc3MgQ0NMYXllclRy
ZWVIb3N0SW1wbCA6IHB1YmxpYyBDQ0lucHV0SGFuZGxlckNsaWVudCB7CitjbGFzcyBDQ0xheWVy
VHJlZUhvc3RJbXBsIDogcHVibGljIENDSW5wdXRIYW5kbGVyQ2xpZW50LCBMYXllclJlbmRlcmVy
Q2hyb21pdW1DbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDTGF5ZXJUcmVlSG9z
dEltcGwpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdElt
cGw+IGNyZWF0ZShjb25zdCBDQ1NldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCop
OwpAQCAtNzYsNiArNzcsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRv
dWJsZSBmcmFtZURpc3BsYXlUaW1lTXMpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKCk7
CiAKKyAgICAvLyBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQgaW1wbGVtZW50YXRpb24KKyAg
ICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlld3BvcnRTaXplOyB9CisgICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygp
IGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KKyAgICB2aXJ0dWFsIENDTGF5ZXJJbXBsKiBy
b290TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RMYXllckltcGwuZ2V0KCk7IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IENDTGF5ZXJJbXBsKiByb290TGF5ZXIoKSBjb25zdCAgeyByZXR1cm4gbV9yb290TGF5
ZXJJbXBsLmdldCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCk7CisgICAg
dmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOworCisgICAgLy8gSW1wbGVtZW50
YXRpb24KICAgICBib29sIGNhbkRyYXcoKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCgpOwogCkBAIC04OSwxMSArOTksOSBAQCBwdWJsaWM6CiAgICAgVGV4dHVyZUFsbG9jYXRvciog
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3Q7CiAKICAgICB2b2lkIHN3YXBCdWZmZXJz
KCk7Ci0gICAgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKTsKIAogICAgIHZvaWQgcmVhZGJh
Y2sodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICBDQ0xheWVySW1wbCogcm9v
dExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5ZXJJbXBsLmdldCgpOyB9CiAgICAgdm9p
ZCBzZXRSb290TGF5ZXIoUGFzc093blB0cjxDQ0xheWVySW1wbD4pOwogICAgIFBhc3NPd25QdHI8
Q0NMYXllckltcGw+IHJlbGVhc2VSb290TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RMYXllckltcGwu
cmVsZWFzZSgpOyB9CiAKQEAgLTEwNiwxNyArMTE0LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNvdXJjZUZyYW1lTnVtYmVyKGludCBmcmFtZU51bWJlcikgeyBtX3NvdXJjZUZyYW1lTnVtYmVy
ID0gZnJhbWVOdW1iZXI7IH0KIAogICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNp
emUmKTsKLSAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSBjb25zdCB7IHJldHVybiBt
X3ZpZXdwb3J0U2l6ZTsgfQogCiAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMo
ZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBtaW5QYWdlU2NhbGUsIGZsb2F0IG1heFBhZ2VTY2FsZSk7
CiAgICAgZmxvYXQgcGFnZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlU2NhbGU7IH0KIAot
ICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5n
czsgfQotCiAgICAgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBwcm9jZXNzU2Nyb2xs
RGVsdGFzKCk7CiAKLSAgICAvLyBXaGVyZSBwb3NzaWJsZSwgcmVkcmF3cyBhcmUgc2Npc3NvcmVk
IHRvIGEgZGFtYWdlIHJlZ2lvbiBjYWxjdWxhdGVkIGZyb20gY2hhbmdlcyB0bwotICAgIC8vIGxh
eWVyIHByb3BlcnRpZXMuIFRoaXMgZnVuY3Rpb24gb3ZlcnJpZGVzIHRoZSBkYW1hZ2UgcmVnaW9u
IGZvciB0aGUgbmV4dCBkcmF3IGN5Y2xlLgogICAgIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFn
ZSgpOwogCiAgICAgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0
cmFnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRp
b25TZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDg1ODA0NjdmMDIzMDMyYzE0NTIy
MTJmNTY1NjJlMDYxODUxZDk3NDIuLjYzM2YyMWQ0N2I5MzFjY2E4NDc4NTQyNmE3MWY0ZjhkM2I2
ZTQ2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTg2LDEwICs4NiwxOSBAQCB2b2lk
IENDU2NoZWR1bGVyOjpkaWRTd2FwQnVmZmVyc0NvbXBsZXRlKCkKICAgICBtX2ZyYW1lUmF0ZUNv
bnRyb2xsZXItPmRpZEZpbmlzaEZyYW1lKCk7CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXI6OmRpZFN3
YXBCdWZmZXJzQWJvcnQoKQordm9pZCBDQ1NjaGVkdWxlcjo6ZGlkTG9zZUNvbnRleHQoKQogewot
ICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6ZGlkU3dhcEJ1ZmZlcnNBYm9ydCIsIHRoaXMs
IDApOworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6ZGlkTG9zZUNvbnRleHQiLCB0aGlz
LCAwKTsKICAgICBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXItPmRpZEFib3J0QWxsUGVuZGluZ0ZyYW1l
cygpOworICAgIG1fc3RhdGVNYWNoaW5lLmRpZExvc2VDb250ZXh0KCk7CisgICAgcHJvY2Vzc1Nj
aGVkdWxlZEFjdGlvbnMoKTsKK30KKwordm9pZCBDQ1NjaGVkdWxlcjo6ZGlkUmVjcmVhdGVDb250
ZXh0KCkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmRpZFJlY3JlYXRlQ29udGV4
dCIsIHRoaXMsIDApOworICAgIG1fc3RhdGVNYWNoaW5lLmRpZFJlY3JlYXRlQ29udGV4dCgpOwor
ICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiB9CiAKIHZvaWQgQ0NTY2hlZHVsZXI6OmJl
Z2luRnJhbWUoKQpAQCAtMTUxLDYgKzE2MCw5IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NT
Y2hlZHVsZWRBY3Rpb25zKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25E
cmF3QW5kU3dhcCgpOwogICAgICAgICAgICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5kaWRCZWdp
bkZyYW1lKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTjoKKyAgICAgICAgICAg
IG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGFjdGlvbiAhPSBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAppbmRl
eCA3MzEwNTgxYjExYjVmZGYzZjg4OTdmYWNmNmM2ZjkxOTRjMmUyY2ExLi5mOGJhMjFmOTlmMjRj
NWE5Y2UwN2QxNmJhMjM1MTU2NDM5ZDBlZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAgLTQ0
LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9y
ZVJlc291cmNlcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNy
ZWF0aW9uKCkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q0NTY2hlZHVsZXJDbGll
bnQoKSB7IH0KQEAgLTcxLDcgKzcyLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRNYXhGcmFt
ZXNQZW5kaW5nKGludCk7CiAgICAgdm9pZCBkaWRTd2FwQnVmZmVyc0NvbXBsZXRlKCk7Ci0gICAg
dm9pZCBkaWRTd2FwQnVmZmVyc0Fib3J0KCk7CisKKyAgICB2b2lkIGRpZExvc2VDb250ZXh0KCk7
CisgICAgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoKTsKIAogICAgIGJvb2wgY29tbWl0UGVuZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLmNvbW1pdFBlbmRpbmcoKTsgfQogICAg
IGJvb2wgcmVkcmF3UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLnJlZHJh
d1BlbmRpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUu
Y3BwCmluZGV4IGQxYWE1Y2NkYzc0NGM4ZmNiNDAzMGIwZmJjNTY1ODMzNGY2NWRlYmYuLmNhZDVk
OGQxYTNiOTQ2ZTFlZjNkNGYzOTlhMzlmNWM3NDJjMWYwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKQEAgLTM4LDI3ICszOCw1OCBAQCBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUoKQogICAgICwgbV91cGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAgICAsIG1faW5zaWRlVlN5bmMoZmFsc2Up
CiAgICAgLCBtX3Zpc2libGUoZmFsc2UpCi0gICAgLCBtX2NhbkRyYXcodHJ1ZSkgeyB9CisgICAg
LCBtX2NhbkRyYXcodHJ1ZSkKKyAgICAsIG1fY29udGV4dFN0YXRlKENPTlRFWFRfQUNUSVZFKSB7
IH0KKworYm9vbCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6aGFzRHJhd25UaGlzRnJhbWUoKSBj
b25zdAoreworICAgIHJldHVybiBtX2N1cnJlbnRGcmFtZU51bWJlciA9PSBtX2xhc3RGcmFtZU51
bWJlcldoZXJlRHJhd1dhc0NhbGxlZDsKK30KKworYm9vbCBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6c2hvdWxkRHJhdygpIGNvbnN0Cit7CisgICAgaWYgKG1fbmVlZHNGb3JjZWRSZWRyYXcpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFtX25lZWRzUmVkcmF3KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2luc2lkZVZTeW5jKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFtX3Zpc2libGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
aGFzRHJhd25UaGlzRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9j
YW5EcmF3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY29udGV4dFN0YXRlICE9
IENPTlRFWFRfQUNUSVZFKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7
Cit9CiAKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogewotICAgIGJvb2wgY2FuRHJhdyA9IG1fY3VycmVu
dEZyYW1lTnVtYmVyICE9IG1fbGFzdEZyYW1lTnVtYmVyV2hlcmVEcmF3V2FzQ2FsbGVkOwotICAg
IGJvb2wgc2hvdWxkRHJhdyA9IChtX25lZWRzUmVkcmF3ICYmIG1faW5zaWRlVlN5bmMgJiYgbV92
aXNpYmxlICYmIGNhbkRyYXcgJiYgbV9jYW5EcmF3KSB8fCBtX25lZWRzRm9yY2VkUmVkcmF3Owor
CiAgICAgc3dpdGNoIChtX2NvbW1pdFN0YXRlKSB7CiAgICAgY2FzZSBDT01NSVRfU1RBVEVfSURM
RToKLSAgICAgICAgaWYgKHNob3VsZERyYXcpCisgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSAh
PSBDT05URVhUX0FDVElWRSAmJiBtX25lZWRzRm9yY2VkUmVkcmF3KQorICAgICAgICAgICAgcmV0
dXJuIEFDVElPTl9EUkFXOworICAgICAgICBpZiAobV9jb250ZXh0U3RhdGUgPT0gQ09OVEVYVF9M
T1NUKQorICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT047
CisgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX1JFQ1JFQVRJTkcpCisgICAg
ICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CisgICAgICAgIGlmIChzaG91bGREcmF3KCkpCiAg
ICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAgICAgICAgIGlmIChtX25lZWRzQ29tbWl0
ICYmIG1fdmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fRlJBTUU7CiAg
ICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX0ZSQU1F
X0lOX1BST0dSRVNTOgotICAgICAgICBpZiAoc2hvdWxkRHJhdykKKyAgICAgICAgaWYgKHNob3Vs
ZERyYXcoKSkKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKICAgICAgICAgcmV0dXJu
IEFDVElPTl9OT05FOwogCiAgICAgY2FzZSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VT
OgotICAgICAgICBpZiAoc2hvdWxkRHJhdykKKyAgICAgICAgaWYgKHNob3VsZERyYXcoKSkKICAg
ICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKICAgICAgICAgaWYgKCFtX3VwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9VUERBVEVf
TU9SRV9SRVNPVVJDRVM7CkBAIC02OCw3ICs5OSw3IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogICAg
ICAgICByZXR1cm4gQUNUSU9OX0NPTU1JVDsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1dBSVRJ
TkdfRk9SX0ZJUlNUX0RSQVc6Ci0gICAgICAgIGlmIChzaG91bGREcmF3KQorICAgICAgICBpZiAo
c2hvdWxkRHJhdygpIHx8IG1fY29udGV4dFN0YXRlID09IENPTlRFWFRfTE9TVCkKICAgICAgICAg
ICAgIHJldHVybiBBQ1RJT05fRFJBVzsKICAgICAgICAgLy8gQ09NTUlUX1NUQVRFX1dBSVRJTkdf
Rk9SX0ZJUlNUX0RSQVcgd2FudHMgdG8gZW5mb3JjZSBhIGRyYXcuIElmIG1fY2FuRHJhdyBpcyBm
YWxzZSwKICAgICAgICAgLy8gcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwIChzaW1pbGFyIGFzIGlu
IENPTU1JVF9TVEFURV9JRExFKS4KQEAgLTExNSwxMiArMTQ2LDE4IEBAIHZvaWQgQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAgICAgICAgICAgICBt
X2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0lETEU7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuOworCisgICAgY2FzZSBBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9OOgorICAgICAg
ICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfSURMRSk7CisgICAgICAgIEFT
U0VSVChtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX0xPU1QpOworICAgICAgICBtX2NvbnRleHRT
dGF0ZSA9IENPTlRFWFRfUkVDUkVBVElORzsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAog
Ym9vbCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dnN5bmNDYWxsYmFja05lZWRlZCgpIGNvbnN0
CiB7Ci0gICAgaWYgKCFtX3Zpc2libGUpIHsKKyAgICBpZiAoIW1fdmlzaWJsZSB8fCBtX2NvbnRl
eHRTdGF0ZSAhPSBDT05URVhUX0FDVElWRSkgewogICAgICAgICBpZiAobV9uZWVkc0ZvcmNlZFJl
ZHJhdykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xNzYsNCArMjEzLDE4IEBAIHZv
aWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBs
ZXRlKGJvb2wgbW9yZVBlbmRpbmcpCiAgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RB
VEVfUkVBRFlfVE9fQ09NTUlUOwogfQogCit2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpk
aWRMb3NlQ29udGV4dCgpCit7CisgICAgaWYgKG1fY29udGV4dFN0YXRlID09IENPTlRFWFRfTE9T
VCB8fCBtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX1JFQ1JFQVRJTkcpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvbnRleHRTdGF0ZSA9IENPTlRFWFRfTE9TVDsKK30KKwordm9pZCBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6ZGlkUmVjcmVhdGVDb250ZXh0KCkKK3sKKyAgICBBU1NFUlQobV9j
b250ZXh0U3RhdGUgPT0gQ09OVEVYVF9SRUNSRUFUSU5HKTsKKyAgICBtX2NvbnRleHRTdGF0ZSA9
IENPTlRFWFRfQUNUSVZFOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4IDdkZTcxODg0NmU3ZTMxNzQ4
YWM1Njk4NmZiZmMyMmM4NzUxNDc3YjMuLjIyZmNkZjQyMjQ5ZmRhMzFlZDcxMzEzYzI4OTE4MWM5
NGVkOTI5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApA
QCAtNTEsNiArNTEsMTEgQEAgcHVibGljOgogICAgICAgICBDT01NSVRfU1RBVEVfV0FJVElOR19G
T1JfRklSU1RfRFJBVywKICAgICB9OwogCisgICAgZW51bSBDb250ZXh0U3RhdGUgeworICAgICAg
ICBDT05URVhUX0FDVElWRSwKKyAgICAgICAgQ09OVEVYVF9MT1NULAorICAgICAgICBDT05URVhU
X1JFQ1JFQVRJTkcsCisgICAgfTsKICAgICBib29sIGNvbW1pdFBlbmRpbmcoKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuIG1fY29tbWl0U3RhdGUgIT0gQ09NTUlUX1NUQVRFX0lETEU7CkBA
IC02NCw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgQUNUSU9OX0JFR0lOX1VQREFURV9NT1JF
X1JFU09VUkNFUywKICAgICAgICAgQUNUSU9OX0NPTU1JVCwKICAgICAgICAgQUNUSU9OX0RSQVcs
CisgICAgICAgIEFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT04KICAgICB9OwogICAgIEFj
dGlvbiBuZXh0QWN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVTdGF0ZShBY3Rpb24pOwpA
QCAtMTA3LDcgKzExMywxMyBAQCBwdWJsaWM6CiAgICAgLy8gd2hlbiBzdWNoIGJlaGF2aW9yIHdv
dWxkIGJlIHVuZGVzaXJhYmxlLgogICAgIHZvaWQgc2V0Q2FuRHJhdyhib29sIGNhbikgeyBtX2Nh
bkRyYXcgPSBjYW47IH0KIAorICAgIHZvaWQgZGlkTG9zZUNvbnRleHQoKTsKKyAgICB2b2lkIGRp
ZFJlY3JlYXRlQ29udGV4dCgpOworCiBwcm90ZWN0ZWQ6CisgICAgYm9vbCBzaG91bGREcmF3KCkg
Y29uc3Q7CisgICAgYm9vbCBoYXNEcmF3blRoaXNGcmFtZSgpIGNvbnN0OworCiAgICAgQ29tbWl0
U3RhdGUgbV9jb21taXRTdGF0ZTsKIAogICAgIGludCBtX2N1cnJlbnRGcmFtZU51bWJlcjsKQEAg
LTExOSw2ICsxMzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2luc2lkZVZTeW5jOwogICAg
IGJvb2wgbV92aXNpYmxlOwogICAgIGJvb2wgbV9jYW5EcmF3OworICAgIENvbnRleHRTdGF0ZSBt
X2NvbnRleHRTdGF0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aAppbmRleCAyODU1ODRmZDcwODhhMWFkMjAzMDFmZDI4NzQxNzk4MGM1YzgxNGFlLi5lMGRjZmVm
ZDNkYjc2M2VkZjViMjBhZDU3N2QwOWRkMDM1NjMyMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNp
emVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpOyB9CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBs
Q2xpZW50IGltcGxlbWVudGF0aW9uCisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0T25J
bXBsVGhyZWFkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9u
SW1wbFRocmVhZCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHND
b21taXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgp
IHsgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCmluZGV4IDkwNWEwOTRjMDdhNjExZTEyNzdjYjE2ZWEzN2IyMzVkNmJlNjUzZTEu
LjVkMDY2NzJiNjA3MmViN2ZiOTZiNjg1ODA1ZjZiNGI1NWJhMjYxODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBAIFBhc3NPd25QdHI8Q0NQcm94eT4gQ0NU
aHJlYWRQcm94eTo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKIENDVGhy
ZWFkUHJveHk6OkNDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQog
ICAgIDogbV9hbmltYXRlUmVxdWVzdGVkKGZhbHNlKQogICAgICwgbV9jb21taXRSZXF1ZXN0ZWQo
ZmFsc2UpCisgICAgLCBtX2NvbnRleHRMb3N0KGZhbHNlKQogICAgICwgbV9sYXllclRyZWVIb3N0
KGxheWVyVHJlZUhvc3QpCiAgICAgLCBtX2NvbXBvc2l0b3JJZGVudGlmaWVyKC0xKQogICAgICwg
bV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQoZmFsc2UpCkBAIC0xOTMsOSArMTk0LDkgQEAgYm9v
bCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgYm9vbCBpbml0
aWFsaXplU3VjY2VlZGVkID0gZmFsc2U7CiAgICAgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyBj
YXBhYmlsaXRpZXM7CiAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVD
Q1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVy
T25JbXBsVGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZpbml0aWFsaXpl
U3VjY2VlZGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNhcGFiaWxpdGllcykpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKCZjb21wbGV0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZpbml0aWFsaXplU3VjY2Vl
ZGVkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjYXBhYmlsaXRpZXMpKSk7CiAgICAgY29tcGxl
dGlvbi53YWl0KCk7CiAKICAgICBpZiAoaW5pdGlhbGl6ZVN1Y2NlZWRlZCkgewpAQCAtMjA3LDgg
KzIwOCwzNSBAQCBib29sIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkK
IAogYm9vbCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQoKQogewotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBUUkFDRV9FVkVOVDAoImNjIiwg
IkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCIpOworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICAvLyBUcnkgdG8gY3JlYXRlIHRoZSBjb250ZXh0LgorICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlQ29udGV4
dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VS
VChjb250ZXh0LT5oYXNPbmVSZWYoKSk7CisKKyAgICAvLyBMZWFrIHRoZSBjb250ZXh0IHBvaW50
ZXIgc28gd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiBpdCB0byB0aGUgb3RoZXIgc2lkZS4u
LgorICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0UHRyID0gY29udGV4dC5yZWxlYXNlKCku
bGVha1JlZigpOworICAgIEFTU0VSVChjb250ZXh0UHRyLT5oYXNPbmVSZWYoKSk7CisKKyAgICAv
LyBNYWtlIGEgYmxvY2tpbmcgY2FsbCB0byByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQuIFRo
ZSByZXN1bHRzIG9mIHRoYXQKKyAgICAvLyBjYWxsIGFyZSBwdXNoZWQgaW50byB0aGUgcmVjcmVh
dGVTdWNjZWVkZWQgYW5kIGNhcGFiaWxpdGllcyBsb2NhbAorICAgIC8vIHZhcmlhYmxlcy4KKyAg
ICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOworICAgIGJvb2wgcmVjcmVhdGVTdWNjZWVk
ZWQgPSBmYWxzZTsKKyAgICBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllczsK
KyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0
aGlzLCAmQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vz
cygmY29tcGxldGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGNvbnRleHRQdHIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmcmVjcmVhdGVT
dWNjZWVkZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dDcm9zc1RocmVhZEFjY2VzcygmY2FwYWJpbGl0aWVzKSkpOworICAgIGNvbXBsZXRpb24ud2Fp
dCgpOworCisgICAgaWYgKHJlY3JlYXRlU3VjY2VlZGVkKQorICAgICAgICBtX2xheWVyUmVuZGVy
ZXJDYXBhYmlsaXRpZXNNYWluVGhyZWFkQ29weSA9IGNhcGFiaWxpdGllczsKKyAgICByZXR1cm4g
cmVjcmVhdGVTdWNjZWVkZWQ7CiB9CiAKIGludCBDQ1RocmVhZFByb3h5Ojpjb21wb3NpdG9ySWRl
bnRpZmllcigpIGNvbnN0CkBAIC0yMjUsNyArMjUzLDcgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcyYgQ0NUaHJlYWRQcm94eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNv
bnMKIAogdm9pZCBDQ1RocmVhZFByb3h5Ojpsb3NlQ29udGV4dCgpCiB7Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVD
Q1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmRpZExvc2VDb250ZXh0T25JbXBsVGhy
ZWFkKSk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlKCkKQEAgLTI1
MCw2ICsyNzgsMTMgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCiAgICAg
Q0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywg
JkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKSk7CiB9CiAKK3ZvaWQg
Q0NUaHJlYWRQcm94eTo6ZGlkTG9zZUNvbnRleHRPbkltcGxUaHJlYWQoKQoreworICAgIEFTU0VS
VChpc0ltcGxUaHJlYWQoKSk7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5
OjpkaWRMb3NlQ29udGV4dE9uSW1wbFRocmVhZCIpOworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhy
ZWFkLT5kaWRMb3NlQ29udGV4dCgpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6Om9uU3dhcEJ1
ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpCiB7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgp
KTsKQEAgLTUxNyw2ICs1NTIsMTIgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rp
b25Db21taXQoKQogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gMDsK
IH0KIAordm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNy
ZWF0aW9uKCkKK3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIG1fbWFpblRocmVh
ZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6
OmJlZ2luQ29udGV4dFJlY3JlYXRpb24pKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJv
eHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwIiwgdGhpcywgMCk7CkBAIC01NDEsMTAgKzU4
Miw2IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQog
CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKIAotICAgIC8vIEZJWE1F
OiBoYW5kbGUgY2FzZSB3aGVyZSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRleHRMb3N0Lgot
ICAgIC8vIEZJWE1FOiBwYXNzIGRpZFN3YXBCdWZmZXJzQWJvcnQgaWYgbV9sYXllclRyZWVIb3N0
SW1wbC0+aXNDb250ZXh0TG9zdC4KLSAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlSG9zdEltcGwtPmlz
Q29udGV4dExvc3QoKSk7Ci0KICAgICAvLyBQcm9jZXNzIGFueSBmaW5pc2ggcmVxdWVzdAogICAg
IGlmIChtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCkgewog
ICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKQEAgLTU3
NywxMiArNjE0LDM0IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZGlkQ29tcGxldGVTd2FwQnVmZmVy
cygpCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8
Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+IGV2ZW50cykKIHsKKyAgICBUUkFDRV9FVkVOVDAoImNj
IiwgIkNDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cyIpOwogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX2xheWVyVHJlZUhvc3QtPnNldEFuaW1hdGlvbkV2ZW50cyhldmVudHMpOwogfQogCit2
b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luQ29udGV4dFJlY3JlYXRpb24oKQoreworICAgIFRSQUNF
X0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6YmVnaW5Db250ZXh0UmVjcmVhdGlvbiIpOwor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFtX2NvbnRleHRSZWNyZWF0
aW9uVGltZXIpOworICAgIG1fY29udGV4dFJlY3JlYXRpb25UaW1lciA9IENvbnRleHRSZWNyZWF0
aW9uVGltZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPmRpZExvc2VDb250
ZXh0KCk7CisgICAgbV9jb250ZXh0UmVjcmVhdGlvblRpbWVyLT5zdGFydE9uZVNob3QoQ29udGV4
dFJlY3JlYXRpb25UaW1lcjo6UmVjcmVhdGlvblRpY2tSYXRlKTsKK30KKwordm9pZCBDQ1RocmVh
ZFByb3h5Ojp0cnlUb1JlY3JlYXRlQ29udGV4dCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0KTsKKyAgICBDQ0xheWVyVHJlZUhvc3Q6
OlJlY3JlYXRlUmVzdWx0IHJlc3VsdCA9IG1fbGF5ZXJUcmVlSG9zdC0+cmVjcmVhdGVDb250ZXh0
KCk7CisgICAgaWYgKHJlc3VsdCA9PSBDQ0xheWVyVHJlZUhvc3Q6OlJFQ1JFQVRFX0ZBSUxFRF9C
VVRfVFJZX0FHQUlOKQorICAgICAgICBtX2NvbnRleHRSZWNyZWF0aW9uVGltZXItPnN0YXJ0T25l
U2hvdChDb250ZXh0UmVjcmVhdGlvblRpbWVyOjpSZWNyZWF0aW9uVGlja1JhdGUpOworICAgIGVs
c2UgaWYgKHJlc3VsdCA9PSBDQ0xheWVyVHJlZUhvc3Q6OlJFQ1JFQVRFX1NVQ0NFRURFRCkKKyAg
ICAgICAgbV9jb250ZXh0UmVjcmVhdGlvblRpbWVyLmNsZWFyKCk7Cit9CisKIHZvaWQgQ0NUaHJl
YWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNv
bXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJ
bXBsT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CkBAIC02NDMsNCArNzAyLDE3IEBAIHNpemVfdCBD
Q1RocmVhZFByb3h5OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdAogICAgIHJldHVy
biB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnJlY3Jl
YXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHRQdHIsIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKiBjYXBhYmlsaXRpZXMpCit7CisgICAgVFJBQ0VfRVZFTlQw
KCJjYyIsICJDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQiKTsKKyAg
ICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29u
dGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1Rl
eHR1cmVBbGxvY2F0b3IoKSk7CisgICAgKnJlY3JlYXRlU3VjY2VlZGVkID0gbV9sYXllclRyZWVI
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoYWRvcHRSZWYoY29udGV4dFB0cikpOwor
ICAgIGlmICgqcmVjcmVhdGVTdWNjZWVkZWQpIHsKKyAgICAgICAgKmNhcGFiaWxpdGllcyA9IG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKKyAgICAgICAg
bV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmRpZFJlY3JlYXRlQ29udGV4dCgpOworICAgIH0KKyAg
ICBjb21wbGV0aW9uLT5zaWduYWwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDU3YmE1OTg3NDg4ODY5ZTkzMjgwZWU0NTUzMGY4Yjg5
NzU4MmJiMzcuLmFjN2YwYmI0ZTcxMmRlYjg0YmQxOTAxMWNmZDNlMDAzZGE4ZGZmZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjYy9DQ1By
b3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVh
ZC5oIgorI2luY2x1ZGUgImNjL0NDVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY5LDYgKzcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0OwogCiAgICAgLy8gQ0NM
YXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgorICAgIHZpcnR1YWwgdm9pZCBk
aWRMb3NlQ29udGV4dE9uSW1wbFRocmVhZCgpOwogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZm
ZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRy
YXdPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxU
aHJlYWQoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rp
b25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlv
bkNvbW1pdCgpOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRS
ZWNyZWF0aW9uKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xh
eWVyVHJlZUhvc3QqKTsKQEAgLTkwLDYgKzkzLDI0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRD
b21taXRBbmREcmF3RnJhbWUoKTsKICAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsK
ICAgICB2b2lkIHNldEFuaW1hdGlvbkV2ZW50cyhQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRz
VmVjdG9yPik7CisgICAgdm9pZCBiZWdpbkNvbnRleHRSZWNyZWF0aW9uKCk7CisgICAgdm9pZCB0
cnlUb1JlY3JlYXRlQ29udGV4dCgpOworICAgIGNsYXNzIENvbnRleHRSZWNyZWF0aW9uVGltZXIg
OiBwdWJsaWMgQ0NUaW1lciwgQ0NUaW1lckNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBz
dGF0aWMgUGFzc093blB0cjxDb250ZXh0UmVjcmVhdGlvblRpbWVyPiBjcmVhdGUoQ0NUaHJlYWRQ
cm94eSogcHJveHkpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZXh0UmVjcmVhdGlvblRpbWVy
KHByb3h5KSk7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgb25UaW1lckZpcmVkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9wcm94eS0+dHJ5VG9SZWNyZWF0ZUNvbnRleHQoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGVudW0gUmVjcmVhdGlvbiB7IFJlY3JlYXRpb25UaWNrUmF0ZSA9IDMw
IH07CisKKyAgICBwcml2YXRlOgorICAgICAgICBDb250ZXh0UmVjcmVhdGlvblRpbWVyKENDVGhy
ZWFkUHJveHkqIHByb3h5KSA6IENDVGltZXIoQ0NQcm94eTo6bWFpblRocmVhZCgpLCB0aGlzKSwg
bV9wcm94eShwcm94eSkgeyB9CisKKyAgICAgICAgQ0NUaHJlYWRQcm94eSogbV9wcm94eTsKKyAg
ICB9OwogCiAgICAgLy8gQ2FsbGVkIG9uIGltcGwgdGhyZWFkCiAgICAgc3RydWN0IFJlYWRiYWNr
UmVxdWVzdCB7CkBAIC0xMTAsMTAgKzEzMSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Vmlz
aWJsZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIGJvb2wgdmlzaWJsZSk7CiAgICAg
dm9pZCBsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7
CiAgICAgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7CisgICAgdm9p
ZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBHcmFwaGlj
c0NvbnRleHQzRCosIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKik7CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBtYWluIHRocmVhZCBvbmx5LgogICAgIGJv
b2wgbV9hbmltYXRlUmVxdWVzdGVkOwogICAgIGJvb2wgbV9jb21taXRSZXF1ZXN0ZWQ7CisgICAg
Ym9vbCBtX2NvbnRleHRMb3N0OworICAgIE93blB0cjxDb250ZXh0UmVjcmVhdGlvblRpbWVyPiBt
X2NvbnRleHRSZWNyZWF0aW9uVGltZXI7CiAgICAgQ0NMYXllclRyZWVIb3N0KiBtX2xheWVyVHJl
ZUhvc3Q7CiAgICAgaW50IG1fY29tcG9zaXRvcklkZW50aWZpZXI7CiAgICAgYm9vbCBtX2xheWVy
UmVuZGVyZXJJbml0aWFsaXplZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKaW5k
ZXggMzVmMjY5ZjUwZjEzNzZhYzYyNDgxZjU3MmJkZjY4ZWUwNzA5ZjhmNy4uNGJiYWZiYzc3NGZk
YjYzYzNjZmQyYzBkNDk2ZTg5MTg0Nzg3YzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlByb2dyYW1CaW5k
aW5nLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNj
L0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1ZpZGVvRHJhd1F1YWQuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggZmVjYjkzZjY2YjUyMTNk
MTZmYTViNGE1MTQ0ZmU2NTNiNjU1OGM4MS4uYTk2NjRmMmNjZTk4NzIzNDZjNTczMGY1NmE4OWNj
MTlkZmM4ZjMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgog
ICAgICAgICBtX2hvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdz
LCB0aGlzKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHRPbkltcGxU
aHJlYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBs
VGhyZWFkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFk
KCkgeyBtX2RpZFJlcXVlc3RSZWRyYXcgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgeyBtX2RpZFJlcXVlc3RDb21taXQgPSB0cnVlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcAppbmRleCBkN2RkMDU1OTViZmU1MjZhNTA3ZThiNzJlNDhkYTdjMTg2NzYzNDk1Li4wNjJh
Njk5YzM2MTU5NzI3NzA0MGI0OWExNjIwNzMxYzhiZjIzZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTY5LDYg
KzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNv
bnN0IEludFNpemUmLCBmbG9hdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlv
bnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1Y2NlZGVkKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyB9CiAKICAgICAv
LyBJbXBsZW1lbnRhdGlvbiBvZiBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUKICAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChkb3VibGUgdGltZSkgeyB9CkBAIC0yMzksMTQg
KzI0MSwxNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0Zy
YW1lKCkKICAgICB7CisgICAgICAgIG1fdGVzdEhvb2tzLT5kaWRDb21taXRBbmREcmF3RnJhbWUo
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpCiAg
ICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCkK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VlZGVkKQogICAg
IHsKKyAgICAgICAgbV90ZXN0SG9va3MtPmRpZFJlY3JlYXRlQ29udGV4dChzdWNjZWVkZWQpOwog
ICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpCkBAIC0xOTA0LDQg
KzE5MDgsNzIgQEAgcHVibGljOgogCiBTSU5HTEVfQU5EX01VTFRJX1RIUkVBRF9URVNUX0YoQ0NM
YXllclRyZWVIb3N0VGVzdE1hbnlTdXJmYWNlcykKIAorLy8gQSBsb3NlQ29udGV4dCgxKSBzaG91
bGQgbGVhZCB0byBhIGRpZFJlY3JlYXRlQ29udGV4dCh0cnVlKQorY2xhc3MgQ0NMYXllclRyZWVI
b3N0VGVzdFNldFNpbmdsZUxvc3RDb250ZXh0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RU
aHJlYWRPbmx5IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U2V0U2luZ2xlTG9z
dENvbnRleHQoKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkK
KyAgICB7CisgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKQorICAgIHsKKyAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5sb3NlQ29udGV4dCgxKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VlZGVkKQorICAgIHsKKyAgICAgICAg
RVhQRUNUX1RSVUUoc3VjY2VlZGVkKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9Cit9OworCitURVNUX0YoQ0NM
YXllclRyZWVIb3N0VGVzdFNldFNpbmdsZUxvc3RDb250ZXh0LCBydW5NdWx0aVRocmVhZCkKK3sK
KyAgICBydW5UZXN0VGhyZWFkZWQoKTsKK30KKworLy8gQSBsb3NlQ29udGV4dCgxMCkgc2hvdWxk
IGxlYWQgdG8gYSBkaWRSZWNyZWF0ZUNvbnRleHQoZmFsc2UpLCBhbmQKKy8vIGEgZmluaXNoQWxs
UmVuZGVyaW5nKCkgc2hvdWxkIG5vdCBoYW5nLgorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNl
dFJlcGVhdGVkTG9zdENvbnRleHQgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9u
bHkgeworcHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RTZXRSZXBlYXRlZExvc3RDb250
ZXh0KCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAg
eworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkKKyAgICB7CisgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+bG9zZUNvbnRleHQoMTApOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZWVkZWQpCisgICAgeworICAgICAgICBFWFBF
Q1RfRkFMU0Uoc3VjY2VlZGVkKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hBbGxS
ZW5kZXJpbmcoKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0
VGVzdFNldFJlcGVhdGVkTG9zdENvbnRleHQsIHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRl
c3RUaHJlYWRlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3Bw
CmluZGV4IDM5MDhmNDBhOTlhZTc1NzAzMWU5YWQ5MWI0MjljNjJmYmI1MzYxNjguLjA4NTNlNWEz
NjVkNDljMzZhNmYwMGRmODQzNTRlMWEwYTZiZmIyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5j
cHAKQEAgLTYwNCw0ICs2MDQsMTc4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0R29lc0ludmlzaWJsZU1pZENvbW1pdCkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQogCitURVNU
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hlbkNvbXBsZXRl
bHlJZGxlKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxl
KHRydWUpOworCisgICAgc3RhdGUuZGlkTG9zZUNvbnRleHQoKTsKKworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTiwg
c3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0
aW9uKCkpOworCisgICAgLy8gT25jZSBjb250ZXh0IHJlY3JlYXRpb24gYmVnaW5zLCBub3RoaW5n
IHNob3VsZCBoYXBwZW4uCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFJlY3JlYXRlIHRoZSBj
b250ZXh0CisgICAgc3RhdGUuZGlkUmVjcmVhdGVDb250ZXh0KCk7CisKKyAgICAvLyBXaGVuIHRo
ZSBjb250ZXh0IGlzIHJlY3JlYXRlZCwgd2Ugc2hvdWxkIGJlZ2luIGEgY29tbWl0CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigp
KTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9z
dFdoZW5JZGxlQW5kQ29tbWl0UmVxdWVzdGVkV2hpbGVSZWNyZWF0aW5nKQoreworICAgIFN0YXRl
TWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworCisgICAgc3RhdGUu
ZGlkTG9zZUNvbnRleHQoKTsKKworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTiwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gT25j
ZSBjb250ZXh0IHJlY3JlYXRpb24gYmVnaW5zLCBub3RoaW5nIHNob3VsZCBoYXBwZW4uCisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4
dEFjdGlvbigpKTsKKworICAgIC8vIFdoaWxlIGNvbnRleHQgaXMgcmVjcmVhdGluZywgY29tbWl0
cyBzaG91bGRuJ3QgYmVnaW4uCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4
dEFjdGlvbigpKTsKKworICAgIC8vIFJlY3JlYXRlIHRoZSBjb250ZXh0CisgICAgc3RhdGUuZGlk
UmVjcmVhdGVDb250ZXh0KCk7CisKKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGlzIHJlY3JlYXRl
ZCwgd2Ugc2hvdWxkIGJlZ2luIGEgY29tbWl0CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAg
c3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIE9uY2UgdGhl
IGNvbnRleHQgaXMgcmVjcmVhdGVkLCB3aGV0aGVyIHdlIGRyYXcgc2hvdWxkIGJlIGJhc2VkIG9u
CisgICAgLy8gc2V0Q2FuRHJhdy4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAg
ICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS5zZXRD
YW5EcmF3KGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1
ZSk7CisgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOworfQorCitURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblByb2dyZXNzKQorewor
ICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworCisg
ICAgLy8gR2V0IGEgY29tbWl0IGluIGZsaWdodC4KKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0
cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJ
Tl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0
ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gU2V0IGRhbWFnZSBhbmQgZXhwZWN0IGEgZHJhdy4K
KyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAgICBzdGF0ZS5kaWRFbnRlclZTeW5j
KCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywg
c3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0
aW9uKCkpOworICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKKworICAgIC8vIENhdXNlIGEgbG9z
dCBjb250ZXh0IHdoaWxlIHRoZSBiZWdpbiBmcmFtZSBpcyBpbiBmbGlnaHQuCisgICAgc3RhdGUu
ZGlkTG9zZUNvbnRleHQoKTsKKworICAgIC8vIEFzayBmb3IgYW5vdGhlciBkcmF3LiBFeHBlY3Qg
bm90aGluZyBoYXBwZW5zLgorICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOworICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CisKKyAgICAvLyBGaW5pc2ggdGhlIGZyYW1lLCB1cGRhdGUgcmVzb3VyY2VzLCBh
bmQgY29tbWl0LgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09V
UkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51
cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gRXhwZWN0IHRvIGJlIHRv
bGQgdG8gYmVnaW4gY29udGV4dCByZWNyZWF0aW9uLCBpbmRlcGVuZGVudCBvZiB2c3luYyBzdGF0
ZQorICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT04sIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CisgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTiwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RDb250ZXh0TG9zdFdoaWxlQ29tbWl0SW5Qcm9ncmVzc0FuZEFub3RoZXJDb21taXRSZXF1
ZXN0ZWQpCit7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUo
dHJ1ZSk7CisKKyAgICAvLyBHZXQgYSBjb21taXQgaW4gZmxpZ2h0LgorICAgIHN0YXRlLnNldE5l
ZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0
ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBTZXQgZGFtYWdlIGFuZCBleHBl
Y3QgYSBkcmF3LgorICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOworICAgIHN0YXRlLmRp
ZEVudGVyVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0
YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOworCisgICAgLy8g
Q2F1c2UgYSBsb3N0IGNvbnRleHQgd2hpbGUgdGhlIGJlZ2luIGZyYW1lIGlzIGluIGZsaWdodC4K
KyAgICBzdGF0ZS5kaWRMb3NlQ29udGV4dCgpOworCisgICAgLy8gQXNrIGZvciBhbm90aGVyIGRy
YXcgYW5kIGFsc28gc2V0IG5lZWRzIGNvbW1pdC4gRXhwZWN0IG5vdGhpbmcgaGFwcGVucy4KKyAg
ICAvLyBTZXR0aW5nIGFub3RoZXIgY29tbWl0IHdpbGwgcHV0IHVzIGludG8KKyAgICAvLyBDT01N
SVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVyBhZnRlciB3ZSBmaW5pc2ggdGhlIGZyYW1l
IG9uIHRoZSBtYWluCisgICAgLy8gdGhyZWFkLgorICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRy
dWUpOworICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisK
KyAgICAvLyBGaW5pc2ggdGhlIGZyYW1lLCB1cGRhdGUgcmVzb3VyY2VzLCBhbmQgY29tbWl0Lgor
ICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShz
dGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVywgc3RhdGUuY29tbWl0U3Rh
dGUoKSk7CisKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9E
UkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5l
eHRBY3Rpb24oKSk7CisKKyAgICAvLyBFeHBlY3QgdG8gYmUgdG9sZCB0byBiZWdpbiBjb250ZXh0
IHJlY3JlYXRpb24sIGluZGVwZW5kZW50IG9mIHZzeW5jIHN0YXRlCisgICAgc3RhdGUuZGlkRW50
ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTiwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0
ZS5kaWRMZWF2ZVZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9OLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
fQorCisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RmluaXNoQWxsUmVu
ZGVyaW5nV2hpbGVDb250ZXh0TG9zdCkKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAg
c3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIENhdXNlIGEgbG9zdCBjb250ZXh0IGxv
c3QuCisgICAgc3RhdGUuZGlkTG9zZUNvbnRleHQoKTsKKworICAgIC8vIEFzayBhIGZvcmNlZCBy
ZWRyYXcgYW5kIHZlcmlmeSBpdCBvY3VycnMuCisgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRSZWRy
YXcodHJ1ZSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cisg
ICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOworCisgICAgLy8gQ2xlYXIgdGhlIGZvcmNlZCByZWRy
YXcgYml0LgorICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KGZhbHNlKTsKKworICAgIC8v
IEV4cGVjdCB0byBiZSB0b2xkIHRvIGJlZ2luIGNvbnRleHQgcmVjcmVhdGlvbiwgaW5kZXBlbmRl
bnQgb2YgdnN5bmMgc3RhdGUKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT04sIHN0YXRlLm5leHRBY3Rpb24oKSk7Cisg
ICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIEFzayBh
IGZvcmNlZCByZWRyYXcgYW5kIHZlcmlmeSBpdCBvY3VycnMuCisgICAgc3RhdGUuc2V0TmVlZHNG
b3JjZWRSZWRyYXcodHJ1ZSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CisgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOworfQorCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKaW5kZXggNDc1OTg3ZjEz
YWM1ODlmNTA3MjRmMjM5ZWYwYWRkMzA1MjQ3NDA2Yy4uNDVmNjFiOTBiZjU0ZTJlY2U3OGJkYTg4
M2ZmYTBhMjZiZDU0MzZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1NjaGVkdWxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NTY2hlZHVsZXJUZXN0LmNwcApAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNr
KCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNj
aGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiKTsgfQogICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25Db21taXQoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFj
dGlvbkNvbW1pdCIpOyB9CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29u
dGV4dFJlY3JlYXRpb24oKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkJl
Z2luQ29udGV4dFJlY3JlYXRpb24iKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2hhc01v
cmVSZXNvdXJjZVVwZGF0ZXM7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKSB7IH0KIAogcHJvdGVjdGVk
OgogICAgIGludCBtX251bURyYXdzOwpAQCAtMjE1LDYgKzIxNyw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkgeyB9CiAKIHByb3Rl
Y3RlZDoKICAgICBpbnQgbV9udW1EcmF3czsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130435</attachid>
            <date>2012-03-06 13:43:46 -0800</date>
            <delta_ts>2012-03-06 13:58:37 -0800</delta_ts>
            <desc>it works this time really</desc>
            <filename>bug-80100-20120306134345.patch</filename>
            <type>text/plain</type>
            <size>49837</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRkYzMxYTk3ZGNhNjMx
N2MwNzIxNWUzYjFiY2VkNjE3Nzk1Nzk0OC4uNzRlNWRmM2I3MjdjYmJmYzBkNzkwYWRkMzQ1Njdj
YTc1N2UwM2JmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAzLTAxICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENDVGhyZWFk
UHJveHkgY29udGV4dCBsb3N0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwMTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkTG9zZUNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlk
UmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpwcm9jZXNz
U2NoZWR1bGVkQWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXIuaDoKKyAgICAgICAgKENDU2NoZWR1bGVyQ2xpZW50KToKKyAgICAgICAg
KENDU2NoZWR1bGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp2c3luY0NhbGxiYWNrTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpkaWRMb3NlQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpkaWRSZWNyZWF0ZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAgICAgIChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZWNy
ZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bG9zZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVn
aW5Db250ZXh0UmVjcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkNvbnRleHRSZWNyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpsb3NlQ29udGV4dE9uSW1wbFRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
OgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisKIDIwMTItMDMtMDYgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBm
b3IgbWluaW1hbCBidWlsZCBhZnRlciByMTA5OTM5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBjODBkYmZjMzI5NjkxOTZiMGI5ZTdmZjdiMjNiY2ZkMDQ0MmE4YTg5Li5mYjYxZGEyZDg2
MDE5YjgxMThmNDEyZDMzY2Y0YmVkYjJmMzIwYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAzLTAxICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENDVGhyZWFkUHJveHkgY29udGV4dCBsb3N0IHN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgw
MTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0
ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0ND
U2NoZWR1bGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVy
Q2xpZW50OjpzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKToKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdzo6
c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbik6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdzo6c2NoZWR1
bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbik6CisKIDIwMTItMDMtMDYgIERhdmlkIEdy
b2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogQ2hlY2sg
V2ViQ29tbW9uV29ya2VyQ2xpZW50OjphbGxvd0luZGV4ZWREQiBiZWZvcmUgcHJvY2VlZGluZyBm
cm9tIGEgc2hhcmVkIHdvcmtlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
aW5kZXggMTQ0ODg5ZTk3YzlkMDI3NDQyNWRkNjIzNGZiOGY2NDIzZjhjYTk0Yy4uMzE3MTVjYTU3
NzYwN2YyMzVmN2RhYWRiNWFjOWIyNjZhODI5MDZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCkBAIC0xNzUsMTggKzE3NSwxOCBAQCBwcml2YXRlOgogfTsKIAogCi1Q
YXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
cmVhdGUoQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQpCitQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGll
bnQsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCiB7Ci0gICAgT3duUHRy
PExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFB0cihuZXcgTGF5ZXJS
ZW5kZXJlckNocm9taXVtKG93bmVyLCBjb250ZXh0KSkpOworICAgIE93blB0cjxMYXllclJlbmRl
cmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJv
bWl1bShjbGllbnQsIGNvbnRleHQpKSk7CiAgICAgaWYgKCFsYXllclJlbmRlcmVyLT5pbml0aWFs
aXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGxheWVyUmVuZGVy
ZXIucmVsZWFzZSgpOwogfQogCi1MYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJD
aHJvbWl1bShDQ0xheWVyVHJlZUhvc3RJbXBsKiBvd25lciwKK0xheWVyUmVuZGVyZXJDaHJvbWl1
bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xp
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKLSAgICA6IG1fb3duZXIob3duZXIpCisg
ICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlKDApCiAg
ICAgLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQoMCkKICAgICAsIG1fY29udGV4dChjb250ZXh0
KQpAQCAtMTk2LDExICsxOTYsMzIgQEAgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRl
cmVyQ2hyb21pdW0oQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsCiB7CiB9CiAKK2NsYXNzIENv
bnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dDNEOjpDb250
ZXh0TG9zdENhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDb250ZXh0
TG9zdENhbGxiYWNrQWRhcHRlcj4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCog
Y2xpZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZXh0TG9zdENh
bGxiYWNrQWRhcHRlcihjbGllbnQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25Db250
ZXh0TG9zdCgpCisgICAgeworICAgICAgICBtX2NsaWVudC0+ZGlkTG9zZUNvbnRleHQoKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgQ29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXIoTGF5ZXJSZW5k
ZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQpCisgICAgICAgICAgICA6IG1fY2xpZW50KGNsaWVu
dCkgeyB9CisKKyAgICBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIG1fY2xpZW50OworfTsK
KwogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUoKQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKENvbnRleHRMb3N0Q2FsbGJh
Y2tBZGFwdGVyOjpjcmVhdGUobV9jbGllbnQpKTsKKwogI2lmIFVTRShTS0lBKQogICAgIGlmIChz
ZXR0aW5ncygpLmFjY2VsZXJhdGVQYWludGluZyAmJiBjb250ZXh0U3VwcG9ydHNBY2NlbGVyYXRl
ZFBhaW50aW5nKG1fY29udGV4dC5nZXQoKSkpCiAgICAgICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5n
QWNjZWxlcmF0ZWRQYWludGluZyA9IHRydWU7CkBAIC0zMDYsMTEgKzMyNyw2IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICBpZiAobV9j
YXBhYmlsaXRpZXMudXNpbmdTZXRWaXNpYmlsaXR5KSB7CiAgICAgICAgIEV4dGVuc2lvbnMzRENo
cm9taXVtKiBleHRlbnNpb25zM0RDaHJvbWl1bSA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENo
cm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwogICAgICAgICBleHRlbnNpb25z
M0RDaHJvbWl1bS0+c2V0VmlzaWJpbGl0eUNIUk9NSVVNKHZpc2libGUpOwotCi0gICAgICAgIC8v
IFJlc2V0IHRoZSBkYW1hZ2UgdHJhY2tlciBiZWNhdXNlIHRoZSBmcm9udC9iYWNrIGJ1ZmZlcnMg
bWF5IGhhdmUgYmVlbiBkYW1hZ2VkIGJ5IHRoZSBHUFUKLSAgICAgICAgLy8gcHJvY2VzcyBvbiB2
aXNpYmlsaXR5IGNoYW5nZS4KLSAgICAgICAgaWYgKHZpc2libGUgJiYgbV9jYXBhYmlsaXRpZXMu
dXNpbmdQYXJ0aWFsU3dhcCkKLSAgICAgICAgICAgIG1fb3duZXItPnNldEZ1bGxSb290TGF5ZXJE
YW1hZ2UoKTsKICAgICB9CiB9CiAKQEAgLTEwNjIsNyArMTA3OCw3IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpzd2FwQnVmZmVycyhjb25zdCBJbnRSZWN0JiBzdWJCdWZmZXIpCiAKIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpvblN3YXBCdWZmZXJzQ29tcGxldGUoKQogewotICAg
IG1fb3duZXItPm9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOworICAgIG1fY2xpZW50LT5vblN3YXBC
dWZmZXJzQ29tcGxldGUoKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZy
YW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggZWU5ODk1YWUxZDRjOTRjZGE2MzEwZGM3
YjNmYjA0M2QyOTVjYjdkYy4uNzZhMGNkMjI4NjZiNTk0Y2Q3ODRiN2QzODZlY2NiYjVhOGNlNGU2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTQyLDcgKzQyLDcgQEAK
ICNpbmNsdWRlICJWaWRlb0xheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJjYy9DQ0NhbnZhc0xh
eWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDSGVhZHNVcERpc3BsYXkuaCIKLSNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NQbHVnaW5MYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1ZpZGVv
TGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTYwLDM0ICs2MCw0NSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDSGVhZHNVcERpc3BsYXk7CiBjbGFzcyBD
Q0xheWVySW1wbDsKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBDQ1JlbmRlclBh
c3M7CiBjbGFzcyBHZW9tZXRyeUJpbmRpbmc7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNs
YXNzIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIExheWVyUmVuZGVyZXJTd2FwQnVm
ZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyOwogCitjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21p
dW1DbGllbnQgeworcHVibGljOgorICAgIC8vIFdoZXJlIHBvc3NpYmxlLCByZWRyYXdzIGFyZSBz
Y2lzc29yZWQgdG8gYSBkYW1hZ2UgcmVnaW9uIGNhbGN1bGF0ZWQgZnJvbSBjaGFuZ2VzIHRvCisg
ICAgLy8gbGF5ZXIgcHJvcGVydGllcy4gVGhpcyBmdW5jdGlvbiBvdmVycmlkZXMgdGhlIGRhbWFn
ZSByZWdpb24gZm9yIHRoZSBuZXh0IGRyYXcgY3ljbGUuCisgICAgdmlydHVhbCBjb25zdCBJbnRT
aXplJiB2aWV3cG9ydFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBDQ1NldHRp
bmdzJiBzZXR0aW5ncygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIENDTGF5ZXJJbXBsKiByb290
TGF5ZXIoKSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBDQ0xheWVySW1wbCogcm9vdExheWVyKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCkgPSAwOworfTsKKwogLy8gQ2xhc3Mg
dGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdM
LgogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShMYXllclJlbmRlcmVyQ2hyb21pdW0pOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdEltcGwqLCBQYXNz
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJS
ZW5kZXJlckNocm9taXVtPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwogCiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgaW4g
b3JkZXIgdG8gYWxsb3cgdGhlIExheWVyUmVuZGVyZXJDaHJvbWl1bSB0byBkZXN0cnVjdAogICAg
IHZvaWQgY2xvc2UoKTsKIAogICAgIH5MYXllclJlbmRlcmVyQ2hyb21pdW0oKTsKIAotICAgIGNv
bnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9vd25lci0+c2V0dGlu
Z3MoKTsgfQorICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4g
bV9jbGllbnQtPnNldHRpbmdzKCk7IH0KICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcGFiaWxpdGllczsgfQogCi0g
ICAgQ0NMYXllckltcGwqIHJvb3RMYXllcigpIHsgcmV0dXJuIG1fb3duZXItPnJvb3RMYXllcigp
OyB9Ci0gICAgY29uc3QgQ0NMYXllckltcGwqIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
b3duZXItPnJvb3RMYXllcigpOyB9CisgICAgQ0NMYXllckltcGwqIHJvb3RMYXllcigpIHsgcmV0
dXJuIG1fY2xpZW50LT5yb290TGF5ZXIoKTsgfQorICAgIGNvbnN0IENDTGF5ZXJJbXBsKiByb290
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC0+cm9vdExheWVyKCk7IH0KIAogICAgIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgYm9vbCBjb250ZXh0U3VwcG9ydHNNYXBT
dWIoKSBjb25zdCB7IHJldHVybiBtX2NhcGFiaWxpdGllcy51c2luZ01hcFN1YjsgfQogCi0gICAg
Y29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKCkgeyByZXR1cm4gbV9vd25lci0+dmlld3BvcnRT
aXplKCk7IH0KKyAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSB7IHJldHVybiBtX2Ns
aWVudC0+dmlld3BvcnRTaXplKCk7IH0KICAgICBpbnQgdmlld3BvcnRXaWR0aCgpIHsgcmV0dXJu
IHZpZXdwb3J0U2l6ZSgpLndpZHRoKCk7IH0KICAgICBpbnQgdmlld3BvcnRIZWlnaHQoKSB7IHJl
dHVybiB2aWV3cG9ydFNpemUoKS5oZWlnaHQoKTsgfQogCkBAIC0xNTYsNyArMTY3LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF0cml4TG9jYXRpb24sIGludCBh
bHBoYUxvY2F0aW9uLCBpbnQgcXVhZExvY2F0aW9uKTsKIAogcHJpdmF0ZToKLSAgICBMYXllclJl
bmRlcmVyQ2hyb21pdW0oQ0NMYXllclRyZWVIb3N0SW1wbCosIFBhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+KTsKKyAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9t
aXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwogICAgIGJvb2wgaW5p
dGlhbGl6ZSgpOwogCiAgICAgdm9pZCBkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiwgY29uc3Qg
RmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CkBAIC0yMDAsNyArMjExLDcgQEAgcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgTGF5ZXJSZW5kZXJlclN3YXBCdWZmZXJzQ29tcGxldGVDYWxs
YmFja0FkYXB0ZXI7CiAgICAgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKTsKIAotICAgIEND
TGF5ZXJUcmVlSG9zdEltcGwqIG1fb3duZXI7CisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xp
ZW50KiBtX2NsaWVudDsKIAogICAgIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMgbV9jYXBhYmls
aXRpZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDdjY2I1ZmQ3MThj
MjM3NzAwMzg4ZWFjMTk5OWRmZWY5YmM2OGNiMDQuLjBlYWE4ZGYxNmUwODFkNTY3M2NhOWIwYzA1
MDJmYTgwYTk5MjZiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMTM0
LDcgKzEzNCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJl
cigpCiAgICAgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVlOwogfQogCi12b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cmVjcmVhdGVDb250ZXh0KCkKK0NDTGF5ZXJUcmVlSG9zdDo6UmVjcmVh
dGVSZXN1bHQgQ0NMYXllclRyZWVIb3N0OjpyZWNyZWF0ZUNvbnRleHQoKQogewogICAgIFRSQUNF
X0VWRU5UMCgiY2MiLCAiQ0NMYXllclRyZWVIb3N0OjpyZWNyZWF0ZUNvbnRleHQiKTsKICAgICBB
U1NFUlQobV9jb250ZXh0TG9zdCk7CkBAIC0xNDgsMjAgKzE0OCwyNSBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6cmVjcmVhdGVDb250ZXh0KCkKICAgICBpZiAocmVjcmVhdGVkKSB7CiAgICAgICAg
IG1fY2xpZW50LT5kaWRSZWNyZWF0ZUNvbnRleHQodHJ1ZSk7CiAgICAgICAgIG1fY29udGV4dExv
c3QgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gUkVDUkVBVEVfU1VD
Q0VFREVEOwogICAgIH0KIAogICAgIC8vIFRvbGVyYXRlIGEgY2VydGFpbiBudW1iZXIgb2YgcmVj
cmVhdGlvbiBmYWlsdXJlcyB0byB3b3JrIGFyb3VuZCByYWNlcwogICAgIC8vIGluIHRoZSBjb250
ZXh0LWxvc3QgbWFjaGluZXJ5LgogICAgIG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0cysrOwog
ICAgIGlmIChtX251bUZhaWxlZFJlY3JlYXRlQXR0ZW1wdHMgPCA1KSB7Ci0gICAgICAgIHNldE5l
ZWRzQ29tbWl0KCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRklYTUU6IFRoZSBzaW5n
bGUgdGhyZWFkIGRvZXMgbm90IHNlbGYtc2NoZWR1bGUgY29udGV4dAorICAgICAgICAvLyByZWNy
ZWF0aW9uLiBTbyBmb3JjZSBhbm90aGVyIHJlY3JlYXRpb24gYXR0ZW1wdCB0byBoYXBwZW4gYnkg
cmVxdWVzdGluZworICAgICAgICAvLyBhbm90aGVyIGNvbW1pdC4KKyAgICAgICAgaWYgKCFDQ1By
b3h5OjpoYXNJbXBsVGhyZWFkKCkpCisgICAgICAgICAgICBzZXROZWVkc0NvbW1pdCgpOworICAg
ICAgICByZXR1cm4gUkVDUkVBVEVfRkFJTEVEX0JVVF9UUllfQUdBSU47CiAgICAgfQogCiAgICAg
Ly8gV2UgaGF2ZSB0cmllZCB0b28gbWFueSB0aW1lcyB0byByZWNyZWF0ZSB0aGUgY29udGV4dC4g
VGVsbCB0aGUgaG9zdCB0byBmYWxsCiAgICAgLy8gYmFjayB0byBzb2Z0d2FyZSByZW5kZXJpbmcu
CiAgICAgbV9jbGllbnQtPmRpZFJlY3JlYXRlQ29udGV4dChmYWxzZSk7CisgICAgcmV0dXJuIFJF
Q1JFQVRFX0ZBSUxFRF9BTkRfR0FWRV9VUDsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRl
bGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yKQpAQCAtMjU1LDggKzI2MCw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGVB
bmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChtX2NvbnRleHRMb3N0KSB7Ci0gICAgICAg
IHJlY3JlYXRlQ29udGV4dCgpOwotICAgICAgICBpZiAobV9jb250ZXh0TG9zdCkKKyAgICAgICAg
aWYgKHJlY3JlYXRlQ29udGV4dCgpICE9IFJFQ1JFQVRFX1NVQ0NFRURFRCkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgbV90cmlnZ2VySWRsZVBhaW50cyA9IGZhbHNlOwpA
QCAtNDE5LDggKzQyMyw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAobV9jb250ZXh0TG9zdCkg
ewotICAgICAgICByZWNyZWF0ZUNvbnRleHQoKTsKLSAgICAgICAgaWYgKG1fY29udGV4dExvc3Qp
CisgICAgICAgIGlmIChyZWNyZWF0ZUNvbnRleHQoKSAhPSBSRUNSRUFURV9TVUNDRUVERUQpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCmluZGV4IDJhMWJkZDFmNGNiOGFjYWFmZjY4ZDU2ODAzOWYxMDk2MzA0ZTI1M2EuLjhmZmEz
ZDUxZGIwNTllMDcwYTM2MWZkMTU2ZWQ0YWUxZmM5ODExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCkBAIC0xMzQsNiArMTM0LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXll
clRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIHZvaWQgZGlkQmVjb21lSW52aXNpYmxlT25JbXBs
VGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKICAgICB2b2lkIGRpZExvc2VDb250ZXh0KCk7
CisgICAgZW51bSBSZWNyZWF0ZVJlc3VsdCB7CisgICAgICAgIFJFQ1JFQVRFX1NVQ0NFRURFRCwK
KyAgICAgICAgUkVDUkVBVEVfRkFJTEVEX0JVVF9UUllfQUdBSU4sCisgICAgICAgIFJFQ1JFQVRF
X0ZBSUxFRF9BTkRfR0FWRV9VUCwKKyAgICB9OworICAgIFJlY3JlYXRlUmVzdWx0IHJlY3JlYXRl
Q29udGV4dCgpOwogICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyBtX2NsaWVudC0+
ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7IH0KICAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZl
cnMoKSB7IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7IH0KICAgICB2b2lkIGRl
bGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciopOwpAQCAt
MjA2LDcgKzIxMiw2IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiA+IFRleHR1cmVMaXN0OwogCiAgICAgdm9pZCBpbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcigpOwotICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0KCk7CiAKICAgICBlbnVtIFBhaW50VHlw
ZSB7IFBhaW50VmlzaWJsZSwgUGFpbnRJZGxlIH07CiAgICAgc3RhdGljIHZvaWQgcGFpbnRDb250
ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlwZSwgY29uc3QgUmVnaW9uJiBvY2Ns
dWRlZFNjcmVlblNwYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
aW5kZXggZjcxNWFlMzVkMTdmOTBiNzRkYjIyZGMwZjNjOTRlNjY3MDUxOTk5YS4uYzBjMjRiNDkx
ZTE1MjdhNTZjOTVmNTA5MzAwNzQ4MDZjYWE1Nzg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKQEAgLTMzOSwxMCArMzM5LDE1IEBAIFRleHR1cmVBbGxvY2F0b3Iq
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0CiAK
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3dhcEJ1ZmZlcnMoKQogewotICAgIEFTU0VSVCht
X2xheWVyUmVuZGVyZXIgJiYgIWlzQ29udGV4dExvc3QoKSk7CisgICAgQVNTRVJUKG1fbGF5ZXJS
ZW5kZXJlcik7CiAgICAgbV9sYXllclJlbmRlcmVyLT5zd2FwQnVmZmVycyhlbmNsb3NpbmdJbnRS
ZWN0KG1fcm9vdERhbWFnZVJlY3QpKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpk
aWRMb3NlQ29udGV4dCgpCit7CisgICAgbV9jbGllbnQtPmRpZExvc2VDb250ZXh0T25JbXBsVGhy
ZWFkKCk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6b25Td2FwQnVmZmVyc0NvbXBs
ZXRlKCkKIHsKICAgICBtX2NsaWVudC0+b25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFk
KCk7CkBAIC0zNTAsNyArMzU1LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpvblN3YXBC
dWZmZXJzQ29tcGxldGUoKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnJlYWRiYWNrKHZv
aWQqIHBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBBU1NFUlQobV9sYXllclJl
bmRlcmVyICYmICFpc0NvbnRleHRMb3N0KCkpOworICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIp
OwogICAgIG1fbGF5ZXJSZW5kZXJlci0+Z2V0RnJhbWVidWZmZXJQaXhlbHMocGl4ZWxzLCByZWN0
KTsKIH0KIApAQCAtMzg3LDYgKzM5MiwxMSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNl
dFZpc2libGUoYm9vbCB2aXNpYmxlKQogCiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikKICAgICAg
ICAgbV9sYXllclJlbmRlcmVyLT5zZXRWaXNpYmxlKHZpc2libGUpOworCisgICAgLy8gUmVzZXQg
dGhlIGRhbWFnZSB0cmFja2VyIGJlY2F1c2UgdGhlIGZyb250L2JhY2sgYnVmZmVycyBtYXkgaGF2
ZSBiZWVuIGRhbWFnZWQgYnkgdGhlIEdQVQorICAgIC8vIHByb2Nlc3Mgb24gdmlzaWJpbGl0eSBj
aGFuZ2UuCisgICAgaWYgKHZpc2libGUgJiYgbV9sYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMo
KS51c2luZ1BhcnRpYWxTd2FwKQorICAgICAgICBzZXRGdWxsUm9vdExheWVyRGFtYWdlKCk7CiB9
CiAKIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaAppbmRleCBmZjQ3ZWIwOGZjMjgzNzAwMjczMzJmOTg1YjdiMWM4ZjJjZGI5
ZTdlLi4yZmU3MDRhMzRjYTFmYTM2NDBkOTU4YjU1ODFkMGE3OGZhZDRjMDJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIEND
TGF5ZXJUcmVlSG9zdEltcGxfaAogI2RlZmluZSBDQ0xheWVyVHJlZUhvc3RJbXBsX2gKIAorI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNjL0NDQW5pbWF0aW9u
RXZlbnRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVyU29ydGVyLmgiCkBAIC0zOSw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENDQ29tcGxldGlvbkV2ZW50OwogY2xhc3MgQ0NQYWdlU2NhbGVBbmltYXRpb247CiBjbGFz
cyBDQ0xheWVySW1wbDsKLWNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIGNsYXNzIFRleHR1
cmVBbGxvY2F0b3I7CiBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllczsKIGNsYXNzIFRy
YW5zZm9ybWF0aW9uTWF0cml4OwpAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlv
bk1hdHJpeDsKIC8vIENDTGF5ZXJUcmVlSG9zdC0+Q0NQcm94eSBjYWxsYmFjayBpbnRlcmZhY2Uu
CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkTG9zZUNvbnRleHRPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6
CiB9OwogCiAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsIG93bnMgdGhlIENDTGF5ZXJJbXBsIHRyZWUg
YXMgd2VsbCBhcyBhc3NvY2lhdGVkIHJlbmRlcmluZyBzdGF0ZQotY2xhc3MgQ0NMYXllclRyZWVI
b3N0SW1wbCA6IHB1YmxpYyBDQ0lucHV0SGFuZGxlckNsaWVudCB7CitjbGFzcyBDQ0xheWVyVHJl
ZUhvc3RJbXBsIDogcHVibGljIENDSW5wdXRIYW5kbGVyQ2xpZW50LCBMYXllclJlbmRlcmVyQ2hy
b21pdW1DbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDTGF5ZXJUcmVlSG9zdElt
cGwpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+
IGNyZWF0ZShjb25zdCBDQ1NldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwpA
QCAtNzYsNiArNzcsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJs
ZSBmcmFtZURpc3BsYXlUaW1lTXMpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKCk7CiAK
KyAgICAvLyBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQgaW1wbGVtZW50YXRpb24KKyAgICB2
aXJ0dWFsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmll
d3BvcnRTaXplOyB9CisgICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNv
bnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KKyAgICB2aXJ0dWFsIENDTGF5ZXJJbXBsKiByb290
TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RMYXllckltcGwuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIGNv
bnN0IENDTGF5ZXJJbXBsKiByb290TGF5ZXIoKSBjb25zdCAgeyByZXR1cm4gbV9yb290TGF5ZXJJ
bXBsLmdldCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCk7CisgICAgdmly
dHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOworCisgICAgLy8gSW1wbGVtZW50YXRp
b24KICAgICBib29sIGNhbkRyYXcoKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgp
OwogCkBAIC04OSwxMSArOTksOSBAQCBwdWJsaWM6CiAgICAgVGV4dHVyZUFsbG9jYXRvciogY29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3Q7CiAKICAgICB2b2lkIHN3YXBCdWZmZXJzKCk7
Ci0gICAgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKTsKIAogICAgIHZvaWQgcmVhZGJhY2so
dm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICBDQ0xheWVySW1wbCogcm9vdExh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5ZXJJbXBsLmdldCgpOyB9CiAgICAgdm9pZCBz
ZXRSb290TGF5ZXIoUGFzc093blB0cjxDQ0xheWVySW1wbD4pOwogICAgIFBhc3NPd25QdHI8Q0NM
YXllckltcGw+IHJlbGVhc2VSb290TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RMYXllckltcGwucmVs
ZWFzZSgpOyB9CiAKQEAgLTEwNiwxNyArMTE0LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNv
dXJjZUZyYW1lTnVtYmVyKGludCBmcmFtZU51bWJlcikgeyBtX3NvdXJjZUZyYW1lTnVtYmVyID0g
ZnJhbWVOdW1iZXI7IH0KIAogICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUm
KTsKLSAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZXdwb3J0U2l6ZTsgfQogCiAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxv
YXQgcGFnZVNjYWxlLCBmbG9hdCBtaW5QYWdlU2NhbGUsIGZsb2F0IG1heFBhZ2VTY2FsZSk7CiAg
ICAgZmxvYXQgcGFnZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlU2NhbGU7IH0KIAotICAg
IGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsg
fQotCiAgICAgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBwcm9jZXNzU2Nyb2xsRGVs
dGFzKCk7CiAKLSAgICAvLyBXaGVyZSBwb3NzaWJsZSwgcmVkcmF3cyBhcmUgc2Npc3NvcmVkIHRv
IGEgZGFtYWdlIHJlZ2lvbiBjYWxjdWxhdGVkIGZyb20gY2hhbmdlcyB0bwotICAgIC8vIGxheWVy
IHByb3BlcnRpZXMuIFRoaXMgZnVuY3Rpb24gb3ZlcnJpZGVzIHRoZSBkYW1hZ2UgcmVnaW9uIGZv
ciB0aGUgbmV4dCBkcmF3IGN5Y2xlLgogICAgIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgp
OwogCiAgICAgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0cmFn
ZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25T
ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDg1ODA0NjdmMDIzMDMyYzE0NTIyMTJm
NTY1NjJlMDYxODUxZDk3NDIuLjYzM2YyMWQ0N2I5MzFjY2E4NDc4NTQyNmE3MWY0ZjhkM2I2ZTQ2
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTg2LDEwICs4NiwxOSBAQCB2b2lkIEND
U2NoZWR1bGVyOjpkaWRTd2FwQnVmZmVyc0NvbXBsZXRlKCkKICAgICBtX2ZyYW1lUmF0ZUNvbnRy
b2xsZXItPmRpZEZpbmlzaEZyYW1lKCk7CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXI6OmRpZFN3YXBC
dWZmZXJzQWJvcnQoKQordm9pZCBDQ1NjaGVkdWxlcjo6ZGlkTG9zZUNvbnRleHQoKQogewotICAg
IFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6ZGlkU3dhcEJ1ZmZlcnNBYm9ydCIsIHRoaXMsIDAp
OworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6ZGlkTG9zZUNvbnRleHQiLCB0aGlzLCAw
KTsKICAgICBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXItPmRpZEFib3J0QWxsUGVuZGluZ0ZyYW1lcygp
OworICAgIG1fc3RhdGVNYWNoaW5lLmRpZExvc2VDb250ZXh0KCk7CisgICAgcHJvY2Vzc1NjaGVk
dWxlZEFjdGlvbnMoKTsKK30KKwordm9pZCBDQ1NjaGVkdWxlcjo6ZGlkUmVjcmVhdGVDb250ZXh0
KCkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmRpZFJlY3JlYXRlQ29udGV4dCIs
IHRoaXMsIDApOworICAgIG1fc3RhdGVNYWNoaW5lLmRpZFJlY3JlYXRlQ29udGV4dCgpOworICAg
IHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiB9CiAKIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2lu
RnJhbWUoKQpAQCAtMTUxLDYgKzE2MCw5IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hl
ZHVsZWRBY3Rpb25zKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcCgpOwogICAgICAgICAgICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5kaWRCZWdpbkZy
YW1lKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTjoKKyAgICAgICAgICAgIG1f
Y2xpZW50LT5zY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGFjdGlvbiAhPSBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAppbmRleCA3
MzEwNTgxYjExYjVmZGYzZjg4OTdmYWNmNmM2ZjkxOTRjMmUyY2ExLi5mOGJhMjFmOTlmMjRjNWE5
Y2UwN2QxNmJhMjM1MTU2NDM5ZDBlZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJl
c291cmNlcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0
aW9uKCkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q0NTY2hlZHVsZXJDbGllbnQo
KSB7IH0KQEAgLTcxLDcgKzcyLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRNYXhGcmFtZXNQ
ZW5kaW5nKGludCk7CiAgICAgdm9pZCBkaWRTd2FwQnVmZmVyc0NvbXBsZXRlKCk7Ci0gICAgdm9p
ZCBkaWRTd2FwQnVmZmVyc0Fib3J0KCk7CisKKyAgICB2b2lkIGRpZExvc2VDb250ZXh0KCk7Cisg
ICAgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoKTsKIAogICAgIGJvb2wgY29tbWl0UGVuZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLmNvbW1pdFBlbmRpbmcoKTsgfQogICAgIGJv
b2wgcmVkcmF3UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLnJlZHJhd1Bl
bmRpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3Bw
CmluZGV4IGQxYWE1Y2NkYzc0NGM4ZmNiNDAzMGIwZmJjNTY1ODMzNGY2NWRlYmYuLmNhZDVkOGQx
YTNiOTQ2ZTFlZjNkNGYzOTlhMzlmNWM3NDJjMWYwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKQEAgLTM4LDI3ICszOCw1OCBAQCBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUoKQogICAgICwgbV91cGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAgICAsIG1faW5zaWRlVlN5bmMoZmFsc2UpCiAg
ICAgLCBtX3Zpc2libGUoZmFsc2UpCi0gICAgLCBtX2NhbkRyYXcodHJ1ZSkgeyB9CisgICAgLCBt
X2NhbkRyYXcodHJ1ZSkKKyAgICAsIG1fY29udGV4dFN0YXRlKENPTlRFWFRfQUNUSVZFKSB7IH0K
KworYm9vbCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6aGFzRHJhd25UaGlzRnJhbWUoKSBjb25z
dAoreworICAgIHJldHVybiBtX2N1cnJlbnRGcmFtZU51bWJlciA9PSBtX2xhc3RGcmFtZU51bWJl
cldoZXJlRHJhd1dhc0NhbGxlZDsKK30KKworYm9vbCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
c2hvdWxkRHJhdygpIGNvbnN0Cit7CisgICAgaWYgKG1fbmVlZHNGb3JjZWRSZWRyYXcpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFtX25lZWRzUmVkcmF3KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFtX2luc2lkZVZTeW5jKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFtX3Zpc2libGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoaGFz
RHJhd25UaGlzRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9jYW5E
cmF3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY29udGV4dFN0YXRlICE9IENP
TlRFWFRfQUNUSVZFKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CiAKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6Om5leHRBY3Rpb24oKSBjb25zdAogewotICAgIGJvb2wgY2FuRHJhdyA9IG1fY3VycmVudEZy
YW1lTnVtYmVyICE9IG1fbGFzdEZyYW1lTnVtYmVyV2hlcmVEcmF3V2FzQ2FsbGVkOwotICAgIGJv
b2wgc2hvdWxkRHJhdyA9IChtX25lZWRzUmVkcmF3ICYmIG1faW5zaWRlVlN5bmMgJiYgbV92aXNp
YmxlICYmIGNhbkRyYXcgJiYgbV9jYW5EcmF3KSB8fCBtX25lZWRzRm9yY2VkUmVkcmF3OworCiAg
ICAgc3dpdGNoIChtX2NvbW1pdFN0YXRlKSB7CiAgICAgY2FzZSBDT01NSVRfU1RBVEVfSURMRToK
LSAgICAgICAgaWYgKHNob3VsZERyYXcpCisgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSAhPSBD
T05URVhUX0FDVElWRSAmJiBtX25lZWRzRm9yY2VkUmVkcmF3KQorICAgICAgICAgICAgcmV0dXJu
IEFDVElPTl9EUkFXOworICAgICAgICBpZiAobV9jb250ZXh0U3RhdGUgPT0gQ09OVEVYVF9MT1NU
KQorICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT047Cisg
ICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX1JFQ1JFQVRJTkcpCisgICAgICAg
ICAgICByZXR1cm4gQUNUSU9OX05PTkU7CisgICAgICAgIGlmIChzaG91bGREcmF3KCkpCiAgICAg
ICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAgICAgICAgIGlmIChtX25lZWRzQ29tbWl0ICYm
IG1fdmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fRlJBTUU7CiAgICAg
ICAgIHJldHVybiBBQ1RJT05fTk9ORTsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX0ZSQU1FX0lO
X1BST0dSRVNTOgotICAgICAgICBpZiAoc2hvdWxkRHJhdykKKyAgICAgICAgaWYgKHNob3VsZERy
YXcoKSkKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKICAgICAgICAgcmV0dXJuIEFD
VElPTl9OT05FOwogCiAgICAgY2FzZSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOgot
ICAgICAgICBpZiAoc2hvdWxkRHJhdykKKyAgICAgICAgaWYgKHNob3VsZERyYXcoKSkKICAgICAg
ICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKICAgICAgICAgaWYgKCFtX3VwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVM7CkBAIC02OCw3ICs5OSw3IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Y3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogICAgICAg
ICByZXR1cm4gQUNUSU9OX0NPTU1JVDsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1dBSVRJTkdf
Rk9SX0ZJUlNUX0RSQVc6Ci0gICAgICAgIGlmIChzaG91bGREcmF3KQorICAgICAgICBpZiAoc2hv
dWxkRHJhdygpIHx8IG1fY29udGV4dFN0YXRlID09IENPTlRFWFRfTE9TVCkKICAgICAgICAgICAg
IHJldHVybiBBQ1RJT05fRFJBVzsKICAgICAgICAgLy8gQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9S
X0ZJUlNUX0RSQVcgd2FudHMgdG8gZW5mb3JjZSBhIGRyYXcuIElmIG1fY2FuRHJhdyBpcyBmYWxz
ZSwKICAgICAgICAgLy8gcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwIChzaW1pbGFyIGFzIGluIENP
TU1JVF9TVEFURV9JRExFKS4KQEAgLTExNSwxMiArMTQ2LDE4IEBAIHZvaWQgQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAgICAgICAgICAgICBtX2Nv
bW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0lETEU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
OworCisgICAgY2FzZSBBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9OOgorICAgICAgICBB
U1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfSURMRSk7CisgICAgICAgIEFTU0VS
VChtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX0xPU1QpOworICAgICAgICBtX2NvbnRleHRTdGF0
ZSA9IENPTlRFWFRfUkVDUkVBVElORzsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAogYm9v
bCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dnN5bmNDYWxsYmFja05lZWRlZCgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX3Zpc2libGUpIHsKKyAgICBpZiAoIW1fdmlzaWJsZSB8fCBtX2NvbnRleHRT
dGF0ZSAhPSBDT05URVhUX0FDVElWRSkgewogICAgICAgICBpZiAobV9uZWVkc0ZvcmNlZFJlZHJh
dykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xNzYsNCArMjEzLDE4IEBAIHZvaWQg
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRl
KGJvb2wgbW9yZVBlbmRpbmcpCiAgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVf
UkVBRFlfVE9fQ09NTUlUOwogfQogCit2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpkaWRM
b3NlQ29udGV4dCgpCit7CisgICAgaWYgKG1fY29udGV4dFN0YXRlID09IENPTlRFWFRfTE9TVCB8
fCBtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX1JFQ1JFQVRJTkcpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2NvbnRleHRTdGF0ZSA9IENPTlRFWFRfTE9TVDsKK30KKwordm9pZCBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6ZGlkUmVjcmVhdGVDb250ZXh0KCkKK3sKKyAgICBBU1NFUlQobV9jb250
ZXh0U3RhdGUgPT0gQ09OVEVYVF9SRUNSRUFUSU5HKTsKKyAgICBtX2NvbnRleHRTdGF0ZSA9IENP
TlRFWFRfQUNUSVZFOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4IDdkZTcxODg0NmU3ZTMxNzQ4YWM1
Njk4NmZiZmMyMmM4NzUxNDc3YjMuLjIyZmNkZjQyMjQ5ZmRhMzFlZDcxMzEzYzI4OTE4MWM5NGVk
OTI5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApAQCAt
NTEsNiArNTEsMTEgQEAgcHVibGljOgogICAgICAgICBDT01NSVRfU1RBVEVfV0FJVElOR19GT1Jf
RklSU1RfRFJBVywKICAgICB9OwogCisgICAgZW51bSBDb250ZXh0U3RhdGUgeworICAgICAgICBD
T05URVhUX0FDVElWRSwKKyAgICAgICAgQ09OVEVYVF9MT1NULAorICAgICAgICBDT05URVhUX1JF
Q1JFQVRJTkcsCisgICAgfTsKICAgICBib29sIGNvbW1pdFBlbmRpbmcoKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fY29tbWl0U3RhdGUgIT0gQ09NTUlUX1NUQVRFX0lETEU7CkBAIC02
NCw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgQUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JF
U09VUkNFUywKICAgICAgICAgQUNUSU9OX0NPTU1JVCwKICAgICAgICAgQUNUSU9OX0RSQVcsCisg
ICAgICAgIEFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT04KICAgICB9OwogICAgIEFjdGlv
biBuZXh0QWN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVTdGF0ZShBY3Rpb24pOwpAQCAt
MTA3LDcgKzExMywxMyBAQCBwdWJsaWM6CiAgICAgLy8gd2hlbiBzdWNoIGJlaGF2aW9yIHdvdWxk
IGJlIHVuZGVzaXJhYmxlLgogICAgIHZvaWQgc2V0Q2FuRHJhdyhib29sIGNhbikgeyBtX2NhbkRy
YXcgPSBjYW47IH0KIAorICAgIHZvaWQgZGlkTG9zZUNvbnRleHQoKTsKKyAgICB2b2lkIGRpZFJl
Y3JlYXRlQ29udGV4dCgpOworCiBwcm90ZWN0ZWQ6CisgICAgYm9vbCBzaG91bGREcmF3KCkgY29u
c3Q7CisgICAgYm9vbCBoYXNEcmF3blRoaXNGcmFtZSgpIGNvbnN0OworCiAgICAgQ29tbWl0U3Rh
dGUgbV9jb21taXRTdGF0ZTsKIAogICAgIGludCBtX2N1cnJlbnRGcmFtZU51bWJlcjsKQEAgLTEx
OSw2ICsxMzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2luc2lkZVZTeW5jOwogICAgIGJv
b2wgbV92aXNpYmxlOwogICAgIGJvb2wgbV9jYW5EcmF3OworICAgIENvbnRleHRTdGF0ZSBtX2Nv
bnRleHRTdGF0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApp
bmRleCA4ZTE4NjBjMjYwNjhhNzIzNDg3NDRlMTVhMDYyZWZkYmQ1NTIyMTQ1Li4yZDI4ZDAxNjlk
MzA4OGI4YzMyYWJkY2U3M2IzZDc0MWM1ZjQyYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVf
dCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpOyB9CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xp
ZW50IGltcGxlbWVudGF0aW9uCisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0T25JbXBs
VGhyZWFkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1w
bFRocmVhZCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21t
aXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsg
bV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCmluZGV4IDkwNWEwOTRjMDdhNjExZTEyNzdjYjE2ZWEzN2IyMzVkNmJlNjUzZTEuLjJk
YzJmNDlmMDYyMzJhNTFkNDk5N2ZhMzg1OTJjNzQ2MjE3NjNlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBAIFBhc3NPd25QdHI8Q0NQcm94eT4gQ0NUaHJl
YWRQcm94eTo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKIENDVGhyZWFk
UHJveHk6OkNDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogICAg
IDogbV9hbmltYXRlUmVxdWVzdGVkKGZhbHNlKQogICAgICwgbV9jb21taXRSZXF1ZXN0ZWQoZmFs
c2UpCisgICAgLCBtX2NvbnRleHRMb3N0KGZhbHNlKQogICAgICwgbV9sYXllclRyZWVIb3N0KGxh
eWVyVHJlZUhvc3QpCiAgICAgLCBtX2NvbXBvc2l0b3JJZGVudGlmaWVyKC0xKQogICAgICwgbV9s
YXllclJlbmRlcmVySW5pdGlhbGl6ZWQoZmFsc2UpCkBAIC0xOTMsOSArMTk0LDkgQEAgYm9vbCBD
Q1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgYm9vbCBpbml0aWFs
aXplU3VjY2VlZGVkID0gZmFsc2U7CiAgICAgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyBjYXBh
YmlsaXRpZXM7CiAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1Ro
cmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25J
bXBsVGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZpbml0aWFsaXplU3Vj
Y2VlZGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNhcGFiaWxpdGllcykpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KCZjb21wbGV0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZpbml0aWFsaXplU3VjY2VlZGVk
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjYXBhYmlsaXRpZXMpKSk7CiAgICAgY29tcGxldGlv
bi53YWl0KCk7CiAKICAgICBpZiAoaW5pdGlhbGl6ZVN1Y2NlZWRlZCkgewpAQCAtMjA3LDggKzIw
OCwzNSBAQCBib29sIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkKIAog
Ym9vbCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQoKQogewotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkND
VGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCIpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICAvLyBUcnkgdG8gY3JlYXRlIHRoZSBjb250ZXh0LgorICAgIFJlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlQ29udGV4dCgp
OworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChj
b250ZXh0LT5oYXNPbmVSZWYoKSk7CisKKyAgICAvLyBMZWFrIHRoZSBjb250ZXh0IHBvaW50ZXIg
c28gd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiBpdCB0byB0aGUgb3RoZXIgc2lkZS4uLgor
ICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0UHRyID0gY29udGV4dC5yZWxlYXNlKCkubGVh
a1JlZigpOworICAgIEFTU0VSVChjb250ZXh0UHRyLT5oYXNPbmVSZWYoKSk7CisKKyAgICAvLyBN
YWtlIGEgYmxvY2tpbmcgY2FsbCB0byByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQuIFRoZSBy
ZXN1bHRzIG9mIHRoYXQKKyAgICAvLyBjYWxsIGFyZSBwdXNoZWQgaW50byB0aGUgcmVjcmVhdGVT
dWNjZWVkZWQgYW5kIGNhcGFiaWxpdGllcyBsb2NhbAorICAgIC8vIHZhcmlhYmxlcy4KKyAgICBD
Q0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOworICAgIGJvb2wgcmVjcmVhdGVTdWNjZWVkZWQg
PSBmYWxzZTsKKyAgICBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllczsKKyAg
ICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlz
LCAmQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29udGV4dFB0
ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmcmVjcmVhdGVTdWNjZWVkZWQpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3MoJmNhcGFiaWxpdGllcykpKTsKKyAgICBjb21wbGV0aW9uLndhaXQoKTsKKwor
ICAgIGlmIChyZWNyZWF0ZVN1Y2NlZWRlZCkKKyAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzTWFpblRocmVhZENvcHkgPSBjYXBhYmlsaXRpZXM7CisgICAgcmV0dXJuIHJlY3JlYXRl
U3VjY2VlZGVkOwogfQogCiBpbnQgQ0NUaHJlYWRQcm94eTo6Y29tcG9zaXRvcklkZW50aWZpZXIo
KSBjb25zdApAQCAtMjI1LDcgKzI1Myw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMmIENDVGhyZWFkUHJveHk6OmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zCiAKIHZv
aWQgQ0NUaHJlYWRQcm94eTo6bG9zZUNvbnRleHQoKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRU
YXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRMb3NlQ29udGV4dE9uSW1wbFRocmVhZCkpOwog
fQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZSgpCkBAIC0yNTAsNiArMjc4
LDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQoKQogICAgIENDUHJveHk6
OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVh
ZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCkpOwogfQogCit2b2lkIENDVGhyZWFk
UHJveHk6OmRpZExvc2VDb250ZXh0T25JbXBsVGhyZWFkKCkKK3sKKyAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOworICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6ZGlkTG9z
ZUNvbnRleHRPbkltcGxUaHJlYWQiKTsKKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+ZGlk
TG9zZUNvbnRleHQoKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpvblN3YXBCdWZmZXJzQ29t
cGxldGVPbkltcGxUaHJlYWQoKQogewogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CkBAIC01
MTcsNiArNTUyLDEyIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0
KCkKICAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IDA7CiB9CiAKK3Zv
aWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigp
Cit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBtX21haW5UaHJlYWRQcm94eS0+
cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpiZWdpbkNv
bnRleHRSZWNyZWF0aW9uKSk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXAoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIsIHRoaXMsIDApOwpAQCAtNTQxLDEwICs1ODIsNiBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKIAogICAgIG1f
bGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7CiAKLSAgICAvLyBGSVhNRTogaGFuZGxl
IGNhc2Ugd2hlcmUgbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdC4KLSAgICAvLyBG
SVhNRTogcGFzcyBkaWRTd2FwQnVmZmVyc0Fib3J0IGlmIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmlz
Q29udGV4dExvc3QuCi0gICAgQVNTRVJUKCFtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRleHRM
b3N0KCkpOwotCiAgICAgLy8gUHJvY2VzcyBhbnkgZmluaXNoIHJlcXVlc3QKICAgICBpZiAobV9m
aW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpIHsKICAgICAgICAg
bV9sYXllclRyZWVIb3N0SW1wbC0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CkBAIC01NzcsMTIgKzYx
NCwzNCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKQogCiB2
b2lkIENDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cyhQYXNzT3duUHRyPENDQW5pbWF0
aW9uRXZlbnRzVmVjdG9yPiBldmVudHMpCiB7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1Ro
cmVhZFByb3h5OjpzZXRBbmltYXRpb25FdmVudHMiKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGlmICghbV9sYXllclRyZWVIb3N0KQogICAgICAgICByZXR1cm47CiAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRBbmltYXRpb25FdmVudHMoZXZlbnRzKTsKIH0KIAordm9pZCBDQ1Ro
cmVhZFByb3h5OjpiZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkKK3sKKyAgICBUUkFDRV9FVkVOVDAo
ImNjIiwgIkNDVGhyZWFkUHJveHk6OmJlZ2luQ29udGV4dFJlY3JlYXRpb24iKTsKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghbV9jb250ZXh0UmVjcmVhdGlvblRpbWVy
KTsKKyAgICBtX2NvbnRleHRSZWNyZWF0aW9uVGltZXIgPSBDb250ZXh0UmVjcmVhdGlvblRpbWVy
OjpjcmVhdGUodGhpcyk7CisgICAgbV9sYXllclRyZWVIb3N0LT5kaWRMb3NlQ29udGV4dCgpOwor
ICAgIG1fY29udGV4dFJlY3JlYXRpb25UaW1lci0+c3RhcnRPbmVTaG90KENvbnRleHRSZWNyZWF0
aW9uVGltZXI6OlJlY3JlYXRpb25UaWNrUmF0ZSk7Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6
dHJ5VG9SZWNyZWF0ZUNvbnRleHQoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdCk7CisgICAgQ0NMYXllclRyZWVIb3N0OjpSZWNyZWF0
ZVJlc3VsdCByZXN1bHQgPSBtX2xheWVyVHJlZUhvc3QtPnJlY3JlYXRlQ29udGV4dCgpOworICAg
IGlmIChyZXN1bHQgPT0gQ0NMYXllclRyZWVIb3N0OjpSRUNSRUFURV9GQUlMRURfQlVUX1RSWV9B
R0FJTikKKyAgICAgICAgbV9jb250ZXh0UmVjcmVhdGlvblRpbWVyLT5zdGFydE9uZVNob3QoQ29u
dGV4dFJlY3JlYXRpb25UaW1lcjo6UmVjcmVhdGlvblRpY2tSYXRlKTsKKyAgICBlbHNlIGlmIChy
ZXN1bHQgPT0gQ0NMYXllclRyZWVIb3N0OjpSRUNSRUFURV9TVUNDRUVERUQpCisgICAgICAgIG1f
Y29udGV4dFJlY3JlYXRpb25UaW1lci5jbGVhcigpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6
OmluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9u
KQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1w
bFRocmVhZCIsIHRoaXMsIDApOwpAQCAtNjQzLDQgKzcwMiwxNyBAQCBzaXplX3QgQ0NUaHJlYWRQ
cm94eTo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3QKICAgICByZXR1cm4gdGV4dHVy
ZVVwZGF0ZXNQZXJGcmFtZTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRl
eHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0UHRyLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcyogY2FwYWJpbGl0aWVzKQoreworICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAi
Q0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkIik7CisgICAgQVNTRVJU
KGlzSW1wbFRocmVhZCgpKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4
dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxs
b2NhdG9yKCkpOworICAgICpyZWNyZWF0ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKGFkb3B0UmVmKGNvbnRleHRQdHIpKTsKKyAgICBpZiAo
KnJlY3JlYXRlU3VjY2VlZGVkKSB7CisgICAgICAgICpjYXBhYmlsaXRpZXMgPSBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CisgICAgICAgIG1fc2NoZWR1
bGVyT25JbXBsVGhyZWFkLT5kaWRSZWNyZWF0ZUNvbnRleHQoKTsKKyAgICB9CisgICAgY29tcGxl
dGlvbi0+c2lnbmFsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaAppbmRleCA1N2JhNTk4NzQ4ODg2OWU5MzI4MGVlNDU1MzBmOGI4OTc1ODJiYjM3
Li5hYzdmMGJiNGU3MTJkZWI4NGJkMTkwMTFjZmQzZTAwM2RhOGRmZmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgog
I2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKKyNp
bmNsdWRlICJjYy9DQ1RpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC02OSw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVf
dCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdDsKIAogICAgIC8vIENDTGF5ZXJUcmVl
SG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KKyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNv
bnRleHRPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBs
ZXRlT25JbXBsVGhyZWFkKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBs
VGhyZWFkKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7
CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRl
TW9yZVJlc291cmNlcygpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlv
bigpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVI
b3N0Kik7CkBAIC05MCw2ICs5MywyNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ29tbWl0QW5k
RHJhd0ZyYW1lKCk7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7CiAgICAgdm9p
ZCBzZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4p
OworICAgIHZvaWQgYmVnaW5Db250ZXh0UmVjcmVhdGlvbigpOworICAgIHZvaWQgdHJ5VG9SZWNy
ZWF0ZUNvbnRleHQoKTsKKyAgICBjbGFzcyBDb250ZXh0UmVjcmVhdGlvblRpbWVyIDogcHVibGlj
IENDVGltZXIsIENDVGltZXJDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBh
c3NPd25QdHI8Q29udGV4dFJlY3JlYXRpb25UaW1lcj4gY3JlYXRlKENDVGhyZWFkUHJveHkqIHBy
b3h5KSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ29udGV4dFJlY3JlYXRpb25UaW1lcihwcm94eSkp
OyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIG9uVGltZXJGaXJlZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1fcHJveHktPnRyeVRvUmVjcmVhdGVDb250ZXh0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBlbnVtIFJlY3JlYXRpb24geyBSZWNyZWF0aW9uVGlja1JhdGUgPSAzMCB9OworCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgQ29udGV4dFJlY3JlYXRpb25UaW1lcihDQ1RocmVhZFByb3h5
KiBwcm94eSkgOiBDQ1RpbWVyKENDUHJveHk6Om1haW5UaHJlYWQoKSwgdGhpcyksIG1fcHJveHko
cHJveHkpIHsgfQorCisgICAgICAgIENDVGhyZWFkUHJveHkqIG1fcHJveHk7CisgICAgfTsKIAog
ICAgIC8vIENhbGxlZCBvbiBpbXBsIHRocmVhZAogICAgIHN0cnVjdCBSZWFkYmFja1JlcXVlc3Qg
ewpAQCAtMTEwLDEwICsxMzEsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFZpc2libGVPbklt
cGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBib29sIHZpc2libGUpOwogICAgIHZvaWQgbGF5
ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZv
aWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZU9uSW1wbFRocmVhZCgpOworICAgIHZvaWQgcmVjcmVh
dGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgR3JhcGhpY3NDb250ZXh0
M0QqLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyop
OwogCiAgICAgLy8gQWNjZXNzZWQgb24gbWFpbiB0aHJlYWQgb25seS4KICAgICBib29sIG1fYW5p
bWF0ZVJlcXVlc3RlZDsKICAgICBib29sIG1fY29tbWl0UmVxdWVzdGVkOworICAgIGJvb2wgbV9j
b250ZXh0TG9zdDsKKyAgICBPd25QdHI8Q29udGV4dFJlY3JlYXRpb25UaW1lcj4gbV9jb250ZXh0
UmVjcmVhdGlvblRpbWVyOwogICAgIENDTGF5ZXJUcmVlSG9zdCogbV9sYXllclRyZWVIb3N0Owog
ICAgIGludCBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOwogICAgIGJvb2wgbV9sYXllclJlbmRlcmVy
SW5pdGlhbGl6ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmluZGV4IDNkYmYw
ZjRkMzg2NWU1MWQ5NDI2ZjU4OTU1YzllNGFiMTAzM2JjNTAuLmZkNTNlNDFkMzcyNTFjNzM0NDlm
NmU0MTllOWYzODA5NzM5NmJjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3Bw
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgor
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5
LmgiCiAjaW5jbHVkZSAiY2MvQ0NWaWRlb0RyYXdRdWFkLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IGVkMDUyYTljM2Q4NjljN2FlOTI3MWY2
MTFhMzljNDVhYmE4YmIyOTcuLjk5ODk4MWViMjE3NDZlYmNhMmVjN2FlZmU3OTEyNWI5NWE3Y2Mz
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV9ob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7
CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0T25JbXBsVGhyZWFkKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIHsgbV9k
aWRSZXF1ZXN0UmVkcmF3ID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1p
dE9uSW1wbFRocmVhZCgpIHsgbV9kaWRSZXF1ZXN0Q29tbWl0ID0gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5k
ZXggZDdkZDA1NTk1YmZlNTI2YTUwN2U4YjcyZTQ4ZGE3YzE4Njc2MzQ5NS4uMDYyYTY5OWMzNjE1
OTcyNzcwNDBiNDlhMTYyMDczMWM4YmYyM2VhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC02OSw2ICs2OSw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRT
aXplJiwgZmxvYXQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJs
ZSBmcmFtZUJlZ2luVGltZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZWRlZCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIHsgfQogCiAgICAgLy8gSW1wbGVt
ZW50YXRpb24gb2YgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlCiAgICAgdmlydHVhbCB2b2lkIG5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIHRpbWUpIHsgfQpAQCAtMjM5LDE0ICsyNDEsMTYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpCiAg
ICAgeworICAgICAgICBtX3Rlc3RIb29rcy0+ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKQogICAgIHsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wpCisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1Y2NlZWRlZCkKICAgICB7CisgICAg
ICAgIG1fdGVzdEhvb2tzLT5kaWRSZWNyZWF0ZUNvbnRleHQoc3VjY2VlZGVkKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKQpAQCAtMTkwNCw0ICsxOTA4LDcy
IEBAIHB1YmxpYzoKIAogU0lOR0xFX0FORF9NVUxUSV9USFJFQURfVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdFRlc3RNYW55U3VyZmFjZXMpCiAKKy8vIEEgbG9zZUNvbnRleHQoMSkgc2hvdWxkIGxlYWQg
dG8gYSBkaWRSZWNyZWF0ZUNvbnRleHQodHJ1ZSkKK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RT
ZXRTaW5nbGVMb3N0Q29udGV4dCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25s
eSB7CitwdWJsaWM6CisgICAgQ0NMYXllclRyZWVIb3N0VGVzdFNldFNpbmdsZUxvc3RDb250ZXh0
KCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgewor
ICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkKKyAgICB7CisgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+bG9zZUNvbnRleHQoMSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY3JlYXRlQ29udGV4dChib29sIHN1Y2NlZWRlZCkKKyAgICB7CisgICAgICAgIEVYUEVDVF9U
UlVFKHN1Y2NlZWRlZCk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAgfQorfTsKKworVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdFRlc3RTZXRTaW5nbGVMb3N0Q29udGV4dCwgcnVuTXVsdGlUaHJlYWQpCit7CisgICAgcnVu
VGVzdFRocmVhZGVkKCk7Cit9CisKKy8vIEEgbG9zZUNvbnRleHQoMTApIHNob3VsZCBsZWFkIHRv
IGEgZGlkUmVjcmVhdGVDb250ZXh0KGZhbHNlKSwgYW5kCisvLyBhIGZpbmlzaEFsbFJlbmRlcmlu
ZygpIHNob3VsZCBub3QgaGFuZy4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RTZXRSZXBlYXRl
ZExvc3RDb250ZXh0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRPbmx5IHsKK3B1
YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U2V0UmVwZWF0ZWRMb3N0Q29udGV4dCgpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQorICAgIHsKKyAgICAg
ICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpCisgICAgeworICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPmxvc2VDb250ZXh0KDEwKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
cmVhdGVDb250ZXh0KGJvb2wgc3VjY2VlZGVkKQorICAgIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KHN1Y2NlZWRlZCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQWxsUmVuZGVyaW5n
KCk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJU
ZXN0KCkKKyAgICB7CisgICAgfQorfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTZXRS
ZXBlYXRlZExvc3RDb250ZXh0LCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0VGhyZWFk
ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCAz
OTA4ZjQwYTk5YWU3NTcwMzFlOWFkOTFiNDI5YzYyZmJiNTM2MTY4Li4wODUzZTVhMzY1ZDQ5YzM2
YTZmMDBkZjg0MzU0ZTFhMGE2YmZiMjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC02
MDQsNCArNjA0LDE3OCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdv
ZXNJbnZpc2libGVNaWRDb21taXQpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0KIAorVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoZW5Db21wbGV0ZWx5SWRsZSkK
K3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsK
KworICAgIHN0YXRlLmRpZExvc2VDb250ZXh0KCk7CisKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT04sIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsK
KworICAgIC8vIE9uY2UgY29udGV4dCByZWNyZWF0aW9uIGJlZ2lucywgbm90aGluZyBzaG91bGQg
aGFwcGVuLgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05P
TkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBSZWNyZWF0ZSB0aGUgY29udGV4dAor
ICAgIHN0YXRlLmRpZFJlY3JlYXRlQ29udGV4dCgpOworCisgICAgLy8gV2hlbiB0aGUgY29udGV4
dCBpcyByZWNyZWF0ZWQsIHdlIHNob3VsZCBiZWdpbiBhIGNvbW1pdAorICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7Cit9CisK
K1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29udGV4dExvc3RXaGVuSWRs
ZUFuZENvbW1pdFJlcXVlc3RlZFdoaWxlUmVjcmVhdGluZykKK3sKKyAgICBTdGF0ZU1hY2hpbmUg
c3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIHN0YXRlLmRpZExvc2VD
b250ZXh0KCk7CisKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT04sIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3Rh
dGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIE9uY2UgY29udGV4
dCByZWNyZWF0aW9uIGJlZ2lucywgbm90aGluZyBzaG91bGQgaGFwcGVuLgorICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CisKKyAgICAvLyBXaGlsZSBjb250ZXh0IGlzIHJlY3JlYXRpbmcsIGNvbW1pdHMgc2hvdWxk
bid0IGJlZ2luLgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CisKKyAgICAvLyBSZWNyZWF0ZSB0aGUgY29udGV4dAorICAgIHN0YXRlLmRpZFJlY3JlYXRl
Q29udGV4dCgpOworCisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBpcyByZWNyZWF0ZWQsIHdlIHNo
b3VsZCBiZWdpbiBhIGNvbW1pdAorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBPbmNlIHRoZSBjb250ZXh0
IGlzIHJlY3JlYXRlZCwgd2hldGhlciB3ZSBkcmF3IHNob3VsZCBiZSBiYXNlZCBvbgorICAgIC8v
IHNldENhbkRyYXcuCisgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CisgICAgc3RhdGUu
ZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyhm
YWxzZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9O
RSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOworICAg
IHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoaWxlQ29tbWl0SW5Qcm9ncmVzcykKK3sKKyAgICBTdGF0
ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIEdl
dCBhIGNvbW1pdCBpbiBmbGlnaHQuCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFj
dGlvbigpKTsKKworICAgIC8vIFNldCBkYW1hZ2UgYW5kIGV4cGVjdCBhIGRyYXcuCisgICAgc3Rh
dGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CisKKyAgICAvLyBDYXVzZSBhIGxvc3QgY29udGV4
dCB3aGlsZSB0aGUgYmVnaW4gZnJhbWUgaXMgaW4gZmxpZ2h0LgorICAgIHN0YXRlLmRpZExvc2VD
b250ZXh0KCk7CisKKyAgICAvLyBBc2sgZm9yIGFub3RoZXIgZHJhdy4gRXhwZWN0IG5vdGhpbmcg
aGFwcGVucy4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OworCisgICAgLy8gRmluaXNoIHRoZSBmcmFtZSwgdXBkYXRlIHJlc291cmNlcywgYW5kIGNvbW1p
dC4KKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlv
bigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3Rh
dGUoc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIEV4cGVjdCB0byBiZSB0b2xkIHRvIGJl
Z2luIGNvbnRleHQgcmVjcmVhdGlvbiwgaW5kZXBlbmRlbnQgb2YgdnN5bmMgc3RhdGUKKyAgICBz
dGF0ZS5kaWRFbnRlclZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9OLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OworICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT04sIHN0YXRlLm5leHRB
Y3Rpb24oKSk7Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29u
dGV4dExvc3RXaGlsZUNvbW1pdEluUHJvZ3Jlc3NBbmRBbm90aGVyQ29tbWl0UmVxdWVzdGVkKQor
eworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwor
CisgICAgLy8gR2V0IGEgY29tbWl0IGluIGZsaWdodC4KKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1p
dCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9C
RUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShz
dGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gU2V0IGRhbWFnZSBhbmQgZXhwZWN0IGEgZHJh
dy4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAgICBzdGF0ZS5kaWRFbnRlclZT
eW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJB
Vywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0
QWN0aW9uKCkpOworICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKKworICAgIC8vIENhdXNlIGEg
bG9zdCBjb250ZXh0IHdoaWxlIHRoZSBiZWdpbiBmcmFtZSBpcyBpbiBmbGlnaHQuCisgICAgc3Rh
dGUuZGlkTG9zZUNvbnRleHQoKTsKKworICAgIC8vIEFzayBmb3IgYW5vdGhlciBkcmF3IGFuZCBh
bHNvIHNldCBuZWVkcyBjb21taXQuIEV4cGVjdCBub3RoaW5nIGhhcHBlbnMuCisgICAgLy8gU2V0
dGluZyBhbm90aGVyIGNvbW1pdCB3aWxsIHB1dCB1cyBpbnRvCisgICAgLy8gQ09NTUlUX1NUQVRF
X1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcgYWZ0ZXIgd2UgZmluaXNoIHRoZSBmcmFtZSBvbiB0aGUg
bWFpbgorICAgIC8vIHRocmVhZC4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAg
ICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8g
RmluaXNoIHRoZSBmcmFtZSwgdXBkYXRlIHJlc291cmNlcywgYW5kIGNvbW1pdC4KKyAgICBzdGF0
ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOworICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZh
bHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01N
SVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4
dEFjdGlvbigpKTsKKworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09N
TUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwor
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9u
KCkpOworCisgICAgLy8gRXhwZWN0IHRvIGJlIHRvbGQgdG8gYmVnaW4gY29udGV4dCByZWNyZWF0
aW9uLCBpbmRlcGVuZGVudCBvZiB2c3luYyBzdGF0ZQorICAgIHN0YXRlLmRpZEVudGVyVlN5bmMo
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9D
T05URVhUX1JFQ1JFQVRJT04sIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuZGlkTGVh
dmVWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTiwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKworCitU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZpbmlzaEFsbFJlbmRlcmluZ1do
aWxlQ29udGV4dExvc3QpCit7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNl
dFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBDYXVzZSBhIGxvc3QgY29udGV4dCBsb3N0LgorICAg
IHN0YXRlLmRpZExvc2VDb250ZXh0KCk7CisKKyAgICAvLyBBc2sgYSBmb3JjZWQgcmVkcmF3IGFu
ZCB2ZXJpZnkgaXQgb2N1cnJzLgorICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KHRydWUp
OworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRl
LmRpZExlYXZlVlN5bmMoKTsKKworICAgIC8vIENsZWFyIHRoZSBmb3JjZWQgcmVkcmF3IGJpdC4K
KyAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZFJlZHJhdyhmYWxzZSk7CisKKyAgICAvLyBFeHBlY3Qg
dG8gYmUgdG9sZCB0byBiZWdpbiBjb250ZXh0IHJlY3JlYXRpb24sIGluZGVwZW5kZW50IG9mIHZz
eW5jIHN0YXRlCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
QkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9OLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRl
LnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBBc2sgYSBmb3JjZWQg
cmVkcmF3IGFuZCB2ZXJpZnkgaXQgb2N1cnJzLgorICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkUmVk
cmF3KHRydWUpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
ICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCmluZGV4IDQ3NTk4N2YxM2FjNTg5ZjUw
NzI0ZjIzOWVmMGFkZDMwNTI0NzQwNmMuLjQ1ZjYxYjkwYmY1NGUyZWNlNzhiZGE4ODNmZmEwYTI2
YmQ1NDM2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hl
ZHVsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1
bGVyVGVzdC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpIHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXAiKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rp
b25VcGRhdGVNb3JlUmVzb3VyY2VzKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRB
Y3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIik7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVk
QWN0aW9uQ29tbWl0KCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25Db21t
aXQiKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNy
ZWF0aW9uKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRl
eHRSZWNyZWF0aW9uIik7IH0KIAogcHJvdGVjdGVkOgogICAgIGJvb2wgbV9oYXNNb3JlUmVzb3Vy
Y2VVcGRhdGVzOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkgeyB9CiAKIHByb3RlY3RlZDoKICAgICBp
bnQgbV9udW1EcmF3czsKQEAgLTIxNSw2ICsyMTcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpIHsgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgaW50IG1fbnVtRHJhd3M7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130437</attachid>
            <date>2012-03-06 13:58:41 -0800</date>
            <delta_ts>2012-03-06 16:40:21 -0800</delta_ts>
            <desc>Integrate @kbrs didRecreate event delivery</desc>
            <filename>bug-80100-20120306135839.patch</filename>
            <type>text/plain</type>
            <size>52947</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRkYzMxYTk3ZGNhNjMx
N2MwNzIxNWUzYjFiY2VkNjE3Nzk1Nzk0OC4uNzRlNWRmM2I3MjdjYmJmYzBkNzkwYWRkMzQ1Njdj
YTc1N2UwM2JmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAzLTAxICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENDVGhyZWFk
UHJveHkgY29udGV4dCBsb3N0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwMTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkTG9zZUNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlk
UmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpwcm9jZXNz
U2NoZWR1bGVkQWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXIuaDoKKyAgICAgICAgKENDU2NoZWR1bGVyQ2xpZW50KToKKyAgICAgICAg
KENDU2NoZWR1bGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp2c3luY0NhbGxiYWNrTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpkaWRMb3NlQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpkaWRSZWNyZWF0ZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAgICAgIChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZWNy
ZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bG9zZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVn
aW5Db250ZXh0UmVjcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkNvbnRleHRSZWNyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpsb3NlQ29udGV4dE9uSW1wbFRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
OgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisKIDIwMTItMDMtMDYgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBm
b3IgbWluaW1hbCBidWlsZCBhZnRlciByMTA5OTM5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBjODBkYmZjMzI5NjkxOTZiMGI5ZTdmZjdiMjNiY2ZkMDQ0MmE4YTg5Li5mYjYxZGEyZDg2
MDE5YjgxMThmNDEyZDMzY2Y0YmVkYjJmMzIwYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAzLTAxICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENDVGhyZWFkUHJveHkgY29udGV4dCBsb3N0IHN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgw
MTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0
ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0ND
U2NoZWR1bGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVy
Q2xpZW50OjpzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKToKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdzo6
c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbik6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdzo6c2NoZWR1
bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbik6CisKIDIwMTItMDMtMDYgIERhdmlkIEdy
b2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogQ2hlY2sg
V2ViQ29tbW9uV29ya2VyQ2xpZW50OjphbGxvd0luZGV4ZWREQiBiZWZvcmUgcHJvY2VlZGluZyBm
cm9tIGEgc2hhcmVkIHdvcmtlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
aW5kZXggMTQ0ODg5ZTk3YzlkMDI3NDQyNWRkNjIzNGZiOGY2NDIzZjhjYTk0Yy4uMzE3MTVjYTU3
NzYwN2YyMzVmN2RhYWRiNWFjOWIyNjZhODI5MDZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCkBAIC0xNzUsMTggKzE3NSwxOCBAQCBwcml2YXRlOgogfTsKIAogCi1Q
YXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
cmVhdGUoQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQpCitQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGll
bnQsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCiB7Ci0gICAgT3duUHRy
PExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFB0cihuZXcgTGF5ZXJS
ZW5kZXJlckNocm9taXVtKG93bmVyLCBjb250ZXh0KSkpOworICAgIE93blB0cjxMYXllclJlbmRl
cmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJv
bWl1bShjbGllbnQsIGNvbnRleHQpKSk7CiAgICAgaWYgKCFsYXllclJlbmRlcmVyLT5pbml0aWFs
aXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGxheWVyUmVuZGVy
ZXIucmVsZWFzZSgpOwogfQogCi1MYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJD
aHJvbWl1bShDQ0xheWVyVHJlZUhvc3RJbXBsKiBvd25lciwKK0xheWVyUmVuZGVyZXJDaHJvbWl1
bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xp
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKLSAgICA6IG1fb3duZXIob3duZXIpCisg
ICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlKDApCiAg
ICAgLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQoMCkKICAgICAsIG1fY29udGV4dChjb250ZXh0
KQpAQCAtMTk2LDExICsxOTYsMzIgQEAgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRl
cmVyQ2hyb21pdW0oQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsCiB7CiB9CiAKK2NsYXNzIENv
bnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dDNEOjpDb250
ZXh0TG9zdENhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDb250ZXh0
TG9zdENhbGxiYWNrQWRhcHRlcj4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCog
Y2xpZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZXh0TG9zdENh
bGxiYWNrQWRhcHRlcihjbGllbnQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25Db250
ZXh0TG9zdCgpCisgICAgeworICAgICAgICBtX2NsaWVudC0+ZGlkTG9zZUNvbnRleHQoKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgQ29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXIoTGF5ZXJSZW5k
ZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQpCisgICAgICAgICAgICA6IG1fY2xpZW50KGNsaWVu
dCkgeyB9CisKKyAgICBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIG1fY2xpZW50OworfTsK
KwogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUoKQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKENvbnRleHRMb3N0Q2FsbGJh
Y2tBZGFwdGVyOjpjcmVhdGUobV9jbGllbnQpKTsKKwogI2lmIFVTRShTS0lBKQogICAgIGlmIChz
ZXR0aW5ncygpLmFjY2VsZXJhdGVQYWludGluZyAmJiBjb250ZXh0U3VwcG9ydHNBY2NlbGVyYXRl
ZFBhaW50aW5nKG1fY29udGV4dC5nZXQoKSkpCiAgICAgICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5n
QWNjZWxlcmF0ZWRQYWludGluZyA9IHRydWU7CkBAIC0zMDYsMTEgKzMyNyw2IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICBpZiAobV9j
YXBhYmlsaXRpZXMudXNpbmdTZXRWaXNpYmlsaXR5KSB7CiAgICAgICAgIEV4dGVuc2lvbnMzRENo
cm9taXVtKiBleHRlbnNpb25zM0RDaHJvbWl1bSA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENo
cm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwogICAgICAgICBleHRlbnNpb25z
M0RDaHJvbWl1bS0+c2V0VmlzaWJpbGl0eUNIUk9NSVVNKHZpc2libGUpOwotCi0gICAgICAgIC8v
IFJlc2V0IHRoZSBkYW1hZ2UgdHJhY2tlciBiZWNhdXNlIHRoZSBmcm9udC9iYWNrIGJ1ZmZlcnMg
bWF5IGhhdmUgYmVlbiBkYW1hZ2VkIGJ5IHRoZSBHUFUKLSAgICAgICAgLy8gcHJvY2VzcyBvbiB2
aXNpYmlsaXR5IGNoYW5nZS4KLSAgICAgICAgaWYgKHZpc2libGUgJiYgbV9jYXBhYmlsaXRpZXMu
dXNpbmdQYXJ0aWFsU3dhcCkKLSAgICAgICAgICAgIG1fb3duZXItPnNldEZ1bGxSb290TGF5ZXJE
YW1hZ2UoKTsKICAgICB9CiB9CiAKQEAgLTEwNjIsNyArMTA3OCw3IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpzd2FwQnVmZmVycyhjb25zdCBJbnRSZWN0JiBzdWJCdWZmZXIpCiAKIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpvblN3YXBCdWZmZXJzQ29tcGxldGUoKQogewotICAg
IG1fb3duZXItPm9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOworICAgIG1fY2xpZW50LT5vblN3YXBC
dWZmZXJzQ29tcGxldGUoKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZy
YW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggZWU5ODk1YWUxZDRjOTRjZGE2MzEwZGM3
YjNmYjA0M2QyOTVjYjdkYy4uNzZhMGNkMjI4NjZiNTk0Y2Q3ODRiN2QzODZlY2NiYjVhOGNlNGU2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTQyLDcgKzQyLDcgQEAK
ICNpbmNsdWRlICJWaWRlb0xheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJjYy9DQ0NhbnZhc0xh
eWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDSGVhZHNVcERpc3BsYXkuaCIKLSNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NQbHVnaW5MYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1ZpZGVv
TGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTYwLDM0ICs2MCw0NSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDSGVhZHNVcERpc3BsYXk7CiBjbGFzcyBD
Q0xheWVySW1wbDsKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBDQ1JlbmRlclBh
c3M7CiBjbGFzcyBHZW9tZXRyeUJpbmRpbmc7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNs
YXNzIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIExheWVyUmVuZGVyZXJTd2FwQnVm
ZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyOwogCitjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21p
dW1DbGllbnQgeworcHVibGljOgorICAgIC8vIFdoZXJlIHBvc3NpYmxlLCByZWRyYXdzIGFyZSBz
Y2lzc29yZWQgdG8gYSBkYW1hZ2UgcmVnaW9uIGNhbGN1bGF0ZWQgZnJvbSBjaGFuZ2VzIHRvCisg
ICAgLy8gbGF5ZXIgcHJvcGVydGllcy4gVGhpcyBmdW5jdGlvbiBvdmVycmlkZXMgdGhlIGRhbWFn
ZSByZWdpb24gZm9yIHRoZSBuZXh0IGRyYXcgY3ljbGUuCisgICAgdmlydHVhbCBjb25zdCBJbnRT
aXplJiB2aWV3cG9ydFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBDQ1NldHRp
bmdzJiBzZXR0aW5ncygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIENDTGF5ZXJJbXBsKiByb290
TGF5ZXIoKSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBDQ0xheWVySW1wbCogcm9vdExheWVyKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCkgPSAwOworfTsKKwogLy8gQ2xhc3Mg
dGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdM
LgogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShMYXllclJlbmRlcmVyQ2hyb21pdW0pOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdEltcGwqLCBQYXNz
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJS
ZW5kZXJlckNocm9taXVtPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwogCiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgaW4g
b3JkZXIgdG8gYWxsb3cgdGhlIExheWVyUmVuZGVyZXJDaHJvbWl1bSB0byBkZXN0cnVjdAogICAg
IHZvaWQgY2xvc2UoKTsKIAogICAgIH5MYXllclJlbmRlcmVyQ2hyb21pdW0oKTsKIAotICAgIGNv
bnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9vd25lci0+c2V0dGlu
Z3MoKTsgfQorICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4g
bV9jbGllbnQtPnNldHRpbmdzKCk7IH0KICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcGFiaWxpdGllczsgfQogCi0g
ICAgQ0NMYXllckltcGwqIHJvb3RMYXllcigpIHsgcmV0dXJuIG1fb3duZXItPnJvb3RMYXllcigp
OyB9Ci0gICAgY29uc3QgQ0NMYXllckltcGwqIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
b3duZXItPnJvb3RMYXllcigpOyB9CisgICAgQ0NMYXllckltcGwqIHJvb3RMYXllcigpIHsgcmV0
dXJuIG1fY2xpZW50LT5yb290TGF5ZXIoKTsgfQorICAgIGNvbnN0IENDTGF5ZXJJbXBsKiByb290
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC0+cm9vdExheWVyKCk7IH0KIAogICAgIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgYm9vbCBjb250ZXh0U3VwcG9ydHNNYXBT
dWIoKSBjb25zdCB7IHJldHVybiBtX2NhcGFiaWxpdGllcy51c2luZ01hcFN1YjsgfQogCi0gICAg
Y29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKCkgeyByZXR1cm4gbV9vd25lci0+dmlld3BvcnRT
aXplKCk7IH0KKyAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSB7IHJldHVybiBtX2Ns
aWVudC0+dmlld3BvcnRTaXplKCk7IH0KICAgICBpbnQgdmlld3BvcnRXaWR0aCgpIHsgcmV0dXJu
IHZpZXdwb3J0U2l6ZSgpLndpZHRoKCk7IH0KICAgICBpbnQgdmlld3BvcnRIZWlnaHQoKSB7IHJl
dHVybiB2aWV3cG9ydFNpemUoKS5oZWlnaHQoKTsgfQogCkBAIC0xNTYsNyArMTY3LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF0cml4TG9jYXRpb24sIGludCBh
bHBoYUxvY2F0aW9uLCBpbnQgcXVhZExvY2F0aW9uKTsKIAogcHJpdmF0ZToKLSAgICBMYXllclJl
bmRlcmVyQ2hyb21pdW0oQ0NMYXllclRyZWVIb3N0SW1wbCosIFBhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+KTsKKyAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9t
aXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwogICAgIGJvb2wgaW5p
dGlhbGl6ZSgpOwogCiAgICAgdm9pZCBkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiwgY29uc3Qg
RmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CkBAIC0yMDAsNyArMjExLDcgQEAgcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgTGF5ZXJSZW5kZXJlclN3YXBCdWZmZXJzQ29tcGxldGVDYWxs
YmFja0FkYXB0ZXI7CiAgICAgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKTsKIAotICAgIEND
TGF5ZXJUcmVlSG9zdEltcGwqIG1fb3duZXI7CisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xp
ZW50KiBtX2NsaWVudDsKIAogICAgIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMgbV9jYXBhYmls
aXRpZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDdjY2I1ZmQ3MThj
MjM3NzAwMzg4ZWFjMTk5OWRmZWY5YmM2OGNiMDQuLjBlYWE4ZGYxNmUwODFkNTY3M2NhOWIwYzA1
MDJmYTgwYTk5MjZiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMTM0
LDcgKzEzNCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJl
cigpCiAgICAgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVlOwogfQogCi12b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cmVjcmVhdGVDb250ZXh0KCkKK0NDTGF5ZXJUcmVlSG9zdDo6UmVjcmVh
dGVSZXN1bHQgQ0NMYXllclRyZWVIb3N0OjpyZWNyZWF0ZUNvbnRleHQoKQogewogICAgIFRSQUNF
X0VWRU5UMCgiY2MiLCAiQ0NMYXllclRyZWVIb3N0OjpyZWNyZWF0ZUNvbnRleHQiKTsKICAgICBB
U1NFUlQobV9jb250ZXh0TG9zdCk7CkBAIC0xNDgsMjAgKzE0OCwyNSBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6cmVjcmVhdGVDb250ZXh0KCkKICAgICBpZiAocmVjcmVhdGVkKSB7CiAgICAgICAg
IG1fY2xpZW50LT5kaWRSZWNyZWF0ZUNvbnRleHQodHJ1ZSk7CiAgICAgICAgIG1fY29udGV4dExv
c3QgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gUkVDUkVBVEVfU1VD
Q0VFREVEOwogICAgIH0KIAogICAgIC8vIFRvbGVyYXRlIGEgY2VydGFpbiBudW1iZXIgb2YgcmVj
cmVhdGlvbiBmYWlsdXJlcyB0byB3b3JrIGFyb3VuZCByYWNlcwogICAgIC8vIGluIHRoZSBjb250
ZXh0LWxvc3QgbWFjaGluZXJ5LgogICAgIG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0cysrOwog
ICAgIGlmIChtX251bUZhaWxlZFJlY3JlYXRlQXR0ZW1wdHMgPCA1KSB7Ci0gICAgICAgIHNldE5l
ZWRzQ29tbWl0KCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRklYTUU6IFRoZSBzaW5n
bGUgdGhyZWFkIGRvZXMgbm90IHNlbGYtc2NoZWR1bGUgY29udGV4dAorICAgICAgICAvLyByZWNy
ZWF0aW9uLiBTbyBmb3JjZSBhbm90aGVyIHJlY3JlYXRpb24gYXR0ZW1wdCB0byBoYXBwZW4gYnkg
cmVxdWVzdGluZworICAgICAgICAvLyBhbm90aGVyIGNvbW1pdC4KKyAgICAgICAgaWYgKCFDQ1By
b3h5OjpoYXNJbXBsVGhyZWFkKCkpCisgICAgICAgICAgICBzZXROZWVkc0NvbW1pdCgpOworICAg
ICAgICByZXR1cm4gUkVDUkVBVEVfRkFJTEVEX0JVVF9UUllfQUdBSU47CiAgICAgfQogCiAgICAg
Ly8gV2UgaGF2ZSB0cmllZCB0b28gbWFueSB0aW1lcyB0byByZWNyZWF0ZSB0aGUgY29udGV4dC4g
VGVsbCB0aGUgaG9zdCB0byBmYWxsCiAgICAgLy8gYmFjayB0byBzb2Z0d2FyZSByZW5kZXJpbmcu
CiAgICAgbV9jbGllbnQtPmRpZFJlY3JlYXRlQ29udGV4dChmYWxzZSk7CisgICAgcmV0dXJuIFJF
Q1JFQVRFX0ZBSUxFRF9BTkRfR0FWRV9VUDsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRl
bGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yKQpAQCAtMjU1LDggKzI2MCw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGVB
bmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChtX2NvbnRleHRMb3N0KSB7Ci0gICAgICAg
IHJlY3JlYXRlQ29udGV4dCgpOwotICAgICAgICBpZiAobV9jb250ZXh0TG9zdCkKKyAgICAgICAg
aWYgKHJlY3JlYXRlQ29udGV4dCgpICE9IFJFQ1JFQVRFX1NVQ0NFRURFRCkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgbV90cmlnZ2VySWRsZVBhaW50cyA9IGZhbHNlOwpA
QCAtNDE5LDggKzQyMyw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAobV9jb250ZXh0TG9zdCkg
ewotICAgICAgICByZWNyZWF0ZUNvbnRleHQoKTsKLSAgICAgICAgaWYgKG1fY29udGV4dExvc3Qp
CisgICAgICAgIGlmIChyZWNyZWF0ZUNvbnRleHQoKSAhPSBSRUNSRUFURV9TVUNDRUVERUQpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCmluZGV4IDJhMWJkZDFmNGNiOGFjYWFmZjY4ZDU2ODAzOWYxMDk2MzA0ZTI1M2EuLjhmZmEz
ZDUxZGIwNTllMDcwYTM2MWZkMTU2ZWQ0YWUxZmM5ODExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCkBAIC0xMzQsNiArMTM0LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXll
clRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIHZvaWQgZGlkQmVjb21lSW52aXNpYmxlT25JbXBs
VGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKICAgICB2b2lkIGRpZExvc2VDb250ZXh0KCk7
CisgICAgZW51bSBSZWNyZWF0ZVJlc3VsdCB7CisgICAgICAgIFJFQ1JFQVRFX1NVQ0NFRURFRCwK
KyAgICAgICAgUkVDUkVBVEVfRkFJTEVEX0JVVF9UUllfQUdBSU4sCisgICAgICAgIFJFQ1JFQVRF
X0ZBSUxFRF9BTkRfR0FWRV9VUCwKKyAgICB9OworICAgIFJlY3JlYXRlUmVzdWx0IHJlY3JlYXRl
Q29udGV4dCgpOwogICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyBtX2NsaWVudC0+
ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7IH0KICAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZl
cnMoKSB7IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7IH0KICAgICB2b2lkIGRl
bGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciopOwpAQCAt
MjA2LDcgKzIxMiw2IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiA+IFRleHR1cmVMaXN0OwogCiAgICAgdm9pZCBpbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcigpOwotICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0KCk7CiAKICAgICBlbnVtIFBhaW50VHlw
ZSB7IFBhaW50VmlzaWJsZSwgUGFpbnRJZGxlIH07CiAgICAgc3RhdGljIHZvaWQgcGFpbnRDb250
ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlwZSwgY29uc3QgUmVnaW9uJiBvY2Ns
dWRlZFNjcmVlblNwYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
aW5kZXggZjcxNWFlMzVkMTdmOTBiNzRkYjIyZGMwZjNjOTRlNjY3MDUxOTk5YS4uZjFkNWZjNzNm
YzExZDlhMjFiN2Y0MmNkMDMxZjY4OWMxYzczYTcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKQEAgLTMzOSwxMCArMzM5LDE1IEBAIFRleHR1cmVBbGxvY2F0b3Iq
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0CiAK
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3dhcEJ1ZmZlcnMoKQogewotICAgIEFTU0VSVCht
X2xheWVyUmVuZGVyZXIgJiYgIWlzQ29udGV4dExvc3QoKSk7CisgICAgQVNTRVJUKG1fbGF5ZXJS
ZW5kZXJlcik7CiAgICAgbV9sYXllclJlbmRlcmVyLT5zd2FwQnVmZmVycyhlbmNsb3NpbmdJbnRS
ZWN0KG1fcm9vdERhbWFnZVJlY3QpKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpk
aWRMb3NlQ29udGV4dCgpCit7CisgICAgbV9jbGllbnQtPmRpZExvc2VDb250ZXh0T25JbXBsVGhy
ZWFkKCk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6b25Td2FwQnVmZmVyc0NvbXBs
ZXRlKCkKIHsKICAgICBtX2NsaWVudC0+b25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFk
KCk7CkBAIC0zNTAsNyArMzU1LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpvblN3YXBC
dWZmZXJzQ29tcGxldGUoKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnJlYWRiYWNrKHZv
aWQqIHBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBBU1NFUlQobV9sYXllclJl
bmRlcmVyICYmICFpc0NvbnRleHRMb3N0KCkpOworICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIp
OwogICAgIG1fbGF5ZXJSZW5kZXJlci0+Z2V0RnJhbWVidWZmZXJQaXhlbHMocGl4ZWxzLCByZWN0
KTsKIH0KIApAQCAtMzg3LDYgKzM5MiwxMSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNl
dFZpc2libGUoYm9vbCB2aXNpYmxlKQogCiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikKICAgICAg
ICAgbV9sYXllclJlbmRlcmVyLT5zZXRWaXNpYmxlKHZpc2libGUpOworCisgICAgLy8gUmVzZXQg
dGhlIGRhbWFnZSB0cmFja2VyIGJlY2F1c2UgdGhlIGZyb250L2JhY2sgYnVmZmVycyBtYXkgaGF2
ZSBiZWVuIGRhbWFnZWQgYnkgdGhlIEdQVQorICAgIC8vIHByb2Nlc3Mgb24gdmlzaWJpbGl0eSBj
aGFuZ2UuCisgICAgaWYgKHZpc2libGUgJiYgbV9sYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMo
KS51c2luZ1BhcnRpYWxTd2FwKQorICAgICAgICBzZXRGdWxsUm9vdExheWVyRGFtYWdlKCk7CiB9
CiAKIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKQEAgLTM5NCwxMCArNDA0LDE1IEBA
IGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4KICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVt
PiBsYXllclJlbmRlcmVyOwogICAgIGxheWVyUmVuZGVyZXIgPSBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNyZWF0ZSh0aGlzLCBjb250ZXh0KTsKIAotICAgIGlmIChtX2xheWVyUmVuZGVyZXIpCisg
ICAgYm9vbCB3YXNSZWNyZWF0ZSA9IGZhbHNlOworICAgIGlmIChtX2xheWVyUmVuZGVyZXIpIHsK
ICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5jbG9zZSgpOworICAgICAgICB3YXNSZWNyZWF0ZSA9
IHRydWU7CisgICAgfQogCiAgICAgbV9sYXllclJlbmRlcmVyID0gbGF5ZXJSZW5kZXJlci5yZWxl
YXNlKCk7CisgICAgaWYgKHdhc1JlY3JlYXRlKQorICAgICAgICBzZW5kQ29udGV4dExvc3RBbmRS
ZXN0b3JlZE5vdGlmaWNhdGlvblJlY3Vyc2l2ZShtX3Jvb3RMYXllckltcGwuZ2V0KCkpOwogICAg
IHJldHVybiBtX2xheWVyUmVuZGVyZXI7CiB9CiAKQEAgLTcwMCwxMSArNzE1LDYgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJlZ2luVGltZU1z
KQogICAgICAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKIH0KIAot
dm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZW5kQ29udGV4dExvc3RBbmRSZXN0b3JlZE5vdGlm
aWNhdGlvbigpCi17Ci0gICAgc2VuZENvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25S
ZWN1cnNpdmUobV9yb290TGF5ZXJJbXBsLmdldCgpKTsKLX0KLQogdm9pZCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpzZW5kQ29udGV4dExvc3RBbmRSZXN0b3JlZE5vdGlmaWNhdGlvblJlY3Vyc2l2ZShD
Q0xheWVySW1wbCogY3VycmVudCkKIHsKICAgICBpZiAoIWN1cnJlbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggZmY0N2ViMDhmYzI4MzcwMDI3MzMyZjk4NWI3YjFj
OGYyY2RiOWU3ZS4uODAwMDVmYzEzYTM5ZmU4NWZkNDg5N2M5NDE5MjgwYjVhMTEyMjkyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMjUsNiArMjUsNyBAQAogI2lm
bmRlZiBDQ0xheWVyVHJlZUhvc3RJbXBsX2gKICNkZWZpbmUgQ0NMYXllclRyZWVIb3N0SW1wbF9o
CiAKKyNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJjYy9DQ0Fu
aW1hdGlvbkV2ZW50cy5oIgogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclNvcnRlci5oIgpAQCAtMzksNyArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBDQ0NvbXBsZXRpb25FdmVudDsKIGNsYXNzIENDUGFnZVNjYWxlQW5pbWF0aW9u
OwogY2xhc3MgQ0NMYXllckltcGw7Ci1jbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CiBjbGFz
cyBUZXh0dXJlQWxsb2NhdG9yOwogc3RydWN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXM7CiBj
bGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgVHJhbnNm
b3JtYXRpb25NYXRyaXg7CiAvLyBDQ0xheWVyVHJlZUhvc3QtPkNDUHJveHkgY2FsbGJhY2sgaW50
ZXJmYWNlLgogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCB7CiBwdWJsaWM6CisgICAg
dmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0T25JbXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpID0gMDsKQEAgLTU0LDcgKzU1LDcgQEAg
cHVibGljOgogfTsKIAogLy8gQ0NMYXllclRyZWVIb3N0SW1wbCBvd25zIHRoZSBDQ0xheWVySW1w
bCB0cmVlIGFzIHdlbGwgYXMgYXNzb2NpYXRlZCByZW5kZXJpbmcgc3RhdGUKLWNsYXNzIENDTGF5
ZXJUcmVlSG9zdEltcGwgOiBwdWJsaWMgQ0NJbnB1dEhhbmRsZXJDbGllbnQgeworY2xhc3MgQ0NM
YXllclRyZWVIb3N0SW1wbCA6IHB1YmxpYyBDQ0lucHV0SGFuZGxlckNsaWVudCwgTGF5ZXJSZW5k
ZXJlckNocm9taXVtQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0xheWVyVHJl
ZUhvc3RJbXBsKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ0xheWVyVHJlZUhv
c3RJbXBsPiBjcmVhdGUoY29uc3QgQ0NTZXR0aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqKTsKQEAgLTc2LDYgKzc3LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0
ZShkb3VibGUgZnJhbWVEaXNwbGF5VGltZU1zKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVy
cygpOwogCisgICAgLy8gTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50IGltcGxlbWVudGF0aW9u
CisgICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSBjb25zdCB7IHJldHVy
biBtX3ZpZXdwb3J0U2l6ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGlu
Z3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzOyB9CisgICAgdmlydHVhbCBDQ0xheWVySW1w
bCogcm9vdExheWVyKCkgeyByZXR1cm4gbV9yb290TGF5ZXJJbXBsLmdldCgpOyB9CisgICAgdmly
dHVhbCBjb25zdCBDQ0xheWVySW1wbCogcm9vdExheWVyKCkgY29uc3QgIHsgcmV0dXJuIG1fcm9v
dExheWVySW1wbC5nZXQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKTsKKworICAgIC8vIEltcGxl
bWVudGF0aW9uCiAgICAgYm9vbCBjYW5EcmF3KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQoKTsKIApAQCAtODksMTEgKzk5LDkgQEAgcHVibGljOgogICAgIFRleHR1cmVBbGxvY2F0
b3IqIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0OwogCiAgICAgdm9pZCBzd2FwQnVm
ZmVycygpOwotICAgIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCk7CiAKICAgICB2b2lkIHJl
YWRiYWNrKHZvaWQqIHBpeGVscywgY29uc3QgSW50UmVjdCYpOwogCi0gICAgQ0NMYXllckltcGwq
IHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVySW1wbC5nZXQoKTsgfQogICAg
IHZvaWQgc2V0Um9vdExheWVyKFBhc3NPd25QdHI8Q0NMYXllckltcGw+KTsKICAgICBQYXNzT3du
UHRyPENDTGF5ZXJJbXBsPiByZWxlYXNlUm9vdExheWVyKCkgeyByZXR1cm4gbV9yb290TGF5ZXJJ
bXBsLnJlbGVhc2UoKTsgfQogCkBAIC0xMDYsMTcgKzExNCwxMiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRTb3VyY2VGcmFtZU51bWJlcihpbnQgZnJhbWVOdW1iZXIpIHsgbV9zb3VyY2VGcmFtZU51
bWJlciA9IGZyYW1lTnVtYmVyOyB9CiAKICAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBJ
bnRTaXplJik7Ci0gICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKCkgY29uc3QgeyByZXR1
cm4gbV92aWV3cG9ydFNpemU7IH0KIAogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGlt
aXRzKGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2Nh
bGUpOwogICAgIGZsb2F0IHBhZ2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxlOyB9
CiAKLSAgICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0
dGluZ3M7IH0KLQogICAgIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gcHJvY2Vzc1Nj
cm9sbERlbHRhcygpOwogCi0gICAgLy8gV2hlcmUgcG9zc2libGUsIHJlZHJhd3MgYXJlIHNjaXNz
b3JlZCB0byBhIGRhbWFnZSByZWdpb24gY2FsY3VsYXRlZCBmcm9tIGNoYW5nZXMgdG8KLSAgICAv
LyBsYXllciBwcm9wZXJ0aWVzLiBUaGlzIGZ1bmN0aW9uIG92ZXJyaWRlcyB0aGUgZGFtYWdlIHJl
Z2lvbiBmb3IgdGhlIG5leHQgZHJhdyBjeWNsZS4KICAgICB2b2lkIHNldEZ1bGxSb290TGF5ZXJE
YW1hZ2UoKTsKIAogICAgIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6
ZSYgdHJhZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1
cmF0aW9uU2VjKTsKQEAgLTEyNCw5ICsxMjcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc0Fu
aW1hdGVMYXllcnMoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQW5pbWF0ZUxheWVyczsgfQogICAg
IHZvaWQgc2V0TmVlZHNBbmltYXRlTGF5ZXJzKCkgeyBtX25lZWRzQW5pbWF0ZUxheWVycyA9IHRy
dWU7IH0KIAotICAgIC8vIE5vdGlmaWVzIHRoZSBsYXllciB0cmVlIHRoYXQgdGhlIGNvbnRleHQg
d2FzIGxvc3QgYW5kIHN1Y2Nlc3NmdWxseSByZXN0b3JlZC4KLSAgICB2b2lkIHNlbmRDb250ZXh0
TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uKCk7Ci0KIHByb3RlY3RlZDoKICAgICBDQ0xheWVy
VHJlZUhvc3RJbXBsKGNvbnN0IENDU2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50
Kik7CiAKQEAgLTE1NSw2ICsxNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgb3B0aW1pemVSZW5k
ZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYpOwogICAgIHZvaWQgYW5pbWF0ZUxheWVyc1JlY3Vy
c2l2ZShDQ0xheWVySW1wbCosIGRvdWJsZSBmcmFtZUJlZ2luVGltZVNlY3MsIENDQW5pbWF0aW9u
RXZlbnRzVmVjdG9yJiwgYm9vbCYgZGlkQW5pbWF0ZSwgYm9vbCYgbmVlZHNBbmltYXRlTGF5ZXJz
KTsKICAgICBJbnRTaXplIGNvbnRlbnRTaXplKCkgY29uc3Q7CisgICAgLy8gTm90aWZpZXMgdGhl
IGxheWVyIHRyZWUgdGhhdCB0aGUgY29udGV4dCB3YXMgbG9zdCBhbmQgc3VjY2Vzc2Z1bGx5IHJl
c3RvcmVkLgogICAgIHZvaWQgc2VuZENvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25S
ZWN1cnNpdmUoQ0NMYXllckltcGwqKTsKIAogICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21p
dW0+IG1fbGF5ZXJSZW5kZXJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA4NTgwNDY3
ZjAyMzAzMmMxNDUyMjEyZjU2NTYyZTA2MTg1MWQ5NzQyLi42MzNmMjFkNDdiOTMxY2NhODQ3ODU0
MjZhNzFmNGY4ZDNiNmU0NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBAIC04NiwxMCAr
ODYsMTkgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6ZGlkU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpCiAgICAg
bV9mcmFtZVJhdGVDb250cm9sbGVyLT5kaWRGaW5pc2hGcmFtZSgpOwogfQogCi12b2lkIENDU2No
ZWR1bGVyOjpkaWRTd2FwQnVmZmVyc0Fib3J0KCkKK3ZvaWQgQ0NTY2hlZHVsZXI6OmRpZExvc2VD
b250ZXh0KCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmRpZFN3YXBCdWZmZXJz
QWJvcnQiLCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmRpZExvc2VD
b250ZXh0IiwgdGhpcywgMCk7CiAgICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5kaWRBYm9ydEFs
bFBlbmRpbmdGcmFtZXMoKTsKKyAgICBtX3N0YXRlTWFjaGluZS5kaWRMb3NlQ29udGV4dCgpOwor
ICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9CisKK3ZvaWQgQ0NTY2hlZHVsZXI6OmRp
ZFJlY3JlYXRlQ29udGV4dCgpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpkaWRS
ZWNyZWF0ZUNvbnRleHQiLCB0aGlzLCAwKTsKKyAgICBtX3N0YXRlTWFjaGluZS5kaWRSZWNyZWF0
ZUNvbnRleHQoKTsKKyAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogfQogCiB2b2lkIEND
U2NoZWR1bGVyOjpiZWdpbkZyYW1lKCkKQEAgLTE1MSw2ICsxNjAsOSBAQCB2b2lkIENDU2NoZWR1
bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpCiAgICAgICAgICAgICBtX2NsaWVudC0+c2No
ZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKTsKICAgICAgICAgICAgIG1fZnJhbWVSYXRlQ29udHJv
bGxlci0+ZGlkQmVnaW5GcmFtZSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT046
CisgICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVh
dGlvbigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChhY3Rp
b24gIT0gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyLmgKaW5kZXggNzMxMDU4MWIxMWI1ZmRmM2Y4ODk3ZmFjZjZjNmY5MTk0YzJlMmNhMS4u
ZjhiYTIxZjk5ZjI0YzVhOWNlMDdkMTZiYTIzNTE1NjQzOWQwZWU3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlci5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXAoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFj
dGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
ZEFjdGlvbkNvbW1pdCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVn
aW5Db250ZXh0UmVjcmVhdGlvbigpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkND
U2NoZWR1bGVyQ2xpZW50KCkgeyB9CkBAIC03MSw3ICs3Miw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0TWF4RnJhbWVzUGVuZGluZyhpbnQpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnNDb21w
bGV0ZSgpOwotICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnNBYm9ydCgpOworCisgICAgdm9pZCBkaWRM
b3NlQ29udGV4dCgpOworICAgIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KCk7CiAKICAgICBib29s
IGNvbW1pdFBlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFjaGluZS5jb21taXRQZW5k
aW5nKCk7IH0KICAgICBib29sIHJlZHJhd1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
TWFjaGluZS5yZWRyYXdQZW5kaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmNwcAppbmRleCBkMWFhNWNjZGM3NDRjOGZjYjQwMzBiMGZiYzU2NTgzMzRm
NjVkZWJmLi5jYWQ1ZDhkMWEzYjk0NmUxZWYzZDRmMzk5YTM5ZjVjNzQyYzFmMDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCkBAIC0zOCwyNyArMzgs
NTggQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKCkK
ICAgICAsIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpCiAgICAgLCBtX2luc2lk
ZVZTeW5jKGZhbHNlKQogICAgICwgbV92aXNpYmxlKGZhbHNlKQotICAgICwgbV9jYW5EcmF3KHRy
dWUpIHsgfQorICAgICwgbV9jYW5EcmF3KHRydWUpCisgICAgLCBtX2NvbnRleHRTdGF0ZShDT05U
RVhUX0FDVElWRSkgeyB9CisKK2Jvb2wgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Omhhc0RyYXdu
VGhpc0ZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jdXJyZW50RnJhbWVOdW1iZXIgPT0g
bV9sYXN0RnJhbWVOdW1iZXJXaGVyZURyYXdXYXNDYWxsZWQ7Cit9CisKK2Jvb2wgQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OnNob3VsZERyYXcoKSBjb25zdAoreworICAgIGlmIChtX25lZWRzRm9y
Y2VkUmVkcmF3KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghbV9uZWVkc1JlZHJh
dykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9pbnNpZGVWU3luYykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV92aXNpYmxlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKGhhc0RyYXduVGhpc0ZyYW1lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIW1fY2FuRHJhdykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2Nv
bnRleHRTdGF0ZSAhPSBDT05URVhUX0FDVElWRSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB0cnVlOworfQogCiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29uc3QKIHsKLSAgICBib29sIGNhbkRy
YXcgPSBtX2N1cnJlbnRGcmFtZU51bWJlciAhPSBtX2xhc3RGcmFtZU51bWJlcldoZXJlRHJhd1dh
c0NhbGxlZDsKLSAgICBib29sIHNob3VsZERyYXcgPSAobV9uZWVkc1JlZHJhdyAmJiBtX2luc2lk
ZVZTeW5jICYmIG1fdmlzaWJsZSAmJiBjYW5EcmF3ICYmIG1fY2FuRHJhdykgfHwgbV9uZWVkc0Zv
cmNlZFJlZHJhdzsKKwogICAgIHN3aXRjaCAobV9jb21taXRTdGF0ZSkgewogICAgIGNhc2UgQ09N
TUlUX1NUQVRFX0lETEU6Ci0gICAgICAgIGlmIChzaG91bGREcmF3KQorICAgICAgICBpZiAobV9j
b250ZXh0U3RhdGUgIT0gQ09OVEVYVF9BQ1RJVkUgJiYgbV9uZWVkc0ZvcmNlZFJlZHJhdykKKyAg
ICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAgaWYgKG1fY29udGV4dFN0YXRl
ID09IENPTlRFWFRfTE9TVCkKKyAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fQ09OVEVY
VF9SRUNSRUFUSU9OOworICAgICAgICBpZiAobV9jb250ZXh0U3RhdGUgPT0gQ09OVEVYVF9SRUNS
RUFUSU5HKQorICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOworICAgICAgICBpZiAoc2hv
dWxkRHJhdygpKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwogICAgICAgICBpZiAo
bV9uZWVkc0NvbW1pdCAmJiBtX3Zpc2libGUpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JF
R0lOX0ZSQU1FOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKICAgICBjYXNlIENPTU1J
VF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUzoKLSAgICAgICAgaWYgKHNob3VsZERyYXcpCisgICAg
ICAgIGlmIChzaG91bGREcmF3KCkpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAg
ICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUzoKLSAgICAgICAgaWYgKHNob3VsZERyYXcpCisgICAgICAgIGlmIChzaG91
bGREcmF3KCkpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAgICAgICAgIGlmICgh
bV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZykKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05f
QkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOwpAQCAtNjgsNyArOTksNyBAQCBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9u
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIEFDVElPTl9DT01NSVQ7CiAKICAgICBjYXNlIENPTU1J
VF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXOgotICAgICAgICBpZiAoc2hvdWxkRHJhdykK
KyAgICAgICAgaWYgKHNob3VsZERyYXcoKSB8fCBtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX0xP
U1QpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAgICAgICAgIC8vIENPTU1JVF9T
VEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXIHdhbnRzIHRvIGVuZm9yY2UgYSBkcmF3LiBJZiBt
X2NhbkRyYXcgaXMgZmFsc2UsCiAgICAgICAgIC8vIHByb2NlZWQgdG8gdGhlIG5leHQgc3RlcCAo
c2ltaWxhciBhcyBpbiBDT01NSVRfU1RBVEVfSURMRSkuCkBAIC0xMTUsMTIgKzE0NiwxOCBAQCB2
b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZShBY3Rpb24gYWN0aW9uKQog
ICAgICAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9JRExFOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgQUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVB
VElPTjoKKyAgICAgICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0lETEUp
OworICAgICAgICBBU1NFUlQobV9jb250ZXh0U3RhdGUgPT0gQ09OVEVYVF9MT1NUKTsKKyAgICAg
ICAgbV9jb250ZXh0U3RhdGUgPSBDT05URVhUX1JFQ1JFQVRJTkc7CisgICAgICAgIHJldHVybjsK
ICAgICB9CiB9CiAKIGJvb2wgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnZzeW5jQ2FsbGJhY2tO
ZWVkZWQoKSBjb25zdAogewotICAgIGlmICghbV92aXNpYmxlKSB7CisgICAgaWYgKCFtX3Zpc2li
bGUgfHwgbV9jb250ZXh0U3RhdGUgIT0gQ09OVEVYVF9BQ1RJVkUpIHsKICAgICAgICAgaWYgKG1f
bmVlZHNGb3JjZWRSZWRyYXcpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMTc2LDQg
KzIxMywxOCBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpiZWdpblVwZGF0ZU1vcmVS
ZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKQogICAgICAgICBtX2NvbW1pdFN0YXRl
ID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIAordm9pZCBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6ZGlkTG9zZUNvbnRleHQoKQoreworICAgIGlmIChtX2NvbnRleHRTdGF0ZSA9
PSBDT05URVhUX0xPU1QgfHwgbV9jb250ZXh0U3RhdGUgPT0gQ09OVEVYVF9SRUNSRUFUSU5HKQor
ICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0U3RhdGUgPSBDT05URVhUX0xPU1Q7Cit9CisK
K3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmRpZFJlY3JlYXRlQ29udGV4dCgpCit7Cisg
ICAgQVNTRVJUKG1fY29udGV4dFN0YXRlID09IENPTlRFWFRfUkVDUkVBVElORyk7CisgICAgbV9j
b250ZXh0U3RhdGUgPSBDT05URVhUX0FDVElWRTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQor
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAppbmRleCA3ZGU3
MTg4NDZlN2UzMTc0OGFjNTY5ODZmYmZjMjJjODc1MTQ3N2IzLi4yMmZjZGY0MjI0OWZkYTMxZWQ3
MTMxM2MyODkxODFjOTRlZDkyOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmgKQEAgLTUxLDYgKzUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgQ09NTUlUX1NU
QVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsCiAgICAgfTsKIAorICAgIGVudW0gQ29udGV4dFN0
YXRlIHsKKyAgICAgICAgQ09OVEVYVF9BQ1RJVkUsCisgICAgICAgIENPTlRFWFRfTE9TVCwKKyAg
ICAgICAgQ09OVEVYVF9SRUNSRUFUSU5HLAorICAgIH07CiAgICAgYm9vbCBjb21taXRQZW5kaW5n
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2NvbW1pdFN0YXRlICE9IENPTU1JVF9T
VEFURV9JRExFOwpAQCAtNjQsNiArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIEFDVElPTl9CRUdJ
Tl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsCiAgICAgICAgIEFDVElPTl9DT01NSVQsCiAgICAgICAg
IEFDVElPTl9EUkFXLAorICAgICAgICBBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9OCiAg
ICAgfTsKICAgICBBY3Rpb24gbmV4dEFjdGlvbigpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU3Rh
dGUoQWN0aW9uKTsKQEAgLTEwNyw3ICsxMTMsMTMgQEAgcHVibGljOgogICAgIC8vIHdoZW4gc3Vj
aCBiZWhhdmlvciB3b3VsZCBiZSB1bmRlc2lyYWJsZS4KICAgICB2b2lkIHNldENhbkRyYXcoYm9v
bCBjYW4pIHsgbV9jYW5EcmF3ID0gY2FuOyB9CiAKKyAgICB2b2lkIGRpZExvc2VDb250ZXh0KCk7
CisgICAgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoKTsKKwogcHJvdGVjdGVkOgorICAgIGJvb2wg
c2hvdWxkRHJhdygpIGNvbnN0OworICAgIGJvb2wgaGFzRHJhd25UaGlzRnJhbWUoKSBjb25zdDsK
KwogICAgIENvbW1pdFN0YXRlIG1fY29tbWl0U3RhdGU7CiAKICAgICBpbnQgbV9jdXJyZW50RnJh
bWVOdW1iZXI7CkBAIC0xMTksNiArMTMxLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pbnNp
ZGVWU3luYzsKICAgICBib29sIG1fdmlzaWJsZTsKICAgICBib29sIG1fY2FuRHJhdzsKKyAgICBD
b250ZXh0U3RhdGUgbV9jb250ZXh0U3RhdGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDBhZjA3Y2JkYmZkMjk1NzgzOGZlYzE0NGIyNmE2ZGE5
YjNkZmM4ZGYuLjA1NGRiMDZhYWEzNDliNDYxZmFhMjE4MDJiZTk5NzFhMWRmNzBlOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0xNjEsNyArMTYxLDYgQEAg
Ym9vbCBDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQoKQogICAgICAgICBpbml0
aWFsaXplZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNv
bnRleHQpOwogICAgICAgICBpZiAoaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAgIG1fbGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllc0Zvck1haW5UaHJlYWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5s
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7Ci0gICAgICAgICAgICBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5zZW5kQ29udGV4dExvc3RBbmRSZXN0b3JlZE5vdGlmaWNhdGlvbigpOwogICAgICAgICB9
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggOGUxODYw
YzI2MDY4YTcyMzQ4NzQ0ZTE1YTA2MmVmZGJkNTUyMjE0NS4uMmQyOGQwMTY5ZDMwODhiOGMzMmFi
ZGNlNzNiM2Q3NDFjNWY0MmExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWF4UGFydGlh
bFRleHR1cmVVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKTsgfQogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1l
bnRhdGlvbgorICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dE9uSW1wbFRocmVhZCgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3
T25JbXBsVGhyZWFkKCkgeyBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0KCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSB7IG1fbGF5ZXJUcmVl
SG9zdC0+c2V0TmVlZHNDb21taXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRl
eCA5MDVhMDk0YzA3YTYxMWUxMjc3Y2IxNmVhMzdiMjM1ZDZiZTY1M2UxLi4yZGMyZjQ5ZjA2MjMy
YTUxZDQ5OTdmYTM4NTkyYzc0NjIxNzYzZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cApAQCAtNTksNiArNTksNyBAQCBQYXNzT3duUHRyPENDUHJveHk+IENDVGhyZWFkUHJveHk6OmNy
ZWF0ZShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiBDQ1RocmVhZFByb3h5OjpDQ1Ro
cmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKICAgICA6IG1fYW5pbWF0
ZVJlcXVlc3RlZChmYWxzZSkKICAgICAsIG1fY29tbWl0UmVxdWVzdGVkKGZhbHNlKQorICAgICwg
bV9jb250ZXh0TG9zdChmYWxzZSkKICAgICAsIG1fbGF5ZXJUcmVlSG9zdChsYXllclRyZWVIb3N0
KQogICAgICwgbV9jb21wb3NpdG9ySWRlbnRpZmllcigtMSkKICAgICAsIG1fbGF5ZXJSZW5kZXJl
ckluaXRpYWxpemVkKGZhbHNlKQpAQCAtMTkzLDkgKzE5NCw5IEBAIGJvb2wgQ0NUaHJlYWRQcm94
eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKQogICAgIGJvb2wgaW5pdGlhbGl6ZVN1Y2NlZWRl
ZCA9IGZhbHNlOwogICAgIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzOwog
ICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRo
aXMsICZDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3MoJmNvbXBsZXRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmaW5pdGlhbGl6ZVN1Y2NlZWRlZCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKCZjYXBhYmlsaXRpZXMpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlv
biksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmaW5pdGlhbGl6ZVN1Y2NlZWRlZCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9z
c1RocmVhZEFjY2VzcygmY2FwYWJpbGl0aWVzKSkpOwogICAgIGNvbXBsZXRpb24ud2FpdCgpOwog
CiAgICAgaWYgKGluaXRpYWxpemVTdWNjZWVkZWQpIHsKQEAgLTIwNyw4ICsyMDgsMzUgQEAgYm9v
bCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAKIGJvb2wgQ0NUaHJl
YWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5
OjpyZWNyZWF0ZUNvbnRleHQiKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
Ly8gVHJ5IHRvIGNyZWF0ZSB0aGUgY29udGV4dC4KKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUNvbnRleHQoKTsKKyAgICBpZiAo
IWNvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoY29udGV4dC0+aGFz
T25lUmVmKCkpOworCisgICAgLy8gTGVhayB0aGUgY29udGV4dCBwb2ludGVyIHNvIHdlIGNhbiB0
cmFuc2ZlciBvd25lcnNoaXAgb2YgaXQgdG8gdGhlIG90aGVyIHNpZGUuLi4KKyAgICBHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dFB0ciA9IGNvbnRleHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAg
ICBBU1NFUlQoY29udGV4dFB0ci0+aGFzT25lUmVmKCkpOworCisgICAgLy8gTWFrZSBhIGJsb2Nr
aW5nIGNhbGwgdG8gcmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkLiBUaGUgcmVzdWx0cyBvZiB0
aGF0CisgICAgLy8gY2FsbCBhcmUgcHVzaGVkIGludG8gdGhlIHJlY3JlYXRlU3VjY2VlZGVkIGFu
ZCBjYXBhYmlsaXRpZXMgbG9jYWwKKyAgICAvLyB2YXJpYWJsZXMuCisgICAgQ0NDb21wbGV0aW9u
RXZlbnQgY29tcGxldGlvbjsKKyAgICBib29sIHJlY3JlYXRlU3VjY2VlZGVkID0gZmFsc2U7Cisg
ICAgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXM7CisgICAgQ0NQcm94eTo6
aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFk
UHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KCZjb21wbGV0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGNvbnRleHRQdHIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3MoJnJlY3JlYXRlU3VjY2VlZGVkKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KCZjYXBhYmlsaXRpZXMpKSk7CisgICAgY29tcGxldGlvbi53YWl0KCk7CisKKyAgICBpZiAocmVj
cmVhdGVTdWNjZWVkZWQpCisgICAgICAgIG1fbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllc01haW5U
aHJlYWRDb3B5ID0gY2FwYWJpbGl0aWVzOworICAgIHJldHVybiByZWNyZWF0ZVN1Y2NlZWRlZDsK
IH0KIAogaW50IENDVGhyZWFkUHJveHk6OmNvbXBvc2l0b3JJZGVudGlmaWVyKCkgY29uc3QKQEAg
LTIyNSw3ICsyNTMsNyBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ1RocmVh
ZFByb3h5OjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29ucwogCiB2b2lkIENDVGhyZWFk
UHJveHk6Omxvc2VDb250ZXh0KCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBD
Q1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAm
Q0NUaHJlYWRQcm94eTo6ZGlkTG9zZUNvbnRleHRPbkltcGxUaHJlYWQpKTsKIH0KIAogdm9pZCBD
Q1RocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGUoKQpAQCAtMjUwLDYgKzI3OCwxMyBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0KCkKICAgICBDQ1Byb3h5OjppbXBsVGhyZWFk
KCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0
TmVlZHNDb21taXRPbkltcGxUaHJlYWQpKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5OjpkaWRM
b3NlQ29udGV4dE9uSW1wbFRocmVhZCgpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsK
KyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OmRpZExvc2VDb250ZXh0T25J
bXBsVGhyZWFkIik7CisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmRpZExvc2VDb250ZXh0
KCk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6b25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBs
VGhyZWFkKCkKIHsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwpAQCAtNTE3LDYgKzU1Miwx
MiBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCiAgICAgbV9j
b21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSAwOwogfQogCit2b2lkIENDVGhyZWFk
UHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKQoreworICAgIEFT
U0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNy
ZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5Db250ZXh0UmVjcmVh
dGlvbikpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRT
d2FwKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXAiLCB0aGlzLCAwKTsKQEAgLTU0MSwxMCArNTgyLDYgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCiAKICAgICBtX2xheWVyVHJlZUhv
c3RJbXBsLT5zd2FwQnVmZmVycygpOwogCi0gICAgLy8gRklYTUU6IGhhbmRsZSBjYXNlIHdoZXJl
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmlzQ29udGV4dExvc3QuCi0gICAgLy8gRklYTUU6IHBhc3Mg
ZGlkU3dhcEJ1ZmZlcnNBYm9ydCBpZiBtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRleHRMb3N0
LgotICAgIEFTU0VSVCghbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpKTsKLQog
ICAgIC8vIFByb2Nlc3MgYW55IGZpbmlzaCByZXF1ZXN0CiAgICAgaWYgKG1fZmluaXNoQWxsUmVu
ZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKSB7CiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmZpbmlzaEFsbFJlbmRlcmluZygpOwpAQCAtNTc3LDEyICs2MTQsMzQgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkKIAogdm9pZCBDQ1RocmVh
ZFByb3h5OjpzZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1Zl
Y3Rvcj4gZXZlbnRzKQogeworICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6
c2V0QW5pbWF0aW9uRXZlbnRzIik7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBp
ZiAoIW1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0QW5pbWF0aW9uRXZlbnRzKGV2ZW50cyk7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6
YmVnaW5Db250ZXh0UmVjcmVhdGlvbigpCit7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1Ro
cmVhZFByb3h5OjpiZWdpbkNvbnRleHRSZWNyZWF0aW9uIik7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoIW1fY29udGV4dFJlY3JlYXRpb25UaW1lcik7CisgICAgbV9j
b250ZXh0UmVjcmVhdGlvblRpbWVyID0gQ29udGV4dFJlY3JlYXRpb25UaW1lcjo6Y3JlYXRlKHRo
aXMpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGlkTG9zZUNvbnRleHQoKTsKKyAgICBtX2NvbnRl
eHRSZWNyZWF0aW9uVGltZXItPnN0YXJ0T25lU2hvdChDb250ZXh0UmVjcmVhdGlvblRpbWVyOjpS
ZWNyZWF0aW9uVGlja1JhdGUpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnRyeVRvUmVjcmVh
dGVDb250ZXh0KCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCht
X2xheWVyVHJlZUhvc3QpOworICAgIENDTGF5ZXJUcmVlSG9zdDo6UmVjcmVhdGVSZXN1bHQgcmVz
dWx0ID0gbV9sYXllclRyZWVIb3N0LT5yZWNyZWF0ZUNvbnRleHQoKTsKKyAgICBpZiAocmVzdWx0
ID09IENDTGF5ZXJUcmVlSG9zdDo6UkVDUkVBVEVfRkFJTEVEX0JVVF9UUllfQUdBSU4pCisgICAg
ICAgIG1fY29udGV4dFJlY3JlYXRpb25UaW1lci0+c3RhcnRPbmVTaG90KENvbnRleHRSZWNyZWF0
aW9uVGltZXI6OlJlY3JlYXRpb25UaWNrUmF0ZSk7CisgICAgZWxzZSBpZiAocmVzdWx0ID09IEND
TGF5ZXJUcmVlSG9zdDo6UkVDUkVBVEVfU1VDQ0VFREVEKQorICAgICAgICBtX2NvbnRleHRSZWNy
ZWF0aW9uVGltZXIuY2xlYXIoKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXpl
SW1wbE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQiLCB0
aGlzLCAwKTsKQEAgLTY0Myw0ICs3MDIsMTcgQEAgc2l6ZV90IENDVGhyZWFkUHJveHk6Om1heFBh
cnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIHRleHR1cmVVcGRhdGVzUGVy
RnJhbWU7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dFB0ciwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMqIGNhcGFiaWxpdGllcykKK3sKKyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJv
eHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCIpOworICAgIEFTU0VSVChpc0ltcGxUaHJl
YWQoKSk7CisgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBs
VGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsK
KyAgICAqcmVjcmVhdGVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcihhZG9wdFJlZihjb250ZXh0UHRyKSk7CisgICAgaWYgKCpyZWNyZWF0ZVN1
Y2NlZWRlZCkgeworICAgICAgICAqY2FwYWJpbGl0aWVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOworICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRo
cmVhZC0+ZGlkUmVjcmVhdGVDb250ZXh0KCk7CisgICAgfQorICAgIGNvbXBsZXRpb24tPnNpZ25h
bCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
aW5kZXggNTdiYTU5ODc0ODg4NjllOTMyODBlZTQ1NTMwZjhiODk3NTgyYmIzNy4uYWM3ZjBiYjRl
NzEyZGViODRiZDE5MDExY2ZkM2UwMDNkYThkZmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJj
Yy9DQ1NjaGVkdWxlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCisjaW5jbHVkZSAiY2Mv
Q0NUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNjksNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWF4UGFydGlh
bFRleHR1cmVVcGRhdGVzKCkgY29uc3Q7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xp
ZW50IGltcGxlbWVudGF0aW9uCisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0T25JbXBs
VGhyZWFkKCk7CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRo
cmVhZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwpAQCAtODEsNiAr
ODMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRT
d2FwKCk7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJj
ZXMoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCk7CisgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwpAQCAt
OTAsNiArOTMsMjQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgp
OwogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwogICAgIHZvaWQgc2V0QW5pbWF0
aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+KTsKKyAgICB2b2lk
IGJlZ2luQ29udGV4dFJlY3JlYXRpb24oKTsKKyAgICB2b2lkIHRyeVRvUmVjcmVhdGVDb250ZXh0
KCk7CisgICAgY2xhc3MgQ29udGV4dFJlY3JlYXRpb25UaW1lciA6IHB1YmxpYyBDQ1RpbWVyLCBD
Q1RpbWVyQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPENv
bnRleHRSZWNyZWF0aW9uVGltZXI+IGNyZWF0ZShDQ1RocmVhZFByb3h5KiBwcm94eSkgeyByZXR1
cm4gYWRvcHRQdHIobmV3IENvbnRleHRSZWNyZWF0aW9uVGltZXIocHJveHkpKTsgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBvblRpbWVyRmlyZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBt
X3Byb3h5LT50cnlUb1JlY3JlYXRlQ29udGV4dCgpOworICAgICAgICB9CisKKyAgICAgICAgZW51
bSBSZWNyZWF0aW9uIHsgUmVjcmVhdGlvblRpY2tSYXRlID0gMzAgfTsKKworICAgIHByaXZhdGU6
CisgICAgICAgIENvbnRleHRSZWNyZWF0aW9uVGltZXIoQ0NUaHJlYWRQcm94eSogcHJveHkpIDog
Q0NUaW1lcihDQ1Byb3h5OjptYWluVGhyZWFkKCksIHRoaXMpLCBtX3Byb3h5KHByb3h5KSB7IH0K
KworICAgICAgICBDQ1RocmVhZFByb3h5KiBtX3Byb3h5OworICAgIH07CiAKICAgICAvLyBDYWxs
ZWQgb24gaW1wbCB0aHJlYWQKICAgICBzdHJ1Y3QgUmVhZGJhY2tSZXF1ZXN0IHsKQEAgLTExMCwx
MCArMTMxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWaXNpYmxlT25JbXBsVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50KiwgYm9vbCB2aXNpYmxlKTsKICAgICB2b2lkIGxheWVyVHJlZUhvc3RD
bG9zZWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHNldEZ1bGxS
b290TGF5ZXJEYW1hZ2VPbkltcGxUaHJlYWQoKTsKKyAgICB2b2lkIHJlY3JlYXRlQ29udGV4dE9u
SW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIEdyYXBoaWNzQ29udGV4dDNEKiwgYm9vbCog
cmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsKIAogICAgIC8v
IEFjY2Vzc2VkIG9uIG1haW4gdGhyZWFkIG9ubHkuCiAgICAgYm9vbCBtX2FuaW1hdGVSZXF1ZXN0
ZWQ7CiAgICAgYm9vbCBtX2NvbW1pdFJlcXVlc3RlZDsKKyAgICBib29sIG1fY29udGV4dExvc3Q7
CisgICAgT3duUHRyPENvbnRleHRSZWNyZWF0aW9uVGltZXI+IG1fY29udGV4dFJlY3JlYXRpb25U
aW1lcjsKICAgICBDQ0xheWVyVHJlZUhvc3QqIG1fbGF5ZXJUcmVlSG9zdDsKICAgICBpbnQgbV9j
b21wb3NpdG9ySWRlbnRpZmllcjsKICAgICBib29sIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCAzZGJmMGY0ZDM4NjVlNTFk
OTQyNmY1ODk1NWM5ZTRhYjEwMzNiYzUwLi5mZDUzZTQxZDM3MjUxYzczNDQ5ZjZlNDE5ZTlmMzgw
OTczOTZiYzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1
ZGUgImNjL0NDVmlkZW9EcmF3UXVhZC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcAppbmRleCBlZDA1MmE5YzNkODY5YzdhZTkyNzFmNjExYTM5YzQ1YWJh
OGJiMjk3Li42N2JmOTUzZTQ0YTAxOGY5MTVlOTgxZmVjNDMwMDExZDMxM2RjMjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1faG9zdEltcGwg
PSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOwogICAgIH0KIAor
ICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dE9uSW1wbFRocmVhZCgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSB7IG1fZGlkUmVxdWVzdFJl
ZHJhdyA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJl
YWQoKSB7IG1fZGlkUmVxdWVzdENvbW1pdCA9IHRydWU7IH0KQEAgLTkwNSw3ICs5MDYsNyBAQCBU
RVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGNvbnRleHRMb3N0QW5kUmVzdG9yZWROb3Rp
ZmljYXRpb25TZW50VG9BbGxMYXllcgogICAgIEVYUEVDVF9GQUxTRShsYXllcjEtPmRpZExvc2VB
bmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dENhbGxlZCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobGF5
ZXIyLT5kaWRMb3NlQW5kUmVjcmVhdGVHcmFwaGljc0NvbnRleHRDYWxsZWQoKSk7CiAKLSAgICBt
X2hvc3RJbXBsLT5zZW5kQ29udGV4dExvc3RBbmRSZXN0b3JlZE5vdGlmaWNhdGlvbigpOworICAg
IG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CiAK
ICAgICBFWFBFQ1RfVFJVRShyb290LT5kaWRMb3NlQW5kUmVjcmVhdGVHcmFwaGljc0NvbnRleHRD
YWxsZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5kaWRMb3NlQW5kUmVjcmVhdGVHcmFw
aGljc0NvbnRleHRDYWxsZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBkN2RkMDU1OTViZmU1MjZhNTA3ZThi
NzJlNDhkYTdjMTg2NzYzNDk1Li4wNjJhNjk5YzM2MTU5NzI3NzA0MGI0OWExNjIwNzMxYzhiZjIz
ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAKQEAgLTY5LDYgKzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmLCBmbG9hdCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRl
Q29udGV4dChib29sIHN1Y2NlZGVkKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5k
RHJhd0ZyYW1lKCkgeyB9CiAKICAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBDQ0xheWVyQW5pbWF0
aW9uRGVsZWdhdGUKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChkb3Vi
bGUgdGltZSkgeyB9CkBAIC0yMzksMTQgKzI0MSwxNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkKICAgICB7CisgICAgICAgIG1fdGVzdEhvb2tz
LT5kaWRDb21taXRBbmREcmF3RnJhbWUoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tcGxldGVTd2FwQnVmZmVycygpCiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNyZWF0ZUNvbnRleHQoYm9vbCkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250
ZXh0KGJvb2wgc3VjY2VlZGVkKQogICAgIHsKKyAgICAgICAgbV90ZXN0SG9va3MtPmRpZFJlY3Jl
YXRlQ29udGV4dChzdWNjZWVkZWQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZUNvbXBvc2l0ZSgpCkBAIC0xOTA0LDQgKzE5MDgsNzIgQEAgcHVibGljOgogCiBTSU5HTEVfQU5E
X01VTFRJX1RIUkVBRF9URVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdE1hbnlTdXJmYWNlcykKIAor
Ly8gQSBsb3NlQ29udGV4dCgxKSBzaG91bGQgbGVhZCB0byBhIGRpZFJlY3JlYXRlQ29udGV4dCh0
cnVlKQorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNldFNpbmdsZUxvc3RDb250ZXh0IDogcHVi
bGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRPbmx5IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVy
VHJlZUhvc3RUZXN0U2V0U2luZ2xlTG9zdENvbnRleHQoKQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIHBvc3RTZXROZWVkc0NvbW1p
dFRvTWFpblRocmVhZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmRE
cmF3RnJhbWUoKQorICAgIHsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5sb3NlQ29udGV4dCgx
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3Vj
Y2VlZGVkKQorICAgIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2VlZGVkKTsKKyAgICAgICAg
ZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsK
KyAgICB9Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldFNpbmdsZUxvc3RDb250
ZXh0LCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0VGhyZWFkZWQoKTsKK30KKworLy8g
QSBsb3NlQ29udGV4dCgxMCkgc2hvdWxkIGxlYWQgdG8gYSBkaWRSZWNyZWF0ZUNvbnRleHQoZmFs
c2UpLCBhbmQKKy8vIGEgZmluaXNoQWxsUmVuZGVyaW5nKCkgc2hvdWxkIG5vdCBoYW5nLgorY2xh
c3MgQ0NMYXllclRyZWVIb3N0VGVzdFNldFJlcGVhdGVkTG9zdENvbnRleHQgOiBwdWJsaWMgQ0NM
YXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgeworcHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9z
dFRlc3RTZXRSZXBlYXRlZExvc3RDb250ZXh0KCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01h
aW5UaHJlYWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0Zy
YW1lKCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+bG9zZUNvbnRleHQoMTApOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZWVk
ZWQpCisgICAgeworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3VjY2VlZGVkKTsKKyAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAgICAgICAgZW5kVGVzdCgpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9Cit9Owor
CitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldFJlcGVhdGVkTG9zdENvbnRleHQsIHJ1bk11
bHRpVGhyZWFkKQoreworICAgIHJ1blRlc3RUaHJlYWRlZCgpOworfQorCiB9IC8vIG5hbWVzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCmluZGV4IDM5MDhmNDBhOTlhZTc1NzAzMWU5YWQ5MWI0
MjljNjJmYmI1MzYxNjguLjA4NTNlNWEzNjVkNDljMzZhNmYwMGRmODQzNTRlMWEwYTZiZmIyMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKQEAgLTYwNCw0ICs2MDQsMTc4IEBAIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0R29lc0ludmlzaWJsZU1pZENvbW1pdCkKICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOwogfQogCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVz
dENvbnRleHRMb3N0V2hlbkNvbXBsZXRlbHlJZGxlKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0
ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworCisgICAgc3RhdGUuZGlkTG9zZUNvbnRl
eHQoKTsKKworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JF
R0lOX0NPTlRFWFRfUkVDUkVBVElPTiwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51
cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gT25jZSBjb250ZXh0IHJl
Y3JlYXRpb24gYmVnaW5zLCBub3RoaW5nIHNob3VsZCBoYXBwZW4uCisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KworICAgIC8vIFJlY3JlYXRlIHRoZSBjb250ZXh0CisgICAgc3RhdGUuZGlkUmVjcmVhdGVDb250
ZXh0KCk7CisKKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGlzIHJlY3JlYXRlZCwgd2Ugc2hvdWxk
IGJlZ2luIGEgY29tbWl0CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRl
U3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoZW5JZGxlQW5kQ29tbWl0UmVxdWVzdGVkV2hpbGVS
ZWNyZWF0aW5nKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNp
YmxlKHRydWUpOworCisgICAgc3RhdGUuZGlkTG9zZUNvbnRleHQoKTsKKworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElP
Tiwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0
QWN0aW9uKCkpOworCisgICAgLy8gT25jZSBjb250ZXh0IHJlY3JlYXRpb24gYmVnaW5zLCBub3Ro
aW5nIHNob3VsZCBoYXBwZW4uCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFdoaWxlIGNvbnRl
eHQgaXMgcmVjcmVhdGluZywgY29tbWl0cyBzaG91bGRuJ3QgYmVnaW4uCisgICAgc3RhdGUuc2V0
TmVlZHNDb21taXQodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFJlY3JlYXRlIHRo
ZSBjb250ZXh0CisgICAgc3RhdGUuZGlkUmVjcmVhdGVDb250ZXh0KCk7CisKKyAgICAvLyBXaGVu
IHRoZSBjb250ZXh0IGlzIHJlY3JlYXRlZCwgd2Ugc2hvdWxkIGJlZ2luIGEgY29tbWl0CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlv
bigpKTsKKworICAgIC8vIE9uY2UgdGhlIGNvbnRleHQgaXMgcmVjcmVhdGVkLCB3aGV0aGVyIHdl
IGRyYXcgc2hvdWxkIGJlIGJhc2VkIG9uCisgICAgLy8gc2V0Q2FuRHJhdy4KKyAgICBzdGF0ZS5z
ZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFj
dGlvbigpKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
ICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CisgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwor
fQorCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hp
bGVDb21taXRJblByb2dyZXNzKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0
ZS5zZXRWaXNpYmxlKHRydWUpOworCisgICAgLy8gR2V0IGEgY29tbWl0IGluIGZsaWdodC4KKyAg
ICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAg
ICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gU2V0IGRh
bWFnZSBhbmQgZXhwZWN0IGEgZHJhdy4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsK
KyAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51
cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLmRpZExlYXZlVlN5bmMo
KTsKKworICAgIC8vIENhdXNlIGEgbG9zdCBjb250ZXh0IHdoaWxlIHRoZSBiZWdpbiBmcmFtZSBp
cyBpbiBmbGlnaHQuCisgICAgc3RhdGUuZGlkTG9zZUNvbnRleHQoKTsKKworICAgIC8vIEFzayBm
b3IgYW5vdGhlciBkcmF3LiBFeHBlY3Qgbm90aGluZyBoYXBwZW5zLgorICAgIHN0YXRlLnNldE5l
ZWRzUmVkcmF3KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBGaW5pc2ggdGhlIGZy
YW1lLCB1cGRhdGUgcmVzb3VyY2VzLCBhbmQgY29tbWl0LgorICAgIHN0YXRlLmJlZ2luRnJhbWVD
b21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBz
dGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cisg
ICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4
dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
CisgICAgLy8gRXhwZWN0IHRvIGJlIHRvbGQgdG8gYmVnaW4gY29udGV4dCByZWNyZWF0aW9uLCBp
bmRlcGVuZGVudCBvZiB2c3luYyBzdGF0ZQorICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9DT05URVhU
X1JFQ1JFQVRJT04sIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuZGlkTGVhdmVWU3lu
YygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lO
X0NPTlRFWFRfUkVDUkVBVElPTiwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoaWxlQ29tbWl0SW5Qcm9n
cmVzc0FuZEFub3RoZXJDb21taXRSZXF1ZXN0ZWQpCit7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRl
OworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBHZXQgYSBjb21taXQgaW4g
ZmxpZ2h0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAg
ICAvLyBTZXQgZGFtYWdlIGFuZCBleHBlY3QgYSBkcmF3LgorICAgIHN0YXRlLnNldE5lZWRzUmVk
cmF3KHRydWUpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuZGlk
TGVhdmVWU3luYygpOworCisgICAgLy8gQ2F1c2UgYSBsb3N0IGNvbnRleHQgd2hpbGUgdGhlIGJl
Z2luIGZyYW1lIGlzIGluIGZsaWdodC4KKyAgICBzdGF0ZS5kaWRMb3NlQ29udGV4dCgpOworCisg
ICAgLy8gQXNrIGZvciBhbm90aGVyIGRyYXcgYW5kIGFsc28gc2V0IG5lZWRzIGNvbW1pdC4gRXhw
ZWN0IG5vdGhpbmcgaGFwcGVucy4KKyAgICAvLyBTZXR0aW5nIGFub3RoZXIgY29tbWl0IHdpbGwg
cHV0IHVzIGludG8KKyAgICAvLyBDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVyBh
ZnRlciB3ZSBmaW5pc2ggdGhlIGZyYW1lIG9uIHRoZSBtYWluCisgICAgLy8gdGhyZWFkLgorICAg
IHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOworICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRy
dWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBGaW5pc2ggdGhlIGZyYW1lLCB1cGRhdGUg
cmVzb3VyY2VzLCBhbmQgY29tbWl0LgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVT
dGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuYmVn
aW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklS
U1RfRFJBVywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBFeHBlY3QgdG8g
YmUgdG9sZCB0byBiZWdpbiBjb250ZXh0IHJlY3JlYXRpb24sIGluZGVwZW5kZW50IG9mIHZzeW5j
IHN0YXRlCisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTiwgc3RhdGUu
bmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fQ09OVEVYVF9SRUNSRUFUSU9O
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworfQorCisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0RmluaXNoQWxsUmVuZGVyaW5nV2hpbGVDb250ZXh0TG9zdCkKK3sKKyAgICBT
dGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8v
IENhdXNlIGEgbG9zdCBjb250ZXh0IGxvc3QuCisgICAgc3RhdGUuZGlkTG9zZUNvbnRleHQoKTsK
KworICAgIC8vIEFzayBhIGZvcmNlZCByZWRyYXcgYW5kIHZlcmlmeSBpdCBvY3VycnMuCisgICAg
c3RhdGUuc2V0TmVlZHNGb3JjZWRSZWRyYXcodHJ1ZSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3lu
YygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOworCisgICAg
Ly8gQ2xlYXIgdGhlIGZvcmNlZCByZWRyYXcgYml0LgorICAgIHN0YXRlLnNldE5lZWRzRm9yY2Vk
UmVkcmF3KGZhbHNlKTsKKworICAgIC8vIEV4cGVjdCB0byBiZSB0b2xkIHRvIGJlZ2luIGNvbnRl
eHQgcmVjcmVhdGlvbiwgaW5kZXBlbmRlbnQgb2YgdnN5bmMgc3RhdGUKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT04s
IHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFj
dGlvbigpKTsKKworICAgIC8vIEFzayBhIGZvcmNlZCByZWRyYXcgYW5kIHZlcmlmeSBpdCBvY3Vy
cnMuCisgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRSZWRyYXcodHJ1ZSk7CisgICAgc3RhdGUuZGlk
RW50ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuZGlkTGVhdmVWU3luYygp
OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2No
ZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVy
VGVzdC5jcHAKaW5kZXggNDc1OTg3ZjEzYWM1ODlmNTA3MjRmMjM5ZWYwYWRkMzA1MjQ3NDA2Yy4u
NDVmNjFiOTBiZjU0ZTJlY2U3OGJkYTg4M2ZmYTBhMjZiZDU0MzZlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcApAQCAtNTksNiArNTks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
KCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIpOyB9
CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSB7
IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMi
KTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQoKSB7IG1fYWN0aW9u
cy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIpOyB9CisgICAgdmlydHVhbCB2b2lk
IHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKSB7IG1fYWN0aW9ucy5wdXNo
X2JhY2soInNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24iKTsgfQogCiBwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBtX2hhc01vcmVSZXNvdXJjZVVwZGF0ZXM7CkBAIC0xNTgsNiArMTU5
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1v
cmVSZXNvdXJjZXMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3Jl
YXRpb24oKSB7IH0KIAogcHJvdGVjdGVkOgogICAgIGludCBtX251bURyYXdzOwpAQCAtMjE1LDYg
KzIxNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRh
dGVNb3JlUmVzb3VyY2VzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNv
bW1pdCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRS
ZWNyZWF0aW9uKCkgeyB9CiAKIHByb3RlY3RlZDoKICAgICBpbnQgbV9udW1EcmF3czsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130471</attachid>
            <date>2012-03-06 16:40:26 -0800</date>
            <delta_ts>2012-03-06 20:58:29 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-80100-20120306164025.patch</filename>
            <type>text/plain</type>
            <size>58212</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRkYzMxYTk3ZGNhNjMx
N2MwNzIxNWUzYjFiY2VkNjE3Nzk1Nzk0OC4uZDI1NGMwMmU2OTI4MzQ4MDZkZjFmYzdkMzU5ZGNk
NDE3NjFjZWJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAzLTAxICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENDVGhyZWFk
UHJveHkgY29udGV4dCBsb3N0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwMTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9i
aW5zb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkTG9zZUNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlk
UmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpwcm9jZXNz
U2NoZWR1bGVkQWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXIuaDoKKyAgICAgICAgKENDU2NoZWR1bGVyQ2xpZW50KToKKyAgICAgICAg
KENDU2NoZWR1bGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp2c3luY0NhbGxiYWNrTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpkaWRMb3NlQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpkaWRSZWNyZWF0ZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAgICAgIChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZWNy
ZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bG9zZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVn
aW5Db250ZXh0UmVjcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkNvbnRleHRSZWNyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpsb3NlQ29udGV4dE9uSW1wbFRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
OgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisKIDIwMTItMDMtMDYgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBm
b3IgbWluaW1hbCBidWlsZCBhZnRlciByMTA5OTM5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBjODBkYmZjMzI5NjkxOTZiMGI5ZTdmZjdiMjNiY2ZkMDQ0MmE4YTg5Li4xZDFkOGIxN2My
NjE4Yjg3OTE0MTEwN2Y1NzFiYjBmZTBkMjAzNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAzLTAxICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENDVGhyZWFkUHJveHkgY29udGV4dCBsb3N0IHN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgw
MTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgKiB0
ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0ND
U2NoZWR1bGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVy
Q2xpZW50OjpzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKToKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdzo6
c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbik6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNldE5lZWRzQ29tbWl0SW5zaWRlRHJhdzo6c2NoZWR1
bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbik6CisKIDIwMTItMDMtMDYgIERhdmlkIEdy
b2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogQ2hlY2sg
V2ViQ29tbW9uV29ya2VyQ2xpZW50OjphbGxvd0luZGV4ZWREQiBiZWZvcmUgcHJvY2VlZGluZyBm
cm9tIGEgc2hhcmVkIHdvcmtlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
aW5kZXggMTQ0ODg5ZTk3YzlkMDI3NDQyNWRkNjIzNGZiOGY2NDIzZjhjYTk0Yy4uMzI0N2NiNTNm
ZjAxNjIyYzA5YjI4OGE5MjBkMGFlNTYwMTMwN2E4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCkBAIC0xNzUsMTggKzE3NSwxOCBAQCBwcml2YXRlOgogfTsKIAogCi1Q
YXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
cmVhdGUoQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQpCitQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGll
bnQsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCiB7Ci0gICAgT3duUHRy
PExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFB0cihuZXcgTGF5ZXJS
ZW5kZXJlckNocm9taXVtKG93bmVyLCBjb250ZXh0KSkpOworICAgIE93blB0cjxMYXllclJlbmRl
cmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJv
bWl1bShjbGllbnQsIGNvbnRleHQpKSk7CiAgICAgaWYgKCFsYXllclJlbmRlcmVyLT5pbml0aWFs
aXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGxheWVyUmVuZGVy
ZXIucmVsZWFzZSgpOwogfQogCi1MYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJD
aHJvbWl1bShDQ0xheWVyVHJlZUhvc3RJbXBsKiBvd25lciwKK0xheWVyUmVuZGVyZXJDaHJvbWl1
bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xp
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKLSAgICA6IG1fb3duZXIob3duZXIpCisg
ICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlKDApCiAg
ICAgLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQoMCkKICAgICAsIG1fY29udGV4dChjb250ZXh0
KQpAQCAtMTk2LDExICsxOTYsMzIgQEAgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRl
cmVyQ2hyb21pdW0oQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsCiB7CiB9CiAKK2NsYXNzIENv
bnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dDNEOjpDb250
ZXh0TG9zdENhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDb250ZXh0
TG9zdENhbGxiYWNrQWRhcHRlcj4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCog
Y2xpZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZXh0TG9zdENh
bGxiYWNrQWRhcHRlcihjbGllbnQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25Db250
ZXh0TG9zdCgpCisgICAgeworICAgICAgICBtX2NsaWVudC0+ZGlkTG9zZUNvbnRleHQoKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQ29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXIo
TGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQpCisgICAgICAgIDogbV9jbGllbnQo
Y2xpZW50KSB7IH0KKworICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogbV9jbGllbnQ7
Cit9OworCiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSgpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2soQ29udGV4dExvc3RD
YWxsYmFja0FkYXB0ZXI6OmNyZWF0ZShtX2NsaWVudCkpOworCiAjaWYgVVNFKFNLSUEpCiAgICAg
aWYgKHNldHRpbmdzKCkuYWNjZWxlcmF0ZVBhaW50aW5nICYmIGNvbnRleHRTdXBwb3J0c0FjY2Vs
ZXJhdGVkUGFpbnRpbmcobV9jb250ZXh0LmdldCgpKSkKICAgICAgICAgbV9jYXBhYmlsaXRpZXMu
dXNpbmdBY2NlbGVyYXRlZFBhaW50aW5nID0gdHJ1ZTsKQEAgLTMwNiwxMSArMzI3LDYgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIGlm
IChtX2NhcGFiaWxpdGllcy51c2luZ1NldFZpc2liaWxpdHkpIHsKICAgICAgICAgRXh0ZW5zaW9u
czNEQ2hyb21pdW0qIGV4dGVuc2lvbnMzRENocm9taXVtID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9u
czNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CiAgICAgICAgIGV4dGVu
c2lvbnMzRENocm9taXVtLT5zZXRWaXNpYmlsaXR5Q0hST01JVU0odmlzaWJsZSk7Ci0KLSAgICAg
ICAgLy8gUmVzZXQgdGhlIGRhbWFnZSB0cmFja2VyIGJlY2F1c2UgdGhlIGZyb250L2JhY2sgYnVm
ZmVycyBtYXkgaGF2ZSBiZWVuIGRhbWFnZWQgYnkgdGhlIEdQVQotICAgICAgICAvLyBwcm9jZXNz
IG9uIHZpc2liaWxpdHkgY2hhbmdlLgotICAgICAgICBpZiAodmlzaWJsZSAmJiBtX2NhcGFiaWxp
dGllcy51c2luZ1BhcnRpYWxTd2FwKQotICAgICAgICAgICAgbV9vd25lci0+c2V0RnVsbFJvb3RM
YXllckRhbWFnZSgpOwogICAgIH0KIH0KIApAQCAtMTA2Miw3ICsxMDc4LDcgQEAgdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnN3YXBCdWZmZXJzKGNvbnN0IEludFJlY3QmIHN1YkJ1ZmZlcikK
IAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06Om9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpCiB7
Ci0gICAgbV9vd25lci0+b25Td2FwQnVmZmVyc0NvbXBsZXRlKCk7CisgICAgbV9jbGllbnQtPm9u
U3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Z2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBlZTk4OTVhZTFkNGM5NGNkYTYz
MTBkYzdiM2ZiMDQzZDI5NWNiN2RjLi5iOGYyOTM1OGRkMDcyNWIxY2JlY2ZiZDBlNWUzNmNhYjIx
MWZhNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtNDIsNyArNDIs
NyBAQAogI2luY2x1ZGUgIlZpZGVvTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNjL0NDQ2Fu
dmFzTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NIZWFkc1VwRGlzcGxheS5oIgotI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3QuaCIKICNpbmNsdWRlICJjYy9DQ1BsdWdpbkxheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0ND
VmlkZW9MYXllckltcGwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNjAsMzQgKzYw
LDQzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NIZWFkc1VwRGlzcGxheTsKIGNs
YXNzIENDTGF5ZXJJbXBsOwotY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDUmVu
ZGVyUGFzczsKIGNsYXNzIEdlb21ldHJ5QmluZGluZzsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNE
OwogY2xhc3MgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOwogY2xhc3MgTGF5ZXJSZW5kZXJlclN3
YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0FkYXB0ZXI7CiAKK2NsYXNzIExheWVyUmVuZGVyZXJD
aHJvbWl1bUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiB2aWV3
cG9ydFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0
aW5ncygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIENDTGF5ZXJJbXBsKiByb290TGF5ZXIoKSA9
IDA7CisgICAgdmlydHVhbCBjb25zdCBDQ0xheWVySW1wbCogcm9vdExheWVyKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCkgPSAwOworfTsKKwogLy8gQ2xhc3MgdGhhdCBoYW5k
bGVzIGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdMLgogY2xhc3Mg
TGF5ZXJSZW5kZXJlckNocm9taXVtIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllclJl
bmRlcmVyQ2hyb21pdW0pOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVu
ZGVyZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdEltcGwqLCBQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNo
cm9taXVtPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4pOwogCiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgaW4gb3JkZXIgdG8g
YWxsb3cgdGhlIExheWVyUmVuZGVyZXJDaHJvbWl1bSB0byBkZXN0cnVjdAogICAgIHZvaWQgY2xv
c2UoKTsKIAogICAgIH5MYXllclJlbmRlcmVyQ2hyb21pdW0oKTsKIAotICAgIGNvbnN0IENDU2V0
dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9vd25lci0+c2V0dGluZ3MoKTsgfQor
ICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQt
PnNldHRpbmdzKCk7IH0KICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBjYXBh
YmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcGFiaWxpdGllczsgfQogCi0gICAgQ0NMYXll
ckltcGwqIHJvb3RMYXllcigpIHsgcmV0dXJuIG1fb3duZXItPnJvb3RMYXllcigpOyB9Ci0gICAg
Y29uc3QgQ0NMYXllckltcGwqIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXItPnJv
b3RMYXllcigpOyB9CisgICAgQ0NMYXllckltcGwqIHJvb3RMYXllcigpIHsgcmV0dXJuIG1fY2xp
ZW50LT5yb290TGF5ZXIoKTsgfQorICAgIGNvbnN0IENDTGF5ZXJJbXBsKiByb290TGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX2NsaWVudC0+cm9vdExheWVyKCk7IH0KIAogICAgIEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0KCk7CiAgICAgYm9vbCBjb250ZXh0U3VwcG9ydHNNYXBTdWIoKSBjb25z
dCB7IHJldHVybiBtX2NhcGFiaWxpdGllcy51c2luZ01hcFN1YjsgfQogCi0gICAgY29uc3QgSW50
U2l6ZSYgdmlld3BvcnRTaXplKCkgeyByZXR1cm4gbV9vd25lci0+dmlld3BvcnRTaXplKCk7IH0K
KyAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSB7IHJldHVybiBtX2NsaWVudC0+dmll
d3BvcnRTaXplKCk7IH0KICAgICBpbnQgdmlld3BvcnRXaWR0aCgpIHsgcmV0dXJuIHZpZXdwb3J0
U2l6ZSgpLndpZHRoKCk7IH0KICAgICBpbnQgdmlld3BvcnRIZWlnaHQoKSB7IHJldHVybiB2aWV3
cG9ydFNpemUoKS5oZWlnaHQoKTsgfQogCkBAIC0xNTYsNyArMTY1LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF0cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0
aW9uLCBpbnQgcXVhZExvY2F0aW9uKTsKIAogcHJpdmF0ZToKLSAgICBMYXllclJlbmRlcmVyQ2hy
b21pdW0oQ0NMYXllclRyZWVIb3N0SW1wbCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
KTsKKyAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50
KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwogICAgIGJvb2wgaW5pdGlhbGl6ZSgp
OwogCiAgICAgdm9pZCBkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiwgY29uc3QgRmxvYXRSZWN0
JiBzdXJmYWNlRGFtYWdlUmVjdCk7CkBAIC0yMDAsNyArMjA5LDcgQEAgcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgTGF5ZXJSZW5kZXJlclN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0FkYXB0
ZXI7CiAgICAgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKTsKIAotICAgIENDTGF5ZXJUcmVl
SG9zdEltcGwqIG1fb3duZXI7CisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBtX2Ns
aWVudDsKIAogICAgIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMgbV9jYXBhYmlsaXRpZXM7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCBkZmMzMjhlY2MxYWU3MTI1ODhmMmJhNGYxOTll
NDJjMzA5Y2RlZmJmLi44ZjYwNzgwOTcyZTYwYjlkMmYwNDRhZTFkM2JkNmNkNjYzOWIzZmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBDQ0xheWVy
SW1wbDo6c2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkKICAgICBub3RlTGF5ZXJQcm9w
ZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OmRpZExvc2VB
bmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCit2b2lkIENDTGF5ZXJJbXBsOjpkaWRMb3NlQ29u
dGV4dCgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDU2MzA5ZGVkNzNkNGQ3NDMy
YTg3NGM2MTQ2NjU4NzA2ZTg4MTc0Y2UuLjJhMmQ5ZTg0ODc0YjczMWFmMjU4OTdmNTUwOThkMDM1
ZTg5ZDllYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMjE4LDcgKzIxOCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUgY29udGV4dCBwcmV2aW91c2x5IHVzZWQgdG8g
cmVuZGVyIHRoaXMgbGF5ZXIKICAgICAvLyB3YXMgbG9zdCBhbmQgdGhhdCBhIG5ldyBvbmUgaGFz
IGJlZW4gY3JlYXRlZC4gV29uJ3QgYmUgY2FsbGVkCiAgICAgLy8gdW50aWwgdGhlIG5ldyBjb250
ZXh0IGhhcyBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIHZpcnR1YWwgdm9pZCBkaWRM
b3NlQW5kUmVjcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9z
ZUNvbnRleHQoKTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENDTGF5ZXJJbXBsKGludCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA3Y2NiNWZkNzE4YzIzNzcwMDM4
OGVhYzE5OTlkZmVmOWJjNjhjYjA0Li43YzZiYTVlNDcwMjVkNTY2NDRmMGJmYWQ5NThhY2U3NDFi
ZjBmZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTEzNCw3ICsxMzQs
NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKQogICAg
IG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkID0gdHJ1ZTsKIH0KIAotdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OnJlY3JlYXRlQ29udGV4dCgpCitDQ0xheWVyVHJlZUhvc3Q6OlJlY3JlYXRlUmVzdWx0
IENDTGF5ZXJUcmVlSG9zdDo6cmVjcmVhdGVDb250ZXh0KCkKIHsKICAgICBUUkFDRV9FVkVOVDAo
ImNjIiwgIkNDTGF5ZXJUcmVlSG9zdDo6cmVjcmVhdGVDb250ZXh0Iik7CiAgICAgQVNTRVJUKG1f
Y29udGV4dExvc3QpOwpAQCAtMTQ4LDIwICsxNDgsMjUgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgaWYgKHJlY3JlYXRlZCkgewogICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjcmVhdGVDb250ZXh0KHRydWUpOwogICAgICAgICBtX2NvbnRleHRMb3N0ID0gZmFs
c2U7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIFJlY3JlYXRlU3VjY2VlZGVkOwog
ICAgIH0KIAogICAgIC8vIFRvbGVyYXRlIGEgY2VydGFpbiBudW1iZXIgb2YgcmVjcmVhdGlvbiBm
YWlsdXJlcyB0byB3b3JrIGFyb3VuZCByYWNlcwogICAgIC8vIGluIHRoZSBjb250ZXh0LWxvc3Qg
bWFjaGluZXJ5LgogICAgIG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0cysrOwogICAgIGlmICht
X251bUZhaWxlZFJlY3JlYXRlQXR0ZW1wdHMgPCA1KSB7Ci0gICAgICAgIHNldE5lZWRzQ29tbWl0
KCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRklYTUU6IFRoZSBzaW5nbGUgdGhyZWFk
IGRvZXMgbm90IHNlbGYtc2NoZWR1bGUgY29udGV4dAorICAgICAgICAvLyByZWNyZWF0aW9uLiBT
byBmb3JjZSBhbm90aGVyIHJlY3JlYXRpb24gYXR0ZW1wdCB0byBoYXBwZW4gYnkgcmVxdWVzdGlu
ZworICAgICAgICAvLyBhbm90aGVyIGNvbW1pdC4KKyAgICAgICAgaWYgKCFDQ1Byb3h5OjpoYXNJ
bXBsVGhyZWFkKCkpCisgICAgICAgICAgICBzZXROZWVkc0NvbW1pdCgpOworICAgICAgICByZXR1
cm4gUmVjcmVhdGVGYWlsZWRCdXRUcnlBZ2FpbjsKICAgICB9CiAKICAgICAvLyBXZSBoYXZlIHRy
aWVkIHRvbyBtYW55IHRpbWVzIHRvIHJlY3JlYXRlIHRoZSBjb250ZXh0LiBUZWxsIHRoZSBob3N0
IHRvIGZhbGwKICAgICAvLyBiYWNrIHRvIHNvZnR3YXJlIHJlbmRlcmluZy4KICAgICBtX2NsaWVu
dC0+ZGlkUmVjcmVhdGVDb250ZXh0KGZhbHNlKTsKKyAgICByZXR1cm4gUmVjcmVhdGVGYWlsZWRB
bmRHYXZlVXA7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVDb250ZW50c1RleHR1
cmVzT25JbXBsVGhyZWFkKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKQEAgLTI1NSw4ICsy
NjAsNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAq
cGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICBpZiAobV9jb250ZXh0TG9zdCkgewotICAgICAgICByZWNyZWF0ZUNvbnRleHQo
KTsKLSAgICAgICAgaWYgKG1fY29udGV4dExvc3QpCisgICAgICAgIGlmIChyZWNyZWF0ZUNvbnRl
eHQoKSAhPSBSZWNyZWF0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgbV90cmlnZ2VySWRsZVBhaW50cyA9IGZhbHNlOwpAQCAtNDE5LDggKzQyMyw3IEBA
IGJvb2wgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICBpZiAobV9jb250ZXh0TG9zdCkgewotICAgICAgICByZWNyZWF0
ZUNvbnRleHQoKTsKLSAgICAgICAgaWYgKG1fY29udGV4dExvc3QpCisgICAgICAgIGlmIChyZWNy
ZWF0ZUNvbnRleHQoKSAhPSBSZWNyZWF0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggMmExYmRkMWY0
Y2I4YWNhYWZmNjhkNTY4MDM5ZjEwOTYzMDRlMjUzYS4uMDQ0OTY0YTFlOGY0MTgwZDZmNjkzNjk5
ZGJmZDg5NmVjZDMxMTk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTEzNCw2
ICsxMzQsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVyVHJlZUhv
c3RJbXBsPiBjcmVhdGVMYXllclRyZWVIb3N0SW1wbChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50
Kik7CiAgICAgdm9pZCBkaWRCZWNvbWVJbnZpc2libGVPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCopOwogICAgIHZvaWQgZGlkTG9zZUNvbnRleHQoKTsKKyAgICBlbnVtIFJlY3JlYXRl
UmVzdWx0IHsKKyAgICAgICAgUmVjcmVhdGVTdWNjZWVkZWQsCisgICAgICAgIFJlY3JlYXRlRmFp
bGVkQnV0VHJ5QWdhaW4sCisgICAgICAgIFJlY3JlYXRlRmFpbGVkQW5kR2F2ZVVwLAorICAgIH07
CisgICAgUmVjcmVhdGVSZXN1bHQgcmVjcmVhdGVDb250ZXh0KCk7CiAgICAgdm9pZCBkaWRDb21t
aXRBbmREcmF3RnJhbWUoKSB7IG1fY2xpZW50LT5kaWRDb21taXRBbmREcmF3RnJhbWUoKTsgfQog
ICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsgbV9jbGllbnQtPmRpZENvbXBsZXRl
U3dhcEJ1ZmZlcnMoKTsgfQogICAgIHZvaWQgZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRo
cmVhZChUZXh0dXJlQWxsb2NhdG9yKik7CkBAIC0yMDYsNyArMjEyLDYgQEAgcHJpdmF0ZToKICAg
ICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8TWFuYWdlZFRleHR1cmU+ID4gVGV4dHVyZUxpc3Q7CiAK
ICAgICB2b2lkIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7Ci0gICAgdm9pZCByZWNyZWF0ZUNv
bnRleHQoKTsKIAogICAgIGVudW0gUGFpbnRUeXBlIHsgUGFpbnRWaXNpYmxlLCBQYWludElkbGUg
fTsKICAgICBzdGF0aWMgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShMYXllckNocm9taXVtKiwg
UGFpbnRUeXBlLCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBmNzE1YWUzNWQxN2Y5MGI3NGRiMjJk
YzBmM2M5NGU2NjcwNTE5OTlhLi4yMDJhNzZjNjZhM2NlMmUzYTA2OTNjN2ZjNTUwOGZjMzc2ZWIy
NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzM5LDEw
ICszMzksMTUgQEAgVGV4dHVyZUFsbG9jYXRvciogQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpz
d2FwQnVmZmVycygpCiB7Ci0gICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlciAmJiAhaXNDb250ZXh0
TG9zdCgpKTsKKyAgICBBU1NFUlQobV9sYXllclJlbmRlcmVyKTsKICAgICBtX2xheWVyUmVuZGVy
ZXItPnN3YXBCdWZmZXJzKGVuY2xvc2luZ0ludFJlY3QobV9yb290RGFtYWdlUmVjdCkpOwogfQog
Cit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRpZExvc2VDb250ZXh0KCkKK3sKKyAgICBtX2Ns
aWVudC0+ZGlkTG9zZUNvbnRleHRPbkltcGxUaHJlYWQoKTsKK30KKwogdm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpvblN3YXBCdWZmZXJzQ29tcGxldGUoKQogewogICAgIG1fY2xpZW50LT5vblN3
YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKTsKQEAgLTM1MCw3ICszNTUsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6Om9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpCiAKIHZvaWQgQ0NM
YXllclRyZWVIb3N0SW1wbDo6cmVhZGJhY2sodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewotICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIgJiYgIWlzQ29udGV4dExvc3QoKSk7
CisgICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlcik7CiAgICAgbV9sYXllclJlbmRlcmVyLT5nZXRG
cmFtZWJ1ZmZlclBpeGVscyhwaXhlbHMsIHJlY3QpOwogfQogCkBAIC0zODcsNiArMzkyLDExIEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAKICAg
ICBpZiAobV9sYXllclJlbmRlcmVyKQogICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFZpc2li
bGUodmlzaWJsZSk7CisKKyAgICAvLyBSZXNldCB0aGUgZGFtYWdlIHRyYWNrZXIgYmVjYXVzZSB0
aGUgZnJvbnQvYmFjayBidWZmZXJzIG1heSBoYXZlIGJlZW4gZGFtYWdlZCBieSB0aGUgR1BVCisg
ICAgLy8gcHJvY2VzcyBvbiB2aXNpYmlsaXR5IGNoYW5nZS4KKyAgICBpZiAodmlzaWJsZSAmJiBt
X2xheWVyUmVuZGVyZXItPmNhcGFiaWxpdGllcygpLnVzaW5nUGFydGlhbFN3YXApCisgICAgICAg
IHNldEZ1bGxSb290TGF5ZXJEYW1hZ2UoKTsKIH0KIAogYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBs
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0KQpAQCAtMzk0LDggKzQwNCwxMiBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6Omlu
aXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+CiAgICAg
T3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcjsKICAgICBsYXllclJl
bmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgY29udGV4dCk7CiAK
LSAgICBpZiAobV9sYXllclJlbmRlcmVyKQorICAgIGJvb2wgd2FzUmVjcmVhdGUgPSBmYWxzZTsK
KyAgICBpZiAobV9sYXllclJlbmRlcmVyKSB7CiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y2xv
c2UoKTsKKyAgICAgICAgc2VuZERpZExvc2VDb250ZXh0UmVjdXJzaXZlKG1fcm9vdExheWVySW1w
bC5nZXQoKSk7CisgICAgICAgIHdhc1JlY3JlYXRlID0gdHJ1ZTsKKyAgICB9CiAKICAgICBtX2xh
eWVyUmVuZGVyZXIgPSBsYXllclJlbmRlcmVyLnJlbGVhc2UoKTsKICAgICByZXR1cm4gbV9sYXll
clJlbmRlcmVyOwpAQCAtNzAwLDIxICs3MTQsMTYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjphbmltYXRlTGF5ZXJzKGRvdWJsZSBmcmFtZUJlZ2luVGltZU1zKQogICAgICAgICBtX2NsaWVu
dC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpzZW5kQ29udGV4dExvc3RBbmRSZXN0b3JlZE5vdGlmaWNhdGlvbigpCi17Ci0gICAg
c2VuZENvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25SZWN1cnNpdmUobV9yb290TGF5
ZXJJbXBsLmdldCgpKTsKLX0KLQotdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZW5kQ29udGV4
dExvc3RBbmRSZXN0b3JlZE5vdGlmaWNhdGlvblJlY3Vyc2l2ZShDQ0xheWVySW1wbCogY3VycmVu
dCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2VuZERpZExvc2VDb250ZXh0UmVjdXJzaXZl
KENDTGF5ZXJJbXBsKiBjdXJyZW50KQogewogICAgIGlmICghY3VycmVudCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgY3VycmVudC0+ZGlkTG9zZUFuZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7
Ci0gICAgc2VuZENvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25SZWN1cnNpdmUoY3Vy
cmVudC0+bWFza0xheWVyKCkpOwotICAgIHNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZp
Y2F0aW9uUmVjdXJzaXZlKGN1cnJlbnQtPnJlcGxpY2FMYXllcigpKTsKKyAgICBjdXJyZW50LT5k
aWRMb3NlQ29udGV4dCgpOworICAgIHNlbmREaWRMb3NlQ29udGV4dFJlY3Vyc2l2ZShjdXJyZW50
LT5tYXNrTGF5ZXIoKSk7CisgICAgc2VuZERpZExvc2VDb250ZXh0UmVjdXJzaXZlKGN1cnJlbnQt
PnJlcGxpY2FMYXllcigpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1cnJlbnQtPmNo
aWxkcmVuKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVk
Tm90aWZpY2F0aW9uUmVjdXJzaXZlKGN1cnJlbnQtPmNoaWxkcmVuKClbaV0uZ2V0KCkpOworICAg
ICAgICBzZW5kRGlkTG9zZUNvbnRleHRSZWN1cnNpdmUoY3VycmVudC0+Y2hpbGRyZW4oKVtpXS5n
ZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaAppbmRleCBmZjQ3ZWIwOGZjMjgzNzAwMjczMzJmOTg1YjdiMWM4ZjJjZGI5
ZTdlLi5hMGIzNWYyZGM5ODhlZDg5YmJhNTljOGJhMjg0YjA0ZWRhNDAzZDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIEND
TGF5ZXJUcmVlSG9zdEltcGxfaAogI2RlZmluZSBDQ0xheWVyVHJlZUhvc3RJbXBsX2gKIAorI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNjL0NDQW5pbWF0aW9u
RXZlbnRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVyU29ydGVyLmgiCkBAIC0zOSw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENDQ29tcGxldGlvbkV2ZW50OwogY2xhc3MgQ0NQYWdlU2NhbGVBbmltYXRpb247CiBjbGFz
cyBDQ0xheWVySW1wbDsKLWNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIGNsYXNzIFRleHR1
cmVBbGxvY2F0b3I7CiBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllczsKIGNsYXNzIFRy
YW5zZm9ybWF0aW9uTWF0cml4OwpAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlv
bk1hdHJpeDsKIC8vIENDTGF5ZXJUcmVlSG9zdC0+Q0NQcm94eSBjYWxsYmFjayBpbnRlcmZhY2Uu
CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkTG9zZUNvbnRleHRPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6
CiB9OwogCiAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsIG93bnMgdGhlIENDTGF5ZXJJbXBsIHRyZWUg
YXMgd2VsbCBhcyBhc3NvY2lhdGVkIHJlbmRlcmluZyBzdGF0ZQotY2xhc3MgQ0NMYXllclRyZWVI
b3N0SW1wbCA6IHB1YmxpYyBDQ0lucHV0SGFuZGxlckNsaWVudCB7CitjbGFzcyBDQ0xheWVyVHJl
ZUhvc3RJbXBsIDogcHVibGljIENDSW5wdXRIYW5kbGVyQ2xpZW50LCBMYXllclJlbmRlcmVyQ2hy
b21pdW1DbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDTGF5ZXJUcmVlSG9zdElt
cGwpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+
IGNyZWF0ZShjb25zdCBDQ1NldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwpA
QCAtNzYsNiArNzcsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJs
ZSBmcmFtZURpc3BsYXlUaW1lTXMpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzKCk7CiAK
KyAgICAvLyBMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQgaW1wbGVtZW50YXRpb24KKyAgICB2
aXJ0dWFsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmll
d3BvcnRTaXplOyB9CisgICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNv
bnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KKyAgICB2aXJ0dWFsIENDTGF5ZXJJbXBsKiByb290
TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RMYXllckltcGwuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIGNv
bnN0IENDTGF5ZXJJbXBsKiByb290TGF5ZXIoKSBjb25zdCAgeyByZXR1cm4gbV9yb290TGF5ZXJJ
bXBsLmdldCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCk7CisgICAgdmly
dHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOworCisgICAgLy8gSW1wbGVtZW50YXRp
b24KICAgICBib29sIGNhbkRyYXcoKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgp
OwogCkBAIC04OSwxMSArOTksOSBAQCBwdWJsaWM6CiAgICAgVGV4dHVyZUFsbG9jYXRvciogY29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3Q7CiAKICAgICB2b2lkIHN3YXBCdWZmZXJzKCk7
Ci0gICAgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKTsKIAogICAgIHZvaWQgcmVhZGJhY2so
dm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICBDQ0xheWVySW1wbCogcm9vdExh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5ZXJJbXBsLmdldCgpOyB9CiAgICAgdm9pZCBz
ZXRSb290TGF5ZXIoUGFzc093blB0cjxDQ0xheWVySW1wbD4pOwogICAgIFBhc3NPd25QdHI8Q0NM
YXllckltcGw+IHJlbGVhc2VSb290TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RMYXllckltcGwucmVs
ZWFzZSgpOyB9CiAKQEAgLTEwNiwxMyArMTE0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNv
dXJjZUZyYW1lTnVtYmVyKGludCBmcmFtZU51bWJlcikgeyBtX3NvdXJjZUZyYW1lTnVtYmVyID0g
ZnJhbWVOdW1iZXI7IH0KIAogICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUm
KTsKLSAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZXdwb3J0U2l6ZTsgfQogCiAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxv
YXQgcGFnZVNjYWxlLCBmbG9hdCBtaW5QYWdlU2NhbGUsIGZsb2F0IG1heFBhZ2VTY2FsZSk7CiAg
ICAgZmxvYXQgcGFnZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlU2NhbGU7IH0KIAotICAg
IGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsg
fQotCiAgICAgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBwcm9jZXNzU2Nyb2xsRGVs
dGFzKCk7CiAKICAgICAvLyBXaGVyZSBwb3NzaWJsZSwgcmVkcmF3cyBhcmUgc2Npc3NvcmVkIHRv
IGEgZGFtYWdlIHJlZ2lvbiBjYWxjdWxhdGVkIGZyb20gY2hhbmdlcyB0bwpAQCAtMTI0LDkgKzEy
OSw2IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzQW5pbWF0ZUxheWVycygpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNBbmltYXRlTGF5ZXJzOyB9CiAgICAgdm9pZCBzZXROZWVkc0FuaW1hdGVMYXll
cnMoKSB7IG1fbmVlZHNBbmltYXRlTGF5ZXJzID0gdHJ1ZTsgfQogCi0gICAgLy8gTm90aWZpZXMg
dGhlIGxheWVyIHRyZWUgdGhhdCB0aGUgY29udGV4dCB3YXMgbG9zdCBhbmQgc3VjY2Vzc2Z1bGx5
IHJlc3RvcmVkLgotICAgIHZvaWQgc2VuZENvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmljYXRp
b24oKTsKLQogcHJvdGVjdGVkOgogICAgIENDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0
aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKIApAQCAtMTU1LDcgKzE1Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBvcHRpbWl6ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0
Jik7CiAgICAgdm9pZCBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiwgZG91Ymxl
IGZyYW1lQmVnaW5UaW1lU2VjcywgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImLCBib29sJiBkaWRB
bmltYXRlLCBib29sJiBuZWVkc0FuaW1hdGVMYXllcnMpOwogICAgIEludFNpemUgY29udGVudFNp
emUoKSBjb25zdDsKLSAgICB2b2lkIHNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0
aW9uUmVjdXJzaXZlKENDTGF5ZXJJbXBsKik7CisgICAgdm9pZCBzZW5kRGlkTG9zZUNvbnRleHRS
ZWN1cnNpdmUoQ0NMYXllckltcGwqKTsKIAogICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21p
dW0+IG1fbGF5ZXJSZW5kZXJlcjsKICAgICBPd25QdHI8Q0NMYXllckltcGw+IG1fcm9vdExheWVy
SW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcAppbmRleCA1MWI3NDVmYjMw
ZWNjYjhjZTI4MGM0YjAwNmI2ZGY1MjM1NWM0ZGFhLi43NDUzODE2OGU0NDQ2NzcxNjZhYWFjYWE2
NTI0ODc4ZWNiNTY5YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwCkBA
IC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDQ1BsdWdpbkxheWVySW1wbDo6ZHVtcExheWVyUHJvcGVy
dGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKICAgICBDQ0xheWVySW1wbDo6
ZHVtcExheWVyUHJvcGVydGllcyh0cywgaW5kZW50KTsKIH0KIAotdm9pZCBDQ1BsdWdpbkxheWVy
SW1wbDo6ZGlkTG9zZUFuZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKK3ZvaWQgQ0NQbHVnaW5M
YXllckltcGw6OmRpZExvc2VDb250ZXh0KCkKIHsKICAgICBpZiAobV9pb1N1cmZhY2VJZCkgewog
ICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGEgdmFsaWQgdGV4dHVyZSBJRCBpbiB0aGUgbmV3IGNv
bnRleHQ7IGhvd2V2ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaAppbmRleCBjNmJk
ZWRkMTkzZGMyYmQ4NDFlNGM4OGFiYTMwYjFkYTVmMGQyYzI1Li4zNzBlMDlkOTRiNjc2ZTMzMjIy
YmExNGU3Yjc4NDhhYTkzMzhjMTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFUZXhSZWN0RmxpcEFs
cGhhPiBUZXhSZWN0UHJvZ3JhbUZsaXA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJv
cGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZExvc2VBbmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIHZpcnR1YWwgdm9pZCBk
aWRMb3NlQ29udGV4dCgpOwogCiAgICAgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpIHsg
bV90ZXh0dXJlSWQgPSBpZDsgfQogICAgIHZvaWQgc2V0RmxpcHBlZChib29sIGZsaXBwZWQpIHsg
bV9mbGlwcGVkID0gZmxpcHBlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDg1ODA0
NjdmMDIzMDMyYzE0NTIyMTJmNTY1NjJlMDYxODUxZDk3NDIuLjYzM2YyMWQ0N2I5MzFjY2E4NDc4
NTQyNmE3MWY0ZjhkM2I2ZTQ2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTg2LDEw
ICs4NiwxOSBAQCB2b2lkIENDU2NoZWR1bGVyOjpkaWRTd2FwQnVmZmVyc0NvbXBsZXRlKCkKICAg
ICBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXItPmRpZEZpbmlzaEZyYW1lKCk7CiB9CiAKLXZvaWQgQ0NT
Y2hlZHVsZXI6OmRpZFN3YXBCdWZmZXJzQWJvcnQoKQordm9pZCBDQ1NjaGVkdWxlcjo6ZGlkTG9z
ZUNvbnRleHQoKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6ZGlkU3dhcEJ1ZmZl
cnNBYm9ydCIsIHRoaXMsIDApOworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6ZGlkTG9z
ZUNvbnRleHQiLCB0aGlzLCAwKTsKICAgICBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXItPmRpZEFib3J0
QWxsUGVuZGluZ0ZyYW1lcygpOworICAgIG1fc3RhdGVNYWNoaW5lLmRpZExvc2VDb250ZXh0KCk7
CisgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKK30KKwordm9pZCBDQ1NjaGVkdWxlcjo6
ZGlkUmVjcmVhdGVDb250ZXh0KCkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmRp
ZFJlY3JlYXRlQ29udGV4dCIsIHRoaXMsIDApOworICAgIG1fc3RhdGVNYWNoaW5lLmRpZFJlY3Jl
YXRlQ29udGV4dCgpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiB9CiAKIHZvaWQg
Q0NTY2hlZHVsZXI6OmJlZ2luRnJhbWUoKQpAQCAtMTUxLDYgKzE2MCw5IEBAIHZvaWQgQ0NTY2hl
ZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5z
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpOwogICAgICAgICAgICAgbV9mcmFtZVJhdGVDb250
cm9sbGVyLT5kaWRCZWdpbkZyYW1lKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElP
TjoKKyAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNy
ZWF0aW9uKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGFj
dGlvbiAhPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuaAppbmRleCA3MzEwNTgxYjExYjVmZGYzZjg4OTdmYWNmNmM2ZjkxOTRjMmUyY2Ex
Li5mOGJhMjFmOTlmMjRjNWE5Y2UwN2QxNmJhMjM1MTU2NDM5ZDBlZTc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVk
QWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVkQWN0aW9uQ29tbWl0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25C
ZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+
Q0NTY2hlZHVsZXJDbGllbnQoKSB7IH0KQEAgLTcxLDcgKzcyLDkgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRNYXhGcmFtZXNQZW5kaW5nKGludCk7CiAgICAgdm9pZCBkaWRTd2FwQnVmZmVyc0Nv
bXBsZXRlKCk7Ci0gICAgdm9pZCBkaWRTd2FwQnVmZmVyc0Fib3J0KCk7CisKKyAgICB2b2lkIGRp
ZExvc2VDb250ZXh0KCk7CisgICAgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoKTsKIAogICAgIGJv
b2wgY29tbWl0UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLmNvbW1pdFBl
bmRpbmcoKTsgfQogICAgIGJvb2wgcmVkcmF3UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGVNYWNoaW5lLnJlZHJhd1BlbmRpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuY3BwCmluZGV4IGQxYWE1Y2NkYzc0NGM4ZmNiNDAzMGIwZmJjNTY1ODMz
NGY2NWRlYmYuLjA1NGE0ZWRkNzE4YWEwOWVkNDY5MTU4NmIyNTE2NmI0YWQ3NDUwZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKQEAgLTM4LDI3ICsz
OCw2MCBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUo
KQogICAgICwgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAgICAsIG1faW5z
aWRlVlN5bmMoZmFsc2UpCiAgICAgLCBtX3Zpc2libGUoZmFsc2UpCi0gICAgLCBtX2NhbkRyYXco
dHJ1ZSkgeyB9CisgICAgLCBtX2NhbkRyYXcodHJ1ZSkKKyAgICAsIG1fY29udGV4dFN0YXRlKENP
TlRFWFRfQUNUSVZFKQoreworfQorCitib29sIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpoYXNE
cmF3blRoaXNGcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3VycmVudEZyYW1lTnVtYmVy
ID09IG1fbGFzdEZyYW1lTnVtYmVyV2hlcmVEcmF3V2FzQ2FsbGVkOworfQorCitib29sIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpzaG91bGREcmF3KCkgY29uc3QKK3sKKyAgICBpZiAobV9uZWVk
c0ZvcmNlZFJlZHJhdykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIW1fbmVlZHNS
ZWRyYXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1faW5zaWRlVlN5bmMpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fdmlzaWJsZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChoYXNEcmF3blRoaXNGcmFtZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFtX2NhbkRyYXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
bV9jb250ZXh0U3RhdGUgIT0gQ09OVEVYVF9BQ1RJVkUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KIAogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiB7Ci0gICAgYm9vbCBj
YW5EcmF3ID0gbV9jdXJyZW50RnJhbWVOdW1iZXIgIT0gbV9sYXN0RnJhbWVOdW1iZXJXaGVyZURy
YXdXYXNDYWxsZWQ7Ci0gICAgYm9vbCBzaG91bGREcmF3ID0gKG1fbmVlZHNSZWRyYXcgJiYgbV9p
bnNpZGVWU3luYyAmJiBtX3Zpc2libGUgJiYgY2FuRHJhdyAmJiBtX2NhbkRyYXcpIHx8IG1fbmVl
ZHNGb3JjZWRSZWRyYXc7CisKICAgICBzd2l0Y2ggKG1fY29tbWl0U3RhdGUpIHsKICAgICBjYXNl
IENPTU1JVF9TVEFURV9JRExFOgotICAgICAgICBpZiAoc2hvdWxkRHJhdykKKyAgICAgICAgaWYg
KG1fY29udGV4dFN0YXRlICE9IENPTlRFWFRfQUNUSVZFICYmIG1fbmVlZHNGb3JjZWRSZWRyYXcp
CisgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CisgICAgICAgIGlmIChtX2NvbnRleHRT
dGF0ZSA9PSBDT05URVhUX0xPU1QpCisgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0NP
TlRFWFRfUkVDUkVBVElPTjsKKyAgICAgICAgaWYgKG1fY29udGV4dFN0YXRlID09IENPTlRFWFRf
UkVDUkVBVElORykKKyAgICAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKKyAgICAgICAgaWYg
KHNob3VsZERyYXcoKSkKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKICAgICAgICAg
aWYgKG1fbmVlZHNDb21taXQgJiYgbV92aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuIEFDVElP
Tl9CRUdJTl9GUkFNRTsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCiAgICAgY2FzZSBD
T01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M6Ci0gICAgICAgIGlmIChzaG91bGREcmF3KQor
ICAgICAgICBpZiAoc2hvdWxkRHJhdygpKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFX
OwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKICAgICBjYXNlIENPTU1JVF9TVEFURV9V
UERBVElOR19SRVNPVVJDRVM6Ci0gICAgICAgIGlmIChzaG91bGREcmF3KQorICAgICAgICBpZiAo
c2hvdWxkRHJhdygpKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwogICAgICAgICBp
ZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpCiAgICAgICAgICAgICByZXR1cm4gQUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzsKQEAgLTY4LDcgKzEwMSw3IEBAIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRB
Y3Rpb24oKSBjb25zdAogICAgICAgICByZXR1cm4gQUNUSU9OX0NPTU1JVDsKIAogICAgIGNhc2Ug
Q09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVc6Ci0gICAgICAgIGlmIChzaG91bGRE
cmF3KQorICAgICAgICBpZiAoc2hvdWxkRHJhdygpIHx8IG1fY29udGV4dFN0YXRlID09IENPTlRF
WFRfTE9TVCkKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKICAgICAgICAgLy8gQ09N
TUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcgd2FudHMgdG8gZW5mb3JjZSBhIGRyYXcu
IElmIG1fY2FuRHJhdyBpcyBmYWxzZSwKICAgICAgICAgLy8gcHJvY2VlZCB0byB0aGUgbmV4dCBz
dGVwIChzaW1pbGFyIGFzIGluIENPTU1JVF9TVEFURV9JRExFKS4KQEAgLTExNSwxMiArMTQ4LDE4
IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rp
b24pCiAgICAgICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0lETEU7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBBQ1RJT05fQkVHSU5fQ09OVEVYVF9S
RUNSRUFUSU9OOgorICAgICAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVf
SURMRSk7CisgICAgICAgIEFTU0VSVChtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX0xPU1QpOwor
ICAgICAgICBtX2NvbnRleHRTdGF0ZSA9IENPTlRFWFRfUkVDUkVBVElORzsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KIH0KIAogYm9vbCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dnN5bmNDYWxs
YmFja05lZWRlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3Zpc2libGUpIHsKKyAgICBpZiAoIW1f
dmlzaWJsZSB8fCBtX2NvbnRleHRTdGF0ZSAhPSBDT05URVhUX0FDVElWRSkgewogICAgICAgICBp
ZiAobV9uZWVkc0ZvcmNlZFJlZHJhdykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0x
NzYsNCArMjE1LDE4IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luVXBkYXRl
TW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpCiAgICAgICAgIG1fY29tbWl0
U3RhdGUgPSBDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlUOwogfQogCit2b2lkIENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpkaWRMb3NlQ29udGV4dCgpCit7CisgICAgaWYgKG1fY29udGV4dFN0
YXRlID09IENPTlRFWFRfTE9TVCB8fCBtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX1JFQ1JFQVRJ
TkcpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHRTdGF0ZSA9IENPTlRFWFRfTE9TVDsK
K30KKwordm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6ZGlkUmVjcmVhdGVDb250ZXh0KCkK
K3sKKyAgICBBU1NFUlQobV9jb250ZXh0U3RhdGUgPT0gQ09OVEVYVF9SRUNSRUFUSU5HKTsKKyAg
ICBtX2NvbnRleHRTdGF0ZSA9IENPTlRFWFRfQUNUSVZFOworICAgIHNldE5lZWRzQ29tbWl0KCk7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4
IDdkZTcxODg0NmU3ZTMxNzQ4YWM1Njk4NmZiZmMyMmM4NzUxNDc3YjMuLjIyZmNkZjQyMjQ5ZmRh
MzFlZDcxMzEzYzI4OTE4MWM5NGVkOTI5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuaApAQCAtNTEsNiArNTEsMTEgQEAgcHVibGljOgogICAgICAgICBDT01N
SVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVywKICAgICB9OwogCisgICAgZW51bSBDb250
ZXh0U3RhdGUgeworICAgICAgICBDT05URVhUX0FDVElWRSwKKyAgICAgICAgQ09OVEVYVF9MT1NU
LAorICAgICAgICBDT05URVhUX1JFQ1JFQVRJTkcsCisgICAgfTsKICAgICBib29sIGNvbW1pdFBl
bmRpbmcoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fY29tbWl0U3RhdGUgIT0gQ09N
TUlUX1NUQVRFX0lETEU7CkBAIC02NCw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgQUNUSU9O
X0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywKICAgICAgICAgQUNUSU9OX0NPTU1JVCwKICAg
ICAgICAgQUNUSU9OX0RSQVcsCisgICAgICAgIEFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJ
T04KICAgICB9OwogICAgIEFjdGlvbiBuZXh0QWN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRh
dGVTdGF0ZShBY3Rpb24pOwpAQCAtMTA3LDcgKzExMywxMyBAQCBwdWJsaWM6CiAgICAgLy8gd2hl
biBzdWNoIGJlaGF2aW9yIHdvdWxkIGJlIHVuZGVzaXJhYmxlLgogICAgIHZvaWQgc2V0Q2FuRHJh
dyhib29sIGNhbikgeyBtX2NhbkRyYXcgPSBjYW47IH0KIAorICAgIHZvaWQgZGlkTG9zZUNvbnRl
eHQoKTsKKyAgICB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dCgpOworCiBwcm90ZWN0ZWQ6CisgICAg
Ym9vbCBzaG91bGREcmF3KCkgY29uc3Q7CisgICAgYm9vbCBoYXNEcmF3blRoaXNGcmFtZSgpIGNv
bnN0OworCiAgICAgQ29tbWl0U3RhdGUgbV9jb21taXRTdGF0ZTsKIAogICAgIGludCBtX2N1cnJl
bnRGcmFtZU51bWJlcjsKQEAgLTExOSw2ICsxMzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBt
X2luc2lkZVZTeW5jOwogICAgIGJvb2wgbV92aXNpYmxlOwogICAgIGJvb2wgbV9jYW5EcmF3Owor
ICAgIENvbnRleHRTdGF0ZSBtX2NvbnRleHRTdGF0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMGFmMDdjYmRiZmQyOTU3ODM4ZmVjMTQ0YjI2
YTZkYTliM2RmYzhkZi4uMDU0ZGIwNmFhYTM0OWI0NjFmYWEyMTgwMmJlOTk3MWExZGY3MGU5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE2MSw3ICsxNjEs
NiBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgICAg
IGluaXRpYWxpemVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoY29udGV4dCk7CiAgICAgICAgIGlmIChpbml0aWFsaXplZCkgewogICAgICAgICAgICAgbV9s
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVhZCA9IG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKLSAgICAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPnNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uKCk7CiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCA4
ZTE4NjBjMjYwNjhhNzIzNDg3NDRlMTVhMDYyZWZkYmQ1NTIyMTQ1Li4yZDI4ZDAxNjlkMzA4OGI4
YzMyYWJkY2U3M2IzZDc0MWM1ZjQyYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtYXhQ
YXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpOyB9CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGlt
cGxlbWVudGF0aW9uCisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0T25JbXBsVGhyZWFk
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVh
ZCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNS
ZWRyYXdPbkltcGxUaHJlYWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsgbV9sYXll
clRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CmluZGV4IDkwNWEwOTRjMDdhNjExZTEyNzdjYjE2ZWEzN2IyMzVkNmJlNjUzZTEuLjNkNjU5NmQw
NGUxNjQ3NDY5ZGIxYThkMWQ3MGEyOTYyN2E5YjcyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCkBAIC01OSw2ICs1OSw3IEBAIFBhc3NPd25QdHI8Q0NQcm94eT4gQ0NUaHJlYWRQcm94
eTo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKIENDVGhyZWFkUHJveHk6
OkNDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogICAgIDogbV9h
bmltYXRlUmVxdWVzdGVkKGZhbHNlKQogICAgICwgbV9jb21taXRSZXF1ZXN0ZWQoZmFsc2UpCisg
ICAgLCBtX2NvbnRleHRMb3N0KGZhbHNlKQogICAgICwgbV9sYXllclRyZWVIb3N0KGxheWVyVHJl
ZUhvc3QpCiAgICAgLCBtX2NvbXBvc2l0b3JJZGVudGlmaWVyKC0xKQogICAgICwgbV9sYXllclJl
bmRlcmVySW5pdGlhbGl6ZWQoZmFsc2UpCkBAIC0xOTMsOSArMTk0LDkgQEAgYm9vbCBDQ1RocmVh
ZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgYm9vbCBpbml0aWFsaXplU3Vj
Y2VlZGVkID0gZmFsc2U7CiAgICAgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyBjYXBhYmlsaXRp
ZXM7CiAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRh
c2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhy
ZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9z
c1RocmVhZEFjY2VzcygmY29tcGxldGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZpbml0aWFsaXplU3VjY2VlZGVk
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3MoJmNhcGFiaWxpdGllcykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21w
bGV0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZpbml0aWFsaXplU3VjY2VlZGVkKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKCZjYXBhYmlsaXRpZXMpKSk7CiAgICAgY29tcGxldGlvbi53YWl0
KCk7CiAKICAgICBpZiAoaW5pdGlhbGl6ZVN1Y2NlZWRlZCkgewpAQCAtMjA3LDggKzIwOCwzNSBA
QCBib29sIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkKIAogYm9vbCBD
Q1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQoKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFk
UHJveHk6OnJlY3JlYXRlQ29udGV4dCIpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisK
KyAgICAvLyBUcnkgdG8gY3JlYXRlIHRoZSBjb250ZXh0LgorICAgIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY29udGV4dCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlQ29udGV4dCgpOworICAg
IGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChjb250ZXh0
LT5oYXNPbmVSZWYoKSk7CisKKyAgICAvLyBMZWFrIHRoZSBjb250ZXh0IHBvaW50ZXIgc28gd2Ug
Y2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiBpdCB0byB0aGUgb3RoZXIgc2lkZS4uLgorICAgIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0UHRyID0gY29udGV4dC5yZWxlYXNlKCkubGVha1JlZigp
OworICAgIEFTU0VSVChjb250ZXh0UHRyLT5oYXNPbmVSZWYoKSk7CisKKyAgICAvLyBNYWtlIGEg
YmxvY2tpbmcgY2FsbCB0byByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQuIFRoZSByZXN1bHRz
IG9mIHRoYXQKKyAgICAvLyBjYWxsIGFyZSBwdXNoZWQgaW50byB0aGUgcmVjcmVhdGVTdWNjZWVk
ZWQgYW5kIGNhcGFiaWxpdGllcyBsb2NhbAorICAgIC8vIHZhcmlhYmxlcy4KKyAgICBDQ0NvbXBs
ZXRpb25FdmVudCBjb21wbGV0aW9uOworICAgIGJvb2wgcmVjcmVhdGVTdWNjZWVkZWQgPSBmYWxz
ZTsKKyAgICBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllczsKKyAgICBDQ1By
b3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NU
aHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3MoJmNvbXBsZXRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29udGV4dFB0ciksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dDcm9zc1RocmVhZEFjY2VzcygmcmVjcmVhdGVTdWNjZWVkZWQpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3MoJmNhcGFiaWxpdGllcykpKTsKKyAgICBjb21wbGV0aW9uLndhaXQoKTsKKworICAgIGlm
IChyZWNyZWF0ZVN1Y2NlZWRlZCkKKyAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
TWFpblRocmVhZENvcHkgPSBjYXBhYmlsaXRpZXM7CisgICAgcmV0dXJuIHJlY3JlYXRlU3VjY2Vl
ZGVkOwogfQogCiBpbnQgQ0NUaHJlYWRQcm94eTo6Y29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25z
dApAQCAtMjI1LDcgKzI1Myw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIEND
VGhyZWFkUHJveHk6OmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zCiAKIHZvaWQgQ0NU
aHJlYWRQcm94eTo6bG9zZUNvbnRleHQoKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRo
aXMsICZDQ1RocmVhZFByb3h5OjpkaWRMb3NlQ29udGV4dE9uSW1wbFRocmVhZCkpOwogfQogCiB2
b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZSgpCkBAIC0yNTAsNiArMjc4LDEzIEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQoKQogICAgIENDUHJveHk6OmltcGxU
aHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5
OjpzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCkpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6
OmRpZExvc2VDb250ZXh0T25JbXBsVGhyZWFkKCkKK3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFk
KCkpOworICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6ZGlkTG9zZUNvbnRl
eHRPbkltcGxUaHJlYWQiKTsKKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+ZGlkTG9zZUNv
bnRleHQoKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpvblN3YXBCdWZmZXJzQ29tcGxldGVP
bkltcGxUaHJlYWQoKQogewogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CkBAIC01MTcsNiAr
NTUyLDEyIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKICAg
ICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IDA7CiB9CiAKK3ZvaWQgQ0NU
aHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpCit7Cisg
ICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRh
c2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpiZWdpbkNvbnRleHRS
ZWNyZWF0aW9uKSk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXAoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcCIsIHRoaXMsIDApOwpAQCAtNTQxLDEwICs1ODIsNiBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKIAogICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7CiAKLSAgICAvLyBGSVhNRTogaGFuZGxlIGNhc2Ug
d2hlcmUgbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdC4KLSAgICAvLyBGSVhNRTog
cGFzcyBkaWRTd2FwQnVmZmVyc0Fib3J0IGlmIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmlzQ29udGV4
dExvc3QuCi0gICAgQVNTRVJUKCFtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRleHRMb3N0KCkp
OwotCiAgICAgLy8gUHJvY2VzcyBhbnkgZmluaXNoIHJlcXVlc3QKICAgICBpZiAobV9maW5pc2hB
bGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpIHsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0SW1wbC0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CkBAIC01NzcsMTIgKzYxNCw1NSBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKQogCiB2b2lkIEND
VGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cyhQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZl
bnRzVmVjdG9yPiBldmVudHMpCiB7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFBy
b3h5OjpzZXRBbmltYXRpb25FdmVudHMiKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIGlmICghbV9sYXllclRyZWVIb3N0KQogICAgICAgICByZXR1cm47CiAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXRBbmltYXRpb25FdmVudHMoZXZlbnRzKTsKIH0KIAorY2xhc3MgQ0NUaHJlYWRQ
cm94eUNvbnRleHRSZWNyZWF0aW9uVGltZXIgOiBwdWJsaWMgQ0NUaW1lciwgQ0NUaW1lckNsaWVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaHJlYWRQcm94eUNvbnRleHRS
ZWNyZWF0aW9uVGltZXI+IGNyZWF0ZShDQ1RocmVhZFByb3h5KiBwcm94eSkgeyByZXR1cm4gYWRv
cHRQdHIobmV3IENDVGhyZWFkUHJveHlDb250ZXh0UmVjcmVhdGlvblRpbWVyKHByb3h5KSk7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBvblRpbWVyRmlyZWQoKQorICAgIHsKKyAgICAgICAgbV9wcm94
eS0+dHJ5VG9SZWNyZWF0ZUNvbnRleHQoKTsKKyAgICB9CisKKyAgICBlbnVtIFJlY3JlYXRpb24g
eyBSZWNyZWF0aW9uVGlja1JhdGVNcyA9IDMwIH07CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
Q0NUaHJlYWRQcm94eUNvbnRleHRSZWNyZWF0aW9uVGltZXIoQ0NUaHJlYWRQcm94eSogcHJveHkp
CisgICAgICAgIDogQ0NUaW1lcihDQ1Byb3h5OjptYWluVGhyZWFkKCksIHRoaXMpCisgICAgICAg
ICwgbV9wcm94eShwcm94eSkKKyAgICB7CisgICAgfQorCisgICAgQ0NUaHJlYWRQcm94eSogbV9w
cm94eTsKK307CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5Db250ZXh0UmVjcmVhdGlvbigp
Cit7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpiZWdpbkNvbnRleHRS
ZWNyZWF0aW9uIik7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIW1f
Y29udGV4dFJlY3JlYXRpb25UaW1lcik7CisgICAgbV9jb250ZXh0UmVjcmVhdGlvblRpbWVyID0g
Q0NUaHJlYWRQcm94eUNvbnRleHRSZWNyZWF0aW9uVGltZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICBt
X2xheWVyVHJlZUhvc3QtPmRpZExvc2VDb250ZXh0KCk7CisgICAgbV9jb250ZXh0UmVjcmVhdGlv
blRpbWVyLT5zdGFydE9uZVNob3QoQ0NUaHJlYWRQcm94eUNvbnRleHRSZWNyZWF0aW9uVGltZXI6
OlJlY3JlYXRpb25UaWNrUmF0ZU1zKTsKK30KKwordm9pZCBDQ1RocmVhZFByb3h5Ojp0cnlUb1Jl
Y3JlYXRlQ29udGV4dCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQobV9sYXllclRyZWVIb3N0KTsKKyAgICBDQ0xheWVyVHJlZUhvc3Q6OlJlY3JlYXRlUmVzdWx0
IHJlc3VsdCA9IG1fbGF5ZXJUcmVlSG9zdC0+cmVjcmVhdGVDb250ZXh0KCk7CisgICAgaWYgKHJl
c3VsdCA9PSBDQ0xheWVyVHJlZUhvc3Q6OlJlY3JlYXRlRmFpbGVkQnV0VHJ5QWdhaW4pCisgICAg
ICAgIG1fY29udGV4dFJlY3JlYXRpb25UaW1lci0+c3RhcnRPbmVTaG90KENDVGhyZWFkUHJveHlD
b250ZXh0UmVjcmVhdGlvblRpbWVyOjpSZWNyZWF0aW9uVGlja1JhdGVNcyk7CisgICAgZWxzZSBp
ZiAocmVzdWx0ID09IENDTGF5ZXJUcmVlSG9zdDo6UmVjcmVhdGVTdWNjZWVkZWQpCisgICAgICAg
IG1fY29udGV4dFJlY3JlYXRpb25UaW1lci5jbGVhcigpOworfQorCiB2b2lkIENDVGhyZWFkUHJv
eHk6OmluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0
aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9u
SW1wbFRocmVhZCIsIHRoaXMsIDApOwpAQCAtNjQzLDQgKzcyMywxNyBAQCBzaXplX3QgQ0NUaHJl
YWRQcm94eTo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3QKICAgICByZXR1cm4gdGV4
dHVyZVVwZGF0ZXNQZXJGcmFtZTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNv
bnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0UHRyLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcyogY2FwYWJpbGl0aWVzKQoreworICAgIFRSQUNFX0VWRU5UMCgiY2Mi
LCAiQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkIik7CisgICAgQVNT
RVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRz
VGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJl
QWxsb2NhdG9yKCkpOworICAgICpyZWNyZWF0ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGFkb3B0UmVmKGNvbnRleHRQdHIpKTsKKyAgICBp
ZiAoKnJlY3JlYXRlU3VjY2VlZGVkKSB7CisgICAgICAgICpjYXBhYmlsaXRpZXMgPSBtX2xheWVy
VHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CisgICAgICAgIG1fc2No
ZWR1bGVyT25JbXBsVGhyZWFkLT5kaWRSZWNyZWF0ZUNvbnRleHQoKTsKKyAgICB9CisgICAgY29t
cGxldGlvbi0+c2lnbmFsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuaAppbmRleCA1N2JhNTk4NzQ4ODg2OWU5MzI4MGVlNDU1MzBmOGI4OTc1ODJi
YjM3Li40ZWFmODQwZjZiNTdkNTVjMDczYmZhNTY4ZjQwYWYwNmI4YjA4NjJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5o
IgogI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIK
KyNpbmNsdWRlICJjYy9DQ1RpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00MSw2ICs0Miw3IEBAIGNsYXNzIENDU2NoZWR1bGVyOwogY2xh
c3MgQ0NTY29wZWRUaHJlYWRQcm94eTsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBD
Q1RocmVhZDsKK2NsYXNzIENDVGhyZWFkUHJveHlDb250ZXh0UmVjcmVhdGlvblRpbWVyOwogCiBj
bGFzcyBDQ1RocmVhZFByb3h5IDogcHVibGljIENDUHJveHksIENDTGF5ZXJUcmVlSG9zdEltcGxD
bGllbnQsIENDU2NoZWR1bGVyQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTY5LDYgKzcxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0
OwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgorICAg
IHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dE9uSW1wbFRocmVhZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNDb21taXRPbkltcGxUaHJlYWQoKTsKQEAgLTgxLDE1ICs4NCwxOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCk7CiAgICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCk7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFj
dGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBD
Q1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOworICAgIGZyaWVuZCBjbGFzcyBDQ1RocmVh
ZFByb3h5Q29udGV4dFJlY3JlYXRpb25UaW1lcjsKIAogICAgIC8vIENhbGxlZCBvbiBtYWluIHRo
cmVhZAogICAgIHZvaWQgYmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRv
dWJsZSBmcmFtZUJlZ2luVGltZSwgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0Pik7CiAg
ICAgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKICAgICB2b2lkIGRpZENvbXBsZXRlU3dh
cEJ1ZmZlcnMoKTsKICAgICB2b2lkIHNldEFuaW1hdGlvbkV2ZW50cyhQYXNzT3duUHRyPENDQW5p
bWF0aW9uRXZlbnRzVmVjdG9yPik7CisgICAgdm9pZCBiZWdpbkNvbnRleHRSZWNyZWF0aW9uKCk7
CisgICAgdm9pZCB0cnlUb1JlY3JlYXRlQ29udGV4dCgpOwogCiAgICAgLy8gQ2FsbGVkIG9uIGlt
cGwgdGhyZWFkCiAgICAgc3RydWN0IFJlYWRiYWNrUmVxdWVzdCB7CkBAIC0xMTAsMTAgKzExNywx
MyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VmlzaWJsZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRp
b25FdmVudCosIGJvb2wgdmlzaWJsZSk7CiAgICAgdm9pZCBsYXllclRyZWVIb3N0Q2xvc2VkT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBzZXRGdWxsUm9vdExheWVy
RGFtYWdlT25JbXBsVGhyZWFkKCk7CisgICAgdm9pZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBHcmFwaGljc0NvbnRleHQzRCosIGJvb2wqIHJlY3JlYXRl
U3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKik7CiAKICAgICAvLyBBY2Nlc3Nl
ZCBvbiBtYWluIHRocmVhZCBvbmx5LgogICAgIGJvb2wgbV9hbmltYXRlUmVxdWVzdGVkOwogICAg
IGJvb2wgbV9jb21taXRSZXF1ZXN0ZWQ7CisgICAgYm9vbCBtX2NvbnRleHRMb3N0OworICAgIE93
blB0cjxDQ1RocmVhZFByb3h5Q29udGV4dFJlY3JlYXRpb25UaW1lcj4gbV9jb250ZXh0UmVjcmVh
dGlvblRpbWVyOwogICAgIENDTGF5ZXJUcmVlSG9zdCogbV9sYXllclRyZWVIb3N0OwogICAgIGlu
dCBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOwogICAgIGJvb2wgbV9sYXllclJlbmRlcmVySW5pdGlh
bGl6ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmluZGV4IDNkYmYwZjRkMzg2
NWU1MWQ5NDI2ZjU4OTU1YzllNGFiMTAzM2JjNTAuLmZkNTNlNDFkMzcyNTFjNzM0NDlmNmU0MTll
OWYzODA5NzM5NmJjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgorI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAj
aW5jbHVkZSAiY2MvQ0NWaWRlb0RyYXdRdWFkLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IGVkMDUyYTljM2Q4NjljN2FlOTI3MWY2MTFhMzlj
NDVhYmE4YmIyOTcuLjRlZjgxNTczM2RkMzMyM2YwNTAxNmI0ZWMyYmI3Y2ZiMjZkMmQ2OTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9ob3N0
SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CiAgICAg
fQogCisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0T25JbXBsVGhyZWFkKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIHsgbV9kaWRSZXF1
ZXN0UmVkcmF3ID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1w
bFRocmVhZCgpIHsgbV9kaWRSZXF1ZXN0Q29tbWl0ID0gdHJ1ZTsgfQpAQCAtODcwLDIxICs4NzEs
MjEgQEAgY2xhc3MgQ29udGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyIDogcHVibGljIEND
TGF5ZXJJbXBsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDb250ZXh0TG9zdE5v
dGlmaWNhdGlvbkNoZWNrTGF5ZXI+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDb250ZXh0TG9zdE5vdGlmaWNhdGlvbkNoZWNrTGF5ZXIoaWQpKTsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGRpZExvc2VBbmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCisgICAgdmlydHVhbCB2
b2lkIGRpZExvc2VDb250ZXh0KCkKICAgICB7Ci0gICAgICAgIG1fZGlkTG9zZUFuZFJlY3JlYXRl
R3JhcGhpY3NDb250ZXh0Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgbV9kaWRMb3NlQ29udGV4dENh
bGxlZCA9IHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBkaWRMb3NlQW5kUmVjcmVhdGVHcmFwaGlj
c0NvbnRleHRDYWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2RpZExvc2VBbmRSZWNyZWF0ZUdyYXBo
aWNzQ29udGV4dENhbGxlZDsgfQorICAgIGJvb2wgZGlkTG9zZUNvbnRleHRDYWxsZWQoKSBjb25z
dCB7IHJldHVybiBtX2RpZExvc2VDb250ZXh0Q2FsbGVkOyB9CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgQ29udGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyKGludCBpZCkKICAgICAgICAg
OiBDQ0xheWVySW1wbChpZCkKLSAgICAgICAgLCBtX2RpZExvc2VBbmRSZWNyZWF0ZUdyYXBoaWNz
Q29udGV4dENhbGxlZChmYWxzZSkKKyAgICAgICAgLCBtX2RpZExvc2VDb250ZXh0Q2FsbGVkKGZh
bHNlKQogICAgIHsKICAgICB9CiAKLSAgICBib29sIG1fZGlkTG9zZUFuZFJlY3JlYXRlR3JhcGhp
Y3NDb250ZXh0Q2FsbGVkOworICAgIGJvb2wgbV9kaWRMb3NlQ29udGV4dENhbGxlZDsKIH07CiAK
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgY29udGV4dExvc3RBbmRSZXN0b3JlZE5v
dGlmaWNhdGlvblNlbnRUb0FsbExheWVycykKQEAgLTkwMSwxNSArOTAyLDE1IEBAIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgY29udGV4dExvc3RBbmRSZXN0b3JlZE5vdGlmaWNhdGlv
blNlbnRUb0FsbExheWVyCiAgICAgbGF5ZXIxLT5hZGRDaGlsZChDb250ZXh0TG9zdE5vdGlmaWNh
dGlvbkNoZWNrTGF5ZXI6OmNyZWF0ZSgyKSk7CiAgICAgQ29udGV4dExvc3ROb3RpZmljYXRpb25D
aGVja0xheWVyKiBsYXllcjIgPSBzdGF0aWNfY2FzdDxDb250ZXh0TG9zdE5vdGlmaWNhdGlvbkNo
ZWNrTGF5ZXIqPihsYXllcjEtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOwogCi0gICAgRVhQRUNUX0ZB
TFNFKHJvb3QtPmRpZExvc2VBbmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dENhbGxlZCgpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UobGF5ZXIxLT5kaWRMb3NlQW5kUmVjcmVhdGVHcmFwaGljc0NvbnRleHRD
YWxsZWQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGxheWVyMi0+ZGlkTG9zZUFuZFJlY3JlYXRlR3Jh
cGhpY3NDb250ZXh0Q2FsbGVkKCkpOworICAgIEVYUEVDVF9GQUxTRShyb290LT5kaWRMb3NlQ29u
dGV4dENhbGxlZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UobGF5ZXIxLT5kaWRMb3NlQ29udGV4dENh
bGxlZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UobGF5ZXIyLT5kaWRMb3NlQ29udGV4dENhbGxlZCgp
KTsKIAotICAgIG1faG9zdEltcGwtPnNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0
aW9uKCk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29u
dGV4dCgpKTsKIAotICAgIEVYUEVDVF9UUlVFKHJvb3QtPmRpZExvc2VBbmRSZWNyZWF0ZUdyYXBo
aWNzQ29udGV4dENhbGxlZCgpKTsKLSAgICBFWFBFQ1RfVFJVRShsYXllcjEtPmRpZExvc2VBbmRS
ZWNyZWF0ZUdyYXBoaWNzQ29udGV4dENhbGxlZCgpKTsKLSAgICBFWFBFQ1RfVFJVRShsYXllcjIt
PmRpZExvc2VBbmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dENhbGxlZCgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShyb290LT5kaWRMb3NlQ29udGV4dENhbGxlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXll
cjEtPmRpZExvc2VDb250ZXh0Q2FsbGVkKCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+ZGlk
TG9zZUNvbnRleHRDYWxsZWQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBk
N2RkMDU1OTViZmU1MjZhNTA3ZThiNzJlNDhkYTdjMTg2NzYzNDk1Li4wNjJhNjk5YzM2MTU5NzI3
NzA0MGI0OWExNjIwNzMxYzhiZjIzZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTY5LDYgKzY5LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUm
LCBmbG9hdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZy
YW1lQmVnaW5UaW1lKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1Y2NlZGVkKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyB9CiAKICAgICAvLyBJbXBsZW1lbnRh
dGlvbiBvZiBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5
QW5pbWF0aW9uU3RhcnRlZChkb3VibGUgdGltZSkgeyB9CkBAIC0yMzksMTQgKzI0MSwxNiBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkKICAgICB7
CisgICAgICAgIG1fdGVzdEhvb2tzLT5kaWRDb21taXRBbmREcmF3RnJhbWUoKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpCiAgICAgewogICAgIH0K
IAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCkKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VlZGVkKQogICAgIHsKKyAgICAgICAg
bV90ZXN0SG9va3MtPmRpZFJlY3JlYXRlQ29udGV4dChzdWNjZWVkZWQpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpCkBAIC0xOTA0LDQgKzE5MDgsNzIgQEAg
cHVibGljOgogCiBTSU5HTEVfQU5EX01VTFRJX1RIUkVBRF9URVNUX0YoQ0NMYXllclRyZWVIb3N0
VGVzdE1hbnlTdXJmYWNlcykKIAorLy8gQSBsb3NlQ29udGV4dCgxKSBzaG91bGQgbGVhZCB0byBh
IGRpZFJlY3JlYXRlQ29udGV4dCh0cnVlKQorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNldFNp
bmdsZUxvc3RDb250ZXh0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRPbmx5IHsK
K3B1YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U2V0U2luZ2xlTG9zdENvbnRleHQoKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAg
ICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKQorICAgIHsKKyAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5sb3NlQ29udGV4dCgxKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
cmVhdGVDb250ZXh0KGJvb2wgc3VjY2VlZGVkKQorICAgIHsKKyAgICAgICAgRVhQRUNUX1RSVUUo
c3VjY2VlZGVkKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0
VGVzdFNldFNpbmdsZUxvc3RDb250ZXh0LCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0
VGhyZWFkZWQoKTsKK30KKworLy8gQSBsb3NlQ29udGV4dCgxMCkgc2hvdWxkIGxlYWQgdG8gYSBk
aWRSZWNyZWF0ZUNvbnRleHQoZmFsc2UpLCBhbmQKKy8vIGEgZmluaXNoQWxsUmVuZGVyaW5nKCkg
c2hvdWxkIG5vdCBoYW5nLgorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNldFJlcGVhdGVkTG9z
dENvbnRleHQgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgeworcHVibGlj
OgorICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RTZXRSZXBlYXRlZExvc3RDb250ZXh0KCkKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBw
b3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+bG9zZUNvbnRleHQoMTApOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0
ZUNvbnRleHQoYm9vbCBzdWNjZWVkZWQpCisgICAgeworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Vj
Y2VlZGVkKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hBbGxSZW5kZXJpbmcoKTsK
KyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3Qo
KQorICAgIHsKKyAgICB9Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldFJlcGVh
dGVkTG9zdENvbnRleHQsIHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRlc3RUaHJlYWRlZCgp
OworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCmluZGV4IDM5MDhm
NDBhOTlhZTc1NzAzMWU5YWQ5MWI0MjljNjJmYmI1MzYxNjguLjA4NTNlNWEzNjVkNDljMzZhNmYw
MGRmODQzNTRlMWEwYTZiZmIyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKQEAgLTYwNCw0
ICs2MDQsMTc4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0R29lc0lu
dmlzaWJsZU1pZENvbW1pdCkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQogCitURVNUKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hlbkNvbXBsZXRlbHlJZGxlKQorewor
ICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworCisg
ICAgc3RhdGUuZGlkTG9zZUNvbnRleHQoKTsKKworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTiwgc3RhdGUubmV4dEFj
dGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisg
ICAgLy8gT25jZSBjb250ZXh0IHJlY3JlYXRpb24gYmVnaW5zLCBub3RoaW5nIHNob3VsZCBoYXBw
ZW4uCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFJlY3JlYXRlIHRoZSBjb250ZXh0CisgICAg
c3RhdGUuZGlkUmVjcmVhdGVDb250ZXh0KCk7CisKKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGlz
IHJlY3JlYXRlZCwgd2Ugc2hvdWxkIGJlZ2luIGEgY29tbWl0CisgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKworVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoZW5JZGxlQW5k
Q29tbWl0UmVxdWVzdGVkV2hpbGVSZWNyZWF0aW5nKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0
ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworCisgICAgc3RhdGUuZGlkTG9zZUNvbnRl
eHQoKTsKKworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JF
R0lOX0NPTlRFWFRfUkVDUkVBVElPTiwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51
cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gT25jZSBjb250ZXh0IHJl
Y3JlYXRpb24gYmVnaW5zLCBub3RoaW5nIHNob3VsZCBoYXBwZW4uCisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KworICAgIC8vIFdoaWxlIGNvbnRleHQgaXMgcmVjcmVhdGluZywgY29tbWl0cyBzaG91bGRuJ3Qg
YmVnaW4uCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KworICAgIC8vIFJlY3JlYXRlIHRoZSBjb250ZXh0CisgICAgc3RhdGUuZGlkUmVjcmVhdGVDb250
ZXh0KCk7CisKKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGlzIHJlY3JlYXRlZCwgd2Ugc2hvdWxk
IGJlZ2luIGEgY29tbWl0CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRl
U3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIE9uY2UgdGhlIGNvbnRleHQgaXMg
cmVjcmVhdGVkLCB3aGV0aGVyIHdlIGRyYXcgc2hvdWxkIGJlIGJhc2VkIG9uCisgICAgLy8gc2V0
Q2FuRHJhdy4KKyAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAgICBzdGF0ZS5kaWRF
bnRlclZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KGZhbHNl
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CisgICAgc3Rh
dGUuZGlkTGVhdmVWU3luYygpOworfQorCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblByb2dyZXNzKQoreworICAgIFN0YXRlTWFj
aGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworCisgICAgLy8gR2V0IGEg
Y29tbWl0IGluIGZsaWdodC4KKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9u
KCkpOworCisgICAgLy8gU2V0IGRhbWFnZSBhbmQgZXhwZWN0IGEgZHJhdy4KKyAgICBzdGF0ZS5z
ZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFj
dGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAg
IHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKKworICAgIC8vIENhdXNlIGEgbG9zdCBjb250ZXh0IHdo
aWxlIHRoZSBiZWdpbiBmcmFtZSBpcyBpbiBmbGlnaHQuCisgICAgc3RhdGUuZGlkTG9zZUNvbnRl
eHQoKTsKKworICAgIC8vIEFzayBmb3IgYW5vdGhlciBkcmF3LiBFeHBlY3Qgbm90aGluZyBoYXBw
ZW5zLgorICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisK
KyAgICAvLyBGaW5pc2ggdGhlIGZyYW1lLCB1cGRhdGUgcmVzb3VyY2VzLCBhbmQgY29tbWl0Lgor
ICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShz
dGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gRXhwZWN0IHRvIGJlIHRvbGQgdG8gYmVnaW4g
Y29udGV4dCByZWNyZWF0aW9uLCBpbmRlcGVuZGVudCBvZiB2c3luYyBzdGF0ZQorICAgIHN0YXRl
LmRpZEVudGVyVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9DT05URVhUX1JFQ1JFQVRJT04sIHN0YXRlLm5leHRBY3Rpb24oKSk7Cisg
ICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTiwgc3RhdGUubmV4dEFjdGlv
bigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0
TG9zdFdoaWxlQ29tbWl0SW5Qcm9ncmVzc0FuZEFub3RoZXJDb21taXRSZXF1ZXN0ZWQpCit7Cisg
ICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAg
ICAvLyBHZXQgYSBjb21taXQgaW4gZmxpZ2h0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRy
dWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lO
X0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBTZXQgZGFtYWdlIGFuZCBleHBlY3QgYSBkcmF3Lgor
ICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOworICAgIHN0YXRlLmRpZEVudGVyVlN5bmMo
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rp
b24oKSk7CisgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOworCisgICAgLy8gQ2F1c2UgYSBsb3N0
IGNvbnRleHQgd2hpbGUgdGhlIGJlZ2luIGZyYW1lIGlzIGluIGZsaWdodC4KKyAgICBzdGF0ZS5k
aWRMb3NlQ29udGV4dCgpOworCisgICAgLy8gQXNrIGZvciBhbm90aGVyIGRyYXcgYW5kIGFsc28g
c2V0IG5lZWRzIGNvbW1pdC4gRXhwZWN0IG5vdGhpbmcgaGFwcGVucy4KKyAgICAvLyBTZXR0aW5n
IGFub3RoZXIgY29tbWl0IHdpbGwgcHV0IHVzIGludG8KKyAgICAvLyBDT01NSVRfU1RBVEVfV0FJ
VElOR19GT1JfRklSU1RfRFJBVyBhZnRlciB3ZSBmaW5pc2ggdGhlIGZyYW1lIG9uIHRoZSBtYWlu
CisgICAgLy8gdGhyZWFkLgorICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOworICAgIHN0
YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBGaW5p
c2ggdGhlIGZyYW1lLCB1cGRhdGUgcmVzb3VyY2VzLCBhbmQgY29tbWl0LgorICAgIHN0YXRlLmJl
Z2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigp
KTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2Up
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwg
c3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0
aW9uKCkpOworCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRf
U1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7
CisKKyAgICAvLyBFeHBlY3QgdG8gYmUgdG9sZCB0byBiZWdpbiBjb250ZXh0IHJlY3JlYXRpb24s
IGluZGVwZW5kZW50IG9mIHZzeW5jIHN0YXRlCisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0NPTlRF
WFRfUkVDUkVBVElPTiwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS5kaWRMZWF2ZVZT
eW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fQ09OVEVYVF9SRUNSRUFUSU9OLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworfQorCisKK1RFU1Qo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RmluaXNoQWxsUmVuZGVyaW5nV2hpbGVD
b250ZXh0TG9zdCkKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0Vmlz
aWJsZSh0cnVlKTsKKworICAgIC8vIENhdXNlIGEgbG9zdCBjb250ZXh0IGxvc3QuCisgICAgc3Rh
dGUuZGlkTG9zZUNvbnRleHQoKTsKKworICAgIC8vIEFzayBhIGZvcmNlZCByZWRyYXcgYW5kIHZl
cmlmeSBpdCBvY3VycnMuCisgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRSZWRyYXcodHJ1ZSk7Cisg
ICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuZGlk
TGVhdmVWU3luYygpOworCisgICAgLy8gQ2xlYXIgdGhlIGZvcmNlZCByZWRyYXcgYml0LgorICAg
IHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KGZhbHNlKTsKKworICAgIC8vIEV4cGVjdCB0byBi
ZSB0b2xkIHRvIGJlZ2luIGNvbnRleHQgcmVjcmVhdGlvbiwgaW5kZXBlbmRlbnQgb2YgdnN5bmMg
c3RhdGUKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJ
Tl9DT05URVhUX1JFQ1JFQVRJT04sIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBk
YXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIEFzayBhIGZvcmNlZCByZWRy
YXcgYW5kIHZlcmlmeSBpdCBvY3VycnMuCisgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRSZWRyYXco
dHJ1ZSk7CisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAg
c3RhdGUuZGlkTGVhdmVWU3luYygpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKaW5kZXggNDc1OTg3ZjEzYWM1ODlmNTA3MjRm
MjM5ZWYwYWRkMzA1MjQ3NDA2Yy4uNDVmNjFiOTBiZjU0ZTJlY2U3OGJkYTg4M2ZmYTBhMjZiZDU0
MzZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxl
clRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJU
ZXN0LmNwcApAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcCIpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVw
ZGF0ZU1vcmVSZXNvdXJjZXMoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlv
blVwZGF0ZU1vcmVSZXNvdXJjZXMiKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rp
b25Db21taXQoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIp
OyB9CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJlY3JlYXRp
b24oKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkJlZ2luQ29udGV4dFJl
Y3JlYXRpb24iKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2hhc01vcmVSZXNvdXJjZVVw
ZGF0ZXM7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNj
aGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFj
dGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKSB7IH0KIAogcHJvdGVjdGVkOgogICAgIGludCBt
X251bURyYXdzOwpAQCAtMjE1LDYgKzIxNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkgeyB9CiAKIHByb3RlY3RlZDoKICAgICBp
bnQgbV9udW1EcmF3czsK
</data>

          </attachment>
      

    </bug>

</bugzilla>