<?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>133897</bug_id>
          
          <creation_ts>2014-06-13 22:18:07 -0700</creation_ts>
          <short_desc>Make GenericCallback variadic</short_desc>
          <delta_ts>2014-06-14 02:22:49 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>andersca</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1015612</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-06-13 22:18:07 -0700</bug_when>
    <thetext>Make GenericCallback variadic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015614</commentid>
    <comment_count>1</comment_count>
      <attachid>233104</attachid>
    <who name="">mitz</who>
    <bug_when>2014-06-13 22:25:10 -0700</bug_when>
    <thetext>Created attachment 233104
Make GenericCallback variadic, get rid of legacy callback functions, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015616</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-06-13 22:32:45 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r169962&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015642</commentid>
    <comment_count>3</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-06-14 02:22:49 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Committed &lt;http://trac.webkit.org/r169962&gt;.

It broke the GTK build:

../../Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp: In function ‘void webkitPrintOperationPrintPagesForFrame(WebKitPrintOperation*, WebKit::WebFrameProxy*, GtkPrintSettings*, GtkPageSetup*)’:
../../Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:279:6: error: no matching function for call to ‘WebKit::GenericCallback&lt;API::Error*&gt;::create(webkitPrintOperationPrintPagesForFrame(WebKitPrintOperation*, WebKit::WebFrameProxy*, GtkPrintSettings*, GtkPageSetup*)::__lambda3)’
     }));
      ^
../../Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:279:6: note: candidate is:
In file included from ../../Source/WebKit2/UIProcess/WebFrameProxy.h:31:0,
                 from ../../Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperationPrivate.h:24,
                 from ../../Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:23:
../../Source/WebKit2/UIProcess/GenericCallback.h:132:40: note: static WTF::PassRefPtr&lt;WebKit::GenericCallback&lt;T&gt; &gt; WebKit::GenericCallback&lt;T&gt;::create(WebKit::GenericCallback&lt;T&gt;::CallbackFunction) [with T = {API::Error*}; WebKit::GenericCallback&lt;T&gt;::CallbackFunction = std::function&lt;void(API::Error*, WebKit::CallbackBase::Error)&gt;]
     static PassRefPtr&lt;GenericCallback&gt; create(CallbackFunction callback)
                                        ^
../../Source/WebKit2/UIProcess/GenericCallback.h:132:40: note:   no known conversion for argument 1 from ‘webkitPrintOperationPrintPagesForFrame(WebKitPrintOperation*, WebKit::WebFrameProxy*, GtkPrintSettings*, GtkPageSetup*)::__lambda3’ to ‘WebKit::GenericCallback&lt;API::Error*&gt;::CallbackFunction {aka std::function&lt;void(API::Error*, WebKit::CallbackBase::Error)&gt;}’</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233104</attachid>
            <date>2014-06-13 22:25:10 -0700</date>
            <delta_ts>2014-06-13 22:29:15 -0700</delta_ts>
            <desc>Make GenericCallback variadic, get rid of legacy callback functions, etc.</desc>
            <filename>bug-133897-20140613222446.patch</filename>
            <type>text/plain</type>
            <size>30057</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTk2MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDE0LTA2LTEzICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBHZW5lcmljQ2FsbGJhY2sg
dmFyaWFkaWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMzg5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsc28gZWxpbWluYXRlZCBsZWdhY3kgY2FsbGJhY2sgZnVuY3Rpb25zIGFuZCBhbGwgQ2FsbGJh
Y2tCYXNlIGRlcml2ZWQgY2xhc3NlcyBvdXRzaWRlIG9mCisgICAgICAgIEdlbmVyaWNDYWxsYmFj
ay5oLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChX
S1BhZ2VWYWxpZGF0ZUNvbW1hbmQpOiBDaGFuZ2VkIGxlZ2FjeSBjYWxsYmFjayAod2l0aCBsZWFk
aW5nIGJvb2wgcGFyYW1ldGVyKSBpbnRvIG1vZGVybgorICAgICAgICBjYWxsYmFjayAod2l0aCB0
cmFpbGluZyBlcnJvciBwYXJhbWV0ZXIpLgorICAgICAgICAoV0tQYWdlQ29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmcpOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldFdlYkFyY2hpdmVEYXRhV2l0aENvbXBs
ZXRpb25IYW5kbGVyOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zbmFwc2hvdFJl
Y3Q6aW50b0ltYWdlT2ZXaWR0aDpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0dG8uCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW06CisgICAgICAgICgt
W19XS1RodW1ibmFpbFZpZXcgX3JlcXVlc3RTbmFwc2hvdElmTmVlZGVkXSk6IERpdHRvLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcg
dmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTpdKTogRGl0dG8uCisgICAgICAgICgtW1dLVmlldyBz
dGFydFNwZWFraW5nOl0pOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvQ29ycmVj
dGlvbkNhbGxiYWNrLmg6IFJlcGxhY2VkIENhbGxiYWNrQmFzZSBkZXJpdmVkIGNsYXNzZXMgd2l0
aAorICAgICAgICBHZW5lcmljQ2FsbGJhY2sgc3BlY2lhbGl6YXRpb25zLgorCisgICAgICAgICog
VUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oOgorICAgICAgICAtIE1hZGUgR2VuZXJpY0NhbGxi
YWNrIHZhcmlhZGljOgorICAgICAgICAoV2ViS2l0OjpHZW5lcmljQ2FsbGJhY2s6OnBlcmZvcm1D
YWxsYmFja1dpdGhSZXR1cm5WYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OkdlbmVyaWNDYWxsYmFj
azo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkdlbmVyaWNBUElDYWxsYmFjazo6Y3Jl
YXRlKToKKworICAgICAgICAtIFJlcGxhY2VkIENhbGxiYWNrQmFzZSBkZXJpdmVkIGNsYXNzZXMg
d2l0aCBHZW5lcmljQ2FsbGJhY2sgc3BlY2lhbGl6YXRpb25zOgorICAgICAgICAoV2ViS2l0OjpH
ZW5lcmljQ2FsbGJhY2s6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkNvbXB1
dGVkUGFnZXNDYWxsYmFjazo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6Q29t
cHV0ZWRQYWdlc0NhbGxiYWNrOjp+Q29tcHV0ZWRQYWdlc0NhbGxiYWNrKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6Q29tcHV0ZWRQYWdlc0NhbGxiYWNrOjpwZXJmb3JtQ2FsbGJhY2tXaXRo
UmV0dXJuVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpDb21wdXRlZFBhZ2VzQ2Fs
bGJhY2s6OmludmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpDb21wdXRlZFBh
Z2VzQ2FsbGJhY2s6OkNvbXB1dGVkUGFnZXNDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OkltYWdlQ2FsbGJhY2s6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OkltYWdlQ2FsbGJhY2s6On5JbWFnZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6SW1hZ2VDYWxsYmFjazo6cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6SW1hZ2VDYWxsYmFjazo6aW52YWxpZGF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OkltYWdlQ2FsbGJhY2s6OkltYWdlQ2FsbGJhY2spOiBEZWxldGVk
LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBSZXBsYWNlZCBDYWxsYmFj
a0Jhc2UgZGVyaXZlZCBjbGFzc2VzIHdpdGggR2VuZXJpY0NhbGxiYWNrCisgICAgICAgIHNwZWNp
YWxpemF0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVlc3RBdXRvY29ycmVjdGlv
blJlY3RzRm9yU3RyaW5nOndpdGhDb21wbGV0aW9uSGFuZGxlcjpdKTogQ2hhbmdlZAorICAgICAg
ICBsZWdhY3kgY2FsbGJhY2sgKHdpdGggbGVhZGluZyBib29sIHBhcmFtZXRlcikgaW50byBtb2Rl
cm4gY2FsbGJhY2sgKHdpdGggdHJhaWxpbmcgZXJyb3IKKyAgICAgICAgcGFyYW1ldGVyKS4KKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyByZXF1ZXN0RGljdGF0aW9uQ29udGV4dDpdKTogRGl0dG8u
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFdp
dGhDb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dLUHJpbnRpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfcHJlcGFyZVBE
RkRhdGFGb3JQcmludGluZ09uU2Vjb25kYXJ5VGhyZWFkXSk6IERpdHRvLgorICAgICAgICAoLVtX
S1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29tcHV0ZVBhZ2VSZWN0c10pOiBEaXR0by4KKyAgICAg
ICAgKC1bV0tQcmludGluZ1ZpZXcgX2RyYXdQcmV2aWV3Ol0pOiBEaXR0by4KKwogMjAxNC0wNi0x
MyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkOyBmaXggdGhlIGJ1aWxkLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dG9Db3JyZWN0aW9uQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oCShyZXZpc2lvbiAxNjk5NTkpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSwxMjkgKzM1LDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEF1
dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrIDogcHVibGljIENhbGxiYWNrQmFzZSB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpGbG9hdFJlY3Q+JiwgY29uc3QgU3RyaW5nJiwgZG91YmxlLCB1aW50NjRfdCk+IENhbGxi
YWNrRnVuY3Rpb247Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdXRvY29ycmVjdGlvbkRhdGFD
YWxsYmFjaz4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2spCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrKGNhbGxiYWNr
KSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+QXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2NhbGxiYWNrKTsKLSAgICB9Ci0KLSAgICB2b2lkIHBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRS
ZWN0PiYgcmV0dXJuVmFsdWUxLCBjb25zdCBTdHJpbmcmIHJldHVyblZhbHVlMiwgZG91YmxlIHJl
dHVyblZhbHVlMywgdWludDY0X3QgcmV0dXJuVmFsdWU0KQotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fY2FsbGJhY2spOwotCi0gICAgICAgIG1fY2FsbGJhY2soZmFsc2UsIHJldHVyblZhbHVlMSwg
cmV0dXJuVmFsdWUyLCByZXR1cm5WYWx1ZTMsIHJldHVyblZhbHVlNCk7Ci0KLSAgICAgICAgbV9j
YWxsYmFjayA9IDA7Ci0gICAgfQotCi0gICAgdm9pZCBpbnZhbGlkYXRlKCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKLQotICAgICAgICBtX2NhbGxiYWNrKHRydWUsIFZlY3Rv
cjxXZWJDb3JlOjpGbG9hdFJlY3Q+KCksIFN0cmluZygpLCAwLCAwKTsKLQotICAgICAgICBtX2Nh
bGxiYWNrID0gMDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXV0b2NvcnJlY3Rpb25EYXRhQ2Fs
bGJhY2soQ2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFjaykKLSAgICAgICAgOiBtX2NhbGxiYWNrKGNh
bGxiYWNrKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY2FsbGJhY2spOwotICAgIH0KLSAgICAK
LSAgICBDYWxsYmFja0Z1bmN0aW9uIG1fY2FsbGJhY2s7Ci19OwotCi1jbGFzcyBBdXRvY29ycmVj
dGlvbkNvbnRleHRDYWxsYmFjayA6IHB1YmxpYyBDYWxsYmFja0Jhc2UgewotcHVibGljOgotICAg
IHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3Qp
PiBDYWxsYmFja0Z1bmN0aW9uOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXV0b2NvcnJlY3Rp
b25Db250ZXh0Q2FsbGJhY2s+IGNyZWF0ZShDYWxsYmFja0Z1bmN0aW9uIGNhbGxiYWNrKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxs
YmFjayhjYWxsYmFjaykpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfkF1dG9jb3JyZWN0aW9uQ29u
dGV4dENhbGxiYWNrKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9jYWxsYmFjayk7Ci0gICAg
fQotCi0gICAgdm9pZCBwZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoY29uc3QgU3RyaW5n
JiByZXR1cm5WYWx1ZTEsIGNvbnN0IFN0cmluZyYgcmV0dXJuVmFsdWUyLCBjb25zdCBTdHJpbmcm
IHJldHVyblZhbHVlMywgY29uc3QgU3RyaW5nJiByZXR1cm5WYWx1ZTQsIHVpbnQ2NF90IHJldHVy
blZhbHVlNSwgdWludDY0X3QgcmV0dXJuVmFsdWU2KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
Y2FsbGJhY2spOwotCi0gICAgICAgIG1fY2FsbGJhY2soZmFsc2UsIHJldHVyblZhbHVlMSwgcmV0
dXJuVmFsdWUyLCByZXR1cm5WYWx1ZTMsIHJldHVyblZhbHVlNCwgcmV0dXJuVmFsdWU1LCByZXR1
cm5WYWx1ZTYpOwotCi0gICAgICAgIG1fY2FsbGJhY2sgPSAwOwotICAgIH0KLQotICAgIHZvaWQg
aW52YWxpZGF0ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9jYWxsYmFjayk7Ci0KLSAgICAg
ICAgbV9jYWxsYmFjayh0cnVlLCBTdHJpbmcoKSwgU3RyaW5nKCksIFN0cmluZygpLCBTdHJpbmco
KSwgMCwgMCk7Ci0KLSAgICAgICAgbV9jYWxsYmFjayA9IDA7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKENhbGxiYWNrRnVuY3Rpb24gY2FsbGJh
Y2spCi0gICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX2NhbGxiYWNrKTsKLSAgICB9Ci0gICAgCi0gICAgQ2FsbGJhY2tGdW5jdGlvbiBtX2NhbGxi
YWNrOwotfTsKLQotY2xhc3MgRGljdGF0aW9uQ29udGV4dENhbGxiYWNrIDogcHVibGljIENhbGxi
YWNrQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2ws
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpPiBDYWxsYmFja0Z1
bmN0aW9uOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGljdGF0aW9uQ29udGV4dENhbGxiYWNr
PiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRGljdGF0aW9uQ29udGV4dENhbGxiYWNrKGNhbGxiYWNrKSk7Ci0gICAg
fQotCi0gICAgdmlydHVhbCB+RGljdGF0aW9uQ29udGV4dENhbGxiYWNrKCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVCghbV9jYWxsYmFjayk7Ci0gICAgfQotCi0gICAgdm9pZCBwZXJmb3JtQ2FsbGJh
Y2tXaXRoUmV0dXJuVmFsdWUoY29uc3QgU3RyaW5nJiByZXR1cm5WYWx1ZTEsIGNvbnN0IFN0cmlu
ZyYgcmV0dXJuVmFsdWUyLCBjb25zdCBTdHJpbmcmIHJldHVyblZhbHVlMykKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKLQotICAgICAgICBtX2NhbGxiYWNrKGZhbHNlLCByZXR1
cm5WYWx1ZTEsIHJldHVyblZhbHVlMiwgcmV0dXJuVmFsdWUzKTsKLSAgICAgICAgbV9jYWxsYmFj
ayA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgdm9pZCBpbnZhbGlkYXRlKCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKLQotICAgICAgICBtX2NhbGxiYWNrKHRydWUsIFN0cmlu
ZygpLCBTdHJpbmcoKSwgU3RyaW5nKCkpOwotICAgICAgICBtX2NhbGxiYWNrID0gbnVsbHB0cjsK
LSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIERpY3RhdGlvbkNvbnRleHRDYWxsYmFjayhDYWxs
YmFja0Z1bmN0aW9uIGNhbGxiYWNrKQotICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCi0g
ICAgewotICAgICAgICBBU1NFUlQobV9jYWxsYmFjayk7Ci0gICAgfQotICAgIAotICAgIENhbGxi
YWNrRnVuY3Rpb24gbV9jYWxsYmFjazsKLX07Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25z
dCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgdWlu
dDY0X3Q+IEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2FsbGJh
Y2s8Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QsIHVpbnQ2NF90PiBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjazsK
K3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyY+IERpY3RhdGlvbkNvbnRleHRDYWxsYmFjazsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNr
LmgJKHJldmlzaW9uIDE2OTk1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmlj
Q2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDM2ICsxMjQsMjcgQEAgcHVibGljOgog
ICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBU
PgogY2xhc3MgR2VuZXJpY0NhbGxiYWNrIDogcHVibGljIENhbGxiYWNrQmFzZSB7CiBwdWJsaWM6
Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFQsIEVycm9yKT4gQ2FsbGJhY2tGdW5j
dGlvbjsKKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoVC4uLiwgRXJyb3IpPiBDYWxs
YmFja0Z1bmN0aW9uOwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8R2VuZXJpY0NhbGxiYWNrPiBj
cmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgR2VuZXJpY0NhbGxiYWNrKGNhbGxiYWNrKSk7CiAgICAgfQogCi0gICAgLy8g
RklYTUU6IEdldCByaWQgb2YgdGhpcyBsZWdhY3kgdmVyc2lvbi4KLSAgICB0eXBlZGVmIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoYm9vbCwgVCk+IExlZ2FjeUNhbGxiYWNrRnVuY3Rpb247Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8R2VuZXJpY0NhbGxiYWNrPiBjcmVhdGUoTGVnYWN5Q2FsbGJhY2tGdW5j
dGlvbiBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2VuZXJp
Y0NhbGxiYWNrKFtjYWxsYmFja10oVCB0LCBFcnJvciBlcnJvcikgewotICAgICAgICAgICAgY2Fs
bGJhY2soZXJyb3IgIT0gRXJyb3I6Ok5vbmUsIHN0ZDo6bW92ZSh0KSk7Ci0gICAgICAgIH0pKTsK
LSAgICB9Ci0KICAgICB2aXJ0dWFsIH5HZW5lcmljQ2FsbGJhY2soKQogICAgIHsKICAgICAgICAg
QVNTRVJUKCFtX2NhbGxiYWNrKTsKICAgICB9CiAKLSAgICB2b2lkIHBlcmZvcm1DYWxsYmFja1dp
dGhSZXR1cm5WYWx1ZShUIHJldHVyblZhbHVlKQorICAgIHZvaWQgcGVyZm9ybUNhbGxiYWNrV2l0
aFJldHVyblZhbHVlKFQuLi4gcmV0dXJuVmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIW1fY2Fs
bGJhY2spCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9jYWxsYmFjayhyZXR1cm5W
YWx1ZSwgRXJyb3I6Ok5vbmUpOworICAgICAgICBtX2NhbGxiYWNrKHJldHVyblZhbHVlLi4uLCBF
cnJvcjo6Tm9uZSk7CiAKICAgICAgICAgbV9jYWxsYmFjayA9IG51bGxwdHI7CiAgICAgfQpAQCAt
MTYzLDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fY2FsbGJhY2soVCgpLCBlcnJvcik7CisgICAgICAg
IG1fY2FsbGJhY2sodHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlKCkuLi4s
IGVycm9yKTsKIAogICAgICAgICBtX2NhbGxiYWNrID0gbnVsbHB0cjsKICAgICB9CkBAIC0xODQs
OTggKzE3NSwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW5lcmljQ2Fs
bGJhY2s8SW50ZXJuYWxSZXR1cm5WYWx1ZVR5cGU+PiBjcmVhdGUodm9pZCogY29udGV4dCwgQ2Fs
bGJhY2tGdW5jdGlvbiBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHJldHVybiBHZW5lcmljQ2Fs
bGJhY2s8SW50ZXJuYWxSZXR1cm5WYWx1ZVR5cGU+OjpjcmVhdGUoW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGVycm9yLCBJbnRlcm5hbFJldHVyblZhbHVlVHlwZSByZXR1cm5WYWx1ZSkgewotICAg
ICAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCBlcnJvciA/IHRvQVBJKEFQSTo6
RXJyb3I6OmNyZWF0ZSgpLmdldCgpKSA6IDAsIGNvbnRleHQpOworICAgICAgICByZXR1cm4gR2Vu
ZXJpY0NhbGxiYWNrPEludGVybmFsUmV0dXJuVmFsdWVUeXBlPjo6Y3JlYXRlKFtjb250ZXh0LCBj
YWxsYmFja10oSW50ZXJuYWxSZXR1cm5WYWx1ZVR5cGUgcmV0dXJuVmFsdWUsIENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRvQVBJKHJldHVyblZhbHVl
KSwgZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSA/IHRvQVBJKEFQSTo6RXJyb3I6
OmNyZWF0ZSgpLmdldCgpKSA6IDAsIGNvbnRleHQpOwogICAgICAgICB9KTsKICAgICB9CiB9Owog
Ci0vLyBGSVhNRTogTWFrZSBhIHZlcnNpb24gb2YgR2VuZXJpY0NhbGxiYWNrIHdpdGggdHdvIGFy
Z3VtZW50cywgYW5kIGRlZmluZSBDb21wdXRlZFBhZ2VzQ2FsbGJhY2sgYXMgYSBzcGVjaWFsaXph
dGlvbi4KLWNsYXNzIENvbXB1dGVkUGFnZXNDYWxsYmFjayA6IHB1YmxpYyBDYWxsYmFja0Jhc2Ug
ewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBkb3VibGUpPiBDYWxsYmFja0Z1bmN0aW9uOwotCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPiBjcmVhdGUoQ2FsbGJh
Y2tGdW5jdGlvbiBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+
Q29tcHV0ZWRQYWdlc0NhbGxiYWNrKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9jYWxsYmFj
ayk7Ci0gICAgfQotCi0gICAgdm9pZCBwZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZXR1cm5WYWx1ZTEsIGRvdWJsZSByZXR1cm5W
YWx1ZTIpCi0gICAgewotICAgICAgICBBU1NFUlQobV9jYWxsYmFjayk7Ci0KLSAgICAgICAgbV9j
YWxsYmFjayhmYWxzZSwgcmV0dXJuVmFsdWUxLCByZXR1cm5WYWx1ZTIpOwotCi0gICAgICAgIG1f
Y2FsbGJhY2sgPSAwOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGludmFsaWRhdGUoKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fY2FsbGJhY2spOwotCi0gICAgICAgIG1fY2FsbGJhY2sodHJ1ZSwg
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+KCksIDApOwotICAgICAgICAKLSAgICAgICAgbV9jYWxs
YmFjayA9IDA7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgQ29tcHV0ZWRQYWdlc0NhbGxiYWNr
KENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2spCi0gICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFj
aykKLSAgICB7Ci0gICAgfQotCi0gICAgQ2FsbGJhY2tGdW5jdGlvbiBtX2NhbGxiYWNrOwotfTsK
LQotY2xhc3MgSW1hZ2VDYWxsYmFjayA6IHB1YmxpYyBDYWxsYmFja0Jhc2UgewotcHVibGljOgot
ICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sLCBjb25zdCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSYpPiBDYWxsYmFja0Z1bmN0aW9uOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SW1hZ2VDYWxsYmFjaz4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2spCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQ2FsbGJhY2soY2FsbGJhY2spKTsKLSAg
ICB9Ci0KLSAgICB2aXJ0dWFsIH5JbWFnZUNhbGxiYWNrKCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCghbV9jYWxsYmFjayk7Ci0gICAgfQotCi0gICAgdm9pZCBwZXJmb3JtQ2FsbGJhY2tXaXRoUmV0
dXJuVmFsdWUoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHJldHVyblZhbHVlMSkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKLQotICAgICAgICBtX2NhbGxiYWNrKGZh
bHNlLCByZXR1cm5WYWx1ZTEpOwotCi0gICAgICAgIG1fY2FsbGJhY2sgPSAwOwotICAgIH0KLQot
ICAgIHZvaWQgaW52YWxpZGF0ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9jYWxsYmFjayk7
Ci0KLSAgICAgICAgUmVmUHRyPEFQSTo6RXJyb3I+IGVycm9yID0gQVBJOjpFcnJvcjo6Y3JlYXRl
KCk7Ci0gICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgbV9j
YWxsYmFjayh0cnVlLCBoYW5kbGUpOwotCi0gICAgICAgIG1fY2FsbGJhY2sgPSAwOwotICAgIH0K
LQotcHJpdmF0ZToKLQotICAgIEltYWdlQ2FsbGJhY2soQ2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFj
aykKLSAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQotICAgIHsKLSAgICB9Ci0gICAgCi0g
ICAgQ2FsbGJhY2tGdW5jdGlvbiBtX2NhbGxiYWNrOwotfTsKK3R5cGVkZWYgR2VuZXJpY0NhbGxi
YWNrPGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIGRvdWJsZT4gQ29tcHV0ZWRQYWdl
c0NhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmPiBJbWFnZUNhbGxiYWNrOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBp
bnZhbGlkYXRlQ2FsbGJhY2tNYXAoSGFzaE1hcDx1aW50NjRfdCwgVD4mIG1hcCwgQ2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvciA9IENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxNjk5NTkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTIwNCwyMjYgKzIwNCwxNiBAQCBzdHJ1Y3QgUXVldWVkVG91Y2hFdmVudHMgewogfTsKICNl
bmRpZgogCi0vLyBGSVhNRTogTWFrZSBhIHZlcnNpb24gb2YgQ2FsbGJhY2tCYXNlIHdpdGggdGhy
ZWUgYXJndW1lbnRzLCBhbmQgZGVmaW5lIFZhbGlkYXRlQ29tbWFuZENhbGxiYWNrIGFzIGEgc3Bl
Y2lhbGl6YXRpb24uCi1jbGFzcyBWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjayA6IHB1YmxpYyBDYWxs
YmFja0Jhc2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChib29s
LCBTdHJpbmdJbXBsKiwgYm9vbCwgaW50MzJfdCk+IENhbGxiYWNrRnVuY3Rpb247Ci0KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjaz4gY3JlYXRlKENhbGxiYWNr
RnVuY3Rpb24gY2FsbGJhY2spCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZh
bGlkYXRlQ29tbWFuZENhbGxiYWNrKGNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+
VmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2NhbGxi
YWNrKTsKLSAgICB9Ci0KLSAgICB2b2lkIHBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShT
dHJpbmdJbXBsKiByZXR1cm5WYWx1ZTEsIGJvb2wgcmV0dXJuVmFsdWUyLCBpbnQgcmV0dXJuVmFs
dWUzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY2FsbGJhY2spOwotCi0gICAgICAgIG1fY2Fs
bGJhY2soZmFsc2UsIHJldHVyblZhbHVlMSwgcmV0dXJuVmFsdWUyLCByZXR1cm5WYWx1ZTMpOwot
Ci0gICAgICAgIG1fY2FsbGJhY2sgPSAwOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGludmFsaWRh
dGUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY2FsbGJhY2spOwotCi0gICAgICAgIG1fY2Fs
bGJhY2sodHJ1ZSwgMCwgMCwgMCk7Ci0gICAgICAgIAotICAgICAgICBtX2NhbGxiYWNrID0gMDsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhDYWxsYmFj
a0Z1bmN0aW9uIGNhbGxiYWNrKQotICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAg
ewotICAgIH0KLQotICAgIENhbGxiYWNrRnVuY3Rpb24gbV9jYWxsYmFjazsKLX07Ci0KLS8vIEZJ
WE1FOiBNYWtlIGEgdmVyc2lvbiBvZiBDYWxsYmFja0Jhc2Ugd2l0aCB0d28gYXJndW1lbnRzLCBh
bmQgZGVmaW5lIFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrIGFzIGEgc3BlY2lhbGl6YXRp
b24uCi1jbGFzcyBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayA6IHB1YmxpYyBDYWxsYmFj
a0Jhc2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgRWRpdGluZ1JhbmdlJik+IENhbGxiYWNrRnVu
Y3Rpb247Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxs
YmFjaz4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2spCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNhbGxiYWNr
KSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+UmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2so
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2NhbGxiYWNrKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBy
ZWN0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
Y2FsbGJhY2spOwotCi0gICAgICAgIG1fY2FsbGJhY2soZmFsc2UsIHJlY3QsIHJhbmdlKTsKLQot
ICAgICAgICBtX2NhbGxiYWNrID0gMDsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBpbnZhbGlkYXRl
KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKLQotICAgICAgICBtX2NhbGxi
YWNrKHRydWUsIFdlYkNvcmU6OkludFJlY3QoKSwgRWRpdGluZ1JhbmdlKCkpOwotCi0gICAgICAg
IG1fY2FsbGJhY2sgPSAwOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZUNhbGxiYWNrKENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2spCi0gICAgICAgIDogbV9j
YWxsYmFjayhjYWxsYmFjaykKLSAgICB7Ci0gICAgfQotCi0gICAgQ2FsbGJhY2tGdW5jdGlvbiBt
X2NhbGxiYWNrOwotfTsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFN0cmluZ0ltcGwqLCBib29s
LCBpbnQzMl90PiBWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxi
YWNrPGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmPiBSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2VDYWxsYmFjazsKIAogI2lmIFBMQVRGT1JNKE1BQykKLQotLy8gRklYTUU6
IE1ha2UgYSB2ZXJzaW9uIG9mIENhbGxiYWNrQmFzZSB3aXRoIHR3byBhcmd1bWVudHMsIGFuZCBk
ZWZpbmUgQXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2sgYXMgYSBzcGVj
aWFsaXphdGlvbi4KLWNsYXNzIEF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxi
YWNrIDogcHVibGljIENhbGxiYWNrQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKGJvb2wsIGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5n
UmFuZ2UmKT4gQ2FsbGJhY2tGdW5jdGlvbjsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0dHJp
YnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrPiBjcmVhdGUoQ2FsbGJhY2tGdW5j
dGlvbiBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXR0cmli
dXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY2FsbGJhY2spKTsKLSAgICB9Ci0K
LSAgICB2aXJ0dWFsIH5BdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjaygp
Ci0gICAgewotICAgICAgICBBU1NFUlQoIW1fY2FsbGJhY2spOwotICAgIH0KLQotICAgIHZvaWQg
cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0
cmluZywgY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCht
X2NhbGxiYWNrKTsKLQotICAgICAgICBtX2NhbGxiYWNrKGZhbHNlLCBzdHJpbmcsIHJhbmdlKTsK
LQotICAgICAgICBtX2NhbGxiYWNrID0gMDsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBpbnZhbGlk
YXRlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKLQotICAgICAgICBtX2Nh
bGxiYWNrKHRydWUsIEF0dHJpYnV0ZWRTdHJpbmcoKSwgRWRpdGluZ1JhbmdlKCkpOwotCi0gICAg
ICAgIG1fY2FsbGJhY2sgPSAwOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIEF0dHJpYnV0ZWRT
dHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2sp
Ci0gICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICB7Ci0gICAgfQotCi0gICAgQ2Fs
bGJhY2tGdW5jdGlvbiBtX2NhbGxiYWNrOwotfTsKLQordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8
Y29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSY+IEF0dHJpYnV0ZWRT
dHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJ
T1MpCi1jbGFzcyBHZXN0dXJlQ2FsbGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90KT4gQ2FsbGJhY2tGdW5jdGlv
bjsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlc3R1cmVDYWxsYmFjaz4gY3JlYXRlKENhbGxi
YWNrRnVuY3Rpb24gY2FsbGJhY2spCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEdlc3R1cmVDYWxsYmFjayhjYWxsYmFjaykpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfkdlc3R1
cmVDYWxsYmFjaygpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fY2FsbGJhY2spOwotICAgIH0K
LQotICAgIHZvaWQgcGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiByZXR1cm5WYWx1ZTEsIHVpbnQzMl90IHJldHVyblZhbHVlMiwgdWludDMyX3Qg
cmV0dXJuVmFsdWUzLCB1aW50MzJfdCByZXR1cm5WYWx1ZTQpCi0gICAgewotICAgICAgICBBU1NF
UlQobV9jYWxsYmFjayk7Ci0KLSAgICAgICAgbV9jYWxsYmFjayhmYWxzZSwgcmV0dXJuVmFsdWUx
LCByZXR1cm5WYWx1ZTIsIHJldHVyblZhbHVlMywgcmV0dXJuVmFsdWU0KTsKLQotICAgICAgICBt
X2NhbGxiYWNrID0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIGludmFsaWRhdGUoKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fY2FsbGJhY2spOwotCi0gICAgICAgIG1fY2FsbGJhY2sodHJ1ZSwgV2Vi
Q29yZTo6SW50UG9pbnQoKSwgMCwgMCwgMCk7Ci0KLSAgICAgICAgbV9jYWxsYmFjayA9IDA7Ci0g
ICAgfQotCi1wcml2YXRlOgotCi0gICAgR2VzdHVyZUNhbGxiYWNrKENhbGxiYWNrRnVuY3Rpb24g
Y2FsbGJhY2spCi0gICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtX2NhbGxiYWNrKTsKLSAgICB9Ci0KLSAgICBDYWxsYmFja0Z1bmN0aW9uIG1fY2Fs
bGJhY2s7Ci19OwotCi1jbGFzcyBUb3VjaGVzQ2FsbGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tCYXNl
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90KT4gQ2FsbGJhY2tGdW5jdGlvbjsKLQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFRvdWNoZXNDYWxsYmFjaz4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24g
Y2FsbGJhY2spCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRvdWNoZXNDYWxs
YmFjayhjYWxsYmFjaykpOwotICAgIH0KLQotICAgIHZpcnR1YWwgflRvdWNoZXNDYWxsYmFjaygp
Ci0gICAgewotICAgICAgICBBU1NFUlQoIW1fY2FsbGJhY2spOwotICAgIH0KLQotICAgIHZvaWQg
cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBy
ZXR1cm5WYWx1ZTEsIHVpbnQzMl90IHJldHVyblZhbHVlMikKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX2NhbGxiYWNrKTsKLQotICAgICAgICBtX2NhbGxiYWNrKGZhbHNlLCByZXR1cm5WYWx1ZTEs
IHJldHVyblZhbHVlMik7Ci0KLSAgICAgICAgbV9jYWxsYmFjayA9IDA7Ci0gICAgfQotCi0gICAg
dm9pZCBpbnZhbGlkYXRlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKLQot
ICAgICAgICBSZWZQdHI8QVBJOjpFcnJvcj4gZXJyb3IgPSBBUEk6OkVycm9yOjpjcmVhdGUoKTsK
LSAgICAgICAgbV9jYWxsYmFjayh0cnVlLCBXZWJDb3JlOjpJbnRQb2ludCgpLCAwKTsKLSAgICAg
ICAgCi0gICAgICAgIG1fY2FsbGJhY2sgPSAwOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAg
Ci0gICAgVG91Y2hlc0NhbGxiYWNrKENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2spCi0gICAgICAg
IDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2NhbGxiYWNr
KTsKLSAgICB9Ci0gICAgCi0gICAgQ2FsbGJhY2tGdW5jdGlvbiBtX2NhbGxiYWNrOwotfTsKK3R5
cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3Qs
IHVpbnQzMl90LCB1aW50MzJfdD4gR2VzdHVyZUNhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2Fs
bGJhY2s8Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdD4gVG91Y2hlc0NhbGxiYWNr
OwogI2VuZGlmCiAKIHN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlvbiB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMTY5OTU5KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2NTcsOCArMTY1Nyw4IEBAIFdLU3RyaW5nUmVmIFdLUGFnZUNvcHlTdGFuZGFyZFVzZXJB
Z2VudFcKIAogdm9pZCBXS1BhZ2VWYWxpZGF0ZUNvbW1hbmQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
U3RyaW5nUmVmIGNvbW1hbmQsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVZhbGlkYXRlQ29tbWFuZENh
bGxiYWNrIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+dmFsaWRhdGVDb21tYW5k
KHRvSW1wbChjb21tYW5kKS0+c3RyaW5nKCksIFZhbGlkYXRlQ29tbWFuZENhbGxiYWNrOjpjcmVh
dGUoW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGVycm9yLCBTdHJpbmdJbXBsKiBjb21tYW5kTmFt
ZSwgYm9vbCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdGUpIHsKLSAgICAgICAgY2FsbGJhY2sodG9B
UEkoY29tbWFuZE5hbWUpLCBpc0VuYWJsZWQsIHN0YXRlLCBlcnJvciA/IHRvQVBJKEFQSTo6RXJy
b3I6OmNyZWF0ZSgpLmdldCgpKSA6IDAsIGNvbnRleHQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+
dmFsaWRhdGVDb21tYW5kKHRvSW1wbChjb21tYW5kKS0+c3RyaW5nKCksIFZhbGlkYXRlQ29tbWFu
ZENhbGxiYWNrOjpjcmVhdGUoW2NvbnRleHQsIGNhbGxiYWNrXShTdHJpbmdJbXBsKiBjb21tYW5k
TmFtZSwgYm9vbCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdGUsIENhbGxiYWNrQmFzZTo6RXJyb3Ig
ZXJyb3IpIHsKKyAgICAgICAgY2FsbGJhY2sodG9BUEkoY29tbWFuZE5hbWUpLCBpc0VuYWJsZWQs
IHN0YXRlLCBlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lID8gdG9BUEkoQVBJOjpF
cnJvcjo6Y3JlYXRlKCkuZ2V0KCkpIDogMCwgY29udGV4dCk7CiAgICAgfSkpOwogfQogCkBAIC0x
Njc5LDExICsxNjc5LDExIEBAIHN0YXRpYyBQcmludEluZm8gcHJpbnRJbmZvRnJvbVdLUHJpbnRJ
bmYKIAogdm9pZCBXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGluZyhXS1BhZ2VSZWYgcGFnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8gcHJpbnRJbmZvLCBXS1BhZ2VDb21wdXRlUGFn
ZXNGb3JQcmludGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRv
SW1wbChwYWdlKS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodG9JbXBsKGZyYW1lKSwgcHJpbnRJ
bmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbyksIENvbXB1dGVkUGFnZXNDYWxsYmFjazo6Y3Jl
YXRlKFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBlcnJvciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+JiByZWN0cywgZG91YmxlIHNjYWxlRmFjdG9yKSB7CisgICAgdG9JbXBsKHBhZ2Up
LT5jb21wdXRlUGFnZXNGb3JQcmludGluZyh0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQ
cmludEluZm8ocHJpbnRJbmZvKSwgQ29tcHV0ZWRQYWdlc0NhbGxiYWNrOjpjcmVhdGUoW2NvbnRl
eHQsIGNhbGxiYWNrXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHJlY3RzLCBkb3Vi
bGUgc2NhbGVGYWN0b3IsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgVmVj
dG9yPFdLUmVjdD4gd2tSZWN0cyhyZWN0cy5zaXplKCkpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHJlY3RzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgd2tSZWN0c1tpXSA9IHRv
QVBJKHJlY3RzW2ldKTsKLSAgICAgICAgY2FsbGJhY2sod2tSZWN0cy5kYXRhKCksIHdrUmVjdHMu
c2l6ZSgpLCBzY2FsZUZhY3RvciwgZXJyb3IgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5n
ZXQoKSkgOiAwLCBjb250ZXh0KTsKKyAgICAgICAgY2FsbGJhY2sod2tSZWN0cy5kYXRhKCksIHdr
UmVjdHMuc2l6ZSgpLCBzY2FsZUZhY3RvciwgZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
Tm9uZSA/IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLmdldCgpKSA6IDAsIGNvbnRleHQpOwog
ICAgIH0pKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDE2OTk1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIwLDkg
KzE1MjAsOSBAQCAtICh2b2lkKV9nZXRXZWJBcmNoaXZlRGF0YVdpdGhDb21wbGV0aW9uCiB7CiAg
ICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOwogCi0g
ICAgX3BhZ2UtPmdldFdlYkFyY2hpdmVPZkZyYW1lKF9wYWdlLT5tYWluRnJhbWUoKSwgV2ViS2l0
OjpEYXRhQ2FsbGJhY2s6OmNyZWF0ZShbaGFuZGxlcl0oYm9vbCBpc0Vycm9yLCBBUEk6OkRhdGEq
IGRhdGEpIHsKKyAgICBfcGFnZS0+Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFt
ZSgpLCBXZWJLaXQ6OkRhdGFDYWxsYmFjazo6Y3JlYXRlKFtoYW5kbGVyXShBUEk6OkRhdGEqIGRh
dGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXJCbG9jaykoTlNEYXRhICosIE5TRXJyb3IgKikgPSAodm9pZCAoXiko
TlNEYXRhICosIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKLSAgICAgICAgaWYgKGlzRXJyb3Ip
IHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9u
ZSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBpcGUgYSBwcm9wZXIgZXJyb3IgaW4gZnJvbSB0
aGUgV2ViUGFnZVByb3h5LgogICAgICAgICAgICAgUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yID0g
YWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyQmxvY2sobmlsLCBlcnJvci5nZXQoKSk7CkBAIC0yMDMwLDcgKzIwMzAsNyBAQCAtICh2
b2lkKV9zbmFwc2hvdFJlY3Q6KENHUmVjdClyZWN0SW5WaWV3CiAjZW5kaWYKICAgICAKICAgICB2
b2lkKF5jb3BpZWRDb21wbGV0aW9uSGFuZGxlcikoQ0dJbWFnZVJlZikgPSBbY29tcGxldGlvbkhh
bmRsZXIgY29weV07Ci0gICAgX3BhZ2UtPnRha2VTbmFwc2hvdChXZWJDb3JlOjplbmNsb3NpbmdJ
bnRSZWN0KHNuYXBzaG90UmVjdEluQ29udGVudENvb3JkaW5hdGVzKSwgV2ViQ29yZTo6ZXhwYW5k
ZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShpbWFnZVNpemUpKSwgV2ViS2l0OjpTbmFwc2hv
dE9wdGlvbnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0b3IsIFs9XShib29sLCBjb25zdCBXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZUhhbmRsZSkgeworICAgIF9wYWdlLT50YWtl
U25hcHNob3QoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChzbmFwc2hvdFJlY3RJbkNvbnRlbnRD
b29yZGluYXRlcyksIFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUo
aW1hZ2VTaXplKSksIFdlYktpdDo6U25hcHNob3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxlRmFj
dG9yLCBbPV0oY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5k
bGUsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIC8v
IEF1dG9tYXRpY2FsbHkgZGVsZXRlIHdoZW4gdGhpcyBnb2VzIG91dCBvZiBzY29wZS4KICAgICAg
ICAgYXV0byB1bmlxdWVBY3Rpdml0eVRva2VuID0gc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6UHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+KGFjdGl2aXR5VG9rZW4pOwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VGh1bWJuYWlsVmlldy5tbQkocmV2aXNpb24gMTY5OTU5KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjksNyArMTI5LDcgQEAgLSAodm9pZClfcmVxdWVzdFNuYXBzaG90SWZOZWVkZWQKICAgICBJbnRT
aXplIGJpdG1hcFNpemUgPSBzbmFwc2hvdFJlY3Quc2l6ZSgpOwogICAgIGJpdG1hcFNpemUuc2Nh
bGUoX3NjYWxlICogX3dlYlBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgX2xh
c3RTbmFwc2hvdFNjYWxlID0gX3NjYWxlOwotICAgIF93ZWJQYWdlUHJveHktPnRha2VTbmFwc2hv
dChzbmFwc2hvdFJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIFt0aHVtYm5haWxWaWV3XShib29s
LCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUpIHsKKyAgICBfd2Vi
UGFnZVByb3h5LT50YWtlU25hcHNob3Qoc25hcHNob3RSZWN0LCBiaXRtYXBTaXplLCBvcHRpb25z
LCBbdGh1bWJuYWlsVmlld10oY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFu
ZGxlLCBDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlJlYWRPbmx5KTsKICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2Ug
PSBiaXRtYXAgPyBiaXRtYXAtPm1ha2VDR0ltYWdlKCkgOiBudWxscHRyOwogICAgICAgICBbdGh1
bWJuYWlsVmlldyBfZGlkVGFrZVNuYXBzaG90OmNnSW1hZ2UuZ2V0KCldOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gMTY5OTU5KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC04MzUsOSArODM1LDkgQEAgLSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVt
OihpZCA8TgogICAgICAgICAvLyBJZiB3ZSBhcmUgbm90IGFscmVhZHkgYXdhaXRpbmcgdmFsaWRh
dGlvbiBmb3IgdGhpcyBjb21tYW5kLCBzdGFydCB0aGUgYXN5bmNocm9ub3VzIHZhbGlkYXRpb24g
cHJvY2Vzcy4KICAgICAgICAgLy8gRklYTUU6IFRoZW9yZXRpY2FsbHksIHRoZXJlIGlzIGEgcmFj
ZSBoZXJlOyB3aGVuIHdlIGdldCB0aGUgYW5zd2VyIGl0IG1pZ2h0IGJlIG9sZCwgZnJvbSBhIHBy
ZXZpb3VzIHRpbWUKICAgICAgICAgLy8gd2UgYXNrZWQgZm9yIHRoZSBzYW1lIGNvbW1hbmQ7IHRo
ZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGUgYW5zd2VyIGlzIHN0aWxsIHZhbGlkLgotICAgICAgICBf
ZGF0YS0+X3BhZ2UtPnZhbGlkYXRlQ29tbWFuZChjb21tYW5kTmFtZSwgVmFsaWRhdGVDb21tYW5k
Q2FsbGJhY2s6OmNyZWF0ZShbc2VsZl0oYm9vbCBlcnJvciwgU3RyaW5nSW1wbCogY29tbWFuZE5h
bWUsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlKSB7CisgICAgICAgIF9kYXRhLT5fcGFn
ZS0+dmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjazo6
Y3JlYXRlKFtzZWxmXShTdHJpbmdJbXBsKiBjb21tYW5kTmFtZSwgYm9vbCBpc0VuYWJsZWQsIGlu
dDMyX3Qgc3RhdGUsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgICAgIC8v
IElmIHRoZSBwcm9jZXNzIGV4aXRzIGJlZm9yZSB0aGUgY29tbWFuZCBjYW4gYmUgdmFsaWRhdGVk
LCB3ZSdsbCBiZSBjYWxsZWQgYmFjayB3aXRoIGFuIGVycm9yLgotICAgICAgICAgICAgaWYgKGVy
cm9yKQorICAgICAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBbc2Vs
ZiBfc2V0VXNlckludGVyZmFjZUl0ZW1TdGF0ZTpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNv
bW1hbmROYW1lKSBlbmFibGVkOmlzRW5hYmxlZCBzdGF0ZTpzdGF0ZV07CkBAIC04NTIsOCArODUy
LDggQEAgLSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtOihpZCA8TgogCiAtIChJQkFj
dGlvbilzdGFydFNwZWFraW5nOihpZClzZW5kZXIKIHsKLSAgICBfZGF0YS0+X3BhZ2UtPmdldFNl
bGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhTdHJpbmdDYWxsYmFjazo6Y3JlYXRlKFtzZWxmXShi
b29sIGVycm9yLCBTdHJpbmdJbXBsKiBzdHJpbmcpIHsKLSAgICAgICAgaWYgKGVycm9yKQorICAg
IF9kYXRhLT5fcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFN0cmluZ0NhbGxi
YWNrOjpjcmVhdGUoW3NlbGZdKFN0cmluZ0ltcGwqIHN0cmluZywgQ2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9u
ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMTY5OTU5KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE0NzcsNyArMTQ3Nyw3IEBAIC0gKHZvaWQpcmVxdWVzdEF1dG9jb3Jy
ZWN0aW9uUmVjdHNGb3JTdHIKICAgICB9CiAKICAgICBfYXV0b2NvcnJlY3Rpb25EYXRhLmF1dG9j
b3JyZWN0aW9uSGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKLSAgICBfcGFnZS0+
cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShpbnB1dCwgQXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJh
Y2s6OmNyZWF0ZShbc2VsZl0oYm9vbCwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBj
b25zdCBTdHJpbmcmIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cykg
eworICAgIF9wYWdlLT5yZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGlucHV0LCBBdXRvY29ycmVj
dGlvbkRhdGFDYWxsYmFjazo6Y3JlYXRlKFtzZWxmXShjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYg
cmVjdHMsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgdWludDY0X3Qg
dHJhaXRzLCBDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIENHUmVjdCBmaXJzdFJlY3Qg
PSBDR1JlY3RaZXJvOwogICAgICAgICBDR1JlY3QgbGFzdFJlY3QgPSBDR1JlY3RaZXJvOwogICAg
ICAgICBpZiAocmVjdHMuc2l6ZSgpKSB7CkBAIC0xNTQwLDcgKzE1NDAsNyBAQCAtICh2b2lkKXJl
cXVlc3REaWN0YXRpb25Db250ZXh0Oih2b2lkICheCiB7CiAgICAgVUlXS0RpY3RhdGlvbkNvbnRl
eHRIYW5kbGVyIGRpY3RhdGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgY29weV07CiAK
LSAgICBfcGFnZS0+cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoRGljdGF0aW9uQ29udGV4dENhbGxi
YWNrOjpjcmVhdGUoW2RpY3RhdGlvbkhhbmRsZXJdKGJvb2wgLyplcnJvciovLCBjb25zdCBTdHJp
bmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcm
IGFmdGVyVGV4dCkgeworICAgIF9wYWdlLT5yZXF1ZXN0RGljdGF0aW9uQ29udGV4dChEaWN0YXRp
b25Db250ZXh0Q2FsbGJhY2s6OmNyZWF0ZShbZGljdGF0aW9uSGFuZGxlcl0oY29uc3QgU3RyaW5n
JiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBh
ZnRlclRleHQsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgZGljdGF0aW9uSGFuZGxl
cihzZWxlY3RlZFRleHQsIGJlZm9yZVRleHQsIGFmdGVyVGV4dCk7CiAgICAgICAgIFtkaWN0YXRp
b25IYW5kbGVyIHJlbGVhc2VdOwogICAgIH0pKTsKQEAgLTE1ODAsNyArMTU4MCw3IEBAIC0gKHZv
aWQpcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGgKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhE
YXRhOmJlZm9yZVRleHQgbWFya2VkVGV4dDptYXJrZWRUZXh0IHNlbGVjdGVkVGV4dDpzZWxlY3Rl
ZFRleHQgYWZ0ZXJUZXh0OmFmdGVyVGV4dCBzZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0Ok5TTWFr
ZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpXSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgX2F1dG9j
b3JyZWN0aW9uRGF0YS5hdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyID0gW2NvbXBsZXRpb25I
YW5kbGVyIGNvcHldOwotICAgICAgICBfcGFnZS0+cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dChBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjazo6Y3JlYXRlKFtzZWxmXShib29sIC8qZXJy
b3IqLywgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcmIG1hcmtlZFRleHQs
IGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIGFmdGVyVGV4dCwgdWlu
dDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCkgeworICAgICAgICBfcGFnZS0+cmVxdWVz
dEF1dG9jb3JyZWN0aW9uQ29udGV4dChBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjazo6Y3Jl
YXRlKFtzZWxmXShjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFya2Vk
VGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0
LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBDYWxsYmFja0Jhc2U6OkVycm9y
KSB7CiAgICAgICAgICAgICBfYXV0b2NvcnJlY3Rpb25EYXRhLmF1dG9jb3JyZWN0aW9uQ29udGV4
dEhhbmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdp
dGhEYXRhOmJlZm9yZVRleHQgbWFya2VkVGV4dDptYXJrZWRUZXh0IHNlbGVjdGVkVGV4dDpzZWxl
Y3RlZFRleHQgYWZ0ZXJUZXh0OmFmdGVyVGV4dCBzZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0Ok5T
TWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpXSk7CiAgICAgICAgIH0pKTsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0JKHJl
dmlzaW9uIDE2OTk1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGlu
Z1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2NSw3ICsyNjUsNyBAQCAtICh2b2lkKV9wcmVw
YXJlUERGRGF0YUZvclByaW50aW5nT25TZWNvCiAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmJlZ2lu
UHJpbnRpbmcoX3dlYkZyYW1lLmdldCgpLCBwcmludEluZm8pOwogCiAgICAgSVBDQ2FsbGJhY2tD
b250ZXh0KiBjb250ZXh0ID0gbmV3IElQQ0NhbGxiYWNrQ29udGV4dDsKLSAgICBSZWZQdHI8RGF0
YUNhbGxiYWNrPiBjYWxsYmFjayA9IERhdGFDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0XShib29s
LCBBUEk6OkRhdGEqIGRhdGEpIHsKKyAgICBSZWZQdHI8RGF0YUNhbGxiYWNrPiBjYWxsYmFjayA9
IERhdGFDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0XShBUEk6OkRhdGEqIGRhdGEsIENhbGxiYWNr
QmFzZTo6RXJyb3IpIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
ICAgICBPd25QdHI8SVBDQ2FsbGJhY2tDb250ZXh0PiBjb250ZXh0RGVsZXRlciA9IGFkb3B0UHRy
KGNvbnRleHQpOwpAQCAtMzQwLDcgKzM0MCw3IEBAIC0gKEJPT0wpX2Fza1BhZ2VUb0NvbXB1dGVQ
YWdlUmVjdHMKICAgICBBU1NFUlQoIV9leHBlY3RlZENvbXB1dGVkUGFnZXNDYWxsYmFjayk7CiAK
ICAgICBJUENDYWxsYmFja0NvbnRleHQqIGNvbnRleHQgPSBuZXcgSVBDQ2FsbGJhY2tDb250ZXh0
OwotICAgIFJlZlB0cjxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+IGNhbGxiYWNrID0gQ29tcHV0ZWRQ
YWdlc0NhbGxiYWNrOjpjcmVhdGUoW2NvbnRleHRdKGJvb2wsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5n
KSB7CisgICAgUmVmUHRyPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4gY2FsbGJhY2sgPSBDb21wdXRl
ZFBhZ2VzQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dF0oY29uc3QgVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIENh
bGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgT3duUHRyPElQQ0NhbGxiYWNrQ29udGV4dD4g
Y29udGV4dERlbGV0ZXIgPSBhZG9wdFB0cihjb250ZXh0KTsKICAgICAgICAgcGFnZURpZENvbXB1
dGVQYWdlUmVjdHMocGFnZVJlY3RzLCB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbnRl
eHQpOwogICAgIH0pOwpAQCAtNDkyLDcgKzQ5Miw3IEBAIC0gKHZvaWQpX2RyYXdQcmV2aWV3OihO
U1JlY3QpbnNSZWN0CiAgICAgICAgICAgICAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmJlZ2luUHJp
bnRpbmcoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludElu
Zm9dKSk7CiAKICAgICAgICAgICAgICAgICBJUENDYWxsYmFja0NvbnRleHQqIGNvbnRleHQgPSBu
ZXcgSVBDQ2FsbGJhY2tDb250ZXh0OwotICAgICAgICAgICAgICAgIFJlZlB0cjxJbWFnZUNhbGxi
YWNrPiBjYWxsYmFjayA9IEltYWdlQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dF0oYm9vbCwgY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFuZGxlKSB7CisgICAgICAgICAgICAg
ICAgUmVmUHRyPEltYWdlQ2FsbGJhY2s+IGNhbGxiYWNrID0gSW1hZ2VDYWxsYmFjazo6Y3JlYXRl
KFtjb250ZXh0XShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIENh
bGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgT3duUHRyPElQQ0NhbGxi
YWNrQ29udGV4dD4gY29udGV4dERlbGV0ZXIgPSBhZG9wdFB0cihjb250ZXh0KTsKICAgICAgICAg
ICAgICAgICAgICAgcGFnZURpZERyYXdUb0ltYWdlKGltYWdlSGFuZGxlLCBjb250ZXh0KTsKICAg
ICAgICAgICAgICAgICB9KTsK
</data>
<flag name="review"
          id="257600"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>