<?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>93757</bug_id>
          
          <creation_ts>2012-08-10 17:12:15 -0700</creation_ts>
          <short_desc>[chromium] Clean up dependencies for Canvas2DLayerBridgeTest and GraphicsLayerChromiumTest unit tests</short_desc>
          <delta_ts>2012-08-13 15:47:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>692980</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-10 17:12:15 -0700</bug_when>
    <thetext>[chromium] Clean up dependencies for Canvas2DLayerBridgeTest and GraphicsLayerChromiumTest unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692986</commentid>
    <comment_count>1</comment_count>
      <attachid>157842</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-10 17:21:24 -0700</bug_when>
    <thetext>Created attachment 157842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692989</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-10 17:24:19 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692992</commentid>
    <comment_count>3</comment_count>
      <attachid>157842</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-10 17:39:41 -0700</bug_when>
    <thetext>Comment on attachment 157842
Patch

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

&gt; Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.cpp:-122
&gt; -    DebugScopedSetMainThread m_main;

Ok, but please run these unit tests in a debug build before committing this.

&gt; Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.cpp:274
&gt; +    EXPECT_TRUE(m_platformLayer-&gt;hasActiveAnimation());

I&apos;m not sure that these GraphicsLayerChromiumTests are really doing anything anymore? I agree with your ChangeLog entry that this used to just test conversion of WebCore types into CC types, but now all they&apos;re testing is that different types of animations get added and now exist.  Does it make sense to even have more than one of these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692997</commentid>
    <comment_count>4</comment_count>
      <attachid>157842</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-10 17:55:56 -0700</bug_when>
    <thetext>Comment on attachment 157842
Patch

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

&gt;&gt; Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.cpp:-122
&gt;&gt; -    DebugScopedSetMainThread m_main;
&gt; 
&gt; Ok, but please run these unit tests in a debug build before committing this.

Now that these tests don&apos;t use CC things they can&apos;t really get to the compositor thread (and I&apos;ve verified that the dchecks are happy).

&gt;&gt; Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.cpp:274
&gt;&gt; +    EXPECT_TRUE(m_platformLayer-&gt;hasActiveAnimation());
&gt; 
&gt; I&apos;m not sure that these GraphicsLayerChromiumTests are really doing anything anymore? I agree with your ChangeLog entry that this used to just test conversion of WebCore types into CC types, but now all they&apos;re testing is that different types of animations get added and now exist.  Does it make sense to even have more than one of these?

That&apos;s a good point.  I think that the Preserve3DWith.. one is still useful since we&apos;re switching an animation between different WebLayers.  The rest of these mostly test that GraphicsLayerChromium doesn&apos;t bail completely on these animation types.  Maybe I should just be checking the return value of addAnimation() ?  Note that createTransform...BigRotation() is testing that GraphicsLayerChromium _does_ barf on a particular animation....but that would be better as an AnimationTranslationUtil test.

I&apos;ll take a pass at cleaning these up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694092</commentid>
    <comment_count>5</comment_count>
      <attachid>158105</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-13 14:30:07 -0700</bug_when>
    <thetext>Created attachment 158105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694093</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-13 14:31:37 -0700</bug_when>
    <thetext>Take two - I&apos;ve moved most of the animation-related tests to AnimationTranslationUtilTest.cpp.  I also had to clean up a few unit tests that were leaking their &quot;fake&quot; thread identity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694101</commentid>
    <comment_count>7</comment_count>
      <attachid>158105</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-13 14:38:58 -0700</bug_when>
    <thetext>Comment on attachment 158105
Patch

R=me.  Thanks for moving those tests around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694184</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-13 15:47:02 -0700</bug_when>
    <thetext>Committed r125466: &lt;http://trac.webkit.org/changeset/125466&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157842</attachid>
            <date>2012-08-10 17:21:24 -0700</date>
            <delta_ts>2012-08-13 14:30:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93757-20120810172059.patch</filename>
            <type>text/plain</type>
            <size>25022</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyOTA1M2M0ZWIyMjFi
