<?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>140319</bug_id>
          
          <creation_ts>2015-01-09 15:08:59 -0800</creation_ts>
          <short_desc>Move Navigation creation out of the Cocoa layer and down into the WebPageProxy level</short_desc>
          <delta_ts>2015-01-09 16:00:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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 name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060294</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-09 15:08:59 -0800</bug_when>
    <thetext>Move Navigation creation out of the Cocoa layer and down into the WebPageProxy level</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060304</commentid>
    <comment_count>1</comment_count>
      <attachid>244379</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-09 15:34:50 -0800</bug_when>
    <thetext>Created attachment 244379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060316</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-09 16:00:05 -0800</bug_when>
    <thetext>Committed r178217: &lt;http://trac.webkit.org/changeset/178217&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244379</attachid>
            <date>2015-01-09 15:34:50 -0800</date>
            <delta_ts>2015-01-09 15:39:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140319-20150109153454.patch</filename>
            <type>text/plain</type>
            <size>63317</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODIwOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorMjAxNS0wMS0wOSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgTmF2aWdhdGlvbiBjcmVhdGlv
biBvdXQgb2YgdGhlIENvY29hIGxheWVyIGFuZCBkb3duIGludG8gdGhlIFdlYlBhZ2VQcm94eSBs
ZXZlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQw
MzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBB
ZGRzIFdlYk5hdmlnYXRpb25TdGF0ZSwgYSBjbGFzcyBhdCB0aGUgV2ViUGFnZVByb3h5IGxldmVs
IHRvIGhhbmRsZSB0aGUgY3JlYXRpb24KKyAgICAgICAgICBhbmQgc3RvcmFnZSBvZiBOYXZpZ2F0
aW9ucy4gU3RhcnRzIG1vdmluZyBzb21lIG9mIHRoZSBmdW5jdGlvbmFsaXR5IGZyb20gTmF2aWdh
dGlvblN0YXRlCisgICAgICAgICAgdGhlcmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaDoKKyAgICAgICAgKEFQSTo6
TmF2aWdhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6bmF2aWdhdGlv
bklEKToKKyAgICAgICAgSGF2ZSBlYWNoIE5hdmlnYXRpb24gc3RvcmUgaXRzIG5hdmlnYXRpb25J
RCBhbmQgZ2VuZXJhdGUgaXQgdmlhIHRoZSBXZWJOYXZpZ2F0aW9uU3RhdGUKKyAgICAgICAgdGhh
dCBpcyBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICAKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGxvYWRS
ZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZEZpbGVVUkw6YWxsb3dpbmdSZWFk
QWNjZXNzVG9VUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkRGF0YTpNSU1FVHlwZTpj
aGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZ29CYWNrXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBnb0ZvcndhcmRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IHJlbG9hZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2FkRnJvbU9yaWdpbl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3Jlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YTpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9yZXN0b3JlU2Vzc2lvblN0YXRlOmFuZE5hdmlnYXRlOl0pOgorICAg
ICAgICBVcGRhdGUgZm9yIFdlYlBhZ2VQcm94eSBmdW5jdGlvbnMgcmV0dXJuaW5nIHRoZSBOYXZp
Z2F0aW9ucyBkaXJlY3RseSwgcmF0aGVyIHRoYW4KKyAgICAgICAgdGhlIG5hdmlnYXRpb25JRC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpO
YXZpZ2F0aW9uU3RhdGU6OlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbik6CisgICAgICAgIFJlbW92ZSBjcmVhdGlvbiBvZiB0aGUgbG9hZCByZXF1ZXN0IG5hdmln
YXRpb24gd2hpY2ggaXMgbm93IGhhbmRsZWQgYnkgdGhlIFdlYlBhZ2VQcm94eS4KKworICAgICAg
ICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9h
ZGVyQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRl
OjpMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmln
YXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWREZXN0cm95TmF2aWdhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gp
OgorICAgICAgICBDaGFuZ2UgdG8gZ2V0L3Rha2UvcmVtb3ZlIE5hdmlnYXRpb25zIGZyb20gdGhl
IFdlYlBhZ2VQcm94eSdzIFdlYk5hdmlnYXRpb25TdGF0ZQorCisgICAgICAgIChXZWJLaXQ6Ok5h
dmlnYXRpb25TdGF0ZTo6Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpjcmVhdGVCYWNrRm9yd2FyZE5hdmlnYXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZVJl
bG9hZE5hdmlnYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3Rh
dGU6OmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgTmF2
aWdhdGlvbiBjcmVhdGlvbiB0byBXZWJOYXZpZ2F0aW9uU3RhdGUuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMaXN0ZW5lclByb3h5OjpXZWJGcmFtZUxpc3RlbmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxpc3RlbmVyUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMaXN0ZW5lclByb3h5OjpuYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVMaXN0ZW5lclByb3h5OjpzZXROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVMaXN0ZW5lclByb3h5OjpuYXZpZ2F0aW9uSUQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxpc3RlbmVyUHJveHk6OnNldE5hdmlnYXRpb25JRCk6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5oOgorICAgICAgICBTdG9yZSBhIE5hdmlnYXRpb24gcmF0aGVyIHRo
YW4gYSBuYXZpZ2F0aW9uSUQgb24gdGhlIFdlYkZyYW1lTGlzdGVuZXJQcm94eS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViTmF2aWdhdGlvblN0YXRlOjpXZWJOYXZpZ2F0aW9uU3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGU6On5XZWJOYXZpZ2F0aW9uU3RhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlQmFja0Zvcndh
cmROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlOjpjcmVh
dGVSZWxvYWROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRl
OjpjcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOYXZpZ2F0
aW9uU3RhdGU6Om5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3Rh
dGU6OnRha2VOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRl
OjpkaWREZXN0cm95TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5hdmlnYXRpb25T
dGF0ZTo6Y2xlYXJBbGxOYXZpZ2F0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmln
YXRpb25TdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRl
OjpnZW5lcmF0ZU5hdmlnYXRpb25JRCk6CisgICAgICAgIE5ldyBjbGFzcyB0byBtYW5hZ2UgbmF2
aWdhdGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzRm9yUmVsb2FkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vzc1dpdGhJdGVtKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVsb2FkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpnb0ZvcndhcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdvQmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z29Ub0Jh
Y2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdG9yZUZy
b21TZXNzaW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmdlbmVyYXRlTmF2aWdhdGlvbklEKTogRGVsZXRlZC4KKyAgICAgICAgQ3JlYXRlIG5hdmlnYXRp
b25zIGRpcmVjdGx5IHJhdGhlciB0aGFuIGdlbmVyYXRpbmcgYSBuYXZpZ2F0aW9uIElEIGFuZCBs
ZXR0aW5nCisgICAgICAgIHRoZSBBUEkgbGV2ZWwgY3JlYXRlIE5hdmlnYXRpb24uCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bmF2aWdhdGlvblN0YXRlKToKKyAgICAgICAgQWRkIFdlYk5hdmlnYXRpb25TdGF0ZSBt
ZW1iZXIgYW5kIGFjY2Vzc29yLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICBBZGQgV2ViTmF2aWdhdGlvblN0YXRlLmgvY3BwCisKIDIwMTUt
MDEtMDkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBSZW1vdmUgb3IgdXNlIFRpbWVsaW5lQWdlbnQgUmVzb3VyY2UgcmVsYXRl
ZCBldmVudCB0eXBlcwpJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE3ODE4NCkK
KysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNDMs
NiArMzQzLDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9XZWJJY29uRGF0
YWJhc2VDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAogICAg
IFVJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAorICAgIFVJUHJvY2Vzcy9X
ZWJOYXZpZ2F0aW9uU3RhdGUuY3BwCiAgICAgVUlQcm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2Vy
UHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
Y3BwCiAgICAgVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNw
cAkocmV2aXNpb24gMTc4MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
TGlzdGVuZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBXZWJGcmFtZUxpc3RlbmVyUHJveHk6OldlYkZyYW1lTGlzdGVuZXJQcm94
eShXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCkKICAgICA6IG1fZnJh
bWUoZnJhbWUpCiAgICAgLCBtX2xpc3RlbmVySUQobGlzdGVuZXJJRCkKLSAgICAsIG1fbmF2aWdh
dGlvbklEKDApCiB7CiB9CiAKQEAgLTUxLDcgKzUwLDcgQEAgdm9pZCBXZWJGcmFtZUxpc3RlbmVy
UHJveHk6OnJlY2VpdmVkUG9saQogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9mcmFtZS0+cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihhY3Rpb24sIG1fbGlzdGVuZXJJ
RCwgbV9uYXZpZ2F0aW9uSUQpOworICAgIG1fZnJhbWUtPnJlY2VpdmVkUG9saWN5RGVjaXNpb24o
YWN0aW9uLCBtX2xpc3RlbmVySUQsIG1fbmF2aWdhdGlvbi5nZXQoKSk7CiAgICAgbV9mcmFtZSA9
IDA7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVy
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVM
aXN0ZW5lclByb3h5LmgJKHJldmlzaW9uIDE3ODE4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYs
MTEgQEAKICNpZm5kZWYgV2ViRnJhbWVMaXN0ZW5lclByb3h5X2gKICNkZWZpbmUgV2ViRnJhbWVM
aXN0ZW5lclByb3h5X2gKIAorI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJB
UElPYmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsOCArNDQsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGlzdGVuZXJJRDsgfQogCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uSUQ7IH0KLSAgICB2b2lkIHNldE5hdmlnYXRp
b25JRCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQpIHsgbV9uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9u
SUQ7IH0KKyAgICBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24oKSB7IHJldHVybiBtX25hdmln
YXRpb24uZ2V0KCk7IH0KKyAgICB2b2lkIHNldE5hdmlnYXRpb24oUmVmPEFQSTo6TmF2aWdhdGlv
bj4mJiBuYXZpZ2F0aW9uKSB7IG1fbmF2aWdhdGlvbiA9IFdURjo6bW92ZShuYXZpZ2F0aW9uKTsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgV2ViRnJhbWVMaXN0ZW5lclByb3h5KFdlYkZyYW1lUHJveHkq
LCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKQEAgLTUzLDcgKzU1LDcgQEAgcHJvdGVjdGVkOgogcHJp
dmF0ZToKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gbV9mcmFtZTsKICAgICB1aW50NjRfdCBt
X2xpc3RlbmVySUQ7Ci0gICAgdWludDY0X3QgbV9uYXZpZ2F0aW9uSUQ7CisgICAgUmVmUHRyPEFQ
STo6TmF2aWdhdGlvbj4gbV9uYXZpZ2F0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCShyZXZp
c2lvbiAxNzgxODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MiwxNCArMTcyLDE0IEBAIHZvaWQgV2ViRnJhbWVQcm94
eTo6ZGlkQ2hhbmdlVGl0bGUoY29uc3QKICAgICBtX3RpdGxlID0gdGl0bGU7CiB9CiAKLXZvaWQg
V2ViRnJhbWVQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rp
b24gYWN0aW9uLCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQpCit2
b2lkIFdlYkZyYW1lUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5
QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZp
Z2F0aW9uKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NF
UlQobV9hY3RpdmVMaXN0ZW5lcik7CiAgICAgQVNTRVJUKG1fYWN0aXZlTGlzdGVuZXItPmxpc3Rl
bmVySUQoKSA9PSBsaXN0ZW5lcklEKTsKLSAgICBtX3BhZ2UtPnJlY2VpdmVkUG9saWN5RGVjaXNp
b24oYWN0aW9uLCB0aGlzLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uSUQpOworICAgIG1fcGFnZS0+
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihhY3Rpb24sIHRoaXMsIGxpc3RlbmVySUQsIG5hdmlnYXRp
b24pOwogfQogCiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkqIFdlYkZyYW1lUHJveHk6OnNl
dFVwUG9saWN5TGlzdGVuZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCShyZXZpc2lvbiAxNzgxODQpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSwxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlci5oPgogI2Vu
ZGlmCiAKK25hbWVzcGFjZSBBUEkgeworY2xhc3MgTmF2aWdhdGlvbjsKK30KKworCiBuYW1lc3Bh
Y2UgSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7CiAgICAgY2xhc3MgQ29ubmVjdGlv
bjsKQEAgLTExMyw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZShj
b25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFBvbGljeSBvcGVyYXRpb25zLgotICAgIHZvaWQgcmVj
ZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCA9IDApOworICAgIHZvaWQgcmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQ
STo6TmF2aWdhdGlvbiogPSBudWxscHRyKTsKICAgICBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHkqIHNldFVwUG9saWN5TGlzdGVuZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICBX
ZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkqIHNldFVwRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
clByb3h5KHVpbnQ2NF90IGxpc3RlbmVySUQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYk5hdmlnYXRpb25TdGF0ZS5oIgorCisjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5o
IgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJOYXZpZ2F0aW9uU3RhdGU6Oldl
Yk5hdmlnYXRpb25TdGF0ZSgpCit7Cit9CisKK1dlYk5hdmlnYXRpb25TdGF0ZTo6fldlYk5hdmln
YXRpb25TdGF0ZSgpCit7Cit9CisKK1JlZjxBUEk6Ok5hdmlnYXRpb24+IFdlYk5hdmlnYXRpb25T
dGF0ZTo6Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBBUEk6Ok5hdmlnYXRp
b246OmNyZWF0ZSgqdGhpcywgcmVxdWVzdCk7CisKKyAgICBtX25hdmlnYXRpb25zLnNldChuYXZp
Z2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5wdHIoKSk7CisKKyAgICByZXR1cm4g
bmF2aWdhdGlvbjsKK30KKworUmVmPEFQSTo6TmF2aWdhdGlvbj4gV2ViTmF2aWdhdGlvblN0YXRl
OjpjcmVhdGVCYWNrRm9yd2FyZE5hdmlnYXRpb24oKQoreworICAgIGF1dG8gbmF2aWdhdGlvbiA9
IEFQSTo6TmF2aWdhdGlvbjo6Y3JlYXRlKCp0aGlzKTsKKworICAgIG1fbmF2aWdhdGlvbnMuc2V0
KG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLnB0cigpKTsKKworICAgIHJl
dHVybiBuYXZpZ2F0aW9uOworfQorCitSZWY8QVBJOjpOYXZpZ2F0aW9uPiBXZWJOYXZpZ2F0aW9u
U3RhdGU6OmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24oKQoreworICAgIGF1dG8gbmF2aWdhdGlvbiA9
IEFQSTo6TmF2aWdhdGlvbjo6Y3JlYXRlKCp0aGlzKTsKKworICAgIG1fbmF2aWdhdGlvbnMuc2V0
KG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLnB0cigpKTsKKworICAgIHJl
dHVybiBuYXZpZ2F0aW9uOworfQorCitSZWY8QVBJOjpOYXZpZ2F0aW9uPiBXZWJOYXZpZ2F0aW9u
U3RhdGU6OmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbigpCit7CisgICAgYXV0byBuYXZpZ2F0aW9u
ID0gQVBJOjpOYXZpZ2F0aW9uOjpjcmVhdGUoKnRoaXMpOworCisgICAgbV9uYXZpZ2F0aW9ucy5z
ZXQobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ucHRyKCkpOworCisgICAg
cmV0dXJuIG5hdmlnYXRpb247Cit9CisKK0FQSTo6TmF2aWdhdGlvbiYgV2ViTmF2aWdhdGlvblN0
YXRlOjpuYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKK3sKKyAgICBBU1NFUlQobmF2
aWdhdGlvbklEKTsKKyAgICAKKyAgICByZXR1cm4gKm1fbmF2aWdhdGlvbnMuZ2V0KG5hdmlnYXRp
b25JRCk7Cit9CisKK1JlZjxBUEk6Ok5hdmlnYXRpb24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6dGFr
ZU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKQoreworICAgIEFTU0VSVChuYXZpZ2F0
aW9uSUQpOworICAgIAorICAgIHJldHVybiBtX25hdmlnYXRpb25zLnRha2UobmF2aWdhdGlvbklE
KS5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIFdlYk5hdmlnYXRpb25TdGF0ZTo6ZGlkRGVz
dHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKQoreworICAgIEFTU0VSVChuYXZp
Z2F0aW9uSUQpOworCisgICAgbV9uYXZpZ2F0aW9ucy5yZW1vdmUobmF2aWdhdGlvbklEKTsKK30K
Kwordm9pZCBXZWJOYXZpZ2F0aW9uU3RhdGU6OmNsZWFyQWxsTmF2aWdhdGlvbnMoKQoreworICAg
IG1fbmF2aWdhdGlvbnMuY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
Yk5hdmlnYXRpb25TdGF0ZV9oCisjZGVmaW5lIFdlYk5hdmlnYXRpb25TdGF0ZV9oCisKKyNpbXBv
cnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+CisKK25hbWVzcGFjZSBBUEkg
eworY2xhc3MgTmF2aWdhdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVBy
b3h5OworY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKKworY2xhc3MgV2ViTmF2aWdhdGlv
blN0YXRlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJOYXZpZ2F0aW9uU3RhdGUoKTsKKyAg
ICB+V2ViTmF2aWdhdGlvblN0YXRlKCk7CisKKyAgICBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBjcmVh
dGVCYWNrRm9yd2FyZE5hdmlnYXRpb24oKTsKKyAgICBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBjcmVh
dGVMb2FkUmVxdWVzdE5hdmlnYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
CisgICAgUmVmPEFQSTo6TmF2aWdhdGlvbj4gY3JlYXRlUmVsb2FkTmF2aWdhdGlvbigpOworICAg
IFJlZjxBUEk6Ok5hdmlnYXRpb24+IGNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbigpOworCisgICAg
QVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CisgICAg
UmVmPEFQSTo6TmF2aWdhdGlvbj4gdGFrZU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklE
KTsKKyAgICB2b2lkIGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7
CisgICAgdm9pZCBjbGVhckFsbE5hdmlnYXRpb25zKCk7CisKKyAgICB1aW50NjRfdCBnZW5lcmF0
ZU5hdmlnYXRpb25JRCgpCisgICAgeworICAgICAgICByZXR1cm4gKyttX25hdmlnYXRpb25JRDsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4+IG1fbmF2aWdhdGlvbnM7CisgICAgdWludDY0X3QgbV9uYXZpZ2F0aW9uSUQgeyAw
IH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYk5hdmlnYXRp
b25TdGF0ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkocmV2aXNpb24gMTc4MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJBUElH
ZW9tZXRyeS5oIgogI2luY2x1ZGUgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCiAj
aW5jbHVkZSAiQVBJTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5oIgog
I2luY2x1ZGUgIkFQSVBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKQEAgLTc0LDYgKzc1LDcgQEAKICNpbmNsdWRl
ICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYk5hdmlnYXRpb25TdGF0
ZS5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
IldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5LmgiCkBAIC0yNjIsNiArMjY0LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYgcAogICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpGb3JtQ2xpZW50PigpKQogICAgICwgbV91aUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6VUlDbGllbnQ+KCkpCiAgICAgLCBtX2ZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkZpbmRDbGllbnQ+KCkpCisgICAgLCBtX25hdmlnYXRpb25TdGF0ZShzdGQ6Om1ha2VfdW5pcXVl
PFdlYk5hdmlnYXRpb25TdGF0ZT4oKSkKICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwg
bV9wYWdlR3JvdXAoKmNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwKQogICAgICwgbV9wcmVmZXJlbmNl
cygqY29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcykKQEAgLTU5MywxMCArNTk2LDI5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygKICAgICBtX2RyYXdpbmdBcmVhLT53
YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKIH0KIAotdWludDY0X3QgV2Vi
UGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vzc1dpdGhJdGVtKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIGl0ZW0pCitSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlYXR0
YWNoVG9XZWJQcm9jZXNzRm9yUmVsb2FkKCkKIHsKICAgICBpZiAobV9pc0Nsb3NlZCkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIEFTU0VSVCgh
aXNWYWxpZCgpKTsKKyAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOworCisgICAgaWYgKCFtX2Jh
Y2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlUmVsb2FkTmF2
aWdhdGlvbigpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1Rv
QmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBtX2JhY2tGb3J3YXJk
TGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlEKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNz
LT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CisKKyAgICByZXR1cm4gV1RGOjptb3Zl
KG5hdmlnYXRpb24pOworfQorCitSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OnJlYXR0YWNoVG9XZWJQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRl
bSkKK3sKKyAgICBpZiAobV9pc0Nsb3NlZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBpZiAoaXRlbSAmJiBpdGVtICE9IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKQog
ICAgICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+Z29Ub0l0ZW0oaXRlbSk7CkBAIC02MDUsMTQgKzYy
NywxNCBAQCB1aW50NjRfdCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jCiAgICAgcmVh
dHRhY2hUb1dlYlByb2Nlc3MoKTsKIAogICAgIGlmICghaXRlbSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklEID0g
Z2VuZXJhdGVOYXZpZ2F0aW9uSUQoKTsKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRp
b25TdGF0ZS0+Y3JlYXRlQmFja0ZvcndhcmROYXZpZ2F0aW9uKCk7CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbklE
LCBpdGVtLT5pdGVtSUQoKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklE
KCksIGl0ZW0tPml0ZW1JRCgpKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLT5zdGFydCgpOwogCi0gICAgcmV0dXJuIG5hdmlnYXRpb25JRDsKKyAgICBy
ZXR1cm4gV1RGOjptb3ZlKG5hdmlnYXRpb24pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
U2Vzc2lvbklEKFNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC03MjIsMTIgKzc0NCwxMiBAQCBib29s
IFdlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJvCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCitSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmIChtX2lzQ2xvc2VkKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQgPSBnZW5lcmF0ZU5hdmlnYXRpb25JRCgpOworICAgIGF1dG8gbmF2aWdhdGlv
biA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRpb24ocmVxdWVz
dCk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9u
KCk7CiAKQEAgLTc0MCwyMyArNzYyLDIzIEBAIHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6bG9hZFJl
cXVlc3QoY29uc3QKICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxpemVT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKHJlcXVlc3QudXJsKCksIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpOwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQogICAgICAgICBtX3Byb2Nlc3MtPndpbGxB
Y3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChuYXZpZ2F0aW9uSUQsIHJlcXVl
c3QsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSwgcmVxdWVzdCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgVXNlckRhdGEocHJv
Y2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFn
ZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKIAot
ICAgIHJldHVybiBuYXZpZ2F0aW9uSUQ7CisgICAgcmV0dXJuIFdURjo6bW92ZShuYXZpZ2F0aW9u
KTsKIH0KIAotdWludDY0X3QgV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkKK1JlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94
eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
c291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAg
aWYgKG1faXNDbG9zZWQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2Vzcygp
OwogCiAgICAgVVJMIGZpbGVVUkwgPSBVUkwoVVJMKCksIGZpbGVVUkxTdHJpbmcpOwogICAgIGlm
ICghZmlsZVVSTC5pc0xvY2FsRmlsZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBVUkwgcmVzb3VyY2VEaXJlY3RvcnlVUkw7CiAgICAgaWYgKHJl
c291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLmlzTnVsbCgpKQpAQCAtNzY0LDEwICs3ODYsMTAgQEAg
dWludDY0X3QgV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdAogICAgIGVsc2UgewogICAg
ICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTChVUkwoKSwgcmVzb3VyY2VEaXJlY3RvcnlV
UkxTdHJpbmcpOwogICAgICAgICBpZiAoIXJlc291cmNlRGlyZWN0b3J5VVJMLmlzTG9jYWxGaWxl
KCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCA9IGdlbmVyYXRlTmF2aWdhdGlvbklE
KCk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRS
ZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJjZVJlcXVlc3QoZmlsZVVSTCkpOwogCiAgICAgYXV0byB0
cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC03NzgsMTgg
KzgwMCwxOCBAQCB1aW50NjRfdCBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0CiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHJlc291cmNlRGlyZWN0b3J5UGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAgIG1fcHJv
Y2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChyZXNvdXJjZURpcmVjdG9yeVVSTCk7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChuYXZpZ2F0
aW9uSUQsIGZpbGVVUkwsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFVzZXJEYXRhKHByb2Nlc3Mo
KS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSkpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChuYXZp
Z2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgZmlsZVVSTCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
VXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdl
dCgpKSksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+
c3RhcnQoKTsKIAotICAgIHJldHVybiBuYXZpZ2F0aW9uSUQ7CisgICAgcmV0dXJuIFdURjo6bW92
ZShuYXZpZ2F0aW9uKTsKIH0KIAotdWludDY0X3QgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6
OkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQorUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6OkRhdGEqIGRhdGEs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmIChtX2lzQ2xv
c2VkKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSBnZW5lcmF0ZU5hdmlnYXRpb25JRCgpOworICAgIGF1dG8g
bmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24o
KTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24o
KTsKIApAQCAtODAyLDE2ICs4MjQsMTYgQEAgdWludDY0X3QgV2ViUGFnZVByb3h5Ojpsb2FkRGF0
YShBUEk6OkRhdAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERh
dGEoZGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIFVz
ZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQo
KSkpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0
YXJ0KCk7CiAKLSAgICByZXR1cm4gbmF2aWdhdGlvbklEOworICAgIHJldHVybiBXVEY6Om1vdmUo
bmF2aWdhdGlvbik7CiB9CiAKIC8vIEZJWE1FOiBHZXQgcmlkIG9mIGxvYWRIVE1MU3RyaW5nIGFu
ZCBqdXN0IHVzZSBsb2FkRGF0YSBpbnN0ZWFkLgotdWludDY0X3QgV2ViUGFnZVByb3h5Ojpsb2Fk
SFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQorUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5Ojpsb2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmIChtX2lzQ2xv
c2VkKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSBnZW5lcmF0ZU5hdmlnYXRpb25JRCgpOworICAgIGF1dG8g
bmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24o
KTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24o
KTsKIApAQCAtODIxLDEwICs4NDMsMTAgQEAgdWludDY0X3QgV2ViUGFnZVByb3h5Ojpsb2FkSFRN
TFN0cmluZyhjbwogICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogCiAgICAgbV9wcm9j
ZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGJhc2VVUkwpOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZEhUTUxTdHJpbmcobmF2aWdhdGlvbklELCBodG1s
U3RyaW5nLCBiYXNlVVJMLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFu
ZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZEhUTUxTdHJpbmcobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklE
KCksIGh0bWxTdHJpbmcsIGJhc2VVUkwsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSkpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNz
LT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiAKLSAgICByZXR1cm4gbmF2aWdhdGlv
bklEOworICAgIHJldHVybiBXVEY6Om1vdmUobmF2aWdhdGlvbik7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtODkyLDcgKzkxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzdG9wTG9hZGluZygpCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0
YXJ0KCk7CiB9CiAKLXVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6cmVsb2FkKGJvb2wgcmVsb2FkRnJv
bU9yaWdpbikKK1JlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKGJv
b2wgcmVsb2FkRnJvbU9yaWdpbikKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZTsKIApAQCAtOTA4LDE0ICs5MzAsMTQgQEAgdWludDY0X3QgV2Vi
UGFnZVByb3h5OjpyZWxvYWQoYm9vbCByZWxvYQogICAgIH0KIAogICAgIGlmICghaXNWYWxpZCgp
KQotICAgICAgICByZXR1cm4gcmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRlbShtX2JhY2tGb3J3
YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSk7Ci0KLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSBn
ZW5lcmF0ZU5hdmlnYXRpb25JRCgpOworICAgICAgICByZXR1cm4gcmVhdHRhY2hUb1dlYlByb2Nl
c3NGb3JSZWxvYWQoKTsKKyAgICAKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25T
dGF0ZS0+Y3JlYXRlUmVsb2FkTmF2aWdhdGlvbigpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdhdGlvbklELCByZWxvYWRGcm9tT3JpZ2luLCBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCByZWxv
YWRGcm9tT3JpZ2luLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOwogICAgIG1f
cHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgpOwogCi0gICAgcmV0dXJuIG5h
dmlnYXRpb25JRDsKKyAgICByZXR1cm4gV1RGOjptb3ZlKG5hdmlnYXRpb24pOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KCkKQEAgLTkzNiwxMSArOTU4
LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNvcmROYXZpZ2F0aW9uU25hcHMKICNlbmRpZgog
fQogCi11aW50NjRfdCBXZWJQYWdlUHJveHk6OmdvRm9yd2FyZCgpCitSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvRm9yd2FyZCgpCiB7CiAgICAgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSogZm9yd2FyZEl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+Zm9yd2FyZEl0ZW0oKTsK
ICAgICBpZiAoIWZvcndhcmRJdGVtKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5z
YWN0aW9uKCk7CiAKQEAgLTk0OSwxOSArOTcxLDIxIEBAIHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6
Z29Gb3J3YXJkKCkKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHJlYXR0YWNo
VG9XZWJQcm9jZXNzV2l0aEl0ZW0oZm9yd2FyZEl0ZW0pOwogCi0gICAgdWludDY0X3QgbmF2aWdh
dGlvbklEID0gbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1Jc0luU2FtZURv
Y3VtZW50KCpmb3J3YXJkSXRlbSkgPyAwIDogZ2VuZXJhdGVOYXZpZ2F0aW9uSUQoKTsKKyAgICBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uOworICAgIGlmICghbV9iYWNrRm9yd2Fy
ZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1Jc0luU2FtZURvY3VtZW50KCpmb3J3YXJkSXRlbSkp
CisgICAgICAgIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlQmFja0Zvcndh
cmROYXZpZ2F0aW9uKCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdvRm9yd2FyZChuYXZpZ2F0aW9uSUQsIGZvcndhcmRJdGVtLT5pdGVtSUQoKSksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvRm9yd2FyZChuYXZp
Z2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBmb3J3YXJkSXRlbS0+aXRl
bUlEKCkpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkt
PnN0YXJ0KCk7CiAKLSAgICByZXR1cm4gbmF2aWdhdGlvbklEOworICAgIHJldHVybiBuYXZpZ2F0
aW9uOwogfQogCi11aW50NjRfdCBXZWJQYWdlUHJveHk6OmdvQmFjaygpCitSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvQmFjaygpCiB7CiAgICAgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSogYmFja0l0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+YmFja0l0ZW0oKTsKICAgICBp
ZiAoIWJhY2tJdGVtKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7
CiAKQEAgLTk3MCwxNSArOTk0LDE3IEBAIHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6Z29CYWNrKCkK
ICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHJlYXR0YWNoVG9XZWJQcm9jZXNz
V2l0aEl0ZW0oYmFja0l0ZW0pOwogCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklEID0gbV9iYWNr
Rm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1Jc0luU2FtZURvY3VtZW50KCpiYWNrSXRl
bSkgPyAwIDogZ2VuZXJhdGVOYXZpZ2F0aW9uSUQoKTsKKyAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBuYXZpZ2F0aW9uOworICAgIGlmICghbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVt
KCktPml0ZW1Jc0luU2FtZURvY3VtZW50KCpiYWNrSXRlbSkpCisgICAgICAgIG5hdmlnYXRpb24g
PSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlQmFja0ZvcndhcmROYXZpZ2F0aW9uKCk7CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvQmFjayhuYXZpZ2F0aW9uSUQs
IGJhY2tJdGVtLT5pdGVtSUQoKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdvQmFjayhuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlv
bklEKCkgOiAwLCBiYWNrSXRlbS0+aXRlbUlEKCkpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNz
LT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiAKLSAgICByZXR1cm4gbmF2aWdhdGlv
bklEOworICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQogCi11aW50NjRfdCBXZWJQYWdlUHJveHk6
OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSkKK1JlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm4gcmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRlbShpdGVtKTsKQEAgLTk4NywxMiAr
MTAxMywxNCBAQCB1aW50NjRfdCBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0CiAKICAg
ICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24sIGl0
ZW0tPnVybCgpKTsKIAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCA9IG1fYmFja0ZvcndhcmRM
aXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSXNJblNhbWVEb2N1bWVudCgqaXRlbSkgPyAwIDogZ2Vu
ZXJhdGVOYXZpZ2F0aW9uSUQoKTsKKyAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0
aW9uOworICAgIGlmICghbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1Jc0lu
U2FtZURvY3VtZW50KCppdGVtKSkKKyAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0
YXRlLT5jcmVhdGVCYWNrRm9yd2FyZE5hdmlnYXRpb24oKTsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uSUQsIGl0
ZW0tPml0ZW1JRCgpKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2
aWdhdGlvbklEKCkgOiAwLCBpdGVtLT5pdGVtSUQoKSksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nl
c3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKIAotICAgIHJldHVybiBuYXZpZ2F0
aW9uSUQ7CisgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0
cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQpAQCAtMTYzMCwxMSArMTY1OCw2IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVLZXlib2FyZEV2ZW50KGMKICAgICAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVudChldmVudCksIG1fcGFnZUlEKTsKIH0KIAotdWlu
dDY0X3QgV2ViUGFnZVByb3h5OjpnZW5lcmF0ZU5hdmlnYXRpb25JRCgpCi17Ci0gICAgcmV0dXJu
ICsrbV9uYXZpZ2F0aW9uSUQ7Ci19Ci0KIFdlYlByZWZlcmVuY2VzU3RvcmUgV2ViUGFnZVByb3h5
OjpwcmVmZXJlbmNlc1N0b3JlKCkgY29uc3QKIHsKICAgICBpZiAobV9jb25maWd1cmF0aW9uUHJl
ZmVyZW5jZVZhbHVlcy5pc0VtcHR5KCkpCkBAIC0xODA1LDcgKzE4MjgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCksIG1fcGFnZUlEKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURl
Y2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkqIGZyYW1lLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24pCiB7CiAgICAgaWYgKCFp
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE4NDMsNyArMTg2Niw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbihmcmFtZS0+ZnJhbWVJRCgpLCBsaXN0ZW5lcklELCBhY3Rpb24sIG5hdmln
YXRpb25JRCwgZG93bmxvYWRJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZS0+ZnJhbWVJRCgp
LCBsaXN0ZW5lcklELCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9u
SUQoKSA6IDAsIGRvd25sb2FkSUQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCkBAIC0xOTU0LDcgKzE5Nzcs
NyBAQCBTZXNzaW9uU3RhdGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoCiAgICAgcmV0dXJu
IHNlc3Npb25TdGF0ZTsKIH0KIAotdWludDY0X3QgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNl
c3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlLCBib29sIG5hdmlnYXRlKQorUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0
ZShTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlLCBib29sIG5hdmlnYXRlKQogewogICAgIG1fc2Vz
c2lvblJlc3RvcmF0aW9uUmVuZGVyVHJlZVNpemUgPSAwOwogICAgIG1faGl0UmVuZGVyVHJlZVNp
emVUaHJlc2hvbGQgPSBmYWxzZTsKQEAgLTE5ODYsNyArMjAwOSw3IEBAIHVpbnQ2NF90IFdlYlBh
Z2VQcm94eTo6cmVzdG9yZUZyb21TZXNzaW8KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVy
biAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9y
dHNUZXh0Wm9vbSgpIGNvbnN0CkBAIC0yODYzLDggKzI4ODYsOSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAgICAgCiAgICAgUmVmUHRyPFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eT4gbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5
KGxpc3RlbmVySUQpOwogICAgIGlmICghbmF2aWdhdGlvbklEICYmIGZyYW1lLT5pc01haW5GcmFt
ZSgpKSB7Ci0gICAgICAgIG5ld05hdmlnYXRpb25JRCA9IGdlbmVyYXRlTmF2aWdhdGlvbklEKCk7
Ci0gICAgICAgIGxpc3RlbmVyLT5zZXROYXZpZ2F0aW9uSUQobmV3TmF2aWdhdGlvbklEKTsKKyAg
ICAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRSZXF1
ZXN0TmF2aWdhdGlvbihyZXF1ZXN0KTsKKyAgICAgICAgbmV3TmF2aWdhdGlvbklEID0gbmF2aWdh
dGlvbi0+bmF2aWdhdGlvbklEKCk7CisgICAgICAgIGxpc3RlbmVyLT5zZXROYXZpZ2F0aW9uKFdU
Rjo6bW92ZShuYXZpZ2F0aW9uKSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNp
b24gMTc4MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBG
aW5kQ2xpZW50OwogY2xhc3MgRm9ybUNsaWVudDsKIGNsYXNzIExvYWRlckNsaWVudDsKK2NsYXNz
IE5hdmlnYXRpb247CiBjbGFzcyBQb2xpY3lDbGllbnQ7CiBjbGFzcyBVSUNsaWVudDsKIGNsYXNz
IFVSTFJlcXVlc3Q7CkBAIC0xNjksNiArMTcwLDcgQEAgY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbTsKIGNsYXNzIFdlYkNvbnRleHRNZW51UHJveHk7CiBjbGFzcyBXZWJFZGl0Q29tbWFuZFBy
b3h5OwogY2xhc3MgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTsKK2NsYXNzIFdlYk5hdmlnYXRp
b25TdGF0ZTsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTsKIGNsYXNzIFdl
YktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwpAQCAtMjY0LDcgKzI2Niw5IEBA
IHB1YmxpYzoKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZVNldExhcmdlc3RGcmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVTZXRMYXJnZXN0RnJhbWUuZ2V0KCk7IH0KIAogICAgIERyYXdpbmdB
cmVhUHJveHkqIGRyYXdpbmdBcmVhKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3aW5nQXJlYS5nZXQo
KTsgfQotICAgIAorCisgICAgV2ViTmF2aWdhdGlvblN0YXRlJiBuYXZpZ2F0aW9uU3RhdGUoKSB7
IHJldHVybiAqbV9uYXZpZ2F0aW9uU3RhdGUuZ2V0KCk7IH0KKwogI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCiAgICAgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSogc2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5nZXQoKTsgfQogI2VuZGlmCkBAIC0zMjAsMjIgKzMyNCwyMiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCB0cnlDbG9zZSgpOwogICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
Q2xvc2VkOyB9CiAKLSAgICB1aW50NjRfdCBsb2FkUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKLSAgICB1aW50
NjRfdCBsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkwsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEaXJlY3RvcnlVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwotICAgIHVp
bnQ2NF90IGxvYWREYXRhKEFQSTo6RGF0YSosIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhID0gbnVsbHB0cik7Ci0gICAgdWludDY0X3QgbG9hZEhUTUxTdHJpbmcoY29uc3QgU3Ry
aW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSA9IG51bGxwdHIpOworICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRSZXF1ZXN0
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9
IG51bGxwdHIpOworICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVVSTCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTCwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CisgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
bG9hZERhdGEoQVBJOjpEYXRhKiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEg
PSBudWxscHRyKTsKKyAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkSFRNTFN0cmluZyhj
b25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTFN0cmlu
Zyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3Qg
U3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7
CiAgICAgdm9pZCBsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIHZvaWQgbG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6
RGF0YSosIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIHZvaWQgbmF2aWdh
dGVUb1VSTFdpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50
UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogCiAg
ICAgdm9pZCBzdG9wTG9hZGluZygpOwotICAgIHVpbnQ2NF90IHJlbG9hZChib29sIHJlbG9hZEZy
b21PcmlnaW4pOworICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlbG9hZChib29sIHJlbG9h
ZEZyb21PcmlnaW4pOwogCi0gICAgdWludDY0X3QgZ29Gb3J3YXJkKCk7Ci0gICAgdWludDY0X3Qg
Z29CYWNrKCk7CisgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29Gb3J3YXJkKCk7CisgICAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29CYWNrKCk7CiAKLSAgICB1aW50NjRfdCBnb1RvQmFj
a0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKKyAgICBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsK
ICAgICB2b2lkIHRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogICAgIHZvaWQgZGlkQ2hhbmdl
QmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkSXRlbSwgVmVjdG9y
PFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gcmVtb3ZlZCk7CiAgICAgdm9pZCB3aWxs
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0odWludDY0X3QgaXRlbUlELCBjb25zdCBVc2VyRGF0YSYp
OwpAQCAtNTg2LDcgKzU5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlcm1pbmF0ZVByb2Nlc3Mo
KTsKIAogICAgIFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUoY29uc3Qgc3RkOjpmdW5jdGlvbjxi
b29sIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiA9IG51bGxwdHIpIGNvbnN0OwotICAgIHVp
bnQ2NF90IHJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSwgYm9vbCBuYXZpZ2F0
ZSk7CisgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gcmVzdG9yZUZyb21TZXNzaW9uU3RhdGUo
U2Vzc2lvblN0YXRlLCBib29sIG5hdmlnYXRlKTsKIAogICAgIGJvb2wgc3VwcG9ydHNUZXh0Wm9v
bSgpIGNvbnN0OwogICAgIGRvdWJsZSB0ZXh0Wm9vbUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dFpvb21GYWN0b3I7IH0KQEAgLTcxNSw3ICs3MTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
ZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpOwogI2VuZGlmCiAKLSAg
ICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBXZWJG
cmFtZVByb3h5KiwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDY0X3QgbmF2aWdhdGlvbklEKTsK
KyAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBX
ZWJGcmFtZVByb3h5KiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZp
Z2F0aW9uSUQpOwogCiAgICAgdm9pZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKHVpbnQ2NF90IGl0
ZW1JRCk7CiAKQEAgLTEwOTksNyArMTEwMyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDYW5T
aG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMoYm9vbCBjYW5TaG9ydENpcmN1aXRIb3Jp
em9udGFsV2hlZWxFdmVudHMpIHsgbV9jYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVu
dHMgPSBjYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHM7IH0KIAogICAgIHZvaWQg
cmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKLSAgICB1aW50NjRfdCByZWF0dGFjaFRvV2ViUHJvY2Vz
c1dpdGhJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKKyAgICBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiByZWF0dGFjaFRvV2ViUHJvY2Vzc0ZvclJlbG9hZCgpOworICAgIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IHJlYXR0YWNoVG9XZWJQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSopOwogCiAgICAgdm9pZCByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbih1aW50
NjRfdCBub3RpZmljYXRpb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpOwogICAgIHZv
aWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJv
ZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmlu
ZyYgbGFuZywgY29uc3QgU3RyaW5nJiBkaXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1
aW50NjRfdCBub3RpZmljYXRpb25JRCk7CkBAIC0xMzU0LDYgKzEzNTksOCBAQCBwcml2YXRlOgog
ICAgIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudCBtX2NvbnRleHRNZW51Q2xpZW50OwogI2VuZGlm
CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViTmF2aWdhdGlvblN0YXRlPiBtX25hdmlnYXRpb25T
dGF0ZTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBtX2RyYXdpbmdB
cmVhOwogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk+IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
LmNwcAkocmV2aXNpb24gMTc4MTg1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2LDE4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5oIgogCisjaW5jbHVkZSAi
V2ViTmF2aWdhdGlvblN0YXRlLmgiCisKIG5hbWVzcGFjZSBBUEkgewogCi1OYXZpZ2F0aW9uOjpO
YXZpZ2F0aW9uKCkKK05hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9u
U3RhdGUmIHN0YXRlKQorICAgIDogbV9uYXZpZ2F0aW9uSUQoc3RhdGUuZ2VuZXJhdGVOYXZpZ2F0
aW9uSUQoKSkKIHsKIH0KIAotTmF2aWdhdGlvbjo6TmF2aWdhdGlvbihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi0gICAgOiBtX3JlcXVlc3QocmVxdWVzdCkKK05hdmln
YXRpb246Ok5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0YXRlLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCisgICAgOiBtX25hdmlnYXRpb25J
RChzdGF0ZS5nZW5lcmF0ZU5hdmlnYXRpb25JRCgpKQorICAgICwgbV9yZXF1ZXN0KHJlcXVlc3Qp
CiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbi5oCShyZXZpc2lvbiAxNzgxODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMjggKzMwLDM1IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAK
K25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTmF2aWdhdGlvblN0YXRlOworfQorCiBuYW1l
c3BhY2UgQVBJIHsKIAogY2xhc3MgTmF2aWdhdGlvbiA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVj
dDo6VHlwZTo6TmF2aWdhdGlvbj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmF2aWdhdGlv
bj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPE5hdmlnYXRpb24+IGNyZWF0ZShXZWJLaXQ6Oldl
Yk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBOYXZpZ2F0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF2aWdhdGlv
bihzdGF0ZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8TmF2aWdhdGlvbj4gY3JlYXRlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKKyAgICBzdGF0aWMgUmVmPE5h
dmlnYXRpb24+IGNyZWF0ZShXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE5hdmlnYXRpb24ocmVxdWVzdCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBOYXZpZ2F0aW9uKHN0YXRlLCByZXF1ZXN0KSk7CiAgICAgfQogCiAgICAgdmly
dHVhbCB+TmF2aWdhdGlvbigpOwogCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklEKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXZpZ2F0aW9uSUQ7IH0KKwogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IE5hdmlnYXRpb24oKTsKLSAgICBleHBsaWNpdCBOYXZpZ2F0aW9uKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIGV4cGxpY2l0IE5hdmlnYXRpb24o
V2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmKTsKKyAgICBleHBsaWNpdCBOYXZpZ2F0aW9uKFdl
YktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7CiAKKyAgICB1aW50NjRfdCBtX25hdmlnYXRpb25JRDsKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgbV9yZXF1ZXN0OwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDE3ODE4NSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00MjUsMTAgKzQyNSwxMSBAQCAtICh2b2lkKXNldFVJRGVsZWdhdGU6KGlkPFdLVUlEZWxl
Z2F0ZT4pCiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0CiB7Ci0gICAgdWludDY0X3QgbmF2aWdhdGlvbklEID0gX3BhZ2UtPmxvYWRSZXF1ZXN0
KHJlcXVlc3QpOwotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0
ZUxvYWRSZXF1ZXN0TmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQsIHJlcXVlc3QpOworICAgIGF1dG8g
bmF2aWdhdGlvbiA9IF9wYWdlLT5sb2FkUmVxdWVzdChyZXF1ZXN0KTsKKyAgICBpZiAoIW5hdmln
YXRpb24pCisgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIobmF2aWdh
dGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmln
YXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChXS05hdmln
YXRpb24gKilsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6
KE5TVVJMICopcmVhZEFjY2Vzc1VSTApAQCAtNDM5LDEzICs0NDAsMTEgQEAgLSAoV0tOYXZpZ2F0
aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICopVQogICAgIGlmICghW3JlYWRBY2Nlc3NVUkwgaXNG
aWxlVVJMXSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhj
ZXB0aW9uIGZvcm1hdDpAIiVAIGlzIG5vdCBhIGZpbGUgVVJMIiwgcmVhZEFjY2Vzc1VSTF07CiAK
LSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSBfcGFnZS0+bG9hZEZpbGUoW1VSTCBfd2ViX29y
aWdpbmFsRGF0YUFzV1RGU3RyaW5nXSwgW3JlYWRBY2Nlc3NVUkwgX3dlYl9vcmlnaW5hbERhdGFB
c1dURlN0cmluZ10pOwotICAgIGlmICghbmF2aWdhdGlvbklEKQorICAgIGF1dG8gbmF2aWdhdGlv
biA9IF9wYWdlLT5sb2FkRmlsZShbVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddLCBb
cmVhZEFjY2Vzc1VSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSk7CisgICAgaWYgKCFu
YXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byBuYXZpZ2F0aW9uID0g
X25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKG5hdmlnYXRpb25J
RCwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpVUkxdKTsKLQotICAgIHJldHVybiBbd3Jh
cHBlcihuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbd3Jh
cHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAK
IC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBiYXNl
VVJMOihOU1VSTCAqKWJhc2VVUkwKQEAgLTQ1NywyMiArNDU2LDIwIEBAIC0gKFdLTmF2aWdhdGlv
biAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmkKIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZERhdGE6
KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5j
b2RpbmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VS
TCAqKWJhc2VVUkwKIHsKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSBfcGFnZS0+bG9hZERh
dGEoQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhkYXRhKS5nZXQoKSwgTUlNRVR5cGUs
IGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZyk7Ci0gICAgaWYg
KCFuYXZpZ2F0aW9uSUQpCisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPmxvYWREYXRhKEFQ
STo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoZGF0YSkuZ2V0KCksIE1JTUVUeXBlLCBjaGFy
YWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcpOworICAgIGlmICghbmF2
aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9u
YXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwot
Ci0gICAgcmV0dXJuIFt3cmFwcGVyKG5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07
CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1
dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KIHsKLSAgICB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQgPSBfcGFnZS0+Z29Ub0JhY2tGb3J3YXJkSXRlbSgmaXRlbS5faXRlbSk7Ci0KLSAgICBh
dXRvIG5hdmlnYXRpb24gPSBfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVCYWNrRm9yd2FyZE5hdmln
YXRpb24obmF2aWdhdGlvbklELCBpdGVtLl9pdGVtKTsKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBf
cGFnZS0+Z29Ub0JhY2tGb3J3YXJkSXRlbSgmaXRlbS5faXRlbSk7CisgICAgaWYgKCFuYXZpZ2F0
aW9uKQorICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKG5hdmlnYXRp
b24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0
aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNTdHJpbmcg
Kil0aXRsZQpAQCAtNTEyLDQ2ICs1MDksMzggQEAgLSAoQk9PTCljYW5Hb0ZvcndhcmQKIAogLSAo
V0tOYXZpZ2F0aW9uICopZ29CYWNrCiB7Ci0gICAgdWludDY0X3QgbmF2aWdhdGlvbklEID0gX3Bh
Z2UtPmdvQmFjaygpOwotICAgIGlmICghbmF2aWdhdGlvbklEKQorICAgIGF1dG8gbmF2aWdhdGlv
biA9IF9wYWdlLT5nb0JhY2soKTsKKyAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICBBU1NFUlQoX3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLmN1cnJlbnRJdGVt
KCkpOwotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUJhY2tG
b3J3YXJkTmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQsICpfcGFnZS0+YmFja0ZvcndhcmRMaXN0KCku
Y3VycmVudEl0ZW0oKSk7CiAgCi0gICAgcmV0dXJuIFt3cmFwcGVyKG5hdmlnYXRpb24ubGVha1Jl
ZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVh
c2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopZ29G
b3J3YXJkCiB7Ci0gICAgdWludDY0X3QgbmF2aWdhdGlvbklEID0gX3BhZ2UtPmdvRm9yd2FyZCgp
OwotICAgIGlmICghbmF2aWdhdGlvbklEKQorICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5n
b0ZvcndhcmQoKTsKKyAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICBBU1NFUlQoX3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLmN1cnJlbnRJdGVtKCkpOwotICAg
IGF1dG8gbmF2aWdhdGlvbiA9IF9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUJhY2tGb3J3YXJkTmF2
aWdhdGlvbihuYXZpZ2F0aW9uSUQsICpfcGFnZS0+YmFja0ZvcndhcmRMaXN0KCkuY3VycmVudEl0
ZW0oKSk7Ci0KLSAgICByZXR1cm4gW3dyYXBwZXIobmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtS
ZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChXS05hdmlnYXRpb24gKilyZWxvYWQKIHsKLSAg
ICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSBfcGFnZS0+cmVsb2FkKGZhbHNlKTsKLSAgICBpZiAo
IW5hdmlnYXRpb25JRCkKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKGZhbHNl
KTsKKyAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRv
IG5hdmlnYXRpb24gPSBfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVSZWxvYWROYXZpZ2F0aW9uKG5h
dmlnYXRpb25JRCk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyKG5hdmlnYXRpb24ubGVha1JlZigpKSBh
dXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkRnJv
bU9yaWdpbgogewotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCA9IF9wYWdlLT5yZWxvYWQodHJ1
ZSk7Ci0gICAgaWYgKCFuYXZpZ2F0aW9uSUQpCisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2Ut
PnJlbG9hZCh0cnVlKTsKKyAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVSZWxvYWRO
YXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyKG5hdmlnYXRpb24u
bGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9u
LnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAodm9pZClzdG9wTG9h
ZGluZwpAQCAtMTc2MywyMiArMTc1MiwxNiBAQCAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Npb25T
dGF0ZURhdGE6KE5TCiAgICAgaWYgKCFXZWJLaXQ6OmRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc2Vzc2lvblN0YXRlRGF0YS5ieXRlcyksIHNlc3Np
b25TdGF0ZURhdGEubGVuZ3RoLCBzZXNzaW9uU3RhdGUpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAodWludDY0X3QgbmF2aWdhdGlvbklEID0gX3BhZ2UtPnJlc3RvcmVGcm9tU2Vzc2lvblN0
YXRlKFdURjo6bW92ZShzZXNzaW9uU3RhdGUpLCB0cnVlKSkgewotICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgYWx3YXlzIGEgcmVsb2FkIG5hdmlnYXRpb24uCi0gICAg
ICAgIF9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24obmF2aWdhdGlvbklE
KTsKLSAgICB9CisgICAgX3BhZ2UtPnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFdURjo6bW92ZShz
ZXNzaW9uU3RhdGUpLCB0cnVlKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopX3Jlc3RvcmVTZXNz
aW9uU3RhdGU6KF9XS1Nlc3Npb25TdGF0ZSAqKXNlc3Npb25TdGF0ZSBhbmROYXZpZ2F0ZTooQk9P
TCluYXZpZ2F0ZQogewotICAgIGlmICh1aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSBfcGFnZS0+cmVz
dG9yZUZyb21TZXNzaW9uU3RhdGUoc2Vzc2lvblN0YXRlLT5fc2Vzc2lvblN0YXRlLCBuYXZpZ2F0
ZSkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IGFsd2F5cyBh
IHJlbG9hZCBuYXZpZ2F0aW9uLgotICAgICAgICBhdXRvIG5hdmlnYXRpb24gPSBfbmF2aWdhdGlv
blN0YXRlLT5jcmVhdGVSZWxvYWROYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7Ci0KLSAgICAgICAg
cmV0dXJuIFt3cmFwcGVyKG5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07Ci0gICAg
fQorICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShz
ZXNzaW9uU3RhdGUtPl9zZXNzaW9uU3RhdGUsIG5hdmlnYXRlKTsKKyAgICBpZiAoIW5hdmlnYXRp
b24pCisgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBb
d3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9
CiAKIC0gKHZvaWQpX2Nsb3NlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCShyZXZpc2lvbiAxNzgxODUpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDExICs2Niw2IEBAIHB1YmxpYzoKICAgICBSZXRhaW5QdHI8aWQgPFdLSGlzdG9yeURlbGVn
YXRlUHJpdmF0ZT4gPiBoaXN0b3J5RGVsZWdhdGUoKTsKICAgICB2b2lkIHNldEhpc3RvcnlEZWxl
Z2F0ZShpZCA8V0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlPik7CiAKLSAgICBSZWY8QVBJOjpOYXZp
Z2F0aW9uPiBjcmVhdGVCYWNrRm9yd2FyZE5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7Ci0gICAgUmVmPEFQSTo6TmF2aWdhdGlv
bj4gY3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTlNV
UkxSZXF1ZXN0ICopOwotICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IGNyZWF0ZVJlbG9hZE5hdmln
YXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKLSAgICBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBj
cmVhdGVMb2FkRGF0YU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKLQogICAgIC8v
IENhbGxlZCBieSB0aGUgcGFnZSBjbGllbnQuCiAgICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURp
ZEJlZ2luKCk7CiAgICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQoYm9vbCB3aWxsTmF2
aWdhdGUsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKQEAgLTE3Nyw4ICsxNzIsNiBAQCBwcml2
YXRlOgogI2VuZGlmCiAgICAgfSBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHM7CiAKLSAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPj4gbV9uYXZpZ2F0aW9uczsK
LQogICAgIFdlYWtPYmpDUHRyPGlkIDxXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU+ID4gbV9oaXN0
b3J5RGVsZWdhdGU7CiAgICAgc3RydWN0IHsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkTmF2aWdh
dGVXaXRoTmF2aWdhdGlvbkRhdGEgOiAxOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAxNzgxODUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5oIgogI2ltcG9ydCAiV2ViRnJhbWVQcm94eS5oIgorI2lt
cG9ydCAiV2ViTmF2aWdhdGlvblN0YXRlLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNp
bXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvdGVjdGlvblNwYWNlLmgi
CkBAIC0xNjQsNTAgKzE2NSw2IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXRIaXN0b3J5RGVs
ZWdhdGUKICAgICBtX2hpc3RvcnlEZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFVwZGF0ZUhpc3Rv
cnlUaXRsZUZvclVSTCA9IFtoaXN0b3J5RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlldzpkaWRVcGRhdGVIaXN0b3J5VGl0bGU6Zm9yVVJMOildOwogfQogCi1SZWY8
QVBJOjpOYXZpZ2F0aW9uPiBOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdh
dGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkKLXsKLSAg
ICBBU1NFUlQoIW1fbmF2aWdhdGlvbnMuY29udGFpbnMobmF2aWdhdGlvbklEKSk7Ci0KLSAgICBh
dXRvIG5hdmlnYXRpb24gPSBBUEk6Ok5hdmlnYXRpb246OmNyZWF0ZShXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QocmVxdWVzdCkpOwotCi0gICAgbV9uYXZpZ2F0aW9ucy5zZXQobmF2aWdhdGlvbklE
LCBuYXZpZ2F0aW9uLnB0cigpKTsKLQotICAgIHJldHVybiBuYXZpZ2F0aW9uOwotfQotCi1SZWY8
QVBJOjpOYXZpZ2F0aW9uPiBOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdh
dGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
IGl0ZW0pCi17Ci0gICAgQVNTRVJUKCFtX25hdmlnYXRpb25zLmNvbnRhaW5zKG5hdmlnYXRpb25J
RCkpOwotCi0gICAgYXV0byBuYXZpZ2F0aW9uID0gQVBJOjpOYXZpZ2F0aW9uOjpjcmVhdGUoKTsK
LQotICAgIG1fbmF2aWdhdGlvbnMuc2V0KG5hdmlnYXRpb25JRCwgbmF2aWdhdGlvbi5wdHIoKSk7
Ci0KLSAgICByZXR1cm4gbmF2aWdhdGlvbjsKLX0KLQotUmVmPEFQSTo6TmF2aWdhdGlvbj4gTmF2
aWdhdGlvblN0YXRlOjpjcmVhdGVSZWxvYWROYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCkKLXsKLSAgICBBU1NFUlQoIW1fbmF2aWdhdGlvbnMuY29udGFpbnMobmF2aWdhdGlvbklEKSk7
Ci0KLSAgICBhdXRvIG5hdmlnYXRpb24gPSBBUEk6Ok5hdmlnYXRpb246OmNyZWF0ZSgpOwotCi0g
ICAgbV9uYXZpZ2F0aW9ucy5zZXQobmF2aWdhdGlvbklELCBuYXZpZ2F0aW9uLnB0cigpKTsKLQot
ICAgIHJldHVybiBuYXZpZ2F0aW9uOwotfQotCi1SZWY8QVBJOjpOYXZpZ2F0aW9uPiBOYXZpZ2F0
aW9uU3RhdGU6OmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQp
Ci17Ci0gICAgQVNTRVJUKCFtX25hdmlnYXRpb25zLmNvbnRhaW5zKG5hdmlnYXRpb25JRCkpOwot
Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0gQVBJOjpOYXZpZ2F0aW9uOjpjcmVhdGUoKTsKLQotICAg
IG1fbmF2aWdhdGlvbnMuc2V0KG5hdmlnYXRpb25JRCwgbmF2aWdhdGlvbi5wdHIoKSk7Ci0KLSAg
ICByZXR1cm4gbmF2aWdhdGlvbjsKLX0KLQogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Om5hdmlnYXRp
b25HZXN0dXJlRGlkQmVnaW4oKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlKQpAQCAtMjY5LDkgKzIyNiw2IEBA
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpQb2xpY3lDbGllbnQ6OmRlY2kKIHsKICAgICBSZXRhaW5Q
dHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBhZG9wdE5TKHdyYXBwZXIoKkFQSTo6VVJM
UmVxdWVzdDo6Y3JlYXRlKHJlcXVlc3QpLmxlYWtSZWYoKSkpOwogCi0gICAgaWYgKGxpc3RlbmVy
LT5uYXZpZ2F0aW9uSUQoKSkKLSAgICAgICAgbV9uYXZpZ2F0aW9uU3RhdGUuY3JlYXRlTG9hZFJl
cXVlc3ROYXZpZ2F0aW9uKGxpc3RlbmVyLT5uYXZpZ2F0aW9uSUQoKSwgbnNVUkxSZXF1ZXN0Lmdl
dCgpKTsKLQogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5k
bGVyKSB7CiAgICAgICAgIGlmICghZGVzdGluYXRpb25GcmFtZSkgewogICAgICAgICAgICAgbGlz
dGVuZXItPnVzZSgpOwpAQCAtNDA3LDcgKzM2MSw3IEBAIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVy
Q2xpZW50Ojp+TG9hZGVyQ2wKIHsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNs
aWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJG
cmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIEFQSTo6T2Jq
ZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJG
cmFtZVByb3h5LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIEFQSTo6T2JqZWN0KikKIHsKICAgICBp
ZiAoIXdlYkZyYW1lUHJveHktPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQy
MiwxMiArMzc2LDEyIEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFMK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb25JRCBpcyBub3Qg
emVybyBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgemVybyBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0
aHJvdWdoIHRoZSBwYWdlIGNhY2hlLgogICAgIFdLTmF2aWdhdGlvbiAqbmF2aWdhdGlvbiA9IG5p
bDsKICAgICBpZiAobmF2aWdhdGlvbklEKQotICAgICAgICBuYXZpZ2F0aW9uID0gd3JhcHBlcigq
bV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdhdGlvbklEKSk7CisgICAg
ICAgIG5hdmlnYXRpb24gPSB3cmFwcGVyKHBhZ2UtPm5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRp
b24obmF2aWdhdGlvbklEKSk7CiAKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9u
YXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOm5h
dmlnYXRpb25dOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBBUEk6Ok9iamVjdCopCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9h
ZGVyQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiB3
ZWJGcmFtZVByb3h5LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIEFQSTo6T2JqZWN0KikKIHsKICAg
ICBpZiAoIXdlYkZyYW1lUHJveHktPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTQ0Miw3ICszOTYsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRS
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90
IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMg
dGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KICAgICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBu
aWw7CiAgICAgaWYgKG5hdmlnYXRpb25JRCkKLSAgICAgICAgbmF2aWdhdGlvbiA9IHdyYXBwZXIo
Km1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMuZ2V0KG5hdmlnYXRpb25JRCkpOworICAg
ICAgICBuYXZpZ2F0aW9uID0gd3JhcHBlcihwYWdlLT5uYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0
aW9uKG5hdmlnYXRpb25JRCkpOwogCiAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1f
bmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbE5hdmlnYXRpb246bmF2aWdhdGlvbl07CiB9CkBAIC00NjEsNyArNDE1LDcgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVFcnJvcldpdAogICAgIHJldHVybiBhZG9wdE5T
KFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46b3JpZ2luYWxFcnJvci5kb21haW4gY29k
ZTpvcmlnaW5hbEVycm9yLmNvZGUgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKIH0KIAotdm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdp
dGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJv
eHksIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IsIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6
OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBh
Z2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KikKIHsKICAg
ICBpZiAoIXdlYkZyYW1lUHJveHktPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYgKCFtX25h
dmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld05hdmlnYXRp
b25EaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcikKQEAgLTQ3OCw4ICs0
MzIsOCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGCiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVy
ZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0
aGUgcGFnZSBjYWNoZS4KICAgICBSZXRhaW5QdHI8V0tOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uOwog
ICAgIGlmIChuYXZpZ2F0aW9uSUQpCi0gICAgICAgIG5hdmlnYXRpb24gPSB3cmFwcGVyKCptX25h
dmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25zLnRha2UobmF2aWdhdGlvbklEKSk7Ci0KKyAgICAg
ICAgbmF2aWdhdGlvbiA9IHdyYXBwZXIocGFnZS0+bmF2aWdhdGlvblN0YXRlKCkudGFrZU5hdmln
YXRpb24obmF2aWdhdGlvbklEKS5nZXQoKSk7CisgICAgCiAgICAgLy8gRklYTUU6IFNldCB0aGUg
ZXJyb3Igb24gdGhlIG5hdmlnYXRpb24gb2JqZWN0LgogCiAgICAgaWYgKCFtX25hdmlnYXRpb25T
dGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZhaWxQcm92aXNpb25h
bE5hdmlnYXRpb25XaXRoRXJyb3IpCkBAIC00OTMsNyArNDQ3LDcgQEAgdm9pZCBOYXZpZ2F0aW9u
U3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRgogICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmll
dzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlv
bjpuYXZpZ2F0aW9uLmdldCgpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5n
ZXQoKV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZENvbW1p
dExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0
YXRlOjpMb2FkZXJDbGllbnQ6OmRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBh
Z2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
QVBJOjpPYmplY3QqKQogewogICAgIGlmICghd2ViRnJhbWVQcm94eS0+aXNNYWluRnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTA4LDEyICs0NjIsMTIgQEAgdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6OkxvYWRlckNsaWVudDo6ZGlkQwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRo
YXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJv
IGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIHBhZ2UgY2FjaGUuCiAgICAgV0tOYXZp
Z2F0aW9uICpuYXZpZ2F0aW9uID0gbmlsOwogICAgIGlmIChuYXZpZ2F0aW9uSUQpCi0gICAgICAg
IG5hdmlnYXRpb24gPSB3cmFwcGVyKCptX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25zLmdl
dChuYXZpZ2F0aW9uSUQpKTsKKyAgICAgICAgbmF2aWdhdGlvbiA9IHdyYXBwZXIocGFnZS0+bmF2
aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpKTsKIAogICAgIFtuYXZpZ2F0
aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkQ29tbWl0
TmF2aWdhdGlvbjpuYXZpZ2F0aW9uXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRl
ckNsaWVudDo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2Vi
RnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgdWludDY0X3QgbmF2aWdhdGlvbklELCBBUEk6Ok9i
amVjdCopCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1
bWVudExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZy
YW1lUHJveHksIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgQVBJOjpPYmplY3QqKQogewogICAgIGlm
ICghd2ViRnJhbWVQcm94eS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTI4
LDEyICs0ODIsMTIgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRgog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6
ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZvciBzb21lIG5hdmlnYXRpb25zIHRo
cm91Z2ggdGhlIHBhZ2UgY2FjaGUuCiAgICAgV0tOYXZpZ2F0aW9uICpuYXZpZ2F0aW9uID0gbmls
OwogICAgIGlmIChuYXZpZ2F0aW9uSUQpCi0gICAgICAgIG5hdmlnYXRpb24gPSB3cmFwcGVyKCpt
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25zLmdldChuYXZpZ2F0aW9uSUQpKTsKKyAgICAg
ICAgbmF2aWdhdGlvbiA9IHdyYXBwZXIocGFnZS0+bmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlv
bihuYXZpZ2F0aW9uSUQpKTsKIAogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbkRpZEZpbmlzaERvY3VtZW50TG9hZDpuYXZp
Z2F0aW9uXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmlu
aXNoTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJv
eHksIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9u
U3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSog
cGFnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBBUEk6Ok9iamVjdCopCiB7CiAgICAgaWYgKCF3ZWJGcmFtZVByb3h5LT5pc01haW5GcmFtZSgp
KQogICAgICAgICByZXR1cm47CkBAIC01NDgsMTIgKzUwMiwxMiBAQCB2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQg
dGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHpl
cm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KICAgICBXS05h
dmlnYXRpb24gKm5hdmlnYXRpb24gPSBuaWw7CiAgICAgaWYgKG5hdmlnYXRpb25JRCkKLSAgICAg
ICAgbmF2aWdhdGlvbiA9IHdyYXBwZXIoKm1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMu
Z2V0KG5hdmlnYXRpb25JRCkpOworICAgICAgICBuYXZpZ2F0aW9uID0gd3JhcHBlcihwYWdlLT5u
YXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkpOwogCiAgICAgW25hdmln
YXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGaW5p
c2hOYXZpZ2F0aW9uOm5hdmlnYXRpb25dOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9h
ZGVyQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdl
YkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKK3Zv
aWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9y
RnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCF3ZWJGcmFtZVByb3h5LT5pc01h
aW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CkBAIC01NjgsMTMgKzUyMiwxMyBAQCB2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGCiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3Vy
cmVudGx5IHplcm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4K
ICAgICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBuaWw7CiAgICAgaWYgKG5hdmlnYXRpb25J
RCkKLSAgICAgICAgbmF2aWdhdGlvbiA9IHdyYXBwZXIoKm1fbmF2aWdhdGlvblN0YXRlLm1fbmF2
aWdhdGlvbnMuZ2V0KG5hdmlnYXRpb25JRCkpOworICAgICAgICBuYXZpZ2F0aW9uID0gd3JhcHBl
cihwYWdlLT5uYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkpOwogCiAg
ICAgYXV0byBlcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlciA9IGNyZWF0ZUVycm9yV2l0aFJlY292
ZXJ5QXR0ZW1wdGVyKG1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldywgKndlYkZyYW1lUHJveHks
IGVycm9yKTsKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3Rh
dGUubV93ZWJWaWV3IGRpZEZhaWxOYXZpZ2F0aW9uOm5hdmlnYXRpb24gd2l0aEVycm9yOmVycm9y
V2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
OkxvYWRlckNsaWVudDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdlYlBhZ2VQ
cm94eSosIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIEFQSTo6T2JqZWN0
KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFNhbWVEb2N1bWVudE5h
dmlnYXRpb25Gb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZy
YW1lUHJveHksIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGUgbmF2aWdhdGlvblR5cGUsIEFQSTo6T2JqZWN0KikKIHsKICAgICBpZiAoIXdlYkZyYW1lUHJv
eHktPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU4OSwxNCArNTQzLDE0IEBA
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFMKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb25JRCBpcyBub3QgemVybyBoZXJlLCBidXQg
aXQncyBjdXJyZW50bHkgemVybyBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBwYWdl
IGNhY2hlLgogICAgIFdLTmF2aWdhdGlvbiAqbmF2aWdhdGlvbiA9IG5pbDsKICAgICBpZiAobmF2
aWdhdGlvbklEKQotICAgICAgICBuYXZpZ2F0aW9uID0gd3JhcHBlcigqbV9uYXZpZ2F0aW9uU3Rh
dGUubV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdhdGlvbklEKSk7CisgICAgICAgIG5hdmlnYXRpb24g
PSB3cmFwcGVyKHBhZ2UtPm5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklE
KSk7CiAKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+
KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93
ZWJWaWV3IG5hdmlnYXRpb246bmF2aWdhdGlvbiBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uOnRv
V0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZShuYXZpZ2F0aW9uVHlwZSldOwogfQogCi12b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWREZXN0cm95TmF2aWdhdGlvbihXZWJQ
YWdlUHJveHkqLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TG9hZGVyQ2xpZW50OjpkaWREZXN0cm95TmF2aWdhdGlvbihXZWJQYWdlUHJveHkqIHBhZ2UsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCkKIHsKLSAgICBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRp
b25zLnJlbW92ZShuYXZpZ2F0aW9uSUQpOworICAgIHBhZ2UtPm5hdmlnYXRpb25TdGF0ZSgpLmRp
ZERlc3Ryb3lOYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpMb2FkZXJDbGllbnQ6OmRpZExheW91dChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYkNv
cmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcywgQVBJOjpPYmplY3QqKQpAQCAt
NjgzLDkgKzYzNyw5IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFIK
ICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKCphdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpw
cm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpXZWJQYWdlUHJveHkqKQordm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6OkxvYWRlckNsaWVudDo6cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUGFnZVByb3h5KiBw
YWdlKQogewotICAgIG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMuY2xlYXIoKTsKKyAg
ICBwYWdlLT5uYXZpZ2F0aW9uU3RhdGUoKS5jbGVhckFsbE5hdmlnYXRpb25zKCk7CiAKICAgICBp
ZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
V2ViUHJvY2Vzc0RpZENyYXNoKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzgx
ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNzYsNiArMTA3Niw4IEBACiAJCTdDQjE2RkYzMTcyNEJBMkYw
MDdBMEE5NSAvKiBjb20ubWljcm9zb2Z0LlNpbHZlcmxpZ2h0UGx1Z2luLnNiIGluIENvcHkgUGx1
Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDQjE2RkU2MTcyNEI5QjUwMDdBMEE5NSAvKiBjb20ubWljcm9zb2Z0LlNpbHZlcmxpZ2h0UGx1
Z2luLnNiICovOyB9OwogCQk3Q0IxNkZGNDE3MjRCQTMwMDA3QTBBOTUgLyogY29tLm9yYWNsZS5q
YXZhLkphdmFBcHBsZXRQbHVnaW4uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCMTZGRTcxNzI0QjlCNTAwN0Ew
QTk1IC8qIGNvbS5vcmFjbGUuamF2YS5KYXZhQXBwbGV0UGx1Z2luLnNiICovOyB9OwogCQk3Q0M5
OUEzNjE4RUY3Q0JDMDA0OEM4QjQgLyogV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQzk5QTM1MThFRjdDQkMw
MDQ4QzhCNCAvKiBXS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDQ0NDOEZBMUE1RjUwRkQwMDhGQjBEQSAv
KiBXZWJOYXZpZ2F0aW9uU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0NDQ0M4RjgxQTVGNTBGRDAwOEZCMERBIC8qIFdlYk5hdmlnYXRpb25T
dGF0ZS5jcHAgKi87IH07CisJCTdDQ0NDOEZCMUE1RjUwRkQwMDhGQjBEQSAvKiBXZWJOYXZpZ2F0
aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDQ0NDOEY5MUE1RjUwRkQwMDhGQjBEQSAvKiBXZWJOYXZpZ2F0aW9uU3RhdGUuaCAqLzsgfTsK
IAkJN0NEMTAyREExODY2NzcwNjAwRUQ0MjlEIC8qIEF1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRDEwMkQ5MTg2
Njc3MDYwMEVENDI5RCAvKiBBdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmggKi87IH07CiAJCTdDRDNB
NDgyMUE1RDAyRkEwMDk2MjNCOCAvKiBBUElOYXZpZ2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRDNBNDgwMUE1RDAyRkEwMDk2MjNCOCAv
KiBBUElOYXZpZ2F0aW9uLmNwcCAqLzsgfTsKIAkJN0NEM0E0ODMxQTVEMDJGQTAwOTYyM0I4IC8q
IEFQSU5hdmlnYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDRDNBNDgxMUE1RDAyRkEwMDk2MjNCOCAvKiBBUElOYXZpZ2F0aW9uLmggKi87IH07
CkBAIC0zMTc4LDYgKzMxODAsOCBAQAogCQk3Q0IxNkZFNjE3MjRCOUI1MDA3QTBBOTUgLyogY29t
Lm1pY3Jvc29mdC5TaWx2ZXJsaWdodFBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBj
b20ubWljcm9zb2Z0LlNpbHZlcmxpZ2h0UGx1Z2luLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3Q0IxNkZFNzE3MjRCOUI1MDA3QTBBOTUgLyogY29tLm9yYWNsZS5qYXZhLkphdmFB
cHBsZXRQbHVnaW4uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLm9yYWNsZS5qYXZhLkph
dmFBcHBsZXRQbHVnaW4uc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQzk5QTM1
MThFRjdDQkMwMDQ4QzhCNCAvKiBXS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3Q0NDQzhGODFBNUY1MEZEMDA4RkIwREEgLyogV2ViTmF2
aWdhdGlvblN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
Yk5hdmlnYXRpb25TdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQ0ND
OEY5MUE1RjUwRkQwMDhGQjBEQSAvKiBXZWJOYXZpZ2F0aW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTmF2aWdhdGlvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDRDEwMkQ5MTg2Njc3MDYwMEVENDI5RCAvKiBBdXRvQ29ycmVjdGlv
bkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9Db3JyZWN0
aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NEM0E0ODAxQTVE
MDJGQTAwOTYyM0I4IC8qIEFQSU5hdmlnYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQVBJTmF2aWdhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDRDNBNDgxMUE1RDAyRkEwMDk2MjNCOCAvKiBBUElOYXZpZ2F0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSU5hdmlnYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTU5OTcsNiArNjAwMSw4IEBACiAJCQkJMzNEM0EzQjcxMzM5NjA2
MjAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwICovLAogCQkJCTMzRDNB
M0I4MTMzOTYwNjIwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmggKi8sCiAJ
CQkJMzNEM0EzQjkxMzM5NjA2MjAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4gKi8sCisJCQkJN0NDQ0M4RjgxQTVGNTBGRDAwOEZCMERBIC8qIFdlYk5hdmln
YXRpb25TdGF0ZS5jcHAgKi8sCisJCQkJN0NDQ0M4RjkxQTVGNTBGRDAwOEZCMERBIC8qIFdlYk5h
dmlnYXRpb25TdGF0ZS5oICovLAogCQkJCUJDMURGRUEzMTJCMzFGODcwMDVERjczMCAvKiBXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCAqLywKIAkJCQlCQzFERkVBMjEyQjMxRjg3
MDA1REY3MzAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oICovLAogCQkJCTc1
NTQyMkJFMTgwNjJCRTQwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcCAq
LywKQEAgLTc5MzQsNiArNzk0MCw3IEBACiAJCQkJMUFBMjBENTExOEFENTBFMDAwNUQxRUQ0IC8q
IFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCQzNE
RjExODk5QzZCNjAwNEYwNjI2IC8qIFdLTmF2aWdhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUNDODdCQTE5ODFDMzQxMDAzRDFBRjQgLyogV0tOYXZpZ2F0aW9uUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0NDQ0M4RkIxQTVGNTBGRDAwOEZCMERBIC8qIFdlYk5hdmln
YXRpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExQjBFQjYxOEE0MjQ5NTAwMzg0ODFB
IC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFCMEVCODE4
QTQyNENEMDAzODQ4MUEgLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFBMTMyMTIxOTFENTkyNDAwOUMxNDg5IC8qIFdLTmF2aWdhdGlvblJlc3Bv
bnNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDk2LDYgKzk1MDMsNyBAQAogCQkJCUJD
MTExQjExMTEyRjVFNEYwMDMzN0JBQiAvKiBXZWJQcm9jZXNzUHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkRBOTQ0QjAxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUxRDEzMDU4MTM4MkYxMDUwMDM1MUVERCAvKiBXZWJQcm9j
ZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk3Q0NDQzhGQTFBNUY1MEZEMDA4RkIw
REEgLyogV2ViTmF2aWdhdGlvblN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRTREMjE2
MUE0OTE0ODQwMEM3RjE1MiAvKiBXZWJQcm9jZXNzUG9vbENvY29hLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNFRTdBRDAxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTFFMDkzMzE4ODYxRDM4MDBEMkRDNDkg
LyogV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="269303"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>