<?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>187472</bug_id>
          
          <creation_ts>2018-07-09 08:43:15 -0700</creation_ts>
          <short_desc>[JSC] Use Function / ScopedLambda / RecursableLambda instead of std::function</short_desc>
          <delta_ts>2018-07-21 06:11:16 -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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1440390</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-09 08:43:15 -0700</bug_when>
    <thetext>[JSC] Use Function / ScopedLambda / RecursableLambda instead of std::function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440391</commentid>
    <comment_count>1</comment_count>
      <attachid>344587</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-09 08:45:12 -0700</bug_when>
    <thetext>Created attachment 344587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440392</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-09 08:48:13 -0700</bug_when>
    <thetext>Attachment 344587 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/VMEntryScope.cpp:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/heap/HeapSnapshotBuilder.cpp:202:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:393:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/runtime/VMEntryScope.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/runtime/VMEntryScope.h:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/heap/HeapSnapshotBuilder.h:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:343:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:978:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 9 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440439</commentid>
    <comment_count>3</comment_count>
      <attachid>344587</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-09 10:28:37 -0700</bug_when>
    <thetext>Comment on attachment 344587
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444049</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-21 06:04:27 -0700</bug_when>
    <thetext>OK, now, branched. Let&apos;s land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444051</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-21 06:10:48 -0700</bug_when>
    <thetext>Committed r234082: &lt;https://trac.webkit.org/changeset/234082&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444052</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-21 06:11:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/42463133&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344587</attachid>
            <date>2018-07-09 08:45:12 -0700</date>
            <delta_ts>2018-07-09 10:28:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187472-20180710004511.patch</filename>
            <type>text/plain</type>
            <size>34055</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MzUzODJhMTcxYWMzYjE0ZmVhOTBlZDZmZTRlYjM2ODhkYTgxYmFmLi5kZjdlOGJhYzJiYzMwNzAx