ZDI4YmFlYWJkN2NjYmIxYmEyMTE1ZTE0YzE2Li5kMzYwYTI0NWQwOGUzNGM3ZjU2ZTc4NTNmYjBk
ZjE3YTY0YjJjODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOC0xMCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQ2xlYW4gdXAgZGVwZW5kZW5jaWVzIGZvciBDYW52YXMyRExheWVyQnJpZGdlVGVzdCBhbmQg
R3JhcGhpY3NMYXllckNocm9taXVtVGVzdCB1bml0IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzc1NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZXMgYSBmdW5jdGlvbiB0byBjaGVjayBm
b3IgYWN0aXZlIGFuaW1hdGlvbnMgb24gYSBsYXllci4KKworICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJMYXllci5oOgorICAgICAgICAoV2ViTGF5ZXIpOgorCiAyMDEyLTA4LTA2ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSBD
Q0dyYXBoaWNzQ29udGV4dCBhcyBXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDY0OWUyNzc5ZTg3ZTFjYTMxN2E4MjEzZmQ3YzVkMDZiODllYTdkOWEuLjljZTE4MjIyYzc3
Y2UzZWUzNTJhZDQ2ZmRjMjNiYjIyOGExOGExMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMi0wOC0xMCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtjaHJvbWl1bV0gQ2xlYW4gdXAgZGVwZW5kZW5jaWVzIGZvciBDYW52YXMyRExheWVy
QnJpZGdlVGVzdCBhbmQgR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCB1bml0IHRlc3RzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzc1NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZXMgdGhlIGN1
cnJlbnQgY29udGVudHNTY2FsZSBmb3IgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSk6CisKIDIwMTItMDgtMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgbm8gdGltZXVwZGF0ZSBldmVudHMgZW1pdHRlZCBmb3IgbWVkaWEg
Y29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4ZjJmOTM4ZDM0OTkxMDMx
N2ZmOWRiMzNjY2VkY2RjNDNiZmVlZDdhLi42MTg1YWFhYTI2NjhiNjVmYjMxYWJlNzEzMjQwMTU1
NDI2Y2U3OTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisy
MDEyLTA4LTEwICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBDbGVhbiB1cCBkZXBlbmRlbmNpZXMgZm9yIENhbnZhczJETGF5ZXJCcmlk
Z2VUZXN0IGFuZCBHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0IHVuaXQgdGVzdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNzU3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnJlYWtzIHVwIHNvbWUgdW5p
dCB0ZXN0cyBhbmQgcmVtb3ZlcyB1bnVzZWQgY29kZSB0byBhdm9pZCB1bml0IHRlc3RzIGRlcGVu
ZGluZyBvbiBib3RoIG5vbi1jb21wb3NpdG9yIFdlYkNvcmUKKyAgICAgICAgbG9naWMgYW5kIGNv
bXBvc2l0b3IgaW50ZXJuYWxzLiBDYW52YXMyRExheWVyQnJpZGdlVGVzdCBoYWQgc29tZSB2ZXN0
aWdhbCBpbmNsdWRlcyBhbmQgbG9jYWwgdmFyaWFibGVzIHRoYXQKKyAgICAgICAgd2VyZW4ndCBi
ZWluZyB1c2VkLCB0aG9zZSBhcmUgcmVtb3ZlZC4gR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCB3
YXMgcmVhY2hpbmcgaW50byBDQyB0eXBlcywgYnV0IGNvdWxkIG1vc3RseQorICAgICAgICB1c2Ug
UGxhdGZvcm0gQVBJIHR5cGVzIGZvciB0ZXN0aW5nLgorICAgICAgICAKKyAgICAgICAgR3JhcGhp
Y3NMYXllckNocm9taXVtVGVzdCBoYWQgc29tZSB0ZXN0cyB0aGF0IHdlcmUgdmVyaWZ5aW5nIHRo
YXQgd2UgY291bGQgY29ycmVjdGx5IHRyYW5zbGF0ZSBXZWJDb3JlCisgICAgICAgIGFuaW1hdGlv
biBsaXN0cyBpbnRvIENDQW5pbWF0aW9uIHR5cGVzLiBUaGVzZSB0ZXN0cyBzZWVtZWQgbWlzcGxh
Y2VkIHNpbmNlIHRoZSBsb2dpYyBpcyBpbgorICAgICAgICBBbmltYXRpb25UcmFuc2xhdGlvblV0
aWwsIG5vdCBHcmFwaGljc0xheWVyQ2hyb21pdW0uIFRoZXkgYXJlbid0IHRyaXZpYWwgdG8gcG9y
dCB0byBXZWJBbmltYXRpb24gc2luY2UgdGhlCisgICAgICAgIGV4cG9zZWQgQVBJIG9uIHRoZSBX
ZWJBbmltYXRpb24gZmFtaWx5IGRvZXMgbm90IHNlZW0gcXVpdGUgd2lkZSBlbm91Z2ggZm9yIHdo
YXQgdGhlc2UgYXJlIGNoZWNraW5nIGZvci4gVGhlCisgICAgICAgIHRlc3RzIHRoZW1zZWx2ZXMg
YXJlbid0IHRlcnJpYmx5IG1lYXR5IC0gbW9zdGx5IHNldHRpbmcgYSB2YWx1ZSBhbmQgYXNzZXJ0
aW5nIHRoYXQgaXQgY29tZXMgb3V0IHRoZSBzYW1lIC0gYW5kCisgICAgICAgIHRoZSBkZXBlbmRl
bmN5IG1lc3Mgc2VlbXMgbGlrZSBhIHdvcnNlIHByb2JsZW0gdGhhbiB0aGUgdGVzdCBjb3ZlcmFn
ZSwgc28gSSd2ZSByZW1vdmVkIHRoZW0gZm9yIG5vdy4KKworICAgICAgICAqIFdlYktpdC5neXBp
OgorICAgICAgICAqIHNyYy9XZWJMYXllci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
OjpoYXNBY3RpdmVBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiB0ZXN0
cy9DYW52YXMyRExheWVyQnJpZGdlVGVzdC5jcHA6CisgICAgICAgIChDYW52YXMyRExheWVyQnJp
ZGdlVGVzdDo6ZnVsbExpZmVjeWNsZVRlc3QpOgorICAgICAgICAqIHRlc3RzL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVyQ2hyb21p
dW1UZXN0OjpHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKFdlYktpdDo6R3Jh
cGhpY3NMYXllckNocm9taXVtVGVzdDo6fkdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QpOgorICAg
ICAgICAoR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OlRFU1Rf
Rik6CisgICAgICAgICogdGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwOgorICAgICAgICAq
IHRlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0Q29tbW9uLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50KToKKwogMjAxMi0wOC0x
MCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllci5oCmluZGV4IGVjNjAyNDExYjc3ODgwZTU5MGI3NjdjZjYxNDhiZmI1MDY3OTZi
NzUuLjg0MDQxNjc1NWZjZDVkOGQwYWRmNTkzNDNkMmQ5YzhiMjA2MjVjZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKQEAgLTE2OCw2ICsxNjgsOSBAQCBw
dWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBt
b25vdG9uaWNUaW1lKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhk
b3VibGUgbW9ub3RvbmljVGltZSk7CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBsYXll
ciBoYXMgYW55IGFjdGl2ZSBhbmltYXRpb25zIC0gdXNlZnVsIGZvciB0ZXN0cy4KKyAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgaGFzQWN0aXZlQW5pbWF0aW9uKCk7CisKICAgICAvLyBUcmFuc2ZlcnMg
YWxsIGFuaW1hdGlvbnMgcnVubmluZyBvbiB0aGUgY3VycmVudCBsYXllci4KICAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgdHJhbnNmZXJBbmltYXRpb25zVG8oV2ViTGF5ZXIqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uaAppbmRleCA1YWUwOTQ4Nzc4ZWY1Yjk3N2MzNDlmMDM2OTY5
MTA1ZmQ3ODRkM2Y4Li5hYTY0ZWFkNmQ2NjVlMjU4ZDkwZDAyNjBmYWE5MTE1MGI5NmRhZDZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFw
aGljc0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIEV4cG9zZWQgZm9yIHRlc3RzLgogICAgIFdlYktpdDo6V2ViTGF5ZXIg
Y29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQorICAgIGZs
b2F0IGNvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbEJlRGVzdHJveWVkKCk7CkBAIC0xNTEsNyArMTUyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHVwZGF0ZUNvbnRlbnRzU2NhbGUoKTsKIAogICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFdl
YktpdDo6V2ViTGF5ZXIpOwotICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogICAg
IGludCBtYXBBbmltYXRpb25OYW1lVG9JZChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCA5ZDA0MWExOGRhNjc3ZDk5ODk1MDYy
ODQ3Yzc5MmIwMDViYzA3Yjc5Li4xZTZkNjgxMTJlZjdjMDE1MzYwYThlMjliMTA1NTBjZGM1MmJi
ZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTE2MCw2ICsxNjAsNyBAQAog
ICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rz
L1dlYkxheWVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdU
ZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3RDb21tb24u
aCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsVGVzdC5jcHAn
LAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VTZXJpYWxpemVyVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmluZGV4IDdhNjA0YjgxZWUwYTc3NzJjNzE5MWNiOTFh
ZjIzODNjODlkZTY1ZjguLjE2YTI2ZjFiMDAxMTIyN2U1NzU1OWZmN2RmODQyNTJlNjk5Y2YwYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKQEAgLTM2NCw2ICszNjQs
MTEgQEAgdm9pZCBXZWJMYXllcjo6cmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGlt
ZSkKICAgICBtX3ByaXZhdGUtPnJlc3VtZUFuaW1hdGlvbnMobW9ub3RvbmljVGltZSk7CiB9CiAK
K2Jvb2wgV2ViTGF5ZXI6Omhhc0FjdGl2ZUFuaW1hdGlvbigpCit7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7Cit9CisKIHZvaWQgV2ViTGF5ZXI6OnRyYW5zZmVy
QW5pbWF0aW9uc1RvKFdlYkxheWVyKiBvdGhlcikKIHsKICAgICBBU1NFUlQob3RoZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQnJpZGdl
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJCcmlk
Z2VUZXN0LmNwcAppbmRleCAzOWUzNzRhMzc2YjIzNDg5YWQyOWE2NjhjNzNhZjFhZjlkZWUxM2Yy
Li5lZmI1NTgzZTg0YTRmYTgzOWMzYjUwNmNhNmNkN2M0NDYwYmIxY2FiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJCcmlkZ2VUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJCcmlkZ2VUZXN0
LmNwcApAQCAtMzAsMTIgKzMwLDggQEAKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0
M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgotI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJXZWJD
b21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAiY2MvQ0NHcmFwaGlj
c0NvbnRleHQuaCIKLSNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NUZXh0dXJlVXBkYXRlUXVldWUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUaHJlYWQuaCIKIApAQCAtNzYs
MTAgKzcyLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZnVsbExpZmVjeWNsZVRlc3QoVGhyZWFk
TW9kZSB0aHJlYWRNb2RlLCBEZWZlcnJhbE1vZGUgZGVmZXJyYWxNb2RlKQogICAgIHsKICAgICAg
ICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtYWluQ29udGV4dCA9IEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIo
bmV3IE1vY2tDYW52YXNDb250ZXh0KSk7Ci0gICAgICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4
dD4gY2NJbXBsQ29udGV4dCA9IEZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6Y3JlYXRl
KGFkb3B0UHRyKG5ldyBNb2NrQ2FudmFzQ29udGV4dCkpOwogCiAgICAgICAgIE1vY2tDYW52YXND
b250ZXh0JiBtYWluTW9jayA9ICpzdGF0aWNfY2FzdDxNb2NrQ2FudmFzQ29udGV4dCo+KEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1haW5Db250
ZXh0LmdldCgpKSk7Ci0gICAgICAgIE1vY2tDYW52YXNDb250ZXh0JiBpbXBsTW9jayA9ICpzdGF0
aWNfY2FzdDxNb2NrQ2FudmFzQ29udGV4dCo+KGNjSW1wbENvbnRleHQtPmNvbnRleHQzRCgpKTsK
IAogICAgICAgICBNb2NrV2ViVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKIApAQCAtMTE2LDcgKzEx
MCw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1haW5Nb2NrLCBmbHVz
aCgpKTsKICAgICAgICAgfQogICAgICAgICBicmlkZ2UuY2xlYXIoKTsKLSAgICAgICAgOjp0ZXN0
aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmaW1wbE1vY2spOwogCiAgICAg
ICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAK
aW5kZXggZjBiYjNhZDBlZGRkYTQ0YzUzYzc3OThhN2YyYThlMzRhZWE0NDBhMy4uMDY3YWE4YmJj
NTljMTk5YzIxOTAzMjYyNTUwMGFkMjQ1NmVkMzk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBA
IC0yNiwyOSArMjYsMjQgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgog
Ci0jaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiQ29tcG9zaXRv
ckZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkZha2VDQ0xheWVyVHJlZUhv
c3RDbGllbnQuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNp
bmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTWF0cml4M0RUcmFuc2Zvcm1PcGVy
YXRpb24uaCIKICNpbmNsdWRlICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKLSNpbmNsdWRlICJXZWJDb21wb3NpdG9y
LmgiCi0KLSNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKLSNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgiCi0jaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgot
CisjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlld1Rlc3RDb21tb24uaCIKICNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJBbmltYXRpb24uaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViQ29tcG9zaXRvci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdEFuaW1hdGlv
bkN1cnZlLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0S2V5ZnJhbWUuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5
ZXJUcmVlVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXRUZXN0czsKIAogbmFtZXNwYWNlIHsKIApAQCAtNjIsMzEgKzU3LDYgQEAgY2xhc3MgTW9j
a0dyYXBoaWNzTGF5ZXJDbGllbnQgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CiAgICAg
dmlydHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IDI7IH0KIH07CiAKLWNsYXNzIE1vY2tMYXllclRyZWVIb3N0IDogcHVibGljIENDTGF5ZXJUcmVl
SG9zdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+
IGNyZWF0ZSgpCi0gICAgewotICAgICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwot
ICAgICAgICBPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+IGxheWVyVHJlZUhvc3QoYWRvcHRQdHIo
bmV3IE1vY2tMYXllclRyZWVIb3N0KG5ldyBGYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50KCksIHNl
dHRpbmdzKSkpOwotICAgICAgICBib29sIHN1Y2Nlc3MgPSBsYXllclRyZWVIb3N0LT5pbml0aWFs
aXplKCk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwotICAgICAgICBsYXllclRyZWVI
b3N0LT5zZXRSb290TGF5ZXIoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOwotICAgICAgICBsYXll
clRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxLCAxKSwgSW50U2l6ZSgxLCAxKSk7
Ci0gICAgICAgIHJldHVybiBsYXllclRyZWVIb3N0LnJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9z
dEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQotICAgIHsKLSAgICAgICAg
cmV0dXJuIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncygpLCBjbGllbnQpOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBNb2NrTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RD
bGllbnQqIGNsaWVudCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCi0gICAg
ICAgIDogQ0NMYXllclRyZWVIb3N0KGNsaWVudCwgc2V0dGluZ3MpCi0gICAgewotICAgIH0KLX07
Ci0KIGNsYXNzIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCgpCkBAIC05NSwxNSAr
NjUsMTUgQEAgcHVibGljOgogICAgICAgICBXZWJDb21wb3NpdG9yOjpzZXRBY2NlbGVyYXRlZEFu
aW1hdGlvbkVuYWJsZWQodHJ1ZSk7CiAgICAgICAgIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUo
MCk7CiAgICAgICAgIG1fZ3JhcGhpY3NMYXllciA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8R3JhcGhp
Y3NMYXllckNocm9taXVtPihHcmFwaGljc0xheWVyOjpjcmVhdGUoJm1fY2xpZW50KSk7Ci0gICAg
ICAgIG1fcGxhdGZvcm1MYXllciA9IG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpLT51
bndyYXA8TGF5ZXJDaHJvbWl1bT4oKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gTW9ja0xh
eWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOwotICAgICAgICBtX3BsYXRmb3JtTGF5ZXItPnNldExheWVy
VHJlZUhvc3QobV9sYXllclRyZWVIb3N0LmdldCgpKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVy
ID0gbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIG1fbGF5ZXJUcmVl
Vmlldy5pbml0aWFsaXplKCZtX2xheWVyVHJlZVZpZXdDbGllbnQsICptX3BsYXRmb3JtTGF5ZXIs
IFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpOworICAgICAgICBtX2xheWVyVHJlZVZpZXcu
c2V0Vmlld3BvcnRTaXplKFdlYlNpemUoMSwgMSksIFdlYlNpemUoMSwgMSkpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QoKQogICAgIHsKICAgICAgICAg
bV9ncmFwaGljc0xheWVyLmNsZWFyKCk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC5jbGVhcigp
OworICAgICAgICBtX2xheWVyVHJlZVZpZXcucmVzZXQoKTsKICAgICAgICAgV2ViQ29tcG9zaXRv
cjo6c2h1dGRvd24oKTsKICAgICB9CiAKQEAgLTExMywzNiArODMsMzggQEAgcHJvdGVjdGVkOgog
ICAgICAgICBFWFBFQ1RfRkxPQVRfRVEodHJhbnNsYXRlWCwgbWF0cml4Lm00MSgpKTsKICAgICB9
CiAKLSAgICBMYXllckNocm9taXVtKiBtX3BsYXRmb3JtTGF5ZXI7CisgICAgV2ViTGF5ZXIqIG1f
cGxhdGZvcm1MYXllcjsKICAgICBPd25QdHI8R3JhcGhpY3NMYXllckNocm9taXVtPiBtX2dyYXBo
aWNzTGF5ZXI7Ci0gICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gbV9sYXllclRyZWVIb3N0Owog
CiBwcml2YXRlOgorICAgIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IG1fbGF5ZXJUcmVlVmll
d0NsaWVudDsKKyAgICBXZWJMYXllclRyZWVWaWV3IG1fbGF5ZXJUcmVlVmlldzsKICAgICBNb2Nr
R3JhcGhpY3NMYXllckNsaWVudCBtX2NsaWVudDsKLSAgICBEZWJ1Z1Njb3BlZFNldE1haW5UaHJl
YWQgbV9tYWluOwogfTsKIAogVEVTVF9GKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QsIHVwZGF0
ZUxheWVyUHJlc2VydmVzM0RXaXRoQW5pbWF0aW9ucykKIHsKICAgICBBU1NFUlRfRkFMU0UobV9w
bGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAKLSAgICBPd25QdHI8Q0NBY3Rp
dmVBbmltYXRpb24+IGZsb2F0QW5pbWF0aW9uKENDQWN0aXZlQW5pbWF0aW9uOjpjcmVhdGUoYWRv
cHRQdHIobmV3IEZha2VGbG9hdEFuaW1hdGlvbkN1cnZlKSwgMCwgMSwgQ0NBY3RpdmVBbmltYXRp
b246Ok9wYWNpdHkpKTsKLSAgICBtX3BsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJv
bGxlcigpLT5hZGRBbmltYXRpb24oZmxvYXRBbmltYXRpb24ucmVsZWFzZSgpKTsKKyAgICBXZWJG
bG9hdEFuaW1hdGlvbkN1cnZlIGN1cnZlOworICAgIGN1cnZlLmFkZChXZWJGbG9hdEtleWZyYW1l
KDAuMCwgMC4wKSk7CisgICAgV2ViQW5pbWF0aW9uIGZsb2F0QW5pbWF0aW9uKGN1cnZlLCAxLCAx
LCBXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5T3BhY2l0eSk7CisgICAgQVNTRVJUX1RSVUUo
bV9wbGF0Zm9ybUxheWVyLT5hZGRBbmltYXRpb24oZmxvYXRBbmltYXRpb24pKTsKIAogICAgIEFT
U0VSVF9UUlVFKG1fcGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogCiAgICAg
bV9ncmFwaGljc0xheWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKIAotICAgIG1fcGxhdGZvcm1M
YXllciA9IG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpLT51bndyYXA8TGF5ZXJDaHJv
bWl1bT4oKTsKKyAgICBtX3BsYXRmb3JtTGF5ZXIgPSBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3Jt
TGF5ZXIoKTsKICAgICBBU1NFUlRfVFJVRShtX3BsYXRmb3JtTGF5ZXIpOwogCiAgICAgQVNTRVJU
X1RSVUUobV9wbGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7Ci0gICAgbV9wbGF0
Zm9ybUxheWVyLT5yZW1vdmVBbmltYXRpb24oMCk7CisgICAgbV9wbGF0Zm9ybUxheWVyLT5yZW1v
dmVBbmltYXRpb24oMSk7CiAgICAgQVNTRVJUX0ZBTFNFKG1fcGxhdGZvcm1MYXllci0+aGFzQWN0
aXZlQW5pbWF0aW9uKCkpOwogCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRQcmVzZXJ2ZXMzRChm
YWxzZSk7CiAKLSAgICBtX3BsYXRmb3JtTGF5ZXIgPSBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3Jt
TGF5ZXIoKS0+dW53cmFwPExheWVyQ2hyb21pdW0+KCk7CisgICAgbV9wbGF0Zm9ybUxheWVyID0g
bV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7CiAgICAgQVNTRVJUX1RSVUUobV9wbGF0
Zm9ybUxheWVyKTsKIAogICAgIEFTU0VSVF9GQUxTRShtX3BsYXRmb3JtTGF5ZXItPmhhc0FjdGl2
ZUFuaW1hdGlvbigpKTsKQEAgLTE2MywyMSArMTM1LDcgQEAgVEVTVF9GKEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bVRlc3QsIGNyZWF0ZU9wYWNpdHlBbmltYXRpb24pCiAKICAgICBFWFBFQ1RfVFJVRShh
ZGRlZEFuaW1hdGlvbik7CiAKLSAgICBFWFBFQ1RfVFJVRShtX3BsYXRmb3JtTGF5ZXItPmxheWVy
QW5pbWF0aW9uQ29udHJvbGxlcigpLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7Ci0KLSAgICBDQ0Fj
dGl2ZUFuaW1hdGlvbiogYWN0aXZlQW5pbWF0aW9uID0gbV9wbGF0Zm9ybUxheWVyLT5sYXllckFu
aW1hdGlvbkNvbnRyb2xsZXIoKS0+Z2V0QWN0aXZlQW5pbWF0aW9uKENDQWN0aXZlQW5pbWF0aW9u
OjpPcGFjaXR5KTsKLSAgICBFWFBFQ1RfVFJVRShhY3RpdmVBbmltYXRpb24pOwotCi0gICAgRVhQ
RUNUX0VRKDEsIGFjdGl2ZUFuaW1hdGlvbi0+aXRlcmF0aW9ucygpKTsKLSAgICBFWFBFQ1RfRVEo
Q0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHksIGFjdGl2ZUFuaW1hdGlvbi0+dGFyZ2V0UHJvcGVy
dHkoKSk7Ci0KLSAgICBFWFBFQ1RfRVEoQ0NBbmltYXRpb25DdXJ2ZTo6RmxvYXQsIGFjdGl2ZUFu
aW1hdGlvbi0+Y3VydmUoKS0+dHlwZSgpKTsKLQotICAgIGNvbnN0IENDRmxvYXRBbmltYXRpb25D
dXJ2ZSogY3VydmUgPSBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnRvRmxvYXRBbmltYXRpb25D
dXJ2ZSgpOwotICAgIEVYUEVDVF9UUlVFKGN1cnZlKTsKLQotICAgIEVYUEVDVF9FUSgwLCBjdXJ2
ZS0+Z2V0VmFsdWUoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBjdXJ2ZS0+Z2V0VmFsdWUoZHVyYXRp
b24pKTsKKyAgICBFWFBFQ1RfVFJVRShtX3BsYXRmb3JtTGF5ZXItPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKIH0KIAogVEVTVF9GKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QsIGNyZWF0ZVRyYW5z
Zm9ybUFuaW1hdGlvbikKQEAgLTE5OSwyMSArMTU3LDcgQEAgVEVTVF9GKEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bVRlc3QsIGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbikKICAgICBJbnRTaXplIGJveFNp
emU7CiAgICAgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBh
bmltYXRpb24uZ2V0KCksICIiLCAwKTsKIAotICAgIEVYUEVDVF9UUlVFKG1fcGxhdGZvcm1MYXll
ci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKLQot
ICAgIENDQWN0aXZlQW5pbWF0aW9uKiBhY3RpdmVBbmltYXRpb24gPSBtX3BsYXRmb3JtTGF5ZXIt
PmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5nZXRBY3RpdmVBbmltYXRpb24oQ0NBY3RpdmVB
bmltYXRpb246OlRyYW5zZm9ybSk7Ci0gICAgRVhQRUNUX1RSVUUoYWN0aXZlQW5pbWF0aW9uKTsK
LQotICAgIEVYUEVDVF9FUSgxLCBhY3RpdmVBbmltYXRpb24tPml0ZXJhdGlvbnMoKSk7Ci0gICAg
RVhQRUNUX0VRKENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0sIGFjdGl2ZUFuaW1hdGlvbi0+
dGFyZ2V0UHJvcGVydHkoKSk7Ci0KLSAgICBFWFBFQ1RfRVEoQ0NBbmltYXRpb25DdXJ2ZTo6VHJh
bnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnR5cGUoKSk7Ci0KLSAgICBjb25zdCBD
Q1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKiBjdXJ2ZSA9IGFjdGl2ZUFuaW1hdGlvbi0+Y3VydmUo
KS0+dG9UcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSgpOwotICAgIEVYUEVDVF9UUlVFKGN1cnZlKTsK
LQotICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVlKDApKTsKLSAgICBleHBl
Y3RUcmFuc2xhdGVYKDQsIGN1cnZlLT5nZXRWYWx1ZShkdXJhdGlvbikpOworICAgIEVYUEVDVF9U
UlVFKG1fcGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogfQogCiBURVNUX0Yo
R3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwgY3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uV2l0aEJp
Z1JvdGF0aW9uKQpAQCAtMjM1LDcgKzE3OSw3IEBAIFRFU1RfRihHcmFwaGljc0xheWVyQ2hyb21p
dW1UZXN0LCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25XaXRoQmlnUm90YXRpb24pCiAgICAgSW50
U2l6ZSBib3hTaXplOwogICAgIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHZhbHVlcywg
Ym94U2l6ZSwgYW5pbWF0aW9uLmdldCgpLCAiIiwgMCk7CiAKLSAgICBFWFBFQ1RfRkFMU0UobV9w
bGF0Zm9ybUxheWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOworICAgIEVYUEVDVF9GQUxTRShtX3BsYXRmb3JtTGF5ZXItPmhhc0FjdGl2ZUFuaW1h
dGlvbigpKTsKIH0KIAogVEVTVF9GKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QsIGNyZWF0ZVRy
YW5zZm9ybUFuaW1hdGlvbldpdGhSb3RhdGlvbkludm9sdmluZ05lZ2F0aXZlQW5nbGVzKQpAQCAt
MjU3LDcgKzIwMSw3IEBAIFRFU1RfRihHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LCBjcmVhdGVU
cmFuc2Zvcm1BbmltYXRpb25XaXRoUm90YXRpb25JbnZvbHZpbmdOCiAgICAgSW50U2l6ZSBib3hT
aXplOwogICAgIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwg
YW5pbWF0aW9uLmdldCgpLCAiIiwgMCk7CiAKLSAgICBFWFBFQ1RfVFJVRShtX3BsYXRmb3JtTGF5
ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7Cisg
ICAgRVhQRUNUX1RSVUUobV9wbGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiB9
CiAKIFRFU1RfRihHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LCBjcmVhdGVUcmFuc2Zvcm1Bbmlt
YXRpb25XaXRoU21hbGxSb3RhdGlvbkludm9sdmluZ0xhcmdlQW5nbGVzKQpAQCAtMjc5LDcgKzIy
Myw3IEBAIFRFU1RfRihHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LCBjcmVhdGVUcmFuc2Zvcm1B
bmltYXRpb25XaXRoU21hbGxSb3RhdGlvbkludm9sCiAgICAgSW50U2l6ZSBib3hTaXplOwogICAg
IG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0aW9u
LmdldCgpLCAiIiwgMCk7CiAKLSAgICBFWFBFQ1RfVFJVRShtX3BsYXRmb3JtTGF5ZXItPmxheWVy
QW5pbWF0aW9uQ29udHJvbGxlcigpLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CisgICAgRVhQRUNU
X1RSVUUobV9wbGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiB9CiAKIFRFU1Rf
RihHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25XaXRo
U2luZ3VsYXJNYXRyaXgpCkBAIC0zMDQsNyArMjQ4LDcgQEAgVEVTVF9GKEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bVRlc3QsIGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbldpdGhTaW5ndWxhck1hdHJpeCkK
ICAgICBJbnRTaXplIGJveFNpemU7CiAgICAgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24o
dmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksICIiLCAwKTsKIAotICAgIEVYUEVDVF9G
QUxTRShtX3BsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5oYXNBY3Rp
dmVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0ZBTFNFKG1fcGxhdGZvcm1MYXllci0+aGFzQWN0
aXZlQW5pbWF0aW9uKCkpOwogfQogCiBURVNUX0YoR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwg
Y3JlYXRlUmV2ZXJzZWRBbmltYXRpb24pCkBAIC0zMjcsMjEgKzI3MSw3IEBAIFRFU1RfRihHcmFw
aGljc0xheWVyQ2hyb21pdW1UZXN0LCBjcmVhdGVSZXZlcnNlZEFuaW1hdGlvbikKICAgICBJbnRT
aXplIGJveFNpemU7CiAgICAgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odmFsdWVzLCBi
b3hTaXplLCBhbmltYXRpb24uZ2V0KCksICIiLCAwKTsKIAotICAgIEVYUEVDVF9UUlVFKG1fcGxh
dGZvcm1MYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKLQotICAgIENDQWN0aXZlQW5pbWF0aW9uKiBhY3RpdmVBbmltYXRpb24gPSBtX3BsYXRm
b3JtTGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5nZXRBY3RpdmVBbmltYXRpb24o
Q0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSk7Ci0gICAgRVhQRUNUX1RSVUUoYWN0aXZlQW5p
bWF0aW9uKTsKLQotICAgIEVYUEVDVF9FUSgxLCBhY3RpdmVBbmltYXRpb24tPml0ZXJhdGlvbnMo
KSk7Ci0gICAgRVhQRUNUX0VRKENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0sIGFjdGl2ZUFu
aW1hdGlvbi0+dGFyZ2V0UHJvcGVydHkoKSk7Ci0KLSAgICBFWFBFQ1RfRVEoQ0NBbmltYXRpb25D
dXJ2ZTo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnR5cGUoKSk7Ci0KLSAg
ICBjb25zdCBDQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKiBjdXJ2ZSA9IGFjdGl2ZUFuaW1hdGlv
bi0+Y3VydmUoKS0+dG9UcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSgpOwotICAgIEVYUEVDVF9UUlVF
KGN1cnZlKTsKLQotICAgIGV4cGVjdFRyYW5zbGF0ZVgoNCwgY3VydmUtPmdldFZhbHVlKDApKTsK
LSAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1ZShkdXJhdGlvbikpOworICAg
IEVYUEVDVF9UUlVFKG1fcGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogfQog
CiBURVNUX0YoR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwgY3JlYXRlQWx0ZXJuYXRpbmdBbmlt
YXRpb24pCkBAIC0zNjUsMjIgKzI5NSw3IEBAIFRFU1RfRihHcmFwaGljc0xheWVyQ2hyb21pdW1U
ZXN0LCBjcmVhdGVBbHRlcm5hdGluZ0FuaW1hdGlvbikKICAgICBJbnRTaXplIGJveFNpemU7CiAg
ICAgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRp
b24uZ2V0KCksICIiLCAwKTsKIAotICAgIEVYUEVDVF9UUlVFKG1fcGxhdGZvcm1MYXllci0+bGF5
ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKLQotICAgIEND
QWN0aXZlQW5pbWF0aW9uKiBhY3RpdmVBbmltYXRpb24gPSBtX3BsYXRmb3JtTGF5ZXItPmxheWVy
QW5pbWF0aW9uQ29udHJvbGxlcigpLT5nZXRBY3RpdmVBbmltYXRpb24oQ0NBY3RpdmVBbmltYXRp
b246OlRyYW5zZm9ybSk7Ci0gICAgRVhQRUNUX1RSVUUoYWN0aXZlQW5pbWF0aW9uKTsKLSAgICBF
WFBFQ1RfVFJVRShhY3RpdmVBbmltYXRpb24tPmFsdGVybmF0ZXNEaXJlY3Rpb24oKSk7Ci0KLSAg
ICBFWFBFQ1RfRVEoMiwgYWN0aXZlQW5pbWF0aW9uLT5pdGVyYXRpb25zKCkpOwotICAgIEVYUEVD
VF9FUShDQ0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPnRhcmdl
dFByb3BlcnR5KCkpOwotCi0gICAgRVhQRUNUX0VRKENDQW5pbWF0aW9uQ3VydmU6OlRyYW5zZm9y
bSwgYWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50eXBlKCkpOwotCi0gICAgY29uc3QgQ0NUcmFu
c2Zvcm1BbmltYXRpb25DdXJ2ZSogY3VydmUgPSBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnRv
VHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUoKTsKLSAgICBFWFBFQ1RfVFJVRShjdXJ2ZSk7Ci0KLSAg
ICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1ZSgwKSk7Ci0gICAgZXhwZWN0VHJh
bnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoZHVyYXRpb24pKTsKKyAgICBFWFBFQ1RfVFJVRSht
X3BsYXRmb3JtTGF5ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KIAogVEVTVF9GKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bVRlc3QsIGNyZWF0ZVJldmVyc2VkQWx0ZXJuYXRpbmdBbmltYXRpb24p
CkBAIC00MDQsMjcgKzMxOSwxMiBAQCBURVNUX0YoR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwg
Y3JlYXRlUmV2ZXJzZWRBbHRlcm5hdGluZ0FuaW1hdGlvbikKICAgICBJbnRTaXplIGJveFNpemU7
CiAgICAgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmlt
YXRpb24uZ2V0KCksICIiLCAwKTsKIAotICAgIEVYUEVDVF9UUlVFKG1fcGxhdGZvcm1MYXllci0+
bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKLQotICAg
IENDQWN0aXZlQW5pbWF0aW9uKiBhY3RpdmVBbmltYXRpb24gPSBtX3BsYXRmb3JtTGF5ZXItPmxh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5nZXRBY3RpdmVBbmltYXRpb24oQ0NBY3RpdmVBbmlt
YXRpb246OlRyYW5zZm9ybSk7Ci0gICAgRVhQRUNUX1RSVUUoYWN0aXZlQW5pbWF0aW9uKTsKLSAg
ICBFWFBFQ1RfVFJVRShhY3RpdmVBbmltYXRpb24tPmFsdGVybmF0ZXNEaXJlY3Rpb24oKSk7Ci0K
LSAgICBFWFBFQ1RfRVEoMiwgYWN0aXZlQW5pbWF0aW9uLT5pdGVyYXRpb25zKCkpOwotICAgIEVY
UEVDVF9FUShDQ0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPnRh
cmdldFByb3BlcnR5KCkpOwotCi0gICAgRVhQRUNUX0VRKENDQW5pbWF0aW9uQ3VydmU6OlRyYW5z
Zm9ybSwgYWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50eXBlKCkpOwotCi0gICAgY29uc3QgQ0NU
cmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSogY3VydmUgPSBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCkt
PnRvVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUoKTsKLSAgICBFWFBFQ1RfVFJVRShjdXJ2ZSk7Ci0K
LSAgICBleHBlY3RUcmFuc2xhdGVYKDQsIGN1cnZlLT5nZXRWYWx1ZSgwKSk7Ci0gICAgZXhwZWN0
VHJhbnNsYXRlWCgyLCBjdXJ2ZS0+Z2V0VmFsdWUoZHVyYXRpb24pKTsKKyAgICBFWFBFQ1RfVFJV
RShtX3BsYXRmb3JtTGF5ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KIAogVEVTVF9GKEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QsIHNob3VsZFN0YXJ0V2l0aENvcnJlY3RDb250ZW50c1Nj
YWxlKQogewotICAgIEVYUEVDVF9FUSgyLCBtX3BsYXRmb3JtTGF5ZXItPmNvbnRlbnRzU2NhbGUo
KSk7CisgICAgRVhQRUNUX0VRKDIsIG1fZ3JhcGhpY3NMYXllci0+Y29udGVudHNTY2FsZSgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5jcHAKaW5kZXggNGYwMzMwMDM1OWE4Mzk2ODJlYjhl
NTQ4YzdiYzdlOThmZTIzZmQxYy4uYmVjMmM2MDM1YWNhZWYwNzM0MGExYjhjMzY0ZTFhOTkwODJm
M2NkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRy
ZWVWaWV3VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXll
clRyZWVWaWV3VGVzdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbXBvc2l0
b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJGYWtlV2ViQ29tcG9zaXRv
ck91dHB1dFN1cmZhY2UuaCIKKyNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3VGVzdENvbW1vbi5o
IgogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3IuaD4KQEAgLTQxLDI3ICs0Miw2IEBAIHVz
aW5nIHRlc3Rpbmc6OlRlc3Q7CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIE1vY2tXZWJMYXllclRy
ZWVWaWV3Q2xpZW50IDogcHVibGljIFdlYkxheWVyVHJlZVZpZXdDbGllbnQgewotcHVibGljOgot
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpIE9WRVJSSURFIHsgfQotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgT1ZFUlJJ
REUgeyB9Ci0gICAgTU9DS19NRVRIT0QwKHdpbGxCZWdpbkZyYW1lLCB2b2lkKCkpOwotICAgIE1P
Q0tfTUVUSE9EMChkaWRCZWdpbkZyYW1lLCB2b2lkKCkpOwotICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShj
b25zdCBXZWJTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGVGYWN0b3IpIE9WRVJSSURFIHsg
fQotCi0gICAgdmlydHVhbCBXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZSogY3JlYXRlT3V0cHV0
U3VyZmFjZSgpIE9WRVJSSURFCi0gICAgewotICAgICAgICByZXR1cm4gRmFrZVdlYkNvbXBvc2l0
b3JPdXRwdXRTdXJmYWNlOjpjcmVhdGUoQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlKFdlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKCkpKS5sZWFrUHRyKCk7
Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2UoYm9vbCkg
T1ZFUlJJREUgeyB9Ci0KLSAgICBNT0NLX01FVEhPRDAod2lsbENvbW1pdCwgdm9pZCgpKTsKLSAg
ICBNT0NLX01FVEhPRDAoZGlkQ29tbWl0LCB2b2lkKCkpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21taXRBbmREcmF3RnJhbWUoKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
cGxldGVTd2FwQnVmZmVycygpIE9WRVJSSURFIHsgfQotfTsKLQogY2xhc3MgTW9ja1dlYkxheWVy
VHJlZVZpZXdDbGllbnRGb3JUaHJlYWRlZFRlc3RzIDogcHVibGljIE1vY2tXZWJMYXllclRyZWVW
aWV3Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5GcmFtZSgpIE9W
RVJSSURFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVy
VHJlZVZpZXdUZXN0Q29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxh
eWVyVHJlZVZpZXdUZXN0Q29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlkY2M2MTFhOWVmMDQwZDdjYWMy
OWYyY2FjNjY0N2QxNjIyN2FjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3RDb21tb24uaApAQCAtMCwwICsxLDU3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkxheWVyVHJlZVZpZXdUZXN0Q29tbW9uX2gKKyNk
ZWZpbmUgV2ViTGF5ZXJUcmVlVmlld1Rlc3RDb21tb25faAorCisjaW5jbHVkZSAiQ29tcG9zaXRv
ckZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+Cisj
aW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IDogcHVibGljIFdlYkxh
eWVyVHJlZVZpZXdDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNv
bXBvc2l0ZSgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25z
KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgT1ZFUlJJREUgeyB9CisgICAgTU9DS19NRVRIT0QwKHdp
bGxCZWdpbkZyYW1lLCB2b2lkKCkpOworICAgIE1PQ0tfTUVUSE9EMChkaWRCZWdpbkZyYW1lLCB2
b2lkKCkpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJTaXplJiBzY3JvbGxEZWx0YSwg
ZmxvYXQgc2NhbGVGYWN0b3IpIE9WRVJSSURFIHsgfQorCisgICAgdmlydHVhbCBXZWJDb21wb3Np
dG9yT3V0cHV0U3VyZmFjZSogY3JlYXRlT3V0cHV0U3VyZmFjZSgpIE9WRVJSSURFCisgICAgewor
ICAgICAgICByZXR1cm4gRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOjpjcmVhdGUoQ29t
cG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKFdlYkdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzKCkpKS5sZWFrUHRyKCk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNyZWF0ZU91dHB1dFN1cmZhY2UoYm9vbCkgT1ZFUlJJREUgeyB9CisKKyAgICBNT0NLX01F
VEhPRDAod2lsbENvbW1pdCwgdm9pZCgpKTsKKyAgICBNT0NLX01FVEhPRDAoZGlkQ29tbWl0LCB2
b2lkKCkpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSBPVkVSUklE
RSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIE9WRVJSSURF
IHsgfQorfTsKKworfQorCisjZW5kaWYgLy8gV2ViTGF5ZXJUcmVlVmlld1Rlc3RDb21tb25faAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158105</attachid>
            <date>2012-08-13 14:30:07 -0700</date>
            <delta_ts>2012-08-13 14:38:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93757-20120813142935.patch</filename>
            <type>text/plain</type>
            <size>44821</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxYTYwNTM3YWQyZjI4
