<?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>133909</bug_id>
          
          <creation_ts>2014-06-14 12:57:50 -0700</creation_ts>
          <short_desc>Get rid of GenericAPICallback</short_desc>
          <delta_ts>2014-06-14 16:12:24 -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>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mrobinson</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1015687</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-06-14 12:57:50 -0700</bug_when>
    <thetext>In preparation for passing callbacks as functions, replace GenericAPICallback::create, which returned a GenericCallback, with a function template that returns an appropriate callback function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015688</commentid>
    <comment_count>1</comment_count>
      <attachid>233116</attachid>
    <who name="">mitz</who>
    <bug_when>2014-06-14 13:03:59 -0700</bug_when>
    <thetext>Created attachment 233116
Replace GenericAPICallback with genericCallbackFunction()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015689</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-14 13:05:57 -0700</bug_when>
    <thetext>Attachment 233116 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/GenericCallback.h:174:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/GenericCallback.h:174:  Extra space before [  [whitespace/braces] [5]
Total errors found: 2 in 13 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>1015709</commentid>
    <comment_count>3</comment_count>
      <attachid>233123</attachid>
    <who name="">mitz</who>
    <bug_when>2014-06-14 14:36:07 -0700</bug_when>
    <thetext>Created attachment 233123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015711</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-14 14:36:54 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015712</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-14 14:37:04 -0700</bug_when>
    <thetext>Attachment 233123 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/GenericCallback.h:174:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/GenericCallback.h:174:  Extra space before [  [whitespace/braces] [5]
Total errors found: 2 in 14 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>1015734</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-06-14 16:12:24 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r169984&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233116</attachid>
            <date>2014-06-14 13:03:59 -0700</date>
            <delta_ts>2014-06-14 14:32:27 -0700</delta_ts>
            <desc>Replace GenericAPICallback with genericCallbackFunction()</desc>
            <filename>apiCallbackFunction.diff</filename>
            <type>text/plain</type>
            <size>21504</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTk3NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE0LTA2LTE0ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBHZW5lcmljQVBJ
Q2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMzkwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEluIHByZXBhcmF0aW9uIGZvciBwYXNzaW5nIGNhbGxiYWNrcyBhcyBmdW5jdGlvbnMsIHJlcGxh
Y2UgR2VuZXJpY0FQSUNhbGxiYWNrOjpjcmVhdGUsIHdoaWNoCisgICAgICAgIHJldHVybmVkIGEg
R2VuZXJpY0NhbGxiYWNrLCB3aXRoIGEgZnVuY3Rpb24gdGVtcGxhdGUgdGhhdCByZXR1cm5zIGFu
IGFwcHJvcHJpYXRlIGNhbGxiYWNrCisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dEdl
dFN0YXRpc3RpY3MpOgorICAgICAgICAoV0tDb250ZXh0R2V0U3RhdGlzdGljc1dpdGhPcHRpb25z
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdLQ29va2llTWFuYWdlckdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdL
Q29va2llTWFuYWdlckdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXS0RhdGFiYXNlTWFu
YWdlckdldERhdGFiYXNlc0J5T3JpZ2luKToKKyAgICAgICAgKFdLRGF0YWJhc2VNYW5hZ2VyR2V0
RGF0YWJhc2VPcmlnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHA6
CisgICAgICAgIChXS0ZyYW1lR2V0TWFpblJlc291cmNlRGF0YSk6CisgICAgICAgIChXS0ZyYW1l
R2V0UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdLRnJhbWVHZXRXZWJBcmNoaXZlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMpOgor
ICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdp
bik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFDYWNoZU1hbmFnZXIuY3BwOgor
ICAgICAgICAoV0tNZWRpYUNhY2hlTWFuYWdlckdldEhvc3RuYW1lc1dpdGhNZWRpYUNhY2hlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tPcmlnaW5EYXRhTWFuYWdlci5jcHA6CisgICAg
ICAgIChXS09yaWdpbkRhdGFNYW5hZ2VyR2V0T3JpZ2lucyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUpOgorICAgICAgICAoV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV0tQYWdlR2V0U291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV0tQYWdlR2V0Q29u
dGVudHNBc1N0cmluZyk6CisgICAgICAgIChXS1BhZ2VHZXRCeXRlY29kZVByb2ZpbGUpOgorICAg
ICAgICAoV0tQYWdlR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXS1Bh
Z2VHZXRDb250ZW50c0FzTUhUTUxEYXRhKToKKyAgICAgICAgKFdLUGFnZURyYXdQYWdlc1RvUERG
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJHZXRTaXRlc1dpdGhEYXRhKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKToKKworICAgICAgICAq
IFVJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6dG9HZW5lcmlj
Q2FsbGJhY2tGdW5jdGlvbik6IEFkZGVkLiBHaXZlbiBhIEMgU1BJIGNhbGxiYWNrIGZ1bmN0aW9u
LCByZXR1cm5zIGEgZ2VuZXJpYworICAgICAgICBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHdyYXBz
IGl0LgorCiAyMDE0LTA2LTE0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IGJ1aWxkLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dl
bmVyaWNDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaAkocmV2aXNpb24gMTY5OTYyKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksMTcgKzE2OSwx
MiBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQVBJUmV0dXJuVmFsdWVUeXBl
LCB0eXBlbmFtZSBJbnRlcm5hbFJldHVyblZhbHVlVHlwZSA9IHR5cGVuYW1lIEFQSVR5cGVJbmZv
PEFQSVJldHVyblZhbHVlVHlwZT46OkltcGxUeXBlPgotY2xhc3MgR2VuZXJpY0FQSUNhbGxiYWNr
IDogcHVibGljIENhbGxiYWNrQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkICgqQ2Fs
bGJhY2tGdW5jdGlvbikoQVBJUmV0dXJuVmFsdWVUeXBlLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci0K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW5lcmljQ2FsbGJhY2s8SW50ZXJuYWxSZXR1cm5WYWx1
ZVR5cGU+PiBjcmVhdGUodm9pZCogY29udGV4dCwgQ2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFjaykK
LSAgICB7Ci0gICAgICAgIHJldHVybiBHZW5lcmljQ2FsbGJhY2s8SW50ZXJuYWxSZXR1cm5WYWx1
ZVR5cGU+OjpjcmVhdGUoW2NvbnRleHQsIGNhbGxiYWNrXShJbnRlcm5hbFJldHVyblZhbHVlVHlw
ZSByZXR1cm5WYWx1ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICAgICAg
Y2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCBlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9y
OjpOb25lID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkuZ2V0KCkpIDogMCwgY29udGV4dCk7
Ci0gICAgICAgIH0pOwotICAgIH0KLX07CitzdGF0aWMgdHlwZW5hbWUgR2VuZXJpY0NhbGxiYWNr
PEludGVybmFsUmV0dXJuVmFsdWVUeXBlPjo6Q2FsbGJhY2tGdW5jdGlvbiB0b0dlbmVyaWNDYWxs
YmFja0Z1bmN0aW9uKHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFjaykoQVBJUmV0dXJuVmFs
dWVUeXBlLCBXS0Vycm9yUmVmLCB2b2lkKikpCit7CisgICAgcmV0dXJuIFtjb250ZXh0LCBjYWxs
YmFja10oSW50ZXJuYWxSZXR1cm5WYWx1ZVR5cGUgcmV0dXJuVmFsdWUsIENhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCBlcnJv
ciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRl
KCkuZ2V0KCkpIDogMCwgY29udGV4dCk7CisgICAgfTsKK30KIAogdHlwZWRlZiBHZW5lcmljQ2Fs
bGJhY2s8Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91YmxlPiBDb21wdXRlZFBh
Z2VzQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSY+IEltYWdlQ2FsbGJhY2s7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAxNjk5NTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDYg
QEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotdHlwZWRlZiBHZW5lcmljQVBJQ2FsbGJh
Y2s8V0tBcnJheVJlZj4gQXJyYXlBUElDYWxsYmFjazsKLQogV0tUeXBlSUQgV0tBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlckdldFR5cGVJRCgpCiB7CiAgICAgcmV0dXJuIHRvQVBJKFdlYkFwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyUHJveHk6OkFQSVR5cGUpOwpAQCAtNDAsNyArMzgsNyBAQCBXS1R5cGVJ
RCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0VHlwCiAKIHZvaWQgV0tBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYsIHZvaWQqIGNvbnRleHQsIFdLQXBw
bGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uIGNh
bGxiYWNrKQogewotICAgIHRvSW1wbChhcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiktPmdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKEFycmF5QVBJQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBj
YWxsYmFjaykpOworICAgIHRvSW1wbChhcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiktPmdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKEFycmF5Q2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxs
YmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSkpOwogfQogCiB2b2lkIFdLQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYg
b3JpZ2luUmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDE2OTk1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw4ICs2OCw2IEBAIHRlbXBs
YXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0NvbnRleHQKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotdHlwZWRlZiBHZW5lcmljQVBJQ2FsbGJh
Y2s8V0tEaWN0aW9uYXJ5UmVmPiBEaWN0aW9uYXJ5QVBJQ2FsbGJhY2s7Ci0KIFdLVHlwZUlEIFdL
Q29udGV4dEdldFR5cGVJRCgpCiB7CiAgICAgcmV0dXJuIHRvQVBJKFdlYkNvbnRleHQ6OkFQSVR5
cGUpOwpAQCAtNTE5LDEyICs1MTcsMTIgQEAgdm9pZCBXS0NvbnRleHRXYXJtSW5pdGlhbFByb2Nl
c3MoV0tDb250ZQogCiB2b2lkIFdLQ29udGV4dEdldFN0YXRpc3RpY3MoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLQ29udGV4dEdldFN0YXRpc3RpY3NGdW5jdGlvbiBj
YWxsYmFjaykKIHsKLSAgICB0b0ltcGwoY29udGV4dFJlZiktPmdldFN0YXRpc3RpY3MoMHhGRkZG
RkZGRiwgRGljdGlvbmFyeUFQSUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spKTsK
KyAgICB0b0ltcGwoY29udGV4dFJlZiktPmdldFN0YXRpc3RpY3MoMHhGRkZGRkZGRiwgRGljdGlv
bmFyeUNhbGxiYWNrOjpjcmVhdGUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBj
YWxsYmFjaykpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzV2l0aE9wdGlvbnMo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RhdGlzdGljc09wdGlvbnMgb3B0aW9uc01hc2ss
IHZvaWQqIGNvbnRleHQsIFdLQ29udGV4dEdldFN0YXRpc3RpY3NGdW5jdGlvbiBjYWxsYmFjaykK
IHsKLSAgICB0b0ltcGwoY29udGV4dFJlZiktPmdldFN0YXRpc3RpY3Mob3B0aW9uc01hc2ssIERp
Y3Rpb25hcnlBUElDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9J
bXBsKGNvbnRleHRSZWYpLT5nZXRTdGF0aXN0aWNzKG9wdGlvbnNNYXNrLCBEaWN0aW9uYXJ5Q2Fs
bGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNr
KSkpOwogfQogCiB2b2lkIFdLQ29udGV4dEdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTY5OTU5KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDkgKzMxLDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAot
dHlwZWRlZiBHZW5lcmljQVBJQ2FsbGJhY2s8V0tBcnJheVJlZj4gQXJyYXlBUElDYWxsYmFjazsK
LXR5cGVkZWYgR2VuZXJpY0FQSUNhbGxiYWNrPFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgSFRU
UENvb2tpZUFjY2VwdFBvbGljeT4gSFRUUENvb2tpZUFjY2VwdFBvbGljeUFQSUNhbGxiYWNrOwot
CiBXS1R5cGVJRCBXS0Nvb2tpZU1hbmFnZXJHZXRUeXBlSUQoKQogewogICAgIHJldHVybiB0b0FQ
SShXZWJDb29raWVNYW5hZ2VyUHJveHk6OkFQSVR5cGUpOwpAQCAtNDYsNyArNDMsNyBAQCB2b2lk
IFdLQ29va2llTWFuYWdlclNldENsaWVudChXS0Nvb2tpZU1hCiAKIHZvaWQgV0tDb29raWVNYW5h
Z2VyR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFn
ZXJSZWYsIHZvaWQqIGNvbnRleHQsIFdLQ29va2llTWFuYWdlckdldENvb2tpZUhvc3RuYW1lc0Z1
bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChjb29raWVNYW5hZ2VyUmVmKS0+Z2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoQXJyYXlBUElDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxi
YWNrKSk7CisgICAgdG9JbXBsKGNvb2tpZU1hbmFnZXJSZWYpLT5nZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhBcnJheUNhbGxiYWNrOjpjcmVhdGUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihjb250
ZXh0LCBjYWxsYmFjaykpKTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFnZXJEZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXJSZWYsIFdLU3RyaW5n
UmVmIGhvc3RuYW1lKQpAQCAtNzEsNyArNjgsNyBAQCB2b2lkIFdLQ29va2llTWFuYWdlclNldEhU
VFBDb29raWVBY2NlcHRQCiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwgdm9pZCogY29udGV4dCwg
V0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeUZ1bmN0aW9uIGNhbGxiYWNr
KQogewotICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShIVFRQQ29va2llQWNjZXB0UG9saWN5QVBJQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxs
YmFjaykpOworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxs
YmFja0Z1bmN0aW9uPFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgSFRUUENvb2tpZUFjY2VwdFBv
bGljeT4oY29udGV4dCwgY2FsbGJhY2spKSk7CiB9CiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyU3Rh
cnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2Vy
KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRGF0YWJhc2VNYW5hZ2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tEYXRh
YmFzZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjk5NTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tEYXRhYmFzZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwx
MCArMzEsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi0jaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLXR5cGVkZWYgR2VuZXJpY0FQSUNhbGxiYWNrPFdLQXJyYXlSZWY+IEFycmF5QVBJ
Q2FsbGJhY2s7Ci0jZW5kaWYKLQogV0tUeXBlSUQgV0tEYXRhYmFzZU1hbmFnZXJHZXRUeXBlSUQo
KQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCkBAIC0xNTksNyArMTU1LDcgQEAgdm9pZCBX
S0RhdGFiYXNlTWFuYWdlclNldENsaWVudChXS0RhdGFiYQogdm9pZCBXS0RhdGFiYXNlTWFuYWdl
ckdldERhdGFiYXNlc0J5T3JpZ2luKFdLRGF0YWJhc2VNYW5hZ2VyUmVmIGRhdGFiYXNlTWFuYWdl
clJlZiwgdm9pZCogY29udGV4dCwgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZXNCeU9yaWdp
bkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgdG9J
bXBsKGRhdGFiYXNlTWFuYWdlclJlZiktPmdldERhdGFiYXNlc0J5T3JpZ2luKEFycmF5QVBJQ2Fs
bGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChkYXRhYmFzZU1h
bmFnZXJSZWYpLT5nZXREYXRhYmFzZXNCeU9yaWdpbihBcnJheUNhbGxiYWNrOjpjcmVhdGUodG9H
ZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGRhdGFiYXNlTWFuYWdlclJlZik7CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRl
eHQpOwpAQCAtMTcwLDcgKzE2Niw3IEBAIHZvaWQgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFz
ZXNCeU9yaWcKIHZvaWQgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZU9yaWdpbnMoV0tEYXRh
YmFzZU1hbmFnZXJSZWYgZGF0YWJhc2VNYW5hZ2VyUmVmLCB2b2lkKiBjb250ZXh0LCBXS0RhdGFi
YXNlTWFuYWdlckdldERhdGFiYXNlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCi0gICAgdG9JbXBsKGRhdGFiYXNlTWFuYWdlclJlZiktPmdldERh
dGFiYXNlT3JpZ2lucyhBcnJheUFQSUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2sp
KTsKKyAgICB0b0ltcGwoZGF0YWJhc2VNYW5hZ2VyUmVmKS0+Z2V0RGF0YWJhc2VPcmlnaW5zKEFy
cmF5Q2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNh
bGxiYWNrKSkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2VNYW5hZ2VyUmVmKTsK
ICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLRnJhbWUuY3BwCShyZXZpc2lvbiAxNjk5NTkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMx
LDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotdHlwZWRlZiBHZW5lcmljQVBJQ2Fs
bGJhY2s8V0tEYXRhUmVmPiBEYXRhQVBJQ2FsbGJhY2s7Ci0KIFdLVHlwZUlEIFdLRnJhbWVHZXRU
eXBlSUQoKQogewogICAgIHJldHVybiB0b0FQSShXZWJGcmFtZVByb3h5OjpBUElUeXBlKTsKQEAg
LTEyNiwxNyArMTI0LDE3IEBAIGJvb2wgV0tGcmFtZUlzRnJhbWVTZXQoV0tGcmFtZVJlZiBmcmFt
ZVIKIAogdm9pZCBXS0ZyYW1lR2V0TWFpblJlc291cmNlRGF0YShXS0ZyYW1lUmVmIGZyYW1lUmVm
LCBXS0ZyYW1lR2V0UmVzb3VyY2VEYXRhRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQp
CiB7Ci0gICAgdG9JbXBsKGZyYW1lUmVmKS0+Z2V0TWFpblJlc291cmNlRGF0YShEYXRhQVBJQ2Fs
bGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChmcmFtZVJlZikt
PmdldE1haW5SZXNvdXJjZURhdGEoRGF0YUNhbGxiYWNrOjpjcmVhdGUodG9HZW5lcmljQ2FsbGJh
Y2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpKTsKIH0KIAogdm9pZCBXS0ZyYW1lR2V0UmVz
b3VyY2VEYXRhKFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHJlc291cmNlVVJMLCBXS0Zy
YW1lR2V0UmVzb3VyY2VEYXRhRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCiB7Ci0g
ICAgdG9JbXBsKGZyYW1lUmVmKS0+Z2V0UmVzb3VyY2VEYXRhKHRvSW1wbChyZXNvdXJjZVVSTCks
IERhdGFBUElDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBs
KGZyYW1lUmVmKS0+Z2V0UmVzb3VyY2VEYXRhKHRvSW1wbChyZXNvdXJjZVVSTCksIERhdGFDYWxs
YmFjazo6Y3JlYXRlKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2sp
KSk7CiB9CiAKIHZvaWQgV0tGcmFtZUdldFdlYkFyY2hpdmUoV0tGcmFtZVJlZiBmcmFtZVJlZiwg
V0tGcmFtZUdldFdlYkFyY2hpdmVGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsK
LSAgICB0b0ltcGwoZnJhbWVSZWYpLT5nZXRXZWJBcmNoaXZlKERhdGFBUElDYWxsYmFjazo6Y3Jl
YXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKGZyYW1lUmVmKS0+Z2V0V2ViQXJj
aGl2ZShEYXRhQ2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRl
eHQsIGNhbGxiYWNrKSkpOwogfQogCiAvLyBOT1RFOiBUaGVzZSBhcmUgZGVwcmVjYXRlZCBhbmQg
c2hvdWxkIGJlIHJlbW92ZWQuIFRoZXkgY3VycmVudGx5IGRvIG5vdGhpbmcuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTY5OTU5KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDggKzMxLDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotdHlwZWRlZiBH
ZW5lcmljQVBJQ2FsbGJhY2s8V0tBcnJheVJlZj4gQXJyYXlBUElDYWxsYmFjazsKLQogV0tUeXBl
SUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9B
UEkoV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6QVBJVHlwZSk7CkBAIC01OCwxMiArNTYsMTIg
QEAgV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TQogCiB2b2lkIFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYsIHZvaWQqIGNvbnRleHQs
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnNGdW5jdGlv
biBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwoa2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiktPmdl
dEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoQXJyYXlBUElDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQs
IGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKGtleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYpLT5nZXRL
ZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKEFycmF5Q2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxs
YmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSkpOwogfQogCiB2b2lkIFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYsIHZvaWQqIGNvbnRleHQsIFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbiBjYWxs
YmFjaykKIHsKLSAgICB0b0ltcGwoa2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiktPmdldFN0b3Jh
Z2VEZXRhaWxzQnlPcmlnaW4oQXJyYXlBUElDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxi
YWNrKSk7CisgICAgdG9JbXBsKGtleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYpLT5nZXRTdG9yYWdl
RGV0YWlsc0J5T3JpZ2luKEFycmF5Q2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1
bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSkpOwogfQogCiB2b2lkIFdLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVm
IGtleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luUmVm
KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFDYWNoZU1hbmFn
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS01l
ZGlhQ2FjaGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTY5OTU5KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFDYWNoZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw4ICszMSw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLXR5cGVkZWYgR2Vu
ZXJpY0FQSUNhbGxiYWNrPFdLQXJyYXlSZWY+IEFycmF5QVBJQ2FsbGJhY2s7Ci0KIFdLVHlwZUlE
IFdLTWVkaWFDYWNoZU1hbmFnZXJHZXRUeXBlSUQoKQogewogICAgIHJldHVybiB0b0FQSShXZWJN
ZWRpYUNhY2hlTWFuYWdlclByb3h5OjpBUElUeXBlKTsKQEAgLTQwLDcgKzM4LDcgQEAgV0tUeXBl
SUQgV0tNZWRpYUNhY2hlTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tNZWRpYUNhY2hlTWFu
YWdlckdldEhvc3RuYW1lc1dpdGhNZWRpYUNhY2hlKFdLTWVkaWFDYWNoZU1hbmFnZXJSZWYgbWVk
aWFDYWNoZU1hbmFnZXJSZWYsIHZvaWQqIGNvbnRleHQsIFdLTWVkaWFDYWNoZU1hbmFnZXJHZXRI
b3N0bmFtZXNXaXRoTWVkaWFDYWNoZUZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbCht
ZWRpYUNhY2hlTWFuYWdlclJlZiktPmdldEhvc3RuYW1lc1dpdGhNZWRpYUNhY2hlKEFycmF5QVBJ
Q2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChtZWRpYUNh
Y2hlTWFuYWdlclJlZiktPmdldEhvc3RuYW1lc1dpdGhNZWRpYUNhY2hlKEFycmF5Q2FsbGJhY2s6
OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSkpOwog
fQogCiB2b2lkIFdLTWVkaWFDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9ySG9zdG5hbWUoV0tNZWRp
YUNhY2hlTWFuYWdlclJlZiBtZWRpYUNhY2hlTWFuYWdlclJlZiwgV0tTdHJpbmdSZWYgaG9zdG5h
bWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcmlnaW5EYXRhTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
T3JpZ2luRGF0YU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjk5NTkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcmlnaW5EYXRhTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDggKzMxLDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotdHlwZWRlZiBH
ZW5lcmljQVBJQ2FsbGJhY2s8V0tBcnJheVJlZj4gQXJyYXlBUElDYWxsYmFjazsKLQogV0tUeXBl
SUQgV0tPcmlnaW5EYXRhTWFuYWdlckdldFR5cGVJRCgpCiB7CiAgICAgcmV0dXJuIHRvQVBJKFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkFQSVR5cGUpOwpAQCAtNDAsNyArMzgsNyBAQCBXS1R5
cGVJRCBXS09yaWdpbkRhdGFNYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBXS09yaWdpbkRhdGFN
YW5hZ2VyR2V0T3JpZ2lucyhXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2Vy
UmVmLCBXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgdm9pZCogY29udGV4dCwgV0tPcmlnaW5EYXRh
TWFuYWdlckdldE9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwob3JpZ2lu
RGF0YU1hbmFnZXJSZWYpLT5nZXRPcmlnaW5zKHR5cGVzLCBBcnJheUFQSUNhbGxiYWNrOjpjcmVh
dGUoY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwob3JpZ2luRGF0YU1hbmFnZXJSZWYp
LT5nZXRPcmlnaW5zKHR5cGVzLCBBcnJheUNhbGxiYWNrOjpjcmVhdGUodG9HZW5lcmljQ2FsbGJh
Y2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpKTsKIH0KIAogdm9pZCBXS09yaWdpbkRhdGFN
YW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdp
bkRhdGFNYW5hZ2VyUmVmLCBXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgV0tTZWN1cml0eU9yaWdp
blJlZiBvcmlnaW5SZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAkocmV2aXNpb24gMTY5OTYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDEwICs3Nyw2IEBAIHRlbXBsYXRl
PD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VVSUMKIAogfQogCi10eXBlZGVmIEdlbmVyaWNB
UElDYWxsYmFjazxXS0RhdGFSZWY+IERhdGFBUElDYWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0FQ
SUNhbGxiYWNrPFdLU3RyaW5nUmVmLCBTdHJpbmdJbXBsKj4gU3RyaW5nQVBJQ2FsbGJhY2s7Ci10
eXBlZGVmIEdlbmVyaWNBUElDYWxsYmFjazxXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZj4gU2Ny
aXB0VmFsdWVBUElDYWxsYmFjazsKLQogV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCkKIHsKICAg
ICByZXR1cm4gdG9BUEkoV2ViUGFnZVByb3h5OjpBUElUeXBlKTsKQEAgLTE1NjYsNyArMTU2Miw3
IEBAIHZvaWQgV0tQYWdlU2V0U2Vzc2lvbihXS1BhZ2VSZWYgcGFnZVJlZiwKIAogdm9pZCBXS1Bh
Z2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVm
IHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNh
bGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgU2NyaXB0VmFsdWVBUElDYWxsYmFjazo6Y3Jl
YXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCBTY3JpcHRWYWx1ZUNh
bGxiYWNrOjpjcmVhdGUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFj
aykpKTsKIH0KIAogI2lmZGVmIF9fQkxPQ0tTX18KQEAgLTE1ODUsMzMgKzE1ODEsMzMgQEAgdm9p
ZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYihXSwogCiB2b2lkIFdLUGFnZVJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250
ZXh0LCBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZ1bmN0aW9uIGNhbGxi
YWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb24oU3RyaW5nQVBJQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
U3RyaW5nQ2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uPFdLU3RyaW5n
UmVmLCBTdHJpbmdJbXBsKj4oY29udGV4dCwgY2FsbGJhY2spKSk7CiB9CiAKIHZvaWQgV0tQYWdl
R2V0U291cmNlRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYs
IHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFNvdXJjZUZvckZyYW1lRnVuY3Rpb24gY2FsbGJhY2sp
CiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVS
ZWYpLCBTdHJpbmdBUElDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVSZWYpLCBTdHJp
bmdDYWxsYmFjazo6Y3JlYXRlKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tTdHJpbmdSZWYs
IFN0cmluZ0ltcGwqPihjb250ZXh0LCBjYWxsYmFjaykpKTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRD
b250ZW50c0FzU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VH
ZXRDb250ZW50c0FzU3RyaW5nRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKHBhZ2VS
ZWYpLT5nZXRDb250ZW50c0FzU3RyaW5nKFN0cmluZ0FQSUNhbGxiYWNrOjpjcmVhdGUoY29udGV4
dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmdldENvbnRlbnRzQXNTdHJpbmco
U3RyaW5nQ2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uPFdLU3RyaW5n
UmVmLCBTdHJpbmdJbXBsKj4oY29udGV4dCwgY2FsbGJhY2spKSk7CiB9CiAKIHZvaWQgV0tQYWdl
R2V0Qnl0ZWNvZGVQcm9maWxlKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1Bh
Z2VHZXRCeXRlY29kZVByb2ZpbGVGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwocGFn
ZVJlZiktPmdldEJ5dGVjb2RlUHJvZmlsZShTdHJpbmdBUElDYWxsYmFjazo6Y3JlYXRlKGNvbnRl
eHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRCeXRlY29kZVByb2ZpbGUo
U3RyaW5nQ2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uPFdLU3RyaW5n
UmVmLCBTdHJpbmdJbXBsKj4oY29udGV4dCwgY2FsbGJhY2spKSk7CiB9CiAKIHZvaWQgV0tQYWdl
R2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tQYWdlR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YUZ1bmN0aW9uIGNhbGxiYWNr
KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShE
YXRhQVBJQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChw
YWdlUmVmKS0+Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShEYXRhQ2FsbGJhY2s6OmNyZWF0
ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSkpOwogfQogCiB2
b2lkIFdLUGFnZUdldENvbnRlbnRzQXNNSFRNTERhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wg
dXNlQmluYXJ5RW5jb2RpbmcsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldENvbnRlbnRzQXNNSFRN
TERhdGFGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoTUhUTUwpCi0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5nZXRDb250ZW50c0FzTUhUTUxEYXRhKERhdGFBUElDYWxsYmFjazo6Y3JlYXRl
KGNvbnRleHQsIGNhbGxiYWNrKSwgdXNlQmluYXJ5RW5jb2RpbmcpOworICAgIHRvSW1wbChwYWdl
UmVmKS0+Z2V0Q29udGVudHNBc01IVE1MRGF0YShEYXRhQ2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVy
aWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSksIHVzZUJpbmFyeUVuY29kaW5n
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIFVOVVNFRF9QQVJBTSh1
c2VCaW5hcnlFbmNvZGluZyk7CkBAIC0xNjk0LDcgKzE2OTAsNyBAQCB2b2lkIFdLUGFnZUJlZ2lu
UHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2UsCiAKIHZvaWQgV0tQYWdlRHJhd1BhZ2VzVG9QREYoV0tQ
YWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbywgdWlu
dDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBXS1BhZ2VEcmF3VG9QREZGdW5jdGlvbiBjYWxs
YmFjaywgdm9pZCogY29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPmRyYXdQYWdlc1RvUERG
KHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pLCBmaXJz
dCwgY291bnQsIERhdGFBUElDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7Cisg
ICAgdG9JbXBsKHBhZ2UpLT5kcmF3UGFnZXNUb1BERih0b0ltcGwoZnJhbWUpLCBwcmludEluZm9G
cm9tV0tQcmludEluZm8ocHJpbnRJbmZvKSwgZmlyc3QsIGNvdW50LCBEYXRhQ2FsbGJhY2s6OmNy
ZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSkpOwogfQog
CiB2b2lkIFdLUGFnZUVuZFByaW50aW5nKFdLUGFnZVJlZiBwYWdlKQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQbHVnaW5TaXRlRGF0YU1h
bmFnZXIuY3BwCShyZXZpc2lvbiAxNjk5NTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwx
MCArMzYsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi0jaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCi10eXBlZGVmIEdlbmVyaWNBUElDYWxsYmFjazxXS0FycmF5UmVmPiBB
cnJheUFQSUNhbGxiYWNrOwotI2VuZGlmCi0KIFdLVHlwZUlEIFdLUGx1Z2luU2l0ZURhdGFNYW5h
Z2VyR2V0VHlwZUlEKCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTUy
LDcgKzQ4LDcgQEAgV0tUeXBlSUQgV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJHZXRUeXBlSQogdm9p
ZCBXS1BsdWdpblNpdGVEYXRhTWFuYWdlckdldFNpdGVzV2l0aERhdGEoV0tQbHVnaW5TaXRlRGF0
YU1hbmFnZXJSZWYgbWFuYWdlclJlZiwgdm9pZCogY29udGV4dCwgV0tQbHVnaW5TaXRlRGF0YU1h
bmFnZXJHZXRTaXRlc1dpdGhEYXRhRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5nZXRTaXRlc1dpdGhE
YXRhKEFycmF5QVBJQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRv
SW1wbChtYW5hZ2VyUmVmKS0+Z2V0U2l0ZXNXaXRoRGF0YShBcnJheUNhbGxiYWNrOjpjcmVhdGUo
dG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKG1hbmFnZXJSZWYpOwogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAJKHJldmlzaW9uIDE2OTk1OSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsOCArMzEsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi10eXBl
ZGVmIEdlbmVyaWNBUElDYWxsYmFjazxXS0FycmF5UmVmPiBBcnJheUFQSUNhbGxiYWNrOwotCiBX
S1R5cGVJRCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkKIHsKICAgICByZXR1cm4g
dG9BUEkoV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6QVBJVHlwZSk7CkBAIC00MCw3ICsz
OCw3IEBAIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRUeXBlSUQKIAogdm9pZCBX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFn
ZXJSZWYgY2FjaGVNYW5hZ2VyUmVmLCB2b2lkKiBjb250ZXh0LCBXS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyR2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKGNhY2hl
TWFuYWdlclJlZiktPmdldENhY2hlT3JpZ2lucyhBcnJheUFQSUNhbGxiYWNrOjpjcmVhdGUoY29u
dGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwoY2FjaGVNYW5hZ2VyUmVmKS0+Z2V0Q2FjaGVP
cmlnaW5zKEFycmF5Q2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNv
bnRleHQsIGNhbGxiYWNrKSkpOwogfQogCiB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVh
ckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyUmVm
LCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpblJlZiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIg
Y2FjaGVzVG9DbGVhcikK
</data>
<flag name="review"
          id="257616"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="257621"
          type_id="3"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233123</attachid>
            <date>2014-06-14 14:36:07 -0700</date>
            <delta_ts>2014-06-14 14:36:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133909-20140614143544.patch</filename>
            <type>text/plain</type>
            <size>23234</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTk4MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE0LTA2LTE0ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBHZW5lcmljQVBJ
Q2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMzkwOQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgSW4g
cHJlcGFyYXRpb24gZm9yIHBhc3NpbmcgY2FsbGJhY2tzIGFzIGZ1bmN0aW9ucywgcmVwbGFjZSBH
ZW5lcmljQVBJQ2FsbGJhY2s6OmNyZWF0ZSwgd2hpY2gKKyAgICAgICAgcmV0dXJuZWQgYSBHZW5l
cmljQ2FsbGJhY2ssIHdpdGggYSBmdW5jdGlvbiB0ZW1wbGF0ZSB0aGF0IHJldHVybnMgYW4gYXBw
cm9wcmlhdGUgY2FsbGJhY2sKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0R2V0U3Rh
dGlzdGljcyk6CisgICAgICAgIChXS0NvbnRleHRHZXRTdGF0aXN0aWNzV2l0aE9wdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAo
V0tDb29raWVNYW5hZ2VyR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV0tDb29r
aWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLRGF0YWJhc2VNYW5hZ2Vy
R2V0RGF0YWJhc2VzQnlPcmlnaW4pOgorICAgICAgICAoV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRh
YmFzZU9yaWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcDoKKyAg
ICAgICAgKFdLRnJhbWVHZXRNYWluUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdLRnJhbWVHZXRS
ZXNvdXJjZURhdGEpOgorICAgICAgICAoV0tGcmFtZUdldFdlYkFyY2hpdmUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAo
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAg
ICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tNZWRpYUNhY2hlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXS01lZGlhQ2FjaGVNYW5hZ2VyR2V0SG9zdG5hbWVzV2l0aE1lZGlhQ2FjaGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09yaWdpbkRhdGFNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLT3JpZ2luRGF0YU1hbmFnZXJHZXRPcmlnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6
CisgICAgICAgIChXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgIChXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXS1BhZ2VHZXRDb250ZW50
c0FzU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAg
IChXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdLUGFnZUdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV0tQYWdlRHJhd1BhZ2VzVG9QREYpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BsdWdpblNpdGVEYXRhTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXS1BsdWdpblNpdGVEYXRhTWFuYWdlckdldFNpdGVzV2l0aERhdGEpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMpOgorCisgICAgICAgICogVUlQ
cm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oOgorICAgICAgICAoV2ViS2l0Ojp0b0dlbmVyaWNDYWxs
YmFja0Z1bmN0aW9uKTogQWRkZWQuIEdpdmVuIGEgQyBTUEkgY2FsbGJhY2sgZnVuY3Rpb24sIHJl
dHVybnMgYSBnZW5lcmljCisgICAgICAgIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgd3JhcHMgaXQu
CisKIDIwMTQtMDYtMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJp
Y0NhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVy
aWNDYWxsYmFjay5oCShyZXZpc2lvbiAxNjk5ODApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvR2VuZXJpY0NhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OSwxNyArMTY5LDEyIEBA
IHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBUElSZXR1cm5WYWx1ZVR5cGUsIHR5
cGVuYW1lIEludGVybmFsUmV0dXJuVmFsdWVUeXBlID0gdHlwZW5hbWUgQVBJVHlwZUluZm88QVBJ
UmV0dXJuVmFsdWVUeXBlPjo6SW1wbFR5cGU+Ci1jbGFzcyBHZW5lcmljQVBJQ2FsbGJhY2sgOiBw
dWJsaWMgQ2FsbGJhY2tCYXNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKCpDYWxsYmFj
a0Z1bmN0aW9uKShBUElSZXR1cm5WYWx1ZVR5cGUsIFdLRXJyb3JSZWYsIHZvaWQqKTsKLQotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEdlbmVyaWNDYWxsYmFjazxJbnRlcm5hbFJldHVyblZhbHVlVHlw
ZT4+IGNyZWF0ZSh2b2lkKiBjb250ZXh0LCBDYWxsYmFja0Z1bmN0aW9uIGNhbGxiYWNrKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIEdlbmVyaWNDYWxsYmFjazxJbnRlcm5hbFJldHVyblZhbHVlVHlw
ZT46OmNyZWF0ZShbY29udGV4dCwgY2FsbGJhY2tdKEludGVybmFsUmV0dXJuVmFsdWVUeXBlIHJl
dHVyblZhbHVlLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxs
YmFjayh0b0FQSShyZXR1cm5WYWx1ZSksIGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5v
bmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSkgOiAwLCBjb250ZXh0KTsKLSAg
ICAgICAgfSk7Ci0gICAgfQotfTsKK3N0YXRpYyB0eXBlbmFtZSBHZW5lcmljQ2FsbGJhY2s8SW50
ZXJuYWxSZXR1cm5WYWx1ZVR5cGU+OjpDYWxsYmFja0Z1bmN0aW9uIHRvR2VuZXJpY0NhbGxiYWNr
RnVuY3Rpb24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShBUElSZXR1cm5WYWx1ZVR5
cGUsIFdLRXJyb3JSZWYsIHZvaWQqKSkKK3sKKyAgICByZXR1cm4gW2NvbnRleHQsIGNhbGxiYWNr
XShJbnRlcm5hbFJldHVyblZhbHVlVHlwZSByZXR1cm5WYWx1ZSwgQ2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgeworICAgICAgICBjYWxsYmFjayh0b0FQSShyZXR1cm5WYWx1ZSksIGVycm9yICE9
IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5n
ZXQoKSkgOiAwLCBjb250ZXh0KTsKKyAgICB9OworfQogCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azxjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBkb3VibGU+IENvbXB1dGVkUGFnZXND
YWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJj4gSW1hZ2VDYWxsYmFjazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAJKHJl
dmlzaW9uIDE2OTk4MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNiBAQAog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi10eXBlZGVmIEdlbmVyaWNBUElDYWxsYmFjazxX
S0FycmF5UmVmPiBBcnJheUFQSUNhbGxiYWNrOwotCiBXS1R5cGVJRCBXS0FwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyR2V0VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoV2ViQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJQcm94eTo6QVBJVHlwZSk7CkBAIC00MCw3ICszOCw3IEBAIFdLVHlwZUlEIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXAKIAogdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
clJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiwgdm9pZCogY29udGV4dCwgV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zRnVuY3Rpb24gY2FsbGJh
Y2spCiB7Ci0gICAgdG9JbXBsKGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmKS0+Z2V0QXBwbGlj
YXRpb25DYWNoZU9yaWdpbnMoQXJyYXlBUElDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxi
YWNrKSk7CisgICAgdG9JbXBsKGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmKS0+Z2V0QXBwbGlj
YXRpb25DYWNoZU9yaWdpbnMoQXJyYXlDYWxsYmFjazo6Y3JlYXRlKHRvR2VuZXJpY0NhbGxiYWNr
RnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKSk7CiB9CiAKIHZvaWQgV0tBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
clJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmln
aW5SZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcAkocmV2aXNpb24gMTY5OTgwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDggKzY4LDYgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29udGV4dAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi10eXBlZGVmIEdlbmVyaWNBUElDYWxsYmFjazxX
S0RpY3Rpb25hcnlSZWY+IERpY3Rpb25hcnlBUElDYWxsYmFjazsKLQogV0tUeXBlSUQgV0tDb250
ZXh0R2V0VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoV2ViQ29udGV4dDo6QVBJVHlwZSk7
CkBAIC01MTksMTIgKzUxNywxMiBAQCB2b2lkIFdLQ29udGV4dFdhcm1Jbml0aWFsUHJvY2VzcyhX
S0NvbnRlCiAKIHZvaWQgV0tDb250ZXh0R2V0U3RhdGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0R2V0U3RhdGlzdGljc0Z1bmN0aW9uIGNhbGxi
YWNrKQogewotICAgIHRvSW1wbChjb250ZXh0UmVmKS0+Z2V0U3RhdGlzdGljcygweEZGRkZGRkZG
LCBEaWN0aW9uYXJ5QVBJQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOworICAg
IHRvSW1wbChjb250ZXh0UmVmKS0+Z2V0U3RhdGlzdGljcygweEZGRkZGRkZGLCBEaWN0aW9uYXJ5
Q2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxi
YWNrKSkpOwogfQogCiB2b2lkIFdLQ29udGV4dEdldFN0YXRpc3RpY3NXaXRoT3B0aW9ucyhXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgV0tTdGF0aXN0aWNzT3B0aW9ucyBvcHRpb25zTWFzaywgdm9p
ZCogY29udGV4dCwgV0tDb250ZXh0R2V0U3RhdGlzdGljc0Z1bmN0aW9uIGNhbGxiYWNrKQogewot
ICAgIHRvSW1wbChjb250ZXh0UmVmKS0+Z2V0U3RhdGlzdGljcyhvcHRpb25zTWFzaywgRGljdGlv
bmFyeUFQSUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwo
Y29udGV4dFJlZiktPmdldFN0YXRpc3RpY3Mob3B0aW9uc01hc2ssIERpY3Rpb25hcnlDYWxsYmFj
azo6Y3JlYXRlKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKSk7
CiB9CiAKIHZvaWQgV0tDb250ZXh0R2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cyhXS0Nv
bnRleHRSZWYgY29udGV4dFJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0Nvb2tpZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjk5ODApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsOSArMzEsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi10eXBl
ZGVmIEdlbmVyaWNBUElDYWxsYmFjazxXS0FycmF5UmVmPiBBcnJheUFQSUNhbGxiYWNrOwotdHlw
ZWRlZiBHZW5lcmljQVBJQ2FsbGJhY2s8V0tIVFRQQ29va2llQWNjZXB0UG9saWN5LCBIVFRQQ29v
a2llQWNjZXB0UG9saWN5PiBIVFRQQ29va2llQWNjZXB0UG9saWN5QVBJQ2FsbGJhY2s7Ci0KIFdL
VHlwZUlEIFdLQ29va2llTWFuYWdlckdldFR5cGVJRCgpCiB7CiAgICAgcmV0dXJuIHRvQVBJKFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6QVBJVHlwZSk7CkBAIC00Niw3ICs0Myw3IEBAIHZvaWQgV0tD
b29raWVNYW5hZ2VyU2V0Q2xpZW50KFdLQ29va2llTWEKIAogdm9pZCBXS0Nvb2tpZU1hbmFnZXJH
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlclJl
Ziwgdm9pZCogY29udGV4dCwgV0tDb29raWVNYW5hZ2VyR2V0Q29va2llSG9zdG5hbWVzRnVuY3Rp
b24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXJSZWYpLT5nZXRIb3N0bmFt
ZXNXaXRoQ29va2llcyhBcnJheUFQSUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2sp
KTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlclJlZiktPmdldEhvc3RuYW1lc1dpdGhDb29raWVz
KEFycmF5Q2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQs
IGNhbGxiYWNrKSkpOwogfQogCiB2b2lkIFdLQ29va2llTWFuYWdlckRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlclJlZiwgV0tTdHJpbmdSZWYg
aG9zdG5hbWUpCkBAIC03MSw3ICs2OCw3IEBAIHZvaWQgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENv
b2tpZUFjY2VwdFAKIAogdm9pZCBXS0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0Nv
b2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5RnVuY3Rpb24gY2FsbGJhY2spCiB7
Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhU
VFBDb29raWVBY2NlcHRQb2xpY3lBUElDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNr
KSk7CisgICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazo6Y3JlYXRlKHRvR2VuZXJpY0NhbGxiYWNr
RnVuY3Rpb248V0tIVFRQQ29va2llQWNjZXB0UG9saWN5LCBIVFRQQ29va2llQWNjZXB0UG9saWN5
Pihjb250ZXh0LCBjYWxsYmFjaykpKTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFnZXJTdGFydE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tEYXRhYmFzZU1hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0RhdGFiYXNl
TWFuYWdlci5jcHAJKHJldmlzaW9uIDE2OTk4MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0RhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICsz
MSw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLSNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotdHlwZWRlZiBHZW5lcmljQVBJQ2FsbGJhY2s8V0tBcnJheVJlZj4gQXJyYXlBUElDYWxs
YmFjazsKLSNlbmRpZgotCiBXS1R5cGVJRCBXS0RhdGFiYXNlTWFuYWdlckdldFR5cGVJRCgpCiB7
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKQEAgLTE1OSw3ICsxNTUsNyBAQCB2b2lkIFdLRGF0
YWJhc2VNYW5hZ2VyU2V0Q2xpZW50KFdLRGF0YWJhCiB2b2lkIFdLRGF0YWJhc2VNYW5hZ2VyR2V0
RGF0YWJhc2VzQnlPcmlnaW4oV0tEYXRhYmFzZU1hbmFnZXJSZWYgZGF0YWJhc2VNYW5hZ2VyUmVm
LCB2b2lkKiBjb250ZXh0LCBXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlc0J5T3JpZ2luRnVu
Y3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICB0b0ltcGwo
ZGF0YWJhc2VNYW5hZ2VyUmVmKS0+Z2V0RGF0YWJhc2VzQnlPcmlnaW4oQXJyYXlBUElDYWxsYmFj
azo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKGRhdGFiYXNlTWFuYWdl
clJlZiktPmdldERhdGFiYXNlc0J5T3JpZ2luKEFycmF5Q2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVy
aWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSkpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oZGF0YWJhc2VNYW5hZ2VyUmVmKTsKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7
CkBAIC0xNzAsNyArMTY2LDcgQEAgdm9pZCBXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlc0J5
T3JpZwogdm9pZCBXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlT3JpZ2lucyhXS0RhdGFiYXNl
TWFuYWdlclJlZiBkYXRhYmFzZU1hbmFnZXJSZWYsIHZvaWQqIGNvbnRleHQsIFdLRGF0YWJhc2VN
YW5hZ2VyR2V0RGF0YWJhc2VPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKLSAgICB0b0ltcGwoZGF0YWJhc2VNYW5hZ2VyUmVmKS0+Z2V0RGF0YWJh
c2VPcmlnaW5zKEFycmF5QVBJQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOwor
ICAgIHRvSW1wbChkYXRhYmFzZU1hbmFnZXJSZWYpLT5nZXREYXRhYmFzZU9yaWdpbnMoQXJyYXlD
YWxsYmFjazo6Y3JlYXRlKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJh
Y2spKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkYXRhYmFzZU1hbmFnZXJSZWYpOwogICAg
IFVOVVNFRF9QQVJBTShjb250ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tGcmFtZS5jcHAJKHJldmlzaW9uIDE2OTk4MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNiBA
QAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi10eXBlZGVmIEdlbmVyaWNBUElDYWxsYmFj
azxXS0RhdGFSZWY+IERhdGFBUElDYWxsYmFjazsKLQogV0tUeXBlSUQgV0tGcmFtZUdldFR5cGVJ
RCgpCiB7CiAgICAgcmV0dXJuIHRvQVBJKFdlYkZyYW1lUHJveHk6OkFQSVR5cGUpOwpAQCAtMTI2
LDE3ICsxMjQsMTcgQEAgYm9vbCBXS0ZyYW1lSXNGcmFtZVNldChXS0ZyYW1lUmVmIGZyYW1lUgog
CiB2b2lkIFdLRnJhbWVHZXRNYWluUmVzb3VyY2VEYXRhKFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdL
RnJhbWVHZXRSZXNvdXJjZURhdGFGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsK
LSAgICB0b0ltcGwoZnJhbWVSZWYpLT5nZXRNYWluUmVzb3VyY2VEYXRhKERhdGFBUElDYWxsYmFj
azo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKGZyYW1lUmVmKS0+Z2V0
TWFpblJlc291cmNlRGF0YShEYXRhQ2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1
bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSkpOwogfQogCiB2b2lkIFdLRnJhbWVHZXRSZXNvdXJj
ZURhdGEoV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYgcmVzb3VyY2VVUkwsIFdLRnJhbWVH
ZXRSZXNvdXJjZURhdGFGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsKLSAgICB0
b0ltcGwoZnJhbWVSZWYpLT5nZXRSZXNvdXJjZURhdGEodG9JbXBsKHJlc291cmNlVVJMKSwgRGF0
YUFQSUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwoZnJh
bWVSZWYpLT5nZXRSZXNvdXJjZURhdGEodG9JbXBsKHJlc291cmNlVVJMKSwgRGF0YUNhbGxiYWNr
OjpjcmVhdGUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpKTsK
IH0KIAogdm9pZCBXS0ZyYW1lR2V0V2ViQXJjaGl2ZShXS0ZyYW1lUmVmIGZyYW1lUmVmLCBXS0Zy
YW1lR2V0V2ViQXJjaGl2ZUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAg
IHRvSW1wbChmcmFtZVJlZiktPmdldFdlYkFyY2hpdmUoRGF0YUFQSUNhbGxiYWNrOjpjcmVhdGUo
Y29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwoZnJhbWVSZWYpLT5nZXRXZWJBcmNoaXZl
KERhdGFDYWxsYmFjazo6Y3JlYXRlKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwg
Y2FsbGJhY2spKSk7CiB9CiAKIC8vIE5PVEU6IFRoZXNlIGFyZSBkZXByZWNhdGVkIGFuZCBzaG91
bGQgYmUgcmVtb3ZlZC4gVGhleSBjdXJyZW50bHkgZG8gbm90aGluZy4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjk5ODApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsOCArMzEsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi10eXBlZGVmIEdlbmVy
aWNBUElDYWxsYmFjazxXS0FycmF5UmVmPiBBcnJheUFQSUNhbGxiYWNrOwotCiBXS1R5cGVJRCBX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRUeXBlSUQoKQogewogICAgIHJldHVybiB0b0FQSShX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpBUElUeXBlKTsKQEAgLTU4LDEyICs1NiwxMiBAQCBX
S1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNCiAKIHZvaWQgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgdm9pZCogY29udGV4dCwgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uIGNh
bGxiYWNrKQogewotICAgIHRvSW1wbChrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmKS0+Z2V0S2V5
VmFsdWVTdG9yYWdlT3JpZ2lucyhBcnJheUFQSUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2Fs
bGJhY2spKTsKKyAgICB0b0ltcGwoa2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiktPmdldEtleVZh
bHVlU3RvcmFnZU9yaWdpbnMoQXJyYXlDYWxsYmFjazo6Y3JlYXRlKHRvR2VuZXJpY0NhbGxiYWNr
RnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKSk7CiB9CiAKIHZvaWQgV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uIGNhbGxiYWNr
KQogewotICAgIHRvSW1wbChrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmKS0+Z2V0U3RvcmFnZURl
dGFpbHNCeU9yaWdpbihBcnJheUFQSUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2sp
KTsKKyAgICB0b0ltcGwoa2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiktPmdldFN0b3JhZ2VEZXRh
aWxzQnlPcmlnaW4oQXJyYXlDYWxsYmFjazo6Y3JlYXRlKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rp
b24oY29udGV4dCwgY2FsbGJhY2spKSk7CiB9CiAKIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5
VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW5SZWYpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYUNhY2hlTWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFD
YWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjk5ODApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tNZWRpYUNhY2hlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDggKzMxLDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotdHlwZWRlZiBHZW5lcmlj
QVBJQ2FsbGJhY2s8V0tBcnJheVJlZj4gQXJyYXlBUElDYWxsYmFjazsKLQogV0tUeXBlSUQgV0tN
ZWRpYUNhY2hlTWFuYWdlckdldFR5cGVJRCgpCiB7CiAgICAgcmV0dXJuIHRvQVBJKFdlYk1lZGlh
Q2FjaGVNYW5hZ2VyUHJveHk6OkFQSVR5cGUpOwpAQCAtNDAsNyArMzgsNyBAQCBXS1R5cGVJRCBX
S01lZGlhQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBXS01lZGlhQ2FjaGVNYW5hZ2Vy
R2V0SG9zdG5hbWVzV2l0aE1lZGlhQ2FjaGUoV0tNZWRpYUNhY2hlTWFuYWdlclJlZiBtZWRpYUNh
Y2hlTWFuYWdlclJlZiwgdm9pZCogY29udGV4dCwgV0tNZWRpYUNhY2hlTWFuYWdlckdldEhvc3Ru
YW1lc1dpdGhNZWRpYUNhY2hlRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKG1lZGlh
Q2FjaGVNYW5hZ2VyUmVmKS0+Z2V0SG9zdG5hbWVzV2l0aE1lZGlhQ2FjaGUoQXJyYXlBUElDYWxs
YmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKG1lZGlhQ2FjaGVN
YW5hZ2VyUmVmKS0+Z2V0SG9zdG5hbWVzV2l0aE1lZGlhQ2FjaGUoQXJyYXlDYWxsYmFjazo6Y3Jl
YXRlKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKSk7CiB9CiAK
IHZvaWQgV0tNZWRpYUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JIb3N0bmFtZShXS01lZGlhQ2Fj
aGVNYW5hZ2VyUmVmIG1lZGlhQ2FjaGVNYW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBob3N0bmFtZSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09yaWdpbkRhdGFNYW5hZ2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcmln
aW5EYXRhTWFuYWdlci5jcHAJKHJldmlzaW9uIDE2OTk4MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS09yaWdpbkRhdGFNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsOCArMzEsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi10eXBlZGVmIEdlbmVy
aWNBUElDYWxsYmFjazxXS0FycmF5UmVmPiBBcnJheUFQSUNhbGxiYWNrOwotCiBXS1R5cGVJRCBX
S09yaWdpbkRhdGFNYW5hZ2VyR2V0VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoV2ViT3Jp
Z2luRGF0YU1hbmFnZXJQcm94eTo6QVBJVHlwZSk7CkBAIC00MCw3ICszOCw3IEBAIFdLVHlwZUlE
IFdLT3JpZ2luRGF0YU1hbmFnZXJHZXRUeXBlSUQoKQogCiB2b2lkIFdLT3JpZ2luRGF0YU1hbmFn
ZXJHZXRPcmlnaW5zKFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0YU1hbmFnZXJSZWYs
IFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCB2b2lkKiBjb250ZXh0LCBXS09yaWdpbkRhdGFNYW5h
Z2VyR2V0T3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChvcmlnaW5EYXRh
TWFuYWdlclJlZiktPmdldE9yaWdpbnModHlwZXMsIEFycmF5QVBJQ2FsbGJhY2s6OmNyZWF0ZShj
b250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChvcmlnaW5EYXRhTWFuYWdlclJlZiktPmdl
dE9yaWdpbnModHlwZXMsIEFycmF5Q2FsbGJhY2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1
bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSkpOwogfQogCiB2b2lkIFdLT3JpZ2luRGF0YU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0
YU1hbmFnZXJSZWYsIFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBXS1NlY3VyaXR5T3JpZ2luUmVm
IG9yaWdpblJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCShyZXZpc2lvbiAxNjk5ODApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTAgKzc3LDYgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVVJQwogCiB9CiAKLXR5cGVkZWYgR2VuZXJpY0FQSUNh
bGxiYWNrPFdLRGF0YVJlZj4gRGF0YUFQSUNhbGxiYWNrOwotdHlwZWRlZiBHZW5lcmljQVBJQ2Fs
bGJhY2s8V0tTdHJpbmdSZWYsIFN0cmluZ0ltcGwqPiBTdHJpbmdBUElDYWxsYmFjazsKLXR5cGVk
ZWYgR2VuZXJpY0FQSUNhbGxiYWNrPFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmPiBTY3JpcHRW
YWx1ZUFQSUNhbGxiYWNrOwotCiBXS1R5cGVJRCBXS1BhZ2VHZXRUeXBlSUQoKQogewogICAgIHJl
dHVybiB0b0FQSShXZWJQYWdlUHJveHk6OkFQSVR5cGUpOwpAQCAtMTU2Niw3ICsxNTYyLDcgQEAg
dm9pZCBXS1BhZ2VTZXRTZXNzaW9uKFdLUGFnZVJlZiBwYWdlUmVmLAogCiB2b2lkIFdLUGFnZVJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2Ny
aXB0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJh
Y2spCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUodG9J
bXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCBTY3JpcHRWYWx1ZUFQSUNhbGxiYWNrOjpjcmVhdGUo
Y29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZSh0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIFNjcmlwdFZhbHVlQ2FsbGJh
Y2s6OmNyZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSkp
OwogfQogCiAjaWZkZWYgX19CTE9DS1NfXwpAQCAtMTU4NSwzMyArMTU4MSwzMyBAQCB2b2lkIFdL
UGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9iKFdLCiAKIHZvaWQgV0tQYWdlUmVuZGVyVHJl
ZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQs
IFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gY2FsbGJhY2sp
CiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihTdHJpbmdBUElDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihTdHJp
bmdDYWxsYmFjazo6Y3JlYXRlKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tTdHJpbmdSZWYs
IFN0cmluZ0ltcGwqPihjb250ZXh0LCBjYWxsYmFjaykpKTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRT
b3VyY2VGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZVJlZiwgdm9p
ZCogY29udGV4dCwgV0tQYWdlR2V0U291cmNlRm9yRnJhbWVGdW5jdGlvbiBjYWxsYmFjaykKIHsK
LSAgICB0b0ltcGwocGFnZVJlZiktPmdldFNvdXJjZUZvckZyYW1lKHRvSW1wbChmcmFtZVJlZiks
IFN0cmluZ0FQSUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0lt
cGwocGFnZVJlZiktPmdldFNvdXJjZUZvckZyYW1lKHRvSW1wbChmcmFtZVJlZiksIFN0cmluZ0Nh
bGxiYWNrOjpjcmVhdGUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbjxXS1N0cmluZ1JlZiwgU3Ry
aW5nSW1wbCo+KGNvbnRleHQsIGNhbGxiYWNrKSkpOwogfQogCiB2b2lkIFdLUGFnZUdldENvbnRl
bnRzQXNTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldENv
bnRlbnRzQXNTdHJpbmdGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwocGFnZVJlZikt
PmdldENvbnRlbnRzQXNTdHJpbmcoU3RyaW5nQVBJQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBj
YWxsYmFjaykpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Q29udGVudHNBc1N0cmluZyhTdHJp
bmdDYWxsYmFjazo6Y3JlYXRlKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tTdHJpbmdSZWYs
IFN0cmluZ0ltcGwqPihjb250ZXh0LCBjYWxsYmFjaykpKTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRC
eXRlY29kZVByb2ZpbGUoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdl
dEJ5dGVjb2RlUHJvZmlsZUZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVm
KS0+Z2V0Qnl0ZWNvZGVQcm9maWxlKFN0cmluZ0FQSUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwg
Y2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmdldEJ5dGVjb2RlUHJvZmlsZShTdHJp
bmdDYWxsYmFjazo6Y3JlYXRlKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tTdHJpbmdSZWYs
IFN0cmluZ0ltcGwqPihjb250ZXh0LCBjYWxsYmFjaykpKTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRT
ZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhRnVuY3Rpb24gY2FsbGJhY2spCiB7
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKERhdGFB
UElDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5nZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKERhdGFDYWxsYmFjazo6Y3JlYXRlKHRv
R2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKSk7CiB9CiAKIHZvaWQg
V0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCB1c2VC
aW5hcnlFbmNvZGluZywgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0
YUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShNSFRNTCkKLSAgICB0b0ltcGwocGFn
ZVJlZiktPmdldENvbnRlbnRzQXNNSFRNTERhdGEoRGF0YUFQSUNhbGxiYWNrOjpjcmVhdGUoY29u
dGV4dCwgY2FsbGJhY2spLCB1c2VCaW5hcnlFbmNvZGluZyk7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5nZXRDb250ZW50c0FzTUhUTUxEYXRhKERhdGFDYWxsYmFjazo6Y3JlYXRlKHRvR2VuZXJpY0Nh
bGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKSwgdXNlQmluYXJ5RW5jb2RpbmcpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKHVzZUJp
bmFyeUVuY29kaW5nKTsKQEAgLTE2OTQsNyArMTY5MCw3IEBAIHZvaWQgV0tQYWdlQmVnaW5Qcmlu
dGluZyhXS1BhZ2VSZWYgcGFnZSwKIAogdm9pZCBXS1BhZ2VEcmF3UGFnZXNUb1BERihXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJf
dCBmaXJzdCwgdWludDMyX3QgY291bnQsIFdLUGFnZURyYXdUb1BERkZ1bmN0aW9uIGNhbGxiYWNr
LCB2b2lkKiBjb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+ZHJhd1BhZ2VzVG9QREYodG9J
bXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbyksIGZpcnN0LCBj
b3VudCwgRGF0YUFQSUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0
b0ltcGwocGFnZSktPmRyYXdQYWdlc1RvUERGKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21X
S1ByaW50SW5mbyhwcmludEluZm8pLCBmaXJzdCwgY291bnQsIERhdGFDYWxsYmFjazo6Y3JlYXRl
KHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKSk7CiB9CiAKIHZv
aWQgV0tQYWdlRW5kUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BsdWdpblNpdGVEYXRhTWFuYWdl
ci5jcHAJKHJldmlzaW9uIDE2OTk4MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BsdWdpblNpdGVEYXRhTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICsz
Niw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLSNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKLXR5cGVkZWYgR2VuZXJpY0FQSUNhbGxiYWNrPFdLQXJyYXlSZWY+IEFycmF5
QVBJQ2FsbGJhY2s7Ci0jZW5kaWYKLQogV0tUeXBlSUQgV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJH
ZXRUeXBlSUQoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtNTIsNyAr
NDgsNyBAQCBXS1R5cGVJRCBXS1BsdWdpblNpdGVEYXRhTWFuYWdlckdldFR5cGVJCiB2b2lkIFdL
UGx1Z2luU2l0ZURhdGFNYW5hZ2VyR2V0U2l0ZXNXaXRoRGF0YShXS1BsdWdpblNpdGVEYXRhTWFu
YWdlclJlZiBtYW5hZ2VyUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BsdWdpblNpdGVEYXRhTWFuYWdl
ckdldFNpdGVzV2l0aERhdGFGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKLSAgICB0b0ltcGwobWFuYWdlclJlZiktPmdldFNpdGVzV2l0aERhdGEo
QXJyYXlBUElDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBs
KG1hbmFnZXJSZWYpLT5nZXRTaXRlc1dpdGhEYXRhKEFycmF5Q2FsbGJhY2s6OmNyZWF0ZSh0b0dl
bmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSkpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0obWFuYWdlclJlZik7CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291
cmNlQ2FjaGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTY5OTgwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw4ICszMSw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLXR5cGVkZWYg
R2VuZXJpY0FQSUNhbGxiYWNrPFdLQXJyYXlSZWY+IEFycmF5QVBJQ2FsbGJhY2s7Ci0KIFdLVHlw
ZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRUeXBlSUQoKQogewogICAgIHJldHVybiB0b0FQ
SShXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjpBUElUeXBlKTsKQEAgLTQwLDcgKzM4LDcg
QEAgV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldFR5cGVJRAogCiB2b2lkIFdLUmVz
b3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJl
ZiBjYWNoZU1hbmFnZXJSZWYsIHZvaWQqIGNvbnRleHQsIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJH
ZXRDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwoY2FjaGVNYW5h
Z2VyUmVmKS0+Z2V0Q2FjaGVPcmlnaW5zKEFycmF5QVBJQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0
LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChjYWNoZU1hbmFnZXJSZWYpLT5nZXRDYWNoZU9yaWdp
bnMoQXJyYXlDYWxsYmFjazo6Y3JlYXRlKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4
dCwgY2FsbGJhY2spKSk7CiB9CiAKIHZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2Fj
aGVGb3JPcmlnaW4oV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXJSZWYsIFdL
U2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luUmVmLCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNo
ZXNUb0NsZWFyKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29va2llTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDE2OTk4MCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKLXR5cGVkZWYgR2VuZXJpY0FQSUNhbGxiYWNrPFdLQXJyYXlSZWY+IEFycmF5QVBJQ2FsbGJh
Y2s7Ci10eXBlZGVmIEdlbmVyaWNBUElDYWxsYmFjazxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3ks
IEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IEhUVFBDb29raWVBY2NlcHRQb2xpY3lBUElDYWxsYmFj
azsKLQogLyoqCiAgKiBTRUNUSU9OOiBXZWJLaXRDb29raWVNYW5hZ2VyCiAgKiBAU2hvcnRfZGVz
Y3JpcHRpb246IERlZmluZXMgaG93IHRvIGhhbmRsZSBjb29raWVzIGluIGEgI1dlYktpdFdlYkNv
bnRleHQKQEAgLTIxNCw3ICsyMTEsNyBAQCB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRf
YWNjZXB0X3BvCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQ09PS0lFX01BTkFHRVIo
bWFuYWdlcikpOwogCiAgICAgR1Rhc2sqIHRhc2sgPSBnX3Rhc2tfbmV3KG1hbmFnZXIsIGNhbmNl
bGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpOwotICAgIG1hbmFnZXItPnByaXYtPndlYkNvb2tp
ZU1hbmFnZXItPmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGlj
eUFQSUNhbGxiYWNrOjpjcmVhdGUodGFzaywgd2Via2l0Q29va2llTWFuYWdlckdldEFjY2VwdFBv
bGljeUNhbGxiYWNrKSk7CisgICAgbWFuYWdlci0+cHJpdi0+d2ViQ29va2llTWFuYWdlci0+Z2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s6OmNy
ZWF0ZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uPFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSwg
SFRUUENvb2tpZUFjY2VwdFBvbGljeT4odGFzaywgd2Via2l0Q29va2llTWFuYWdlckdldEFjY2Vw
dFBvbGljeUNhbGxiYWNrKSkpOwogfQogCiAvKioKQEAgLTI3Miw3ICsyNjksNyBAQCB2b2lkIHdl
YmtpdF9jb29raWVfbWFuYWdlcl9nZXRfZG9tYWluc193CiAgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfQ09PS0lFX01BTkFHRVIobWFuYWdlcikpOwogCiAgICAgR1Rhc2sqIHRhc2sgPSBn
X3Rhc2tfbmV3KG1hbmFnZXIsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpOwotICAg
IG1hbmFnZXItPnByaXYtPndlYkNvb2tpZU1hbmFnZXItPmdldEhvc3RuYW1lc1dpdGhDb29raWVz
KEFycmF5QVBJQ2FsbGJhY2s6OmNyZWF0ZSh0YXNrLCB3ZWJraXRDb29raWVNYW5hZ2VyR2V0RG9t
YWluc1dpdGhDb29raWVzQ2FsbGJhY2spKTsKKyAgICBtYW5hZ2VyLT5wcml2LT53ZWJDb29raWVN
YW5hZ2VyLT5nZXRIb3N0bmFtZXNXaXRoQ29va2llcyhBcnJheUNhbGxiYWNrOjpjcmVhdGUodG9H
ZW5lcmljQ2FsbGJhY2tGdW5jdGlvbih0YXNrLCB3ZWJraXRDb29raWVNYW5hZ2VyR2V0RG9tYWlu
c1dpdGhDb29raWVzQ2FsbGJhY2spKSk7CiB9CiAKIC8qKgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>