<?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>188581</bug_id>
          
          <creation_ts>2018-08-14 14:46:14 -0700</creation_ts>
          <short_desc>isValidCSSSelector is unsafe to be called from a non-main thread</short_desc>
          <delta_ts>2018-08-15 13:03:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1450106</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 14:46:14 -0700</bug_when>
    <thetext>isValidCSSSelector is unsafe to be called from a non-main thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450108</commentid>
    <comment_count>1</comment_count>
      <attachid>347113</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 14:51:18 -0700</bug_when>
    <thetext>Created attachment 347113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450109</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 14:51:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/40517358&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450118</commentid>
    <comment_count>3</comment_count>
      <attachid>347116</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 15:19:46 -0700</bug_when>
    <thetext>Created attachment 347116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450119</commentid>
    <comment_count>4</comment_count>
      <attachid>347116</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-08-14 15:32:07 -0700</bug_when>
    <thetext>Comment on attachment 347116
Patch

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

&gt; Source/WebCore/contentextensions/ContentExtensionRule.h:207
&gt; +// FIXME: Move this to WTF.

Can we do this now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450136</commentid>
    <comment_count>5</comment_count>
      <attachid>347121</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 15:58:35 -0700</bug_when>
    <thetext>Created attachment 347121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450145</commentid>
    <comment_count>6</comment_count>
      <attachid>347124</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 16:13:58 -0700</bug_when>
    <thetext>Created attachment 347124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450194</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 17:31:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/r234873</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450304</commentid>
    <comment_count>8</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2018-08-15 08:54:04 -0700</bug_when>
    <thetext>Looks like https://trac.webkit.org/changeset/234873/webkit

Has caused 7 crashes on Debug wk2 builds. 

Build Log:
https://build.webkit.org/results/Apple%20Sierra%20Debug%20WK2%20(Tests)/r234882%20(7631)/results.html


Crash:
https://build.webkit.org/results/Apple%20Sierra%20Debug%20WK2%20(Tests)/r234882%20(7631)/inspector/worker/debugger-scripts-crash-log.txt

Looks like a new assertion is causing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450324</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-08-15 09:45:20 -0700</bug_when>
    <thetext>Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x0000000129e7e4c0 WTFCrash + 16 (Assertions.cpp:267)
1   com.apple.WebKit              	0x000000010fa2705b WTFCrashWithInfo(int, char const*, char const*, int) + 27
2   com.apple.WebKit              	0x000000010feb2580 WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformationMetrics(unsigned long long, WebCore::NetworkLoadMetrics const&amp;) + 128 (NetworkConnectionToWebProcess.h:108)
3   com.apple.WebKit              	0x000000010feb2053 WebKit::NetworkResourceLoader::didFinishLoading(WebCore::NetworkLoadMetrics const&amp;) + 435 (NetworkResourceLoader.cpp:527)
4   com.apple.WebKit              	0x000000010fe0e04c WebKit::NetworkLoad::didCompleteWithError(WebCore::ResourceError const&amp;, WebCore::NetworkLoadMetrics const&amp;) + 300 (NetworkLoad.cpp:372)
5   com.apple.WebKit              	0x000000010fe04e07 WebKit::NetworkDataTaskCocoa::didCompleteWithError(WebCore::ResourceError const&amp;, WebCore::NetworkLoadMetrics const&amp;) + 87 (NetworkDataTaskCocoa.mm:302)
6   com.apple.WebKit              	0x000000010fef6b53 -[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:] + 227 (NetworkSessionCocoa.mm:402)
7   com.apple.CFNetwork           	0x00007fffbb8655c1 __51-[NSURLSession delegate_task:didCompleteWithError:]_block_invoke.162 + 76
8   com.apple.Foundation          	0x00007fffbdf81f19 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 7
9   com.apple.Foundation          	0x00007fffbdf81bfc -[NSBlockOperation main] + 101
10  com.apple.Foundation          	0x00007fffbdf80324 -[__NSOperationInternal _start:] + 672
11  com.apple.Foundation          	0x00007fffbdf7c1db __NSOQSchedule_f + 201
12  libdispatch.dylib             	0x00007fffd20c38fc _dispatch_client_callout + 8
13  libdispatch.dylib             	0x00007fffd20d0aac _dispatch_main_queue_callback_4CF + 925
14  com.apple.CoreFoundation      	0x00007fffbc56ed69 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
15  com.apple.CoreFoundation      	0x00007fffbc53004d __CFRunLoopRun + 2221
16  com.apple.CoreFoundation      	0x00007fffbc52f544 CFRunLoopRunSpecific + 420
17  com.apple.Foundation          	0x00007fffbdf60252 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 277
18  com.apple.Foundation          	0x00007fffbdf6012a -[NSRunLoop(NSRunLoop) run] + 76
19  libxpc.dylib                  	0x00007fffd235289b _xpc_objc_main + 731
20  libxpc.dylib                  	0x00007fffd23512e4 xpc_main + 494
21  com.apple.WebKit.Networking   	0x000000010fa0f091 WebKit::XPCServiceMain() + 1169
22  com.apple.WebKit.Networking   	0x000000010fa0f37b main + 27
23  libdyld.dylib                 	0x00007fffd20f9235 start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450346</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-15 10:48:17 -0700</bug_when>
    <thetext>http://trac.webkit.org/r234890</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450404</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-15 13:03:32 -0700</bug_when>
    <thetext>I&apos;m re-adding the assertion with the Vector fix in https://bugs.webkit.org/show_bug.cgi?id=188611</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347113</attachid>
            <date>2018-08-14 14:51:18 -0700</date>
            <delta_ts>2018-08-14 15:19:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188581-20180814145117.patch</filename>
            <type>text/plain</type>
            <size>25613</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE4LTA4LTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgaXNWYWxpZENT
