<?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>165801</bug_id>
          
          <creation_ts>2016-12-13 09:42:20 -0800</creation_ts>
          <short_desc>[Mac] -[WKWebView findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:] invokes the resultCollector with didWrap = NO even when it wraps</short_desc>
          <delta_ts>2017-04-04 13:00:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>Other</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>bdakin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1259411</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-12-13 09:42:20 -0800</bug_when>
    <thetext>-[WKWebView findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:] invokes the resultCollector with didWrap = NO even when it wraps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259558</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-12-13 15:21:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/29649535&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293393</commentid>
    <comment_count>2</comment_count>
      <attachid>306030</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-31 17:41:46 -0700</bug_when>
    <thetext>Created attachment 306030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293394</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-31 17:44:26 -0700</bug_when>
    <thetext>Attachment 306030 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/WKTextFinderClient.mm:79:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/mac/WKTextFinderClient.mm:84:  Missing space before {  [whitespace/braces] [5]
Total errors found: 2 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293433</commentid>
    <comment_count>4</comment_count>
      <attachid>306030</attachid>
    <who name="">mitz</who>
    <bug_when>2017-03-31 20:59:45 -0700</bug_when>
    <thetext>Comment on attachment 306030
Patch

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

&gt; Source/WebCore/page/FrameTree.h:69
&gt; -    WEBCORE_EXPORT Frame* traverseNextWithWrap(bool) const;
&gt; -    WEBCORE_EXPORT Frame* traversePreviousWithWrap(bool) const;
&gt; +    WEBCORE_EXPORT Frame* traverseNextWithWrap(CanWrap, DidWrap* = nullptr) const;
&gt; +    WEBCORE_EXPORT Frame* traversePreviousWithWrap(CanWrap, DidWrap* = nullptr) const;

The “withWrap” part of the function name was intended to described the boolean argument. Now that the argument is self-explanatory, you could drop “withWrap” from these and other function names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293496</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-04-01 17:19:56 -0700</bug_when>
    <thetext>(In reply to mitz@webkit.org from comment #4)
&gt; Comment on attachment 306030 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=306030&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/FrameTree.h:69
&gt; &gt; -    WEBCORE_EXPORT Frame* traverseNextWithWrap(bool) const;
&gt; &gt; -    WEBCORE_EXPORT Frame* traversePreviousWithWrap(bool) const;
&gt; &gt; +    WEBCORE_EXPORT Frame* traverseNextWithWrap(CanWrap, DidWrap* = nullptr) const;
&gt; &gt; +    WEBCORE_EXPORT Frame* traversePreviousWithWrap(CanWrap, DidWrap* = nullptr) const;
&gt; 
&gt; The “withWrap” part of the function name was intended to described the
&gt; boolean argument. Now that the argument is self-explanatory, you could drop
&gt; “withWrap” from these and other function names.

That&apos;s a good point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293722</commentid>
    <comment_count>6</comment_count>
      <attachid>306089</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-04-03 11:51:02 -0700</bug_when>
    <thetext>Created attachment 306089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293723</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-03 11:52:52 -0700</bug_when>
    <thetext>Attachment 306089 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/WKTextFinderClient.mm:79:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/mac/WKTextFinderClient.mm:84:  Missing space before {  [whitespace/braces] [5]
Total errors found: 2 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293756</commentid>
    <comment_count>8</comment_count>
      <attachid>306089</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-03 13:02:48 -0700</bug_when>
    <thetext>Comment on attachment 306089
Patch

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

&gt; Source/WebCore/page/FrameTree.cpp:420
&gt; +Frame* FrameTree::traversePrevious(CanWrap canWrap, DidWrap* didWrap) const

Should this set *didWrap = DidWrap::No at the top to ensure that didWrap gets set to something if it is nonnull?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293760</commentid>
    <comment_count>9</comment_count>
      <attachid>306089</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-03 13:16:00 -0700</bug_when>
    <thetext>Comment on attachment 306089
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/FindInPage.mm:224
&gt; +    [webView findMatchesForString:@&quot;word&quot; relativeToMatch:nil findOptions:defaultFindOptions maxResults:1 resultCollector:^(NSArray *matches, BOOL didWrap) {

Minor nit - I would factor out the call to findMatchesForString into a helper to make these calls more readable (and maybe wait for each one to complete before moving on so we don&apos;t need to nest each step in the test in a new block).

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/FindInPage.mm:249
&gt; +    findMatchesDone = false;

Side note: I think it&apos;s a bit weird that findMatchesDone is a static variable here :/ I think we should just make it local to each test, but that could be for another patch later. Also, do we need to set it to false here? I thought since each test is run in a different process, this state should not bleed into any subsequent tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1294125</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-04-04 13:00:20 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/214893/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306030</attachid>
            <date>2017-03-31 17:41:46 -0700</date>
            <delta_ts>2017-04-03 11:51:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165801-20170331174145.patch</filename>
            <type>text/plain</type>
            <size>36588</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0Njg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRjOTliMTY5ZTc4NDY5
ZmFhYWZjNjQzNDdjYWRjNWNiYTk2ZWE2ZC4uMzg2MjNiODE2YWQ0OWQzYTU3Mjk0ZWZlMjZiNDY4
MjFjOWNhYWU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTAzLTMxICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIC1bV0tX
ZWJWaWV3IGZpbmRNYXRjaGVzRm9yU3RyaW5nOnJlbGF0aXZlVG9NYXRjaDpmaW5kT3B0aW9uczpt
YXhSZXN1bHRzOnJlc3VsdENvbGxlY3RvcjpdIGludm9rZXMgdGhlIHJlc3VsdENvbGxlY3RvciB3
aXRoIGRpZFdyYXAgPSBOTyBldmVuIHdoZW4gaXQgd3JhcHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTgwMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMjk2NDk1MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTmV3IEFQSSB0ZXN0czogV2ViS2l0Mi5GaW5kSW5QYWdlV3JhcHBpbmcqCisKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnRy
YXZlcnNlTmV4dFdpdGhXcmFwKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6dHJhdmVy
c2VQcmV2aW91c1dpdGhXcmFwKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6dHJhdmVy
c2VOZXh0SW5Qb3N0T3JkZXJXaXRoV3JhcCk6CisgICAgICAgICogcGFnZS9GcmFtZVRyZWUuaDoK
KyAgICAgICAgQWRkIENhbldyYXAgYW5kIERpZFdyYXAgYm9vbGVhbiBlbnVtcywgYW5kIGFkZCBh
biBvcHRpb25hbCBvdXQgYXJndW1lbnQKKyAgICAgICAgdG8gdHJhdmVyc2UqV2l0aFdyYXAgaW5k
aWNhdGluZyB3aGV0aGVyIGEgd3JhcCBhY3R1YWxseSBvY2N1cnJlZC4KKworICAgICAgICAqIGhp
c3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaXJlUGFnZVNob3dBbmRQ
b3BTdGF0ZUV2ZW50cyk6CisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZGVzdHJveVJlbmRlclRyZWUpOgorICAgICAgICBBZGp1c3QgdG8gdGhlIG5l
dyBDYW5XcmFwIGVudW0uCisgICAgICAgIAorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppbmNyZW1lbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpm
aW5kU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmZpbmRTdHJpbmdNYXRjaGluZ1Jh
bmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyYW5nZU9mU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OmZpbmRNYXRjaGVzRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1bm1hcmtBbGxUZXh0TWF0Y2hlcyk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAg
ICAgIEFkanVzdCB0byB0aGUgbmV3IENhbldyYXAgZW51bSwgYW5kIG9wdGlvbmFsbHkgcGx1bWIg
RGlkV3JhcCB0aHJvdWdoCisgICAgICAgIHRvIGNhbGxlcnMgb2YgZmluZFN0cmluZygpLgorCiAy
MDE3LTAzLTMxICBZb2F2IFdlaXNzICA8eW9hdkB5b2F2LndzPgogCiAgICAgICAgIFJlbW92ZSBQ
UkVMT0FEX0RFQlVHIHJlbGF0ZWQgY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0YzkxN2QzMGUw
Zjk0NmEzMzBiMjRmN2I1ODFiZDllYjQwM2ZjZjkzLi5hZjU2NmIzZWZjZGZkMmJiZTM3NjkwMTFh
NGRmYjVjN2JkNmJjZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTct
MDMtMzEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
W01hY10gLVtXS1dlYlZpZXcgZmluZE1hdGNoZXNGb3JTdHJpbmc6cmVsYXRpdmVUb01hdGNoOmZp
bmRPcHRpb25zOm1heFJlc3VsdHM6cmVzdWx0Q29sbGVjdG9yOl0gaW52b2tlcyB0aGUgcmVzdWx0
Q29sbGVjdG9yIHdpdGggZGlkV3JhcCA9IE5PIGV2ZW4gd2hlbiBpdCB3cmFwcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1ODAxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yOTY0OTUzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKGluY3JlbWVu
dEZyYW1lKToKKyAgICAgICAgQWRqdXN0IHRvIHRoZSBuZXcgQ2FuV3JhcCBlbnVtLgorCiAyMDE3
LTAzLTI3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogU2F2aW5nIGZpbGVzIHNob3VsZCBub3Qgc3VnZ2VzdCB0aGUgdG9wIGxl
dmVsIGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDBjNzZhZGVjMTgyMDc4Yzc2MmZhOGE5ZTcwNThj
YTAzNmJhZDY5ZGUuLjA4NmM0OTFmODA3OGViYTFlZTI5Yzc3NmI4MGFkZmNjYWRlNTBlYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsNSArMSw0MiBAQAogMjAxNy0wMy0zMSAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAorICAgICAgICBbTWFjXSAtW1dLV2ViVmlldyBmaW5kTWF0
Y2hlc0ZvclN0cmluZzpyZWxhdGl2ZVRvTWF0Y2g6ZmluZE9wdGlvbnM6bWF4UmVzdWx0czpyZXN1
bHRDb2xsZWN0b3I6XSBpbnZva2VzIHRoZSByZXN1bHRDb2xsZWN0b3Igd2l0aCBkaWRXcmFwID0g
Tk8gZXZlbiB3aGVuIGl0IHdyYXBzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjU4MDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5NjQ5NTM1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3Vz
bHksIHdoZW4gZG9pbmcgYW4gaW5jcmVtZW50YWwgZmluZCB0aGF0IHdyYXBwZWQsIHdlIHdvdWxk
IAorICAgICAgICBzYXkgdGhhdCBpdCBkaWQgbm90LCBsZWFkaW5nIE5TVGV4dEZpbmRlciB0byBu
b3QgcHJvdmlkZSBpdHMgdXN1YWwKKyAgICAgICAgd3JhcHBpbmcgVUksIGFuZCBvdGhlciBjbGll
bnRzIG9mIHRoZSBOU1RleHRGaW5kZXJDbGllbnQgcHJvdG9jb2wgdG8KKyAgICAgICAgZ2V0IGNv
bmZ1c2VkIGJ5IHRoZSBsYWNrIG9mIHdyYXBwaW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluZFN0
cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElGaW5kQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkZpbmRDbGllbnQ6OmRpZEZpbmRTdHJp
bmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQ
YWdlU2V0UGFnZUZpbmRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9GaW5kQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0ZpbmRDbGllbnQubW06CisgICAgICAg
IChXZWJLaXQ6OkZpbmRDbGllbnQ6OmRpZEZpbmRTdHJpbmcpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250
cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwpOgorICAgICAgICAoV2ViS2l0OjpG
aW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0ZpbmRDb250cm9sbGVyLmg6CisgICAgICAgIFBsdW1iIERpZFdyYXAgZnJvbSBGaW5kQ29udHJv
bGxlcidzIGNhbGwgdG8gZmluZFN0cmluZyBiYWNrIHRocm91Z2gKKyAgICAgICAgdGhlIERpZEZp
bmRTdHJpbmcgbWVzc2FnZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVy
Q2xpZW50Lm1tOgorICAgICAgICAoLVtXS1RleHRGaW5kZXJDbGllbnQgZGlkRmluZFN0cmluZ01h
dGNoZXNXaXRoUmVjdHM6ZGlkV3JhcEFyb3VuZDpdKToKKyAgICAgICAgKC1bV0tUZXh0RmluZGVy
Q2xpZW50IGRpZEZpbmRTdHJpbmdNYXRjaGVzV2l0aFJlY3RzOl0pOiBEZWxldGVkLgorICAgICAg
ICBNYWtlIHVzZSBvZiB0aGUgbmV3IERpZFdyYXAgaW5mb3JtYXRpb24gdG8gc3RvcCBseWluZyB0
byBOU1RleHRGaW5kZXIKKyAgICAgICAgYWJvdXQgd2hldGhlciBhIHdyYXAgYWN0dWFsbHkgb2Nj
dXJyZWQuCisKKzIwMTctMDMtMzEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5j
b20+CisKICAgICAgICAgTWFpbCBjYW4gZ2V0IHN0dWNrIHVuZGVybmVhdGggRmluZENvbnRyb2xs
ZXI6OmZpbmRTdHJpbmdNYXRjaGVzIGFmdGVyIHNlYXJjaGluZyBpbiBhIGxvbmcgbWVzc2FnZQog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMzI2CiAg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDMzMDM5NT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZFBhZ2UuY3BwCmluZGV4IDNkZGQ5YzE4ZGNkMmY2MWFmMjNiODBjNDQyZGE3MThkZjk3M2FmNjQu
LjBmMzNjYjQ3MDU1ODdhNzM4YTJkMGM5ZDRhM2M0NjZhODE2YTVhNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9DYWNoZWRQYWdlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgdm9pZCBmaXJl
UGFnZVNob3dBbmRQb3BTdGF0ZUV2ZW50cyhQYWdlJiBwYWdlKQogICAgIC8vIERpc3BhdGNoaW5n
IEphdmFTY3JpcHQgZXZlbnRzIGNhbiBjYXVzZSBmcmFtZSBkZXN0cnVjdGlvbi4KICAgICBhdXRv
JiBtYWluRnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOwogICAgIFZlY3RvcjxSZWY8RnJhbWU+PiBj
aGlsZEZyYW1lczsKLSAgICBmb3IgKGF1dG8qIGNoaWxkID0gbWFpbkZyYW1lLnRyZWUoKS50cmF2
ZXJzZU5leHRJblBvc3RPcmRlcldpdGhXcmFwKHRydWUpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
dHJlZSgpLnRyYXZlcnNlTmV4dEluUG9zdE9yZGVyV2l0aFdyYXAoZmFsc2UpKQorICAgIGZvciAo
YXV0byogY2hpbGQgPSBtYWluRnJhbWUudHJlZSgpLnRyYXZlcnNlTmV4dEluUG9zdE9yZGVyV2l0
aFdyYXAoQ2FuV3JhcDo6WWVzKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS50cmF2ZXJz
ZU5leHRJblBvc3RPcmRlcldpdGhXcmFwKENhbldyYXA6Ok5vKSkKICAgICAgICAgY2hpbGRGcmFt
ZXMuYXBwZW5kKCpjaGlsZCk7CiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRGcmFtZXMp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCBhYmIwM2ZmZjdiNWNmYWE5
NmZjOWVhNTJlYmRmNDAzZDkyMjhmMmIxLi43MzAwNzc5YmFhODAwZDY0Y2U4OTY5OGMyYTJiNDJi
Nzk0OTQyNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCkBAIC0zNzQsNyAr
Mzc0LDcgQEAgc3RhdGljIHZvaWQgc2V0UGFnZUNhY2hlU3RhdGUoUGFnZSYgcGFnZSwgRG9jdW1l
bnQ6OlBhZ2VDYWNoZVN0YXRlIHBhZ2VDYWNoZVN0YXQKIC8vIE5vdGUgdGhhdCBkZXN0cnVjdGlv
biBoYXBwZW5zIGJvdHRvbS11cCBzbyB0aGF0IHRoZSBtYWluIGZyYW1lJ3MgdHJlZSBkaWVzIGxh
c3QuCiBzdGF0aWMgdm9pZCBkZXN0cm95UmVuZGVyVHJlZShNYWluRnJhbWUmIG1haW5GcmFtZSkK
IHsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZS50cmVlKCkudHJhdmVyc2VQcmV2
aW91c1dpdGhXcmFwKHRydWUpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
UHJldmlvdXNXaXRoV3JhcChmYWxzZSkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5G
cmFtZS50cmVlKCkudHJhdmVyc2VQcmV2aW91c1dpdGhXcmFwKENhbldyYXA6Olllcyk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VQcmV2aW91c1dpdGhXcmFwKENhbldyYXA6
Ok5vKSkgewogICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLT5kb2N1bWVudCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IDRlMWJjMjliN2RmMDlkY2E0MDZlMmQ3MGEyZWNm
YmMxMzdmMDJmNDAuLjhhZjdkNTJmNWRkNzllNmEyMWY4Yzg4MGM3YTk0ZmQyOWE3OTI4NTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKQEAgLTQwMywxOCArNDAzLDIxIEBAIEZyYW1lKiBG
cmFtZVRyZWU6OnRyYXZlcnNlTmV4dFJlbmRlcmVkKGNvbnN0IEZyYW1lKiBzdGF5V2l0aGluKSBj
b25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1GcmFtZSogRnJhbWVUcmVlOjp0cmF2ZXJz
ZU5leHRXaXRoV3JhcChib29sIHdyYXApIGNvbnN0CitGcmFtZSogRnJhbWVUcmVlOjp0cmF2ZXJz
ZU5leHRXaXRoV3JhcChDYW5XcmFwIGNhbldyYXAsIERpZFdyYXAqIGRpZFdyYXApIGNvbnN0CiB7
CiAgICAgaWYgKEZyYW1lKiByZXN1bHQgPSB0cmF2ZXJzZU5leHQoKSkKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKIAotICAgIGlmICh3cmFwKQorICAgIGlmIChjYW5XcmFwID09IENhbldyYXA6Olll
cykgeworICAgICAgICBpZiAoZGlkV3JhcCkKKyAgICAgICAgICAgICpkaWRXcmFwID0gRGlkV3Jh
cDo6WWVzOwogICAgICAgICByZXR1cm4gJm1fdGhpc0ZyYW1lLm1haW5GcmFtZSgpOworICAgIH0K
IAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1GcmFtZSogRnJhbWVUcmVlOjp0cmF2ZXJzZVBy
ZXZpb3VzV2l0aFdyYXAoYm9vbCB3cmFwKSBjb25zdAorRnJhbWUqIEZyYW1lVHJlZTo6dHJhdmVy
c2VQcmV2aW91c1dpdGhXcmFwKENhbldyYXAgY2FuV3JhcCwgRGlkV3JhcCogZGlkV3JhcCkgY29u
c3QKIHsKICAgICAvLyBGSVhNRTogYmVzaWRlcyB0aGUgd3JhcCBmZWF0dXJlLCB0aGlzIGlzIGp1
c3QgdGhlIHRyYXZlcnNlUHJldmlvdXNOb2RlIGFsZ29yaXRobQogCkBAIC00MjQsMjAgKzQyNywy
MyBAQCBGcmFtZSogRnJhbWVUcmVlOjp0cmF2ZXJzZVByZXZpb3VzV2l0aFdyYXAoYm9vbCB3cmFw
KSBjb25zdAogICAgICAgICByZXR1cm4gcGFyZW50RnJhbWU7CiAgICAgCiAgICAgLy8gbm8gc2li
bGluZ3MsIG5vIHBhcmVudCwgc2VsZj09dG9wCi0gICAgaWYgKHdyYXApCisgICAgaWYgKGNhbldy
YXAgPT0gQ2FuV3JhcDo6WWVzKSB7CisgICAgICAgIGlmIChkaWRXcmFwKQorICAgICAgICAgICAg
KmRpZFdyYXAgPSBEaWRXcmFwOjpZZXM7CiAgICAgICAgIHJldHVybiBkZWVwTGFzdENoaWxkKCk7
CisgICAgfQogCiAgICAgLy8gdG9wIHZpZXcgaXMgYWx3YXlzIHRoZSBsYXN0IG9uZSBpbiB0aGlz
IG9yZGVyaW5nLCBzbyBwcmV2IGlzIG5pbCB3aXRob3V0IHdyYXAKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotRnJhbWUqIEZyYW1lVHJlZTo6dHJhdmVyc2VOZXh0SW5Qb3N0T3JkZXJXaXRoV3Jh
cChib29sIHdyYXApIGNvbnN0CitGcmFtZSogRnJhbWVUcmVlOjp0cmF2ZXJzZU5leHRJblBvc3RP
cmRlcldpdGhXcmFwKENhbldyYXAgY2FuV3JhcCkgY29uc3QKIHsKICAgICBpZiAobV9uZXh0U2li
bGluZykKICAgICAgICAgcmV0dXJuIG1fbmV4dFNpYmxpbmctPnRyZWUoKS5kZWVwRmlyc3RDaGls
ZCgpOwogICAgIGlmIChtX3BhcmVudCkKICAgICAgICAgcmV0dXJuIG1fcGFyZW50OwotICAgIGlm
ICh3cmFwKQorICAgIGlmIChjYW5XcmFwID09IENhbldyYXA6OlllcykKICAgICAgICAgcmV0dXJu
IGRlZXBGaXJzdENoaWxkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVRyZWUuaAppbmRleCAwNTJmMzYwOWUwMGM1ZTExMTY0ZjJmOTQ1N2NlYzg4ZjUwMzM0MjIxLi40
Y2QyY2NjMjNhZjRhNDMzNTUzMmRlN2NmOWZlNjRlMGFlOTVhYWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVUcmVlLmgKQEAgLTIzLDYgKzIzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVt
IGNsYXNzIENhbldyYXAgOiBib29sIHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBEaWRXcmFwIDog
Ym9vbCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgRnJhbWU7CiBjbGFzcyBUcmVlU2NvcGU7CiAKQEAg
LTYyLDEwICs2NSwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWUqIHRyYXZl
cnNlTmV4dChjb25zdCBGcmFtZSogc3RheVdpdGhpbiA9IG51bGxwdHIpIGNvbnN0OwogICAgIC8v
IFJlbmRlcmVkIG1lYW5zIGJlaW5nIHRoZSBtYWluIGZyYW1lIG9yIGhhdmluZyBhbiBvd25lclJl
bmRlcmVyLiBJdCBtYXkgbm90IGhhdmUgYmVlbiBwYXJlbnRlZCBpbiB0aGUgV2lkZ2V0IHRyZWUg
eWV0IChzZWUgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSkuCiAgICAgV0VC
Q09SRV9FWFBPUlQgRnJhbWUqIHRyYXZlcnNlTmV4dFJlbmRlcmVkKGNvbnN0IEZyYW1lKiBzdGF5
V2l0aGluID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRnJhbWUqIHRyYXZl
cnNlTmV4dFdpdGhXcmFwKGJvb2wpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lKiB0
cmF2ZXJzZVByZXZpb3VzV2l0aFdyYXAoYm9vbCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
RnJhbWUqIHRyYXZlcnNlTmV4dFdpdGhXcmFwKENhbldyYXAsIERpZFdyYXAqID0gbnVsbHB0cikg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWUqIHRyYXZlcnNlUHJldmlvdXNXaXRoV3Jh
cChDYW5XcmFwLCBEaWRXcmFwKiA9IG51bGxwdHIpIGNvbnN0OwogCi0gICAgRnJhbWUqIHRyYXZl
cnNlTmV4dEluUG9zdE9yZGVyV2l0aFdyYXAoYm9vbCkgY29uc3Q7CisgICAgRnJhbWUqIHRyYXZl
cnNlTmV4dEluUG9zdE9yZGVyV2l0aFdyYXAoQ2FuV3JhcCkgY29uc3Q7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZENoaWxkKEZyYW1lJik7CiAgICAgdm9pZCBkZXRhY2hGcm9tUGFy
ZW50KCkgeyBtX3BhcmVudCA9IG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDMwZjA4
MTI0YjdiZTc2NmU3M2RhNjAxYmJhYTE0YjdkZThlNTQxYTcuLjRhYzNhNGEwZmEyN2YzMDM4NWY4
NDE2NTkzZmMxYTVlODJkM2Y0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNjQ3LDE5ICs2NDcs
MTkgQEAgdm9pZCBQYWdlOjpzZXRDYW5TdGFydE1lZGlhKGJvb2wgY2FuU3RhcnRNZWRpYSkKICAg
ICB9CiB9CiAKLXN0YXRpYyBGcmFtZSogaW5jcmVtZW50RnJhbWUoRnJhbWUqIGN1cnIsIGJvb2wg
Zm9yd2FyZCwgYm9vbCB3cmFwRmxhZykKK3N0YXRpYyBGcmFtZSogaW5jcmVtZW50RnJhbWUoRnJh
bWUqIGN1cnIsIGJvb2wgZm9yd2FyZCwgQ2FuV3JhcCBjYW5XcmFwLCBEaWRXcmFwKiBkaWRXcmFw
ID0gbnVsbHB0cikKIHsKICAgICByZXR1cm4gZm9yd2FyZAotICAgICAgICA/IGN1cnItPnRyZWUo
KS50cmF2ZXJzZU5leHRXaXRoV3JhcCh3cmFwRmxhZykKLSAgICAgICAgOiBjdXJyLT50cmVlKCku
dHJhdmVyc2VQcmV2aW91c1dpdGhXcmFwKHdyYXBGbGFnKTsKKyAgICAgICAgPyBjdXJyLT50cmVl
KCkudHJhdmVyc2VOZXh0V2l0aFdyYXAoY2FuV3JhcCwgZGlkV3JhcCkKKyAgICAgICAgOiBjdXJy
LT50cmVlKCkudHJhdmVyc2VQcmV2aW91c1dpdGhXcmFwKGNhbldyYXAsIGRpZFdyYXApOwogfQog
Ci1ib29sIFBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25z
IG9wdGlvbnMpCitib29sIFBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZp
bmRPcHRpb25zIG9wdGlvbnMsIERpZFdyYXAqIGRpZFdyYXApCiB7CiAgICAgaWYgKHRhcmdldC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgc2hvdWxkV3JhcCA9
IG9wdGlvbnMgJiBXcmFwQXJvdW5kOworICAgIENhbldyYXAgY2FuV3JhcCA9IG9wdGlvbnMgJiBX
cmFwQXJvdW5kID8gQ2FuV3JhcDo6WWVzIDogQ2FuV3JhcDo6Tm87CiAgICAgRnJhbWUqIGZyYW1l
ID0gJmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIEZyYW1lKiBz
dGFydEZyYW1lID0gZnJhbWU7CiAgICAgZG8gewpAQCAtNjY5LDEyICs2NjksMTQgQEAgYm9vbCBQ
YWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25z
KQogICAgICAgICAgICAgZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKGZyYW1lKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGZyYW1lID0gaW5j
cmVtZW50RnJhbWUoZnJhbWUsICEob3B0aW9ucyAmIEJhY2t3YXJkcyksIHNob3VsZFdyYXApOwor
ICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZyYW1lLCAhKG9wdGlvbnMgJiBCYWNrd2Fy
ZHMpLCBjYW5XcmFwLCBkaWRXcmFwKTsKICAgICB9IHdoaWxlIChmcmFtZSAmJiBmcmFtZSAhPSBz
dGFydEZyYW1lKTsKIAogICAgIC8vIFNlYXJjaCBjb250ZW50cyBvZiBzdGFydEZyYW1lLCBvbiB0
aGUgb3RoZXIgc2lkZSBvZiB0aGUgc2VsZWN0aW9uIHRoYXQgd2UgZGlkIGVhcmxpZXIuCiAgICAg
Ly8gV2UgY2hlYXQgYSBiaXQgYW5kIGp1c3QgcmVzZWFyY2ggd2l0aCB3cmFwIG9uCi0gICAgaWYg
KHNob3VsZFdyYXAgJiYgIXN0YXJ0RnJhbWUtPnNlbGVjdGlvbigpLmlzTm9uZSgpKSB7CisgICAg
aWYgKGNhbldyYXAgPT0gQ2FuV3JhcDo6WWVzICYmICFzdGFydEZyYW1lLT5zZWxlY3Rpb24oKS5p
c05vbmUoKSkgeworICAgICAgICBpZiAoZGlkV3JhcCkKKyAgICAgICAgICAgICpkaWRXcmFwID0g
RGlkV3JhcDo6WWVzOwogICAgICAgICBib29sIGZvdW5kID0gc3RhcnRGcmFtZS0+ZWRpdG9yKCku
ZmluZFN0cmluZyh0YXJnZXQsIG9wdGlvbnMgfCBXcmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlv
bik7CiAgICAgICAgIGZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRGcmFtZShmcmFtZSk7CiAg
ICAgICAgIHJldHVybiBmb3VuZDsKQEAgLTY5Myw3ICs2OTUsNyBAQCB2b2lkIFBhZ2U6OmZpbmRT
dHJpbmdNYXRjaGluZ1Jhbmdlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0
aW9ucywgaQogICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dCh0YXJn
ZXQsIDAsIG9wdGlvbnMsIGxpbWl0ID8gKGxpbWl0IC0gbWF0Y2hSYW5nZXMuc2l6ZSgpKSA6IDAs
IHRydWUsICZtYXRjaFJhbmdlcyk7CiAgICAgICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCkuaXNS
YW5nZSgpKQogICAgICAgICAgICAgZnJhbWVXaXRoU2VsZWN0aW9uID0gZnJhbWU7Ci0gICAgICAg
IGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJhbWUsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgZnJh
bWUgPSBpbmNyZW1lbnRGcmFtZShmcmFtZSwgdHJ1ZSwgQ2FuV3JhcDo6Tm8pOwogICAgIH0gd2hp
bGUgKGZyYW1lKTsKIAogICAgIGlmIChtYXRjaFJhbmdlcy5pc0VtcHR5KCkpCkBAIC03MzUsMTkg
KzczNywxOSBAQCBSZWZQdHI8UmFuZ2U+IFBhZ2U6OnJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5n
JiB0YXJnZXQsIFJhbmdlKiByZWZlcmVuY2VSYW5nZSwgRgogICAgIGlmIChyZWZlcmVuY2VSYW5n
ZSAmJiByZWZlcmVuY2VSYW5nZS0+b3duZXJEb2N1bWVudCgpLnBhZ2UoKSAhPSB0aGlzKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJvb2wgc2hvdWxkV3JhcCA9IG9wdGlvbnMgJiBX
cmFwQXJvdW5kOworICAgIENhbldyYXAgY2FuV3JhcCA9IG9wdGlvbnMgJiBXcmFwQXJvdW5kID8g
Q2FuV3JhcDo6WWVzIDogQ2FuV3JhcDo6Tm87CiAgICAgRnJhbWUqIGZyYW1lID0gcmVmZXJlbmNl
UmFuZ2UgPyByZWZlcmVuY2VSYW5nZS0+b3duZXJEb2N1bWVudCgpLmZyYW1lKCkgOiAmbWFpbkZy
YW1lKCk7CiAgICAgRnJhbWUqIHN0YXJ0RnJhbWUgPSBmcmFtZTsKICAgICBkbyB7CiAgICAgICAg
IGlmIChSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gZnJhbWUtPmVkaXRvcigpLnJhbmdlT2ZT
dHJpbmcodGFyZ2V0LCBmcmFtZSA9PSBzdGFydEZyYW1lID8gcmVmZXJlbmNlUmFuZ2UgOiAwLCBv
cHRpb25zICYgfldyYXBBcm91bmQpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwog
Ci0gICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJhbWUsICEob3B0aW9ucyAmIEJhY2t3
YXJkcyksIHNob3VsZFdyYXApOworICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZyYW1l
LCAhKG9wdGlvbnMgJiBCYWNrd2FyZHMpLCBjYW5XcmFwKTsKICAgICB9IHdoaWxlIChmcmFtZSAm
JiBmcmFtZSAhPSBzdGFydEZyYW1lKTsKIAogICAgIC8vIFNlYXJjaCBjb250ZW50cyBvZiBzdGFy
dEZyYW1lLCBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgcmVmZXJlbmNlIHJhbmdlIHRoYXQgd2Ug
ZGlkIGVhcmxpZXIuCiAgICAgLy8gV2UgY2hlYXQgYSBiaXQgYW5kIGp1c3Qgc2VhcmNoIGFnYWlu
IHdpdGggd3JhcCBvbi4KLSAgICBpZiAoc2hvdWxkV3JhcCAmJiByZWZlcmVuY2VSYW5nZSkgewor
ICAgIGlmIChjYW5XcmFwID09IENhbldyYXA6OlllcyAmJiByZWZlcmVuY2VSYW5nZSkgewogICAg
ICAgICBpZiAoUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IHN0YXJ0RnJhbWUtPmVkaXRvcigp
LnJhbmdlT2ZTdHJpbmcodGFyZ2V0LCByZWZlcmVuY2VSYW5nZSwgb3B0aW9ucyB8IFdyYXBBcm91
bmQgfCBTdGFydEluU2VsZWN0aW9uKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHRSYW5nZTsK
ICAgICB9CkBAIC03NjcsNyArNzY5LDcgQEAgdW5zaWduZWQgUGFnZTo6ZmluZE1hdGNoZXNGb3JU
ZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnMKICAgICAg
ICAgaWYgKHNob3VsZE1hcmtNYXRjaGVzID09IE1hcmtNYXRjaGVzKQogICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGln
aGxpZ2h0TWF0Y2hlcyA9PSBIaWdobGlnaHRNYXRjaGVzKTsKICAgICAgICAgbWF0Y2hDb3VudCAr
PSBmcmFtZS0+ZWRpdG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dCh0YXJnZXQsIDAsIG9wdGlvbnMs
IG1heE1hdGNoQ291bnQgPyAobWF4TWF0Y2hDb3VudCAtIG1hdGNoQ291bnQpIDogMCwgc2hvdWxk
TWFya01hdGNoZXMgPT0gTWFya01hdGNoZXMsIDApOwotICAgICAgICBmcmFtZSA9IGluY3JlbWVu
dEZyYW1lKGZyYW1lLCB0cnVlLCBmYWxzZSk7CisgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJh
bWUoZnJhbWUsIHRydWUsIENhbldyYXA6Ok5vKTsKICAgICB9IHdoaWxlIChmcmFtZSk7CiAKICAg
ICByZXR1cm4gbWF0Y2hDb3VudDsKQEAgLTc4OCw3ICs3OTAsNyBAQCB2b2lkIFBhZ2U6OnVubWFy
a0FsbFRleHRNYXRjaGVzKCkKICAgICBGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7CiAgICAg
ZG8gewogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLnJlbW92ZU1hcmtlcnMo
RG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaCk7Ci0gICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJh
bWUoZnJhbWUsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgZnJhbWUgPSBpbmNyZW1lbnRGcmFtZShm
cmFtZSwgdHJ1ZSwgQ2FuV3JhcDo6Tm8pOwogICAgIH0gd2hpbGUgKGZyYW1lKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAppbmRleCAxMjAyNzUwNWExOGY3NmZhMGIxMmVhNzRhY2Q2YWFjOTY3YWIwN2I5Li5j
MTVhZWU2NDRkZTVlYjU1Y2UxMGNiNmU2MTA1MDlhNjIzMmIyOTkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApA
QCAtMTQ1LDYgKzE0NSw5IEBAIGVudW0gY2xhc3MgRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3Igewog
ICAgIFVucmVzcG9uc2l2ZQogfTsKIAorZW51bSBjbGFzcyBDYW5XcmFwIDogYm9vbDsKK2VudW0g
Y2xhc3MgRGlkV3JhcCA6IGJvb2w7CisKIGNsYXNzIFBhZ2UgOiBwdWJsaWMgU3VwcGxlbWVudGFi
bGU8UGFnZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOwogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtMjY0LDcgKzI2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhib29sIGIpIHsgbV90YWJLZXlDeWNsZXNUaHJv
dWdoRWxlbWVudHMgPSBiOyB9CiAgICAgYm9vbCB0YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMo
KSBjb25zdCB7IHJldHVybiBtX3RhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50czsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25z
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmlu
ZE9wdGlvbnMsIERpZFdyYXAqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8UmFuZ2U+IHJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBGaW5kT3B0aW9u
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBjYWE3MjIzOWM1Yzg4
OGFlMTRjYTFkMDQ5NzgxMmI2OTk4Yzc5YmVlLi4zYTg2YjZiMzQ0NGY1ZDdkY2E2ZDI0OWIxNGQ1
M2JjMGI4MzQ1MWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC02Nzk2
LDkgKzY3OTYsMTAgQEAgLSAodm9pZClzZXROZXh0S2V5VmlldzooTlNWaWV3ICopdmlldwogc3Rh
dGljIFdlYkZyYW1lICppbmNyZW1lbnRGcmFtZShXZWJGcmFtZSAqZnJhbWUsIFdlYkZpbmRPcHRp
b25zIG9wdGlvbnMgPSAwKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsK
KyAgICBDYW5XcmFwIGNhbldyYXAgPSBvcHRpb25zICYgV2ViRmluZE9wdGlvbnNXcmFwQXJvdW5k
ID8gQ2FuV3JhcDo6WWVzIDogQ2FuV3JhcDo6Tm87CiAgICAgcmV0dXJuIGtpdCgob3B0aW9ucyAm
IFdlYkZpbmRPcHRpb25zQmFja3dhcmRzKQotICAgICAgICA/IGNvcmVGcmFtZS0+dHJlZSgpLnRy
YXZlcnNlUHJldmlvdXNXaXRoV3JhcChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNXcmFwQXJvdW5k
KQotICAgICAgICA6IGNvcmVGcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dFdpdGhXcmFwKG9wdGlv
bnMgJiBXZWJGaW5kT3B0aW9uc1dyYXBBcm91bmQpKTsKKyAgICAgICAgPyBjb3JlRnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZVByZXZpb3VzV2l0aFdyYXAoY2FuV3JhcCkKKyAgICAgICAgOiBjb3JlRnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHRXaXRoV3JhcChjYW5XcmFwKSk7CiB9CiAKIC0gKEJPT0wp
c2VhcmNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJlY3Rpb246KEJPT0wpZm9yd2FyZCBjYXNl
U2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnIHdyYXA6KEJPT0wpd3JhcEZsYWcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmgKaW5kZXggMGFiZjhmNjczOTI2Yzc2
ZDY4OWNlNzc2MmUzY2E4NzYwYjBkNzc0Yy4uZjMxMjNhZjE5NTE2NWE2NjlkNjY2ODMxOGI4MTJl
OTMzNjVlNmRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElG
aW5kQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xp
ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkZpbmRDbGllbnQo
KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIHVpbnQzMl90KSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluZFN0cmluZyhXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBtYXRjaFJlY3RzLCB1aW50
MzJfdCwgaW50MzJfdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRTdHJpbmcoV2ViS2l0
OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYgbWF0Y2hSZWN0cywgdWludDMyX3QsIGludDMyX3QsIGJvb2wgZGlkV3JhcEFy
b3VuZCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxUb0ZpbmRTdHJpbmcoV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA5MWUxNWI4MjkzNmYwOTliZWFhMTll
MGI1ZjkzYTI4Mjg5YWUyNzA1Li4xMzYyNzJjMmY1YTEzNDhmNzg3MGRiOTZhZmQ2MTdkZDNiNjVm
OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtOTMx
LDcgKzkzMSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0NsCiAgICAgICAgIH0KIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHZvaWQgZGlkRmluZFN0cmluZyhXZWJQYWdlUHJveHkqIHBhZ2UsIGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCB1aW50
MzJfdCBtYXRjaENvdW50LCBpbnQzMl90KSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZEZpbmRT
dHJpbmcoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgdWludDMyX3QgbWF0Y2hDb3VudCwgaW50MzJfdCwgYm9v
bCBkaWRXcmFwQXJvdW5kKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LmRpZEZpbmRTdHJpbmcpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ZpbmRDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9GaW5kQ2xpZW50LmgKaW5kZXggYWE2ZjcwOTIyYjUyNDU3
OGYwMDQzNTgxMjlhYmI5OWJlYzdlOTM2Ni4uNmQ0NjkzNjIzNmEwM2E2MDljYzVlOWZjY2Y2Njk2
NzBiNzY1YTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0Zp
bmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvRmluZENsaWVu
dC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6
OkZpbmRDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ291bnRTdHJpbmdNYXRjaGVzKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IG1hdGNoQ291bnQpOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5kU3RyaW5nKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMyX3Qg
bWF0Y2hJbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRTdHJpbmcoV2ViUGFnZVByb3h5
KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgdWludDMy
X3QgbWF0Y2hDb3VudCwgaW50MzJfdCBtYXRjaEluZGV4LCBib29sIGRpZFdyYXBBcm91bmQpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFN0cmluZyYpOwogICAgIAogICAgIFdLV2ViVmlldyAqbV93ZWJWaWV3OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ZpbmRDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvRmluZENsaWVudC5tbQppbmRleCA0NDcyNjZjNzYxZDNlNDZi
MTYwYmQ1YjgwNDQ1YjA4ZWM5ODc2OTUwLi44ODBjNGNmM2M2YjQxZjA0YzhjOTA1NjFlYzRhNDU2
NGIwNmVhOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvRmlu
ZENsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvRmluZENsaWVu
dC5tbQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIEZpbmRDbGllbnQ6OmRpZENvdW50U3RyaW5nTWF0
Y2hlcyhXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmIHN0cmluZywgdWludAogICAgICAgICBb
bV9kZWxlZ2F0ZS5nZXQoKSBfd2ViVmlldzptX3dlYlZpZXcgZGlkQ291bnRNYXRjaGVzOm1hdGNo
Q291bnQgZm9yU3RyaW5nOnN0cmluZ107CiB9CiAKLXZvaWQgRmluZENsaWVudDo6ZGlkRmluZFN0
cmluZyhXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkludFJlY3Q+JiwgdWludDMyX3QgbWF0Y2hDb3VudCwgaW50MzJfdCBtYXRjaEluZGV4
KQordm9pZCBGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCB1aW50MzJfdCBt
YXRjaENvdW50LCBpbnQzMl90IG1hdGNoSW5kZXgsIGJvb2wpCiB7CiAgICAgaWYgKG1fZGVsZWdh
dGVNZXRob2RzLndlYnZpZXdEaWRGaW5kU3RyaW5nKQogICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQo
KSBfd2ViVmlldzptX3dlYlZpZXcgZGlkRmluZE1hdGNoZXM6bWF0Y2hDb3VudCBmb3JTdHJpbmc6
c3RyaW5nIHdpdGhNYXRjaEluZGV4Om1hdGNoSW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxNTA2ZTVlMmY5NTgzZmM2MTI3NmI0Yzg1ZDhiYTFi
ZmQyYmM4YTFiLi5hZTc4NmVjYTlhMGJkMjk1OTJhNTVhMWYwYmM4ZThjMjg0YTAzNTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDQ2Niw5ICs0NDY2
LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVz
cyhmbG9hdCBwcm9ncmVzcykKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlu
ZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+JiBtYXRjaFJlY3RzLCB1aW50MzJfdCBtYXRjaENvdW50LCBpbnQzMl90IG1hdGNoSW5kZXgp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBtYXRjaFJlY3RzLCB1aW50MzJfdCBtYXRj
aENvdW50LCBpbnQzMl90IG1hdGNoSW5kZXgsIGJvb2wgZGlkV3JhcEFyb3VuZCkKIHsKLSAgICBt
X2ZpbmRDbGllbnQtPmRpZEZpbmRTdHJpbmcodGhpcywgc3RyaW5nLCBtYXRjaFJlY3RzLCBtYXRj
aENvdW50LCBtYXRjaEluZGV4KTsKKyAgICBtX2ZpbmRDbGllbnQtPmRpZEZpbmRTdHJpbmcodGhp
cywgc3RyaW5nLCBtYXRjaFJlY3RzLCBtYXRjaENvdW50LCBtYXRjaEluZGV4LCBkaWRXcmFwQXJv
dW5kKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYg
bWF0Y2hSZWN0cywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYWNiZGZiYmVkZWUyNGJkY2E2NTk0ZjQ1
MzhmZDc0OWIxZDNmYTg3Yy4uMDU4YzU5YmY4OGUyZjI0MDk3MjBhOWNlYzNiMTRiMjYyN2I2MGY1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzg4LDcgKzc4
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHRJbmRpY2F0b3IoY29uc3QgV2ViQ29yZTo6
VGV4dEluZGljYXRvckRhdGEmLCB1aW50NjRfdCAvKiBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2lu
ZG93TGlmZXRpbWUgKi8gbGlmZXRpbWUgPSAwIC8qIFBlcm1hbmVudCAqLyk7CiAgICAgdm9pZCBz
ZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MoZmxvYXQpOwogICAgIHZvaWQgY2xlYXJU
ZXh0SW5kaWNhdG9yKCk7Ci0gICAgdm9pZCBkaWRGaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMy
X3QgbWF0Y2hJbmRleCk7CisgICAgdm9pZCBkaWRGaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMy
X3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5kKTsKICAgICB2b2lkIGRpZEZhaWxUb0Zp
bmRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhj
b25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYgbWF0
Y2hSZWN0cywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlOTIx
MDlhNTY3Mjk4NjEyZWExMjJiODk5MTI3MWMzYTE2Zjc3ODA1Li5mNmM1NGM3MTYyNmJkNWZlMTgx
MDNjNTUyMzFmYjc4MTk0YWY3Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0MSw3ICsyNDEsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlUHJveHkgewogICAgIERpZENvdW50U3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3RyaW5n
LCB1aW50MzJfdCBtYXRjaENvdW50KQogICAgIFNldFRleHRJbmRpY2F0b3Ioc3RydWN0IFdlYkNv
cmU6OlRleHRJbmRpY2F0b3JEYXRhIGluZGljYXRvciwgdWludDY0X3QgbGlmZXRpbWUpCiAgICAg
Q2xlYXJUZXh0SW5kaWNhdG9yKCkKLSAgICBEaWRGaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcsIFZl
Y3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBtYXRjaFJlY3QsIHVpbnQzMl90IG1hdGNoQ291bnQsIGlu
dDMyX3QgbWF0Y2hJbmRleCkKKyAgICBEaWRGaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcsIFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiBtYXRjaFJlY3QsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMy
X3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5kKQogICAgIERpZEZhaWxUb0ZpbmRTdHJp
bmcoU3RyaW5nIHN0cmluZykKICAgICBEaWRGaW5kU3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3RyaW5n
LCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiBtYXRjaGVzLCBpbnQzMl90IGZpcnN0
SW5kZXhBZnRlclNlbGVjdGlvbikKICAgICBEaWRHZXRJbWFnZUZvckZpbmRNYXRjaChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3QgbWF0
Y2hJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tUZXh0
RmluZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5k
ZXJDbGllbnQubW0KaW5kZXggZjM0NjU1MzcyYjM0NWE3YTUzODg5MDE0NGE5YzdmZjRhZGZiYzMx
MS4uNjRiYzI4YmFiODMzNTUyZjdkNWNmYThkZmExN2I0YTMwZjc3NWNjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KQEAgLTQ3
LDcgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IE5TVUludGVnZXIgbWF4aW11bUZpbmRNYXRjaGVzID0g
MTAwMDsKIAogQGludGVyZmFjZSBXS1RleHRGaW5kZXJDbGllbnQgKCkKIAotLSAodm9pZClkaWRG
aW5kU3RyaW5nTWF0Y2hlc1dpdGhSZWN0czooY29uc3QgVmVjdG9yPFZlY3RvcjxJbnRSZWN0Pj4m
KXJlY3RzOworLSAodm9pZClkaWRGaW5kU3RyaW5nTWF0Y2hlc1dpdGhSZWN0czooY29uc3QgVmVj
dG9yPFZlY3RvcjxJbnRSZWN0Pj4mKXJlY3RzIGRpZFdyYXBBcm91bmQ6KEJPT0wpZGlkV3JhcEFy
b3VuZDsKIAogLSAodm9pZClnZXRJbWFnZUZvck1hdGNoUmVzdWx0OihpZCA8TlNUZXh0RmluZGVy
QXN5bmNocm9ub3VzRG9jdW1lbnRGaW5kTWF0Y2g+KWZpbmRNYXRjaCBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNJbWFnZSAqZ2VuZXJhdGVkSW1hZ2UpKWNvbXBsZXRpb25IYW5kbGVyOwog
LSAodm9pZClkaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0OihXZWJJbWFnZSAqKXN0cmluZzsKQEAg
LTY2LDcgKzY2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmRTdHJpbmdN
YXRjaGVzKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFZl
Y3RvcjxJbnRSZWN0Pj4mIG1hdGNoUmVjdHMsIGludDMyX3QpIG92ZXJyaWRlCiAgICAgewotICAg
ICAgICBbbV90ZXh0RmluZGVyQ2xpZW50IGRpZEZpbmRTdHJpbmdNYXRjaGVzV2l0aFJlY3RzOm1h
dGNoUmVjdHNdOworICAgICAgICBbbV90ZXh0RmluZGVyQ2xpZW50IGRpZEZpbmRTdHJpbmdNYXRj
aGVzV2l0aFJlY3RzOm1hdGNoUmVjdHMgZGlkV3JhcEFyb3VuZDpOT107CiAgICAgfQogCiAgICAg
dm9pZCBkaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViSW1h
Z2UqIGltYWdlLCBpbnQzMl90IGluZGV4KSBvdmVycmlkZQpAQCAtNzQsMTQgKzc0LDE0IEBAIHBy
aXZhdGU6CiAgICAgICAgIFttX3RleHRGaW5kZXJDbGllbnQgZGlkR2V0SW1hZ2VGb3JNYXRjaFJl
c3VsdDppbWFnZV07CiAgICAgfQogCi0gICAgdm9pZCBkaWRGaW5kU3RyaW5nKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgbWF0Y2hSZWN0cywgdWlu
dDMyX3QsIGludDMyX3QpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGaW5kU3RyaW5nKFdlYlBhZ2VQ
cm94eSosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgbWF0Y2hSZWN0cywg
dWludDMyX3QsIGludDMyX3QsIGJvb2wgZGlkV3JhcEFyb3VuZCkgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIFttX3RleHRGaW5kZXJDbGllbnQgZGlkRmluZFN0cmluZ01hdGNoZXNXaXRoUmVjdHM6
eyBtYXRjaFJlY3RzIH1dOworICAgICAgICBbbV90ZXh0RmluZGVyQ2xpZW50IGRpZEZpbmRTdHJp
bmdNYXRjaGVzV2l0aFJlY3RzOnsgbWF0Y2hSZWN0cyB9IGRpZFdyYXBBcm91bmQ6ZGlkV3JhcEFy
b3VuZF07CiAgICAgfQogCiAgICAgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFN0cmluZyYgc3RyaW5nKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgW21fdGV4
dEZpbmRlckNsaWVudCBkaWRGaW5kU3RyaW5nTWF0Y2hlc1dpdGhSZWN0czp7IH1dOworICAgICAg
ICBbbV90ZXh0RmluZGVyQ2xpZW50IGRpZEZpbmRTdHJpbmdNYXRjaGVzV2l0aFJlY3RzOnsgfSBk
aWRXcmFwQXJvdW5kOk5PXTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8V0tUZXh0RmluZGVyQ2xp
ZW50PiBtX3RleHRGaW5kZXJDbGllbnQ7CkBAIC0yMzQsNyArMjM0LDcgQEAgc3RhdGljIFJldGFp
blB0cjxOU0FycmF5PiBhcnJheUZyb21SZWN0cyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIG1hdGNo
UmVjdHMpCiAgICAgcmV0dXJuIG5zTWF0Y2hSZWN0czsKIH0KIAotLSAodm9pZClkaWRGaW5kU3Ry
aW5nTWF0Y2hlc1dpdGhSZWN0czooY29uc3QgVmVjdG9yPFZlY3RvcjxJbnRSZWN0Pj4mKXJlY3Rz
Rm9yTWF0Y2hlcworLSAodm9pZClkaWRGaW5kU3RyaW5nTWF0Y2hlc1dpdGhSZWN0czooY29uc3Qg
VmVjdG9yPFZlY3RvcjxJbnRSZWN0Pj4mKXJlY3RzRm9yTWF0Y2hlcyBkaWRXcmFwQXJvdW5kOihC
T09MKWRpZFdyYXBBcm91bmQKIHsKICAgICBpZiAoX2ZpbmRSZXBseUNhbGxiYWNrcy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0OCw3ICsyNDgsNyBAQCAtICh2b2lkKWRpZEZpbmRT
dHJpbmdNYXRjaGVzV2l0aFJlY3RzOihjb25zdCBWZWN0b3I8VmVjdG9yPEludFJlY3Q+PiYpcmVj
dHNGb3JNYQogICAgICAgICBbbWF0Y2hPYmplY3RzIGFkZE9iamVjdDptYXRjaC5nZXQoKV07CiAg
ICAgfQogCi0gICAgcmVwbHlDYWxsYmFjayhtYXRjaE9iamVjdHMuZ2V0KCksIE5PKTsKKyAgICBy
ZXBseUNhbGxiYWNrKG1hdGNoT2JqZWN0cy5nZXQoKSwgZGlkV3JhcEFyb3VuZCk7CiB9CiAKIC0g
KHZvaWQpZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdDooV2ViSW1hZ2UgKilpbWFnZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAK
aW5kZXggMzMwMzJjMTcyYjFiMjQzOGRhZmQ2MGMzNDY0NjZlYTQ1MDVlNGE3Yi4uMjQxYzUyZjlj
MDJjYThiMTJmMTg3NDA1YmJmNmFjNTg4OWRlZjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBAIC0xMTQsNyArMTE0
LDcgQEAgc3RhdGljIEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcGFnZSkKICAgICBy
ZXR1cm4gMDsKIH0KIAotdm9pZCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdl
U2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQordm9pZCBGaW5kQ29udHJvbGxlcjo6dXBkYXRl
RmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBG
aW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBEaWRXcmFwIGRpZFdy
YXApCiB7CiAgICAgRnJhbWUqIHNlbGVjdGVkRnJhbWUgPSBmcmFtZVdpdGhTZWxlY3Rpb24obV93
ZWJQYWdlLT5jb3JlUGFnZSgpKTsKICAgICAKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIEZpbmRD
b250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwoYm9vbCBmb3VuZCwgY29uc3Qg
U3RyaW5nJiBzdHJpbgogICAgICAgICAgICAgbV9maW5kTWF0Y2hlcy5hcHBlbmQocmFuZ2UpOwog
ICAgICAgICB9CiAKLSAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZEZpbmRTdHJpbmcoc3RyaW5nLCBtYXRjaFJlY3RzLCBtYXRjaENvdW50LCBtX2ZvdW5k
U3RyaW5nTWF0Y2hJbmRleCkpOworICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkRmluZFN0cmluZyhzdHJpbmcsIG1hdGNoUmVjdHMsIG1hdGNoQ291bnQs
IG1fZm91bmRTdHJpbmdNYXRjaEluZGV4LCBkaWRXcmFwID09IERpZFdyYXA6OlllcykpOwogCiAg
ICAgICAgIGlmICghKG9wdGlvbnMgJiBGaW5kT3B0aW9uc1Nob3dGaW5kSW5kaWNhdG9yKSB8fCAh
c2VsZWN0ZWRGcmFtZSB8fCAhdXBkYXRlRmluZEluZGljYXRvcigqc2VsZWN0ZWRGcmFtZSwgc2hv
dWxkU2hvd092ZXJsYXkpKQogICAgICAgICAgICAgaGlkZUZpbmRJbmRpY2F0b3IoKTsKQEAgLTIz
MiwxMCArMjMyLDExIEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnCiAgICAgbV9maW5kTWF0Y2hl
cy5jbGVhcigpOwogCiAgICAgYm9vbCBmb3VuZDsKKyAgICBEaWRXcmFwIGRpZFdyYXAgPSBEaWRX
cmFwOjpObzsKICAgICBpZiAocGx1Z2luVmlldykKICAgICAgICAgZm91bmQgPSBwbHVnaW5WaWV3
LT5maW5kU3RyaW5nKHN0cmluZywgY29yZU9wdGlvbnMsIG1heE1hdGNoQ291bnQpOwogICAgIGVs
c2UKLSAgICAgICAgZm91bmQgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPmZpbmRTdHJpbmcoc3Ry
aW5nLCBjb3JlT3B0aW9ucyk7CisgICAgICAgIGZvdW5kID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgp
LT5maW5kU3RyaW5nKHN0cmluZywgY29yZU9wdGlvbnMsICZkaWRXcmFwKTsKIAogICAgIGlmIChm
b3VuZCkgewogICAgICAgICBkaWRGaW5kU3RyaW5nKCk7CkBAIC0yNDksOCArMjUwLDggQEAgdm9p
ZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9w
dGlvbnMgb3B0aW9ucywgdW5zaWcKICAgICB9CiAKICAgICBSZWZQdHI8V2ViUGFnZT4gcHJvdGVj
dGVkV2ViUGFnZSA9IG1fd2ViUGFnZTsKLSAgICBtX3dlYlBhZ2UtPmRyYXdpbmdBcmVhKCktPmRp
c3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihbcHJvdGVjdGVkV2ViUGFn
ZSwgZm91bmQsIHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudF0gKCkgewotICAgICAgICBw
cm90ZWN0ZWRXZWJQYWdlLT5maW5kQ29udHJvbGxlcigpLnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNj
cm9sbChmb3VuZCwgc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KTsKKyAgICBtX3dlYlBh
Z2UtPmRyYXdpbmdBcmVhKCktPmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3Np
dGlvbihbcHJvdGVjdGVkV2ViUGFnZSwgZm91bmQsIHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hD
b3VudCwgZGlkV3JhcF0gKCkgeworICAgICAgICBwcm90ZWN0ZWRXZWJQYWdlLT5maW5kQ29udHJv
bGxlcigpLnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbChmb3VuZCwgc3RyaW5nLCBvcHRpb25z
LCBtYXhNYXRjaENvdW50LCBkaWRXcmFwKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAppbmRleCA3ZWMwZDVh
ZjgwZTIxNGVjYWJmOGRkZDMzOGQyOGUzZTZkMDY1ZjkwLi42MTllNTg4ZTNlZTY0OTFjOWNmYTA2
YzJmMDFjYTJiMWM5OGMyZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaApAQCAtNDEsNiArNDEsOCBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRnJhbWU7CiBjbGFzcyBSYW5nZTsKKworZW51bSBjbGFzcyBEaWRXcmFw
IDogYm9vbDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04MSw3ICs4Myw3IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHJlY3RzRm9yVGV4dE1hdGNoZXNJblJl
Y3QoV2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCk7CiAgICAgYm9vbCB1cGRhdGVGaW5kSW5kaWNh
dG9yKFdlYkNvcmU6OkZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZXJsYXks
IGJvb2wgc2hvdWxkQW5pbWF0ZSA9IHRydWUpOwogCi0gICAgdm9pZCB1cGRhdGVGaW5kVUlBZnRl
clBhZ2VTY3JvbGwoYm9vbCBmb3VuZCwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2ln
bmVkIG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgdXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xs
KGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRj
aENvdW50LCBXZWJDb3JlOjpEaWRXcmFwKTsKIAogICAgIHZvaWQgd2lsbEZpbmRTdHJpbmcoKTsK
ICAgICB2b2lkIGRpZEZpbmRTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMzI4NGRmY2RjYzMwNmNkMDhmMGYwZjM3NWQ3N2YwNzU5
NTAzYTMyLi40Y2IzNjkxMDBiYTMwOWRhYjNhMmMwZTZiNGVkZDE3ZTMxZjg1NGRlIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcg
QEAKIDIwMTctMDMtMzEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
KyAgICAgICAgW01hY10gLVtXS1dlYlZpZXcgZmluZE1hdGNoZXNGb3JTdHJpbmc6cmVsYXRpdmVU
b01hdGNoOmZpbmRPcHRpb25zOm1heFJlc3VsdHM6cmVzdWx0Q29sbGVjdG9yOl0gaW52b2tlcyB0
aGUgcmVzdWx0Q29sbGVjdG9yIHdpdGggZGlkV3JhcCA9IE5PIGV2ZW4gd2hlbiBpdCB3cmFwcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1ODAxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTY0OTUzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL0ZpbmRJblBhZ2UubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgQWRkIHNvbWUgdGVz
dHMgZm9yIHdyYXBwaW5nIGZpbmRzLgorCisyMDE3LTAzLTMxICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCiAgICAgICAgIE1haWwgY2FuIGdldCBzdHVjayB1bmRlcm5l
YXRoIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nTWF0Y2hlcyBhZnRlciBzZWFyY2hpbmcgaW4g
YSBsb25nIG1lc3NhZ2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MDMyNgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAzMzAzOTU+CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9GaW5kSW5QYWdlLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRmluZEluUGFnZS5tbQpp
bmRleCA2ODQ1YmQwYjdmYzUxNmExNDI4YzIyNTllZWE0NDU1Yzk4ODE1YjRiLi4yODcxMzMyMDI4
ZWI3ZTk2ZGRjOGFkZDAzYzFlOTY0NTNmYTBjOGY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9GaW5kSW5QYWdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0ZpbmRJblBhZ2UubW0KQEAgLTM0LDYgKzM0LDcg
QEAKIAogdHlwZWRlZiBlbnVtIDogTlNVSW50ZWdlciB7CiAgICAgTlNUZXh0RmluZGVyQXN5bmNo
cm9ub3VzRG9jdW1lbnRGaW5kT3B0aW9uc0JhY2t3YXJkcyA9IDEgPDwgMCwKKyAgICBOU1RleHRG
aW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25zV3JhcCA9IDEgPDwgMSwKIH0gTlNU
ZXh0RmluZGVyQXN5bmNocm9ub3VzRG9jdW1lbnRGaW5kT3B0aW9uczsKIAogQHByb3RvY29sIE5T
VGV4dEZpbmRlckFzeW5jaHJvbm91c0RvY3VtZW50RmluZE1hdGNoIDxOU09iamVjdD4KQEAgLTEz
NCw0ICsxMzUsMTE4IEBAIFRFU1QoV2ViS2l0MiwgRmluZEluUGFnZSkKICAgICBmaW5kTWF0Y2hl
c0RvbmUgPSBmYWxzZTsKIH0KIAorVEVTVChXZWJLaXQyLCBGaW5kSW5QYWdlV3JhcHBpbmcpCit7
CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCldKTsKKyAgICBb
d2ViVmlldyBfc2V0T3ZlcnJpZGVEZXZpY2VTY2FsZUZhY3RvcjoyXTsKKworICAgIFt3ZWJWaWV3
IGxvYWRIVE1MU3RyaW5nOkAid29yZCB3b3JkIiBiYXNlVVJMOm5pbF07CisgICAgW3dlYlZpZXcg
X3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgTlNUZXh0RmluZGVyQXN5
bmNocm9ub3VzRG9jdW1lbnRGaW5kT3B0aW9ucyBkZWZhdWx0RmluZE9wdGlvbnMgPSBOU1RleHRG
aW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25zV3JhcDsKKyAgICBOU1RleHRGaW5k
ZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25zIGJhY2t3YXJkc0ZpbmRPcHRpb25zID0g
KE5TVGV4dEZpbmRlckFzeW5jaHJvbm91c0RvY3VtZW50RmluZE9wdGlvbnMpKE5TVGV4dEZpbmRl
ckFzeW5jaHJvbm91c0RvY3VtZW50RmluZE9wdGlvbnNXcmFwIHwgTlNUZXh0RmluZGVyQXN5bmNo
cm9ub3VzRG9jdW1lbnRGaW5kT3B0aW9uc0JhY2t3YXJkcyk7CisKKyAgICAvLyBGaW5kIG9uZSBt
YXRjaCwgZG9pbmcgYW4gaW5jcmVtZW50YWwgc2VhcmNoLgorICAgIFt3ZWJWaWV3IGZpbmRNYXRj
aGVzRm9yU3RyaW5nOkAid29yZCIgcmVsYXRpdmVUb01hdGNoOm5pbCBmaW5kT3B0aW9uczpkZWZh
dWx0RmluZE9wdGlvbnMgbWF4UmVzdWx0czoxIHJlc3VsdENvbGxlY3RvcjpeKE5TQXJyYXkgKm1h
dGNoZXMsIEJPT0wgZGlkV3JhcCkgeworICAgICAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMSwg
bWF0Y2hlcy5jb3VudCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShkaWRXcmFwKTsKKworICAgICAg
ICBbd2ViVmlldyBmaW5kTWF0Y2hlc0ZvclN0cmluZzpAIndvcmQiIHJlbGF0aXZlVG9NYXRjaDpu
aWwgZmluZE9wdGlvbnM6ZGVmYXVsdEZpbmRPcHRpb25zIG1heFJlc3VsdHM6MSByZXN1bHRDb2xs
ZWN0b3I6XihOU0FycmF5ICptYXRjaGVzLCBCT09MIGRpZFdyYXApIHsKKyAgICAgICAgICAgIEVY
UEVDVF9FUSgoTlNVSW50ZWdlcikxLCBtYXRjaGVzLmNvdW50KTsKKyAgICAgICAgICAgIEVYUEVD
VF9GQUxTRShkaWRXcmFwKTsKKworICAgICAgICAgICAgLy8gVGhlIG5leHQgbWF0Y2ggc2hvdWxk
IHdyYXAuCisgICAgICAgICAgICBbd2ViVmlldyBmaW5kTWF0Y2hlc0ZvclN0cmluZzpAIndvcmQi
IHJlbGF0aXZlVG9NYXRjaDpuaWwgZmluZE9wdGlvbnM6ZGVmYXVsdEZpbmRPcHRpb25zIG1heFJl
c3VsdHM6MSByZXN1bHRDb2xsZWN0b3I6XihOU0FycmF5ICptYXRjaGVzLCBCT09MIGRpZFdyYXAp
IHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMSwgbWF0Y2hlcy5jb3Vu
dCk7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoZGlkV3JhcCk7CisKKyAgICAgICAgICAg
ICAgICAvLyBHb2luZyBiYWNrd2FyZCBhZnRlciB3cmFwcGluZyBzaG91bGQgd3JhcCBhZ2Fpbi4K
KyAgICAgICAgICAgICAgICBbd2ViVmlldyBmaW5kTWF0Y2hlc0ZvclN0cmluZzpAIndvcmQiIHJl
bGF0aXZlVG9NYXRjaDpuaWwgZmluZE9wdGlvbnM6YmFja3dhcmRzRmluZE9wdGlvbnMgbWF4UmVz
dWx0czoxIHJlc3VsdENvbGxlY3RvcjpeKE5TQXJyYXkgKm1hdGNoZXMsIEJPT0wgZGlkV3JhcCkg
eworICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMSwgbWF0Y2hlcy5j
b3VudCk7CisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKGRpZFdyYXApOworCisgICAg
ICAgICAgICAgICAgICAgIGZpbmRNYXRjaGVzRG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAg
fV07CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfV07CisgICAgfV07CisKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmZpbmRNYXRjaGVzRG9uZSk7CisgICAgZmluZE1hdGNoZXNEb25l
ID0gZmFsc2U7Cit9CisKK1RFU1QoV2ViS2l0MiwgRmluZEluUGFnZVdyYXBwaW5nRGlzYWJsZWQp
Cit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCldKTsKKyAg
ICBbd2ViVmlldyBfc2V0T3ZlcnJpZGVEZXZpY2VTY2FsZUZhY3RvcjoyXTsKKworICAgIFt3ZWJW
aWV3IGxvYWRIVE1MU3RyaW5nOkAid29yZCB3b3JkIiBiYXNlVVJMOm5pbF07CisgICAgW3dlYlZp
ZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgTlNUZXh0RmluZGVy
QXN5bmNocm9ub3VzRG9jdW1lbnRGaW5kT3B0aW9ucyBkZWZhdWx0RmluZE9wdGlvbnMgPSAoTlNU
ZXh0RmluZGVyQXN5bmNocm9ub3VzRG9jdW1lbnRGaW5kT3B0aW9ucykwOworCisgICAgLy8gRmlu
ZCBvbmUgbWF0Y2gsIGRvaW5nIGFuIGluY3JlbWVudGFsIHNlYXJjaC4KKyAgICBbd2ViVmlldyBm
aW5kTWF0Y2hlc0ZvclN0cmluZzpAIndvcmQiIHJlbGF0aXZlVG9NYXRjaDpuaWwgZmluZE9wdGlv
bnM6ZGVmYXVsdEZpbmRPcHRpb25zIG1heFJlc3VsdHM6MSByZXN1bHRDb2xsZWN0b3I6XihOU0Fy
cmF5ICptYXRjaGVzLCBCT09MIGRpZFdyYXApIHsKKyAgICAgICAgRVhQRUNUX0VRKChOU1VJbnRl
Z2VyKTEsIG1hdGNoZXMuY291bnQpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZGlkV3JhcCk7CisK
KyAgICAgICAgW3dlYlZpZXcgZmluZE1hdGNoZXNGb3JTdHJpbmc6QCJ3b3JkIiByZWxhdGl2ZVRv
TWF0Y2g6bmlsIGZpbmRPcHRpb25zOmRlZmF1bHRGaW5kT3B0aW9ucyBtYXhSZXN1bHRzOjEgcmVz
dWx0Q29sbGVjdG9yOl4oTlNBcnJheSAqbWF0Y2hlcywgQk9PTCBkaWRXcmFwKSB7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMSwgbWF0Y2hlcy5jb3VudCk7CisgICAgICAgICAg
ICBFWFBFQ1RfRkFMU0UoZGlkV3JhcCk7CisKKyAgICAgICAgICAgIC8vIFRoZSBuZXh0IG1hdGNo
IHNob3VsZCBmYWlsLCBiZWNhdXNlIHdyYXBwaW5nIGlzIGRpc2FibGVkLgorICAgICAgICAgICAg
W3dlYlZpZXcgZmluZE1hdGNoZXNGb3JTdHJpbmc6QCJ3b3JkIiByZWxhdGl2ZVRvTWF0Y2g6bmls
IGZpbmRPcHRpb25zOmRlZmF1bHRGaW5kT3B0aW9ucyBtYXhSZXN1bHRzOjEgcmVzdWx0Q29sbGVj
dG9yOl4oTlNBcnJheSAqbWF0Y2hlcywgQk9PTCBkaWRXcmFwKSB7CisgICAgICAgICAgICAgICAg
RVhQRUNUX0VRKChOU1VJbnRlZ2VyKTAsIG1hdGNoZXMuY291bnQpOworICAgICAgICAgICAgICAg
IEVYUEVDVF9GQUxTRShkaWRXcmFwKTsKKworICAgICAgICAgICAgICAgIGZpbmRNYXRjaGVzRG9u
ZSA9IHRydWU7CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfV07CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmRNYXRjaGVzRG9uZSk7CisgICAgZmluZE1hdGNo
ZXNEb25lID0gZmFsc2U7Cit9CisKKworVEVTVChXZWJLaXQyLCBGaW5kSW5QYWdlV3JhcHBpbmdT
dWJmcmFtZSkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAw
KV0pOworICAgIFt3ZWJWaWV3IF9zZXRPdmVycmlkZURldmljZVNjYWxlRmFjdG9yOjJdOworCisg
ICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCJ3b3JkIDxpZnJhbWUgc3JjZG9jPSd3b3JkJz4i
IGJhc2VVUkw6bmlsXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdh
dGlvbl07CisKKyAgICBOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25z
IGRlZmF1bHRGaW5kT3B0aW9ucyA9TlNUZXh0RmluZGVyQXN5bmNocm9ub3VzRG9jdW1lbnRGaW5k
T3B0aW9uc1dyYXA7CisgICAgTlNUZXh0RmluZGVyQXN5bmNocm9ub3VzRG9jdW1lbnRGaW5kT3B0
aW9ucyBiYWNrd2FyZHNGaW5kT3B0aW9ucyA9IChOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1
bWVudEZpbmRPcHRpb25zKShOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRp
b25zV3JhcCB8IE5TVGV4dEZpbmRlckFzeW5jaHJvbm91c0RvY3VtZW50RmluZE9wdGlvbnNCYWNr
d2FyZHMpOworCisgICAgLy8gRmluZCBvbmUgbWF0Y2gsIGRvaW5nIGFuIGluY3JlbWVudGFsIHNl
YXJjaC4KKyAgICBbd2ViVmlldyBmaW5kTWF0Y2hlc0ZvclN0cmluZzpAIndvcmQiIHJlbGF0aXZl
VG9NYXRjaDpuaWwgZmluZE9wdGlvbnM6ZGVmYXVsdEZpbmRPcHRpb25zIG1heFJlc3VsdHM6MSBy
ZXN1bHRDb2xsZWN0b3I6XihOU0FycmF5ICptYXRjaGVzLCBCT09MIGRpZFdyYXApIHsKKyAgICAg
ICAgRVhQRUNUX0VRKChOU1VJbnRlZ2VyKTEsIG1hdGNoZXMuY291bnQpOworICAgICAgICBFWFBF
Q1RfRkFMU0UoZGlkV3JhcCk7CisKKyAgICAgICAgW3dlYlZpZXcgZmluZE1hdGNoZXNGb3JTdHJp
bmc6QCJ3b3JkIiByZWxhdGl2ZVRvTWF0Y2g6bmlsIGZpbmRPcHRpb25zOmRlZmF1bHRGaW5kT3B0
aW9ucyBtYXhSZXN1bHRzOjEgcmVzdWx0Q29sbGVjdG9yOl4oTlNBcnJheSAqbWF0Y2hlcywgQk9P
TCBkaWRXcmFwKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMSwgbWF0Y2hl
cy5jb3VudCk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZGlkV3JhcCk7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBuZXh0IG1hdGNoIHNob3VsZCB3cmFwLgorICAgICAgICAgICAgW3dlYlZpZXcg
ZmluZE1hdGNoZXNGb3JTdHJpbmc6QCJ3b3JkIiByZWxhdGl2ZVRvTWF0Y2g6bmlsIGZpbmRPcHRp
b25zOmRlZmF1bHRGaW5kT3B0aW9ucyBtYXhSZXN1bHRzOjEgcmVzdWx0Q29sbGVjdG9yOl4oTlNB
cnJheSAqbWF0Y2hlcywgQk9PTCBkaWRXcmFwKSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX0VR
KChOU1VJbnRlZ2VyKTEsIG1hdGNoZXMuY291bnQpOworICAgICAgICAgICAgICAgIEVYUEVDVF9U
UlVFKGRpZFdyYXApOworCisgICAgICAgICAgICAgICAgLy8gR29pbmcgYmFja3dhcmQgYWZ0ZXIg
d3JhcHBpbmcgc2hvdWxkIHdyYXAgYWdhaW4uCisgICAgICAgICAgICAgICAgW3dlYlZpZXcgZmlu
ZE1hdGNoZXNGb3JTdHJpbmc6QCJ3b3JkIiByZWxhdGl2ZVRvTWF0Y2g6bmlsIGZpbmRPcHRpb25z
OmJhY2t3YXJkc0ZpbmRPcHRpb25zIG1heFJlc3VsdHM6MSByZXN1bHRDb2xsZWN0b3I6XihOU0Fy
cmF5ICptYXRjaGVzLCBCT09MIGRpZFdyYXApIHsKKyAgICAgICAgICAgICAgICAgICAgRVhQRUNU
X0VRKChOU1VJbnRlZ2VyKTEsIG1hdGNoZXMuY291bnQpOworICAgICAgICAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShkaWRXcmFwKTsKKworICAgICAgICAgICAgICAgICAgICBmaW5kTWF0Y2hlc0Rv
bmUgPSB0cnVlOworICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAgfV07CisgICAgICAg
IH1dOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5kTWF0Y2hl
c0RvbmUpOworICAgIGZpbmRNYXRjaGVzRG9uZSA9IGZhbHNlOworfQorCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306089</attachid>
            <date>2017-04-03 11:51:02 -0700</date>
            <delta_ts>2017-04-03 13:16:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165801-20170403115101.patch</filename>
            <type>text/plain</type>
            <size>38102</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IyMWZmMzU0ZTY1NzY1
MTIyMmViZDEzMjA4M2EyZjM2NDU1OGZiYy4uOTdlOTJkZTE5OWU1OGNiNDM1MjA2OTk0OThiNTMw
ODlmM2FlZTQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTA0LTAzICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIC1bV0tX
ZWJWaWV3IGZpbmRNYXRjaGVzRm9yU3RyaW5nOnJlbGF0aXZlVG9NYXRjaDpmaW5kT3B0aW9uczpt
YXhSZXN1bHRzOnJlc3VsdENvbGxlY3RvcjpdIGludm9rZXMgdGhlIHJlc3VsdENvbGxlY3RvciB3
aXRoIGRpZFdyYXAgPSBOTyBldmVuIHdoZW4gaXQgd3JhcHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTgwMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMjk2NDk1MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTmV3IEFQSSB0ZXN0czogV2ViS2l0Mi5GaW5kSW5QYWdlV3JhcHBpbmcqCisKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnRy
YXZlcnNlTmV4dFdpdGhXcmFwKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6dHJhdmVy
c2VQcmV2aW91c1dpdGhXcmFwKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6dHJhdmVy
c2VOZXh0SW5Qb3N0T3JkZXJXaXRoV3JhcCk6CisgICAgICAgICogcGFnZS9GcmFtZVRyZWUuaDoK
KyAgICAgICAgQWRkIENhbldyYXAgYW5kIERpZFdyYXAgYm9vbGVhbiBlbnVtcywgYW5kIGFkZCBh
biBvcHRpb25hbCBvdXQgYXJndW1lbnQKKyAgICAgICAgdG8gdHJhdmVyc2UqV2l0aFdyYXAgaW5k
aWNhdGluZyB3aGV0aGVyIGEgd3JhcCBhY3R1YWxseSBvY2N1cnJlZC4KKworICAgICAgICAqIGhp
c3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaXJlUGFnZVNob3dBbmRQ
b3BTdGF0ZUV2ZW50cyk6CisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZGVzdHJveVJlbmRlclRyZWUpOgorICAgICAgICBBZGp1c3QgdG8gdGhlIG5l
dyBDYW5XcmFwIGVudW0uCisgICAgICAgIAorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppbmNyZW1lbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpm
aW5kU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmZpbmRTdHJpbmdNYXRjaGluZ1Jh
bmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyYW5nZU9mU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OmZpbmRNYXRjaGVzRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1bm1hcmtBbGxUZXh0TWF0Y2hlcyk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAg
ICAgIEFkanVzdCB0byB0aGUgbmV3IENhbldyYXAgZW51bSwgYW5kIG9wdGlvbmFsbHkgcGx1bWIg
RGlkV3JhcCB0aHJvdWdoCisgICAgICAgIHRvIGNhbGxlcnMgb2YgZmluZFN0cmluZygpLgorCiAy
MDE3LTA0LTAzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR0NyeXB0XSBJbXBsZW1lbnQgQUVTX0dDTSBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NGM5MTdkMzBlMGY5NDZhMzMwYjI0ZjdiNTgxYmQ5ZWI0MDNmY2Y5My4uMmNkNDlmMTBiZGE5MjBh
YjY0MGIxNjU0MDJjNmQ0ZjIxYTQ0MzM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDE3LTA0LTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIFtNYWNdIC1bV0tXZWJWaWV3IGZpbmRNYXRjaGVzRm9yU3RyaW5nOnJlbGF0aXZl
VG9NYXRjaDpmaW5kT3B0aW9uczptYXhSZXN1bHRzOnJlc3VsdENvbGxlY3RvcjpdIGludm9rZXMg
dGhlIHJlc3VsdENvbGxlY3RvciB3aXRoIGRpZFdyYXAgPSBOTyBldmVuIHdoZW4gaXQgd3JhcHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTgwMQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk2NDk1MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAg
IChpbmNyZW1lbnRGcmFtZSk6CisgICAgICAgIEFkanVzdCB0byB0aGUgbmV3IENhbldyYXAgZW51
bS4KKwogMjAxNy0wMy0yNyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNhdmluZyBmaWxlcyBzaG91bGQgbm90IHN1Z2dlc3Qg
dGhlIHRvcCBsZXZlbCBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3ZjYxNDU5ZDAwMzE4YjkzNTA3
NDI0MTc3MWFlZGU3ZmM5NmUzZDQyLi4yNTExZmNkOTk4OGRlYWJjMDA5ZWY5ZWJmNzRkYmU4MDZi
NTI2OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTctMDQtMDMgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gLVtXS1dlYlZp
ZXcgZmluZE1hdGNoZXNGb3JTdHJpbmc6cmVsYXRpdmVUb01hdGNoOmZpbmRPcHRpb25zOm1heFJl
c3VsdHM6cmVzdWx0Q29sbGVjdG9yOl0gaW52b2tlcyB0aGUgcmVzdWx0Q29sbGVjdG9yIHdpdGgg
ZGlkV3JhcCA9IE5PIGV2ZW4gd2hlbiBpdCB3cmFwcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1ODAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
OTY0OTUzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcmV2aW91c2x5LCB3aGVuIGRvaW5nIGFuIGluY3JlbWVudGFsIGZpbmQgdGhhdCB3cmFwcGVk
LCB3ZSB3b3VsZCAKKyAgICAgICAgc2F5IHRoYXQgaXQgZGlkIG5vdCwgbGVhZGluZyBOU1RleHRG
aW5kZXIgdG8gbm90IHByb3ZpZGUgaXRzIHVzdWFsCisgICAgICAgIHdyYXBwaW5nIFVJLCBhbmQg
b3RoZXIgY2xpZW50cyBvZiB0aGUgTlNUZXh0RmluZGVyQ2xpZW50IHByb3RvY29sIHRvCisgICAg
ICAgIGdldCBjb25mdXNlZCBieSB0aGUgbGFjayBvZiB3cmFwcGluZy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZEZpbmRTdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oOgorICAgICAgICAoQVBJOjpGaW5kQ2xpZW50Ojpk
aWRGaW5kU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAg
ICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvRmluZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9GaW5kQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViS2l0OjpGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKToKKyAgICAgICAg
KFdlYktpdDo6RmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmcpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oOgorICAgICAgICBQbHVtYiBEaWRXcmFwIGZyb20g
RmluZENvbnRyb2xsZXIncyBjYWxsIHRvIGZpbmRTdHJpbmcgYmFjayB0aHJvdWdoCisgICAgICAg
IHRoZSBEaWRGaW5kU3RyaW5nIG1lc3NhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dL
VGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAgICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGRpZEZp
bmRTdHJpbmdNYXRjaGVzV2l0aFJlY3RzOmRpZFdyYXBBcm91bmQ6XSk6CisgICAgICAgICgtW1dL
VGV4dEZpbmRlckNsaWVudCBkaWRGaW5kU3RyaW5nTWF0Y2hlc1dpdGhSZWN0czpdKTogRGVsZXRl
ZC4KKyAgICAgICAgTWFrZSB1c2Ugb2YgdGhlIG5ldyBEaWRXcmFwIGluZm9ybWF0aW9uIHRvIHN0
b3AgbHlpbmcgdG8gTlNUZXh0RmluZGVyCisgICAgICAgIGFib3V0IHdoZXRoZXIgYSB3cmFwIGFj
dHVhbGx5IG9jY3VycmVkLgorCiAyMDE3LTA0LTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gVVJJIEZyYWdtZW50IGlzIGxvc3Qg
YWZ0ZXIgcmVkaXJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVk
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmluZGV4IDNk
ZGQ5YzE4ZGNkMmY2MWFmMjNiODBjNDQyZGE3MThkZjk3M2FmNjQuLjM0ZDhhZDBhMWQ5MmMzNDRi
M2U0OTIzZjYzNmViODQwYTIxNWFjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdl
LmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgdm9pZCBmaXJlUGFnZVNob3dBbmRQb3BTdGF0
ZUV2ZW50cyhQYWdlJiBwYWdlKQogICAgIC8vIERpc3BhdGNoaW5nIEphdmFTY3JpcHQgZXZlbnRz
IGNhbiBjYXVzZSBmcmFtZSBkZXN0cnVjdGlvbi4KICAgICBhdXRvJiBtYWluRnJhbWUgPSBwYWdl
Lm1haW5GcmFtZSgpOwogICAgIFZlY3RvcjxSZWY8RnJhbWU+PiBjaGlsZEZyYW1lczsKLSAgICBm
b3IgKGF1dG8qIGNoaWxkID0gbWFpbkZyYW1lLnRyZWUoKS50cmF2ZXJzZU5leHRJblBvc3RPcmRl
cldpdGhXcmFwKHRydWUpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLnRyYXZlcnNlTmV4
dEluUG9zdE9yZGVyV2l0aFdyYXAoZmFsc2UpKQorICAgIGZvciAoYXV0byogY2hpbGQgPSBtYWlu
RnJhbWUudHJlZSgpLnRyYXZlcnNlTmV4dEluUG9zdE9yZGVyKENhbldyYXA6Olllcyk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT50cmVlKCkudHJhdmVyc2VOZXh0SW5Qb3N0T3JkZXIoQ2FuV3JhcDo6
Tm8pKQogICAgICAgICBjaGlsZEZyYW1lcy5hcHBlbmQoKmNoaWxkKTsKIAogICAgIGZvciAoYXV0
byYgY2hpbGQgOiBjaGlsZEZyYW1lcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9QYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3Bw
CmluZGV4IGFiYjAzZmZmN2I1Y2ZhYTk2ZmM5ZWE1MmViZGY0MDNkOTIyOGYyYjEuLjRiMzQ3ZGU0
MTljMzAyZjk3YzFhNjE3ZTllOWU3OGIxNzliOTA3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAKQEAgLTM3NCw3ICszNzQsNyBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlQ2FjaGVT
dGF0ZShQYWdlJiBwYWdlLCBEb2N1bWVudDo6UGFnZUNhY2hlU3RhdGUgcGFnZUNhY2hlU3RhdAog
Ly8gTm90ZSB0aGF0IGRlc3RydWN0aW9uIGhhcHBlbnMgYm90dG9tLXVwIHNvIHRoYXQgdGhlIG1h
aW4gZnJhbWUncyB0cmVlIGRpZXMgbGFzdC4KIHN0YXRpYyB2b2lkIGRlc3Ryb3lSZW5kZXJUcmVl
KE1haW5GcmFtZSYgbWFpbkZyYW1lKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZy
YW1lLnRyZWUoKS50cmF2ZXJzZVByZXZpb3VzV2l0aFdyYXAodHJ1ZSk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VQcmV2aW91c1dpdGhXcmFwKGZhbHNlKSkgeworICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lLnRyZWUoKS50cmF2ZXJzZVByZXZpb3VzKENhbldy
YXA6Olllcyk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VQcmV2aW91cyhD
YW5XcmFwOjpObykpIHsKICAgICAgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS0+ZG9jdW1lbnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAppbmRleCA0ZTFiYzI5YjdkZjA5ZGNhNDA2ZTJk
NzBhMmVjZmJjMTM3ZjAyZjQwLi5iM2I5ZjEyOTA5OTZiMjFlNTBiNjQyYmIyMDQ2NjIyNzgyMGFk
MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCkBAIC00MDMsMTggKzQwMywyMSBAQCBG
cmFtZSogRnJhbWVUcmVlOjp0cmF2ZXJzZU5leHRSZW5kZXJlZChjb25zdCBGcmFtZSogc3RheVdp
dGhpbikgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRnJhbWUqIEZyYW1lVHJlZTo6
dHJhdmVyc2VOZXh0V2l0aFdyYXAoYm9vbCB3cmFwKSBjb25zdAorRnJhbWUqIEZyYW1lVHJlZTo6
dHJhdmVyc2VOZXh0KENhbldyYXAgY2FuV3JhcCwgRGlkV3JhcCogZGlkV3JhcCkgY29uc3QKIHsK
ICAgICBpZiAoRnJhbWUqIHJlc3VsdCA9IHRyYXZlcnNlTmV4dCgpKQogICAgICAgICByZXR1cm4g
cmVzdWx0OwogCi0gICAgaWYgKHdyYXApCisgICAgaWYgKGNhbldyYXAgPT0gQ2FuV3JhcDo6WWVz
KSB7CisgICAgICAgIGlmIChkaWRXcmFwKQorICAgICAgICAgICAgKmRpZFdyYXAgPSBEaWRXcmFw
OjpZZXM7CiAgICAgICAgIHJldHVybiAmbV90aGlzRnJhbWUubWFpbkZyYW1lKCk7CisgICAgfQog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUZyYW1lKiBGcmFtZVRyZWU6OnRyYXZlcnNlUHJl
dmlvdXNXaXRoV3JhcChib29sIHdyYXApIGNvbnN0CitGcmFtZSogRnJhbWVUcmVlOjp0cmF2ZXJz
ZVByZXZpb3VzKENhbldyYXAgY2FuV3JhcCwgRGlkV3JhcCogZGlkV3JhcCkgY29uc3QKIHsKICAg
ICAvLyBGSVhNRTogYmVzaWRlcyB0aGUgd3JhcCBmZWF0dXJlLCB0aGlzIGlzIGp1c3QgdGhlIHRy
YXZlcnNlUHJldmlvdXNOb2RlIGFsZ29yaXRobQogCkBAIC00MjQsMjAgKzQyNywyMyBAQCBGcmFt
ZSogRnJhbWVUcmVlOjp0cmF2ZXJzZVByZXZpb3VzV2l0aFdyYXAoYm9vbCB3cmFwKSBjb25zdAog
ICAgICAgICByZXR1cm4gcGFyZW50RnJhbWU7CiAgICAgCiAgICAgLy8gbm8gc2libGluZ3MsIG5v
IHBhcmVudCwgc2VsZj09dG9wCi0gICAgaWYgKHdyYXApCisgICAgaWYgKGNhbldyYXAgPT0gQ2Fu
V3JhcDo6WWVzKSB7CisgICAgICAgIGlmIChkaWRXcmFwKQorICAgICAgICAgICAgKmRpZFdyYXAg
PSBEaWRXcmFwOjpZZXM7CiAgICAgICAgIHJldHVybiBkZWVwTGFzdENoaWxkKCk7CisgICAgfQog
CiAgICAgLy8gdG9wIHZpZXcgaXMgYWx3YXlzIHRoZSBsYXN0IG9uZSBpbiB0aGlzIG9yZGVyaW5n
LCBzbyBwcmV2IGlzIG5pbCB3aXRob3V0IHdyYXAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
RnJhbWUqIEZyYW1lVHJlZTo6dHJhdmVyc2VOZXh0SW5Qb3N0T3JkZXJXaXRoV3JhcChib29sIHdy
YXApIGNvbnN0CitGcmFtZSogRnJhbWVUcmVlOjp0cmF2ZXJzZU5leHRJblBvc3RPcmRlcihDYW5X
cmFwIGNhbldyYXApIGNvbnN0CiB7CiAgICAgaWYgKG1fbmV4dFNpYmxpbmcpCiAgICAgICAgIHJl
dHVybiBtX25leHRTaWJsaW5nLT50cmVlKCkuZGVlcEZpcnN0Q2hpbGQoKTsKICAgICBpZiAobV9w
YXJlbnQpCiAgICAgICAgIHJldHVybiBtX3BhcmVudDsKLSAgICBpZiAod3JhcCkKKyAgICBpZiAo
Y2FuV3JhcCA9PSBDYW5XcmFwOjpZZXMpCiAgICAgICAgIHJldHVybiBkZWVwRmlyc3RDaGlsZCgp
OwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKaW5kZXggMDUy
ZjM2MDllMDBjNWUxMTE2NGYyZjk0NTdjZWM4OGY1MDMzNDIyMS4uYzYzYjRkMTUxOGQ0ZjNlOTE2
NGUzZGYxNjRlMDBhNjZjZWJlZjY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCkBAIC0yMyw2
ICsyMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBjbGFzcyBDYW5XcmFwIDog
Ym9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3MgRGlkV3JhcCA6IGJvb2wgeyBObywgWWVzIH07
CisKIGNsYXNzIEZyYW1lOwogY2xhc3MgVHJlZVNjb3BlOwogCkBAIC02MiwxMCArNjUsMTAgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lKiB0cmF2ZXJzZU5leHQoY29uc3QgRnJh
bWUqIHN0YXlXaXRoaW4gPSBudWxscHRyKSBjb25zdDsKICAgICAvLyBSZW5kZXJlZCBtZWFucyBi
ZWluZyB0aGUgbWFpbiBmcmFtZSBvciBoYXZpbmcgYW4gb3duZXJSZW5kZXJlci4gSXQgbWF5IG5v
dCBoYXZlIGJlZW4gcGFyZW50ZWQgaW4gdGhlIFdpZGdldCB0cmVlIHlldCAoc2VlIFdpZGdldEhp
ZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUpLgogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1l
KiB0cmF2ZXJzZU5leHRSZW5kZXJlZChjb25zdCBGcmFtZSogc3RheVdpdGhpbiA9IG51bGxwdHIp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lKiB0cmF2ZXJzZU5leHRXaXRoV3JhcChi
b29sKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSogdHJhdmVyc2VQcmV2aW91c1dp
dGhXcmFwKGJvb2wpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lKiB0cmF2ZXJzZU5l
eHQoQ2FuV3JhcCwgRGlkV3JhcCogPSBudWxscHRyKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBGcmFtZSogdHJhdmVyc2VQcmV2aW91cyhDYW5XcmFwLCBEaWRXcmFwKiA9IG51bGxwdHIpIGNv
bnN0OwogCi0gICAgRnJhbWUqIHRyYXZlcnNlTmV4dEluUG9zdE9yZGVyV2l0aFdyYXAoYm9vbCkg
Y29uc3Q7CisgICAgRnJhbWUqIHRyYXZlcnNlTmV4dEluUG9zdE9yZGVyKENhbldyYXApIGNvbnN0
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRDaGlsZChGcmFtZSYpOwogICAgIHZv
aWQgZGV0YWNoRnJvbVBhcmVudCgpIHsgbV9wYXJlbnQgPSBudWxscHRyOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAzMGYwODEyNGI3YmU3NjZlNzNkYTYwMWJiYWExNGI3ZGU4ZTU0MWE3Li4wMWRh
MGMyNWM2NzZhMDEzOTVmMGFlZGUwZTQxZThiOWU4NDgyYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTY0NywxOSArNjQ3LDE5IEBAIHZvaWQgUGFnZTo6c2V0Q2FuU3RhcnRNZWRpYShib29sIGNh
blN0YXJ0TWVkaWEpCiAgICAgfQogfQogCi1zdGF0aWMgRnJhbWUqIGluY3JlbWVudEZyYW1lKEZy
YW1lKiBjdXJyLCBib29sIGZvcndhcmQsIGJvb2wgd3JhcEZsYWcpCitzdGF0aWMgRnJhbWUqIGlu
Y3JlbWVudEZyYW1lKEZyYW1lKiBjdXJyLCBib29sIGZvcndhcmQsIENhbldyYXAgY2FuV3JhcCwg
RGlkV3JhcCogZGlkV3JhcCA9IG51bGxwdHIpCiB7CiAgICAgcmV0dXJuIGZvcndhcmQKLSAgICAg
ICAgPyBjdXJyLT50cmVlKCkudHJhdmVyc2VOZXh0V2l0aFdyYXAod3JhcEZsYWcpCi0gICAgICAg
IDogY3Vyci0+dHJlZSgpLnRyYXZlcnNlUHJldmlvdXNXaXRoV3JhcCh3cmFwRmxhZyk7CisgICAg
ICAgID8gY3Vyci0+dHJlZSgpLnRyYXZlcnNlTmV4dChjYW5XcmFwLCBkaWRXcmFwKQorICAgICAg
ICA6IGN1cnItPnRyZWUoKS50cmF2ZXJzZVByZXZpb3VzKGNhbldyYXAsIGRpZFdyYXApOwogfQog
Ci1ib29sIFBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25z
IG9wdGlvbnMpCitib29sIFBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZp
bmRPcHRpb25zIG9wdGlvbnMsIERpZFdyYXAqIGRpZFdyYXApCiB7CiAgICAgaWYgKHRhcmdldC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgc2hvdWxkV3JhcCA9
IG9wdGlvbnMgJiBXcmFwQXJvdW5kOworICAgIENhbldyYXAgY2FuV3JhcCA9IG9wdGlvbnMgJiBX
cmFwQXJvdW5kID8gQ2FuV3JhcDo6WWVzIDogQ2FuV3JhcDo6Tm87CiAgICAgRnJhbWUqIGZyYW1l
ID0gJmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIEZyYW1lKiBz
dGFydEZyYW1lID0gZnJhbWU7CiAgICAgZG8gewpAQCAtNjY5LDEyICs2NjksMTQgQEAgYm9vbCBQ
YWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25z
KQogICAgICAgICAgICAgZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKGZyYW1lKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGZyYW1lID0gaW5j
cmVtZW50RnJhbWUoZnJhbWUsICEob3B0aW9ucyAmIEJhY2t3YXJkcyksIHNob3VsZFdyYXApOwor
ICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZyYW1lLCAhKG9wdGlvbnMgJiBCYWNrd2Fy
ZHMpLCBjYW5XcmFwLCBkaWRXcmFwKTsKICAgICB9IHdoaWxlIChmcmFtZSAmJiBmcmFtZSAhPSBz
dGFydEZyYW1lKTsKIAogICAgIC8vIFNlYXJjaCBjb250ZW50cyBvZiBzdGFydEZyYW1lLCBvbiB0
aGUgb3RoZXIgc2lkZSBvZiB0aGUgc2VsZWN0aW9uIHRoYXQgd2UgZGlkIGVhcmxpZXIuCiAgICAg
Ly8gV2UgY2hlYXQgYSBiaXQgYW5kIGp1c3QgcmVzZWFyY2ggd2l0aCB3cmFwIG9uCi0gICAgaWYg
KHNob3VsZFdyYXAgJiYgIXN0YXJ0RnJhbWUtPnNlbGVjdGlvbigpLmlzTm9uZSgpKSB7CisgICAg
aWYgKGNhbldyYXAgPT0gQ2FuV3JhcDo6WWVzICYmICFzdGFydEZyYW1lLT5zZWxlY3Rpb24oKS5p
c05vbmUoKSkgeworICAgICAgICBpZiAoZGlkV3JhcCkKKyAgICAgICAgICAgICpkaWRXcmFwID0g
RGlkV3JhcDo6WWVzOwogICAgICAgICBib29sIGZvdW5kID0gc3RhcnRGcmFtZS0+ZWRpdG9yKCku
ZmluZFN0cmluZyh0YXJnZXQsIG9wdGlvbnMgfCBXcmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlv
bik7CiAgICAgICAgIGZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRGcmFtZShmcmFtZSk7CiAg
ICAgICAgIHJldHVybiBmb3VuZDsKQEAgLTY5Myw3ICs2OTUsNyBAQCB2b2lkIFBhZ2U6OmZpbmRT
dHJpbmdNYXRjaGluZ1Jhbmdlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0
aW9ucywgaQogICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dCh0YXJn
ZXQsIDAsIG9wdGlvbnMsIGxpbWl0ID8gKGxpbWl0IC0gbWF0Y2hSYW5nZXMuc2l6ZSgpKSA6IDAs
IHRydWUsICZtYXRjaFJhbmdlcyk7CiAgICAgICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCkuaXNS
YW5nZSgpKQogICAgICAgICAgICAgZnJhbWVXaXRoU2VsZWN0aW9uID0gZnJhbWU7Ci0gICAgICAg
IGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJhbWUsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgZnJh
bWUgPSBpbmNyZW1lbnRGcmFtZShmcmFtZSwgdHJ1ZSwgQ2FuV3JhcDo6Tm8pOwogICAgIH0gd2hp
bGUgKGZyYW1lKTsKIAogICAgIGlmIChtYXRjaFJhbmdlcy5pc0VtcHR5KCkpCkBAIC03MzUsMTkg
KzczNywxOSBAQCBSZWZQdHI8UmFuZ2U+IFBhZ2U6OnJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5n
JiB0YXJnZXQsIFJhbmdlKiByZWZlcmVuY2VSYW5nZSwgRgogICAgIGlmIChyZWZlcmVuY2VSYW5n
ZSAmJiByZWZlcmVuY2VSYW5nZS0+b3duZXJEb2N1bWVudCgpLnBhZ2UoKSAhPSB0aGlzKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJvb2wgc2hvdWxkV3JhcCA9IG9wdGlvbnMgJiBX
cmFwQXJvdW5kOworICAgIENhbldyYXAgY2FuV3JhcCA9IG9wdGlvbnMgJiBXcmFwQXJvdW5kID8g
Q2FuV3JhcDo6WWVzIDogQ2FuV3JhcDo6Tm87CiAgICAgRnJhbWUqIGZyYW1lID0gcmVmZXJlbmNl
UmFuZ2UgPyByZWZlcmVuY2VSYW5nZS0+b3duZXJEb2N1bWVudCgpLmZyYW1lKCkgOiAmbWFpbkZy
YW1lKCk7CiAgICAgRnJhbWUqIHN0YXJ0RnJhbWUgPSBmcmFtZTsKICAgICBkbyB7CiAgICAgICAg
IGlmIChSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gZnJhbWUtPmVkaXRvcigpLnJhbmdlT2ZT
dHJpbmcodGFyZ2V0LCBmcmFtZSA9PSBzdGFydEZyYW1lID8gcmVmZXJlbmNlUmFuZ2UgOiAwLCBv
cHRpb25zICYgfldyYXBBcm91bmQpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwog
Ci0gICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJhbWUsICEob3B0aW9ucyAmIEJhY2t3
YXJkcyksIHNob3VsZFdyYXApOworICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZyYW1l
LCAhKG9wdGlvbnMgJiBCYWNrd2FyZHMpLCBjYW5XcmFwKTsKICAgICB9IHdoaWxlIChmcmFtZSAm
JiBmcmFtZSAhPSBzdGFydEZyYW1lKTsKIAogICAgIC8vIFNlYXJjaCBjb250ZW50cyBvZiBzdGFy
dEZyYW1lLCBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgcmVmZXJlbmNlIHJhbmdlIHRoYXQgd2Ug
ZGlkIGVhcmxpZXIuCiAgICAgLy8gV2UgY2hlYXQgYSBiaXQgYW5kIGp1c3Qgc2VhcmNoIGFnYWlu
IHdpdGggd3JhcCBvbi4KLSAgICBpZiAoc2hvdWxkV3JhcCAmJiByZWZlcmVuY2VSYW5nZSkgewor
ICAgIGlmIChjYW5XcmFwID09IENhbldyYXA6OlllcyAmJiByZWZlcmVuY2VSYW5nZSkgewogICAg
ICAgICBpZiAoUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IHN0YXJ0RnJhbWUtPmVkaXRvcigp
LnJhbmdlT2ZTdHJpbmcodGFyZ2V0LCByZWZlcmVuY2VSYW5nZSwgb3B0aW9ucyB8IFdyYXBBcm91
bmQgfCBTdGFydEluU2VsZWN0aW9uKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHRSYW5nZTsK
ICAgICB9CkBAIC03NjcsNyArNzY5LDcgQEAgdW5zaWduZWQgUGFnZTo6ZmluZE1hdGNoZXNGb3JU
ZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnMKICAgICAg
ICAgaWYgKHNob3VsZE1hcmtNYXRjaGVzID09IE1hcmtNYXRjaGVzKQogICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGln
aGxpZ2h0TWF0Y2hlcyA9PSBIaWdobGlnaHRNYXRjaGVzKTsKICAgICAgICAgbWF0Y2hDb3VudCAr
PSBmcmFtZS0+ZWRpdG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dCh0YXJnZXQsIDAsIG9wdGlvbnMs
IG1heE1hdGNoQ291bnQgPyAobWF4TWF0Y2hDb3VudCAtIG1hdGNoQ291bnQpIDogMCwgc2hvdWxk
TWFya01hdGNoZXMgPT0gTWFya01hdGNoZXMsIDApOwotICAgICAgICBmcmFtZSA9IGluY3JlbWVu
dEZyYW1lKGZyYW1lLCB0cnVlLCBmYWxzZSk7CisgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJh
bWUoZnJhbWUsIHRydWUsIENhbldyYXA6Ok5vKTsKICAgICB9IHdoaWxlIChmcmFtZSk7CiAKICAg
ICByZXR1cm4gbWF0Y2hDb3VudDsKQEAgLTc4OCw3ICs3OTAsNyBAQCB2b2lkIFBhZ2U6OnVubWFy
a0FsbFRleHRNYXRjaGVzKCkKICAgICBGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7CiAgICAg
ZG8gewogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLnJlbW92ZU1hcmtlcnMo
RG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaCk7Ci0gICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJh
bWUoZnJhbWUsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgZnJhbWUgPSBpbmNyZW1lbnRGcmFtZShm
cmFtZSwgdHJ1ZSwgQ2FuV3JhcDo6Tm8pOwogICAgIH0gd2hpbGUgKGZyYW1lKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAppbmRleCAxMjAyNzUwNWExOGY3NmZhMGIxMmVhNzRhY2Q2YWFjOTY3YWIwN2I5Li5j
MTVhZWU2NDRkZTVlYjU1Y2UxMGNiNmU2MTA1MDlhNjIzMmIyOTkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApA
QCAtMTQ1LDYgKzE0NSw5IEBAIGVudW0gY2xhc3MgRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3Igewog
ICAgIFVucmVzcG9uc2l2ZQogfTsKIAorZW51bSBjbGFzcyBDYW5XcmFwIDogYm9vbDsKK2VudW0g
Y2xhc3MgRGlkV3JhcCA6IGJvb2w7CisKIGNsYXNzIFBhZ2UgOiBwdWJsaWMgU3VwcGxlbWVudGFi
bGU8UGFnZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOwogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtMjY0LDcgKzI2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhib29sIGIpIHsgbV90YWJLZXlDeWNsZXNUaHJv
dWdoRWxlbWVudHMgPSBiOyB9CiAgICAgYm9vbCB0YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMo
KSBjb25zdCB7IHJldHVybiBtX3RhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50czsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25z
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmlu
ZE9wdGlvbnMsIERpZFdyYXAqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8UmFuZ2U+IHJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBGaW5kT3B0aW9u
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBjYWE3MjIzOWM1Yzg4
OGFlMTRjYTFkMDQ5NzgxMmI2OTk4Yzc5YmVlLi5hMmJkZWUxM2FkOGI3YTc4ZTg1NDNmNzMzOWFm
YmI5NWJkZTM3MDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC02Nzk2
LDkgKzY3OTYsMTAgQEAgLSAodm9pZClzZXROZXh0S2V5VmlldzooTlNWaWV3ICopdmlldwogc3Rh
dGljIFdlYkZyYW1lICppbmNyZW1lbnRGcmFtZShXZWJGcmFtZSAqZnJhbWUsIFdlYkZpbmRPcHRp
b25zIG9wdGlvbnMgPSAwKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsK
KyAgICBDYW5XcmFwIGNhbldyYXAgPSBvcHRpb25zICYgV2ViRmluZE9wdGlvbnNXcmFwQXJvdW5k
ID8gQ2FuV3JhcDo6WWVzIDogQ2FuV3JhcDo6Tm87CiAgICAgcmV0dXJuIGtpdCgob3B0aW9ucyAm
IFdlYkZpbmRPcHRpb25zQmFja3dhcmRzKQotICAgICAgICA/IGNvcmVGcmFtZS0+dHJlZSgpLnRy
YXZlcnNlUHJldmlvdXNXaXRoV3JhcChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNXcmFwQXJvdW5k
KQotICAgICAgICA6IGNvcmVGcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dFdpdGhXcmFwKG9wdGlv
bnMgJiBXZWJGaW5kT3B0aW9uc1dyYXBBcm91bmQpKTsKKyAgICAgICAgPyBjb3JlRnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZVByZXZpb3VzKGNhbldyYXApCisgICAgICAgIDogY29yZUZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KGNhbldyYXApKTsKIH0KIAogLSAoQk9PTClzZWFyY2hGb3I6KE5TU3Ry
aW5nICopc3RyaW5nIGRpcmVjdGlvbjooQk9PTClmb3J3YXJkIGNhc2VTZW5zaXRpdmU6KEJPT0wp
Y2FzZUZsYWcgd3JhcDooQk9PTCl3cmFwRmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCAzMTc1
YmUzNDdkM2ViNjZiMmE4ZmEzNjBkMWFlOTE3MTE0OTNiYzIyLi45NmEyNzQ2MDEwMmI1OTY3ZGJi
YmU1ZWRlMmFjM2Q0Yzg3OTdiMzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtMzg1Niw5ICsz
ODU2LDEwIEBAIEhSRVNVTFQgV2ViVmlldzo6aG9zdFdpbmRvdyhfRGVyZWZfb3B0X291dF8gSFdO
RCogd2luZG93KQogCiBzdGF0aWMgRnJhbWUgKmluY3JlbWVudEZyYW1lKEZyYW1lICpjdXJyLCBi
b29sIGZvcndhcmQsIGJvb2wgd3JhcEZsYWcpCiB7CisgICAgQ2FuV3JhcCBjYW5XcmFwID0gd3Jh
cEZsYWcgPyBDYW5XcmFwOjpZZXMgOiBDYW5XcmFwOjpObzsKICAgICByZXR1cm4gZm9yd2FyZAot
ICAgICAgICA/IGN1cnItPnRyZWUoKS50cmF2ZXJzZU5leHRXaXRoV3JhcCh3cmFwRmxhZykKLSAg
ICAgICAgOiBjdXJyLT50cmVlKCkudHJhdmVyc2VQcmV2aW91c1dpdGhXcmFwKHdyYXBGbGFnKTsK
KyAgICAgICAgPyBjdXJyLT50cmVlKCkudHJhdmVyc2VOZXh0KGNhbldyYXApCisgICAgICAgIDog
Y3Vyci0+dHJlZSgpLnRyYXZlcnNlUHJldmlvdXMoY2FuV3JhcCk7CiB9CiAKIEhSRVNVTFQgV2Vi
Vmlldzo6c2VhcmNoRm9yKF9Jbl8gQlNUUiBzdHIsIEJPT0wgZm9yd2FyZCwgQk9PTCBjYXNlRmxh
ZywgQk9PTCB3cmFwRmxhZywgX091dF8gQk9PTCogZm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCmluZGV4IDBhYmY4ZjY3MzkyNmM3NmQ2ODljZTc3
NjJlM2NhODc2MGIwZDc3NGMuLmYzMTIzYWYxOTUxNjVhNjY5ZDY2NjgzMThiODEyZTkzMzY1ZTZk
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaW5kQ2xpZW50KCkgeyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ291bnRTdHJpbmdNYXRjaGVzKFdlYktpdDo6V2ViUGFnZVBy
b3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCB1aW50MzJfdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEZpbmRTdHJpbmcoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgbWF0Y2hSZWN0cywgdWludDMyX3QsIGlu
dDMyX3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kU3RyaW5nKFdlYktpdDo6V2ViUGFn
ZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mIG1hdGNoUmVjdHMsIHVpbnQzMl90LCBpbnQzMl90LCBib29sIGRpZFdyYXBBcm91bmQpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKFdlYktpdDo6V2ViUGFnZVBy
b3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggOTFlMTViODI5MzZmMDk5YmVhYTE5ZTBiNWY5M2Ey
ODI4OWFlMjcwNS4uMTM2MjcyYzJmNWExMzQ4Zjc4NzBkYjk2YWZkNjE3ZGQzYjY1ZjliMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTkzMSw3ICs5MzEs
NyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25z
dCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbAogICAgICAgICB9CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2b2lkIGRpZEZpbmRTdHJpbmcoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJp
bmcmIHN0cmluZywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgdWludDMyX3QgbWF0
Y2hDb3VudCwgaW50MzJfdCkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRGaW5kU3RyaW5nKFdl
YlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMyX3QsIGJvb2wgZGlkV3Jh
cEFyb3VuZCkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRGaW5kU3RyaW5nKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9GaW5kQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvRmluZENsaWVudC5oCmluZGV4IGFhNmY3MDkyMmI1MjQ1NzhmMDA0MzU4
MTI5YWJiOTliZWM3ZTkzNjYuLjZkNDY5MzYyMzZhMDNhNjA5Y2M1ZTlmY2NmNjY5NjcwYjc2NWE5
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9GaW5kQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ZpbmRDbGllbnQuaApAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIEZyb20gQVBJOjpGaW5kQ2xp
ZW50CiAgICAgdmlydHVhbCB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyhXZWJQYWdlUHJveHkq
LCBjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBtYXRjaENvdW50KTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluZFN0cmluZyhXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6SW50UmVjdD4mLCB1aW50MzJfdCBtYXRjaENvdW50LCBpbnQzMl90IG1hdGNoSW5k
ZXgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kU3RyaW5nKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQzMl90IG1hdGNo
Q291bnQsIGludDMyX3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5kKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbFRvRmluZFN0cmluZyhXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcm
KTsKICAgICAKICAgICBXS1dlYlZpZXcgKm1fd2ViVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9GaW5kQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0ZpbmRDbGllbnQubW0KaW5kZXggNDQ3MjY2Yzc2MWQzZTQ2YjE2MGJkNWI4
MDQ0NWIwOGVjOTg3Njk1MC4uODgwYzRjZjNjNmI0MWYwNGM4YzkwNTYxZWM0YTQ1NjRiMDZlYTk1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ZpbmRDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ZpbmRDbGllbnQubW0KQEAg
LTU3LDcgKzU3LDcgQEAgdm9pZCBGaW5kQ2xpZW50OjpkaWRDb3VudFN0cmluZ01hdGNoZXMoV2Vi
UGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQKICAgICAgICAgW21fZGVsZWdh
dGUuZ2V0KCkgX3dlYlZpZXc6bV93ZWJWaWV3IGRpZENvdW50TWF0Y2hlczptYXRjaENvdW50IGZv
clN0cmluZzpzdHJpbmddOwogfQogCi12b2lkIEZpbmRDbGllbnQ6OmRpZEZpbmRTdHJpbmcoV2Vi
UGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJ
bnRSZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMyX3QgbWF0Y2hJbmRleCkKK3ZvaWQg
RmluZENsaWVudDo6ZGlkRmluZFN0cmluZyhXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmIHN0
cmluZywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgdWludDMyX3QgbWF0Y2hDb3Vu
dCwgaW50MzJfdCBtYXRjaEluZGV4LCBib29sKQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9k
cy53ZWJ2aWV3RGlkRmluZFN0cmluZykKICAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX3dlYlZp
ZXc6bV93ZWJWaWV3IGRpZEZpbmRNYXRjaGVzOm1hdGNoQ291bnQgZm9yU3RyaW5nOnN0cmluZyB3
aXRoTWF0Y2hJbmRleDptYXRjaEluZGV4XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggMTUwNmU1ZTJmOTU4M2ZjNjEyNzZiNGM4NWQ4YmExYmZkMmJjOGEx
Yi4uYWU3ODZlY2E5YTBiZDI5NTkyYTU1YTFmMGJjOGU4YzI4NGEwMzU0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQ0NjYsOSArNDQ2Niw5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MoZmxvYXQg
cHJvZ3Jlc3MpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmRTdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgbWF0
Y2hSZWN0cywgdWludDMyX3QgbWF0Y2hDb3VudCwgaW50MzJfdCBtYXRjaEluZGV4KQordm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgbWF0Y2hSZWN0cywgdWludDMyX3QgbWF0Y2hDb3VudCwg
aW50MzJfdCBtYXRjaEluZGV4LCBib29sIGRpZFdyYXBBcm91bmQpCiB7Ci0gICAgbV9maW5kQ2xp
ZW50LT5kaWRGaW5kU3RyaW5nKHRoaXMsIHN0cmluZywgbWF0Y2hSZWN0cywgbWF0Y2hDb3VudCwg
bWF0Y2hJbmRleCk7CisgICAgbV9maW5kQ2xpZW50LT5kaWRGaW5kU3RyaW5nKHRoaXMsIHN0cmlu
ZywgbWF0Y2hSZWN0cywgbWF0Y2hDb3VudCwgbWF0Y2hJbmRleCwgZGlkV3JhcEFyb3VuZCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcm
IHN0cmluZywgY29uc3QgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0Pj4mIG1hdGNoUmVj
dHMsIGludDMyX3QgZmlyc3RJbmRleEFmdGVyU2VsZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGFjYmRmYmJlZGVlMjRiZGNhNjU5NGY0NTM4ZmQ3NDli
MWQzZmE4N2MuLjA1OGM1OWJmODhlMmYyNDA5NzIwYTljZWMzYjE0YjI2MjdiNjBmNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTc4OCw3ICs3ODgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JEYXRhJiwgdWludDY0X3QgLyogV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0
aW1lICovIGxpZmV0aW1lID0gMCAvKiBQZXJtYW5lbnQgKi8pOwogICAgIHZvaWQgc2V0VGV4dElu
ZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KTsKICAgICB2b2lkIGNsZWFyVGV4dEluZGlj
YXRvcigpOwotICAgIHZvaWQgZGlkRmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4mLCB1aW50MzJfdCBtYXRjaENvdW50LCBpbnQzMl90IG1hdGNo
SW5kZXgpOworICAgIHZvaWQgZGlkRmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4mLCB1aW50MzJfdCBtYXRjaENvdW50LCBpbnQzMl90IG1hdGNo
SW5kZXgsIGJvb2wgZGlkV3JhcEFyb3VuZCk7CiAgICAgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5n
KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkRmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3Ry
aW5nJiwgY29uc3QgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0Pj4mIG1hdGNoUmVjdHMs
IGludDMyX3QgZmlyc3RJbmRleEFmdGVyU2VsZWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTkyMTA5YTU2NzI5
ODYxMmVhMTIyYjg5OTEyNzFjM2ExNmY3NzgwNS4uZjZjNTRjNzE2MjZiZDVmZTE4MTAzYzU1MjMx
ZmI3ODE5NGFmN2I4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNDEsNyArMjQxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBEaWRDb3VudFN0cmluZ01hdGNoZXMoU3RyaW5nIHN0cmluZywgdWludDMy
X3QgbWF0Y2hDb3VudCkKICAgICBTZXRUZXh0SW5kaWNhdG9yKHN0cnVjdCBXZWJDb3JlOjpUZXh0
SW5kaWNhdG9yRGF0YSBpbmRpY2F0b3IsIHVpbnQ2NF90IGxpZmV0aW1lKQogICAgIENsZWFyVGV4
dEluZGljYXRvcigpCi0gICAgRGlkRmluZFN0cmluZyhTdHJpbmcgc3RyaW5nLCBWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4gbWF0Y2hSZWN0LCB1aW50MzJfdCBtYXRjaENvdW50LCBpbnQzMl90IG1h
dGNoSW5kZXgpCisgICAgRGlkRmluZFN0cmluZyhTdHJpbmcgc3RyaW5nLCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4gbWF0Y2hSZWN0LCB1aW50MzJfdCBtYXRjaENvdW50LCBpbnQzMl90IG1hdGNo
SW5kZXgsIGJvb2wgZGlkV3JhcEFyb3VuZCkKICAgICBEaWRGYWlsVG9GaW5kU3RyaW5nKFN0cmlu
ZyBzdHJpbmcpCiAgICAgRGlkRmluZFN0cmluZ01hdGNoZXMoU3RyaW5nIHN0cmluZywgVmVjdG9y
PFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0Pj4gbWF0Y2hlcywgaW50MzJfdCBmaXJzdEluZGV4QWZ0
ZXJTZWxlY3Rpb24pCiAgICAgRGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCmluZGV4IGE2OWMwYzU5
NzQyZTAzZDI4YzcxNTgxNjk4ZWI0ZTJmOWMxMmQ3YjEuLmUyOTJkZDgwNDY1ZjQ0YzU5ZGUxNjhj
ZDBlM2IwYTRmNmVhOGNmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZW
aWV3Lm1tCkBAIC02MTQsNyArNjE0LDcgQEAgLSAodm9pZCl3ZWJfZmluZFN0cmluZzooTlNTdHJp
bmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3UKICAgICAg
ICAgICAgICAgICBfY3VycmVudEZpbmRNYXRjaEluZGV4ID0gMDsKICAgICAgICAgICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGtub3duTWF0Y2ggOiBfY2FjaGVkRmluZE1hdGNoZXMpIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1hdGNoLnN0cmluZ1JhbmdlLmxvY2F0aW9uID09IFtrbm93bk1h
dGNoIHN0cmluZ1JhbmdlXS5sb2NhdGlvbiAmJiBtYXRjaC5zdHJpbmdSYW5nZS5sZW5ndGggPT0g
W2tub3duTWF0Y2ggc3RyaW5nUmFuZ2VdLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcGFnZS0+ZmluZENsaWVudCgpLmRpZEZpbmRTdHJpbmcocGFnZS5nZXQoKSwgc3RyaW5nLCB7
IH0sIF9jYWNoZWRGaW5kTWF0Y2hlcy5zaXplKCksIF9jdXJyZW50RmluZE1hdGNoSW5kZXgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS0+ZmluZENsaWVudCgpLmRpZEZpbmRTdHJpbmco
cGFnZS5nZXQoKSwgc3RyaW5nLCB7IH0sIF9jYWNoZWRGaW5kTWF0Y2hlcy5zaXplKCksIF9jdXJy
ZW50RmluZE1hdGNoSW5kZXgsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIF9jdXJyZW50Rmlu
ZE1hdGNoSW5kZXgrKzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V0tUZXh0RmluZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1Rl
eHRGaW5kZXJDbGllbnQubW0KaW5kZXggZjM0NjU1MzcyYjM0NWE3YTUzODg5MDE0NGE5YzdmZjRh
ZGZiYzMxMS4uNjRiYzI4YmFiODMzNTUyZjdkNWNmYThkZmExN2I0YTMwZjc3NWNjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0K
QEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IE5TVUludGVnZXIgbWF4aW11bUZpbmRNYXRj
aGVzID0gMTAwMDsKIAogQGludGVyZmFjZSBXS1RleHRGaW5kZXJDbGllbnQgKCkKIAotLSAodm9p
ZClkaWRGaW5kU3RyaW5nTWF0Y2hlc1dpdGhSZWN0czooY29uc3QgVmVjdG9yPFZlY3RvcjxJbnRS
ZWN0Pj4mKXJlY3RzOworLSAodm9pZClkaWRGaW5kU3RyaW5nTWF0Y2hlc1dpdGhSZWN0czooY29u
c3QgVmVjdG9yPFZlY3RvcjxJbnRSZWN0Pj4mKXJlY3RzIGRpZFdyYXBBcm91bmQ6KEJPT0wpZGlk
V3JhcEFyb3VuZDsKIAogLSAodm9pZClnZXRJbWFnZUZvck1hdGNoUmVzdWx0OihpZCA8TlNUZXh0
RmluZGVyQXN5bmNocm9ub3VzRG9jdW1lbnRGaW5kTWF0Y2g+KWZpbmRNYXRjaCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTlNJbWFnZSAqZ2VuZXJhdGVkSW1hZ2UpKWNvbXBsZXRpb25IYW5k
bGVyOwogLSAodm9pZClkaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0OihXZWJJbWFnZSAqKXN0cmlu
ZzsKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmRT
dHJpbmdNYXRjaGVzKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVj
dG9yPFZlY3RvcjxJbnRSZWN0Pj4mIG1hdGNoUmVjdHMsIGludDMyX3QpIG92ZXJyaWRlCiAgICAg
ewotICAgICAgICBbbV90ZXh0RmluZGVyQ2xpZW50IGRpZEZpbmRTdHJpbmdNYXRjaGVzV2l0aFJl
Y3RzOm1hdGNoUmVjdHNdOworICAgICAgICBbbV90ZXh0RmluZGVyQ2xpZW50IGRpZEZpbmRTdHJp
bmdNYXRjaGVzV2l0aFJlY3RzOm1hdGNoUmVjdHMgZGlkV3JhcEFyb3VuZDpOT107CiAgICAgfQog
CiAgICAgdm9pZCBkaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0KFdlYlBhZ2VQcm94eSogcGFnZSwg
V2ViSW1hZ2UqIGltYWdlLCBpbnQzMl90IGluZGV4KSBvdmVycmlkZQpAQCAtNzQsMTQgKzc0LDE0
IEBAIHByaXZhdGU6CiAgICAgICAgIFttX3RleHRGaW5kZXJDbGllbnQgZGlkR2V0SW1hZ2VGb3JN
YXRjaFJlc3VsdDppbWFnZV07CiAgICAgfQogCi0gICAgdm9pZCBkaWRGaW5kU3RyaW5nKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgbWF0Y2hSZWN0
cywgdWludDMyX3QsIGludDMyX3QpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGaW5kU3RyaW5nKFdl
YlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgbWF0Y2hS
ZWN0cywgdWludDMyX3QsIGludDMyX3QsIGJvb2wgZGlkV3JhcEFyb3VuZCkgb3ZlcnJpZGUKICAg
ICB7Ci0gICAgICAgIFttX3RleHRGaW5kZXJDbGllbnQgZGlkRmluZFN0cmluZ01hdGNoZXNXaXRo
UmVjdHM6eyBtYXRjaFJlY3RzIH1dOworICAgICAgICBbbV90ZXh0RmluZGVyQ2xpZW50IGRpZEZp
bmRTdHJpbmdNYXRjaGVzV2l0aFJlY3RzOnsgbWF0Y2hSZWN0cyB9IGRpZFdyYXBBcm91bmQ6ZGlk
V3JhcEFyb3VuZF07CiAgICAgfQogCiAgICAgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFN0cmluZyYgc3RyaW5nKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAg
W21fdGV4dEZpbmRlckNsaWVudCBkaWRGaW5kU3RyaW5nTWF0Y2hlc1dpdGhSZWN0czp7IH1dOwor
ICAgICAgICBbbV90ZXh0RmluZGVyQ2xpZW50IGRpZEZpbmRTdHJpbmdNYXRjaGVzV2l0aFJlY3Rz
OnsgfSBkaWRXcmFwQXJvdW5kOk5PXTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8V0tUZXh0Rmlu
ZGVyQ2xpZW50PiBtX3RleHRGaW5kZXJDbGllbnQ7CkBAIC0yMzQsNyArMjM0LDcgQEAgc3RhdGlj
IFJldGFpblB0cjxOU0FycmF5PiBhcnJheUZyb21SZWN0cyhjb25zdCBWZWN0b3I8SW50UmVjdD4m
IG1hdGNoUmVjdHMpCiAgICAgcmV0dXJuIG5zTWF0Y2hSZWN0czsKIH0KIAotLSAodm9pZClkaWRG
aW5kU3RyaW5nTWF0Y2hlc1dpdGhSZWN0czooY29uc3QgVmVjdG9yPFZlY3RvcjxJbnRSZWN0Pj4m
KXJlY3RzRm9yTWF0Y2hlcworLSAodm9pZClkaWRGaW5kU3RyaW5nTWF0Y2hlc1dpdGhSZWN0czoo
Y29uc3QgVmVjdG9yPFZlY3RvcjxJbnRSZWN0Pj4mKXJlY3RzRm9yTWF0Y2hlcyBkaWRXcmFwQXJv
dW5kOihCT09MKWRpZFdyYXBBcm91bmQKIHsKICAgICBpZiAoX2ZpbmRSZXBseUNhbGxiYWNrcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0OCw3ICsyNDgsNyBAQCAtICh2b2lkKWRp
ZEZpbmRTdHJpbmdNYXRjaGVzV2l0aFJlY3RzOihjb25zdCBWZWN0b3I8VmVjdG9yPEludFJlY3Q+
PiYpcmVjdHNGb3JNYQogICAgICAgICBbbWF0Y2hPYmplY3RzIGFkZE9iamVjdDptYXRjaC5nZXQo
KV07CiAgICAgfQogCi0gICAgcmVwbHlDYWxsYmFjayhtYXRjaE9iamVjdHMuZ2V0KCksIE5PKTsK
KyAgICByZXBseUNhbGxiYWNrKG1hdGNoT2JqZWN0cy5nZXQoKSwgZGlkV3JhcEFyb3VuZCk7CiB9
CiAKIC0gKHZvaWQpZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdDooV2ViSW1hZ2UgKilpbWFnZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5jcHAKaW5kZXggMzMwMzJjMTcyYjFiMjQzOGRhZmQ2MGMzNDY0NjZlYTQ1MDVlNGE3Yi4uMjQx
YzUyZjljMDJjYThiMTJmMTg3NDA1YmJmNmFjNTg4OWRlZjE1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBAIC0xMTQs
NyArMTE0LDcgQEAgc3RhdGljIEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcGFnZSkK
ICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0
ZXJQYWdlU2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9u
cyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQordm9pZCBGaW5kQ29udHJvbGxlcjo6
dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBEaWRXcmFw
IGRpZFdyYXApCiB7CiAgICAgRnJhbWUqIHNlbGVjdGVkRnJhbWUgPSBmcmFtZVdpdGhTZWxlY3Rp
b24obV93ZWJQYWdlLT5jb3JlUGFnZSgpKTsKICAgICAKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lk
IEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwoYm9vbCBmb3VuZCwg
Y29uc3QgU3RyaW5nJiBzdHJpbgogICAgICAgICAgICAgbV9maW5kTWF0Y2hlcy5hcHBlbmQocmFu
Z2UpOwogICAgICAgICB9CiAKLSAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZEZpbmRTdHJpbmcoc3RyaW5nLCBtYXRjaFJlY3RzLCBtYXRjaENvdW50LCBt
X2ZvdW5kU3RyaW5nTWF0Y2hJbmRleCkpOworICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluZFN0cmluZyhzdHJpbmcsIG1hdGNoUmVjdHMsIG1hdGNo
Q291bnQsIG1fZm91bmRTdHJpbmdNYXRjaEluZGV4LCBkaWRXcmFwID09IERpZFdyYXA6Olllcykp
OwogCiAgICAgICAgIGlmICghKG9wdGlvbnMgJiBGaW5kT3B0aW9uc1Nob3dGaW5kSW5kaWNhdG9y
KSB8fCAhc2VsZWN0ZWRGcmFtZSB8fCAhdXBkYXRlRmluZEluZGljYXRvcigqc2VsZWN0ZWRGcmFt
ZSwgc2hvdWxkU2hvd092ZXJsYXkpKQogICAgICAgICAgICAgaGlkZUZpbmRJbmRpY2F0b3IoKTsK
QEAgLTIzMiwxMCArMjMyLDExIEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnCiAgICAgbV9maW5k
TWF0Y2hlcy5jbGVhcigpOwogCiAgICAgYm9vbCBmb3VuZDsKKyAgICBEaWRXcmFwIGRpZFdyYXAg
PSBEaWRXcmFwOjpObzsKICAgICBpZiAocGx1Z2luVmlldykKICAgICAgICAgZm91bmQgPSBwbHVn
aW5WaWV3LT5maW5kU3RyaW5nKHN0cmluZywgY29yZU9wdGlvbnMsIG1heE1hdGNoQ291bnQpOwog
ICAgIGVsc2UKLSAgICAgICAgZm91bmQgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPmZpbmRTdHJp
bmcoc3RyaW5nLCBjb3JlT3B0aW9ucyk7CisgICAgICAgIGZvdW5kID0gbV93ZWJQYWdlLT5jb3Jl
UGFnZSgpLT5maW5kU3RyaW5nKHN0cmluZywgY29yZU9wdGlvbnMsICZkaWRXcmFwKTsKIAogICAg
IGlmIChmb3VuZCkgewogICAgICAgICBkaWRGaW5kU3RyaW5nKCk7CkBAIC0yNDksOCArMjUwLDgg
QEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywg
RmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWcKICAgICB9CiAKICAgICBSZWZQdHI8V2ViUGFnZT4g
cHJvdGVjdGVkV2ViUGFnZSA9IG1fd2ViUGFnZTsKLSAgICBtX3dlYlBhZ2UtPmRyYXdpbmdBcmVh
KCktPmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihbcHJvdGVjdGVk
V2ViUGFnZSwgZm91bmQsIHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudF0gKCkgewotICAg
ICAgICBwcm90ZWN0ZWRXZWJQYWdlLT5maW5kQ29udHJvbGxlcigpLnVwZGF0ZUZpbmRVSUFmdGVy
UGFnZVNjcm9sbChmb3VuZCwgc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KTsKKyAgICBt
X3dlYlBhZ2UtPmRyYXdpbmdBcmVhKCktPmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3Jv
bGxQb3NpdGlvbihbcHJvdGVjdGVkV2ViUGFnZSwgZm91bmQsIHN0cmluZywgb3B0aW9ucywgbWF4
TWF0Y2hDb3VudCwgZGlkV3JhcF0gKCkgeworICAgICAgICBwcm90ZWN0ZWRXZWJQYWdlLT5maW5k
Q29udHJvbGxlcigpLnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbChmb3VuZCwgc3RyaW5nLCBv
cHRpb25zLCBtYXhNYXRjaENvdW50LCBkaWRXcmFwKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAppbmRleCA3
ZWMwZDVhZjgwZTIxNGVjYWJmOGRkZDMzOGQyOGUzZTZkMDY1ZjkwLi42MTllNTg4ZTNlZTY0OTFj
OWNmYTA2YzJmMDFjYTJiMWM5OGMyZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaApAQCAtNDEsNiArNDEsOCBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgRnJhbWU7CiBjbGFzcyBSYW5nZTsKKworZW51bSBjbGFzcyBE
aWRXcmFwIDogYm9vbDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04MSw3ICs4Myw3IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHJlY3RzRm9yVGV4dE1hdGNo
ZXNJblJlY3QoV2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCk7CiAgICAgYm9vbCB1cGRhdGVGaW5k
SW5kaWNhdG9yKFdlYkNvcmU6OkZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092
ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0ZSA9IHRydWUpOwogCi0gICAgdm9pZCB1cGRhdGVGaW5k
VUlBZnRlclBhZ2VTY3JvbGwoYm9vbCBmb3VuZCwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMs
IHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgdXBkYXRlRmluZFVJQWZ0ZXJQYWdl
U2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBt
YXhNYXRjaENvdW50LCBXZWJDb3JlOjpEaWRXcmFwKTsKIAogICAgIHZvaWQgd2lsbEZpbmRTdHJp
bmcoKTsKICAgICB2b2lkIGRpZEZpbmRTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MzY4NjZmNmI5ZTA5Mjc2NDE0M2I3MmM5OTIy
MGUzNzA0ZGFlMWQxLi5kNWQ4MzIzZjI0YjlmNTJjNGQwMjNhYWE2MDUyMzgyYzQ2MjUwMjAzIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTctMDQtMDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW01hY10gLVtXS1dlYlZpZXcgZmluZE1hdGNoZXNGb3JTdHJpbmc6cmVs
YXRpdmVUb01hdGNoOmZpbmRPcHRpb25zOm1heFJlc3VsdHM6cmVzdWx0Q29sbGVjdG9yOl0gaW52
b2tlcyB0aGUgcmVzdWx0Q29sbGVjdG9yIHdpdGggZGlkV3JhcCA9IE5PIGV2ZW4gd2hlbiBpdCB3
cmFwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1
ODAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTY0OTUzNT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL0ZpbmRJblBhZ2UubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgQWRkIHNv
bWUgdGVzdHMgZm9yIHdyYXBwaW5nIGZpbmRzLgorCiAyMDE3LTA0LTAxICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJvbGxpbmcgYmFjayA8aHR0cHM6Ly90
cmFjLndlYmtpdC5vcmcvcjIxNDY5Nz4sIGFzIGl0IG1hZGUgV2ViS2l0Mi5EYXRhRGV0ZWN0aW9u
UmVmZXJlbmNlRGF0ZSB0aW1lIG91dC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL0ZpbmRJblBhZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9GaW5kSW5QYWdlLm1tCmluZGV4IDY4NDViZDBiN2ZjNTE2YTE0Mjhj
MjI1OWVlYTQ0NTVjOTg4MTViNGIuLjI4NzEzMzIwMjhlYjdlOTZkZGM4YWRkMDNjMWU5NjQ1M2Zh
MGM4ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L0ZpbmRJblBhZ2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvRmluZEluUGFnZS5tbQpAQCAtMzQsNiArMzQsNyBAQAogCiB0eXBlZGVmIGVudW0gOiBOU1VJ
bnRlZ2VyIHsKICAgICBOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25z
QmFja3dhcmRzID0gMSA8PCAwLAorICAgIE5TVGV4dEZpbmRlckFzeW5jaHJvbm91c0RvY3VtZW50
RmluZE9wdGlvbnNXcmFwID0gMSA8PCAxLAogfSBOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1
bWVudEZpbmRPcHRpb25zOwogCiBAcHJvdG9jb2wgTlNUZXh0RmluZGVyQXN5bmNocm9ub3VzRG9j
dW1lbnRGaW5kTWF0Y2ggPE5TT2JqZWN0PgpAQCAtMTM0LDQgKzEzNSwxMTggQEAgVEVTVChXZWJL
aXQyLCBGaW5kSW5QYWdlKQogICAgIGZpbmRNYXRjaGVzRG9uZSA9IGZhbHNlOwogfQogCitURVNU
KFdlYktpdDIsIEZpbmRJblBhZ2VXcmFwcGluZykKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDEwMCwgMTAwKV0pOworICAgIFt3ZWJWaWV3IF9zZXRPdmVycmlkZURldmlj
ZVNjYWxlRmFjdG9yOjJdOworCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCJ3b3JkIHdv
cmQiIGJhc2VVUkw6bmlsXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07CisKKyAgICBOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRp
b25zIGRlZmF1bHRGaW5kT3B0aW9ucyA9IE5TVGV4dEZpbmRlckFzeW5jaHJvbm91c0RvY3VtZW50
RmluZE9wdGlvbnNXcmFwOworICAgIE5TVGV4dEZpbmRlckFzeW5jaHJvbm91c0RvY3VtZW50Rmlu
ZE9wdGlvbnMgYmFja3dhcmRzRmluZE9wdGlvbnMgPSAoTlNUZXh0RmluZGVyQXN5bmNocm9ub3Vz
RG9jdW1lbnRGaW5kT3B0aW9ucykoTlNUZXh0RmluZGVyQXN5bmNocm9ub3VzRG9jdW1lbnRGaW5k
T3B0aW9uc1dyYXAgfCBOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25z
QmFja3dhcmRzKTsKKworICAgIC8vIEZpbmQgb25lIG1hdGNoLCBkb2luZyBhbiBpbmNyZW1lbnRh
bCBzZWFyY2guCisgICAgW3dlYlZpZXcgZmluZE1hdGNoZXNGb3JTdHJpbmc6QCJ3b3JkIiByZWxh
dGl2ZVRvTWF0Y2g6bmlsIGZpbmRPcHRpb25zOmRlZmF1bHRGaW5kT3B0aW9ucyBtYXhSZXN1bHRz
OjEgcmVzdWx0Q29sbGVjdG9yOl4oTlNBcnJheSAqbWF0Y2hlcywgQk9PTCBkaWRXcmFwKSB7Cisg
ICAgICAgIEVYUEVDVF9FUSgoTlNVSW50ZWdlcikxLCBtYXRjaGVzLmNvdW50KTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKGRpZFdyYXApOworCisgICAgICAgIFt3ZWJWaWV3IGZpbmRNYXRjaGVzRm9y
U3RyaW5nOkAid29yZCIgcmVsYXRpdmVUb01hdGNoOm5pbCBmaW5kT3B0aW9uczpkZWZhdWx0Rmlu
ZE9wdGlvbnMgbWF4UmVzdWx0czoxIHJlc3VsdENvbGxlY3RvcjpeKE5TQXJyYXkgKm1hdGNoZXMs
IEJPT0wgZGlkV3JhcCkgeworICAgICAgICAgICAgRVhQRUNUX0VRKChOU1VJbnRlZ2VyKTEsIG1h
dGNoZXMuY291bnQpOworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGRpZFdyYXApOworCisgICAg
ICAgICAgICAvLyBUaGUgbmV4dCBtYXRjaCBzaG91bGQgd3JhcC4KKyAgICAgICAgICAgIFt3ZWJW
aWV3IGZpbmRNYXRjaGVzRm9yU3RyaW5nOkAid29yZCIgcmVsYXRpdmVUb01hdGNoOm5pbCBmaW5k
T3B0aW9uczpkZWZhdWx0RmluZE9wdGlvbnMgbWF4UmVzdWx0czoxIHJlc3VsdENvbGxlY3Rvcjpe
KE5TQXJyYXkgKm1hdGNoZXMsIEJPT0wgZGlkV3JhcCkgeworICAgICAgICAgICAgICAgIEVYUEVD
VF9FUSgoTlNVSW50ZWdlcikxLCBtYXRjaGVzLmNvdW50KTsKKyAgICAgICAgICAgICAgICBFWFBF
Q1RfVFJVRShkaWRXcmFwKTsKKworICAgICAgICAgICAgICAgIC8vIEdvaW5nIGJhY2t3YXJkIGFm
dGVyIHdyYXBwaW5nIHNob3VsZCB3cmFwIGFnYWluLgorICAgICAgICAgICAgICAgIFt3ZWJWaWV3
IGZpbmRNYXRjaGVzRm9yU3RyaW5nOkAid29yZCIgcmVsYXRpdmVUb01hdGNoOm5pbCBmaW5kT3B0
aW9uczpiYWNrd2FyZHNGaW5kT3B0aW9ucyBtYXhSZXN1bHRzOjEgcmVzdWx0Q29sbGVjdG9yOl4o
TlNBcnJheSAqbWF0Y2hlcywgQk9PTCBkaWRXcmFwKSB7CisgICAgICAgICAgICAgICAgICAgIEVY
UEVDVF9FUSgoTlNVSW50ZWdlcikxLCBtYXRjaGVzLmNvdW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoZGlkV3JhcCk7CisKKyAgICAgICAgICAgICAgICAgICAgZmluZE1hdGNo
ZXNEb25lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9XTsKKyAgICAgICAgICAgIH1dOworICAg
ICAgICB9XTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluZE1h
dGNoZXNEb25lKTsKKyAgICBmaW5kTWF0Y2hlc0RvbmUgPSBmYWxzZTsKK30KKworVEVTVChXZWJL
aXQyLCBGaW5kSW5QYWdlV3JhcHBpbmdEaXNhYmxlZCkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKV0pOworICAgIFt3ZWJWaWV3IF9zZXRPdmVycmlkZURl
dmljZVNjYWxlRmFjdG9yOjJdOworCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCJ3b3Jk
IHdvcmQiIGJhc2VVUkw6bmlsXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07CisKKyAgICBOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRP
cHRpb25zIGRlZmF1bHRGaW5kT3B0aW9ucyA9IChOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1
bWVudEZpbmRPcHRpb25zKTA7CisKKyAgICAvLyBGaW5kIG9uZSBtYXRjaCwgZG9pbmcgYW4gaW5j
cmVtZW50YWwgc2VhcmNoLgorICAgIFt3ZWJWaWV3IGZpbmRNYXRjaGVzRm9yU3RyaW5nOkAid29y
ZCIgcmVsYXRpdmVUb01hdGNoOm5pbCBmaW5kT3B0aW9uczpkZWZhdWx0RmluZE9wdGlvbnMgbWF4
UmVzdWx0czoxIHJlc3VsdENvbGxlY3RvcjpeKE5TQXJyYXkgKm1hdGNoZXMsIEJPT0wgZGlkV3Jh
cCkgeworICAgICAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMSwgbWF0Y2hlcy5jb3VudCk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShkaWRXcmFwKTsKKworICAgICAgICBbd2ViVmlldyBmaW5kTWF0
Y2hlc0ZvclN0cmluZzpAIndvcmQiIHJlbGF0aXZlVG9NYXRjaDpuaWwgZmluZE9wdGlvbnM6ZGVm
YXVsdEZpbmRPcHRpb25zIG1heFJlc3VsdHM6MSByZXN1bHRDb2xsZWN0b3I6XihOU0FycmF5ICpt
YXRjaGVzLCBCT09MIGRpZFdyYXApIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgoTlNVSW50ZWdl
cikxLCBtYXRjaGVzLmNvdW50KTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShkaWRXcmFwKTsK
KworICAgICAgICAgICAgLy8gVGhlIG5leHQgbWF0Y2ggc2hvdWxkIGZhaWwsIGJlY2F1c2Ugd3Jh
cHBpbmcgaXMgZGlzYWJsZWQuCisgICAgICAgICAgICBbd2ViVmlldyBmaW5kTWF0Y2hlc0ZvclN0
cmluZzpAIndvcmQiIHJlbGF0aXZlVG9NYXRjaDpuaWwgZmluZE9wdGlvbnM6ZGVmYXVsdEZpbmRP
cHRpb25zIG1heFJlc3VsdHM6MSByZXN1bHRDb2xsZWN0b3I6XihOU0FycmF5ICptYXRjaGVzLCBC
T09MIGRpZFdyYXApIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMCwg
bWF0Y2hlcy5jb3VudCk7CisgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGRpZFdyYXApOwor
CisgICAgICAgICAgICAgICAgZmluZE1hdGNoZXNEb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIH1d
OworICAgICAgICB9XTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZmluZE1hdGNoZXNEb25lKTsKKyAgICBmaW5kTWF0Y2hlc0RvbmUgPSBmYWxzZTsKK30KKworCitU
RVNUKFdlYktpdDIsIEZpbmRJblBhZ2VXcmFwcGluZ1N1YmZyYW1lKQoreworICAgIFJldGFpblB0
cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApXSk7CisgICAgW3dlYlZpZXcgX3NldE92
ZXJyaWRlRGV2aWNlU2NhbGVGYWN0b3I6Ml07CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpAIndvcmQgPGlmcmFtZSBzcmNkb2M9J3dvcmQnPiIgYmFzZVVSTDpuaWxdOworICAgIFt3ZWJW
aWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIE5TVGV4dEZpbmRl
ckFzeW5jaHJvbm91c0RvY3VtZW50RmluZE9wdGlvbnMgZGVmYXVsdEZpbmRPcHRpb25zID1OU1Rl
eHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25zV3JhcDsKKyAgICBOU1RleHRG
aW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25zIGJhY2t3YXJkc0ZpbmRPcHRpb25z
ID0gKE5TVGV4dEZpbmRlckFzeW5jaHJvbm91c0RvY3VtZW50RmluZE9wdGlvbnMpKE5TVGV4dEZp
bmRlckFzeW5jaHJvbm91c0RvY3VtZW50RmluZE9wdGlvbnNXcmFwIHwgTlNUZXh0RmluZGVyQXN5
bmNocm9ub3VzRG9jdW1lbnRGaW5kT3B0aW9uc0JhY2t3YXJkcyk7CisKKyAgICAvLyBGaW5kIG9u
ZSBtYXRjaCwgZG9pbmcgYW4gaW5jcmVtZW50YWwgc2VhcmNoLgorICAgIFt3ZWJWaWV3IGZpbmRN
YXRjaGVzRm9yU3RyaW5nOkAid29yZCIgcmVsYXRpdmVUb01hdGNoOm5pbCBmaW5kT3B0aW9uczpk
ZWZhdWx0RmluZE9wdGlvbnMgbWF4UmVzdWx0czoxIHJlc3VsdENvbGxlY3RvcjpeKE5TQXJyYXkg
Km1hdGNoZXMsIEJPT0wgZGlkV3JhcCkgeworICAgICAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIp
MSwgbWF0Y2hlcy5jb3VudCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShkaWRXcmFwKTsKKworICAg
ICAgICBbd2ViVmlldyBmaW5kTWF0Y2hlc0ZvclN0cmluZzpAIndvcmQiIHJlbGF0aXZlVG9NYXRj
aDpuaWwgZmluZE9wdGlvbnM6ZGVmYXVsdEZpbmRPcHRpb25zIG1heFJlc3VsdHM6MSByZXN1bHRD
b2xsZWN0b3I6XihOU0FycmF5ICptYXRjaGVzLCBCT09MIGRpZFdyYXApIHsKKyAgICAgICAgICAg
IEVYUEVDVF9FUSgoTlNVSW50ZWdlcikxLCBtYXRjaGVzLmNvdW50KTsKKyAgICAgICAgICAgIEVY
UEVDVF9GQUxTRShkaWRXcmFwKTsKKworICAgICAgICAgICAgLy8gVGhlIG5leHQgbWF0Y2ggc2hv
dWxkIHdyYXAuCisgICAgICAgICAgICBbd2ViVmlldyBmaW5kTWF0Y2hlc0ZvclN0cmluZzpAIndv
cmQiIHJlbGF0aXZlVG9NYXRjaDpuaWwgZmluZE9wdGlvbnM6ZGVmYXVsdEZpbmRPcHRpb25zIG1h
eFJlc3VsdHM6MSByZXN1bHRDb2xsZWN0b3I6XihOU0FycmF5ICptYXRjaGVzLCBCT09MIGRpZFdy
YXApIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMSwgbWF0Y2hlcy5j
b3VudCk7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoZGlkV3JhcCk7CisKKyAgICAgICAg
ICAgICAgICAvLyBHb2luZyBiYWNrd2FyZCBhZnRlciB3cmFwcGluZyBzaG91bGQgd3JhcCBhZ2Fp
bi4KKyAgICAgICAgICAgICAgICBbd2ViVmlldyBmaW5kTWF0Y2hlc0ZvclN0cmluZzpAIndvcmQi
IHJlbGF0aXZlVG9NYXRjaDpuaWwgZmluZE9wdGlvbnM6YmFja3dhcmRzRmluZE9wdGlvbnMgbWF4
UmVzdWx0czoxIHJlc3VsdENvbGxlY3RvcjpeKE5TQXJyYXkgKm1hdGNoZXMsIEJPT0wgZGlkV3Jh
cCkgeworICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMSwgbWF0Y2hl
cy5jb3VudCk7CisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKGRpZFdyYXApOworCisg
ICAgICAgICAgICAgICAgICAgIGZpbmRNYXRjaGVzRG9uZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgfV07CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfV07CisgICAgfV07CisKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmRNYXRjaGVzRG9uZSk7CisgICAgZmluZE1hdGNoZXNE
b25lID0gZmFsc2U7Cit9CisKICNlbmRpZgo=
</data>
<flag name="review"
          id="327459"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>