MjE1ZTA1OGU3ODNkMTYzOTVlNjA5NDFmNTAyLi5jNTA4YzVjZGMzYzYzNGU2YzU3NTVkZDZhZWU5
MTk1MWViMTZiMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOC0xMCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQ2xlYW4gdXAgZGVwZW5kZW5jaWVzIGZvciBDYW52YXMyRExheWVyQnJpZGdlVGVzdCBhbmQg
R3JhcGhpY3NMYXllckNocm9taXVtVGVzdCB1bml0IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzc1NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZXMgYSBmdW5jdGlvbiB0byBjaGVjayBm
b3IgYWN0aXZlIGFuaW1hdGlvbnMgb24gYSBsYXllci4KKworICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJMYXllci5oOgorICAgICAgICAoV2ViTGF5ZXIpOgorCiAyMDEyLTA4LTEwICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTdXBwb3J0IGNyZWF0
aW5nIEZpbGUgb2JqZWN0IGZyb20gRmlsZVN5c3RlbSBVUkwgZm9yIGZpbGVzIGluIEZpbGVTeXN0
ZW0gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNzQwMjY0Y2I5ZGYwNTA3ZTlhODBhZDExMTA0YWQ2MTIyODRi
MDE5MC4uNWZiYzcxMjFhZWVmMTM4MzU5MzhkMGExN2U0ODUwNjNkNjdjNTk2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTEwICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDbGVhbiB1cCBkZXBlbmRlbmNpZXMg
Zm9yIENhbnZhczJETGF5ZXJCcmlkZ2VUZXN0IGFuZCBHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0
IHVuaXQgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkzNzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRXhwb3NlcyB0aGUgY3VycmVudCBjb250ZW50c1NjYWxlIGZvciB0ZXN0cy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oOgor
ICAgICAgICAoR3JhcGhpY3NMYXllckNocm9taXVtKToKKwogMjAxMi0wOC0xMyAgU2ltb24gSGF1
c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBQb3J0IG1l
dGEgbWV0aG9kL3NpZ25hbC9zbG90IGhhbmRsaW5nIGluIHJ1bi10aW1lIGJyaWRnZSB0byB1c2Ug
SlNDIEMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDEzY2U1ZjE3ZWNjY2IwNDBj
MWJjMDA5OGIzODdmNzVkZjc4NWU1NjYuLmZjZjQ5NzA5Y2IwMmI1N2Y0MzE5MzI5ZTAzY2FmYzFl
MzNiY2EzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIw
MTItMDgtMTAgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIENsZWFuIHVwIGRlcGVuZGVuY2llcyBmb3IgQ2FudmFzMkRMYXllckJyaWRn
ZVRlc3QgYW5kIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QgdW5pdCB0ZXN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM3NTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCcmVha3MgdXAgc29tZSB1bml0
IHRlc3RzIGFuZCByZW1vdmVzIHVudXNlZCBjb2RlIHRvIGF2b2lkIHVuaXQgdGVzdHMgZGVwZW5k
aW5nIG9uIGJvdGggbm9uLWNvbXBvc2l0b3IgV2ViQ29yZQorICAgICAgICBsb2dpYyBhbmQgY29t
cG9zaXRvciBpbnRlcm5hbHMuIENhbnZhczJETGF5ZXJCcmlkZ2VUZXN0IGhhZCBzb21lIHZlc3Rp
Z2FsIGluY2x1ZGVzIGFuZCBsb2NhbCB2YXJpYWJsZXMgdGhhdAorICAgICAgICB3ZXJlbid0IGJl
aW5nIHVzZWQsIHRob3NlIGFyZSByZW1vdmVkLiBHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0IHdh
cyByZWFjaGluZyBpbnRvIENDIHR5cGVzLCBidXQgY291bGQgbW9zdGx5CisgICAgICAgIHVzZSBQ
bGF0Zm9ybSBBUEkgdHlwZXMgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgR3JhcGhpY3NMYXllckNo
cm9taXVtVGVzdCBoYWQgc29tZSB0ZXN0cyB0aGF0IHdlcmUgdmVyaWZ5aW5nIHRoYXQgd2UgY291
bGQgY29ycmVjdGx5IHRyYW5zbGF0ZSBXZWJDb3JlCisgICAgICAgIGFuaW1hdGlvbiBsaXN0cyBp
bnRvIENDQW5pbWF0aW9uIHR5cGVzIC0gdGhlc2UgaGF2ZSBiZWVuIG1vdmVkIGludG8gQW5pbWF0
aW9uVHJhbnNsYXRpb25VdGlsVGVzdC5jcHAsIHNpbmNlIHRoZQorICAgICAgICBsb2dpYyB1bmRl
ciB0ZXN0IGlzIGluIEFuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC4gQ3VycmVudGx5IHRoZXNlIG9u
bHkgdGVzdCB0aGF0IHdlIGFjY2VwdCAvIHJlamVjdCBhbmltYXRpb25zIGFzCisgICAgICAgIGV4
cGVjdGVkLiBUaGV5IGNvdWxkIGJlIGV4cGFuZGVkIHRvIHZlcmlmeSB0aGF0IHRoZSBhbmltYXRp
b24gd2FzIHRyYW5zbGF0ZWQgZmFpdGhmdWxseSwgYnV0IHRoYXQgd291bGQgcmVxdWlyZQorICAg
ICAgICBleHBhbmRpbmcgdGhlIGluZm9ybWF0aW9uIGV4cG9zZWQgb24gV2ViQW5pbWF0aW9uLgor
CisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogc3JjL1dlYkxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6Omhhc0FjdGl2ZUFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJCcmlkZ2VUZXN0LmNwcDoKKyAg
ICAgICAgKENhbnZhczJETGF5ZXJCcmlkZ2VUZXN0OjpmdWxsTGlmZWN5Y2xlVGVzdCk6CisgICAg
ICAgICogdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3Q6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0Ojp+R3JhcGhpY3NM
YXllckNocm9taXVtVGVzdCk6CisgICAgICAgIChHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0KToK
KyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9XZWJMYXllclRyZWVW
aWV3VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3RDb21tb24u
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTW9ja1dlYkxheWVyVHJlZVZp
ZXdDbGllbnQpOgorCiAyMDEyLTA4LTEzICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3Jh
Y2lhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEZpeCBuaXRzIGluIHRoZSBm
aW5kLWluLXBhZ2UgbWF0Y2ggcmVjdHMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyLmgKaW5kZXggZWM2MDI0MTFiNzc4ODBlNTkwYjc2N2NmNjE0OGJmYjUwNjc5
NmI3NS4uODQwNDE2NzU1ZmNkNWQ4ZDBhZGY1OTM0M2QyZDljOGIyMDYyNWNlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtMTY4LDYgKzE2OCw5IEBA
IHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoZG91Ymxl
IG1vbm90b25pY1RpbWUpOwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXN1bWVBbmltYXRpb25z
KGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxh
eWVyIGhhcyBhbnkgYWN0aXZlIGFuaW1hdGlvbnMgLSB1c2VmdWwgZm9yIHRlc3RzLgorICAgIFdF
QktJVF9FWFBPUlQgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKTsKKwogICAgIC8vIFRyYW5zZmVy
cyBhbGwgYW5pbWF0aW9ucyBydW5uaW5nIG9uIHRoZSBjdXJyZW50IGxheWVyLgogICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCB0cmFuc2ZlckFuaW1hdGlvbnNUbyhXZWJMYXllciopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xh
eWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDVhZTA5NDg3NzhlZjViOTc3YzM0OWYwMzY5
NjkxMDVmZDc4NGQzZjguLmFhNjRlYWQ2ZDY2NWUyNThkOTBkMDI2MGZhYTkxMTUwYjk2ZGFkNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCkBAIC0xMjcsNiArMTI3LDcgQEAg
cHVibGljOgogCiAgICAgLy8gRXhwb3NlZCBmb3IgdGVzdHMuCiAgICAgV2ViS2l0OjpXZWJMYXll
ciBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CisgICAg
ZmxvYXQgY29udGVudHNTY2FsZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQmVEZXN0cm95ZWQoKTsKQEAgLTE1MSw3ICsxNTIsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgdXBkYXRlQ29udGVudHNTY2FsZSgpOwogCiAgICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIo
V2ViS2l0OjpXZWJMYXllcik7Ci0gICAgZmxvYXQgY29udGVudHNTY2FsZSgpIGNvbnN0OwogCiAg
ICAgaW50IG1hcEFuaW1hdGlvbk5hbWVUb0lkKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDlkMDQxYTE4ZGE2NzdkOTk4OTUw
NjI4NDdjNzkyYjAwNWJjMDdiNzkuLjEyYzE0OWE5OTE5NTdjNjNlMDA4MDE3NmFjZTE2YmUyYTE4
MDY5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtNTIsNiArNTIsNyBAQAog
ICAgICAgICAgICAgJ3NyYy9qcy9JbWFnZXMvc2VnbWVudFNlbGVjdGVkRW5kQ2hyb21pdW0ucG5n
JywKICAgICAgICAgXSwKICAgICAgICAgJ3dlYmtpdF91bml0dGVzdF9maWxlcyc6IFsKKyAgICAg
ICAgICAgICd0ZXN0cy9BbmltYXRpb25UcmFuc2xhdGlvblV0aWxUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvQXJlbmFUZXN0SGVscGVycy5oJywKICAgICAgICAgICAgICd0ZXN0cy9Bc3Nv
Y2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NhbnZhczJETGF5
ZXJCcmlkZ2VUZXN0LmNwcCcsCkBAIC0xNjAsNiArMTYxLDcgQEAKICAgICAgICAgICAgICd0ZXN0
cy9XZWJGcmFtZVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJMYXllclRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5jcHAnLAorICAgICAg
ICAgICAgJ3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAg
J3Rlc3RzL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbFRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9X
ZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyLmNwcAppbmRleCBkNzdjMjVlYjllMzhhYzIxZWEzODlkNDQ4MzdhODgzMTAxOGJiMmUzLi5i
ODc1YmY3MTdjM2QwNzk0OTk4NTI3MDg5OTU2YzEzOTlkZTc0YzEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCkBAIC0zNjIsNiArMzYyLDExIEBAIHZvaWQgV2ViTGF5
ZXI6OnJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpCiAgICAgbV9wcml2YXRl
LT5yZXN1bWVBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOwogfQogCitib29sIFdlYkxheWVyOjpo
YXNBY3RpdmVBbmltYXRpb24oKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmhhc0FjdGl2ZUFu
aW1hdGlvbigpOworfQorCiB2b2lkIFdlYkxheWVyOjp0cmFuc2ZlckFuaW1hdGlvbnNUbyhXZWJM
YXllciogb3RoZXIpCiB7CiAgICAgQVNTRVJUKG90aGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbFRlc3Qu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJiN2UzNmIxM2Y0ZmFiMDcyYTRlN2ExY2RjNTc1YzNlYzBjMDgwMjEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0FuaW1hdGlv
blRyYW5zbGF0aW9uVXRpbFRlc3QuY3BwCkBAIC0wLDAgKzEsMjI1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJBbmltYXRpb25UcmFuc2xhdGlvblV0
aWwuaCIKKworI2luY2x1ZGUgIkFuaW1hdGlvbi5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIu
aCIgLy8gRm9yIEtleWZyYW1lVmFsdWVMaXN0CisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1
ZGUgIk1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiUm90YXRlVHJhbnNm
b3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgorI2luY2x1
ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1hdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OworCituYW1lc3BhY2UgeworCitib29sIGFuaW1hdGlvbkNhbkJlVHJhbnNsYXRlZChjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBBbmltYXRpb24qIGFuaW1hdGlvbikKK3sKKyAgICBJ
bnRTaXplIGJveFNpemU7CisgICAgcmV0dXJuIGNyZWF0ZVdlYkFuaW1hdGlvbih2YWx1ZXMsIGFu
aW1hdGlvbiwgMCwgMCwgMCwgYm94U2l6ZSk7Cit9CisKK1RFU1QoQW5pbWF0aW9uVHJhbnNsYXRp
b25VdGlsVGVzdCwgY3JlYXRlT3BhY2l0eUFuaW1hdGlvbikKK3sKKyAgICBjb25zdCBkb3VibGUg
ZHVyYXRpb24gPSAxOworICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhBbmlt
YXRlZFByb3BlcnR5T3BhY2l0eSk7CisgICAgdmFsdWVzLmluc2VydChuZXcgRmxvYXRBbmltYXRp
b25WYWx1ZSgwLCAwKSk7CisgICAgdmFsdWVzLmluc2VydChuZXcgRmxvYXRBbmltYXRpb25WYWx1
ZShkdXJhdGlvbiwgMSkpOworCisgICAgUmVmUHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uID0gQW5p
bWF0aW9uOjpjcmVhdGUoKTsKKyAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0aW9uKTsK
KworICAgIEVYUEVDVF9UUlVFKGFuaW1hdGlvbkNhbkJlVHJhbnNsYXRlZCh2YWx1ZXMsIGFuaW1h
dGlvbi5nZXQoKSkpOworfQorCitURVNUKEFuaW1hdGlvblRyYW5zbGF0aW9uVXRpbFRlc3QsIGNy
ZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbikKK3sKKyAgICBjb25zdCBkb3VibGUgZHVyYXRpb24gPSAx
OworICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5
V2Via2l0VHJhbnNmb3JtKTsKKworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczE7
CisgICAgb3BlcmF0aW9uczEub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMiwgV2ViQ29yZTo6Rml4ZWQpLCBMZW5ndGgoMCwgV2Vi
Q29yZTo6Rml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7CisgICAgdmFs
dWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJm9wZXJhdGlvbnMxKSk7
CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMyOworICAgIG9wZXJhdGlvbnMy
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUo
TGVuZ3RoKDQsIFdlYkNvcmU6OkZpeGVkKSwgTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSwgVHJh
bnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOworICAgIHZhbHVlcy5pbnNlcnQobmV3IFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlKGR1cmF0aW9uLCAmb3BlcmF0aW9uczIpKTsKKworICAgIFJl
ZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CisgICAgYW5p
bWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisKKyAgICBFWFBFQ1RfVFJVRShhbmltYXRp
b25DYW5CZVRyYW5zbGF0ZWQodmFsdWVzLCBhbmltYXRpb24uZ2V0KCkpKTsKK30KKworVEVTVChB
bmltYXRpb25UcmFuc2xhdGlvblV0aWxUZXN0LCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25XaXRo
QmlnUm90YXRpb24pCit7CisgICAgY29uc3QgZG91YmxlIGR1cmF0aW9uID0gMTsKKyAgICBXZWJD
b3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMxOworICAgIG9wZXJh
dGlvbnMxLm9wZXJhdGlvbnMoKS5hcHBlbmQoUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVh
dGUoMCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEUpKTsKKyAgICB2YWx1ZXMuaW5zZXJ0KG5l
dyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgwLCAmb3BlcmF0aW9uczEpKTsKKworICAgIFRyYW5z
Zm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczI7CisgICAgb3BlcmF0aW9uczIub3BlcmF0aW9ucygp
LmFwcGVuZChSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgyNzAsIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6Uk9UQVRFKSk7CisgICAgdmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0
aW9uVmFsdWUoZHVyYXRpb24sICZvcGVyYXRpb25zMikpOworCisgICAgUmVmUHRyPEFuaW1hdGlv
bj4gYW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKKyAgICBhbmltYXRpb24tPnNldER1
cmF0aW9uKGR1cmF0aW9uKTsKKworICAgIEVYUEVDVF9GQUxTRShhbmltYXRpb25DYW5CZVRyYW5z
bGF0ZWQodmFsdWVzLCBhbmltYXRpb24uZ2V0KCkpKTsKK30KKworVEVTVChBbmltYXRpb25UcmFu
c2xhdGlvblV0aWxUZXN0LCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25XaXRoUm90YXRpb25JbnZv
bHZpbmdOZWdhdGl2ZUFuZ2xlcykKK3sKKyAgICBjb25zdCBkb3VibGUgZHVyYXRpb24gPSAxOwor
ICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtKTsKKworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczE7Cisg
ICAgb3BlcmF0aW9uczEub3BlcmF0aW9ucygpLmFwcGVuZChSb3RhdGVUcmFuc2Zvcm1PcGVyYXRp
b246OmNyZWF0ZSgtMzMwLCBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURSkpOworICAgIHZhbHVl
cy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZvcGVyYXRpb25zMSkpOwor
CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMjsKKyAgICBvcGVyYXRpb25zMi5v
cGVyYXRpb25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKC0zMjAs
IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFKSk7CisgICAgdmFsdWVzLmluc2VydChuZXcgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUoZHVyYXRpb24sICZvcGVyYXRpb25zMikpOworCisgICAgUmVm
UHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKKyAgICBhbmlt
YXRpb24tPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKworICAgIEVYUEVDVF9UUlVFKGFuaW1hdGlv
bkNhbkJlVHJhbnNsYXRlZCh2YWx1ZXMsIGFuaW1hdGlvbi5nZXQoKSkpOworfQorCitURVNUKEFu
aW1hdGlvblRyYW5zbGF0aW9uVXRpbFRlc3QsIGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbldpdGhT
bWFsbFJvdGF0aW9uSW52b2x2aW5nTGFyZ2VBbmdsZXMpCit7CisgICAgY29uc3QgZG91YmxlIGR1
cmF0aW9uID0gMTsKKyAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0
ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9w
ZXJhdGlvbnMxOworICAgIG9wZXJhdGlvbnMxLm9wZXJhdGlvbnMoKS5hcHBlbmQoUm90YXRlVHJh
bnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoMjcwLCBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURSkp
OworICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZvcGVy
YXRpb25zMSkpOworCisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMjsKKyAgICBv
cGVyYXRpb25zMi5vcGVyYXRpb25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6
Y3JlYXRlKDM2MCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEUpKTsKKyAgICB2YWx1ZXMuaW5z
ZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShkdXJhdGlvbiwgJm9wZXJhdGlvbnMyKSk7
CisKKyAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgp
OworICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24pOworCisgICAgRVhQRUNUX1RS
VUUoYW5pbWF0aW9uQ2FuQmVUcmFuc2xhdGVkKHZhbHVlcywgYW5pbWF0aW9uLmdldCgpKSk7Cit9
CisKK1RFU1QoQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsVGVzdCwgY3JlYXRlVHJhbnNmb3JtQW5p
bWF0aW9uV2l0aFNpbmd1bGFyTWF0cml4KQoreworICAgIGNvbnN0IGRvdWJsZSBkdXJhdGlvbiA9
IDE7CisgICAgV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QgdmFsdWVzKEFuaW1hdGVkUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm0pOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4MTsK
KyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMxOworICAgIG9wZXJhdGlvbnMxLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShtYXRy
aXgxKSk7CisgICAgdmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwg
Jm9wZXJhdGlvbnMxKSk7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgyOworICAg
IG1hdHJpeDIuc2V0TTExKDApOworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczI7
CisgICAgb3BlcmF0aW9uczIub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgzRFRyYW5zZm9ybU9w
ZXJhdGlvbjo6Y3JlYXRlKG1hdHJpeDIpKTsKKyAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZShkdXJhdGlvbiwgJm9wZXJhdGlvbnMyKSk7CisKKyAgICBSZWZQdHI8
QW5pbWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOworICAgIGFuaW1hdGlv
bi0+c2V0RHVyYXRpb24oZHVyYXRpb24pOworCisgICAgRVhQRUNUX0ZBTFNFKGFuaW1hdGlvbkNh
bkJlVHJhbnNsYXRlZCh2YWx1ZXMsIGFuaW1hdGlvbi5nZXQoKSkpOworfQorCitURVNUKEFuaW1h
dGlvblRyYW5zbGF0aW9uVXRpbFRlc3QsIGNyZWF0ZVJldmVyc2VkQW5pbWF0aW9uKQoreworICAg
IGNvbnN0IGRvdWJsZSBkdXJhdGlvbiA9IDE7CisgICAgV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxp
c3QgdmFsdWVzKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOworCisgICAgVHJhbnNm
b3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMTsKKyAgICBvcGVyYXRpb25zMS5vcGVyYXRpb25zKCku
YXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgyLCBXZWJD
b3JlOjpGaXhlZCksIExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlv
bjo6VFJBTlNMQVRFX1gpKTsKKyAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSgwLCAmb3BlcmF0aW9uczEpKTsKKworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3Bl
cmF0aW9uczI7CisgICAgb3BlcmF0aW9uczIub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoNCwgV2ViQ29yZTo6Rml4ZWQpLCBMZW5n
dGgoMCwgV2ViQ29yZTo6Rml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7
CisgICAgdmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoZHVyYXRpb24s
ICZvcGVyYXRpb25zMikpOworCisgICAgUmVmUHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uID0gQW5p
bWF0aW9uOjpjcmVhdGUoKTsKKyAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0aW9uKTsK
KyAgICBhbmltYXRpb24tPnNldERpcmVjdGlvbihBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlv
blJldmVyc2UpOworCisgICAgRVhQRUNUX1RSVUUoYW5pbWF0aW9uQ2FuQmVUcmFuc2xhdGVkKHZh
bHVlcywgYW5pbWF0aW9uLmdldCgpKSk7Cit9CisKK1RFU1QoQW5pbWF0aW9uVHJhbnNsYXRpb25V
dGlsVGVzdCwgY3JlYXRlQWx0ZXJuYXRpbmdBbmltYXRpb24pCit7CisgICAgY29uc3QgZG91Ymxl
IGR1cmF0aW9uID0gMTsKKyAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5p
bWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25z
IG9wZXJhdGlvbnMxOworICAgIG9wZXJhdGlvbnMxLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDIsIFdlYkNvcmU6OkZpeGVkKSwg
TGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVf
WCkpOworICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZv
cGVyYXRpb25zMSkpOworCisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMjsKKyAg
ICBvcGVyYXRpb25zMi5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKExlbmd0aCg0LCBXZWJDb3JlOjpGaXhlZCksIExlbmd0aCgwLCBXZWJDb3Jl
OjpGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKKyAgICB2YWx1ZXMu
aW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShkdXJhdGlvbiwgJm9wZXJhdGlvbnMy
KSk7CisKKyAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0
ZSgpOworICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24pOworICAgIGFuaW1hdGlv
bi0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uQWx0ZXJuYXRlKTsK
KyAgICBhbmltYXRpb24tPnNldEl0ZXJhdGlvbkNvdW50KDIpOworCisgICAgRVhQRUNUX1RSVUUo
YW5pbWF0aW9uQ2FuQmVUcmFuc2xhdGVkKHZhbHVlcywgYW5pbWF0aW9uLmdldCgpKSk7Cit9CisK
K1RFU1QoQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsVGVzdCwgY3JlYXRlUmV2ZXJzZWRBbHRlcm5h
dGluZ0FuaW1hdGlvbikKK3sKKyAgICBjb25zdCBkb3VibGUgZHVyYXRpb24gPSAxOworICAgIFdl
YkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJh
bnNmb3JtKTsKKworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczE7CisgICAgb3Bl
cmF0aW9uczEub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246
OmNyZWF0ZShMZW5ndGgoMiwgV2ViQ29yZTo6Rml4ZWQpLCBMZW5ndGgoMCwgV2ViQ29yZTo6Rml4
ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7CisgICAgdmFsdWVzLmluc2Vy
dChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJm9wZXJhdGlvbnMxKSk7CisKKyAgICBU
cmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMyOworICAgIG9wZXJhdGlvbnMyLm9wZXJhdGlv
bnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDQs
IFdlYkNvcmU6OkZpeGVkKSwgTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSwgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpUUkFOU0xBVEVfWCkpOworICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlKGR1cmF0aW9uLCAmb3BlcmF0aW9uczIpKTsKKworICAgIFJlZlB0cjxBbmlt
YXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CisgICAgYW5pbWF0aW9uLT5z
ZXREdXJhdGlvbihkdXJhdGlvbik7CisgICAgYW5pbWF0aW9uLT5zZXREaXJlY3Rpb24oQW5pbWF0
aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGVSZXZlcnNlKTsKKyAgICBhbmltYXRpb24t
PnNldEl0ZXJhdGlvbkNvdW50KDIpOworCisgICAgRVhQRUNUX1RSVUUoYW5pbWF0aW9uQ2FuQmVU
cmFuc2xhdGVkKHZhbHVlcywgYW5pbWF0aW9uLmdldCgpKSk7Cit9CisKK30KKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQnJpZGdlVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJCcmlkZ2VUZXN0
LmNwcAppbmRleCBmZDcyZTk2ZWRiMDAzZWUxMTFhYzViMGU2OGFjYTI3ZTdkYWNiOGU1Li42OTcy
NDI0YjA2N2IyYWExOWI5NDg2YjgxMWE1MDA0MTQ2NjJkOTllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJCcmlkZ2VUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJCcmlkZ2VUZXN0LmNwcApA
QCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgotI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJjYy9DQ0dyYXBo
aWNzQ29udGV4dC5oIgotI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKLSNpbmNsdWRl
ICJjYy9DQ1RleHR1cmVVcGRhdGVRdWV1ZS5oIgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YlRocmVhZC5oPgpAQCAtNzUsMTAgKzcxLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZnVsbExp
ZmVjeWNsZVRlc3QoVGhyZWFkTW9kZSB0aHJlYWRNb2RlLCBEZWZlcnJhbE1vZGUgZGVmZXJyYWxN
b2RlKQogICAgIHsKICAgICAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtYWluQ29udGV4
dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdl
YkNvbnRleHQoYWRvcHRQdHIobmV3IE1vY2tDYW52YXNDb250ZXh0KSk7Ci0gICAgICAgIE93blB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NJbXBsQ29udGV4dCA9IEZha2VXZWJDb21wb3NpdG9yT3V0
cHV0U3VyZmFjZTo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBNb2NrQ2FudmFzQ29udGV4dCkpOwogCiAg
ICAgICAgIE1vY2tDYW52YXNDb250ZXh0JiBtYWluTW9jayA9ICpzdGF0aWNfY2FzdDxNb2NrQ2Fu
dmFzQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNz
Q29udGV4dDNEKG1haW5Db250ZXh0LmdldCgpKSk7Ci0gICAgICAgIE1vY2tDYW52YXNDb250ZXh0
JiBpbXBsTW9jayA9ICpzdGF0aWNfY2FzdDxNb2NrQ2FudmFzQ29udGV4dCo+KGNjSW1wbENvbnRl
eHQtPmNvbnRleHQzRCgpKTsKIAogICAgICAgICBNb2NrV2ViVGV4dHVyZVVwZGF0ZXIgdXBkYXRl
cjsKIApAQCAtMTE1LDcgKzEwOSw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIEVYUEVDVF9D
QUxMKG1haW5Nb2NrLCBmbHVzaCgpKTsKICAgICAgICAgfQogICAgICAgICBicmlkZ2UuY2xlYXIo
KTsKLSAgICAgICAgOjp0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygm
aW1wbE1vY2spOwogCiAgICAgICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hy
b21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXll
ckNocm9taXVtVGVzdC5jcHAKaW5kZXggMjFkMDcwNWI4ZDFlMGFiNmM5MDMyZDBjMzgyYzA4M2Fj
ZGI0YTFmYS4uNmVkODY2Y2Q3ZDQ3YTRkNGMyNTc3ZmVkNzI0NTNhMTk0ODM1ODQxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1U
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwCkBAIC0yNiwyOCArMjYsMjQgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bS5oIgogCi0jaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCiAj
aW5jbHVkZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUg
IkZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTWF0
cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJSb3RhdGVUcmFuc2Zvcm1PcGVy
YXRpb24uaCIKICNpbmNsdWRlICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNs
dWRlICJXZWJMYXllclRyZWVWaWV3VGVzdENvbW1vbi5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRl
ICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0
b3IuaD4KLQogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNv
bXBvc2l0b3IuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRBbmltYXRpb25DdXJ2ZS5oPgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJMYXllclRyZWVWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdFRlc3RzOwogCiBuYW1lc3BhY2UgewogCkBAIC02MSwzMSArNTcsNiBAQCBj
bGFzcyBNb2NrR3JhcGhpY3NMYXllckNsaWVudCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50
IHsKICAgICB2aXJ0dWFsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gMjsgfQogfTsKIAotY2xhc3MgTW9ja0xheWVyVHJlZUhvc3QgOiBwdWJsaWMgQ0NM
YXllclRyZWVIb3N0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrTGF5ZXJU
cmVlSG9zdD4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0
dGluZ3M7Ci0gICAgICAgIE93blB0cjxNb2NrTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdChh
ZG9wdFB0cihuZXcgTW9ja0xheWVyVHJlZUhvc3QobmV3IEZha2VDQ0xheWVyVHJlZUhvc3RDbGll
bnQoKSwgc2V0dGluZ3MpKSk7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IGxheWVyVHJlZUhvc3Qt
PmluaXRpYWxpemUoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7Ci0gICAgICAgIGxh
eWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihMYXllckNocm9taXVtOjpjcmVhdGUoKSk7Ci0gICAg
ICAgIGxheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEsIDEpLCBJbnRTaXpl
KDEsIDEpKTsKLSAgICAgICAgcmV0dXJuIGxheWVyVHJlZUhvc3QucmVsZWFzZSgpOwotICAgIH0K
LQotICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGVMYXll
clRyZWVIb3N0SW1wbChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCi0gICAgewot
ICAgICAgICByZXR1cm4gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzKCksIGNs
aWVudCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIE1vY2tMYXllclRyZWVIb3N0KENDTGF5ZXJU
cmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5n
cykKLSAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykKLSAgICB7Ci0g
ICAgfQotfTsKLQogY2xhc3MgR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0KCkKQEAg
LTk0LDE1ICs2NSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIFdlYkNvbXBvc2l0b3I6OnNldEFjY2Vs
ZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCh0cnVlKTsKICAgICAgICAgV2ViQ29tcG9zaXRvcjo6aW5p
dGlhbGl6ZSgwKTsKICAgICAgICAgbV9ncmFwaGljc0xheWVyID0gc3RhdGljX3BvaW50ZXJfY2Fz
dDxHcmFwaGljc0xheWVyQ2hyb21pdW0+KEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgmbV9jbGllbnQp
KTsKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyID0gbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxh
eWVyKCktPnVud3JhcDxMYXllckNocm9taXVtPigpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3Qg
PSBNb2NrTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllci0+
c2V0TGF5ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOworICAgICAgICBtX3BsYXRm
b3JtTGF5ZXIgPSBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgbV9s
YXllclRyZWVWaWV3LmluaXRpYWxpemUoJm1fbGF5ZXJUcmVlVmlld0NsaWVudCwgKm1fcGxhdGZv
cm1MYXllciwgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MoKSk7CisgICAgICAgIG1fbGF5ZXJU
cmVlVmlldy5zZXRWaWV3cG9ydFNpemUoV2ViU2l6ZSgxLCAxKSwgV2ViU2l6ZSgxLCAxKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNocm9taXVtVGVzdCgpCiAgICAgewog
ICAgICAgICBtX2dyYXBoaWNzTGF5ZXIuY2xlYXIoKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0
LmNsZWFyKCk7CisgICAgICAgIG1fbGF5ZXJUcmVlVmlldy5yZXNldCgpOwogICAgICAgICBXZWJD
b21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIApAQCAtMTEyLDMxOCArODMsNDYgQEAgcHJv
dGVjdGVkOgogICAgICAgICBFWFBFQ1RfRkxPQVRfRVEodHJhbnNsYXRlWCwgbWF0cml4Lm00MSgp
KTsKICAgICB9CiAKLSAgICBMYXllckNocm9taXVtKiBtX3BsYXRmb3JtTGF5ZXI7CisgICAgV2Vi
TGF5ZXIqIG1fcGxhdGZvcm1MYXllcjsKICAgICBPd25QdHI8R3JhcGhpY3NMYXllckNocm9taXVt
PiBtX2dyYXBoaWNzTGF5ZXI7Ci0gICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gbV9sYXllclRy
ZWVIb3N0OwogCiBwcml2YXRlOgorICAgIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IG1fbGF5
ZXJUcmVlVmlld0NsaWVudDsKKyAgICBXZWJMYXllclRyZWVWaWV3IG1fbGF5ZXJUcmVlVmlldzsK
ICAgICBNb2NrR3JhcGhpY3NMYXllckNsaWVudCBtX2NsaWVudDsKLSAgICBEZWJ1Z1Njb3BlZFNl
dE1haW5UaHJlYWQgbV9tYWluOwogfTsKIAogVEVTVF9GKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRl
c3QsIHVwZGF0ZUxheWVyUHJlc2VydmVzM0RXaXRoQW5pbWF0aW9ucykKIHsKICAgICBBU1NFUlRf
RkFMU0UobV9wbGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAKLSAgICBPd25Q
dHI8Q0NBY3RpdmVBbmltYXRpb24+IGZsb2F0QW5pbWF0aW9uKENDQWN0aXZlQW5pbWF0aW9uOjpj
cmVhdGUoYWRvcHRQdHIobmV3IEZha2VGbG9hdEFuaW1hdGlvbkN1cnZlKSwgMCwgMSwgQ0NBY3Rp
dmVBbmltYXRpb246Ok9wYWNpdHkpKTsKLSAgICBtX3BsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0
aW9uQ29udHJvbGxlcigpLT5hZGRBbmltYXRpb24oZmxvYXRBbmltYXRpb24ucmVsZWFzZSgpKTsK
KyAgICBXZWJGbG9hdEFuaW1hdGlvbkN1cnZlIGN1cnZlOworICAgIGN1cnZlLmFkZChXZWJGbG9h
dEtleWZyYW1lKDAuMCwgMC4wKSk7CisgICAgV2ViQW5pbWF0aW9uIGZsb2F0QW5pbWF0aW9uKGN1
cnZlLCAxLCAxLCBXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5T3BhY2l0eSk7CisgICAgQVNT
RVJUX1RSVUUobV9wbGF0Zm9ybUxheWVyLT5hZGRBbmltYXRpb24oZmxvYXRBbmltYXRpb24pKTsK
IAogICAgIEFTU0VSVF9UUlVFKG1fcGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkp
OwogCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKIAotICAgIG1f
cGxhdGZvcm1MYXllciA9IG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpLT51bndyYXA8
TGF5ZXJDaHJvbWl1bT4oKTsKKyAgICBtX3BsYXRmb3JtTGF5ZXIgPSBtX2dyYXBoaWNzTGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKTsKICAgICBBU1NFUlRfVFJVRShtX3BsYXRmb3JtTGF5ZXIpOwogCiAg
ICAgQVNTRVJUX1RSVUUobV9wbGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7Ci0g
ICAgbV9wbGF0Zm9ybUxheWVyLT5yZW1vdmVBbmltYXRpb24oMCk7CisgICAgbV9wbGF0Zm9ybUxh
eWVyLT5yZW1vdmVBbmltYXRpb24oMSk7CiAgICAgQVNTRVJUX0ZBTFNFKG1fcGxhdGZvcm1MYXll
ci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRQcmVz
ZXJ2ZXMzRChmYWxzZSk7CiAKLSAgICBtX3BsYXRmb3JtTGF5ZXIgPSBtX2dyYXBoaWNzTGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKS0+dW53cmFwPExheWVyQ2hyb21pdW0+KCk7CisgICAgbV9wbGF0Zm9y
bUxheWVyID0gbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7CiAgICAgQVNTRVJUX1RS
VUUobV9wbGF0Zm9ybUxheWVyKTsKIAogICAgIEFTU0VSVF9GQUxTRShtX3BsYXRmb3JtTGF5ZXIt
Pmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KIAotVEVTVF9GKEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bVRlc3QsIGNyZWF0ZU9wYWNpdHlBbmltYXRpb24pCi17Ci0gICAgY29uc3QgZG91YmxlIGR1cmF0
aW9uID0gMTsKLSAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0ZWRQ
cm9wZXJ0eU9wYWNpdHkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IEZsb2F0QW5pbWF0aW9uVmFs
dWUoMCwgMCkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoZHVy
YXRpb24sIDEpKTsKLQotICAgIFJlZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlv
bjo6Y3JlYXRlKCk7Ci0gICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci0KLSAg
ICBJbnRTaXplIGJveFNpemU7Ci0gICAgYm9vbCBhZGRlZEFuaW1hdGlvbiA9IG1fZ3JhcGhpY3NM
YXllci0+YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0aW9uLmdldCgpLCAiIiwg
MCk7Ci0KLSAgICBFWFBFQ1RfVFJVRShhZGRlZEFuaW1hdGlvbik7Ci0KLSAgICBFWFBFQ1RfVFJV
RShtX3BsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5oYXNBY3RpdmVB
bmltYXRpb24oKSk7Ci0KLSAgICBDQ0FjdGl2ZUFuaW1hdGlvbiogYWN0aXZlQW5pbWF0aW9uID0g
bV9wbGF0Zm9ybUxheWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+Z2V0QWN0aXZlQW5p
bWF0aW9uKENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KTsKLSAgICBFWFBFQ1RfVFJVRShhY3Rp
dmVBbmltYXRpb24pOwotCi0gICAgRVhQRUNUX0VRKDEsIGFjdGl2ZUFuaW1hdGlvbi0+aXRlcmF0
aW9ucygpKTsKLSAgICBFWFBFQ1RfRVEoQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHksIGFjdGl2
ZUFuaW1hdGlvbi0+dGFyZ2V0UHJvcGVydHkoKSk7Ci0KLSAgICBFWFBFQ1RfRVEoQ0NBbmltYXRp
b25DdXJ2ZTo6RmxvYXQsIGFjdGl2ZUFuaW1hdGlvbi0+Y3VydmUoKS0+dHlwZSgpKTsKLQotICAg
IGNvbnN0IENDRmxvYXRBbmltYXRpb25DdXJ2ZSogY3VydmUgPSBhY3RpdmVBbmltYXRpb24tPmN1
cnZlKCktPnRvRmxvYXRBbmltYXRpb25DdXJ2ZSgpOwotICAgIEVYUEVDVF9UUlVFKGN1cnZlKTsK
LQotICAgIEVYUEVDVF9FUSgwLCBjdXJ2ZS0+Z2V0VmFsdWUoMCkpOwotICAgIEVYUEVDVF9FUSgx
LCBjdXJ2ZS0+Z2V0VmFsdWUoZHVyYXRpb24pKTsKLX0KLQotVEVTVF9GKEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bVRlc3QsIGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbikKLXsKLSAgICBjb25zdCBkb3Vi
bGUgZHVyYXRpb24gPSAxOwotICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhB
bmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKLQotICAgIFRyYW5zZm9ybU9wZXJhdGlv
bnMgb3BlcmF0aW9uczE7Ci0gICAgb3BlcmF0aW9uczEub3BlcmF0aW9ucygpLmFwcGVuZChUcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMiwgV2ViQ29yZTo6Rml4ZWQp
LCBMZW5ndGgoMCwgV2ViQ29yZTo6Rml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFU
RV9YKSk7Ci0gICAgdmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwg
Jm9wZXJhdGlvbnMxKSk7Ci0KLSAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMyOwot
ICAgIG9wZXJhdGlvbnMyLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDQsIFdlYkNvcmU6OkZpeGVkKSwgTGVuZ3RoKDAsIFdlYkNv
cmU6OkZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOwotICAgIHZhbHVl
cy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGR1cmF0aW9uLCAmb3BlcmF0aW9u
czIpKTsKLQotICAgIFJlZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3Jl
YXRlKCk7Ci0gICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci0KLSAgICBJbnRT
aXplIGJveFNpemU7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odmFsdWVzLCBi
b3hTaXplLCBhbmltYXRpb24uZ2V0KCksICIiLCAwKTsKLQotICAgIEVYUEVDVF9UUlVFKG1fcGxh
dGZvcm1MYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKLQotICAgIENDQWN0aXZlQW5pbWF0aW9uKiBhY3RpdmVBbmltYXRpb24gPSBtX3BsYXRm
b3JtTGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5nZXRBY3RpdmVBbmltYXRpb24o
Q0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSk7Ci0gICAgRVhQRUNUX1RSVUUoYWN0aXZlQW5p
bWF0aW9uKTsKLQotICAgIEVYUEVDVF9FUSgxLCBhY3RpdmVBbmltYXRpb24tPml0ZXJhdGlvbnMo
KSk7Ci0gICAgRVhQRUNUX0VRKENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0sIGFjdGl2ZUFu
aW1hdGlvbi0+dGFyZ2V0UHJvcGVydHkoKSk7Ci0KLSAgICBFWFBFQ1RfRVEoQ0NBbmltYXRpb25D
dXJ2ZTo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnR5cGUoKSk7Ci0KLSAg
ICBjb25zdCBDQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKiBjdXJ2ZSA9IGFjdGl2ZUFuaW1hdGlv
bi0+Y3VydmUoKS0+dG9UcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSgpOwotICAgIEVYUEVDVF9UUlVF
KGN1cnZlKTsKLQotICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVlKDApKTsK
LSAgICBleHBlY3RUcmFuc2xhdGVYKDQsIGN1cnZlLT5nZXRWYWx1ZShkdXJhdGlvbikpOwotfQot
Ci1URVNUX0YoR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwgY3JlYXRlVHJhbnNmb3JtQW5pbWF0
aW9uV2l0aEJpZ1JvdGF0aW9uKQotewotICAgIGNvbnN0IGRvdWJsZSBkdXJhdGlvbiA9IDE7Ci0g
ICAgV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QgdmFsdWVzKEFuaW1hdGVkUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm0pOwotCi0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMTsKLSAg
ICBvcGVyYXRpb25zMS5vcGVyYXRpb25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bjo6Y3JlYXRlKDAsIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFKSk7Ci0gICAgdmFsdWVzLmlu
c2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJm9wZXJhdGlvbnMxKSk7Ci0KLSAg
ICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMyOwotICAgIG9wZXJhdGlvbnMyLm9wZXJh
dGlvbnMoKS5hcHBlbmQoUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoMjcwLCBUcmFu
c2Zvcm1PcGVyYXRpb246OlJPVEFURSkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlKGR1cmF0aW9uLCAmb3BlcmF0aW9uczIpKTsKLQotICAgIFJlZlB0cjxB
bmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7Ci0gICAgYW5pbWF0aW9u
LT5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci0KLSAgICBJbnRTaXplIGJveFNpemU7Ci0gICAgbV9n
cmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24uZ2V0
KCksICIiLCAwKTsKLQotICAgIEVYUEVDVF9GQUxTRShtX3BsYXRmb3JtTGF5ZXItPmxheWVyQW5p
bWF0aW9uQ29udHJvbGxlcigpLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7Ci19Ci0KLVRFU1RfRihH
cmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25XaXRoUm90
YXRpb25JbnZvbHZpbmdOZWdhdGl2ZUFuZ2xlcykKLXsKLSAgICBjb25zdCBkb3VibGUgZHVyYXRp
b24gPSAxOwotICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhBbmltYXRlZFBy
b3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKLQotICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0
aW9uczE7Ci0gICAgb3BlcmF0aW9uczEub3BlcmF0aW9ucygpLmFwcGVuZChSb3RhdGVUcmFuc2Zv
cm1PcGVyYXRpb246OmNyZWF0ZSgtMzMwLCBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURSkpOwot
ICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZvcGVyYXRp
b25zMSkpOwotCi0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMjsKLSAgICBvcGVy
YXRpb25zMi5vcGVyYXRpb25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3Jl
YXRlKC0zMjAsIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFKSk7Ci0gICAgdmFsdWVzLmluc2Vy
dChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoZHVyYXRpb24sICZvcGVyYXRpb25zMikpOwot
Ci0gICAgUmVmUHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsK
LSAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKLQotICAgIEludFNpemUgYm94
U2l6ZTsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUs
IGFuaW1hdGlvbi5nZXQoKSwgIiIsIDApOwotCi0gICAgRVhQRUNUX1RSVUUobV9wbGF0Zm9ybUxh
eWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwot
fQotCi1URVNUX0YoR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwgY3JlYXRlVHJhbnNmb3JtQW5p
bWF0aW9uV2l0aFNtYWxsUm90YXRpb25JbnZvbHZpbmdMYXJnZUFuZ2xlcykKLXsKLSAgICBjb25z
dCBkb3VibGUgZHVyYXRpb24gPSAxOwotICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZh
bHVlcyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKLQotICAgIFRyYW5zZm9ybU9w
ZXJhdGlvbnMgb3BlcmF0aW9uczE7Ci0gICAgb3BlcmF0aW9uczEub3BlcmF0aW9ucygpLmFwcGVu
ZChSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgyNzAsIFRyYW5zZm9ybU9wZXJhdGlv
bjo6Uk9UQVRFKSk7Ci0gICAgdmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWUoMCwgJm9wZXJhdGlvbnMxKSk7Ci0KLSAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlv
bnMyOwotICAgIG9wZXJhdGlvbnMyLm9wZXJhdGlvbnMoKS5hcHBlbmQoUm90YXRlVHJhbnNmb3Jt
T3BlcmF0aW9uOjpjcmVhdGUoMzYwLCBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURSkpOwotICAg
IHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGR1cmF0aW9uLCAmb3Bl
cmF0aW9uczIpKTsKLQotICAgIFJlZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlv
bjo6Y3JlYXRlKCk7Ci0gICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci0KLSAg
ICBJbnRTaXplIGJveFNpemU7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odmFs
dWVzLCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksICIiLCAwKTsKLQotICAgIEVYUEVDVF9UUlVF
KG1fcGxhdGZvcm1MYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmhhc0FjdGl2ZUFu
aW1hdGlvbigpKTsKLX0KLQotVEVTVF9GKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QsIGNyZWF0
ZVRyYW5zZm9ybUFuaW1hdGlvbldpdGhTaW5ndWxhck1hdHJpeCkKLXsKLSAgICBjb25zdCBkb3Vi
bGUgZHVyYXRpb24gPSAxOwotICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhB
bmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG1hdHJpeDE7Ci0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMTsKLSAgICBv
cGVyYXRpb25zMS5vcGVyYXRpb25zKCkuYXBwZW5kKE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
OjpjcmVhdGUobWF0cml4MSkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlKDAsICZvcGVyYXRpb25zMSkpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
bWF0cml4MjsKLSAgICBtYXRyaXgyLnNldE0xMSgwKTsKLSAgICBUcmFuc2Zvcm1PcGVyYXRpb25z
IG9wZXJhdGlvbnMyOwotICAgIG9wZXJhdGlvbnMyLm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4
M0RUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShtYXRyaXgyKSk7Ci0gICAgdmFsdWVzLmluc2Vy
dChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoZHVyYXRpb24sICZvcGVyYXRpb25zMikpOwot
Ci0gICAgUmVmUHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsK
LSAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKLQotICAgIEludFNpemUgYm94
U2l6ZTsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUs
IGFuaW1hdGlvbi5nZXQoKSwgIiIsIDApOwotCi0gICAgRVhQRUNUX0ZBTFNFKG1fcGxhdGZvcm1M
YXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsK
LX0KLQotVEVTVF9GKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QsIGNyZWF0ZVJldmVyc2VkQW5p
bWF0aW9uKQotewotICAgIGNvbnN0IGRvdWJsZSBkdXJhdGlvbiA9IDE7Ci0gICAgV2ViQ29yZTo6
S2V5ZnJhbWVWYWx1ZUxpc3QgdmFsdWVzKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0p
OwotCi0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMTsKLSAgICBvcGVyYXRpb25z
MS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRl
KExlbmd0aCgyLCBXZWJDb3JlOjpGaXhlZCksIExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCksIFRy
YW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKLSAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBU
cmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgwLCAmb3BlcmF0aW9uczEpKTsKLQotICAgIFRyYW5zZm9y
bU9wZXJhdGlvbnMgb3BlcmF0aW9uczI7Ci0gICAgb3BlcmF0aW9uczIub3BlcmF0aW9ucygpLmFw
cGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoNCwgV2ViQ29y
ZTo6Rml4ZWQpLCBMZW5ndGgoMCwgV2ViQ29yZTo6Rml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURV9YKSk7Ci0gICAgdmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUoZHVyYXRpb24sICZvcGVyYXRpb25zMikpOwotCi0gICAgUmVmUHRyPEFuaW1hdGlvbj4g
YW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKLSAgICBhbmltYXRpb24tPnNldER1cmF0
aW9uKGR1cmF0aW9uKTsKLSAgICBhbmltYXRpb24tPnNldERpcmVjdGlvbihBbmltYXRpb246OkFu
aW1hdGlvbkRpcmVjdGlvblJldmVyc2UpOwotCi0gICAgSW50U2l6ZSBib3hTaXplOwotICAgIG1f
Z3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0aW9uLmdl
dCgpLCAiIiwgMCk7Ci0KLSAgICBFWFBFQ1RfVFJVRShtX3BsYXRmb3JtTGF5ZXItPmxheWVyQW5p
bWF0aW9uQ29udHJvbGxlcigpLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7Ci0KLSAgICBDQ0FjdGl2
ZUFuaW1hdGlvbiogYWN0aXZlQW5pbWF0aW9uID0gbV9wbGF0Zm9ybUxheWVyLT5sYXllckFuaW1h
dGlvbkNvbnRyb2xsZXIoKS0+Z2V0QWN0aXZlQW5pbWF0aW9uKENDQWN0aXZlQW5pbWF0aW9uOjpU
cmFuc2Zvcm0pOwotICAgIEVYUEVDVF9UUlVFKGFjdGl2ZUFuaW1hdGlvbik7Ci0KLSAgICBFWFBF
Q1RfRVEoMSwgYWN0aXZlQW5pbWF0aW9uLT5pdGVyYXRpb25zKCkpOwotICAgIEVYUEVDVF9FUShD
Q0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPnRhcmdldFByb3Bl
cnR5KCkpOwotCi0gICAgRVhQRUNUX0VRKENDQW5pbWF0aW9uQ3VydmU6OlRyYW5zZm9ybSwgYWN0
aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50eXBlKCkpOwotCi0gICAgY29uc3QgQ0NUcmFuc2Zvcm1B
bmltYXRpb25DdXJ2ZSogY3VydmUgPSBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnRvVHJhbnNm
b3JtQW5pbWF0aW9uQ3VydmUoKTsKLSAgICBFWFBFQ1RfVFJVRShjdXJ2ZSk7Ci0KLSAgICBleHBl
Y3RUcmFuc2xhdGVYKDQsIGN1cnZlLT5nZXRWYWx1ZSgwKSk7Ci0gICAgZXhwZWN0VHJhbnNsYXRl
WCgyLCBjdXJ2ZS0+Z2V0VmFsdWUoZHVyYXRpb24pKTsKLX0KLQotVEVTVF9GKEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bVRlc3QsIGNyZWF0ZUFsdGVybmF0aW5nQW5pbWF0aW9uKQotewotICAgIGNvbnN0
IGRvdWJsZSBkdXJhdGlvbiA9IDE7Ci0gICAgV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QgdmFs
dWVzKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwotCi0gICAgVHJhbnNmb3JtT3Bl
cmF0aW9ucyBvcGVyYXRpb25zMTsKLSAgICBvcGVyYXRpb25zMS5vcGVyYXRpb25zKCkuYXBwZW5k
KFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgyLCBXZWJDb3JlOjpG
aXhlZCksIExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJB
TlNMQVRFX1gpKTsKLSAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSgwLCAmb3BlcmF0aW9uczEpKTsKLQotICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9u
czI7Ci0gICAgb3BlcmF0aW9uczIub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoNCwgV2ViQ29yZTo6Rml4ZWQpLCBMZW5ndGgoMCwg
V2ViQ29yZTo6Rml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7Ci0gICAg
dmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoZHVyYXRpb24sICZvcGVy
YXRpb25zMikpOwotCi0gICAgUmVmUHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uID0gQW5pbWF0aW9u
OjpjcmVhdGUoKTsKLSAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKLSAgICBh
bmltYXRpb24tPnNldERpcmVjdGlvbihBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbkFsdGVy
bmF0ZSk7Ci0gICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRpb25Db3VudCgyKTsKLQotICAgIEludFNp
emUgYm94U2l6ZTsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJv
eFNpemUsIGFuaW1hdGlvbi5nZXQoKSwgIiIsIDApOwotCi0gICAgRVhQRUNUX1RSVUUobV9wbGF0
Zm9ybUxheWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+aGFzQWN0aXZlQW5pbWF0aW9u
KCkpOwotCi0gICAgQ0NBY3RpdmVBbmltYXRpb24qIGFjdGl2ZUFuaW1hdGlvbiA9IG1fcGxhdGZv
cm1MYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmdldEFjdGl2ZUFuaW1hdGlvbihD
Q0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtKTsKLSAgICBFWFBFQ1RfVFJVRShhY3RpdmVBbmlt
YXRpb24pOwotICAgIEVYUEVDVF9UUlVFKGFjdGl2ZUFuaW1hdGlvbi0+YWx0ZXJuYXRlc0RpcmVj
dGlvbigpKTsKLQotICAgIEVYUEVDVF9FUSgyLCBhY3RpdmVBbmltYXRpb24tPml0ZXJhdGlvbnMo
KSk7Ci0gICAgRVhQRUNUX0VRKENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0sIGFjdGl2ZUFu
aW1hdGlvbi0+dGFyZ2V0UHJvcGVydHkoKSk7Ci0KLSAgICBFWFBFQ1RfRVEoQ0NBbmltYXRpb25D
dXJ2ZTo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnR5cGUoKSk7Ci0KLSAg
ICBjb25zdCBDQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKiBjdXJ2ZSA9IGFjdGl2ZUFuaW1hdGlv
bi0+Y3VydmUoKS0+dG9UcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSgpOwotICAgIEVYUEVDVF9UUlVF
KGN1cnZlKTsKLQotICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVlKDApKTsK
LSAgICBleHBlY3RUcmFuc2xhdGVYKDQsIGN1cnZlLT5nZXRWYWx1ZShkdXJhdGlvbikpOwotfQot
Ci1URVNUX0YoR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwgY3JlYXRlUmV2ZXJzZWRBbHRlcm5h
dGluZ0FuaW1hdGlvbikKLXsKLSAgICBjb25zdCBkb3VibGUgZHVyYXRpb24gPSAxOwotICAgIFdl
YkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJh
bnNmb3JtKTsKLQotICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczE7Ci0gICAgb3Bl
cmF0aW9uczEub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246
OmNyZWF0ZShMZW5ndGgoMiwgV2ViQ29yZTo6Rml4ZWQpLCBMZW5ndGgoMCwgV2ViQ29yZTo6Rml4
ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7Ci0gICAgdmFsdWVzLmluc2Vy
dChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJm9wZXJhdGlvbnMxKSk7Ci0KLSAgICBU
cmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMyOwotICAgIG9wZXJhdGlvbnMyLm9wZXJhdGlv
bnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDQs
IFdlYkNvcmU6OkZpeGVkKSwgTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSwgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpUUkFOU0xBVEVfWCkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlKGR1cmF0aW9uLCAmb3BlcmF0aW9uczIpKTsKLQotICAgIFJlZlB0cjxBbmlt
YXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7Ci0gICAgYW5pbWF0aW9uLT5z
ZXREdXJhdGlvbihkdXJhdGlvbik7Ci0gICAgYW5pbWF0aW9uLT5zZXREaXJlY3Rpb24oQW5pbWF0
aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGVSZXZlcnNlKTsKLSAgICBhbmltYXRpb24t
PnNldEl0ZXJhdGlvbkNvdW50KDIpOwotCi0gICAgSW50U2l6ZSBib3hTaXplOwotICAgIG1fZ3Jh
cGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0aW9uLmdldCgp
LCAiIiwgMCk7Ci0KLSAgICBFWFBFQ1RfVFJVRShtX3BsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0
aW9uQ29udHJvbGxlcigpLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7Ci0KLSAgICBDQ0FjdGl2ZUFu
aW1hdGlvbiogYWN0aXZlQW5pbWF0aW9uID0gbV9wbGF0Zm9ybUxheWVyLT5sYXllckFuaW1hdGlv
bkNvbnRyb2xsZXIoKS0+Z2V0QWN0aXZlQW5pbWF0aW9uKENDQWN0aXZlQW5pbWF0aW9uOjpUcmFu
c2Zvcm0pOwotICAgIEVYUEVDVF9UUlVFKGFjdGl2ZUFuaW1hdGlvbik7Ci0gICAgRVhQRUNUX1RS
VUUoYWN0aXZlQW5pbWF0aW9uLT5hbHRlcm5hdGVzRGlyZWN0aW9uKCkpOwotCi0gICAgRVhQRUNU
X0VRKDIsIGFjdGl2ZUFuaW1hdGlvbi0+aXRlcmF0aW9ucygpKTsKLSAgICBFWFBFQ1RfRVEoQ0NB
Y3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSwgYWN0aXZlQW5pbWF0aW9uLT50YXJnZXRQcm9wZXJ0
eSgpKTsKLQotICAgIEVYUEVDVF9FUShDQ0FuaW1hdGlvbkN1cnZlOjpUcmFuc2Zvcm0sIGFjdGl2
ZUFuaW1hdGlvbi0+Y3VydmUoKS0+dHlwZSgpKTsKLQotICAgIGNvbnN0IENDVHJhbnNmb3JtQW5p
bWF0aW9uQ3VydmUqIGN1cnZlID0gYWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50b1RyYW5zZm9y
bUFuaW1hdGlvbkN1cnZlKCk7Ci0gICAgRVhQRUNUX1RSVUUoY3VydmUpOwotCi0gICAgZXhwZWN0
VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoMCkpOwotICAgIGV4cGVjdFRyYW5zbGF0ZVgo
MiwgY3VydmUtPmdldFZhbHVlKGR1cmF0aW9uKSk7Ci19Ci0KIFRFU1RfRihHcmFwaGljc0xheWVy
Q2hyb21pdW1UZXN0LCBzaG91bGRTdGFydFdpdGhDb3JyZWN0Q29udGVudHNTY2FsZSkKIHsKLSAg
ICBFWFBFQ1RfRVEoMiwgbV9wbGF0Zm9ybUxheWVyLT5jb250ZW50c1NjYWxlKCkpOworICAgIEVY
UEVDVF9FUSgyLCBtX2dyYXBoaWNzTGF5ZXItPmNvbnRlbnRzU2NhbGUoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVy
Q2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCmluZGV4IDFhMTRkNzViYzg3OTVlZWFhNmFhNzBjZTE2NjVlOWM0NTM2Yjlk
OWQuLjljNjUyZDI4NjNjMDIxMmY1MzNhNjNkZmFkYmFjYzZmZDIxYzc4NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC03
OSwxMyArNzksMTEgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgLy8gSW5pdGlhbGl6ZSB3
aXRob3V0IHRocmVhZGluZyBzdXBwb3J0LgogICAgICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6
OmluaXRpYWxpemUoMCk7Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0TWFpblRocmVhZCBtYWluOwog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBhZG9wdFB0cihuZXcgTW9ja0NDTGF5ZXJUcmVlSG9z
dCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKICAgICB7Ci0gICAgICAg
IERlYnVnU2NvcGVkU2V0TWFpblRocmVhZCBtYWluOwogICAgICAgICBNb2NrOjpWZXJpZnlBbmRD
bGVhckV4cGVjdGF0aW9ucyhtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwogICAgICAgICBFWFBFQ1Rf
Q0FMTCgqbV9sYXllclRyZWVIb3N0LCBzZXROZWVkc0NvbW1pdCgpKS5UaW1lcyhBbnlOdW1iZXIo
KSk7CiAgICAgICAgIG1fcGFyZW50LmNsZWFyKCk7CkBAIC02MzgsNyArNjM2LDYgQEAgdm9pZCBh
c3NlcnRMYXllclRyZWVIb3N0TWF0Y2hlc0ZvclN1YnRyZWUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIs
IENDTGF5ZXJUcmVlSG9zdCoKIFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBl
bnRlcmluZ1RyZWUpCiB7CiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDAp
OwotICAgIERlYnVnU2NvcGVkU2V0TWFpblRocmVhZCBtYWluOwogICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gbWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtNjcxLDcg
KzY2OCw2IEBAIFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBlbnRlcmluZ1Ry
ZWUpCiBURVNUKExheWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwgYWRkaW5nTGF5ZXJTdWJ0
cmVlKQogewogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKLSAgICBE
ZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWQgbWFpbjsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
cGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgT3duUHRyPEZha2VDQ0xheWVy
VHJlZUhvc3Q+IGxheWVyVHJlZUhvc3QoRmFrZUNDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkpOwog
CkBAIC03MDMsNyArNjk5LDYgQEAgVEVTVChMYXllckNocm9taXVtTGF5ZXJUcmVlSG9zdFRlc3Qs
IGFkZGluZ0xheWVyU3VidHJlZSkKIFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0
LCBjaGFuZ2VIb3N0KQogewogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgw
KTsKLSAgICBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWQgbWFpbjsKICAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IG1hc2sgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTczNyw3
ICs3MzIsNiBAQCBURVNUKExheWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwgY2hhbmdlSG9z
dCkKIFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBjaGFuZ2VIb3N0SW5TdWJ0
cmVlKQogewogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKLSAgICBE
ZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWQgbWFpbjsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
Zmlyc3RQYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gZmlyc3RDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwogICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBzZWNvbmRQYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
QEAgLTc3NSw3ICs3NjksNiBAQCBURVNUKExheWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwg
Y2hhbmdlSG9zdEluU3VidHJlZSkKIFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0
LCByZXBsYWNlTWFza0FuZFJlcGxpY2FMYXllcikKIHsKICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0
b3I6OmluaXRpYWxpemUoMCk7Ci0gICAgRGVidWdTY29wZWRTZXRNYWluVGhyZWFkIG1haW47CiAg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtYXNrID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2EgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcAppbmRleCA5MDJmYWM5
ODE4ODk5ZGE5NTUxMjczZDJkOTdkYjcyMGFkZDllMjRhLi4yOTViMjQyZWEwYzU0NDE5ZjZkMDc4
MGNiOGRhOGJhNTE0Y2M0Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3Bw
CkBAIC0xMTcsMTIgKzExNywyNCBAQCBURVNUKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
LCBmcm9tSWRlbnRpZmllcikKICAgICBXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogfQogCitj
bGFzcyBXZWJDb21wb3NpdG9ySW5pdGlhbGl6ZXIgeworcHVibGljOgorICAgIFdlYkNvbXBvc2l0
b3JJbml0aWFsaXplcigpCisgICAgeworICAgICAgICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXpl
KDApOworICAgIH0KKworICAgIH5XZWJDb21wb3NpdG9ySW5pdGlhbGl6ZXIoKQorICAgIHsKKyAg
ICAgICAgV2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKKyAgICB9Cit9OworCiBjbGFzcyBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBw
dWJsaWM6CiAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0KCkKICAgICAgICAg
OiBtX2V4cGVjdGVkRGlzcG9zaXRpb24oRGlkSGFuZGxlKQogICAgIHsKLSAgICAgICAgV2ViQ29t
cG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKICAgICAgICAgbV9pbnB1dEhhbmRsZXIgPSBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y3JlYXRlKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dCk7CiAgICAgICAgIG1faW5wdXRIYW5kbGVyLT5zZXRDbGllbnQoJm1fbW9ja0NsaWVudCk7CiAg
ICAgfQpAQCAtMTMxLDcgKzE0Myw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1faW5wdXRI
YW5kbGVyLT5zZXRDbGllbnQoMCk7CiAgICAgICAgIG1faW5wdXRIYW5kbGVyLmNsZWFyKCk7Ci0g
ICAgICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiAgICAgfQogCiAgICAgLy8gVGhpcyBp
cyBkZWZpbmVkIGFzIGEgbWFjcm8gYmVjYXVzZSB3aGVuIGFuIGV4cGVjdGF0aW9uIGlzIG5vdCBz
YXRpc2ZpZWQgdGhlIG9ubHkgb3V0cHV0IHlvdSBnZXQKQEAgLTE2NiwxMiArMTc3LDExIEBAIHBy
b3RlY3RlZDoKICAgICBPd25QdHI8V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw+IG1faW5w
dXRIYW5kbGVyOwogICAgIE1vY2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50IG1fbW9j
a0NsaWVudDsKICAgICBXZWJHZXN0dXJlRXZlbnQgZ2VzdHVyZTsKKyAgICBXZWJDb3JlOjpEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgYWx3YXlzSW1wbFRocmVhZDsKKyAgICBXZWJDb21wb3NpdG9y
SW5pdGlhbGl6ZXIgaW5pdGlhbGl6ZXI7CiAKICAgICBlbnVtIEV4cGVjdGVkRGlzcG9zaXRpb24g
eyBEaWRIYW5kbGUsIERpZE5vdEhhbmRsZSwgRHJvcEV2ZW50IH07CiAgICAgRXhwZWN0ZWREaXNw
b3NpdGlvbiBtX2V4cGVjdGVkRGlzcG9zaXRpb247Ci0KLXByaXZhdGU6Ci0gICAgV2ViQ29yZTo6
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIG1fYWx3YXlzSW1wbFRocmVhZDsKIH07CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0
LmNwcAppbmRleCA0ZjAzMzAwMzU5YTgzOTY4MmViOGU1NDhjN2JjN2U5OGZlMjNmZDFjLi5iZWMy
YzYwMzVhY2FlZjA3MzQwYTFiOGMzNjRlMWE5OTA4MmYzY2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQz
RC5oIgogI2luY2x1ZGUgIkZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZS5oIgorI2luY2x1
ZGUgIldlYkxheWVyVHJlZVZpZXdUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSA8Z21vY2svZ21vY2su
aD4KICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29t
cG9zaXRvci5oPgpAQCAtNDEsMjcgKzQyLDYgQEAgdXNpbmcgdGVzdGluZzo6VGVzdDsKIAogbmFt
ZXNwYWNlIHsKIAotY2xhc3MgTW9ja1dlYkxheWVyVHJlZVZpZXdDbGllbnQgOiBwdWJsaWMgV2Vi
TGF5ZXJUcmVlVmlld0NsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
Q29tcG9zaXRlKCkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlv
bnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSBPVkVSUklERSB7IH0KLSAgICBNT0NLX01FVEhPRDAo
d2lsbEJlZ2luRnJhbWUsIHZvaWQoKSk7Ci0gICAgTU9DS19NRVRIT0QwKGRpZEJlZ2luRnJhbWUs
IHZvaWQoKSk7Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYlNpemUmIHNjcm9sbERlbHRh
LCBmbG9hdCBzY2FsZUZhY3RvcikgT1ZFUlJJREUgeyB9Ci0KLSAgICB2aXJ0dWFsIFdlYkNvbXBv
c2l0b3JPdXRwdXRTdXJmYWNlKiBjcmVhdGVPdXRwdXRTdXJmYWNlKCkgT1ZFUlJJREUKLSAgICB7
Ci0gICAgICAgIHJldHVybiBGYWtlV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U6OmNyZWF0ZShD
b21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoV2ViR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMoKSkpLmxlYWtQdHIoKTsKLSAgICB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sKSBPVkVSUklERSB7IH0KLQotICAgIE1PQ0tf
TUVUSE9EMCh3aWxsQ29tbWl0LCB2b2lkKCkpOwotICAgIE1PQ0tfTUVUSE9EMChkaWRDb21taXQs
IHZvaWQoKSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIE9WRVJS
SURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgT1ZFUlJJ
REUgeyB9Ci19OwotCiBjbGFzcyBNb2NrV2ViTGF5ZXJUcmVlVmlld0NsaWVudEZvclRocmVhZGVk
VGVzdHMgOiBwdWJsaWMgTW9ja1dlYkxheWVyVHJlZVZpZXdDbGllbnQgewogcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRCZWdpbkZyYW1lKCkgT1ZFUlJJREUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3RDb21tb24uaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3RDb21tb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMmE2MmI2YTM4ZGEzZjQ3ODZlMjVjZWQxOTM3Zjg3NGMxZmY5Mjk5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVW
aWV3VGVzdENvbW1vbi5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViTGF5ZXJUcmVlVmlld1Rlc3RDb21tb25faAorI2RlZmluZSBXZWJMYXllclRyZWVWaWV3VGVz
dENvbW1vbl9oCisKKyNpbmNsdWRlICJDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
LmgiCisjaW5jbHVkZSAiRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlLmgiCisjaW5jbHVk
ZSA8Z21vY2svZ21vY2suaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVu
dC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9ja1dlYkxheWVyVHJlZVZpZXdD
bGllbnQgOiBwdWJsaWMgV2ViTGF5ZXJUcmVlVmlld0NsaWVudCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSBPVkVSUklERSB7IH0K
KyAgICBNT0NLX01FVEhPRDAod2lsbEJlZ2luRnJhbWUsIHZvaWQoKSk7CisgICAgTU9DS19NRVRI
T0QwKGRpZEJlZ2luRnJhbWUsIHZvaWQoKSk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9W
RVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdl
YlNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZUZhY3RvcikgT1ZFUlJJREUgeyB9CisKKyAg
ICB2aXJ0dWFsIFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlKiBjcmVhdGVPdXRwdXRTdXJmYWNl
KCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiBGYWtlV2ViQ29tcG9zaXRvck91dHB1
dFN1cmZhY2U6OmNyZWF0ZShDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGUoV2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSkpLmxlYWtQdHIoKTsKKyAgICB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sKSBPVkVSUklE
RSB7IH0KKworICAgIE1PQ0tfTUVUSE9EMCh3aWxsQ29tbWl0LCB2b2lkKCkpOworICAgIE1PQ0tf
TUVUSE9EMChkaWRDb21taXQsIHZvaWQoKSk7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFu
ZERyYXdGcmFtZSgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3
YXBCdWZmZXJzKCkgT1ZFUlJJREUgeyB9Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJMYXllclRy
ZWVWaWV3VGVzdENvbW1vbl9oCg==
</data>
<flag name="review"
          id="168151"
          type_id="1"
          status="+"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>