U1NlbGVjdG9yIGlzIHVuc2FmZSB0byBiZSBjYWxsZWQgZnJvbSBhIG5vbi1tYWluIHRocmVhZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTgxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDUxNzM1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJzaW5nIGFuZCBkZXRlcm1pbmluZyB3aGV0aGVy
IHRoZSBjc3Mgc2VsZWN0b3JzIGFyZSB2YWxpZCBpcyBmYXN0IGVub3VnaCB0byBkbyBiZWZvcmUK
KyAgICAgICAgaG9wcGluZyB0byB0aGUgYmFja2dyb3VuZCB0aHJlYWQgZm9yIHRoZSBzbG93IE5G
QS9ERkEgb3BlcmF0aW9ucyBhbmQgd3JpdGluZyB0byBkaXNrLgorICAgICAgICBEb2luZyBpdCBv
biB0aGUgbWFpbiB0aHJlYWQgYXZvaWRzIHRoZSB0aHJlYWQgc2FmZXR5IGlzc3VlcyBpbiB0aGUg
Q1NTUGFyc2VyJ3MgdXNlIG9mIHN0cmluZ3MuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6aXNWYWxpZENTU1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpsb2FkRW5jb2RlZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpwYXJzZVJ1bGVMaXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OlRyaWdnZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6b3BlcmF0b3I9PSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uOjpBY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25SdWxl
Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkNvbnRlbnRFeHRlbnNpb25SdWxlOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjp2ZWN0b3JJc29sYXRlZENvcHkpOgorCiAyMDE4LTA4
LTE0ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAg
ICAgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uIGxvZ2dpbmcgaW4gd29ya2VycyBzaG91bGQg
bm90IGVtaXQgRXJyb3JFdmVudCB0byBob3N0IFdvcmtlciBvYmplY3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbkNvbXBpbGVyLmNwcAkocmV2aXNpb24gMjM0ODUxKQorKysgU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgzLDEyICsyODMsMTMgQEAgc3RhdGljIHZvaWQgY29tcGlsZVRvQnl0ZWNvZGUoQ29t
YmluZWRVUgogICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKHVuaXZlcnNhbEFjdGlvbnMsIHVuaXZl
cnNhbEFjdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZih1bnNpZ25lZCkpOwogfQogCi1zdGQ6OmVy
cm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVu
dCYgY2xpZW50LCBTdHJpbmcmJiBydWxlSlNPTikKK3N0ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVs
ZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiBjbGllbnQsIFN0cmluZyYm
IHJ1bGVKU09OLCBWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+JiYgcGFyc2VkUnVsZUxpc3Qp
CiB7Ci0gICAgYXV0byBydWxlTGlzdCA9IHBhcnNlUnVsZUxpc3QoV1RGTW92ZShydWxlSlNPTikp
OwotICAgIGlmICghcnVsZUxpc3QuaGFzX3ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBydWxlTGlz
dC5lcnJvcigpOwotICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4gcGFyc2VkUnVsZUxp
c3QgPSBXVEZNb3ZlKHJ1bGVMaXN0LnZhbHVlKCkpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFtydWxlSlNPTiA9IHJ1bGVKU09OLmlzb2xhdGVkQ29weSgpLCBw
YXJzZWRSdWxlTGlzdCA9IHZlY3Rvcklzb2xhdGVkQ29weShwYXJzZWRSdWxlTGlzdCldIHsKKyAg
ICAgICAgQVNTRVJUKHBhcnNlUnVsZUxpc3QocnVsZUpTT04pID09IHBhcnNlZFJ1bGVMaXN0KTsK
KyAgICB9KTsKKyNlbmRpZgogCiAgICAgYm9vbCBkb21haW5Db25kaXRpb25TZWVuID0gZmFsc2U7
CiAgICAgYm9vbCB0b3BVUkxDb25kaXRpb25TZWVuID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
Q29tcGlsZXIuaAkocmV2aXNpb24gMjM0ODUxKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZSgpID0gMDsKIH07
CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVu
dEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiwgU3RyaW5nJiYpOworV0VCQ09SRV9FWFBPUlQg
c3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRp
b25DbGllbnQmLCBTdHJpbmcmJiBydWxlSlNPTiwgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxl
PiYmKTsKIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCShyZXZpc2lvbiAyMzQ4NTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMwLDYgKzIzMCw3IEBAIHN0YXRpYyBFeHBlY3RlZDxU
cmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGUKIAogYm9vbCBpc1ZhbGlkQ1NTU2VsZWN0b3IoY29uc3Qg
U3RyaW5nJiBzZWxlY3RvcikKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEF0
b21pY1N0cmluZzo6aW5pdCgpOwogICAgIFF1YWxpZmllZE5hbWU6OmluaXQoKTsKICAgICBDU1NQ
YXJzZXJDb250ZXh0IGNvbnRleHQoSFRNTFF1aXJrc01vZGUpOwpAQCAtMjk5LDcgKzMwMCw3IEBA
IHN0YXRpYyBFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPENvbnRlbnRFeHQKICAgICByZXR1cm4geyBz
dGQ6Om51bGxvcHQgfTsKIH0KIAotc3RhdGljIEV4cGVjdGVkPFZlY3RvcjxDb250ZW50RXh0ZW5z
aW9uUnVsZT4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZEVuY29kZWRSdWxlcyhFeGVjU3RhdGUmIGV4
ZWMsIFN0cmluZyYmIHJ1bGVKU09OKQorc3RhdGljIEV4cGVjdGVkPFZlY3RvcjxDb250ZW50RXh0
ZW5zaW9uUnVsZT4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZEVuY29kZWRSdWxlcyhFeGVjU3RhdGUm
IGV4ZWMsIGNvbnN0IFN0cmluZyYgcnVsZUpTT04pCiB7CiAgICAgVk0mIHZtID0gZXhlYy52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTM0Nyw3ICsz
NDgsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SCiAgICAgcmV0
dXJuIFdURk1vdmUocnVsZUxpc3QpOwogfQogCi1FeHBlY3RlZDxWZWN0b3I8Q29udGVudEV4dGVu
c2lvblJ1bGU+LCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlUnVsZUxpc3QoU3RyaW5nJiYgcnVsZUpT
T04pCitFeHBlY3RlZDxWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9yX2Nv
ZGU+IHBhcnNlUnVsZUxpc3QoY29uc3QgU3RyaW5nJiBydWxlSlNPTikKIHsKICNpZiBDT05URU5U
X0VYVEVOU0lPTlNfUEVSRk9STUFOQ0VfUkVQT1JUSU5HCiAgICAgTW9ub3RvbmljVGltZSBsb2Fk
RXh0ZW5zaW9uU3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CkBAIC0zNTgsNyArMzU5
LDcgQEAgRXhwZWN0ZWQ8VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiwgcwogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKCp2bSwgSlNH
bG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0sIGpzTnVsbCgpKSk7CiAKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBhdXRvIHJ1bGVM
aXN0ID0gbG9hZEVuY29kZWRSdWxlcygqZXhlYywgV1RGTW92ZShydWxlSlNPTikpOworICAgIGF1
dG8gcnVsZUxpc3QgPSBsb2FkRW5jb2RlZFJ1bGVzKCpleGVjLCBydWxlSlNPTik7CiAKICAgICB2
bSA9IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmgJKHJldmlzaW9uIDIzNDg1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJz
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgQ29udGVudEV4
dGVuc2lvbnMgewogCiBjbGFzcyBDb250ZW50RXh0ZW5zaW9uUnVsZTsKIAotRXhwZWN0ZWQ8VmVj
dG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZVJ1bGVMaXN0
KFN0cmluZyYmKTsKK1dFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFZlY3RvcjxDb250ZW50RXh0ZW5z
aW9uUnVsZT4sIHN0ZDo6ZXJyb3JfY29kZT4gcGFyc2VSdWxlTGlzdChjb25zdCBTdHJpbmcmKTsK
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNWYWxpZENTU1NlbGVjdG9yKGNvbnN0IFN0cmluZyYpOwog
CiB9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNw
cAkocmV2aXNpb24gMjM0ODUxKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblJ1bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDI4
IEBAIHVpbnQzMl90IEFjdGlvbjo6c2VyaWFsaXplZExlbmd0aChjb25zdCAKICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitUcmlnZ2VyIFRyaWdnZXI6Omlzb2xhdGVkQ29w
eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgdXJsRmlsdGVyLmlzb2xhdGVkQ29w
eSgpLAorICAgICAgICB1cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsCisgICAgICAgIHRvcFVSTENv
bmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSwKKyAgICAgICAgZmxhZ3MsCisgICAgICAgIHZlY3Rvcklz
b2xhdGVkQ29weShjb25kaXRpb25zKSwKKyAgICAgICAgY29uZGl0aW9uVHlwZQorICAgIH07Cit9
CisKK0FjdGlvbiBBY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsK
KyAgICAgICAgbV9leHRlbnNpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBt
X3R5cGUsCisgICAgICAgIG1fYWN0aW9uSUQsCisgICAgICAgIG1fc3RyaW5nQXJndW1lbnQuaXNv
bGF0ZWRDb3B5KCkKKyAgICB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9u
cwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgJKHJldmlzaW9u
IDIzNDg1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25SdWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgc3RydWN0IFRyaWdn
ZXIgewogICAgIH07CiAgICAgQ29uZGl0aW9uVHlwZSBjb25kaXRpb25UeXBlIHsgQ29uZGl0aW9u
VHlwZTo6Tm9uZSB9OwogCisgICAgV0VCQ09SRV9FWFBPUlQgVHJpZ2dlciBpc29sYXRlZENvcHko
KSBjb25zdDsKKyAgICAKICAgICB+VHJpZ2dlcigpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
ZGl0aW9ucy5pc0VtcHR5KCkgPT0gKGNvbmRpdGlvblR5cGUgPT0gQ29uZGl0aW9uVHlwZTo6Tm9u
ZSkpOwpAQCAtNjYsNiArNjgsNyBAQCBzdHJ1Y3QgVHJpZ2dlciB7CiAgICAgewogICAgICAgICBy
ZXR1cm4gdXJsRmlsdGVyLmlzRW1wdHkoKQogICAgICAgICAgICAgJiYgIXVybEZpbHRlcklzQ2Fz
ZVNlbnNpdGl2ZQorICAgICAgICAgICAgJiYgIXRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2
ZQogICAgICAgICAgICAgJiYgIWZsYWdzCiAgICAgICAgICAgICAmJiBjb25kaXRpb25zLmlzRW1w
dHkoKQogICAgICAgICAgICAgJiYgY29uZGl0aW9uVHlwZSA9PSBDb25kaXRpb25UeXBlOjpOb25l
OwpAQCAtNzUsNiArNzgsNyBAQCBzdHJ1Y3QgVHJpZ2dlciB7CiAgICAgewogICAgICAgICByZXR1
cm4gdXJsRmlsdGVyID09IG90aGVyLnVybEZpbHRlcgogICAgICAgICAgICAgJiYgdXJsRmlsdGVy
SXNDYXNlU2Vuc2l0aXZlID09IG90aGVyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZQorICAgICAg
ICAgICAgJiYgdG9wVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZlID09IG90aGVyLnRvcFVSTENv
bmRpdGlvbklzQ2FzZVNlbnNpdGl2ZQogICAgICAgICAgICAgJiYgZmxhZ3MgPT0gb3RoZXIuZmxh
Z3MKICAgICAgICAgICAgICYmIGNvbmRpdGlvbnMgPT0gb3RoZXIuY29uZGl0aW9ucwogICAgICAg
ICAgICAgJiYgY29uZGl0aW9uVHlwZSA9PSBvdGhlci5jb25kaXRpb25UeXBlOwpAQCAtMTYzLDcg
KzE2NywxNiBAQCBzdHJ1Y3QgQWN0aW9uIHsKICAgICB1aW50MzJfdCBhY3Rpb25JRCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWN0aW9uSUQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHN0cmluZ0FyZ3VtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdBcmd1bWVudDsgfQogCisgICAgV0VCQ09SRV9FWFBP
UlQgQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIAogcHJpdmF0ZToKKyAgICBBY3Rp
b24oU3RyaW5nJiYgZXh0ZW5zaW9uSWRlbnRpZmllciwgQWN0aW9uVHlwZSB0eXBlLCB1aW50MzJf
dCBhY3Rpb25JRCwgU3RyaW5nJiYgc3RyaW5nQXJndW1lbnQpCisgICAgICAgIDogbV9leHRlbnNp
b25JZGVudGlmaWVyKFdURk1vdmUoZXh0ZW5zaW9uSWRlbnRpZmllcikpCisgICAgICAgICwgbV90
eXBlKHR5cGUpCisgICAgICAgICwgbV9hY3Rpb25JRChhY3Rpb25JRCkKKyAgICAgICAgLCBtX3N0
cmluZ0FyZ3VtZW50KFdURk1vdmUoc3RyaW5nQXJndW1lbnQpKQorICAgIHsgfQorCiAgICAgU3Ry
aW5nIG1fZXh0ZW5zaW9uSWRlbnRpZmllcjsKICAgICBBY3Rpb25UeXBlIG1fdHlwZTsKICAgICB1
aW50MzJfdCBtX2FjdGlvbklEOwpAQCAtMTcyLDE2ICsxODUsMzUgQEAgcHJpdmF0ZToKICAgICAK
IGNsYXNzIENvbnRlbnRFeHRlbnNpb25SdWxlIHsKIHB1YmxpYzoKLSAgICBDb250ZW50RXh0ZW5z
aW9uUnVsZShUcmlnZ2VyJiYsIEFjdGlvbiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250ZW50
RXh0ZW5zaW9uUnVsZShUcmlnZ2VyJiYsIEFjdGlvbiYmKTsKIAogICAgIGNvbnN0IFRyaWdnZXIm
IHRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX3RyaWdnZXI7IH0KICAgICBjb25zdCBBY3Rpb24m
IGFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aW9uOyB9CiAKKyAgICBDb250ZW50RXh0ZW5z
aW9uUnVsZSBpc29sYXRlZENvcHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgbV90
cmlnZ2VyLmlzb2xhdGVkQ29weSgpLCBtX2FjdGlvbi5pc29sYXRlZENvcHkoKSB9OworICAgIH0K
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29udGVudEV4dGVuc2lvblJ1bGUmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdHJpZ2dlciA9PSBvdGhlci5tX3RyaWdnZXIg
JiYgbV9hY3Rpb24gPT0gb3RoZXIubV9hY3Rpb247CisgICAgfQorCiBwcml2YXRlOgogICAgIFRy
aWdnZXIgbV90cmlnZ2VyOwogICAgIEFjdGlvbiBtX2FjdGlvbjsKIH07CiAKKy8vIEZJWE1FOiBN
b3ZlIHRoaXMgdG8gV1RGLgordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFZlY3RvcjxUPiB2
ZWN0b3JJc29sYXRlZENvcHkoY29uc3QgVmVjdG9yPFQ+IG9yaWdpbmFsKQoreworICAgIFZlY3Rv
cjxUPiBjb3B5OworICAgIGNvcHkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvcmlnaW5hbC5zaXpl
KCkpOworICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG9yaWdpbmFsKQorICAgICAgICBj
b3B5LnVuY2hlY2tlZEFwcGVuZChlbGVtZW50Lmlzb2xhdGVkQ29weSgpKTsKKyAgICByZXR1cm4g
Y29weTsKK30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ4NTEpCisrKyBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE4
LTA4LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgaXNWYWxpZENTU1NlbGVjdG9yIGlzIHVuc2FmZSB0byBiZSBjYWxsZWQgZnJvbSBhIG5v
bi1tYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg4NTgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDUxNzM1OD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpjb21waWxlZFRvRmls
ZSk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVs
ZUxpc3QpOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0QXZhaWxhYmxl
Q29udGVudFJ1bGVMaXN0SWRlbnRpZmllcnMpOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxp
c3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgIChBUEk6OkNvbnRlbnRS
dWxlTGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoQVBJOjpDb250
ZW50UnVsZUxpc3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tOgorCiAyMDE4LTA4LTE0ICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbiBzaG91bGQgdXNlIE9wdGlvblNldCBmb3IgY2hhbmdlIGZsYWdzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAJKHJldmlzaW9uIDIzNDg1MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDggKzM1LDEwIEBACiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ29udGVudEV4dGVuc2lvbkVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50
RXh0ZW5zaW9uUGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9RdWFsaWZpZWROYW1lLmg+CiAj
aW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAj
aW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgpAQCAtMjA5LDcgKzIxMSw3IEBAIHN0YXRpYyBib29s
IHdyaXRlRGF0YVRvRmlsZShjb25zdCBEYXRhJiAKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAot
c3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25z
dCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgsIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBtZXRhRGF0
YSwgRGF0YSYgbWFwcGVkRGF0YSkKK3N0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0Zp
bGUoU3RyaW5nJiYganNvbiwgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uUnVsZT4mJiBwYXJzZWRSdWxlcywgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQ
YXRoLCBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEsIERhdGEmIG1hcHBlZERhdGEp
CiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOwogCkBA
IC0zMzksNyArMzQxLDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShT
dAogCiAgICAgQ29tcGlsYXRpb25DbGllbnQgY29tcGlsYXRpb25DbGllbnQodGVtcG9yYXJ5Rmls
ZUhhbmRsZSwgbWV0YURhdGEpOwogICAgIAotICAgIGlmIChhdXRvIGNvbXBpbGVyRXJyb3IgPSBj
b21waWxlUnVsZUxpc3QoY29tcGlsYXRpb25DbGllbnQsIFdURk1vdmUoanNvbikpKSB7CisgICAg
aWYgKGF1dG8gY29tcGlsZXJFcnJvciA9IGNvbXBpbGVSdWxlTGlzdChjb21waWxhdGlvbkNsaWVu
dCwgV1RGTW92ZShqc29uKSwgV1RGTW92ZShwYXJzZWRSdWxlcykpKSB7CiAgICAgICAgIFdURkxv
Z0Fsd2F5cygiQ29udGVudCBSdWxlIExpc3QgY29tcGlsaW5nIGZhaWxlZDogQ29tcGlsaW5nIGZh
aWxlZC4iKTsKICAgICAgICAgY2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUpOwogICAgICAg
ICByZXR1cm4gY29tcGlsZXJFcnJvcjsKQEAgLTM5MSw3ICszOTMsNyBAQCBzdGF0aWMgUmVmPEFQ
STo6Q29udGVudFJ1bGVMaXN0PiBjcmVhdGVFCiAgICAgcmV0dXJuIEFQSTo6Q29udGVudFJ1bGVM
aXN0OjpjcmVhdGUoaWRlbnRpZmllciwgV1RGTW92ZShjb21waWxlZENvbnRlbnRSdWxlTGlzdCkp
OwogfQogCi12b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVsZUxpc3Qo
Y29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6
Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVsZUxpc3QoY29uc3QgV1RG
OjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6
Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgbV9yZWFkUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBt
X3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgbGVnYWN5RmlsZW5hbWUgPSBtX2xlZ2FjeUZpbGVu
YW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewogICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBp
ZGVudGlmaWVyLCBsZWdhY3lGaWxlbmFtZSk7CkBAIC0zOTksMjYgKzQwMSwyNiBAQCB2b2lkIENv
bnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50CiAgICAgICAgIENvbnRlbnRSdWxlTGlz
dE1ldGFEYXRhIG1ldGFEYXRhOwogICAgICAgICBEYXRhIGZpbGVEYXRhOwogICAgICAgICBpZiAo
IW9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QocGF0aCwgbWV0YURhdGEsIGZpbGVEYXRhKSkgewot
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0geworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgRXJyb3I6Okxvb2t1cEZhaWxlZCk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKG1ldGFEYXRhLnZlcnNpb24gIT0gQ29udGVudFJ1bGVMaXN0U3RvcmU6OkN1cnJlbnRD
b250ZW50UnVsZUxpc3RGaWxlVmVyc2lvbikgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwg
RXJyb3I6OlZlcnNpb25NaXNtYXRjaCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgaWRlbnRpZmllciA9
IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGZpbGVEYXRhID0gV1RGTW92ZShmaWxlRGF0YSks
IG1ldGFEYXRhID0gV1RGTW92ZShtZXRhRGF0YSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgaWRlbnRpZmllciA9IGlk
ZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGZpbGVEYXRhID0gV1RGTW92ZShmaWxlRGF0YSksIG1l
dGFEYXRhID0gV1RGTW92ZShtZXRhRGF0YSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoY3JlYXRlRXh0ZW5zaW9uKGlkZW50aWZpZXIsIG1ldGFEYXRhLCBmaWxlRGF0YSksIHsg
fSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQogCi12b2lkIENvbnRlbnRSdWxlTGlzdFN0b3Jl
OjpnZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVycyhGdW5jdGlvbjx2b2lkKFdU
Rjo6VmVjdG9yPFdURjo6U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDb250ZW50
UnVsZUxpc3RTdG9yZTo6Z2V0QXZhaWxhYmxlQ29udGVudFJ1bGVMaXN0SWRlbnRpZmllcnMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4pPiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBtX3JlYWRRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGxl
Z2FjeUZpbGVuYW1lID0gbV9sZWdhY3lGaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKIApAQCAtNDM1LDQzICs0MzcsNDgg
QEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0QXZhaWxhYmxlQwogICAgIH0pOwogfQog
Ci12b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0
IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6OlN0cmluZyYmIGpzb24sIEZ1bmN0aW9uPHZv
aWQoUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1
bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6OlN0cmluZyYmIGpzb24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3Rk
OjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQXRvbWljU3RyaW5nOjpp
bml0KCk7CiAgICAgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6aW5pdCgpOwotICAgIG1fY29tcGls
ZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlm
aWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgbGVnYWN5RmlsZW5hbWUgPSBtX2xlZ2Fj
eUZpbGVuYW1lLCBqc29uID0ganNvbi5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9y
ZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgIAorICAgIGF1dG8gcGFyc2VkUnVsZXMgPSBX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6cGFyc2VSdWxlTGlzdChqc29uKTsKKyAgICBpZiAo
IXBhcnNlZFJ1bGVzLmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIobnVsbHB0ciwgcGFyc2VkUnVsZXMuZXJyb3IoKSk7CisgICAgCisgICAgbV9jb21waWxlUXVl
dWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIg
PSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5Rmls
ZW5hbWUsIGpzb24gPSBqc29uLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRSdWxlcyA9IFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjp2ZWN0b3JJc29sYXRlZENvcHkocGFyc2VkUnVsZXMudmFsdWUo
KSksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
YXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwgbGVnYWN5
RmlsZW5hbWUpOwogCiAgICAgICAgIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhIG1ldGFEYXRhOwog
ICAgICAgICBEYXRhIGZpbGVEYXRhOwotICAgICAgICBhdXRvIGVycm9yID0gY29tcGlsZWRUb0Zp
bGUoV1RGTW92ZShqc29uKSwgcGF0aCwgbWV0YURhdGEsIGZpbGVEYXRhKTsKKyAgICAgICAgYXV0
byBlcnJvciA9IGNvbXBpbGVkVG9GaWxlKFdURk1vdmUoanNvbiksIFdURk1vdmUocGFyc2VkUnVs
ZXMpLCBwYXRoLCBtZXRhRGF0YSwgZmlsZURhdGEpOwogICAgICAgICBpZiAoZXJyb3IpIHsKLSAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIGVycm9yID0gV1RGTW92ZShlcnJvciksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGVycm9yID0gV1RGTW92ZShlcnJvciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG51bGxwdHIsIGVycm9yKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgaWRlbnRpZmllciA9IFdURk1vdmUo
aWRlbnRpZmllciksIGZpbGVEYXRhID0gV1RGTW92ZShmaWxlRGF0YSksIG1ldGFEYXRhID0gV1RG
TW92ZShtZXRhRGF0YSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmll
ciksIGZpbGVEYXRhID0gV1RGTW92ZShmaWxlRGF0YSksIG1ldGFEYXRhID0gV1RGTW92ZShtZXRh
RGF0YSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgewogICAgICAgICAgICAgUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0PiBjb250
ZW50UnVsZUxpc3QgPSBjcmVhdGVFeHRlbnNpb24oaWRlbnRpZmllciwgbWV0YURhdGEsIGZpbGVE
YXRhKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRlbnRSdWxlTGlzdCwgeyB9
KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6
OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgRnVu
Y3Rpb248dm9pZChzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ29u
dGVudFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmlu
ZyYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OmVycm9yX2NvZGUpPiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3JlbW92ZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRl
ZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGxlZ2FjeUZp
bGVuYW1lID0gbV9sZWdhY3lGaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBwYXRoID0gY29uc3Ry
dWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwgbGVnYWN5RmlsZW5hbWUpOwogCiAgICAg
ICAgIGlmICghZGVsZXRlRmlsZShwYXRoKSkgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoRXJyb3I6OlJl
bW92ZUZhaWxlZCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTQ5NCwxMyArNTAx
LDEzIEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmludmFsaWRhdGVDb24KICAgICBjbG9z
ZUZpbGUoZmlsZSk7CiB9CiAKLXZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldENvbnRlbnRS
dWxlTGlzdFNvdXJjZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9p
ZChXVEY6OlN0cmluZyk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDb250ZW50UnVsZUxpc3RT
dG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6U3RyaW5nKT4gY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgbV9yZWFkUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBh
dGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgbGVnYWN5RmlsZW5hbWUgPSBtX2xlZ2Fj
eUZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQ
YXRoLCBpZGVudGlmaWVyLCBsZWdhY3lGaWxlbmFtZSk7CiAgICAgICAgIAogICAgICAgICBhdXRv
IGNvbXBsZXRlID0gW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTdHJpbmcgc291cmNl
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNvdXJjZSA9IHNvdXJjZS5pc29sYXRlZENvcHkoKV0g
eworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgc291cmNlID0gc291cmNlLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxl
IHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzb3VyY2UpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAkocmV2aXNpb24gMjM0ODUxKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYyLDE1ICs2MiwxNSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29u
dGVudFJ1bGVMaXN0U3RvcmUoY29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCwgYm9vbCBsZWdh
Y3lGaWxlbmFtZSk7CiAgICAgdmlydHVhbCB+Q29udGVudFJ1bGVMaXN0U3RvcmUoKTsKIAotICAg
IHZvaWQgY29tcGlsZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmll
ciwgV1RGOjpTdHJpbmcmJiBqc29uLCBGdW5jdGlvbjx2b2lkKFJlZlB0cjxBUEk6OkNvbnRlbnRS
dWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsKLSAgICB2b2lkIGxvb2t1cENvbnRlbnRSdWxl
TGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChSZWZQdHI8
QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2NvZGUpPik7Ci0gICAgdm9pZCByZW1v
dmVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9u
PHZvaWQoc3RkOjplcnJvcl9jb2RlKT4pOwotICAgIHZvaWQgZ2V0QXZhaWxhYmxlQ29udGVudFJ1
bGVMaXN0SWRlbnRpZmllcnMoRnVuY3Rpb248dm9pZChXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4p
Pik7CisgICAgdm9pZCBjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBp
ZGVudGlmaWVyLCBXVEY6OlN0cmluZyYmIGpzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4pOworICAgIHZvaWQg
bG9va3VwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJy
b3JfY29kZSk+KTsKKyAgICB2b2lkIHJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OmVycm9yX2NvZGUp
Pik7CisgICAgdm9pZCBnZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVycyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPik+KTsKIAogICAgIC8v
IEZvciB0ZXN0aW5nIG9ubHkuCiAgICAgdm9pZCBzeW5jaHJvbm91c1JlbW92ZUFsbENvbnRlbnRS
dWxlTGlzdHMoKTsKICAgICB2b2lkIGludmFsaWRhdGVDb250ZW50UnVsZUxpc3RWZXJzaW9uKGNv
bnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKTsKLSAgICB2b2lkIGdldENvbnRlbnRSdWxlTGlz
dFNvdXJjZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChXVEY6
OlN0cmluZyk+KTsKKyAgICB2b2lkIGdldENvbnRlbnRSdWxlTGlzdFNvdXJjZShjb25zdCBXVEY6
OlN0cmluZyYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6OlN0cmluZyk+
KTsKIAogcHJpdmF0ZToKICAgICBXVEY6OlN0cmluZyBkZWZhdWx0U3RvcmVQYXRoKGJvb2wgbGVn
YWN5RmlsZW5hbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
Q29udGVudFJ1bGVMaXN0U3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0JKHJldmlzaW9uIDIzNDg1
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlz
dFN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJBUElD
b250ZW50UnVsZUxpc3RTdG9yZS5oIgogI2ltcG9ydCAiV0tFcnJvckludGVybmFsLmgiCiAjaW1w
b3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgog
CiBzdGF0aWMgV0tFcnJvckNvZGUgdG9XS0Vycm9yQ29kZShjb25zdCBzdGQ6OmVycm9yX2NvZGUm
IGVycm9yKQogewpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjM0ODYyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDgtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBpc1ZhbGlkQ1NTU2VsZWN0b3IgaXMgdW5z
YWZlIHRvIGJlIGNhbGxlZCBmcm9tIGEgbm9uLW1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg1ODEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQwNTE3MzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25z
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uOjpjcmVhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tDb21waWxlckVy
cm9yKToKKwogMjAxOC0wOC0xNCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW2V3cy1idWlsZF0gQWRkIGJ1aWxkIHN0ZXAgdG8gcnVuIFdLMSBsYXlvdXQt
dGVzdApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRl
bnNpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCShyZXZpc2lvbiAyMzQ4NTEpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTAsNyArMTUwLDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQ29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uRGF0YSBleHRlbnNpb25EYXRhOwogICAgICAgICBJbk1lbW9yeUNvbnRl
bnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCBjbGllbnQoZXh0ZW5zaW9uRGF0YSk7Ci0gICAg
ICAgIGF1dG8gY29tcGlsZXJFcnJvciA9IENvbnRlbnRFeHRlbnNpb25zOjpjb21waWxlUnVsZUxp
c3QoY2xpZW50LCBXVEZNb3ZlKGZpbHRlcikpOworICAgICAgICBhdXRvIHBhcnNlZFJ1bGVzID0g
Q29udGVudEV4dGVuc2lvbnM6OnBhcnNlUnVsZUxpc3QoZmlsdGVyKTsKKyAgICAgICAgYXV0byBj
b21waWxlckVycm9yID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdChjbGllbnQs
IFdURk1vdmUoZmlsdGVyKSwgV1RGTW92ZShwYXJzZWRSdWxlcy52YWx1ZSgpKSk7CiAKICAgICAg
ICAgLy8gQ29tcGlsaW5nIHNob3VsZCBhbHdheXMgc3VjY2VlZCBoZXJlLiBXZSBoYXZlIG90aGVy
IHRlc3RzIGZvciBjb21waWxlIGZhaWx1cmVzLgogICAgICAgICBFWFBFQ1RfRkFMU0UoY29tcGls
ZXJFcnJvcik7CkBAIC0xMzcxLDcgKzEzNzIsMTIgQEAgdm9pZCBjaGVja0NvbXBpbGVyRXJyb3Io
Y29uc3QgY2hhcioganNvbgogewogICAgIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEgZXh0
ZW5zaW9uRGF0YTsKICAgICBJbk1lbW9yeUNvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVu
dCBjbGllbnQoZXh0ZW5zaW9uRGF0YSk7Ci0gICAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVyRXJy
b3IgPSBDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KGNsaWVudCwganNvbik7Cisg
ICAgYXV0byBwYXJzZWRSdWxlcyA9IENvbnRlbnRFeHRlbnNpb25zOjpwYXJzZVJ1bGVMaXN0KGpz
b24pOworICAgIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlckVycm9yOworICAgIGlmIChwYXJzZWRS
dWxlcy5oYXNfdmFsdWUoKSkKKyAgICAgICAgY29tcGlsZXJFcnJvciA9IENvbnRlbnRFeHRlbnNp
b25zOjpjb21waWxlUnVsZUxpc3QoY2xpZW50LCBqc29uLCBXVEZNb3ZlKHBhcnNlZFJ1bGVzLnZh
bHVlKCkpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBpbGVyRXJyb3IgPSBwYXJzZWRSdWxlcy5l
cnJvcigpOwogICAgIEVYUEVDVF9FUShjb21waWxlckVycm9yLnZhbHVlKCksIGV4cGVjdGVkRXJy
b3IudmFsdWUoKSk7CiAgICAgaWYgKGNvbXBpbGVyRXJyb3IudmFsdWUoKSkKICAgICAgICAgRVhQ
RUNUX1NUUkVRKGNvbXBpbGVyRXJyb3IuY2F0ZWdvcnkoKS5uYW1lKCksIGV4cGVjdGVkRXJyb3Iu
Y2F0ZWdvcnkoKS5uYW1lKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347116</attachid>
            <date>2018-08-14 15:19:46 -0700</date>
            <delta_ts>2018-08-14 15:58:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188581-20180814151945.patch</filename>
            <type>text/plain</type>
            <size>27275</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE4LTA4LTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgaXNWYWxpZENT
U1NlbGVjdG9yIGlzIHVuc2FmZSB0byBiZSBjYWxsZWQgZnJvbSBhIG5vbi1tYWluIHRocmVhZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTgxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDUxNzM1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJzaW5nIGFuZCBkZXRlcm1pbmluZyB3aGV0aGVy
IHRoZSBjc3Mgc2VsZWN0b3JzIGFyZSB2YWxpZCBpcyBmYXN0IGVub3VnaCB0byBkbyBiZWZvcmUK
KyAgICAgICAgaG9wcGluZyB0byB0aGUgYmFja2dyb3VuZCB0aHJlYWQgZm9yIHRoZSBzbG93IE5G
QS9ERkEgb3BlcmF0aW9ucyBhbmQgd3JpdGluZyB0byBkaXNrLgorICAgICAgICBEb2luZyBpdCBv
biB0aGUgbWFpbiB0aHJlYWQgYXZvaWRzIHRoZSB0aHJlYWQgc2FmZXR5IGlzc3VlcyBpbiB0aGUg
Q1NTUGFyc2VyJ3MgdXNlIG9mIHN0cmluZ3MuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6aXNWYWxpZENTU1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpsb2FkRW5jb2RlZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpwYXJzZVJ1bGVMaXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OlRyaWdnZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6b3BlcmF0b3I9PSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uOjpBY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25SdWxl
Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkNvbnRlbnRFeHRlbnNpb25SdWxlOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjp2ZWN0b3JJc29sYXRlZENvcHkpOgorCiAyMDE4LTA4
LTE0ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAg
ICAgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uIGxvZ2dpbmcgaW4gd29ya2VycyBzaG91bGQg
bm90IGVtaXQgRXJyb3JFdmVudCB0byBob3N0IFdvcmtlciBvYmplY3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbkNvbXBpbGVyLmNwcAkocmV2aXNpb24gMjM0ODUxKQorKysgU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgzLDEyICsyODMsMTMgQEAgc3RhdGljIHZvaWQgY29tcGlsZVRvQnl0ZWNvZGUoQ29t
YmluZWRVUgogICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKHVuaXZlcnNhbEFjdGlvbnMsIHVuaXZl
cnNhbEFjdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZih1bnNpZ25lZCkpOwogfQogCi1zdGQ6OmVy
cm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVu
dCYgY2xpZW50LCBTdHJpbmcmJiBydWxlSlNPTikKK3N0ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVs
ZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiBjbGllbnQsIFN0cmluZyYm
IHJ1bGVKU09OLCBWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+JiYgcGFyc2VkUnVsZUxpc3Qp
CiB7Ci0gICAgYXV0byBydWxlTGlzdCA9IHBhcnNlUnVsZUxpc3QoV1RGTW92ZShydWxlSlNPTikp
OwotICAgIGlmICghcnVsZUxpc3QuaGFzX3ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBydWxlTGlz
dC5lcnJvcigpOwotICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4gcGFyc2VkUnVsZUxp
c3QgPSBXVEZNb3ZlKHJ1bGVMaXN0LnZhbHVlKCkpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFtydWxlSlNPTiA9IHJ1bGVKU09OLmlzb2xhdGVkQ29weSgpLCBw
YXJzZWRSdWxlTGlzdCA9IHZlY3Rvcklzb2xhdGVkQ29weShwYXJzZWRSdWxlTGlzdCldIHsKKyAg
ICAgICAgQVNTRVJUKHBhcnNlUnVsZUxpc3QocnVsZUpTT04pID09IHBhcnNlZFJ1bGVMaXN0KTsK
KyAgICB9KTsKKyNlbmRpZgogCiAgICAgYm9vbCBkb21haW5Db25kaXRpb25TZWVuID0gZmFsc2U7
CiAgICAgYm9vbCB0b3BVUkxDb25kaXRpb25TZWVuID0gZmFsc2U7CkBAIC0zMTMsNyArMzE0LDcg
QEAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RQogICAgIE1vbm90b25p
Y1RpbWUgcGF0dGVyblBhcnRpdGlvbmluZ1N0YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAj
ZW5kaWYKICAgICAKLSAgICBjbGllbnQud3JpdGVTb3VyY2UocnVsZUpTT04pOworICAgIGNsaWVu
dC53cml0ZVNvdXJjZShzdGQ6OmV4Y2hhbmdlKHJ1bGVKU09OLCBTdHJpbmcoKSkpOwogCiAgICAg
VmVjdG9yPFNlcmlhbGl6ZWRBY3Rpb25CeXRlPiBhY3Rpb25zOwogICAgIFZlY3Rvcjx1bnNpZ25l
ZD4gYWN0aW9uTG9jYXRpb25zID0gc2VyaWFsaXplQWN0aW9ucyhwYXJzZWRSdWxlTGlzdCwgYWN0
aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAkocmV2aXNpb24gMjM0ODUxKQorKysg
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fkNvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCgpID0gZGVmYXVsdDsKICAgICAKICAg
ICAvLyBGdW5jdGlvbnMgc2hvdWxkIGJlIGNhbGxlZCBpbiB0aGlzIG9yZGVyLiBBbGwgZXhjZXB0
IHdyaXRlQWN0aW9ucyBhbmQgZmluYWxpemUgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcywg
dGhvdWdoLgotICAgIHZpcnR1YWwgdm9pZCB3cml0ZVNvdXJjZShjb25zdCBTdHJpbmcmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHdyaXRlU291cmNlKFN0cmluZyYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHdyaXRlQWN0aW9ucyhWZWN0b3I8U2VyaWFsaXplZEFjdGlvbkJ5dGU+JiYsIGJvb2wg
Y29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRl
RmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlRmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUo
VmVjdG9yPERGQUJ5dGVjb2RlPiYmKSA9IDA7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoKSA9IDA7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6
OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNs
aWVudCYsIFN0cmluZyYmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxl
UnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiwgU3RyaW5nJiYgcnVs
ZUpTT04sIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4mJik7CiAKIH0gLy8gbmFtZXNwYWNl
IENvbnRlbnRFeHRlbnNpb25zCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uUGFyc2VyLmNwcAkocmV2aXNpb24gMjM0ODUxKQorKysgU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzMCw2ICsyMzAsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2Rl
CiAKIGJvb2wgaXNWYWxpZENTU1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCiB7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKICAg
ICBRdWFsaWZpZWROYW1lOjppbml0KCk7CiAgICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KEhU
TUxRdWlya3NNb2RlKTsKQEAgLTI5OSw3ICszMDAsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8c3RkOjpv
cHRpb25hbDxDb250ZW50RXh0CiAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0IH07CiB9CiAKLXN0
YXRpYyBFeHBlY3RlZDxWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9yX2Nv
ZGU+IGxvYWRFbmNvZGVkUnVsZXMoRXhlY1N0YXRlJiBleGVjLCBTdHJpbmcmJiBydWxlSlNPTikK
K3N0YXRpYyBFeHBlY3RlZDxWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9y
X2NvZGU+IGxvYWRFbmNvZGVkUnVsZXMoRXhlY1N0YXRlJiBleGVjLCBjb25zdCBTdHJpbmcmIHJ1
bGVKU09OKQogewogICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0zNDcsNyArMzQ4LDcgQEAgc3RhdGljIEV4cGVjdGVk
PFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUgogICAgIHJldHVybiBXVEZNb3ZlKHJ1bGVMaXN0KTsK
IH0KIAotRXhwZWN0ZWQ8VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiwgc3RkOjplcnJvcl9j
b2RlPiBwYXJzZVJ1bGVMaXN0KFN0cmluZyYmIHJ1bGVKU09OKQorRXhwZWN0ZWQ8VmVjdG9yPENv
bnRlbnRFeHRlbnNpb25SdWxlPiwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZVJ1bGVMaXN0KGNvbnN0
IFN0cmluZyYgcnVsZUpTT04pCiB7CiAjaWYgQ09OVEVOVF9FWFRFTlNJT05TX1BFUkZPUk1BTkNF
X1JFUE9SVElORwogICAgIE1vbm90b25pY1RpbWUgbG9hZEV4dGVuc2lvblN0YXJ0VGltZSA9IE1v
bm90b25pY1RpbWU6Om5vdygpOwpAQCAtMzU4LDcgKzM1OSw3IEBAIEV4cGVjdGVkPFZlY3RvcjxD
b250ZW50RXh0ZW5zaW9uUnVsZT4sIHMKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqdm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUoKnZtLCBqc051bGwoKSkpOwogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgYXV0byBydWxlTGlzdCA9IGxvYWRFbmNvZGVkUnVsZXMo
KmV4ZWMsIFdURk1vdmUocnVsZUpTT04pKTsKKyAgICBhdXRvIHJ1bGVMaXN0ID0gbG9hZEVuY29k
ZWRSdWxlcygqZXhlYywgcnVsZUpTT04pOwogCiAgICAgdm0gPSBudWxscHRyOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblBhcnNlci5oCShyZXZpc2lvbiAyMzQ4NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIAogY2xhc3MgQ29u
dGVudEV4dGVuc2lvblJ1bGU7CiAKLUV4cGVjdGVkPFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVs
ZT4sIHN0ZDo6ZXJyb3JfY29kZT4gcGFyc2VSdWxlTGlzdChTdHJpbmcmJik7CitXRUJDT1JFX0VY
UE9SVCBFeHBlY3RlZDxWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9yX2Nv
ZGU+IHBhcnNlUnVsZUxpc3QoY29uc3QgU3RyaW5nJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIGlz
VmFsaWRDU1NTZWxlY3Rvcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgQ29udGVu
dEV4dGVuc2lvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25SdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAJKHJldmlzaW9uIDIzNDg1MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywyOCBAQCB1aW50MzJfdCBBY3Rpb246OnNl
cmlhbGl6ZWRMZW5ndGgoY29uc3QgCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAorVHJpZ2dlciBUcmlnZ2VyOjppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIHJldHVy
biB7CisgICAgICAgIHVybEZpbHRlci5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgdXJsRmlsdGVy
SXNDYXNlU2Vuc2l0aXZlLAorICAgICAgICB0b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUs
CisgICAgICAgIGZsYWdzLAorICAgICAgICB2ZWN0b3JJc29sYXRlZENvcHkoY29uZGl0aW9ucyks
CisgICAgICAgIGNvbmRpdGlvblR5cGUKKyAgICB9OworfQorCitBY3Rpb24gQWN0aW9uOjppc29s
YXRlZENvcHkoKSBjb25zdAoreworICAgIHJldHVybiB7CisgICAgICAgIG1fZXh0ZW5zaW9uSWRl
bnRpZmllci5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgbV90eXBlLAorICAgICAgICBtX2FjdGlv
bklELAorICAgICAgICBtX3N0cmluZ0FyZ3VtZW50Lmlzb2xhdGVkQ29weSgpCisgICAgfTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvblJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCShyZXZpc2lvbiAyMzQ4NTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw2ICs1NSw4IEBAIHN0cnVjdCBUcmlnZ2VyIHsKICAgICB9OwogICAgIENvbmRp
dGlvblR5cGUgY29uZGl0aW9uVHlwZSB7IENvbmRpdGlvblR5cGU6Ok5vbmUgfTsKIAorICAgIFdF
QkNPUkVfRVhQT1JUIFRyaWdnZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgCiAgICAgflRy
aWdnZXIoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbmRpdGlvbnMuaXNFbXB0eSgpID09IChj
b25kaXRpb25UeXBlID09IENvbmRpdGlvblR5cGU6Ok5vbmUpKTsKQEAgLTY2LDYgKzY4LDcgQEAg
c3RydWN0IFRyaWdnZXIgewogICAgIHsKICAgICAgICAgcmV0dXJuIHVybEZpbHRlci5pc0VtcHR5
KCkKICAgICAgICAgICAgICYmICF1cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUKKyAgICAgICAgICAg
ICYmICF0b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUKICAgICAgICAgICAgICYmICFmbGFn
cwogICAgICAgICAgICAgJiYgY29uZGl0aW9ucy5pc0VtcHR5KCkKICAgICAgICAgICAgICYmIGNv
bmRpdGlvblR5cGUgPT0gQ29uZGl0aW9uVHlwZTo6Tm9uZTsKQEAgLTc1LDYgKzc4LDcgQEAgc3Ry
dWN0IFRyaWdnZXIgewogICAgIHsKICAgICAgICAgcmV0dXJuIHVybEZpbHRlciA9PSBvdGhlci51
cmxGaWx0ZXIKICAgICAgICAgICAgICYmIHVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9PSBvdGhl
ci51cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUKKyAgICAgICAgICAgICYmIHRvcFVSTENvbmRpdGlv
bklzQ2FzZVNlbnNpdGl2ZSA9PSBvdGhlci50b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUK
ICAgICAgICAgICAgICYmIGZsYWdzID09IG90aGVyLmZsYWdzCiAgICAgICAgICAgICAmJiBjb25k
aXRpb25zID09IG90aGVyLmNvbmRpdGlvbnMKICAgICAgICAgICAgICYmIGNvbmRpdGlvblR5cGUg
PT0gb3RoZXIuY29uZGl0aW9uVHlwZTsKQEAgLTE2Myw3ICsxNjcsMTYgQEAgc3RydWN0IEFjdGlv
biB7CiAgICAgdWludDMyX3QgYWN0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbklEOyB9
CiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmdBcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nQXJndW1lbnQ7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIEFjdGlvbiBpc29sYXRlZENvcHko
KSBjb25zdDsKKyAgICAKIHByaXZhdGU6CisgICAgQWN0aW9uKFN0cmluZyYmIGV4dGVuc2lvbklk
ZW50aWZpZXIsIEFjdGlvblR5cGUgdHlwZSwgdWludDMyX3QgYWN0aW9uSUQsIFN0cmluZyYmIHN0
cmluZ0FyZ3VtZW50KQorICAgICAgICA6IG1fZXh0ZW5zaW9uSWRlbnRpZmllcihXVEZNb3ZlKGV4
dGVuc2lvbklkZW50aWZpZXIpKQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1f
YWN0aW9uSUQoYWN0aW9uSUQpCisgICAgICAgICwgbV9zdHJpbmdBcmd1bWVudChXVEZNb3ZlKHN0
cmluZ0FyZ3VtZW50KSkKKyAgICB7IH0KKwogICAgIFN0cmluZyBtX2V4dGVuc2lvbklkZW50aWZp
ZXI7CiAgICAgQWN0aW9uVHlwZSBtX3R5cGU7CiAgICAgdWludDMyX3QgbV9hY3Rpb25JRDsKQEAg
LTE3MiwxNiArMTg1LDM1IEBAIHByaXZhdGU6CiAgICAgCiBjbGFzcyBDb250ZW50RXh0ZW5zaW9u
UnVsZSB7CiBwdWJsaWM6Ci0gICAgQ29udGVudEV4dGVuc2lvblJ1bGUoVHJpZ2dlciYmLCBBY3Rp
b24mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGVudEV4dGVuc2lvblJ1bGUoVHJpZ2dlciYm
LCBBY3Rpb24mJik7CiAKICAgICBjb25zdCBUcmlnZ2VyJiB0cmlnZ2VyKCkgY29uc3QgeyByZXR1
cm4gbV90cmlnZ2VyOyB9CiAgICAgY29uc3QgQWN0aW9uJiBhY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2FjdGlvbjsgfQogCisgICAgQ29udGVudEV4dGVuc2lvblJ1bGUgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB7IG1fdHJpZ2dlci5pc29sYXRlZENvcHkoKSwg
bV9hY3Rpb24uaXNvbGF0ZWRDb3B5KCkgfTsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX3RyaWdnZXIgPT0gb3RoZXIubV90cmlnZ2VyICYmIG1fYWN0aW9uID09IG90aGVyLm1f
YWN0aW9uOworICAgIH0KKwogcHJpdmF0ZToKICAgICBUcmlnZ2VyIG1fdHJpZ2dlcjsKICAgICBB
Y3Rpb24gbV9hY3Rpb247CiB9OwogCisvLyBGSVhNRTogTW92ZSB0aGlzIHRvIFdURi4KK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBWZWN0b3I8VD4gdmVjdG9ySXNvbGF0ZWRDb3B5KGNvbnN0
IFZlY3RvcjxUPiBvcmlnaW5hbCkKK3sKKyAgICBWZWN0b3I8VD4gY29weTsKKyAgICBjb3B5LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2luYWwuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiBvcmlnaW5hbCkKKyAgICAgICAgY29weS51bmNoZWNrZWRBcHBlbmQoZWxl
bWVudC5pc29sYXRlZENvcHkoKSk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisgICAgCiB9IC8vIG5h
bWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjM0ODUxKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0wOC0xNCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIGlzVmFsaWRDU1NTZWxlY3Rv
ciBpcyB1bnNhZmUgdG8gYmUgY2FsbGVkIGZyb20gYSBub24tbWFpbiB0aHJlYWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU4MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDA1MTczNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcDoKKyAgICAgICAgKEFQSTo6Y29tcGlsZWRUb0ZpbGUpOgorICAgICAgICAoQVBJOjpDb250
ZW50UnVsZUxpc3RTdG9yZTo6bG9va3VwQ29udGVudFJ1bGVMaXN0KToKKyAgICAgICAgKEFQSTo6
Q29udGVudFJ1bGVMaXN0U3RvcmU6OmdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZp
ZXJzKToKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmNvbXBpbGVDb250ZW50
UnVsZUxpc3QpOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6cmVtb3ZlQ29u
dGVudFJ1bGVMaXN0KToKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmdldENv
bnRlbnRSdWxlTGlzdFNvdXJjZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50
UnVsZUxpc3RTdG9yZS5tbToKKwogMjAxOC0wOC0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gc2hvdWxkIHVz
ZSBPcHRpb25TZXQgZm9yIGNoYW5nZSBmbGFncwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCShyZXZpc2lv
biAyMzQ4NTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSwxMCBAQAogI2luY2x1ZGUg
IldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50
RXh0ZW5zaW9uQ29tcGlsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25F
cnJvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lvblBhcnNlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUXVhbGlmaWVkTmFtZS5oPgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUu
aD4KQEAgLTIwOSw3ICsyMTEsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZURhdGFUb0ZpbGUoY29uc3Qg
RGF0YSYgCiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKLXN0YXRpYyBzdGQ6OmVycm9yX2NvZGUg
Y29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRo
LCBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEsIERhdGEmIG1hcHBlZERhdGEpCitz
dGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIFZlY3Rv
cjxXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvblJ1bGU+JiYgcGFy
c2VkUnVsZXMsIGNvbnN0IFN0cmluZyYgZmluYWxGaWxlUGF0aCwgQ29udGVudFJ1bGVMaXN0TWV0
YURhdGEmIG1ldGFEYXRhLCBEYXRhJiBtYXBwZWREYXRhKQogewogICAgIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczsKIApAQCAtMjI3LDcgKzIyOSw4IEBAIHN0YXRp
YyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3QKICAgICAgICAgICAgIEFTU0VSVCgh
bWV0YURhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluKTsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgdm9pZCB3cml0ZVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUpTT04pIGZp
bmFsIHsKKyAgICAgICAgdm9pZCB3cml0ZVNvdXJjZShTdHJpbmcmJiBzb3VyY2VKU09OKSBmaW5h
bAorICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fZmlsdGVyc1dpdGhvdXRDb25kaXRp
b25zQnl0ZWNvZGVXcml0dGVuKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aENv
bmRpdGlvbkJ5dGVjb2RlV3JpdHRlbik7CiAgICAgICAgICAgICBBU1NFUlQoIW1fY29uZGl0aW9u
RmlsdGVyc0J5dGVjb2RlV3JpdHRlbik7CkBAIC0zMzksNyArMzQyLDcgQEAgc3RhdGljIHN0ZDo6
ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdAogCiAgICAgQ29tcGlsYXRpb25DbGllbnQgY29t
cGlsYXRpb25DbGllbnQodGVtcG9yYXJ5RmlsZUhhbmRsZSwgbWV0YURhdGEpOwogICAgIAotICAg
IGlmIChhdXRvIGNvbXBpbGVyRXJyb3IgPSBjb21waWxlUnVsZUxpc3QoY29tcGlsYXRpb25DbGll
bnQsIFdURk1vdmUoanNvbikpKSB7CisgICAgaWYgKGF1dG8gY29tcGlsZXJFcnJvciA9IGNvbXBp
bGVSdWxlTGlzdChjb21waWxhdGlvbkNsaWVudCwgV1RGTW92ZShqc29uKSwgV1RGTW92ZShwYXJz
ZWRSdWxlcykpKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudCBSdWxlIExpc3QgY29t
cGlsaW5nIGZhaWxlZDogQ29tcGlsaW5nIGZhaWxlZC4iKTsKICAgICAgICAgY2xvc2VGaWxlKHRl
bXBvcmFyeUZpbGVIYW5kbGUpOwogICAgICAgICByZXR1cm4gY29tcGlsZXJFcnJvcjsKQEAgLTM5
MSw3ICszOTQsNyBAQCBzdGF0aWMgUmVmPEFQSTo6Q29udGVudFJ1bGVMaXN0PiBjcmVhdGVFCiAg
ICAgcmV0dXJuIEFQSTo6Q29udGVudFJ1bGVMaXN0OjpjcmVhdGUoaWRlbnRpZmllciwgV1RGTW92
ZShjb21waWxlZENvbnRlbnRSdWxlTGlzdCkpOwogfQogCi12b2lkIENvbnRlbnRSdWxlTGlzdFN0
b3JlOjpsb29rdXBDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIs
IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9j
b2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpsb29r
dXBDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9j
b2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9yZWFkUXVldWUtPmRpc3BhdGNoKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlz
b2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgbGVn
YWN5RmlsZW5hbWUgPSBtX2xlZ2FjeUZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHBhdGggPSBj
b25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBsZWdhY3lGaWxlbmFtZSk7CkBA
IC0zOTksMjYgKzQwMiwyNiBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250
ZW50CiAgICAgICAgIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhIG1ldGFEYXRhOwogICAgICAgICBE
YXRhIGZpbGVEYXRhOwogICAgICAgICBpZiAoIW9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QocGF0
aCwgbWV0YURhdGEsIGZpbGVEYXRhKSkgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgRXJy
b3I6Okxvb2t1cEZhaWxlZCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1ldGFEYXRhLnZlcnNpb24gIT0gQ29u
dGVudFJ1bGVMaXN0U3RvcmU6OkN1cnJlbnRDb250ZW50UnVsZUxpc3RGaWxlVmVyc2lvbikgewot
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0geworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgRXJyb3I6OlZlcnNpb25NaXNtYXRjaCk7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGZp
bGVEYXRhID0gV1RGTW92ZShmaWxlRGF0YSksIG1ldGFEYXRhID0gV1RGTW92ZShtZXRhRGF0YSks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGZpbGVE
YXRhID0gV1RGTW92ZShmaWxlRGF0YSksIG1ldGFEYXRhID0gV1RGTW92ZShtZXRhRGF0YSksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUg
ewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY3JlYXRlRXh0ZW5zaW9uKGlkZW50aWZp
ZXIsIG1ldGFEYXRhLCBmaWxlRGF0YSksIHsgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQog
Ci12b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpnZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJ
ZGVudGlmaWVycyhGdW5jdGlvbjx2b2lkKFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPik+IGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0QXZhaWxhYmxlQ29u
dGVudFJ1bGVMaXN0SWRlbnRpZmllcnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6OlZlY3Rv
cjxXVEY6OlN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3JlYWRRdWV1ZS0+
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3RvcmVQYXRoID0gbV9z
dG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGxlZ2FjeUZpbGVuYW1lID0gbV9sZWdhY3lGaWxlbmFt
ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKIApAQCAtNDM1LDQzICs0MzgsNDggQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6
Z2V0QXZhaWxhYmxlQwogICAgIH0pOwogfQogCi12b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpj
b21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6
OlN0cmluZyYmIGpzb24sIEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0
Piwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENvbnRlbnRSdWxl
TGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVu
dGlmaWVyLCBXVEY6OlN0cmluZyYmIGpzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQXRvbWljU3RyaW5nOjppbml0KCk7CiAgICAgV2ViQ29yZTo6UXVhbGlmaWVk
TmFtZTo6aW5pdCgpOwotICAgIG1fY29tcGlsZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHko
KSwgbGVnYWN5RmlsZW5hbWUgPSBtX2xlZ2FjeUZpbGVuYW1lLCBqc29uID0ganNvbi5pc29sYXRl
ZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAg
IAorICAgIGF1dG8gcGFyc2VkUnVsZXMgPSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6cGFy
c2VSdWxlTGlzdChqc29uKTsKKyAgICBpZiAoIXBhcnNlZFJ1bGVzLmhhc192YWx1ZSgpKQorICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgcGFyc2VkUnVsZXMuZXJyb3Io
KSk7CisgICAgCisgICAgbV9jb21waWxlUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBs
ZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGpzb24gPSBqc29uLmlzb2xhdGVkQ29w
eSgpLCBwYXJzZWRSdWxlcyA9IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjp2ZWN0b3JJc29s
YXRlZENvcHkocGFyc2VkUnVsZXMudmFsdWUoKSksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlz
b2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0
b3JlUGF0aCwgaWRlbnRpZmllciwgbGVnYWN5RmlsZW5hbWUpOwogCiAgICAgICAgIENvbnRlbnRS
dWxlTGlzdE1ldGFEYXRhIG1ldGFEYXRhOwogICAgICAgICBEYXRhIGZpbGVEYXRhOwotICAgICAg
ICBhdXRvIGVycm9yID0gY29tcGlsZWRUb0ZpbGUoV1RGTW92ZShqc29uKSwgcGF0aCwgbWV0YURh
dGEsIGZpbGVEYXRhKTsKKyAgICAgICAgYXV0byBlcnJvciA9IGNvbXBpbGVkVG9GaWxlKFdURk1v
dmUoanNvbiksIFdURk1vdmUocGFyc2VkUnVsZXMpLCBwYXRoLCBtZXRhRGF0YSwgZmlsZURhdGEp
OwogICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGVycm9yID0gV1RG
TW92ZShlcnJvciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGVycm9yID0gV1RGTW92ZShlcnJvciksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIGVycm9yKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllciksIGZpbGVEYXRhID0gV1RGTW92
ZShmaWxlRGF0YSksIG1ldGFEYXRhID0gV1RGTW92ZShtZXRhRGF0YSksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgaWRl
bnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllciksIGZpbGVEYXRhID0gV1RGTW92ZShmaWxlRGF0
YSksIG1ldGFEYXRhID0gV1RGTW92ZShtZXRhRGF0YSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgUmVmUHRy
PEFQSTo6Q29udGVudFJ1bGVMaXN0PiBjb250ZW50UnVsZUxpc3QgPSBjcmVhdGVFeHRlbnNpb24o
aWRlbnRpZmllciwgbWV0YURhdGEsIGZpbGVEYXRhKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRlbnRSdWxlTGlzdCwgeyB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAK
LXZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBX
VEY6OlN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChzdGQ6OmVycm9yX2NvZGUpPiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRl
bnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3Jl
bW92ZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVu
dGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBh
dGguaXNvbGF0ZWRDb3B5KCksIGxlZ2FjeUZpbGVuYW1lID0gbV9sZWdhY3lGaWxlbmFtZSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmll
ciwgbGVnYWN5RmlsZW5hbWUpOwogCiAgICAgICAgIGlmICghZGVsZXRlRmlsZShwYXRoKSkgewot
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0geworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoRXJyb3I6OlJlbW92ZUZhaWxlZCk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICB9
KTsKICAgICB9KTsKQEAgLTQ5NCwxMyArNTAyLDEzIEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3Rv
cmU6OmludmFsaWRhdGVDb24KICAgICBjbG9zZUZpbGUoZmlsZSk7CiB9CiAKLXZvaWQgQ29udGVu
dFJ1bGVMaXN0U3RvcmU6OmdldENvbnRlbnRSdWxlTGlzdFNvdXJjZShjb25zdCBXVEY6OlN0cmlu
ZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChXVEY6OlN0cmluZyk+IGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNl
KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdU
Rjo6U3RyaW5nKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9yZWFkUXVldWUtPmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlm
aWVyLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHko
KSwgbGVnYWN5RmlsZW5hbWUgPSBtX2xlZ2FjeUZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHBh
dGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBsZWdhY3lGaWxlbmFt
ZSk7CiAgICAgICAgIAogICAgICAgICBhdXRvIGNvbXBsZXRlID0gW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShTdHJpbmcgc291cmNlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNvdXJj
ZSA9IHNvdXJjZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc291cmNlID0gc291cmNl
Lmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzb3VyY2UpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuaAkocmV2aXNpb24gMjM0ODUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDE1ICs2MiwxNSBA
QCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29udGVudFJ1bGVMaXN0U3RvcmUoY29uc3QgV1RGOjpT
dHJpbmcmIHN0b3JlUGF0aCwgYm9vbCBsZWdhY3lGaWxlbmFtZSk7CiAgICAgdmlydHVhbCB+Q29u
dGVudFJ1bGVMaXN0U3RvcmUoKTsKIAotICAgIHZvaWQgY29tcGlsZUNvbnRlbnRSdWxlTGlzdChj
b25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV1RGOjpTdHJpbmcmJiBqc29uLCBGdW5jdGlv
bjx2b2lkKFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsK
LSAgICB2b2lkIGxvb2t1cENvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRp
ZmllciwgRnVuY3Rpb248dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVy
cm9yX2NvZGUpPik7Ci0gICAgdm9pZCByZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpT
dHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoc3RkOjplcnJvcl9jb2RlKT4pOwotICAg
IHZvaWQgZ2V0QXZhaWxhYmxlQ29udGVudFJ1bGVMaXN0SWRlbnRpZmllcnMoRnVuY3Rpb248dm9p
ZChXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4pPik7CisgICAgdm9pZCBjb21waWxlQ29udGVudFJ1
bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6OlN0cmluZyYmIGpzb24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3Rk
OjplcnJvcl9jb2RlKT4pOworICAgIHZvaWQgbG9va3VwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6
OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsKKyAgICB2b2lkIHJlbW92ZUNv
bnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6OmVycm9yX2NvZGUpPik7CisgICAgdm9pZCBnZXRBdmFpbGFibGVDb250
ZW50UnVsZUxpc3RJZGVudGlmaWVycyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nPik+KTsKIAogICAgIC8vIEZvciB0ZXN0aW5nIG9ubHkuCiAgICAgdm9pZCBz
eW5jaHJvbm91c1JlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKTsKICAgICB2b2lkIGludmFsaWRh
dGVDb250ZW50UnVsZUxpc3RWZXJzaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKTsK
LSAgICB2b2lkIGdldENvbnRlbnRSdWxlTGlzdFNvdXJjZShjb25zdCBXVEY6OlN0cmluZyYgaWRl
bnRpZmllciwgRnVuY3Rpb248dm9pZChXVEY6OlN0cmluZyk+KTsKKyAgICB2b2lkIGdldENvbnRl
bnRSdWxlTGlzdFNvdXJjZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXVEY6OlN0cmluZyk+KTsKIAogcHJpdmF0ZToKICAgICBXVEY6OlN0cmlu
ZyBkZWZhdWx0U3RvcmVQYXRoKGJvb2wgbGVnYWN5RmlsZW5hbWUpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVM
aXN0U3RvcmUubW0JKHJldmlzaW9uIDIzNDg1MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw3IEBACiAjaW1wb3J0ICJBUElDb250ZW50UnVsZUxpc3RTdG9yZS5oIgogI2ltcG9y
dCAiV0tFcnJvckludGVybmFsLmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBzdGF0aWMgV0tFcnJvckNvZGUgdG9XS0Vycm9y
Q29kZShjb25zdCBzdGQ6OmVycm9yX2NvZGUmIGVycm9yKQogewpJbmRleDogVG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjM0ODYyKQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDgt
MTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBpc1ZhbGlkQ1NTU2VsZWN0b3IgaXMgdW5zYWZlIHRvIGJlIGNhbGxlZCBmcm9tIGEgbm9uLW1h
aW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODg1ODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwNTE3MzU4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Y2hlY2tDb21waWxlckVycm9yKToKKwogMjAxOC0wOC0xNCAgQWFrYXNoIEph
aW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2V3cy1idWlsZF0gQWRkIGJ1
aWxkIHN0ZXAgdG8gcnVuIFdLMSBsYXlvdXQtdGVzdApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCShyZXZp
c2lvbiAyMzQ4NTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVu
dEV4dGVuc2lvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHdyaXRlU291cmNlKGNvbnN0IFN0cmluZyYp
IGZpbmFsIHsgfQorICAgIHZvaWQgd3JpdGVTb3VyY2UoU3RyaW5nJiYpIGZpbmFsIHsgfQogCiAg
ICAgdm9pZCB3cml0ZUFjdGlvbnMoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVk
QWN0aW9uQnl0ZT4mJiBhY3Rpb25zLCBib29sIGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbikg
ZmluYWwKICAgICB7CkBAIC0xNTAsNyArMTUwLDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YSBleHRlbnNpb25EYXRhOwogICAgICAgICBJbk1l
bW9yeUNvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCBjbGllbnQoZXh0ZW5zaW9uRGF0
YSk7Ci0gICAgICAgIGF1dG8gY29tcGlsZXJFcnJvciA9IENvbnRlbnRFeHRlbnNpb25zOjpjb21w
aWxlUnVsZUxpc3QoY2xpZW50LCBXVEZNb3ZlKGZpbHRlcikpOworICAgICAgICBhdXRvIHBhcnNl
ZFJ1bGVzID0gQ29udGVudEV4dGVuc2lvbnM6OnBhcnNlUnVsZUxpc3QoZmlsdGVyKTsKKyAgICAg
ICAgYXV0byBjb21waWxlckVycm9yID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlz
dChjbGllbnQsIFdURk1vdmUoZmlsdGVyKSwgV1RGTW92ZShwYXJzZWRSdWxlcy52YWx1ZSgpKSk7
CiAKICAgICAgICAgLy8gQ29tcGlsaW5nIHNob3VsZCBhbHdheXMgc3VjY2VlZCBoZXJlLiBXZSBo
YXZlIG90aGVyIHRlc3RzIGZvciBjb21waWxlIGZhaWx1cmVzLgogICAgICAgICBFWFBFQ1RfRkFM
U0UoY29tcGlsZXJFcnJvcik7CkBAIC0xMzcxLDcgKzEzNzIsMTIgQEAgdm9pZCBjaGVja0NvbXBp
bGVyRXJyb3IoY29uc3QgY2hhcioganNvbgogewogICAgIENvbXBpbGVkQ29udGVudEV4dGVuc2lv
bkRhdGEgZXh0ZW5zaW9uRGF0YTsKICAgICBJbk1lbW9yeUNvbnRlbnRFeHRlbnNpb25Db21waWxh
dGlvbkNsaWVudCBjbGllbnQoZXh0ZW5zaW9uRGF0YSk7Ci0gICAgc3RkOjplcnJvcl9jb2RlIGNv
bXBpbGVyRXJyb3IgPSBDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KGNsaWVudCwg
anNvbik7CisgICAgYXV0byBwYXJzZWRSdWxlcyA9IENvbnRlbnRFeHRlbnNpb25zOjpwYXJzZVJ1
bGVMaXN0KGpzb24pOworICAgIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlckVycm9yOworICAgIGlm
IChwYXJzZWRSdWxlcy5oYXNfdmFsdWUoKSkKKyAgICAgICAgY29tcGlsZXJFcnJvciA9IENvbnRl
bnRFeHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3QoY2xpZW50LCBqc29uLCBXVEZNb3ZlKHBhcnNl
ZFJ1bGVzLnZhbHVlKCkpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBpbGVyRXJyb3IgPSBwYXJz
ZWRSdWxlcy5lcnJvcigpOwogICAgIEVYUEVDVF9FUShjb21waWxlckVycm9yLnZhbHVlKCksIGV4
cGVjdGVkRXJyb3IudmFsdWUoKSk7CiAgICAgaWYgKGNvbXBpbGVyRXJyb3IudmFsdWUoKSkKICAg
ICAgICAgRVhQRUNUX1NUUkVRKGNvbXBpbGVyRXJyb3IuY2F0ZWdvcnkoKS5uYW1lKCksIGV4cGVj
dGVkRXJyb3IuY2F0ZWdvcnkoKS5uYW1lKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347121</attachid>
            <date>2018-08-14 15:58:35 -0700</date>
            <delta_ts>2018-08-14 16:13:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188581-20180814155834.patch</filename>
            <type>text/plain</type>
            <size>28608</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ4NjMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE4LTA4LTE0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgaXNWYWxpZENTU1NlbGVjdG9yIGlz