OGUzZDkzMDkzYTQxNzg3ZTU1OTc2MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxOC0wNy0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBVc2UgRnVuY3Rpb24gLyBTY29wZWRMYW1iZGEgLyBSZWN1
cnNhYmxlTGFtYmRhIGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3NDcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgc3RkOjpmdW5jdGlvbiBhbGxvY2F0ZXMgbWVt
b3J5IGZyb20gc3RhbmRhcmQgbWFsbG9jIGluc3RlYWQgb2YgYm1hbGxvYy4gSW5zdGVhZCBvZgor
ICAgICAgICB1c2luZyB0aGF0LCB3ZSBzaG91bGQgdXNlIFdURjo6e0Z1bmN0aW9uLFNjb3BlZExh
bWJkYSxSZWN1cnNhYmxlTGFtYmRhfS4KKworICAgICAgICBUaGlzIHBhdGNoIGF0dGVtcHRzIHRv
IHJlcGxhY2Ugc3RkOjpmdW5jdGlvbiB3aXRoIHRoZSBhYm92ZSBXVEYgZnVuY3Rpb24gdHlwZXMu
CisgICAgICAgIElmIHRoZSBmdW5jdGlvbidzIGxpZmV0aW1lIGNhbiBiZSB0aGUgc2FtZSB0byB0
aGUgc3RhY2ssIHdlIGNhbiB1c2UgU2NvcGVkTGFtYmRhLCB3aGljaAorICAgICAgICBpcyByZWFs
bHkgZWZmaWNpZW50LiBPdGhlcndpc2UsIHdlIHNob3VsZCB1c2UgV1RGOjpGdW5jdGlvbi4KKyAg
ICAgICAgRm9yIHJlY3VycmluZyB1c2UgY2FzZXMsIHdlIGNhbiB1c2UgUmVjdXJzYWJsZUxhbWJk
YS4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHA6CisgICAgICAgIChK
U0M6OnN0ZEZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6
cHJvYmUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAq
IGIzL2Fpci9BaXJEaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpEaXNh
c3NlbWJsZXI6OmR1bXApOgorICAgICAgICAqIGIzL2Fpci9BaXJEaXNhc3NlbWJsZXIuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1
cEZ1bmN0aW9uU2NvcGVTdGFjayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RW51bWVyYXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAo
SlNDOjpBcnJheU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5RnVuY3Rp
b25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9yT2ZOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFkZFNsb3dQYXRoR2VuZXJhdG9yTGFtYmRh
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGZ0bC9GVExD
b21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBoZWFw
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWls
ZGVyOjpqc29uKToKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTdGFja1Zp
c2l0b3I6OkZyYW1lOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmg6CisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjp3aGVuSWRsZSk6CisgICAg
ICAgIChKU0M6OmVuYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KToKKyAgICAgICAgKEpT
Qzo6ZGlzYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisgICAgICAgICogcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwOgorICAgICAgICAoSlND
OjpWTUVudHJ5U2NvcGU6OmFkZERpZFBvcExpc3RlbmVyKToKKyAgICAgICAgKiBydW50aW1lL1ZN
RW50cnlTY29wZS5oOgorICAgICAgICAqIHRvb2xzL0hlYXBWZXJpZmllci5jcHA6CisgICAgICAg
IChKU0M6OkhlYXBWZXJpZmllcjo6dmVyaWZ5Q2VsbExpc3QpOgorICAgICAgICAoSlNDOjpIZWFw
VmVyaWZpZXI6OnZhbGlkYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6dmFs
aWRhdGVKU0NlbGwpOgorICAgICAgICAqIHRvb2xzL0hlYXBWZXJpZmllci5oOgorCiAyMDE4LTA3
LTA4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIGJ1aWxkIGZpeCBmb3IgZGVidWcgYnVpbGRzIGFmdGVyIHIyMzM2MzAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
NTAwMzRlYmYwMGI0ZTY4ZjUzMzczMDQzYzIyMDYwNDY5NzJmNmRhNy4uZGE5ZDI0YjcyNDBhYmJk
OTkzMjljZDE4YzUwOGUyYzQ4MjljNmNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wNy0w
OSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlND
XSBVc2UgRnVuY3Rpb24gLyBTY29wZWRMYW1iZGEgLyBSZWN1cnNhYmxlTGFtYmRhIGluc3RlYWQg
b2Ygc3RkOjpmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg3NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvU2NvcGVkTGFtYmRhLmg6CisgICAgICAgIChXVEY6OlNjb3BlZExhbWJk
YTxSZXN1bHRUeXBlKToKKwogMjAxOC0wNy0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBPcHRpbWl6ZSBwYWRkaW5nIG9mIFVubGlua2Vk
Q29kZUJsb2NrIHRvIHNocmluawpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyLmNwcAppbmRleCAyMDhhNjVkN2QxZGQxNTJhYWI2ZDA3MGZmNjIz
MTc1NjI0NjljZWJkLi5lY2FiNGQxNzMyODVlMTcxZTY4MjMyMDhlMTNmYjMwZDUyZmQzMDg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmNwcApAQCAtNTMsMTMgKzUzLDEzIEBAIHZvaWQgTWFjcm9Bc3NlbWJsZXI6OmppdEFzc2VydChj
b25zdCBTY29wZWRMYW1iZGE8SnVtcCh2b2lkKT4mIGZ1bmN0b3IpCiAjaWYgRU5BQkxFKE1BU01f
UFJPQkUpCiBzdGF0aWMgdm9pZCBzdGRGdW5jdGlvbkNhbGxiYWNrKFByb2JlOjpDb250ZXh0JiBj
b250ZXh0KQogewotICAgIGF1dG8gZnVuYyA9IGNvbnRleHQuYXJnPGNvbnN0IHN0ZDo6ZnVuY3Rp
b248dm9pZChQcm9iZTo6Q29udGV4dCYpPio+KCk7CisgICAgYXV0byBmdW5jID0gY29udGV4dC5h
cmc8Y29uc3QgRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPio+KCk7CiAgICAgKCpmdW5j
KShjb250ZXh0KTsKIH0KICAgICAKLXZvaWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKHN0ZDo6ZnVu
Y3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPiBmdW5jKQordm9pZCBNYWNyb0Fzc2VtYmxlcjo6
cHJvYmUoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPiBmdW5jKQogewotICAgIHByb2Jl
KHN0ZEZ1bmN0aW9uQ2FsbGJhY2ssIG5ldyBzdGQ6OmZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRl
eHQmKT4oZnVuYykpOworICAgIHByb2JlKHN0ZEZ1bmN0aW9uQ2FsbGJhY2ssIG5ldyBGdW5jdGlv
bjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KFdURk1vdmUoZnVuYykpKTsKIH0KICNlbmRpZiAvLyBF
TkFCTEUoTUFTTV9QUk9CRSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGY5NTgxNTYwYzRhYTM1ZDk3MWU4ZTBhNDdlY2M0YTQ2
MWM1NWMzN2UuLjZhMTVhODZjYzFhNzRmMjA5Njc3YTM5ZjZlY2U5MDhkMzUxMjQxMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAg
LTE5NTQsNyArMTk1NCw3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNz
ZW1ibGVyQmFzZSB7CiAgICAgLy8gTWFjcm9Bc3NlbWJsZXIuCiAgICAgdm9pZCBwcm9iZShQcm9i
ZTo6RnVuY3Rpb24sIHZvaWQqIGFyZyk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHBy
b2JlKHN0ZDo6ZnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBwcm9iZShGdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KTsKIAog
ICAgIC8vIExldCdzIHlvdSBwcmludCBmcm9tIHlvdXIgSklUIGdlbmVyYXRlZCBjb2RlLgogICAg
IC8vIFNlZSBjb21tZW50cyBpbiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCBmb3IgZXhhbXBsZXMg
b2YgaG93IHRvIHVzZSB0aGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJEaXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJEaXNhc3NlbWJsZXIuY3BwCmluZGV4IGU1ZmUwYjUxMjA0OGRkNTY3MTFkMTQ1ZTA3ZWE2MWM1
MzExZTkyN2IuLmI2NDFkN2FlMDRhNTcyZGYwMTg2YjVmM2EwZGMyNDI0ZGEwN2ZmNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRGlzYXNzZW1ibGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckRpc2Fzc2VtYmxlci5jcHAKQEAg
LTY5LDcgKzY5LDcgQEAgdm9pZCBEaXNhc3NlbWJsZXI6OmFkZEluc3QoSW5zdCogaW5zdCwgQ0Nh
bGxIZWxwZXJzOjpMYWJlbCBzdGFydCwgQ0NhbGxIZWxwZXJzOjoKICAgICBSRUxFQVNFX0FTU0VS
VChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wKENv
ZGUmIGNvZGUsIFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIGNvbnN0
IGNoYXIqIGFpclByZWZpeCwgY29uc3QgY2hhciogYXNtUHJlZml4LCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoSW5zdCYpPiBkb1RvRWFjaEluc3QpCit2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcChDb2RlJiBj
b2RlLCBQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBjb25zdCBjaGFy
KiBhaXJQcmVmaXgsIGNvbnN0IGNoYXIqIGFzbVByZWZpeCwgY29uc3QgU2NvcGVkTGFtYmRhPHZv
aWQoSW5zdCYpPiYgZG9Ub0VhY2hJbnN0KQogewogICAgIGF1dG8gZHVtcEFzbVJhbmdlID0gWyZd
IChDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YXJ0TGFiZWwsIENDYWxsSGVscGVyczo6TGFiZWwgZW5k
TGFiZWwpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhcnRMYWJlbC5pc1NldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRGlzYXNzZW1ibGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckRpc2Fzc2VtYmxlci5oCmluZGV4IGMy
NjkwZTVjNDcyODNjOTI0M2JkMmY3ZjI4Y2ZmZmVmZjJmOTA4MDYuLmY4YTJiNjgwYjBjMTZjY2Zk
MTEyNDQzOTYwNThiYTNlODM4ZmE1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyRGlzYXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJEaXNhc3NlbWJsZXIuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBEaXNhc3NlbWJs
ZXIgewogICAgIHZvaWQgc3RhcnRCbG9jayhCYXNpY0Jsb2NrKiwgQ0NhbGxIZWxwZXJzJik7CiAg
ICAgdm9pZCBhZGRJbnN0KEluc3QqLCBDQ2FsbEhlbHBlcnM6OkxhYmVsLCBDQ2FsbEhlbHBlcnM6
OkxhYmVsKTsKIAotICAgIHZvaWQgZHVtcChDb2RlJiwgUHJpbnRTdHJlYW0mLCBMaW5rQnVmZmVy
JiwgY29uc3QgY2hhciogYWlyUHJlZml4LCBjb25zdCBjaGFyKiBhc21QcmVmaXgsIHN0ZDo6ZnVu
Y3Rpb248dm9pZChJbnN0Jik+IGRvVG9FYWNoSW5zdCk7CisgICAgdm9pZCBkdW1wKENvZGUmLCBQ
cmludFN0cmVhbSYsIExpbmtCdWZmZXImLCBjb25zdCBjaGFyKiBhaXJQcmVmaXgsIGNvbnN0IGNo
YXIqIGFzbVByZWZpeCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoSW5zdCYpPiYgZG9Ub0VhY2hJ
bnN0KTsKIAogcHJpdmF0ZToKICAgICBIYXNoTWFwPEluc3QqLCBzdGQ6OnBhaXI8Q0NhbGxIZWxw
ZXJzOjpMYWJlbCwgQ0NhbGxIZWxwZXJzOjpMYWJlbD4+IG1faW5zdFRvUmFuZ2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCmluZGV4IDU1ZjVlYTEwYmJkZGQ4ZTU0MTAxNDBiY2FmNzEyZmNiNmI0NTBlNzMuLjYw
MTVkYTk4MDA5YTc2NmVjNmFlNjE3ZjdlY2RlMzUyYTg3Y2FmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC0zNDAsNyArMzQwLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBpZiAoc2hv
dWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzKQogICAgICAgICBmdW5jdGlvbk5vZGUtPnZhckRlY2xh
cmF0aW9ucygpLm1hcmtBbGxWYXJpYWJsZXNBc0NhcHR1cmVkKCk7CiAgICAgCi0gICAgYXV0byBj
YXB0dXJlcyA9IFsmXSAoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkgLT4gYm9vbCB7CisgICAgYXV0
byBjYXB0dXJlcyA9IHNjb3BlZExhbWJkYTxib29sIChVbmlxdWVkU3RyaW5nSW1wbCopPihbJl0g
KFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpIC0+IGJvb2wgewogICAgICAgICBpZiAoIXNob3VsZENh
cHR1cmVTb21lT2ZUaGVUaGluZ3MpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGlmIChuZWVkc0FyZ3VtZW50cyAmJiB1aWQgPT0gcHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cy5p
bXBsKCkpIHsKQEAgLTM1MSw3ICszNTEsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
Tm9kZS0+Y2FwdHVyZXModWlkKTsKLSAgICB9OworICAgIH0pOwogICAgIGF1dG8gdmFyS2luZCA9
IFsmXSAoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkgLT4gVmFyS2luZCB7CiAgICAgICAgIHJldHVy
biBjYXB0dXJlcyh1aWQpID8gVmFyS2luZDo6U2NvcGUgOiBWYXJLaW5kOjpTdGFjazsKICAgICB9
OwpAQCAtOTc1LDcgKzk3NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjp+Qnl0ZWNvZGVHZW5lcmF0
b3IoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplRGVmYXVsdFBhcmFtZXRl
clZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKAogICAgIEZ1bmN0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgYm9vbCBpc1NpbXBsZVBhcmFtZXRlckxpc3QsIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBTeW1ib2xUYWJsZSogZnVuY3Rpb25TeW1ib2xUYWJsZSwgCi0gICAgaW50
IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChVbmlx
dWVkU3RyaW5nSW1wbCopPiYgY2FwdHVyZXMsIGJvb2wgc2hvdWxkQ3JlYXRlQXJndW1lbnRzVmFy
aWFibGVJblBhcmFtZXRlclNjb3BlKQorICAgIGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgs
IGNvbnN0IFNjb3BlZExhbWJkYTxib29sIChVbmlxdWVkU3RyaW5nSW1wbCopPiYgY2FwdHVyZXMs
IGJvb2wgc2hvdWxkQ3JlYXRlQXJndW1lbnRzVmFyaWFibGVJblBhcmFtZXRlclNjb3BlKQogewog
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8SWRlbnRpZmllciwgUmVmUHRyPFJlZ2lzdGVySUQ+Pj4gdmFs
dWVzVG9Nb3ZlSW50b1ZhcnM7CiAgICAgQVNTRVJUKCEoaXNTaW1wbGVQYXJhbWV0ZXJMaXN0ICYm
IHNob3VsZENyZWF0ZUFyZ3VtZW50c1ZhcmlhYmxlSW5QYXJhbWV0ZXJTY29wZSkpOwpAQCAtNDI5
NCw3ICs0Mjk0LDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0
aW9uSWZOZWVkZWQoY29uc3QgVmFyaWFibGUmIHZhcmlhYmxlKQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxC
YWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFi
bGUpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2Nv
cGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFj
aywgRm9yT2ZOb2RlKiBmb3JMb29wTm9kZSwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxl
KQogewogICAgIGJvb2wgaXNGb3JBd2FpdCA9IGZvckxvb3BOb2RlID8gZm9yTG9vcE5vZGUtPmlz
Rm9yQXdhaXQoKSA6IGZhbHNlOwogICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCAoaXNGb3JBd2Fp
dCAmJiBpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
aW5kZXggZjU3YTQ3YzMyNGI3NmYyOTkyNWYzYWNkMzc2YjIzOGRlNDE1YWFmZC4uOTgxMTZkMzcz
Y2E4NjgxZjUzOThjNzI3OWY2ZmRiY2VkMjc0Y2FiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNzQ4LDcg
Kzc0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRDYWxsRGVmaW5lUHJv
cGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdpc3Rl
ciwKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdl
dHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9u
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsKIAotICAgICAgICB2b2lkIGVtaXRFbnVtZXJhdGlv
bihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBFeHByZXNzaW9uTm9k
ZSogc3ViamVjdE5vZGUsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqID0gbnVsbHB0ciwgUmVnaXN0
ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CisgICAgICAgIHZvaWQgZW1pdEVu
dW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJl
c3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiA9IG51bGxwdHIs
IFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwogCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRHZXRUZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFRhZ2dlZFRl
bXBsYXRlTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0R2xvYmFsUHJpdmF0ZShS
ZWdpc3RlcklEKiBkc3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKQEAgLTExMTAsNyAr
MTExMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVBhcmFt
ZXRlcnMoRnVuY3Rpb25QYXJhbWV0ZXJzJik7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVZhckxl
eGljYWxFbnZpcm9ubWVudChpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBTeW1ib2xUYWJs
ZSogZnVuY3Rpb25TeW1ib2xUYWJsZSwgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcyk7Ci0gICAg
ICAgIHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9u
U2NvcGVTdGFjayhGdW5jdGlvblBhcmFtZXRlcnMmLCBib29sIGlzU2ltcGxlUGFyYW1ldGVyTGlz
dCwgRnVuY3Rpb25Ob2RlKiwgU3ltYm9sVGFibGUqLCBpbnQgc3ltYm9sVGFibGVDb25zdGFudElu
ZGV4LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKFVuaXF1ZWRTdHJpbmdJbXBsKik+JiBjYXB0
dXJlcywgYm9vbCBzaG91bGRDcmVhdGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2NvcGUp
OworICAgICAgICB2b2lkIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBG
dW5jdGlvblNjb3BlU3RhY2soRnVuY3Rpb25QYXJhbWV0ZXJzJiwgYm9vbCBpc1NpbXBsZVBhcmFt
ZXRlckxpc3QsIEZ1bmN0aW9uTm9kZSosIFN5bWJvbFRhYmxlKiwgaW50IHN5bWJvbFRhYmxlQ29u
c3RhbnRJbmRleCwgY29uc3QgU2NvcGVkTGFtYmRhPGJvb2wgKFVuaXF1ZWRTdHJpbmdJbXBsKik+
JiBjYXB0dXJlcywgYm9vbCBzaG91bGRDcmVhdGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVy
U2NvcGUpOwogICAgICAgICB2b2lkIGluaXRpYWxpemVBcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3Bl
SWZOZWVkZWQoU3ltYm9sVGFibGUqIGZ1bmN0aW9uU3ltYm9sVGFibGUgPSBudWxscHRyLCBib29s
IGNhblJldXNlTGV4aWNhbEVudmlyb25tZW50ID0gZmFsc2UpOwogICAgICAgICBib29sIG5lZWRz
RGVyaXZlZENvbnN0cnVjdG9ySW5BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAppbmRleCAxOTFlZjFjMDdiYmI5YjE4OWI3ZDY5NjNlZDQyZjY5YTYyMGY5MmUzLi4yMjE1
ZDI1MDI0NWYxNjdiNGNkNDU1ZWU5MWQ0NjQxYjJiMTNlYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC00NTcsMTEg
KzQ1NywxMSBAQCBSZWdpc3RlcklEKiBBcnJheU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIAogaGFuZGxlU3ByZWFkOgog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbmRleCA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIGpzTnVtYmVyKGxlbmd0aCkpOwotICAgIGF1dG8gc3ByZWFkZXIg
PSBbYXJyYXksIGluZGV4XShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiB2YWx1ZSkKKyAgICBhdXRvIHNwcmVhZGVyID0gc2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+KFthcnJheSwgaW5kZXhdKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlKQogICAgIHsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXREaXJlY3RQdXRCeVZhbChhcnJheS5nZXQoKSwgaW5kZXguZ2V0KCksIHZhbHVlKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRJbmMoaW5kZXguZ2V0KCkpOwotICAgIH07CisgICAgfSk7CiAg
ICAgZm9yICg7IG47IG4gPSBuLT5uZXh0KCkpIHsKICAgICAgICAgaWYgKG4tPmVsaXNpb24oKSkK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3BfYWRkLCBpbmRleC5nZXQoKSwg
aW5kZXguZ2V0KCksIGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc051bWJlcihuLT5lbGlzaW9uKCkp
KSwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMyKCksIFJlc3VsdFR5
cGU6Om51bWJlclR5cGVJc0ludDMyKCkpKTsKQEAgLTE0NTUsNyArMTQ1NSw3IEBAIFJlZ2lzdGVy
SUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsCiAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNS
ZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGpz
VW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmd1bWVu
dHNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGF1dG8g
ZXh0cmFjdG9yID0gWyZ0aGlzUmVnaXN0ZXIsICZhcmd1bWVudHNSZWdpc3RlciwgJmluZGV4XShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSkKKyAgICAgICAg
ICAgICAgICBhdXRvIGV4dHJhY3RvciA9IHNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCopPihbJnRoaXNSZWdpc3RlciwgJmFyZ3VtZW50c1JlZ2lzdGVyLCAm
aW5kZXhdKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlKQog
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiBoYXZlVGhp
cyA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICBSZWY8TGFiZWw+
IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpAQCAtMTQ3MSw3ICsxNDcxLDcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJn
dW1lbnRzUmVnaXN0ZXIuZ2V0KCksIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRMb2FkKGluZGV4LmdldCgpLCBqc051bWJlcigyKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKLSAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RW51bWVy
YXRpb24odGhpcywgc3ByZWFkLT5leHByZXNzaW9uKCksIGV4dHJhY3Rvcik7CiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJnc0luVGFpbFBvc2l0aW9uKHJldHVyblZhbHVl
LmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJndW1lbnRz
UmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6WWVzKTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpIHsKQEAgLTMyMTYsNyArMzIx
Niw3IEBAIHZvaWQgRm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJv
bFRhYmxlID0gbnVsbHB0cjsKICAgICBnZW5lcmF0b3IucHVzaExleGljYWxTY29wZSh0aGlzLCBC
eXRlY29kZUdlbmVyYXRvcjo6VERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBCeXRlY29k
ZUdlbmVyYXRvcjo6TmVzdGVkU2NvcGVUeXBlOjpJc05lc3RlZCwgJmZvckxvb3BTeW1ib2xUYWJs
ZSk7Ci0gICAgYXV0byBleHRyYWN0b3IgPSBbdGhpcywgZHN0XShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSkKKyAgICBhdXRvIGV4dHJhY3RvciA9IHNjb3Bl
ZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPihbdGhpcywgZHN0
XShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSkKICAgICB7
CiAgICAgICAgIGlmIChtX2xleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgICAgIGNv
bnN0IElkZW50aWZpZXImIGlkZW50ID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2xleHBy
KS0+aWRlbnRpZmllcigpOwpAQCAtMzI2Nyw3ICszMjY3LDcgQEAgdm9pZCBGb3JPZk5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9z
dGF0ZW1lbnQtPnN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0
LCBtX3N0YXRlbWVudCk7Ci0gICAgfTsKKyAgICB9KTsKICAgICBnZW5lcmF0b3IuZW1pdEVudW1l
cmF0aW9uKHRoaXMsIG1fZXhwciwgZXh0cmFjdG9yLCB0aGlzLCBmb3JMb29wU3ltYm9sVGFibGUp
OwogICAgIGdlbmVyYXRvci5wb3BMZXhpY2FsU2NvcGUodGhpcyk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlQ29udHJvbEZsb3cobV9zdGF0ZW1lbnQtPmVuZE9mZnNldCgpICsgKG1fc3RhdGVt
ZW50LT5pc0Jsb2NrKCkgPyAxIDogMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA3ZGViODk4Mjg3YjE5ZGU2MmUyNDgxOWRmZjAz
YTA2NWNmMGYwMWJhLi4zOGViYjMyYmFmNGM3MDU4MDdjMjIwZDY0MDE5NzVjN2VmMzE5N2FiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtMzg4LDkgKzM4OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFkZFNsb3dQYXRoR2VuZXJh
dG9yKHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvCiAgICAgbV9zbG93UGF0
aEdlbmVyYXRvcnMuYXBwZW5kKFdURk1vdmUoc2xvd1BhdGhHZW5lcmF0b3IpKTsKIH0KIAotdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IGxhbWJkYSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFkZFNsb3dQYXRoR2VuZXJhdG9yTGFt
YmRhKEZ1bmN0aW9uPHZvaWQoKT4mJiBsYW1iZGEpCiB7Ci0gICAgbV9zbG93UGF0aExhbWJkYXMu
YXBwZW5kKFNsb3dQYXRoTGFtYmRheyBsYW1iZGEsIG1fY3VycmVudE5vZGUsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3N0cmVhbS0+c2l6ZSgpKSB9KTsKKyAgICBtX3Nsb3dQYXRoTGFtYmRhcy5h
cHBlbmQoU2xvd1BhdGhMYW1iZGF7IFdURk1vdmUobGFtYmRhKSwgbV9jdXJyZW50Tm9kZSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fc3RyZWFtLT5zaXplKCkpIH0pOwogfQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpydW5TbG93UGF0aEdlbmVyYXRvcnMoUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVy
JiBwY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpCkBAIC0zOTAwLDcgKzM5MDAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxH
ZW5lcmF0b3I+KiBtYXRoSQogCiAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0LmxhYmVsKCk7CiAK
LSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoWz0sIHNhdmVQbGFucyA9IFdURk1vdmUoc2F2
ZVBsYW5zKV0gKCkgeworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvckxhbWJkYShbPSwgc2F2
ZVBsYW5zID0gV1RGTW92ZShzYXZlUGxhbnMpXSAoKSB7CiAgICAgICAgICAgICBhZGRJQ0dlbmVy
YXRpb25TdGF0ZS0+c2xvd1BhdGhKdW1wcy5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBhZGRJ
Q0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhTdGFydCA9IG1faml0LmxhYmVsKCk7CiAjaWYgRU5B
QkxFKE1BVEhfSUNfU1RBVFMpCkBAIC00NjA4LDcgKzQ2MDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4q
IG1hdGhJQwogCiAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0LmxhYmVsKCk7CiAKLSAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoWz0sIHNhdmVQbGFucyA9IFdURk1vdmUoc2F2ZVBsYW5zKV0g
KCkgeworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvckxhbWJkYShbPSwgc2F2ZVBsYW5zID0g
V1RGTW92ZShzYXZlUGxhbnMpXSAoKSB7CiAgICAgICAgICAgICBpY0dlbmVyYXRpb25TdGF0ZS0+
c2xvd1BhdGhKdW1wcy5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBpY0dlbmVyYXRpb25TdGF0
ZS0+c2xvd1BhdGhTdGFydCA9IG1faml0LmxhYmVsKCk7CiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RB
VFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5k
ZXggYWU3ZmU4YjkyOTgxZDQ5ZTQyYWVjNWIyZWIxMmYzYmIxNzJjMTE3Zi4uNjViZTJkMWFkODRl
NWZmNjU5ZTNhODk3YjJiMDg1ZmUyN2E0MDk1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMzU2LDcgKzM1Niw3IEBAIGNsYXNzIFNwZWN1
bGF0aXZlSklUIHsKICAgICBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBjaGVja0dlbmVyYXRlZFR5cGVG
b3JUb0ludDMyKE5vZGUqKTsKIAogICAgIHZvaWQgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPik7Ci0gICAgdm9pZCBhZGRTbG93UGF0aEdlbmVy
YXRvcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworICAgIHZvaWQgYWRkU2xvd1BhdGhHZW5lcmF0
b3JMYW1iZGEoRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICB2b2lkIHJ1blNsb3dQYXRoR2VuZXJh
dG9ycyhQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXImKTsKICAgICAKICAgICB2b2lkIGNvbXBpbGUo
Tm9kZSopOwpAQCAtMTcyMCw3ICsxNzIwLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAg
IAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+LCA4PiBtX3Ns
b3dQYXRoR2VuZXJhdG9yczsKICAgICBzdHJ1Y3QgU2xvd1BhdGhMYW1iZGEgewotICAgICAgICBz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZ2VuZXJhdG9yOworICAgICAgICBGdW5jdGlvbjx2b2lkKCk+
IGdlbmVyYXRvcjsKICAgICAgICAgTm9kZSogY3VycmVudE5vZGU7CiAgICAgICAgIHVuc2lnbmVk
IHN0cmVhbUluZGV4OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiODIzNzBmNzZmMDE5YzdiYjI3M2RkMWJkZWJl
ZjQ5ODU2MzYyYjVjLi41NzkyNTk0YTI4NGExNjRlYzA3YWE4OWQ3YTU0YTc3NDc5ZmQyYjhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTQ1NjUsNyArNDU2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnNJbXBsKGZhbHNlLCBzYXZl
UGxhbnMsIEludmFsaWRHUFJSZWcpOwogICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0g
bm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXg7CiAKLSAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoWz1dKCkgeworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvckxhbWJkYShb
PV0oKSB7CiAgICAgICAgICAgICBjYWxsVGllclVwLmxpbmsoJm1faml0KTsKIAogICAgICAgICAg
ICAgc2lsZW50U3BpbGwoc2F2ZVBsYW5zKTsKQEAgLTQ2MTcsNyArNDYxNyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgdW5zaWduZWQgc3RyZWFt
SW5kZXggPSBtX3N0cmVhbS0+c2l6ZSgpOwogICAgICAgICBtX2ppdC5qaXRDb2RlKCktPmJ5dGVj
b2RlSW5kZXhUb1N0cmVhbUluZGV4LmFkZChieXRlY29kZUluZGV4LCBzdHJlYW1JbmRleCk7CiAK
LSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoWz1dKCkgeworICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvckxhbWJkYShbPV0oKSB7CiAgICAgICAgICAgICBmb3JjZU9TUkVudHJ5Lmxpbmso
Jm1faml0KTsKICAgICAgICAgICAgIG92ZXJmbG93ZWRDb3VudGVyLmxpbmsoJm1faml0KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCA3YWE4NzFhNjBm
YjQ5ZmZhNzI2MzY0NGExODQ2YjA2ODdlNWFiYjM5Li4yMGNmNzVjMDg4YmYzYzA5MjI5Y2ZjMzdm
OGYyZmY0Y2E2MmEzMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRl
LmNwcApAQCAtMzc3LDggKzM3Nyw4IEBAIGNsYXNzIFZhbGlkYXRlIHsKIAogICAgICAgICAvLyBW
YWxpZGF0ZSBjbG9iYmVyZWQgc3RhdGVzLgogICAgICAgICBzdHJ1Y3QgRGVmTGFtYmRhQWRhcHRv
ciB7Ci0gICAgICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoUHVyZVZhbHVlKT4gcHVyZVZhbHVl
OwotICAgICAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKEhlYXBMb2NhdGlvbiwgTGF6eU5vZGUp
PiBsb2NhdGlvbkFuZE5vZGU7CisgICAgICAgICAgICBGdW5jdGlvbjx2b2lkKFB1cmVWYWx1ZSk+
IHB1cmVWYWx1ZTsKKyAgICAgICAgICAgIEZ1bmN0aW9uPHZvaWQoSGVhcExvY2F0aW9uLCBMYXp5
Tm9kZSk+IGxvY2F0aW9uQW5kTm9kZTsKIAogICAgICAgICAgICAgdm9pZCBvcGVyYXRvcigpKFB1
cmVWYWx1ZSB2YWx1ZSkgY29uc3QKICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IGE1NWU1YjY2YjJmNjk0Y2E2YmMyZDNhNWRkZDk1YTdh
NzY0N2EyNTYuLmNhODdkYTMxNWJlZDUxZWYxY2M5MWJmNzRjMDZiYjBmODdiZWVhNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApAQCAtNDgsNyArNDgsNyBAQAog
I2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgog
I2luY2x1ZGUgIlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIgotI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SZWN1cnNhYmxlTGFtYmRhLmg+CiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgRlRMIHsKIApAQCAtMjE1LDI1ICsyMTUsMjUgQEAgdm9pZCBjb21waWxl
KFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAg
ICAgICAgIHByaW50REZHTm9kZShiaXR3aXNlX2Nhc3Q8Tm9kZSo+KHZhbHVlLT5vcmlnaW4oKS5k
YXRhKCkpKTsKIAogICAgICAgICAgICAgSGFzaFNldDxCMzo6VmFsdWUqPiBsb2NhbFByaW50ZWRW
YWx1ZXM7Ci0gICAgICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoQjM6OlZhbHVlKik+IHByaW50
VmFsdWVSZWN1cnNpdmUgPSBbJl0gKEIzOjpWYWx1ZSogdmFsdWUpIHsKKyAgICAgICAgICAgIGF1
dG8gcHJpbnRWYWx1ZVJlY3Vyc2l2ZSA9IHJlY3Vyc2FibGVMYW1iZGEoWyZdIChhdXRvIHNlbGYs
IEIzOjpWYWx1ZSogdmFsdWUpIC0+IHZvaWQgewogICAgICAgICAgICAgICAgIGlmIChwcmludGVk
VmFsdWVzLmNvbnRhaW5zKHZhbHVlKSB8fCBsb2NhbFByaW50ZWRWYWx1ZXMuY29udGFpbnModmFs
dWUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgICAgICBsb2Nh
bFByaW50ZWRWYWx1ZXMuYWRkKHZhbHVlKTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdmFsdWUtPm51bUNoaWxkcmVuKCk7IGkrKykKLSAgICAgICAgICAgICAgICAg
ICAgcHJpbnRWYWx1ZVJlY3Vyc2l2ZSh2YWx1ZS0+Y2hpbGQoaSkpOworICAgICAgICAgICAgICAg
ICAgICBzZWxmKHZhbHVlLT5jaGlsZChpKSk7CiAgICAgICAgICAgICAgICAgb3V0LnByaW50KGIz
UHJlZml4KTsKICAgICAgICAgICAgICAgICB2YWx1ZS0+ZGVlcER1bXAoc3RhdGUucHJvYy5nZXQo
KSwgb3V0KTsKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAgICAgICAgICB9
OworICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIHByaW50VmFsdWVSZWN1cnNpdmUoY3Vy
cmVudEIzVmFsdWUpOwogICAgICAgICAgICAgcHJpbnRlZFZhbHVlcy5hZGQodmFsdWUpOwogICAg
ICAgICB9OwogCi0gICAgICAgIGF1dG8gZm9yRWFjaEluc3QgPSBbJl0gKEIzOjpBaXI6Okluc3Qm
IGluc3QpIHsKKyAgICAgICAgYXV0byBmb3JFYWNoSW5zdCA9IHNjb3BlZExhbWJkYTx2b2lkKEIz
OjpBaXI6Okluc3QmKT4oWyZdIChCMzo6QWlyOjpJbnN0JiBpbnN0KSB7CiAgICAgICAgICAgICBw
cmludEIzVmFsdWUoaW5zdC5vcmlnaW4pOwotICAgICAgICB9OworICAgICAgICB9KTsKIAogICAg
ICAgICBkaXNhc3NlbWJsZXItPmR1bXAoc3RhdGUucHJvYy0+Y29kZSgpLCBvdXQsIGxpbmtCdWZm
ZXIsIGFpclByZWZpeCwgYXNtUHJlZml4LCBmb3JFYWNoSW5zdCk7CiAgICAgICAgIGxpbmtCdWZm
ZXIuZGlkQWxyZWFkeURpc2Fzc2VtYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCmluZGV4IDY1ZjYzM2ZhY2RhMmM3ODU2ODBh
ODVlNzg5ZjhhZWY0ODk3OTI2NDMuLmI1ZmU0MjQ3OGEzOGZiZGZhNTIwYmM3ZGYxYmNiMmM2MGM1
MGM5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hv
dEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hv
dEJ1aWxkZXIuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxk
ZXI6Ompzb24oKQogICAgIHJldHVybiBqc29uKFtdIChjb25zdCBIZWFwU25hcHNob3ROb2RlJikg
eyByZXR1cm4gdHJ1ZTsgfSk7CiB9CiAKLVN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KHN0ZDo6ZnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd05vZGVD
YWxsYmFjaykKK1N0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW9uPGJvb2wg
KGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOb2RlQ2FsbGJhY2spCiB7CiAgICAgVk0m
IHZtID0gbV9wcm9maWxlci52bSgpOwogICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5o
ZWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hv
dEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxk
ZXIuaAppbmRleCAwZWQ4NWQxOWY0OGU3NGEzOGI0NjY5MTdhMmRhNTMwZGE0YzEzY2IyLi5hZTdm
MGJkMGMzZTQyMzE0NTY0M2Q3M2RkMjJmZjVjODA0OGVjMThhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5oCkBAIC0xMjEsNyArMTIxLDcg
QEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSGVhcFNuYXBzaG90QnVpbGRlciB7CiAgICAgdm9p
ZCBhcHBlbmRJbmRleEVkZ2UoSlNDZWxsKiBmcm9tLCBKU0NlbGwqIHRvLCB1aW50MzJfdCBpbmRl
eCk7CiAKICAgICBTdHJpbmcganNvbigpOwotICAgIFN0cmluZyBqc29uKHN0ZDo6ZnVuY3Rpb248
Ym9vbCAoY29uc3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd05vZGVDYWxsYmFjayk7CisgICAg
U3RyaW5nIGpzb24oRnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxv
d05vZGVDYWxsYmFjayk7CiAKIHByaXZhdGU6CiAgICAgLy8gRmluYWxpemVkIHNuYXBzaG90cyBh
cmUgbm90IG1vZGlmaWVkIGR1cmluZyBidWlsZGluZy4gU28gc2VhcmNoaW5nIHRoZW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5k
ZXggMTM0ZjQyZjEyZjUzOTE1MDM0ZGFhODEwNjk5MTBiYmE1MDdkMDg3MS4uY2FlM2Q5YTQ0MmVj
ZmJlZDQ4OTYyNmYxMjU0NTRlZGE4ZjlmMDkyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTQyNiw3ICs0MjYsNyBAQCB2
b2lkIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgSW5kZW50ZXIg
aW5kZW50KSBjb25zdAogICAgIGR1bXAob3V0LCBpbmRlbnQsIFtdIChQcmludFN0cmVhbSYpIHsg
fSk7CiB9CiAKLXZvaWQgU3RhY2tWaXNpdG9yOjpGcmFtZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
LCBJbmRlbnRlciBpbmRlbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZChQcmludFN0cmVhbSYpPiBwcmVm
aXgpIGNvbnN0Cit2b2lkIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCwgSW5kZW50ZXIgaW5kZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoUHJpbnRTdHJlYW0mKT4gcHJl
Zml4KSBjb25zdAogewogICAgIGlmICghdGhpcy0+Y2FsbEZyYW1lKCkpIHsKICAgICAgICAgb3V0
LnByaW50KGluZGVudCwgImZyYW1lIDB4MFxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKaW5kZXggNDc1NWE5MzY0NDU5OGU4ZjQ1N2Ri
MDI3MWVhZDBjZWYzNTVlZGUzZC4uNmJmODMzMTExYjk3NmFmMjJjYjgxN2YxZmJhMmQ2OTMwZTRl
MGZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNr
VmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuaApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkNhbGxlZUJpdHMuaCIKICNpbmNs
dWRlICJWTUVudHJ5UmVjb3JkLmgiCiAjaW5jbHVkZSAiV2FzbUluZGV4T3JOYW1lLmgiCi0jaW5j
bHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvSW5kZW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTAw
LDcgKzEwMCw3IEBAIGNsYXNzIFN0YWNrVmlzaXRvciB7CiAgICAgICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnJhbWU7IH0KICAgICAgICAgCiAgICAgICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYsIEluZGVudGVyID0gSW5kZW50ZXIoKSkgY29uc3Q7Ci0g
ICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYsIEluZGVudGVyLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoUHJpbnRTdHJlYW0mKT4gcHJlZml4KSBjb25zdDsKKyAgICAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJiwgSW5kZW50ZXIsIFdURjo6RnVuY3Rpb248dm9pZChQcmludFN0cmVhbSYpPiBwcmVm
aXgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRnJhbWUoKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5oCmlu
ZGV4IDZjMDU0MmM5ZDVkZWJmMjhiZDE4NDU4NzRhMDYxYjBjYjZkNWNhMTguLjYxNWIwODc3ZTc4
YWI3NWUzZjBhZThhY2VjZjY0MGRkMTQxNDY4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZURlZmVycmVkVGltZXIuaApAQCAtNTIsNyArNTIsNyBA
QCBjbGFzcyBQcm9taXNlRGVmZXJyZWRUaW1lciA6IHB1YmxpYyBKU1J1bkxvb3BUaW1lciB7CiAg
ICAgLy8gSlNQcm9taXNlRGVmZXJyZWQgc2hvdWxkIGhhbmRsZSBjYW5jZWxpbmcgd2hlbiB0aGUg
cHJvbWlzZSBpcyByZXNvbHZlZCBvciByZWplY3RlZC4KICAgICBib29sIGNhbmNlbFBlbmRpbmdQ
cm9taXNlKEpTUHJvbWlzZURlZmVycmVkKik7CiAKLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBUYXNrOworICAgIHVzaW5nIFRhc2sgPSBGdW5jdGlvbjx2b2lkKCk+OwogICAgIHZv
aWQgc2NoZWR1bGVXb3JrU29vbihKU1Byb21pc2VEZWZlcnJlZCosIFRhc2smJik7CiAKICAgICB2
b2lkIHN0b3BSdW5uaW5nVGFza3MoKSB7IG1fcnVuVGFza3MgPSBmYWxzZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDI0YjlmNjA1YTY0ZGUyNDY4YWNhOTYyNDEyMjhm
OTg4MjE1OWJjM2UuLjMzNzEyODI0ZTQ4ZTkyZTI3ZDNlZTkzYTYzNjY0MDBjN2FmM2QyMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTc1MywxNCArNzUzLDE0IEBAIHZv
aWQgVk06OnJlc2V0RGF0ZUNhY2hlKCkKICAgICBkYXRlSW5zdGFuY2VDYWNoZS5yZXNldCgpOwog
fQogCi12b2lkIFZNOjp3aGVuSWRsZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY2FsbGJhY2spCit2
b2lkIFZNOjp3aGVuSWRsZShGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KCFlbnRyeVNjb3BlKSB7CiAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBlbnRyeVNjb3BlLT5hZGREaWRQb3BMaXN0ZW5lcihjYWxsYmFjayk7CisgICAg
ZW50cnlTY29wZS0+YWRkRGlkUG9wTGlzdGVuZXIoV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2
b2lkIFZNOjpkZWxldGVBbGxMaW5rZWRDb2RlKERlbGV0ZUFsbENvZGVFZmZvcnQgZWZmb3J0KQpA
QCAtMTAyMyw3ICsxMDIzLDggQEAgdm9pZCBWTTo6YWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUpCiAgICAgICAgIHdhdGNocG9pbnRTZXQtPmZpcmVBbGwoKnRoaXMs
ICJJbXB1cmUgcHJvcGVydHkgYWRkZWQiKTsKIH0KIAotc3RhdGljIGJvb2wgZW5hYmxlUHJvZmls
ZXJXaXRoUmVzcGVjdFRvQ291bnQodW5zaWduZWQmIGNvdW50ZXIsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiBkb0VuYWJsZVdvcmspCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorc3RhdGljIGJvb2wg
ZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQodW5zaWduZWQmIGNvdW50ZXIsIGNvbnN0
IEZ1bmMmIGRvRW5hYmxlV29yaykKIHsKICAgICBib29sIG5lZWRzVG9SZWNvbXBpbGUgPSBmYWxz
ZTsKICAgICBpZiAoIWNvdW50ZXIpIHsKQEAgLTEwMzUsNyArMTAzNiw4IEBAIHN0YXRpYyBib29s
IGVuYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KHVuc2lnbmVkJiBjb3VudGVyLCBzdGQ6
OmZ1bmN0aW9uPHZvCiAgICAgcmV0dXJuIG5lZWRzVG9SZWNvbXBpbGU7CiB9CiAKLXN0YXRpYyBi
b29sIGRpc2FibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudCh1bnNpZ25lZCYgY291bnRlciwg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRvRGlzYWJsZVdvcmspCit0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgorc3RhdGljIGJvb2wgZGlzYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KHVuc2ln
bmVkJiBjb3VudGVyLCBjb25zdCBGdW5jJiBkb0Rpc2FibGVXb3JrKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGNvdW50ZXIgPiAwKTsKICAgICBib29sIG5lZWRzVG9SZWNvbXBpbGUgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGViMWFlNjU0Y2NjODRiMzBmZmIxYjFj
YzAxYjJjNTM4MTQxOTYzYWQuLjE4N2MwZmM4NTA5MTkzODg5YWZiYzIzMDQzOTkzMDY4ZTAwYWM1
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNzk2LDcgKzc5Niw3IEBAIGNs
YXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxp
bmtlZExpc3ROb2RlPFZNPiB7CiAgICAgSlNMb2NrJiBhcGlMb2NrKCkgeyByZXR1cm4gKm1fYXBp
TG9jazsgfQogICAgIENvZGVDYWNoZSogY29kZUNhY2hlKCkgeyByZXR1cm4gbV9jb2RlQ2FjaGUu
Z2V0KCk7IH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgd2hlbklkbGUoc3RkOjpmdW5j
dGlvbjx2b2lkKCk+KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHdoZW5JZGxlKEZ1bmN0
aW9uPHZvaWQoKT4mJik7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZUFsbENv
ZGUoRGVsZXRlQWxsQ29kZUVmZm9ydCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZWxl
dGVBbGxMaW5rZWRDb2RlKERlbGV0ZUFsbENvZGVFZmZvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKaW5kZXggNThkYTY4NDZiNjMxZmY1ZGQ0
ODM0YzljMzk0NGNkNmZmNTA2ODU5ZC4uZmJjMmRlMzgyNmEzY2ExNDMyNzcxY2QwODRiMTZmMDY4
ZmE2ZjkwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRy
eVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2Nv
cGUuY3BwCkBAIC02NCw5ICs2NCw5IEBAIFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB2bS5jbGVhckxhc3RFeGNlcHRp
b24oKTsKIH0KIAotdm9pZCBWTUVudHJ5U2NvcGU6OmFkZERpZFBvcExpc3RlbmVyKHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4gbGlzdGVuZXIpCit2b2lkIFZNRW50cnlTY29wZTo6YWRkRGlkUG9wTGlz
dGVuZXIoRnVuY3Rpb248dm9pZCAoKT4mJiBsaXN0ZW5lcikKIHsKLSAgICBtX2RpZFBvcExpc3Rl
bmVycy5hcHBlbmQobGlzdGVuZXIpOworICAgIG1fZGlkUG9wTGlzdGVuZXJzLmFwcGVuZChXVEZN
b3ZlKGxpc3RlbmVyKSk7CiB9CiAKIFZNRW50cnlTY29wZTo6flZNRW50cnlTY29wZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCmluZGV4IGMyOTcxZjYx
MzE4ZTAzZGVjYzFhMGExYmE1YTUyY2VjY2M0MzdiYWIuLmFlZWYyMWI3NDhkMWY0N2UyZGE4OGYy
MGRiMjlmZGFkM2I3YTNhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNRW50cnlTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
RW50cnlTY29wZS5oCkBAIC00MSwxMiArNDEsMTIgQEAgY2xhc3MgVk1FbnRyeVNjb3BlIHsKICAg
ICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9CiAKLSAgICB2b2lk
IGFkZERpZFBvcExpc3RlbmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAgIHZvaWQgYWRk
RGlkUG9wTGlzdGVuZXIoRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKIHByaXZhdGU6CiAgICAgVk0m
IG1fdm07CiAgICAgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0OwotICAgIFZlY3Rvcjxz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2RpZFBvcExpc3RlbmVyczsKKyAgICBWZWN0b3I8RnVu
Y3Rpb248dm9pZCAoKT4+IG1fZGlkUG9wTGlzdGVuZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwCmluZGV4
IDI5OTBmZjc4ODBjZDcxMjBmY2YxMTU0N2YyOWEwODZjOTM2YzBhMTAuLmI1OTUzMWZmNmExZTAz
YTY0MzBiMjgyMDFmOWQ3ZDAwY2ZkNzcyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9IZWFwVmVyaWZpZXIuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgYm9vbCBIZWFwVmVyaWZp
ZXI6OnZlcmlmeUNlbGxMaXN0KFBoYXNlIHBoYXNlLCBDZWxsTGlzdCYgbGlzdCkKICAgICBhdXRv
JiBsaXZlQ2VsbHMgPSBsaXN0LmNlbGxzKCk7CiAKICAgICBib29sIGxpc3ROYW1lUHJpbnRlZCA9
IGZhbHNlOwotICAgIGF1dG8gcHJpbnRIZWFkZXJJZk5lZWRlZCA9IFsmXSAoKSB7CisgICAgYXV0
byBwcmludEhlYWRlcklmTmVlZGVkID0gc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdICgpIHsKICAg
ICAgICAgaWYgKGxpc3ROYW1lUHJpbnRlZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
CkBAIC0xNjEsNyArMTYxLDcgQEAgYm9vbCBIZWFwVmVyaWZpZXI6OnZlcmlmeUNlbGxMaXN0KFBo
YXNlIHBoYXNlLCBDZWxsTGlzdCYgbGlzdCkKICAgICAgICAgZGF0YUxvZygiIEAgcGhhc2UgIiwg
cGhhc2VOYW1lKHBoYXNlKSwgIjogRkFJTEVEIGluIGNlbGwgbGlzdCAnIiwgbGlzdC5uYW1lKCks
ICInIChzaXplICIsIGxpdmVDZWxscy5zaXplKCksICIpXG4iKTsKICAgICAgICAgbGlzdE5hbWVQ
cmludGVkID0gdHJ1ZTsKICAgICAgICAgbV9kaWRQcmludExvZ3MgPSB0cnVlOwotICAgIH07Cisg
ICAgfSk7CiAgICAgCiAgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxpdmVDZWxscy5zaXplKCk7IGkrKykgewpAQCAtMTgxLDcgKzE4MSw3IEBAIGJv
b2wgSGVhcFZlcmlmaWVyOjp2ZXJpZnlDZWxsTGlzdChQaGFzZSBwaGFzZSwgQ2VsbExpc3QmIGxp
c3QpCiAKIGJvb2wgSGVhcFZlcmlmaWVyOjp2YWxpZGF0ZUNlbGwoSGVhcENlbGwqIGNlbGwsIFZN
KiBleHBlY3RlZFZNKQogewotICAgIGF1dG8gcHJpbnROb3RoaW5nID0gW10gKCkgeyB9OworICAg
IGF1dG8gcHJpbnROb3RoaW5nID0gc2NvcGVkTGFtYmRhPHZvaWQoKT4oW10gKCkgeyB9KTsKIAog
ICAgIGlmIChjZWxsLT5pc1phcHBlZCgpKSB7CiAgICAgICAgIGRhdGFMb2coIiAgICBjZWxsICIs
IFJhd1BvaW50ZXIoY2VsbCksICIgaXMgWkFQUEVEXG4iKTsKQEAgLTE5NSw5ICsxOTUsOSBAQCBi
b29sIEhlYXBWZXJpZmllcjo6dmFsaWRhdGVDZWxsKEhlYXBDZWxsKiBjZWxsLCBWTSogZXhwZWN0
ZWRWTSkKICAgICByZXR1cm4gdmFsaWRhdGVKU0NlbGwoZXhwZWN0ZWRWTSwganNDZWxsLCBudWxs
cHRyLCBudWxscHRyLCBwcmludE5vdGhpbmcpOwogfQogCi1ib29sIEhlYXBWZXJpZmllcjo6dmFs
aWRhdGVKU0NlbGwoVk0qIGV4cGVjdGVkVk0sIEpTQ2VsbCogY2VsbCwgQ2VsbFByb2ZpbGUqIHBy
b2ZpbGUsIENlbGxMaXN0KiBsaXN0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcHJpbnRIZWFkZXJJ
Zk5lZWRlZCwgY29uc3QgY2hhciogcHJlZml4KQorYm9vbCBIZWFwVmVyaWZpZXI6OnZhbGlkYXRl
SlNDZWxsKFZNKiBleHBlY3RlZFZNLCBKU0NlbGwqIGNlbGwsIENlbGxQcm9maWxlKiBwcm9maWxl
LCBDZWxsTGlzdCogbGlzdCwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoKT4mIHByaW50SGVhZGVy
SWZOZWVkZWQsIGNvbnN0IGNoYXIqIHByZWZpeCkKIHsKLSAgICBhdXRvIHByaW50SGVhZGVyQW5k
Q2VsbCA9IFtjZWxsLCBwcm9maWxlLCBwcmludEhlYWRlcklmTmVlZGVkLCBwcmVmaXhdICgpIHsK
KyAgICBhdXRvIHByaW50SGVhZGVyQW5kQ2VsbCA9IFtjZWxsLCBwcm9maWxlLCAmcHJpbnRIZWFk
ZXJJZk5lZWRlZCwgcHJlZml4XSAoKSB7CiAgICAgICAgIHByaW50SGVhZGVySWZOZWVkZWQoKTsK
ICAgICAgICAgZGF0YUxvZyhwcmVmaXgsICJjZWxsICIsIFJhd1BvaW50ZXIoY2VsbCkpOwogICAg
ICAgICBpZiAocHJvZmlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9IZWFwVmVyaWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZp
ZXIuaAppbmRleCBjYzIwMWM0YTI4MGM4OWU3NTFkNGEzNWU2MTBhZDI2OGU1MTUzZTJlLi40NTY2
NzhlOGNmMjc2ZWVmN2Y0OTRiMzJhZWY1NWJhNmM5OWJhZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
Q2VsbExpc3QuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1Rp
bWUuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1
ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTksNyArMTAwLDcgQEAgY2xhc3MgSGVh
cFZlcmlmaWVyIHsKIAogICAgIENlbGxMaXN0KiBjZWxsTGlzdEZvckdhdGhlcmluZyhQaGFzZSk7
CiAgICAgYm9vbCB2ZXJpZnlDZWxsTGlzdChQaGFzZSwgQ2VsbExpc3QmKTsKLSAgICBzdGF0aWMg
Ym9vbCB2YWxpZGF0ZUpTQ2VsbChWTSogZXhwZWN0ZWRWTSwgSlNDZWxsKiwgQ2VsbFByb2ZpbGUq
LCBDZWxsTGlzdCosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBwcmludEhlYWRlcklmTmVlZGVkLCBj
b25zdCBjaGFyKiBwcmVmaXggPSAiIik7CisgICAgc3RhdGljIGJvb2wgdmFsaWRhdGVKU0NlbGwo
Vk0qIGV4cGVjdGVkVk0sIEpTQ2VsbCosIENlbGxQcm9maWxlKiwgQ2VsbExpc3QqLCBjb25zdCBT
Y29wZWRMYW1iZGE8dm9pZCgpPiYgcHJpbnRIZWFkZXJJZk5lZWRlZCwgY29uc3QgY2hhciogcHJl
Zml4ID0gIiIpOwogCiAgICAgdm9pZCBwcmludFZlcmlmaWNhdGlvbkhlYWRlcigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TY29wZWRMYW1iZGEuaCBiL1NvdXJjZS9XVEYvd3RmL1Nj
b3BlZExhbWJkYS5oCmluZGV4IDY5ZmNlNDA5MDM2NTZiYjVlZWMyYmFjYmE4ZjM1NmYyNjVlYjkx
NzcuLjNjYjJkZjQwZDE5NzUxODkwZGUwOGU0NDhmNzZhYTNiNjdmMzNlNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1Njb3BlZExhbWJkYS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Njb3Bl
ZExhbWJkYS5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFNjb3BlZExhbWJkYV9oCiAjZGVm
aW5lIFNjb3BlZExhbWJkYV9oCiAKKyNpbmNsdWRlIDx3dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24u
aD4KKwogbmFtZXNwYWNlIFdURiB7CiAKIC8vIFlvdSBjYW4gdXNlIFNjb3BlZExhbWJkYSB0byBl
ZmZpY2llbnRseSBwYXNzIGxhbWJkYXMgd2l0aG91dCBhbGxvY2F0aW5nIG1lbW9yeSBvciByZXF1
aXJpbmcKQEAgLTQzLDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdGlvblR5cGU+IGNsYXNzIFNjb3BlZExhbWJkYTsKIHRlbXBsYXRlPHR5cGVuYW1lIFJl
c3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CiBjbGFzcyBTY29wZWRMYW1iZGE8
UmVzdWx0VHlwZSAoQXJndW1lbnRUeXBlcy4uLik+IHsKKyAgICBXVEZfRk9SQklEX0hFQVBfQUxM
T0NBVElPTjsKIHB1YmxpYzoKICAgICBTY29wZWRMYW1iZGEoUmVzdWx0VHlwZSAoKmltcGwpKHZv
aWQqIGFyZywgQXJndW1lbnRUeXBlcy4uLikgPSBudWxscHRyLCB2b2lkKiBhcmcgPSBudWxscHRy
KQogICAgICAgICA6IG1faW1wbChpbXBsKQo=
</data>
<flag name="review"
          id="362605"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>