IHVuc2FmZSB0byBiZSBjYWxsZWQgZnJvbSBhIG5vbi1tYWluIHRocmVhZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTgxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80MDUxNzM1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgor
CisgICAgICAgICogd3RmL1ZlY3Rvci5oOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46Omlz
b2xhdGVkQ29weSk6CisKIDIwMTgtMDgtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgYSBWYXJpYW50IGluc3RlYWQgb2YgYSB1bmlv
biBpbiBDU1NTZWxlY3RvcgpJbmRleDogU291cmNlL1dURi93dGYvVmVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvVmVjdG9yLmgJKHJldmlzaW9uIDIzNDg1MSkKKysrIFNvdXJj
ZS9XVEYvd3RmL1ZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NjYsNiArNzY2LDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjbGVhcigpIHsgc2hyaW5rQ2FwYWNpdHkoMCk7IH0KIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBWZWN0b3I8VT4gaXNvbGF0ZWRDb3B5KCk7CisKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kKFZhbHVlVHlwZSYmIHZhbHVlKSB7IGFwcGVuZDxWYWx1
ZVR5cGU+KHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+KHZhbHVlKSk7IH0KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiB2b2lkIGFwcGVuZChVJiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFy
Z3M+IHZvaWQgY29uc3RydWN0QW5kQXBwZW5kKEFyZ3MmJi4uLik7CkBAIC0xNjA0LDYgKzE2MDYs
MTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZhbHVlQ2hlY2s8VgogfTsKICNlbmRp
ZgogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgordGVtcGxhdGU8dHlwZW5hbWUg
VT4KK2lubGluZSBWZWN0b3I8VT4gVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5Pjo6aXNvbGF0ZWRDb3B5KCkKK3sKKyAgICBWZWN0b3I8VT4gY29w
eTsKKyAgICBjb3B5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSgpKTsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiAqdGhpcykKKyAgICAgICAgY29weS51bmNoZWNrZWRBcHBlbmQo
ZWxlbWVudC5pc29sYXRlZENvcHkoKSk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisgICAgCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlLCB0eXBlbmFtZSBGdW5jPgogc2l6ZV90IHJlbW92ZVJl
cGVhdGVkRWxlbWVudHMoVmVjdG9yVHlwZSYgdmVjdG9yLCBjb25zdCBGdW5jJiBmdW5jKQogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM0ODU4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTgtMDgtMTQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBpc1ZhbGlkQ1NT
U2VsZWN0b3IgaXMgdW5zYWZlIHRvIGJlIGNhbGxlZCBmcm9tIGEgbm9uLW1haW4gdGhyZWFkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg1ODEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwNTE3MzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCisKKyAgICAgICAgUGFyc2luZyBhbmQgZGV0ZXJtaW5pbmcgd2hldGhlciB0aGUg
Y3NzIHNlbGVjdG9ycyBhcmUgdmFsaWQgaXMgZmFzdCBlbm91Z2ggdG8gZG8gYmVmb3JlCisgICAg
ICAgIGhvcHBpbmcgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkIGZvciB0aGUgc2xvdyBORkEvREZB
IG9wZXJhdGlvbnMgYW5kIHdyaXRpbmcgdG8gZGlzay4KKyAgICAgICAgRG9pbmcgaXQgb24gdGhl
IG1haW4gdGhyZWFkIGF2b2lkcyB0aGUgdGhyZWFkIHNhZmV0eSBpc3N1ZXMgaW4gdGhlIENTU1Bh
cnNlcidzIHVzZSBvZiBzdHJpbmdzLgorCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpjb21waWxlUnVsZUxpc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25Db21waWxlci5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OmlzVmFsaWRDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6bG9hZEVuY29kZWRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6cGFyc2VSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvblBhcnNlci5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25SdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpUcmlnZ2VyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiBjb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlRyaWdnZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRyaWdnZXI6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbjo6QWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uUnVsZTo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b250ZW50RXh0ZW5zaW9uUnVsZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6dmVjdG9ySXNvbGF0ZWRDb3B5KToKKwogMjAxOC0wOC0xNCAg
WXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgogCiAgICAgICAgIFVu
aGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbiBsb2dnaW5nIGluIHdvcmtlcnMgc2hvdWxkIG5vdCBl
bWl0IEVycm9yRXZlbnQgdG8gaG9zdCBXb3JrZXIgb2JqZWN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25D
b21waWxlci5jcHAJKHJldmlzaW9uIDIzNDg1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4MywxMiArMjgzLDEzIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVUb0J5dGVjb2RlKENvbWJpbmVk
VVIKICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyh1bml2ZXJzYWxBY3Rpb25zLCB1bml2ZXJzYWxB
Y3Rpb25zLmNhcGFjaXR5KCkgKiBzaXplb2YodW5zaWduZWQpKTsKIH0KIAotc3RkOjplcnJvcl9j
b2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQmIGNs
aWVudCwgU3RyaW5nJiYgcnVsZUpTT04pCitzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0
KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiBydWxl
SlNPTiwgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYmIHBhcnNlZFJ1bGVMaXN0KQogewot
ICAgIGF1dG8gcnVsZUxpc3QgPSBwYXJzZVJ1bGVMaXN0KFdURk1vdmUocnVsZUpTT04pKTsKLSAg
ICBpZiAoIXJ1bGVMaXN0Lmhhc192YWx1ZSgpKQotICAgICAgICByZXR1cm4gcnVsZUxpc3QuZXJy
b3IoKTsKLSAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+IHBhcnNlZFJ1bGVMaXN0ID0g
V1RGTW92ZShydWxlTGlzdC52YWx1ZSgpKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgY2Fs
bE9uTWFpblRocmVhZChbcnVsZUpTT04gPSBydWxlSlNPTi5pc29sYXRlZENvcHkoKSwgcGFyc2Vk
UnVsZUxpc3QgPSBwYXJzZWRSdWxlTGlzdC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBBU1NF
UlQocGFyc2VSdWxlTGlzdChydWxlSlNPTikgPT0gcGFyc2VkUnVsZUxpc3QpOworICAgIH0pOwor
I2VuZGlmCiAKICAgICBib29sIGRvbWFpbkNvbmRpdGlvblNlZW4gPSBmYWxzZTsKICAgICBib29s
IHRvcFVSTENvbmRpdGlvblNlZW4gPSBmYWxzZTsKQEAgLTMxMyw3ICszMTQsNyBAQCBzdGQ6OmVy
cm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFCiAgICAgTW9ub3RvbmljVGltZSBwYXR0
ZXJuUGFydGl0aW9uaW5nU3RhcnQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICNlbmRpZgogICAg
IAotICAgIGNsaWVudC53cml0ZVNvdXJjZShydWxlSlNPTik7CisgICAgY2xpZW50LndyaXRlU291
cmNlKHN0ZDo6ZXhjaGFuZ2UocnVsZUpTT04sIFN0cmluZygpKSk7CiAKICAgICBWZWN0b3I8U2Vy
aWFsaXplZEFjdGlvbkJ5dGU+IGFjdGlvbnM7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBhY3Rpb25M
b2NhdGlvbnMgPSBzZXJpYWxpemVBY3Rpb25zKHBhcnNlZFJ1bGVMaXN0LCBhY3Rpb25zKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21w
aWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25Db21waWxlci5oCShyZXZpc2lvbiAyMzQ4NTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29udGVudEV4
dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50KCkgPSBkZWZhdWx0OwogICAgIAogICAgIC8vIEZ1bmN0
aW9ucyBzaG91bGQgYmUgY2FsbGVkIGluIHRoaXMgb3JkZXIuIEFsbCBleGNlcHQgd3JpdGVBY3Rp
b25zIGFuZCBmaW5hbGl6ZSBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCB0aG91Z2guCi0g
ICAgdmlydHVhbCB2b2lkIHdyaXRlU291cmNlKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgd3JpdGVTb3VyY2UoU3RyaW5nJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVBY3Rpb25zKFZlY3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4mJiwgYm9vbCBjb25kaXRpb25z
QXBwbHlPbmx5VG9Eb21haW4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVGaWx0ZXJzV2l0
aG91dENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZB
Qnl0ZWNvZGU+JiYpID0gMDsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBmaW5hbGl6ZSgpID0gMDsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6ZXJyb3JfY29k
ZSBjb21waWxlUnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiwgU3Ry
aW5nJiYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChD
b250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQmLCBTdHJpbmcmJiBydWxlSlNPTiwgVmVj
dG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYmKTsKIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4
dGVuc2lvbnMKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIu
Y3BwCShyZXZpc2lvbiAyMzQ4NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMwLDYgKzIz
MCw3IEBAIHN0YXRpYyBFeHBlY3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGUKIAogYm9vbCBp
c1ZhbGlkQ1NTU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcikKIHsKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIEF0b21pY1N0cmluZzo6aW5pdCgpOwogICAgIFF1YWxpZmll
ZE5hbWU6OmluaXQoKTsKICAgICBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQoSFRNTFF1aXJrc01v
ZGUpOwpAQCAtMjk5LDcgKzMwMCw3IEBAIHN0YXRpYyBFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPENv
bnRlbnRFeHQKICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQgfTsKIH0KIAotc3RhdGljIEV4cGVj
dGVkPFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZEVu
Y29kZWRSdWxlcyhFeGVjU3RhdGUmIGV4ZWMsIFN0cmluZyYmIHJ1bGVKU09OKQorc3RhdGljIEV4
cGVjdGVkPFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9h
ZEVuY29kZWRSdWxlcyhFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IFN0cmluZyYgcnVsZUpTT04pCiB7
CiAgICAgVk0mIHZtID0gZXhlYy52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTM0Nyw3ICszNDgsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VmVjdG9yPENv
bnRlbnRFeHRlbnNpb25SCiAgICAgcmV0dXJuIFdURk1vdmUocnVsZUxpc3QpOwogfQogCi1FeHBl
Y3RlZDxWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNl
UnVsZUxpc3QoU3RyaW5nJiYgcnVsZUpTT04pCitFeHBlY3RlZDxWZWN0b3I8Q29udGVudEV4dGVu
c2lvblJ1bGU+LCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlUnVsZUxpc3QoY29uc3QgU3RyaW5nJiBy
dWxlSlNPTikKIHsKICNpZiBDT05URU5UX0VYVEVOU0lPTlNfUEVSRk9STUFOQ0VfUkVQT1JUSU5H
CiAgICAgTW9ub3RvbmljVGltZSBsb2FkRXh0ZW5zaW9uU3RhcnRUaW1lID0gTW9ub3RvbmljVGlt
ZTo6bm93KCk7CkBAIC0zNTgsNyArMzU5LDcgQEAgRXhwZWN0ZWQ8VmVjdG9yPENvbnRlbnRFeHRl
bnNpb25SdWxlPiwgcwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0dsb2Jh
bE9iamVjdDo6Y3JlYXRlKCp2bSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0s
IGpzTnVsbCgpKSk7CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKTsKLSAgICBhdXRvIHJ1bGVMaXN0ID0gbG9hZEVuY29kZWRSdWxlcygqZXhlYywgV1RG
TW92ZShydWxlSlNPTikpOworICAgIGF1dG8gcnVsZUxpc3QgPSBsb2FkRW5jb2RlZFJ1bGVzKCpl
eGVjLCBydWxlSlNPTik7CiAKICAgICB2bSA9IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFy
c2VyLmgJKHJldmlzaW9uIDIzNDg1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgewogCiBjbGFzcyBDb250ZW50RXh0ZW5z
aW9uUnVsZTsKIAotRXhwZWN0ZWQ8VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiwgc3RkOjpl
cnJvcl9jb2RlPiBwYXJzZVJ1bGVMaXN0KFN0cmluZyYmKTsKK1dFQkNPUkVfRVhQT1JUIEV4cGVj
dGVkPFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4sIHN0ZDo6ZXJyb3JfY29kZT4gcGFyc2VS
dWxlTGlzdChjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNWYWxpZENTU1Nl
bGVjdG9yKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9u
cwpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcAkocmV2aXNpb24gMjM0ODUxKQorKysgU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTMsNiArMTEzLDI4IEBAIHVpbnQzMl90IEFjdGlvbjo6c2VyaWFsaXplZExl
bmd0aChjb25zdCAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitUcmln
Z2VyIFRyaWdnZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAgICAg
ICAgdXJsRmlsdGVyLmlzb2xhdGVkQ29weSgpLAorICAgICAgICB1cmxGaWx0ZXJJc0Nhc2VTZW5z
aXRpdmUsCisgICAgICAgIHRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSwKKyAgICAgICAg
ZmxhZ3MsCisgICAgICAgIGNvbmRpdGlvbnMuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIGNvbmRp
dGlvblR5cGUKKyAgICB9OworfQorCitBY3Rpb24gQWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25z
dAoreworICAgIHJldHVybiB7CisgICAgICAgIG1fZXh0ZW5zaW9uSWRlbnRpZmllci5pc29sYXRl
ZENvcHkoKSwKKyAgICAgICAgbV90eXBlLAorICAgICAgICBtX2FjdGlvbklELAorICAgICAgICBt
X3N0cmluZ0FyZ3VtZW50Lmlzb2xhdGVkQ29weSgpCisgICAgfTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgQ29udGVudEV4dGVuc2lvbnMKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uUnVsZS5oCShyZXZpc2lvbiAyMzQ4NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1
NSw4IEBAIHN0cnVjdCBUcmlnZ2VyIHsKICAgICB9OwogICAgIENvbmRpdGlvblR5cGUgY29uZGl0
aW9uVHlwZSB7IENvbmRpdGlvblR5cGU6Ok5vbmUgfTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIFRy
aWdnZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgCiAgICAgflRyaWdnZXIoKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbmRpdGlvbnMuaXNFbXB0eSgpID09IChjb25kaXRpb25UeXBlID09
IENvbmRpdGlvblR5cGU6Ok5vbmUpKTsKQEAgLTY2LDYgKzY4LDcgQEAgc3RydWN0IFRyaWdnZXIg
ewogICAgIHsKICAgICAgICAgcmV0dXJuIHVybEZpbHRlci5pc0VtcHR5KCkKICAgICAgICAgICAg
ICYmICF1cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUKKyAgICAgICAgICAgICYmICF0b3BVUkxDb25k
aXRpb25Jc0Nhc2VTZW5zaXRpdmUKICAgICAgICAgICAgICYmICFmbGFncwogICAgICAgICAgICAg
JiYgY29uZGl0aW9ucy5pc0VtcHR5KCkKICAgICAgICAgICAgICYmIGNvbmRpdGlvblR5cGUgPT0g
Q29uZGl0aW9uVHlwZTo6Tm9uZTsKQEAgLTc1LDYgKzc4LDcgQEAgc3RydWN0IFRyaWdnZXIgewog
ICAgIHsKICAgICAgICAgcmV0dXJuIHVybEZpbHRlciA9PSBvdGhlci51cmxGaWx0ZXIKICAgICAg
ICAgICAgICYmIHVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9PSBvdGhlci51cmxGaWx0ZXJJc0Nh
c2VTZW5zaXRpdmUKKyAgICAgICAgICAgICYmIHRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2
ZSA9PSBvdGhlci50b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUKICAgICAgICAgICAgICYm
IGZsYWdzID09IG90aGVyLmZsYWdzCiAgICAgICAgICAgICAmJiBjb25kaXRpb25zID09IG90aGVy
LmNvbmRpdGlvbnMKICAgICAgICAgICAgICYmIGNvbmRpdGlvblR5cGUgPT0gb3RoZXIuY29uZGl0
aW9uVHlwZTsKQEAgLTE2Myw3ICsxNjcsMTYgQEAgc3RydWN0IEFjdGlvbiB7CiAgICAgdWludDMy
X3QgYWN0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbklEOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBzdHJpbmdBcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nQXJndW1lbnQ7IH0K
IAorICAgIFdFQkNPUkVfRVhQT1JUIEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAK
IHByaXZhdGU6CisgICAgQWN0aW9uKFN0cmluZyYmIGV4dGVuc2lvbklkZW50aWZpZXIsIEFjdGlv
blR5cGUgdHlwZSwgdWludDMyX3QgYWN0aW9uSUQsIFN0cmluZyYmIHN0cmluZ0FyZ3VtZW50KQor
ICAgICAgICA6IG1fZXh0ZW5zaW9uSWRlbnRpZmllcihXVEZNb3ZlKGV4dGVuc2lvbklkZW50aWZp
ZXIpKQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fYWN0aW9uSUQoYWN0aW9u
SUQpCisgICAgICAgICwgbV9zdHJpbmdBcmd1bWVudChXVEZNb3ZlKHN0cmluZ0FyZ3VtZW50KSkK
KyAgICB7IH0KKwogICAgIFN0cmluZyBtX2V4dGVuc2lvbklkZW50aWZpZXI7CiAgICAgQWN0aW9u
VHlwZSBtX3R5cGU7CiAgICAgdWludDMyX3QgbV9hY3Rpb25JRDsKQEAgLTE3MiwxMSArMTg1LDIw
IEBAIHByaXZhdGU6CiAgICAgCiBjbGFzcyBDb250ZW50RXh0ZW5zaW9uUnVsZSB7CiBwdWJsaWM6
Ci0gICAgQ29udGVudEV4dGVuc2lvblJ1bGUoVHJpZ2dlciYmLCBBY3Rpb24mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgQ29udGVudEV4dGVuc2lvblJ1bGUoVHJpZ2dlciYmLCBBY3Rpb24mJik7CiAK
ICAgICBjb25zdCBUcmlnZ2VyJiB0cmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmlnZ2VyOyB9
CiAgICAgY29uc3QgQWN0aW9uJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQog
CisgICAgQ29udGVudEV4dGVuc2lvblJ1bGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiB7IG1fdHJpZ2dlci5pc29sYXRlZENvcHkoKSwgbV9hY3Rpb24uaXNvbGF0
ZWRDb3B5KCkgfTsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbnRlbnRFeHRl
bnNpb25SdWxlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3RyaWdnZXIg
PT0gb3RoZXIubV90cmlnZ2VyICYmIG1fYWN0aW9uID09IG90aGVyLm1fYWN0aW9uOworICAgIH0K
KwogcHJpdmF0ZToKICAgICBUcmlnZ2VyIG1fdHJpZ2dlcjsKICAgICBBY3Rpb24gbV9hY3Rpb247
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM0ODUxKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0wOC0xNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIGlzVmFsaWRDU1NT
ZWxlY3RvciBpcyB1bnNhZmUgdG8gYmUgY2FsbGVkIGZyb20gYSBub24tbWFpbiB0aHJlYWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU4MQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDA1MTczNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
IFdlaW5pZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwOgorICAgICAgICAoQVBJOjpjb21waWxlZFRvRmlsZSk6CisgICAgICAgIChBUEk6OkNv
bnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoQVBJ
OjpDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0QXZhaWxhYmxlQ29udGVudFJ1bGVMaXN0SWRlbnRp
ZmllcnMpOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRl
bnRSdWxlTGlzdCk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpyZW1vdmVD
b250ZW50UnVsZUxpc3QpOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0
Q29udGVudFJ1bGVMaXN0U291cmNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRl
bnRSdWxlTGlzdFN0b3JlLm1tOgorCiAyMDE4LTA4LTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiBzaG91bGQg
dXNlIE9wdGlvblNldCBmb3IgY2hhbmdlIGZsYWdzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAJKHJldmlz
aW9uIDIzNDg1MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDEwIEBACiAjaW5jbHVk
ZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
bnRFeHRlbnNpb25Db21waWxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lv
bkVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9RdWFsaWZpZWROYW1lLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1
ZS5oPgpAQCAtMjA5LDcgKzIxMSw3IEBAIHN0YXRpYyBib29sIHdyaXRlRGF0YVRvRmlsZShjb25z
dCBEYXRhJiAKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAotc3RhdGljIHN0ZDo6ZXJyb3JfY29k
ZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBh
dGgsIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBtZXRhRGF0YSwgRGF0YSYgbWFwcGVkRGF0YSkK
K3N0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgVmVj
dG9yPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uUnVsZT4mJiBw
YXJzZWRSdWxlcywgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoLCBDb250ZW50UnVsZUxpc3RN
ZXRhRGF0YSYgbWV0YURhdGEsIERhdGEmIG1hcHBlZERhdGEpCiB7CiAgICAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOwogCkBAIC0yMjcsNyArMjI5LDggQEAgc3Rh
dGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdAogICAgICAgICAgICAgQVNTRVJU
KCFtZXRhRGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4pOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICB2b2lkIHdyaXRlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSlNPTikg
ZmluYWwgeworICAgICAgICB2b2lkIHdyaXRlU291cmNlKFN0cmluZyYmIHNvdXJjZUpTT04pIGZp
bmFsCisgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aG91dENvbmRp
dGlvbnNCeXRlY29kZVdyaXR0ZW4pOwogICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlcnNXaXRo
Q29uZGl0aW9uQnl0ZWNvZGVXcml0dGVuKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9jb25kaXRp
b25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKQEAgLTMzOSw3ICszNDIsNyBAQCBzdGF0aWMgc3Rk
OjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0CiAKICAgICBDb21waWxhdGlvbkNsaWVudCBj
b21waWxhdGlvbkNsaWVudCh0ZW1wb3JhcnlGaWxlSGFuZGxlLCBtZXRhRGF0YSk7CiAgICAgCi0g
ICAgaWYgKGF1dG8gY29tcGlsZXJFcnJvciA9IGNvbXBpbGVSdWxlTGlzdChjb21waWxhdGlvbkNs
aWVudCwgV1RGTW92ZShqc29uKSkpIHsKKyAgICBpZiAoYXV0byBjb21waWxlckVycm9yID0gY29t
cGlsZVJ1bGVMaXN0KGNvbXBpbGF0aW9uQ2xpZW50LCBXVEZNb3ZlKGpzb24pLCBXVEZNb3ZlKHBh
cnNlZFJ1bGVzKSkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50IFJ1bGUgTGlzdCBj
b21waWxpbmcgZmFpbGVkOiBDb21waWxpbmcgZmFpbGVkLiIpOwogICAgICAgICBjbG9zZUZpbGUo
dGVtcG9yYXJ5RmlsZUhhbmRsZSk7CiAgICAgICAgIHJldHVybiBjb21waWxlckVycm9yOwpAQCAt
MzkxLDcgKzM5NCw3IEBAIHN0YXRpYyBSZWY8QVBJOjpDb250ZW50UnVsZUxpc3Q+IGNyZWF0ZUUK
ICAgICByZXR1cm4gQVBJOjpDb250ZW50UnVsZUxpc3Q6OmNyZWF0ZShpZGVudGlmaWVyLCBXVEZN
b3ZlKGNvbXBpbGVkQ29udGVudFJ1bGVMaXN0KSk7CiB9CiAKLXZvaWQgQ29udGVudFJ1bGVMaXN0
U3RvcmU6Omxvb2t1cENvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmll
ciwgRnVuY3Rpb248dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9y
X2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6Omxv
b2t1cENvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9y
X2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3JlYWRRdWV1ZS0+ZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIu
aXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBs
ZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0aCA9
IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIGxlZ2FjeUZpbGVuYW1lKTsK
QEAgLTM5OSwyNiArNDAyLDI2IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6Omxvb2t1cENv
bnRlbnQKICAgICAgICAgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEgbWV0YURhdGE7CiAgICAgICAg
IERhdGEgZmlsZURhdGE7CiAgICAgICAgIGlmICghb3BlbkFuZE1hcENvbnRlbnRSdWxlTGlzdChw
YXRoLCBtZXRhRGF0YSwgZmlsZURhdGEpKSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCBF
cnJvcjo6TG9va3VwRmFpbGVkKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobWV0YURhdGEudmVyc2lvbiAhPSBD
b250ZW50UnVsZUxpc3RTdG9yZTo6Q3VycmVudENvbnRlbnRSdWxlTGlzdEZpbGVWZXJzaW9uKSB7
Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCBFcnJvcjo6VmVyc2lvbk1pc21hdGNoKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwg
ZmlsZURhdGEgPSBXVEZNb3ZlKGZpbGVEYXRhKSwgbWV0YURhdGEgPSBXVEZNb3ZlKG1ldGFEYXRh
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgZmls
ZURhdGEgPSBXVEZNb3ZlKGZpbGVEYXRhKSwgbWV0YURhdGEgPSBXVEZNb3ZlKG1ldGFEYXRhKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjcmVhdGVFeHRlbnNpb24oaWRlbnRp
ZmllciwgbWV0YURhdGEsIGZpbGVEYXRhKSwgeyB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9
CiAKLXZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlz
dElkZW50aWZpZXJzKEZ1bmN0aW9uPHZvaWQoV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KT4gY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpnZXRBdmFpbGFibGVD
b250ZW50UnVsZUxpc3RJZGVudGlmaWVycyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcmVhZFF1ZXVl
LT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yZVBhdGggPSBt
X3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgbGVnYWN5RmlsZW5hbWUgPSBtX2xlZ2FjeUZpbGVu
YW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewogCkBAIC00MzUsNDMgKzQzOCw0OCBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3Jl
OjpnZXRBdmFpbGFibGVDCiAgICAgfSk7CiB9CiAKLXZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6
OmNvbXBpbGVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdU
Rjo6U3RyaW5nJiYganNvbiwgRnVuY3Rpb248dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxp
c3Q+LCBzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ29udGVudFJ1
bGVMaXN0U3RvcmU6OmNvbXBpbGVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlk
ZW50aWZpZXIsIFdURjo6U3RyaW5nJiYganNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKICAgICBXZWJDb3JlOjpRdWFsaWZp
ZWROYW1lOjppbml0KCk7Ci0gICAgbV9jb21waWxlUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29w
eSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGpzb24gPSBqc29uLmlzb2xh
dGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Cisg
ICAgCisgICAgYXV0byBwYXJzZWRSdWxlcyA9IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpw
YXJzZVJ1bGVMaXN0KGpzb24pOworICAgIGlmICghcGFyc2VkUnVsZXMuaGFzX3ZhbHVlKCkpCisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCBwYXJzZWRSdWxlcy5lcnJv
cigpKTsKKyAgICAKKyAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCks
IGxlZ2FjeUZpbGVuYW1lID0gbV9sZWdhY3lGaWxlbmFtZSwganNvbiA9IGpzb24uaXNvbGF0ZWRD
b3B5KCksIHBhcnNlZFJ1bGVzID0gcGFyc2VkUnVsZXMudmFsdWUoKS5pc29sYXRlZENvcHkoKSwg
c3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBhdXRv
IHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBsZWdhY3lGaWxl
bmFtZSk7CiAKICAgICAgICAgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEgbWV0YURhdGE7CiAgICAg
ICAgIERhdGEgZmlsZURhdGE7Ci0gICAgICAgIGF1dG8gZXJyb3IgPSBjb21waWxlZFRvRmlsZShX
VEZNb3ZlKGpzb24pLCBwYXRoLCBtZXRhRGF0YSwgZmlsZURhdGEpOworICAgICAgICBhdXRvIGVy
cm9yID0gY29tcGlsZWRUb0ZpbGUoV1RGTW92ZShqc29uKSwgV1RGTW92ZShwYXJzZWRSdWxlcyks
IHBhdGgsIG1ldGFEYXRhLCBmaWxlRGF0YSk7CiAgICAgICAgIGlmIChlcnJvcikgewotICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZXJy
b3IgPSBXVEZNb3ZlKGVycm9yKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobnVsbHB0ciwgZXJyb3IpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVu
dGlmaWVyKSwgZmlsZURhdGEgPSBXVEZNb3ZlKGZpbGVEYXRhKSwgbWV0YURhdGEgPSBXVEZNb3Zl
KG1ldGFEYXRhKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKSwg
ZmlsZURhdGEgPSBXVEZNb3ZlKGZpbGVEYXRhKSwgbWV0YURhdGEgPSBXVEZNb3ZlKG1ldGFEYXRh
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+IGNvbnRlbnRS
dWxlTGlzdCA9IGNyZWF0ZUV4dGVuc2lvbihpZGVudGlmaWVyLCBtZXRhRGF0YSwgZmlsZURhdGEp
OwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGVudFJ1bGVMaXN0LCB7IH0pOwog
ICAgICAgICB9KTsKICAgICB9KTsKIH0KIAotdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6cmVt
b3ZlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBGdW5jdGlv
bjx2b2lkKHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDb250ZW50
UnVsZUxpc3RTdG9yZTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBp
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIG1fcmVtb3ZlUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29w
eSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgbGVnYWN5RmlsZW5h
bWUgPSBtX2xlZ2FjeUZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3Rl
ZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBsZWdhY3lGaWxlbmFtZSk7CiAKICAgICAgICAg
aWYgKCFkZWxldGVGaWxlKHBhdGgpKSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihFcnJvcjo6UmVtb3Zl
RmFpbGVkKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtNDk0LDEzICs1MDIsMTMg
QEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6aW52YWxpZGF0ZUNvbgogICAgIGNsb3NlRmls
ZShmaWxlKTsKIH0KIAotdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVM
aXN0U291cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKFdU
Rjo6U3RyaW5nKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3Jl
OjpnZXRDb250ZW50UnVsZUxpc3RTb3VyY2UoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpTdHJpbmcpPiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBtX3JlYWRRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9
IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5Rmls
ZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgs
IGlkZW50aWZpZXIsIGxlZ2FjeUZpbGVuYW1lKTsKICAgICAgICAgCiAgICAgICAgIGF1dG8gY29t
cGxldGUgPSBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFN0cmluZyBzb3VyY2UpIG11
dGFibGUgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgc291cmNlID0gc291cmNlLmlzb2xhdGVkQ29weSgpXSB7Cisg
ICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBzb3VyY2UgPSBzb3VyY2UuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNvdXJjZSk7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCShyZXZpc2lvbiAyMzQ4NTEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsMTUgKzYyLDE1IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBDb250ZW50
UnVsZUxpc3RTdG9yZShjb25zdCBXVEY6OlN0cmluZyYgc3RvcmVQYXRoLCBib29sIGxlZ2FjeUZp
bGVuYW1lKTsKICAgICB2aXJ0dWFsIH5Db250ZW50UnVsZUxpc3RTdG9yZSgpOwogCi0gICAgdm9p
ZCBjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBX
VEY6OlN0cmluZyYmIGpzb24sIEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVM
aXN0Piwgc3RkOjplcnJvcl9jb2RlKT4pOwotICAgIHZvaWQgbG9va3VwQ29udGVudFJ1bGVMaXN0
KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKFJlZlB0cjxBUEk6
OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsKLSAgICB2b2lkIHJlbW92ZUNv
bnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9p
ZChzdGQ6OmVycm9yX2NvZGUpPik7Ci0gICAgdm9pZCBnZXRBdmFpbGFibGVDb250ZW50UnVsZUxp
c3RJZGVudGlmaWVycyhGdW5jdGlvbjx2b2lkKFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPik+KTsK
KyAgICB2b2lkIGNvbXBpbGVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50
aWZpZXIsIFdURjo6U3RyaW5nJiYganNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8
QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2NvZGUpPik7CisgICAgdm9pZCBsb29r
dXBDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9j
b2RlKT4pOworICAgIHZvaWQgcmVtb3ZlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5n
JiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6ZXJyb3JfY29kZSk+KTsK
KyAgICB2b2lkIGdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+KT4pOwogCiAgICAgLy8gRm9y
IHRlc3Rpbmcgb25seS4KICAgICB2b2lkIHN5bmNocm9ub3VzUmVtb3ZlQWxsQ29udGVudFJ1bGVM
aXN0cygpOwogICAgIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRSdWxlTGlzdFZlcnNpb24oY29uc3Qg
V1RGOjpTdHJpbmcmIGlkZW50aWZpZXIpOwotICAgIHZvaWQgZ2V0Q29udGVudFJ1bGVMaXN0U291
cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKFdURjo6U3Ry
aW5nKT4pOworICAgIHZvaWQgZ2V0Q29udGVudFJ1bGVMaXN0U291cmNlKGNvbnN0IFdURjo6U3Ry
aW5nJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6U3RyaW5nKT4pOwog
CiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIGRlZmF1bHRTdG9yZVBhdGgoYm9vbCBsZWdhY3lG
aWxlbmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250
ZW50UnVsZUxpc3RTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQkocmV2aXNpb24gMjM0ODUxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3Rv
cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkFQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmgiCiAjaW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIKICNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIHN0
YXRpYyBXS0Vycm9yQ29kZSB0b1dLRXJyb3JDb2RlKGNvbnN0IHN0ZDo6ZXJyb3JfY29kZSYgZXJy
b3IpCiB7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMzQ4NjIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxOC0wOC0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIGlzVmFsaWRDU1NTZWxlY3RvciBpcyB1bnNhZmUg
dG8gYmUgY2FsbGVkIGZyb20gYSBub24tbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU4MQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDA1MTczNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6
Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrQ29tcGlsZXJFcnJvcik6CisK
IDIwMTgtMDgtMTQgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtld3MtYnVpbGRdIEFkZCBidWlsZCBzdGVwIHRvIHJ1biBXSzEgbGF5b3V0LXRlc3QKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRl
bnRFeHRlbnNpb25zLmNwcAkocmV2aXNpb24gMjM0ODUxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCB3cml0
ZVNvdXJjZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHdyaXRlU291cmNlKFN0
cmluZyYmKSBmaW5hbCB7IH0KIAogICAgIHZvaWQgd3JpdGVBY3Rpb25zKFZlY3RvcjxDb250ZW50
RXh0ZW5zaW9uczo6U2VyaWFsaXplZEFjdGlvbkJ5dGU+JiYgYWN0aW9ucywgYm9vbCBjb25kaXRp
b25zQXBwbHlPbmx5VG9Eb21haW4pIGZpbmFsCiAgICAgewpAQCAtMTUwLDcgKzE1MCw4IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEgZXh0ZW5z
aW9uRGF0YTsKICAgICAgICAgSW5NZW1vcnlDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGll
bnQgY2xpZW50KGV4dGVuc2lvbkRhdGEpOwotICAgICAgICBhdXRvIGNvbXBpbGVyRXJyb3IgPSBD
b250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KGNsaWVudCwgV1RGTW92ZShmaWx0ZXIp
KTsKKyAgICAgICAgYXV0byBwYXJzZWRSdWxlcyA9IENvbnRlbnRFeHRlbnNpb25zOjpwYXJzZVJ1
bGVMaXN0KGZpbHRlcik7CisgICAgICAgIGF1dG8gY29tcGlsZXJFcnJvciA9IENvbnRlbnRFeHRl
bnNpb25zOjpjb21waWxlUnVsZUxpc3QoY2xpZW50LCBXVEZNb3ZlKGZpbHRlciksIFdURk1vdmUo
cGFyc2VkUnVsZXMudmFsdWUoKSkpOwogCiAgICAgICAgIC8vIENvbXBpbGluZyBzaG91bGQgYWx3
YXlzIHN1Y2NlZWQgaGVyZS4gV2UgaGF2ZSBvdGhlciB0ZXN0cyBmb3IgY29tcGlsZSBmYWlsdXJl
cy4KICAgICAgICAgRVhQRUNUX0ZBTFNFKGNvbXBpbGVyRXJyb3IpOwpAQCAtMTM3MSw3ICsxMzcy
LDEyIEBAIHZvaWQgY2hlY2tDb21waWxlckVycm9yKGNvbnN0IGNoYXIqIGpzb24KIHsKICAgICBD
b21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhIGV4dGVuc2lvbkRhdGE7CiAgICAgSW5NZW1vcnlD
b250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQgY2xpZW50KGV4dGVuc2lvbkRhdGEpOwot
ICAgIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlckVycm9yID0gQ29udGVudEV4dGVuc2lvbnM6OmNv
bXBpbGVSdWxlTGlzdChjbGllbnQsIGpzb24pOworICAgIGF1dG8gcGFyc2VkUnVsZXMgPSBDb250
ZW50RXh0ZW5zaW9uczo6cGFyc2VSdWxlTGlzdChqc29uKTsKKyAgICBzdGQ6OmVycm9yX2NvZGUg
Y29tcGlsZXJFcnJvcjsKKyAgICBpZiAocGFyc2VkUnVsZXMuaGFzX3ZhbHVlKCkpCisgICAgICAg
IGNvbXBpbGVyRXJyb3IgPSBDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KGNsaWVu
dCwganNvbiwgV1RGTW92ZShwYXJzZWRSdWxlcy52YWx1ZSgpKSk7CisgICAgZWxzZQorICAgICAg
ICBjb21waWxlckVycm9yID0gcGFyc2VkUnVsZXMuZXJyb3IoKTsKICAgICBFWFBFQ1RfRVEoY29t
cGlsZXJFcnJvci52YWx1ZSgpLCBleHBlY3RlZEVycm9yLnZhbHVlKCkpOwogICAgIGlmIChjb21w
aWxlckVycm9yLnZhbHVlKCkpCiAgICAgICAgIEVYUEVDVF9TVFJFUShjb21waWxlckVycm9yLmNh
dGVnb3J5KCkubmFtZSgpLCBleHBlY3RlZEVycm9yLmNhdGVnb3J5KCkubmFtZSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347124</attachid>
            <date>2018-08-14 16:13:58 -0700</date>
            <delta_ts>2018-08-14 16:20:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188581-20180814161357.patch</filename>
            <type>text/plain</type>
            <size>28583</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ4NTkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE4LTA4LTE0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgaXNWYWxpZENTU1NlbGVjdG9yIGlz
IHVuc2FmZSB0byBiZSBjYWxsZWQgZnJvbSBhIG5vbi1tYWluIHRocmVhZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTgxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80MDUxNzM1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgor
CisgICAgICAgICogd3RmL1ZlY3Rvci5oOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46Omlz
b2xhdGVkQ29weSk6CisKIDIwMTgtMDgtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgYSBWYXJpYW50IGluc3RlYWQgb2YgYSB1bmlv
biBpbiBDU1NTZWxlY3RvcgpJbmRleDogU291cmNlL1dURi93dGYvVmVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvVmVjdG9yLmgJKHJldmlzaW9uIDIzNDg1MykKKysrIFNvdXJj
ZS9XVEYvd3RmL1ZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NjYsNiArNzY2LDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjbGVhcigpIHsgc2hyaW5rQ2FwYWNpdHkoMCk7IH0KIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBWZWN0b3I8VT4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kKFZhbHVlVHlwZSYmIHZhbHVlKSB7IGFwcGVu
ZDxWYWx1ZVR5cGU+KHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+KHZhbHVlKSk7IH0KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiB2b2lkIGFwcGVuZChVJiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+IHZvaWQgY29uc3RydWN0QW5kQXBwZW5kKEFyZ3MmJi4uLik7CkBAIC0xNjA0LDYg
KzE2MDYsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZhbHVlQ2hlY2s8VgogfTsK
ICNlbmRpZgogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgordGVtcGxhdGU8dHlw
ZW5hbWUgVT4KK2lubGluZSBWZWN0b3I8VT4gVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBW
ZWN0b3I8VT4gY29weTsKKyAgICBjb3B5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSgpKTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqdGhpcykKKyAgICAgICAgY29weS51bmNo
ZWNrZWRBcHBlbmQoZWxlbWVudC5pc29sYXRlZENvcHkoKSk7CisgICAgcmV0dXJuIGNvcHk7Cit9
CisgICAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlLCB0eXBlbmFtZSBGdW5jPgogc2l6
ZV90IHJlbW92ZVJlcGVhdGVkRWxlbWVudHMoVmVjdG9yVHlwZSYgdmVjdG9yLCBjb25zdCBGdW5j
JiBmdW5jKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM0ODU5KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTgtMDgt
MTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBpc1ZhbGlkQ1NTU2VsZWN0b3IgaXMgdW5zYWZlIHRvIGJlIGNhbGxlZCBmcm9tIGEgbm9uLW1h
aW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODg1ODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwNTE3MzU4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgUGFyc2luZyBhbmQgZGV0ZXJtaW5pbmcg
d2hldGhlciB0aGUgY3NzIHNlbGVjdG9ycyBhcmUgdmFsaWQgaXMgZmFzdCBlbm91Z2ggdG8gZG8g
YmVmb3JlCisgICAgICAgIGhvcHBpbmcgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkIGZvciB0aGUg
c2xvdyBORkEvREZBIG9wZXJhdGlvbnMgYW5kIHdyaXRpbmcgdG8gZGlzay4KKyAgICAgICAgRG9p
bmcgaXQgb24gdGhlIG1haW4gdGhyZWFkIGF2b2lkcyB0aGUgdGhyZWFkIHNhZmV0eSBpc3N1ZXMg
aW4gdGhlIENTU1BhcnNlcidzIHVzZSBvZiBzdHJpbmdzLgorCisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3QpOgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5oOgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OmlzVmFsaWRDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6bG9hZEVuY29kZWRSdWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6cGFyc2VSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5oOgorICAgICAgICAqIGNvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpUcmlnZ2VyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRyaWdnZXI6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRyaWdnZXI6Om9wZXJhdG9yPT0g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbjo6QWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uUnVsZTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uUnVsZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6dmVjdG9ySXNvbGF0ZWRDb3B5KToKKwog
MjAxOC0wOC0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVzZSBhIFZhcmlhbnQgaW5zdGVhZCBvZiBhIHVuaW9uIGluIENTU1NlbGVjdG9y
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAJKHJldmlzaW9uIDIzNDg1MykKKysrIFNv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MywxMiArMjgzLDEzIEBAIHN0YXRpYyB2b2lkIGNvbXBp
bGVUb0J5dGVjb2RlKENvbWJpbmVkVVIKICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyh1bml2ZXJz
YWxBY3Rpb25zLCB1bml2ZXJzYWxBY3Rpb25zLmNhcGFjaXR5KCkgKiBzaXplb2YodW5zaWduZWQp
KTsKIH0KIAotc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9u
Q29tcGlsYXRpb25DbGllbnQmIGNsaWVudCwgU3RyaW5nJiYgcnVsZUpTT04pCitzdGQ6OmVycm9y
X2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYg
Y2xpZW50LCBTdHJpbmcmJiBydWxlSlNPTiwgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYm
IHBhcnNlZFJ1bGVMaXN0KQogewotICAgIGF1dG8gcnVsZUxpc3QgPSBwYXJzZVJ1bGVMaXN0KFdU
Rk1vdmUocnVsZUpTT04pKTsKLSAgICBpZiAoIXJ1bGVMaXN0Lmhhc192YWx1ZSgpKQotICAgICAg
ICByZXR1cm4gcnVsZUxpc3QuZXJyb3IoKTsKLSAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1
bGU+IHBhcnNlZFJ1bGVMaXN0ID0gV1RGTW92ZShydWxlTGlzdC52YWx1ZSgpKTsKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgY2FsbE9uTWFpblRocmVhZChbcnVsZUpTT04gPSBydWxlSlNPTi5p
c29sYXRlZENvcHkoKSwgcGFyc2VkUnVsZUxpc3QgPSBwYXJzZWRSdWxlTGlzdC5pc29sYXRlZENv
cHkoKV0geworICAgICAgICBBU1NFUlQocGFyc2VSdWxlTGlzdChydWxlSlNPTikgPT0gcGFyc2Vk
UnVsZUxpc3QpOworICAgIH0pOworI2VuZGlmCiAKICAgICBib29sIGRvbWFpbkNvbmRpdGlvblNl
ZW4gPSBmYWxzZTsKICAgICBib29sIHRvcFVSTENvbmRpdGlvblNlZW4gPSBmYWxzZTsKQEAgLTMx
Myw3ICszMTQsNyBAQCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFCiAg
ICAgTW9ub3RvbmljVGltZSBwYXR0ZXJuUGFydGl0aW9uaW5nU3RhcnQgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKICNlbmRpZgogICAgIAotICAgIGNsaWVudC53cml0ZVNvdXJjZShydWxlSlNPTik7
CisgICAgY2xpZW50LndyaXRlU291cmNlKHN0ZDo6ZXhjaGFuZ2UocnVsZUpTT04sIFN0cmluZygp
KSk7CiAKICAgICBWZWN0b3I8U2VyaWFsaXplZEFjdGlvbkJ5dGU+IGFjdGlvbnM7CiAgICAgVmVj
dG9yPHVuc2lnbmVkPiBhY3Rpb25Mb2NhdGlvbnMgPSBzZXJpYWxpemVBY3Rpb25zKHBhcnNlZFJ1
bGVMaXN0LCBhY3Rpb25zKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5oCShyZXZpc2lvbiAy
MzQ4NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Q29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50KCkgPSBkZWZhdWx0
OwogICAgIAogICAgIC8vIEZ1bmN0aW9ucyBzaG91bGQgYmUgY2FsbGVkIGluIHRoaXMgb3JkZXIu
IEFsbCBleGNlcHQgd3JpdGVBY3Rpb25zIGFuZCBmaW5hbGl6ZSBjYW4gYmUgY2FsbGVkIG11bHRp
cGxlIHRpbWVzLCB0aG91Z2guCi0gICAgdmlydHVhbCB2b2lkIHdyaXRlU291cmNlKGNvbnN0IFN0
cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVTb3VyY2UoU3RyaW5nJiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVBY3Rpb25zKFZlY3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0
ZT4mJiwgYm9vbCBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4pID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0
ZWNvZGU+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlv
bnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZSgpID0gMDsKIH07CiAKLVdFQkNPUkVf
RVhQT1JUIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNv
bXBpbGF0aW9uQ2xpZW50JiwgU3RyaW5nJiYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjplcnJvcl9j
b2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQmLCBT
dHJpbmcmJiBydWxlSlNPTiwgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYmKTsKIAogfSAv
LyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCShyZXZpc2lvbiAyMzQ4NTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMwLDYgKzIzMCw3IEBAIHN0YXRpYyBFeHBlY3RlZDxUcmlnZ2VyLCBzdGQ6
OmVycm9yX2NvZGUKIAogYm9vbCBpc1ZhbGlkQ1NTU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxl
Y3RvcikKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEF0b21pY1N0cmluZzo6
aW5pdCgpOwogICAgIFF1YWxpZmllZE5hbWU6OmluaXQoKTsKICAgICBDU1NQYXJzZXJDb250ZXh0
IGNvbnRleHQoSFRNTFF1aXJrc01vZGUpOwpAQCAtMjk5LDcgKzMwMCw3IEBAIHN0YXRpYyBFeHBl
Y3RlZDxzdGQ6Om9wdGlvbmFsPENvbnRlbnRFeHQKICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQg
fTsKIH0KIAotc3RhdGljIEV4cGVjdGVkPFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4sIHN0
ZDo6ZXJyb3JfY29kZT4gbG9hZEVuY29kZWRSdWxlcyhFeGVjU3RhdGUmIGV4ZWMsIFN0cmluZyYm
IHJ1bGVKU09OKQorc3RhdGljIEV4cGVjdGVkPFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4s
IHN0ZDo6ZXJyb3JfY29kZT4gbG9hZEVuY29kZWRSdWxlcyhFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0
IFN0cmluZyYgcnVsZUpTT04pCiB7CiAgICAgVk0mIHZtID0gZXhlYy52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTM0Nyw3ICszNDgsNyBAQCBzdGF0
aWMgRXhwZWN0ZWQ8VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SCiAgICAgcmV0dXJuIFdURk1vdmUo
cnVsZUxpc3QpOwogfQogCi1FeHBlY3RlZDxWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBz
dGQ6OmVycm9yX2NvZGU+IHBhcnNlUnVsZUxpc3QoU3RyaW5nJiYgcnVsZUpTT04pCitFeHBlY3Rl
ZDxWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlUnVs
ZUxpc3QoY29uc3QgU3RyaW5nJiBydWxlSlNPTikKIHsKICNpZiBDT05URU5UX0VYVEVOU0lPTlNf
UEVSRk9STUFOQ0VfUkVQT1JUSU5HCiAgICAgTW9ub3RvbmljVGltZSBsb2FkRXh0ZW5zaW9uU3Rh
cnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CkBAIC0zNTgsNyArMzU5LDcgQEAgRXhwZWN0
ZWQ8VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiwgcwogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKCp2bSwgSlNHbG9iYWxPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSgqdm0sIGpzTnVsbCgpKSk7CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBhdXRvIHJ1bGVMaXN0ID0gbG9hZEVu
Y29kZWRSdWxlcygqZXhlYywgV1RGTW92ZShydWxlSlNPTikpOworICAgIGF1dG8gcnVsZUxpc3Qg
PSBsb2FkRW5jb2RlZFJ1bGVzKCpleGVjLCBydWxlSlNPTik7CiAKICAgICB2bSA9IG51bGxwdHI7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmgJKHJldmlzaW9uIDIzNDg1MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgewog
CiBjbGFzcyBDb250ZW50RXh0ZW5zaW9uUnVsZTsKIAotRXhwZWN0ZWQ8VmVjdG9yPENvbnRlbnRF
eHRlbnNpb25SdWxlPiwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZVJ1bGVMaXN0KFN0cmluZyYmKTsK
K1dFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4sIHN0
ZDo6ZXJyb3JfY29kZT4gcGFyc2VSdWxlTGlzdChjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNWYWxpZENTU1NlbGVjdG9yKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVz
cGFjZSBDb250ZW50RXh0ZW5zaW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcAkocmV2aXNpb24g
MjM0ODUzKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvblJ1bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDI4IEBAIHVpbnQzMl90
IEFjdGlvbjo6c2VyaWFsaXplZExlbmd0aChjb25zdCAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCitUcmlnZ2VyIFRyaWdnZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHsKKyAgICAgICAgdXJsRmlsdGVyLmlzb2xhdGVkQ29weSgpLAorICAgICAg
ICB1cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsCisgICAgICAgIHRvcFVSTENvbmRpdGlvbklzQ2Fz
ZVNlbnNpdGl2ZSwKKyAgICAgICAgZmxhZ3MsCisgICAgICAgIGNvbmRpdGlvbnMuaXNvbGF0ZWRD
b3B5KCksCisgICAgICAgIGNvbmRpdGlvblR5cGUKKyAgICB9OworfQorCitBY3Rpb24gQWN0aW9u
Ojppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIHJldHVybiB7CisgICAgICAgIG1fZXh0ZW5z
aW9uSWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgbV90eXBlLAorICAgICAgICBt
X2FjdGlvbklELAorICAgICAgICBtX3N0cmluZ0FyZ3VtZW50Lmlzb2xhdGVkQ29weSgpCisgICAg
fTsKK30KKwogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvblJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCShyZXZpc2lvbiAyMzQ4NTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NSw2ICs1NSw4IEBAIHN0cnVjdCBUcmlnZ2VyIHsKICAgICB9OwogICAg
IENvbmRpdGlvblR5cGUgY29uZGl0aW9uVHlwZSB7IENvbmRpdGlvblR5cGU6Ok5vbmUgfTsKIAor
ICAgIFdFQkNPUkVfRVhQT1JUIFRyaWdnZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgCiAg
ICAgflRyaWdnZXIoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbmRpdGlvbnMuaXNFbXB0eSgp
ID09IChjb25kaXRpb25UeXBlID09IENvbmRpdGlvblR5cGU6Ok5vbmUpKTsKQEAgLTY2LDYgKzY4
LDcgQEAgc3RydWN0IFRyaWdnZXIgewogICAgIHsKICAgICAgICAgcmV0dXJuIHVybEZpbHRlci5p
c0VtcHR5KCkKICAgICAgICAgICAgICYmICF1cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUKKyAgICAg
ICAgICAgICYmICF0b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUKICAgICAgICAgICAgICYm
ICFmbGFncwogICAgICAgICAgICAgJiYgY29uZGl0aW9ucy5pc0VtcHR5KCkKICAgICAgICAgICAg
ICYmIGNvbmRpdGlvblR5cGUgPT0gQ29uZGl0aW9uVHlwZTo6Tm9uZTsKQEAgLTc1LDYgKzc4LDcg
QEAgc3RydWN0IFRyaWdnZXIgewogICAgIHsKICAgICAgICAgcmV0dXJuIHVybEZpbHRlciA9PSBv
dGhlci51cmxGaWx0ZXIKICAgICAgICAgICAgICYmIHVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9
PSBvdGhlci51cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUKKyAgICAgICAgICAgICYmIHRvcFVSTENv
bmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSA9PSBvdGhlci50b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5z
aXRpdmUKICAgICAgICAgICAgICYmIGZsYWdzID09IG90aGVyLmZsYWdzCiAgICAgICAgICAgICAm
JiBjb25kaXRpb25zID09IG90aGVyLmNvbmRpdGlvbnMKICAgICAgICAgICAgICYmIGNvbmRpdGlv
blR5cGUgPT0gb3RoZXIuY29uZGl0aW9uVHlwZTsKQEAgLTE2Myw3ICsxNjcsMTYgQEAgc3RydWN0
IEFjdGlvbiB7CiAgICAgdWludDMyX3QgYWN0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2FjdGlv
bklEOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmdBcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nQXJndW1lbnQ7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIEFjdGlvbiBpc29sYXRl
ZENvcHkoKSBjb25zdDsKKyAgICAKIHByaXZhdGU6CisgICAgQWN0aW9uKFN0cmluZyYmIGV4dGVu
c2lvbklkZW50aWZpZXIsIEFjdGlvblR5cGUgdHlwZSwgdWludDMyX3QgYWN0aW9uSUQsIFN0cmlu
ZyYmIHN0cmluZ0FyZ3VtZW50KQorICAgICAgICA6IG1fZXh0ZW5zaW9uSWRlbnRpZmllcihXVEZN
b3ZlKGV4dGVuc2lvbklkZW50aWZpZXIpKQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgICAg
ICAsIG1fYWN0aW9uSUQoYWN0aW9uSUQpCisgICAgICAgICwgbV9zdHJpbmdBcmd1bWVudChXVEZN
b3ZlKHN0cmluZ0FyZ3VtZW50KSkKKyAgICB7IH0KKwogICAgIFN0cmluZyBtX2V4dGVuc2lvbklk
ZW50aWZpZXI7CiAgICAgQWN0aW9uVHlwZSBtX3R5cGU7CiAgICAgdWludDMyX3QgbV9hY3Rpb25J
RDsKQEAgLTE3MiwxMSArMTg1LDIwIEBAIHByaXZhdGU6CiAgICAgCiBjbGFzcyBDb250ZW50RXh0
ZW5zaW9uUnVsZSB7CiBwdWJsaWM6Ci0gICAgQ29udGVudEV4dGVuc2lvblJ1bGUoVHJpZ2dlciYm
LCBBY3Rpb24mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGVudEV4dGVuc2lvblJ1bGUoVHJp
Z2dlciYmLCBBY3Rpb24mJik7CiAKICAgICBjb25zdCBUcmlnZ2VyJiB0cmlnZ2VyKCkgY29uc3Qg
eyByZXR1cm4gbV90cmlnZ2VyOyB9CiAgICAgY29uc3QgQWN0aW9uJiBhY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2FjdGlvbjsgfQogCisgICAgQ29udGVudEV4dGVuc2lvblJ1bGUgaXNvbGF0ZWRD
b3B5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB7IG1fdHJpZ2dlci5pc29sYXRlZENv
cHkoKSwgbV9hY3Rpb24uaXNvbGF0ZWRDb3B5KCkgfTsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3RyaWdnZXIgPT0gb3RoZXIubV90cmlnZ2VyICYmIG1fYWN0aW9uID09IG90
aGVyLm1fYWN0aW9uOworICAgIH0KKwogcHJpdmF0ZToKICAgICBUcmlnZ2VyIG1fdHJpZ2dlcjsK
ICAgICBBY3Rpb24gbV9hY3Rpb247CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM0ODUzKQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAor
MjAxOC0wOC0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIGlzVmFsaWRDU1NTZWxlY3RvciBpcyB1bnNhZmUgdG8gYmUgY2FsbGVkIGZyb20g
YSBub24tbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4ODU4MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDA1MTczNTg+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpjb21waWxlZFRvRmls
ZSk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVs
ZUxpc3QpOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0QXZhaWxhYmxl
Q29udGVudFJ1bGVMaXN0SWRlbnRpZmllcnMpOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxp
c3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgIChBUEk6OkNvbnRlbnRS
dWxlTGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoQVBJOjpDb250
ZW50UnVsZUxpc3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tOgorCiAyMDE4LTA4LTE0ICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbiBzaG91bGQgdXNlIE9wdGlvblNldCBmb3IgY2hhbmdlIGZsYWdzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAJKHJldmlzaW9uIDIzNDg1MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDggKzM1LDEwIEBACiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ29udGVudEV4dGVuc2lvbkVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50
RXh0ZW5zaW9uUGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9RdWFsaWZpZWROYW1lLmg+CiAj
aW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAj
aW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgpAQCAtMjA5LDcgKzIxMSw3IEBAIHN0YXRpYyBib29s
IHdyaXRlRGF0YVRvRmlsZShjb25zdCBEYXRhJiAKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAot
c3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25z
dCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgsIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBtZXRhRGF0
YSwgRGF0YSYgbWFwcGVkRGF0YSkKK3N0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0Zp
bGUoU3RyaW5nJiYganNvbiwgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uUnVsZT4mJiBwYXJzZWRSdWxlcywgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQ
YXRoLCBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEsIERhdGEmIG1hcHBlZERhdGEp
CiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOwogCkBA
IC0yMjcsNyArMjI5LDggQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShT
dAogICAgICAgICAgICAgQVNTRVJUKCFtZXRhRGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21h
aW4pOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIHdyaXRlU291cmNlKGNvbnN0
IFN0cmluZyYgc291cmNlSlNPTikgZmluYWwgeworICAgICAgICB2b2lkIHdyaXRlU291cmNlKFN0
cmluZyYmIHNvdXJjZUpTT04pIGZpbmFsCisgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCgh
bV9maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVdyaXR0ZW4pOwogICAgICAgICAgICAg
QVNTRVJUKCFtX2ZpbHRlcnNXaXRoQ29uZGl0aW9uQnl0ZWNvZGVXcml0dGVuKTsKICAgICAgICAg
ICAgIEFTU0VSVCghbV9jb25kaXRpb25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKQEAgLTMzOSw3
ICszNDIsNyBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0CiAKICAg
ICBDb21waWxhdGlvbkNsaWVudCBjb21waWxhdGlvbkNsaWVudCh0ZW1wb3JhcnlGaWxlSGFuZGxl
LCBtZXRhRGF0YSk7CiAgICAgCi0gICAgaWYgKGF1dG8gY29tcGlsZXJFcnJvciA9IGNvbXBpbGVS
dWxlTGlzdChjb21waWxhdGlvbkNsaWVudCwgV1RGTW92ZShqc29uKSkpIHsKKyAgICBpZiAoYXV0
byBjb21waWxlckVycm9yID0gY29tcGlsZVJ1bGVMaXN0KGNvbXBpbGF0aW9uQ2xpZW50LCBXVEZN
b3ZlKGpzb24pLCBXVEZNb3ZlKHBhcnNlZFJ1bGVzKSkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlz
KCJDb250ZW50IFJ1bGUgTGlzdCBjb21waWxpbmcgZmFpbGVkOiBDb21waWxpbmcgZmFpbGVkLiIp
OwogICAgICAgICBjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CiAgICAgICAgIHJldHVy
biBjb21waWxlckVycm9yOwpAQCAtMzkxLDcgKzM5NCw3IEBAIHN0YXRpYyBSZWY8QVBJOjpDb250
ZW50UnVsZUxpc3Q+IGNyZWF0ZUUKICAgICByZXR1cm4gQVBJOjpDb250ZW50UnVsZUxpc3Q6OmNy
ZWF0ZShpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBpbGVkQ29udGVudFJ1bGVMaXN0KSk7CiB9CiAK
LXZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6Omxvb2t1cENvbnRlbnRSdWxlTGlzdChjb25zdCBX
VEY6OlN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChSZWZQdHI8QVBJOjpDb250ZW50
UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ29u
dGVudFJ1bGVMaXN0U3RvcmU6Omxvb2t1cENvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmlu
ZyYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50
UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBt
X3JlYWRRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRl
bnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQ
YXRoLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CiAgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZp
ZXIsIGxlZ2FjeUZpbGVuYW1lKTsKQEAgLTM5OSwyNiArNDAyLDI2IEBAIHZvaWQgQ29udGVudFJ1
bGVMaXN0U3RvcmU6Omxvb2t1cENvbnRlbnQKICAgICAgICAgQ29udGVudFJ1bGVMaXN0TWV0YURh
dGEgbWV0YURhdGE7CiAgICAgICAgIERhdGEgZmlsZURhdGE7CiAgICAgICAgIGlmICghb3BlbkFu
ZE1hcENvbnRlbnRSdWxlTGlzdChwYXRoLCBtZXRhRGF0YSwgZmlsZURhdGEpKSB7Ci0gICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihudWxscHRyLCBFcnJvcjo6TG9va3VwRmFpbGVkKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAo
bWV0YURhdGEudmVyc2lvbiAhPSBDb250ZW50UnVsZUxpc3RTdG9yZTo6Q3VycmVudENvbnRlbnRS
dWxlTGlzdEZpbGVWZXJzaW9uKSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCBFcnJvcjo6
VmVyc2lvbk1pc21hdGNoKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRp
Zmllci5pc29sYXRlZENvcHkoKSwgZmlsZURhdGEgPSBXVEZNb3ZlKGZpbGVEYXRhKSwgbWV0YURh
dGEgPSBXVEZNb3ZlKG1ldGFEYXRhKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmll
ci5pc29sYXRlZENvcHkoKSwgZmlsZURhdGEgPSBXVEZNb3ZlKGZpbGVEYXRhKSwgbWV0YURhdGEg
PSBXVEZNb3ZlKG1ldGFEYXRhKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihj
cmVhdGVFeHRlbnNpb24oaWRlbnRpZmllciwgbWV0YURhdGEsIGZpbGVEYXRhKSwgeyB9KTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldEF2
YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzKEZ1bmN0aW9uPHZvaWQoV1RGOjpWZWN0
b3I8V1RGOjpTdHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENvbnRlbnRSdWxlTGlz
dFN0b3JlOjpnZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVycyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgbGVnYWN5Rmls
ZW5hbWUgPSBtX2xlZ2FjeUZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogCkBAIC00MzUsNDMgKzQzOCw0OCBAQCB2b2lk
IENvbnRlbnRSdWxlTGlzdFN0b3JlOjpnZXRBdmFpbGFibGVDCiAgICAgfSk7CiB9CiAKLXZvaWQg
Q29udGVudFJ1bGVMaXN0U3RvcmU6OmNvbXBpbGVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpT
dHJpbmcmIGlkZW50aWZpZXIsIFdURjo6U3RyaW5nJiYganNvbiwgRnVuY3Rpb248dm9pZChSZWZQ
dHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmNvbXBpbGVDb250ZW50UnVsZUxpc3Qo
Y29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdURjo6U3RyaW5nJiYganNvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9y
X2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsK
ICAgICBXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjppbml0KCk7Ci0gICAgbV9jb21waWxlUXVldWUt
PmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBp
ZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5h
bWUsIGpzb24gPSBqc29uLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5p
c29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKCkgbXV0YWJsZSB7CisgICAgCisgICAgYXV0byBwYXJzZWRSdWxlcyA9IFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpwYXJzZVJ1bGVMaXN0KGpzb24pOworICAgIGlmICghcGFyc2Vk
UnVsZXMuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyLCBwYXJzZWRSdWxlcy5lcnJvcigpKTsKKyAgICAKKyAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50
aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGxlZ2FjeUZpbGVuYW1lID0gbV9sZWdhY3lGaWxlbmFtZSwg
anNvbiA9IGpzb24uaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVzID0gcGFyc2VkUnVsZXMudmFs
dWUoKS5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5
KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11
dGFibGUgewogICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBp
ZGVudGlmaWVyLCBsZWdhY3lGaWxlbmFtZSk7CiAKICAgICAgICAgQ29udGVudFJ1bGVMaXN0TWV0
YURhdGEgbWV0YURhdGE7CiAgICAgICAgIERhdGEgZmlsZURhdGE7Ci0gICAgICAgIGF1dG8gZXJy
b3IgPSBjb21waWxlZFRvRmlsZShXVEZNb3ZlKGpzb24pLCBwYXRoLCBtZXRhRGF0YSwgZmlsZURh
dGEpOworICAgICAgICBhdXRvIGVycm9yID0gY29tcGlsZWRUb0ZpbGUoV1RGTW92ZShqc29uKSwg
V1RGTW92ZShwYXJzZWRSdWxlcyksIHBhdGgsIG1ldGFEYXRhLCBmaWxlRGF0YSk7CiAgICAgICAg
IGlmIChlcnJvcikgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9y
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgZXJyb3IpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVu
dGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKSwgZmlsZURhdGEgPSBXVEZNb3ZlKGZpbGVEYXRh
KSwgbWV0YURhdGEgPSBXVEZNb3ZlKG1ldGFEYXRhKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyID0g
V1RGTW92ZShpZGVudGlmaWVyKSwgZmlsZURhdGEgPSBXVEZNb3ZlKGZpbGVEYXRhKSwgbWV0YURh
dGEgPSBXVEZNb3ZlKG1ldGFEYXRhKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBSZWZQdHI8QVBJOjpDb250
ZW50UnVsZUxpc3Q+IGNvbnRlbnRSdWxlTGlzdCA9IGNyZWF0ZUV4dGVuc2lvbihpZGVudGlmaWVy
LCBtZXRhRGF0YSwgZmlsZURhdGEpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29u
dGVudFJ1bGVMaXN0LCB7IH0pOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KIAotdm9pZCBDb250
ZW50UnVsZUxpc3RTdG9yZTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5n
JiBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0
KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcmVtb3ZlUXVldWUt
PmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBp
ZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRl
ZENvcHkoKSwgbGVnYWN5RmlsZW5hbWUgPSBtX2xlZ2FjeUZpbGVuYW1lLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBh
dXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBsZWdhY3lG
aWxlbmFtZSk7CiAKICAgICAgICAgaWYgKCFkZWxldGVGaWxlKHBhdGgpKSB7Ci0gICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihFcnJvcjo6UmVtb3ZlRmFpbGVkKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIH0pOwogICAgIH0p
OwpAQCAtNDk0LDEzICs1MDIsMTMgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6aW52YWxp
ZGF0ZUNvbgogICAgIGNsb3NlRmlsZShmaWxlKTsKIH0KIAotdm9pZCBDb250ZW50UnVsZUxpc3RT
dG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyLCBGdW5jdGlvbjx2b2lkKFdURjo6U3RyaW5nKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IENvbnRlbnRSdWxlTGlzdFN0b3JlOjpnZXRDb250ZW50UnVsZUxpc3RTb3VyY2UoY29uc3QgV1RG
OjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpTdHJpbmcp
PiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3JlYWRRdWV1ZS0+ZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0
ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lG
aWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0
cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIGxlZ2FjeUZpbGVuYW1lKTsKICAgICAg
ICAgCiAgICAgICAgIGF1dG8gY29tcGxldGUgPSBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFN0cmluZyBzb3VyY2UpIG11dGFibGUgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc291cmNlID0gc291cmNl
Lmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzb3VyY2UgPSBzb3VyY2UuaXNvbGF0ZWRD
b3B5KCldICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNv
dXJjZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCShyZXZp
c2lvbiAyMzQ4NTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTUgKzYyLDE1IEBAIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBDb250ZW50UnVsZUxpc3RTdG9yZShjb25zdCBXVEY6OlN0cmluZyYgc3Rv
cmVQYXRoLCBib29sIGxlZ2FjeUZpbGVuYW1lKTsKICAgICB2aXJ0dWFsIH5Db250ZW50UnVsZUxp
c3RTdG9yZSgpOwogCi0gICAgdm9pZCBjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6
U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6OlN0cmluZyYmIGpzb24sIEZ1bmN0aW9uPHZvaWQoUmVm
UHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4pOwotICAgIHZvaWQg
bG9va3VwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBGdW5j
dGlvbjx2b2lkKFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+
KTsKLSAgICB2b2lkIHJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRl
bnRpZmllciwgRnVuY3Rpb248dm9pZChzdGQ6OmVycm9yX2NvZGUpPik7Ci0gICAgdm9pZCBnZXRB
dmFpbGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVycyhGdW5jdGlvbjx2b2lkKFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPik+KTsKKyAgICB2b2lkIGNvbXBpbGVDb250ZW50UnVsZUxpc3QoY29u
c3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdURjo6U3RyaW5nJiYganNvbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2Nv
ZGUpPik7CisgICAgdm9pZCBsb29rdXBDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcm
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudFJ1
bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4pOworICAgIHZvaWQgcmVtb3ZlQ29udGVudFJ1bGVM
aXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6ZXJyb3JfY29kZSk+KTsKKyAgICB2b2lkIGdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlz
dElkZW50aWZpZXJzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpWZWN0b3I8V1RGOjpTdHJp
bmc+KT4pOwogCiAgICAgLy8gRm9yIHRlc3Rpbmcgb25seS4KICAgICB2b2lkIHN5bmNocm9ub3Vz
UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpOwogICAgIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRS
dWxlTGlzdFZlcnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIpOwotICAgIHZvaWQg
Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBG
dW5jdGlvbjx2b2lkKFdURjo6U3RyaW5nKT4pOworICAgIHZvaWQgZ2V0Q29udGVudFJ1bGVMaXN0
U291cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdURjo6U3RyaW5nKT4pOwogCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIGRlZmF1bHRT
dG9yZVBhdGgoYm9vbCBsZWdhY3lGaWxlbmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5t
bQkocmV2aXNpb24gMjM0ODUzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbXBvcnQgIkFQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgiCiAjaW1wb3J0ICJXS0Vycm9y
SW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CiAKIHN0YXRpYyBXS0Vycm9yQ29kZSB0b1dLRXJyb3JDb2RlKGNvbnN0
IHN0ZDo6ZXJyb3JfY29kZSYgZXJyb3IpCiB7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ4NTMpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wOC0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIGlzVmFsaWRD
U1NTZWxlY3RvciBpcyB1bnNhZmUgdG8gYmUgY2FsbGVkIGZyb20gYSBub24tbWFpbiB0aHJlYWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU4MQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDA1MTczNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIFdlaW5pZy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250
ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbk1lbW9yeUNvbXBp
bGVkQ29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNo
ZWNrQ29tcGlsZXJFcnJvcik6CisKIDIwMTgtMDgtMTQgIEFha2FzaCBKYWluICA8YWFrYXNoX2ph
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtld3MtYnVpbGRdIEFkZCBzdXBwb3J0IGZvciBtYXhf
YnVpbGRzIHBhcmFtZXRlciBmb3Igd29ya2VycwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCShyZXZpc2lv
biAyMzQ4NTMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4
dGVuc2lvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHdyaXRlU291cmNlKGNvbnN0IFN0cmluZyYpIGZp
bmFsIHsgfQorICAgIHZvaWQgd3JpdGVTb3VyY2UoU3RyaW5nJiYpIGZpbmFsIHsgfQogCiAgICAg
dm9pZCB3cml0ZUFjdGlvbnMoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkQWN0
aW9uQnl0ZT4mJiBhY3Rpb25zLCBib29sIGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbikgZmlu
YWwKICAgICB7CkBAIC0xNTAsNyArMTUwLDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQ29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YSBleHRlbnNpb25EYXRhOwogICAgICAgICBJbk1lbW9y
eUNvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCBjbGllbnQoZXh0ZW5zaW9uRGF0YSk7
Ci0gICAgICAgIGF1dG8gY29tcGlsZXJFcnJvciA9IENvbnRlbnRFeHRlbnNpb25zOjpjb21waWxl
UnVsZUxpc3QoY2xpZW50LCBXVEZNb3ZlKGZpbHRlcikpOworICAgICAgICBhdXRvIHBhcnNlZFJ1
bGVzID0gQ29udGVudEV4dGVuc2lvbnM6OnBhcnNlUnVsZUxpc3QoZmlsdGVyKTsKKyAgICAgICAg
YXV0byBjb21waWxlckVycm9yID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdChj
bGllbnQsIFdURk1vdmUoZmlsdGVyKSwgV1RGTW92ZShwYXJzZWRSdWxlcy52YWx1ZSgpKSk7CiAK
ICAgICAgICAgLy8gQ29tcGlsaW5nIHNob3VsZCBhbHdheXMgc3VjY2VlZCBoZXJlLiBXZSBoYXZl
IG90aGVyIHRlc3RzIGZvciBjb21waWxlIGZhaWx1cmVzLgogICAgICAgICBFWFBFQ1RfRkFMU0Uo
Y29tcGlsZXJFcnJvcik7CkBAIC0xMzcxLDcgKzEzNzIsMTIgQEAgdm9pZCBjaGVja0NvbXBpbGVy
RXJyb3IoY29uc3QgY2hhcioganNvbgogewogICAgIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRh
dGEgZXh0ZW5zaW9uRGF0YTsKICAgICBJbk1lbW9yeUNvbnRlbnRFeHRlbnNpb25Db21waWxhdGlv
bkNsaWVudCBjbGllbnQoZXh0ZW5zaW9uRGF0YSk7Ci0gICAgc3RkOjplcnJvcl9jb2RlIGNvbXBp
bGVyRXJyb3IgPSBDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KGNsaWVudCwganNv
bik7CisgICAgYXV0byBwYXJzZWRSdWxlcyA9IENvbnRlbnRFeHRlbnNpb25zOjpwYXJzZVJ1bGVM
aXN0KGpzb24pOworICAgIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlckVycm9yOworICAgIGlmIChw
YXJzZWRSdWxlcy5oYXNfdmFsdWUoKSkKKyAgICAgICAgY29tcGlsZXJFcnJvciA9IENvbnRlbnRF
eHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3QoY2xpZW50LCBqc29uLCBXVEZNb3ZlKHBhcnNlZFJ1
bGVzLnZhbHVlKCkpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBpbGVyRXJyb3IgPSBwYXJzZWRS
dWxlcy5lcnJvcigpOwogICAgIEVYUEVDVF9FUShjb21waWxlckVycm9yLnZhbHVlKCksIGV4cGVj
dGVkRXJyb3IudmFsdWUoKSk7CiAgICAgaWYgKGNvbXBpbGVyRXJyb3IudmFsdWUoKSkKICAgICAg
ICAgRVhQRUNUX1NUUkVRKGNvbXBpbGVyRXJyb3IuY2F0ZWdvcnkoKS5uYW1lKCksIGV4cGVjdGVk
RXJyb3IuY2F0ZWdvcnkoKS5uYW1lKCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>