<?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>5839</bug_id>
          
          <creation_ts>2005-11-26 15:10:54 -0800</creation_ts>
          <short_desc>Close the 19,000+ leaks introduced during the DOM merger</short_desc>
          <delta_ts>2005-11-27 14:53:54 -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>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>24590</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-11-26 15:10:54 -0800</bug_when>
    <thetext>Close the 19,000+ leaks introduced during the DOM merger

The attach patch closes all known leaks in WebKit+SVG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24591</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-11-26 15:11:05 -0800</bug_when>
    <thetext>The patch also includes a (necessary) optimization to KCanvasContainer::paint() and (RenderPath::paint()) 
to not push a new KRenderingDeviceContext onto the context stack if one has already been pushed.  Not 
adding this optimization was causing CGContextBeginTransparency layer to have kittens... I was never 
able to fully understand why, except that the transparency layer methods, as part of their silent context 
swapping, seem to assume a certain CGContextRef, CGContextRelease pattern which we don&apos;t seem to 
follow, even though my previous code seemed perfectly legal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24592</commentid>
    <comment_count>2</comment_count>
      <attachid>4811</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-11-26 15:35:50 -0800</bug_when>
    <thetext>Created attachment 4811
Closes leaks from the DOM merger, adds back resource dumping, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24612</commentid>
    <comment_count>3</comment_count>
      <attachid>4811</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-11-27 02:06:11 -0800</bug_when>
    <thetext>Comment on attachment 4811
Closes leaks from the DOM merger, adds back resource dumping, etc.

__sharedRenderingDevice
Please remove the underscores from this, identifiers w/ two leading underscores
are reserved to the implementation.

Other than that r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4811</attachid>
            <date>2005-11-26 15:35:50 -0800</date>
            <delta_ts>2005-11-27 02:06:11 -0800</delta_ts>
            <desc>Closes leaks from the DOM merger, adds back resource dumping, etc.</desc>
            <filename>leaks.patch</filename>
            <type>text/plain</type>
            <size>63503</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9D
aGFuZ2VMb2csdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDAxCmRpZmYgLXAgLXUgLXIxLjQwMSBD
aGFuZ2VMb2cKLS0tIENoYW5nZUxvZwkyNiBOb3YgMjAwNSAyMjozNTozOCAtMDAwMAkxLjQwMQor
KysgQ2hhbmdlTG9nCTI2IE5vdiAyMDA1IDIzOjM1OjI3IC0wMDAwCkBAIC0xLDUgKzEsMTMwIEBA
CiAyMDA1LTExLTI2ICBFcmljIFNlaWRlbCAgPGVzZWlkZWxAYXBwbGUuY29tPgogCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGFkZGl0aW9uYWwgdGVz
dCBjYXNlcyBuZWNlc3NhcnksIGZpeGVzIHRleHQgZHVtcHMgZm9yIGFsbCB0ZXN0cy4KKworICAg
ICAgICBGaXhlcyBpbmNsdWRlZCBpbiB0aGlzIHBhdGNoOgorICAgICAgICAtIENsb3NlcyBhbGwg
a25vd24gbGVha3MgaW4gV2ViS2l0K1NWRworICAgICAgICAtIGFkZHMgc3RhdGljIEtSZW5kZXJp
bmdEZXZpY2UgKlFQYWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKQorICAgICAgICAtIHJlbW92ZXMg
UmVuZGVyQ2FudmFzOjpyZW5kZXJpbmdEZXZpY2UoKQorICAgICAgICAtIHJlbW92ZWQgUmVuZGVy
Q2FudmFzIHVzYWdlIGZyb20gS0NhbnZhc1JlbmRlcmluZ1N0eWxlCisKKyAgICAgICAgKiBrY2Fu
dmFzL0tDYW52YXNJdGVtLmNwcDoKKyAgICAgICAgKFJlbmRlclBhdGg6OlJlbmRlclBhdGgpOiBy
ZW1vdmUgY2FudmFzIGZyb20gS0NhbnZhc1JlbmRlcmluZ1N0eWxlCisgICAgICAgIChSZW5kZXJQ
YXRoOjp+UmVuZGVyUGF0aCk6IHVzZSBRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNlKCkKKyAgICAg
ICAgKFJlbmRlclBhdGg6OmZpbGxDb250YWlucyk6IHJlbW92ZSB1bm5lY2Vzc2FyeSBjb2RlLgor
ICAgICAgICAoUmVuZGVyUGF0aDo6c3Ryb2tlQ29udGFpbnMpOiByZW1vdmUgdW5uZWNlc3Nhcnkg
Y29kZS4KKyAgICAgICAgKFJlbmRlclBhdGg6OnJlbGF0aXZlQkJveCk6IHJlbW92ZSB1bm5lY2Vz
c2FyeSBjb2RlLgorICAgICAgICAoUmVuZGVyUGF0aDo6c2V0dXBGb3JEcmF3KTogcmVtb3ZlIHVu
bmVjZXNzYXJ5IGNvZGUuCisgICAgICAgIChSZW5kZXJQYXRoOjpjaGFuZ2VQYXRoKTogYWRkZWQg
QVNTRVJUCisgICAgICAgICoga2NhbnZhcy9LQ2FudmFzVHJlZURlYnVnLmNwcDoKKyAgICAgICAg
KG9wZXJhdG9yPDwpOiBwcmludCBhYnNvbHV0ZSBiYm94IGluc3RlYWQgb2YgcmVsYXRpdmUKKyAg
ICAgICAgKGdldFRhZ05hbWUpOiByZW1vdmVkIEtTVkc6OgorICAgICAgICAod3JpdGVSZW5kZXJS
ZXNvdXJjZXMpOiBhZGRlZAorICAgICAgICAqIGtjYW52YXMvS0NhbnZhc1RyZWVEZWJ1Zy5oOiBh
ZGRlZCB3cml0ZVJlbmRlclJlc291cmNlcworICAgICAgICAqIGtjYW52YXMvZGV2aWNlL0tSZW5k
ZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmNwcDoKKyAgICAgICAgKG9wZXJhdG9yPDwpOiBzdHls
ZSB1cGRhdGUKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1
YXJ0ei5tbToKKyAgICAgICAgKEtDYW52YXNGaWx0ZXJRdWFydHo6OmFwcGx5RmlsdGVyKTogZGVs
ZXRlIGZpbHRlciBjb250ZXh0CisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52
YXNJdGVtUXVhcnR6Lm1tOgorICAgICAgICAoS0NhbnZhc0l0ZW1RdWFydHo6OnBhaW50KTogb25s
eSBwdXNoIGNvbnRleHQgaWYgbmVjZXNzYXJ5CisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L0tDYW52YXNSZXNvdXJjZXNRdWFydHoubW06CisgICAgICAgIChLQ2FudmFzQ29udGFpbmVy
UXVhcnR6OjpwYWludCk6IG9ubHkgcHVzaCBjb250ZXh0IGlmIG5lY2Vzc2FyeQorICAgICAgICAq
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0
ei5tbToKKyAgICAgICAgKGRyYXdTaGFkaW5nV2l0aFN0eWxlKTogdXNlIFFQYWludGVyCisgICAg
ICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5t
bToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlclNvbGlkUXVhcnR6OjpkcmF3KTogc3Bh
Y2luZyBjbGVhbnVwCisgICAgICAgICoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9jYW52YXMuY3Bw
OiByZW1vdmUgcmVuZGVyaW5nRGV2aWNlKCkKKyAgICAgICAgKFJlbmRlckNhbnZhczo6UmVuZGVy
Q2FudmFzKTogcmVtb3ZlIG1fcmVuZGVyaW5nRGV2aWNlCisgICAgICAgIChSZW5kZXJDYW52YXM6
On5SZW5kZXJDYW52YXMpOiByZW1vdmUgbV9yZW5kZXJpbmdEZXZpY2UKKyAgICAgICAgKiBraHRt
bC9yZW5kZXJpbmcvcmVuZGVyX2NhbnZhcy5oOgorICAgICAgICAqIGtodG1sL3JlbmRlcmluZy9y
ZW5kZXJfc3R5bGUuY3BwOgorICAgICAgICAoUmVuZGVyU3R5bGU6On5SZW5kZXJTdHlsZSk6IGRl
bGV0ZSBTVkdSZW5kZXJTdHlsZQorICAgICAgICAqIGtzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZS5j
cHA6CisgICAgICAgIChTVkdSZW5kZXJTdHlsZTo6flNWR1JlbmRlclN0eWxlKTogYWRkZWQKKyAg
ICAgICAgKiBrc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHA6CisgICAgICAgIChL
Q2FudmFzUmVuZGVyaW5nU3R5bGU6OktDYW52YXNSZW5kZXJpbmdTdHlsZSk6IHJlbW92ZSBjYW52
YXMgYXJnCisgICAgICAgIChLQ2FudmFzUmVuZGVyaW5nU3R5bGU6OnVwZGF0ZUZpbGwpOiB1c2Ug
UVBhaW50ZXIKKyAgICAgICAgKEtDYW52YXNSZW5kZXJpbmdTdHlsZTo6dXBkYXRlU3Ryb2tlKTog
dXNlIFFQYWludGVyCisgICAgICAgICoga3N2ZzIvbWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5bGUu
aDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQUVsZW1lbnRJbXBsLmNwcDoKKyAgICAgICAgKFNW
R0FFbGVtZW50SW1wbDo6Y3JlYXRlUmVuZGVyZXIpOiB1c2UgUVBhaW50ZXIKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50SW1wbC5jcHA6CisgICAgICAgIChTVkdDbGlwUGF0
aEVsZW1lbnRJbXBsOjp+U1ZHQ2xpcFBhdGhFbGVtZW50SW1wbCk6IGRlbGV0ZSByZXNvdXJjZQor
ICAgICAgICAoU1ZHQ2xpcFBhdGhFbGVtZW50SW1wbDo6Y2FudmFzUmVzb3VyY2UpOiB1c2UgUVBh
aW50ZXIKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVCbGVuZEVsZW1lbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFNWR0ZFQmxlbmRFbGVtZW50SW1wbDo6flNWR0ZFQmxlbmRFbGVtZW50SW1wbCk6IGRl
bGV0ZSByZXNvdXJjZQorICAgICAgICAoU1ZHRkVCbGVuZEVsZW1lbnRJbXBsOjpmaWx0ZXJFZmZl
Y3QpOiB1c2UgUVBhaW50ZXIKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnRJbXBsLmNwcDoKKyAgICAgICAgKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50SW1wbDo6flNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50SW1wbCk6CisgICAgICAgIChTVkdGRUNvbG9yTWF0cml4RWxl
bWVudEltcGw6OmZpbHRlckVmZmVjdCk6IHVzZSBRUGFpbnRlcgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudEltcGwuY3BwOgorICAgICAgICAoU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnRJbXBsOjp+U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnRJbXBsKToKKyAgICAgICAgKFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50SW1wbDo6Zmls
dGVyRWZmZWN0KTogIHVzZSBRUGFpbnRlcgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnRJbXBsLmNwcDoKKyAgICAgICAgKFNWR0ZFQ29tcG9zaXRlRWxlbWVudEltcGw6
On5TVkdGRUNvbXBvc2l0ZUVsZW1lbnRJbXBsKTogZGVsZXRlIHJzYworICAgICAgICAoU1ZHRkVD
b21wb3NpdGVFbGVtZW50SW1wbDo6ZmlsdGVyRWZmZWN0KTogdXNlIFFQYWludGVyCisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50SW1wbC5jcHA6CisgICAgICAgIChTVkdGRUZs
b29kRWxlbWVudEltcGw6On5TVkdGRUZsb29kRWxlbWVudEltcGwpOiBkZWxldGUgcmVzb3VyY2UK
KyAgICAgICAgKFNWR0ZFRmxvb2RFbGVtZW50SW1wbDo6ZmlsdGVyRWZmZWN0KTogdXNlIFFQYWlu
dGVyCisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudEltcGwuY3Bw
OgorICAgICAgICAoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50SW1wbDo6flNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudEltcGwpOgorICAgICAgICAoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50SW1wbDo6
ZmlsdGVyRWZmZWN0KTogIHVzZSBRUGFpbnRlcgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudEltcGwuY3BwOgorICAgICAgICAoU1ZHRkVJbWFnZUVsZW1lbnRJbXBsOjp+U1ZH
RkVJbWFnZUVsZW1lbnRJbXBsKTogZGVsZXRlIHJlc291cmNlCisgICAgICAgIChTVkdGRUltYWdl
RWxlbWVudEltcGw6OmZpbHRlckVmZmVjdCk6IHVzZSBRUGFpbnRlcgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdGRU1lcmdlRWxlbWVudEltcGwuY3BwOgorICAgICAgICAoU1ZHRkVNZXJnZUVsZW1l
bnRJbXBsOjp+U1ZHRkVNZXJnZUVsZW1lbnRJbXBsKTogZGVsZXRlIHJlc291cmNlCisgICAgICAg
IChTVkdGRU1lcmdlRWxlbWVudEltcGw6OmZpbHRlckVmZmVjdCk6IHVzZSBRUGFpbnRlcgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnRJbXBsLmNwcDoKKyAgICAgICAgKFNW
R0ZFT2Zmc2V0RWxlbWVudEltcGw6On5TVkdGRU9mZnNldEVsZW1lbnRJbXBsKTogZGVsZXRlIHJl
c291cmNlCisgICAgICAgIChTVkdGRU9mZnNldEVsZW1lbnRJbXBsOjpmaWx0ZXJFZmZlY3QpOiB1
c2UgUVBhaW50ZXIKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVUaWxlRWxlbWVudEltcGwuY3Bw
OgorICAgICAgICAoU1ZHRkVUaWxlRWxlbWVudEltcGw6On5TVkdGRVRpbGVFbGVtZW50SW1wbCk6
IGRlbGV0ZSByZXNvdXJjZQorICAgICAgICAoU1ZHRkVUaWxlRWxlbWVudEltcGw6OmZpbHRlckVm
ZmVjdCk6IHVzZSBRUGFpbnRlcgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRVR1cmJ1bGVuY2VF
bGVtZW50SW1wbC5jcHA6CisgICAgICAgIChTVkdGRVR1cmJ1bGVuY2VFbGVtZW50SW1wbDo6flNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnRJbXBsKToKKyAgICAgICAgKFNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnRJbXBsOjpmaWx0ZXJFZmZlY3QpOiB1c2UgUVBhaW50ZXIKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHRmlsdGVyRWxlbWVudEltcGwuY3BwOgorICAgICAgICAoU1ZHRmlsdGVyRWxlbWVudEltcGw6
On5TVkdGaWx0ZXJFbGVtZW50SW1wbCk6IGRlbGV0ZSByZXNvdXJjZQorICAgICAgICAoU1ZHRmls
dGVyRWxlbWVudEltcGw6OmNhbnZhc1Jlc291cmNlKTogdXNlIFFQYWludGVyCisgICAgICAgICog
a3N2ZzIvc3ZnL1NWR0dFbGVtZW50SW1wbC5jcHA6CisgICAgICAgIChTVkdHRWxlbWVudEltcGw6
OmNyZWF0ZVJlbmRlcmVyKTogdXNlIFFQYWludGVyCisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0dy
YWRpZW50RWxlbWVudEltcGwuY3BwOgorICAgICAgICAoU1ZHR3JhZGllbnRFbGVtZW50SW1wbDo6
flNWR0dyYWRpZW50RWxlbWVudEltcGwpOiBkZWxldGUgcmVzb3VyY2UKKyAgICAgICAgKFNWR0dy
YWRpZW50RWxlbWVudEltcGw6OmNhbnZhc1Jlc291cmNlKTogdXNlIFFQYWludGVyCisgICAgICAg
IChTVkdHcmFkaWVudEVsZW1lbnRJbXBsOjpyZWJ1aWxkU3RvcHMpOiBkZXJlZiBzdHlsZQorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnRJbXBsLmNwcDoKKyAgICAgICAgKFNWR0lt
YWdlRWxlbWVudEltcGw6OmNyZWF0ZVJlbmRlcmVyKTogdXNlIFFQYWludGVyCisgICAgICAgIChT
VkdJbWFnZUVsZW1lbnRJbXBsOjpub3RpZnlGaW5pc2hlZCk6IHVzZSBRUGFpbnRlcgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50SW1wbC5jcHA6CisgICAgICAgIChTVkdNYXJr
ZXJFbGVtZW50SW1wbDo6flNWR01hcmtlckVsZW1lbnRJbXBsKTogZGVsZXRlIHJlc291cmNlCisg
ICAgICAgIChTVkdNYXJrZXJFbGVtZW50SW1wbDo6Y2FudmFzUmVzb3VyY2UpOiB1c2UgUVBhaW50
ZXIKKyAgICAgICAgKFNWR01hcmtlckVsZW1lbnRJbXBsOjpjcmVhdGVSZW5kZXJlcik6IHVzZSBR
UGFpbnRlcgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudEltcGwuY3BwOgor
ICAgICAgICAoU1ZHUGF0dGVybkVsZW1lbnRJbXBsOjp+U1ZHUGF0dGVybkVsZW1lbnRJbXBsKTog
ZGVsZXRlIHJlc291cmNlCisgICAgICAgIChTVkdQYXR0ZXJuRWxlbWVudEltcGw6OmRyYXdQYXR0
ZXJuQ29udGVudEludG9UaWxlKTogdXNlIFFQYWludGVyCisgICAgICAgIChTVkdQYXR0ZXJuRWxl
bWVudEltcGw6OmNyZWF0ZVJlbmRlcmVyKTogdXNlIFFQYWludGVyCisgICAgICAgIChTVkdQYXR0
ZXJuRWxlbWVudEltcGw6OmNhbnZhc1Jlc291cmNlKTogdXNlIFFQYWludGVyCisgICAgICAgICog
a3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmNwcDoKKyAgICAgICAgKFNWR1NWR0VsZW1lbnRJ
bXBsOjpjcmVhdGVSZW5kZXJlcik6IHVzZSBRUGFpbnRlcgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdTdHlsZWRFbGVtZW50SW1wbC5jcHA6CisgICAgICAgIChTVkdTdHlsZWRFbGVtZW50SW1wbDo6
Y3JlYXRlUmVuZGVyZXIpOiB1c2UgUVBhaW50ZXIKKyAgICAgICAgKFNWR1N0eWxlZEVsZW1lbnRJ
bXBsOjp1cGRhdGVDYW52YXNJdGVtKTogdXNlIFFQYWludGVyCisgICAgICAgIChTVkdTdHlsZWRF
bGVtZW50SW1wbDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQpOiB1c2UgUVBhaW50ZXIKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHU3dpdGNoRWxlbWVudEltcGwuY3BwOgorICAgICAgICAoU1ZHU3dpdGNo
RWxlbWVudEltcGw6OmNyZWF0ZVJlbmRlcmVyKTogdXNlIFFQYWludGVyCisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR1VzZUVsZW1lbnRJbXBsLmNwcDoKKyAgICAgICAgKFNWR1VzZUVsZW1lbnRJbXBs
OjpjcmVhdGVSZW5kZXJlcik6IHVzZSBRUGFpbnRlcgorICAgICAgICAqIGt3cS9LV1FQYWludGVy
Lmg6CisgICAgICAgICoga3dxL0tXUVBhaW50ZXIubW06CisgICAgICAgIChRUGFpbnRlcjo6cmVu
ZGVyaW5nRGV2aWNlKTogYWRkZWQKKyAgICAgICAgKiBrd3EvS1dRUmVuZGVyVHJlZURlYnVnLmNw
cDoKKyAgICAgICAgKGV4dGVybmFsUmVwcmVzZW50YXRpb24pOiBjYWxsIHdyaXRlUmVuZGVyUmVz
b3VyY2VzCisKKzIwMDUtMTEtMjYgIEVyaWMgU2VpZGVsICA8ZXNlaWRlbEBhcHBsZS5jb20+CisK
ICAgICAgICAgUmV2aWV3ZWQgYnkgbWpzLgogCiAgICAgICAgIEZpeCBzdXBwb3J0IGZvciA8c3dp
dGNoPjoKSW5kZXg6IGtjYW52YXMvS0NhbnZhc0l0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvS0NhbnZhc0l0ZW0uY3BwLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjgKZGlmZiAtcCAtdSAtcjEuOCBrY2FudmFzL0tDYW52YXNJdGVtLmNwcAot
LS0ga2NhbnZhcy9LQ2FudmFzSXRlbS5jcHAJMjMgTm92IDIwMDUgMTU6MTQ6MDUgLTAwMDAJMS44
CisrKyBrY2FudmFzL0tDYW52YXNJdGVtLmNwcAkyNiBOb3YgMjAwNSAyMzozNTo0MyAtMDAwMApA
QCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgPHFyZWN0Lmg+
CiAjaW5jbHVkZSA8a2RlYnVnLmg+CisjaW5jbHVkZSA8a3htbGNvcmUvQXNzZXJ0aW9ucy5oPgog
CiAjaW5jbHVkZSAia2NhbnZhcy9LQ2FudmFzLmgiCiAjaW5jbHVkZSAia2NhbnZhcy9SZW5kZXJQ
YXRoLmgiCkBAIC02MSwxMyArNjIsMTMgQEAgcHVibGljOgogUmVuZGVyUGF0aDo6UmVuZGVyUGF0
aChraHRtbDo6UmVuZGVyU3R5bGUgKnN0eWxlLCBLU1ZHOjpTVkdTdHlsZWRFbGVtZW50SW1wbCAq
bm9kZSkgOiBSZW5kZXJPYmplY3QoKERPTTo6Tm9kZUltcGwgKilub2RlKSwgZChuZXcgUHJpdmF0
ZSgpKQogewogICAgIFFfQVNTRVJUKHN0eWxlICE9IDApOwotICAgIGQtPnN0eWxlID0gbmV3IEtT
Vkc6OktDYW52YXNSZW5kZXJpbmdTdHlsZShjYW52YXMoKSwgc3R5bGUpOworICAgIGQtPnN0eWxl
ID0gbmV3IEtTVkc6OktDYW52YXNSZW5kZXJpbmdTdHlsZShzdHlsZSk7CiB9CiAKIFJlbmRlclBh
dGg6On5SZW5kZXJQYXRoKCkKIHsKLSAgICBpZihkLT5wYXRoICYmIGNhbnZhcygpICYmIGNhbnZh
cygpLT5yZW5kZXJpbmdEZXZpY2UoKSkKLSAgICAgICAgY2FudmFzKCktPnJlbmRlcmluZ0Rldmlj
ZSgpLT5kZWxldGVQYXRoKGQtPnBhdGgpOworICAgIGlmKGQtPnBhdGgpCisgICAgICAgIFFQYWlu
dGVyOjpyZW5kZXJpbmdEZXZpY2UoKS0+ZGVsZXRlUGF0aChkLT5wYXRoKTsKICAgICBkZWxldGUg
ZDsKIH0KIApAQCAtODksNyArOTAsNyBAQCB2b2lkIFJlbmRlclBhdGg6OnNldExvY2FsVHJhbnNm
b3JtKGNvbnN0CiAKIGJvb2wgUmVuZGVyUGF0aDo6ZmlsbENvbnRhaW5zKGNvbnN0IFFQb2ludCAm
cCkgY29uc3QKIHsKLSAgICBpZihkLT5wYXRoICYmIGQtPnN0eWxlICYmIGNhbnZhcygpICYmIGNh
bnZhcygpLT5yZW5kZXJpbmdEZXZpY2UoKSkKKyAgICBpZihkLT5wYXRoICYmIGQtPnN0eWxlKQog
ICAgICAgICByZXR1cm4gaGl0c1BhdGgocCwgdHJ1ZSk7CiAKICAgICByZXR1cm4gZmFsc2U7CkBA
IC05Nyw3ICs5OCw3IEBAIGJvb2wgUmVuZGVyUGF0aDo6ZmlsbENvbnRhaW5zKGNvbnN0IFFQb2kK
IAogYm9vbCBSZW5kZXJQYXRoOjpzdHJva2VDb250YWlucyhjb25zdCBRUG9pbnQgJnApIGNvbnN0
CiB7Ci0gICAgaWYoZC0+cGF0aCAmJiBkLT5zdHlsZSAmJiBjYW52YXMoKSAmJiBjYW52YXMoKS0+
cmVuZGVyaW5nRGV2aWNlKCkpCisgICAgaWYoZC0+cGF0aCAmJiBkLT5zdHlsZSkKICAgICAgICAg
cmV0dXJuIGhpdHNQYXRoKHAsIGZhbHNlKTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNyw3
ICsxMDgsNyBAQCBRUmVjdCBSZW5kZXJQYXRoOjpyZWxhdGl2ZUJCb3goYm9vbCBpbmNsCiB7CiAg
ICAgUVJlY3QgcmVzdWx0OwogICAgIAotICAgIGlmICghZC0+cGF0aCB8fCAhY2FudmFzKCkgfHwg
IWNhbnZhcygpLT5yZW5kZXJpbmdEZXZpY2UoKSkKKyAgICBpZiAoIWQtPnBhdGgpCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKICAgICBpZiAoaW5jbHVkZVN0cm9rZSkgewpAQCAtMTI1LDcgKzEy
Niw3IEBAIFFSZWN0IFJlbmRlclBhdGg6OnJlbGF0aXZlQkJveChib29sIGluY2wKIAogdm9pZCBS
ZW5kZXJQYXRoOjpzZXR1cEZvckRyYXcoKSBjb25zdAogewotICAgIGlmKGQtPnBhdGggJiYgZC0+
c3R5bGUgJiYgY2FudmFzKCkgJiYgY2FudmFzKCktPnJlbmRlcmluZ0RldmljZSgpKQorICAgIGlm
KGQtPnBhdGggJiYgZC0+c3R5bGUpCiAgICAgewogICAgICAgICBpZihkLT5zdHlsZS0+ZmlsbFBh
aW50ZXIoKSAmJiBkLT5zdHlsZS0+ZmlsbFBhaW50ZXIoKS0+cGFpbnRTZXJ2ZXIoKSkKICAgICAg
ICAgICAgIGQtPnN0eWxlLT5maWxsUGFpbnRlcigpLT5wYWludFNlcnZlcigpLT5zZXRBY3RpdmVD
bGllbnQodGhpcyk7CkBAIC0xMzcsMTQgKzEzOCwxMiBAQCB2b2lkIFJlbmRlclBhdGg6OnNldHVw
Rm9yRHJhdygpIGNvbnN0CiAKIHZvaWQgUmVuZGVyUGF0aDo6Y2hhbmdlUGF0aChLQ2FudmFzVXNl
ckRhdGEgbmV3UGF0aCkKIHsKLSAgICBpZihjYW52YXMoKSAmJiBjYW52YXMoKS0+cmVuZGVyaW5n
RGV2aWNlKCkpCi0gICAgewotICAgICAgICBjYW52YXMoKS0+cmVuZGVyaW5nRGV2aWNlKCktPnNl
dEN1cnJlbnRQYXRoKG5ld1BhdGgpOwotICAgICAgICBpZiAoZC0+cGF0aCkKLSAgICAgICAgICAg
IGNhbnZhcygpLT5yZW5kZXJpbmdEZXZpY2UoKS0+ZGVsZXRlUGF0aChkLT5wYXRoKTsKKyAgICBB
U1NFUlQobmV3UGF0aCk7CisgICAgUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpLT5zZXRDdXJy
ZW50UGF0aChuZXdQYXRoKTsKKyAgICBpZiAoZC0+cGF0aCkKKyAgICAgICAgUVBhaW50ZXI6OnJl
bmRlcmluZ0RldmljZSgpLT5kZWxldGVQYXRoKGQtPnBhdGgpOwogCi0gICAgICAgIGQtPnBhdGgg
PSBuZXdQYXRoOwotICAgIH0KKyAgICBkLT5wYXRoID0gbmV3UGF0aDsKIH0KIAogS0NhbnZhc1Vz
ZXJEYXRhIFJlbmRlclBhdGg6OnBhdGgoKSBjb25zdApJbmRleDoga2NhbnZhcy9LQ2FudmFzVHJl
ZURlYnVnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2Fu
dmFzL0tDYW52YXNUcmVlRGVidWcuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjkKZGlmZiAt
cCAtdSAtcjEuOSBrY2FudmFzL0tDYW52YXNUcmVlRGVidWcuY3BwCi0tLSBrY2FudmFzL0tDYW52
YXNUcmVlRGVidWcuY3BwCTIzIE5vdiAyMDA1IDE1OjE0OjA2IC0wMDAwCTEuOQorKysga2NhbnZh
cy9LQ2FudmFzVHJlZURlYnVnLmNwcAkyNiBOb3YgMjAwNSAyMzozNTo0NCAtMDAwMApAQCAtNDYs
MTAgKzQ2LDE0IEBACiAjaW5jbHVkZSAiS1dRUmVuZGVyVHJlZURlYnVnLmgiCiAjZW5kaWYKIAor
I2luY2x1ZGUgPGt4bWxjb3JlL0Fzc2VydGlvbnMuaD4KKwogI2luY2x1ZGUgIlNWR1JlbmRlclN0
eWxlLmgiCiAjaW5jbHVkZSA8a3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnRJbXBsLmg+CiAKICNp
bmNsdWRlIDxrZG9tL0RPTVN0cmluZy5oPgorI2luY2x1ZGUgImRvbV9hdG9taWNzdHJpbmcuaCIK
KyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKIAogI2luY2x1ZGUgPHF0ZXh0c3RyZWFtLmg+CiAKQEAg
LTI0NywxOCArMjUxLDE4IEBAIHN0YXRpYyB2b2lkIHdyaXRlU3R5bGUoUVRleHRTdHJlYW0gJnRz
LCAKIAogc3RhdGljIFFUZXh0U3RyZWFtICZvcGVyYXRvcjw8KFFUZXh0U3RyZWFtICZ0cywgY29u
c3QgUmVuZGVyUGF0aCAmbykKIHsKLSAgICB0cyA8PCAiICIgPDwgby5yZWxhdGl2ZUJCb3goKTsK
KyAgICB0cyA8PCAiICIgPDwgby5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3Qoby5yZWxhdGl2
ZUJCb3goKSk7CiAgICAgCiAgICAgd3JpdGVTdHlsZSh0cywgbyk7CiAgICAgCi0gICAgdHMgPDwg
IiBbZGF0YT1cIiIgPDwgby5jYW52YXMoKS0+cmVuZGVyaW5nRGV2aWNlKCktPnN0cmluZ0ZvclBh
dGgoby5wYXRoKCkpIDw8ICJcIl0iOworICAgIHRzIDw8ICIgW2RhdGE9XCIiIDw8IFFQYWludGVy
OjpyZW5kZXJpbmdEZXZpY2UoKS0+c3RyaW5nRm9yUGF0aChvLnBhdGgoKSkgPDwgIlwiXSI7CiAg
ICAgCiAgICAgcmV0dXJuIHRzOwogfQogCiBzdGF0aWMgUVRleHRTdHJlYW0gJm9wZXJhdG9yPDwo
UVRleHRTdHJlYW0gJnRzLCBjb25zdCBLQ2FudmFzQ29udGFpbmVyICZvKQogewotICAgIHRzIDw8
ICIgIiA8PCBvLnJlbGF0aXZlQkJveCgpOworICAgIHRzIDw8ICIgIiA8PCBvLmFic29sdXRlVHJh
bnNmb3JtKCkubWFwUmVjdChvLnJlbGF0aXZlQkJveCgpKTsKICAgICAKICAgICB3cml0ZVN0eWxl
KHRzLCBvKTsKICAgICAKQEAgLTI2Nyw3ICsyNzEsNyBAQCBzdGF0aWMgUVRleHRTdHJlYW0gJm9w
ZXJhdG9yPDwoUVRleHRTdHJlCiAKIHN0YXRpYyBRU3RyaW5nIGdldFRhZ05hbWUodm9pZCAqbm9k
ZSkKIHsKLSAgICBLU1ZHOjpTVkdTdHlsZWRFbGVtZW50SW1wbCAqZWxlbSA9IHN0YXRpY19jYXN0
PEtTVkc6OlNWR1N0eWxlZEVsZW1lbnRJbXBsICo+KG5vZGUpOworICAgIFNWR1N0eWxlZEVsZW1l
bnRJbXBsICplbGVtID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudEltcGwgKj4obm9kZSk7
CiAgICAgaWYgKGVsZW0pCiAgICAgICAgIHJldHVybiBLRE9NOjpET01TdHJpbmcoZWxlbS0+bm9k
ZU5hbWUoKSkucXN0cmluZygpOwogICAgIHJldHVybiBRU3RyaW5nKCk7CkBAIC0zMDQsNiArMzA4
LDMwIEBAIHZvaWQgd3JpdGUoUVRleHRTdHJlYW0gJnRzLCBjb25zdCBSZW5kZXIKICAgICB0cyA8
PCBwYXRoIDw8IGVuZGw7CiB9CiAKK3ZvaWQgd3JpdGVSZW5kZXJSZXNvdXJjZXMoUVRleHRTdHJl
YW0gJnRzLCBLRE9NOjpOb2RlSW1wbCAqcGFyZW50KQoreworICAgIEFTU0VSVChwYXJlbnQpOwor
ICAgIEtET006Ok5vZGVJbXBsICpub2RlID0gcGFyZW50OworICAgIGRvIHsKKyAgICAgICAgaWYg
KCFub2RlLT5pc1NWR0VsZW1lbnQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBT
VkdFbGVtZW50SW1wbCAqc3ZnRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnRJbXBsICo+
KG5vZGUpOworICAgICAgICBpZiAoIXN2Z0VsZW1lbnQtPmlzU3R5bGVkKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBTVkdTdHlsZWRFbGVtZW50SW1wbCAqc3R5bGVkID0gc3Rh
dGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudEltcGwgKj4oc3ZnRWxlbWVudCk7CisgICAgICAgIEtD
YW52YXNSZXNvdXJjZSAqcmVzb3VyY2UgPSBzdHlsZWQtPmNhbnZhc1Jlc291cmNlKCk7CisgICAg
ICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAg
ICAgIFFTdHJpbmcgZWxlbWVudElkID0gc3ZnRWxlbWVudC0+Z2V0QXR0cmlidXRlKERPTTo6SFRN
TE5hbWVzOjppZEF0dHIpLnFzdHJpbmcoKTsKKyAgICAgICAgaWYgKHJlc291cmNlLT5pc1BhaW50
U2VydmVyKCkpCisgICAgICAgICAgICB0cyA8PCAiS1JlbmRlcmluZ1BhaW50U2VydmVyIHtpZD1c
IiIgPDwgZWxlbWVudElkIDw8ICJcIiAiIDw8ICpzdGF0aWNfY2FzdDxLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXIgKj4ocmVzb3VyY2UpIDw8ICJ9IiA8PCBlbmRsOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICB0cyA8PCAiS0NhbnZhc1Jlc291cmNlIHtpZD1cIiIgPDwgZWxlbWVudElkIDw8ICJcIiAi
IDw8ICpyZXNvdXJjZSA8PCAifSIgPDwgZW5kbDsKKyAgICB9IHdoaWxlICgobm9kZSA9IG5vZGUt
PnRyYXZlcnNlTmV4dE5vZGUocGFyZW50KSkpOworfQorCiBRVGV4dFN0cmVhbSAmb3BlcmF0b3I8
PChRVGV4dFN0cmVhbSAmdHMsIGNvbnN0IFFTdHJpbmdMaXN0ICZsKQogewogICAgIHRzIDw8ICJb
IjsKSW5kZXg6IGtjYW52YXMvS0NhbnZhc1RyZWVEZWJ1Zy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvS0NhbnZhc1RyZWVEZWJ1Zy5oLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrY2FudmFzL0tDYW52YXNUcmVlRGVi
dWcuaAotLS0ga2NhbnZhcy9LQ2FudmFzVHJlZURlYnVnLmgJMjEgTm92IDIwMDUgMDg6Mjk6MTEg
LTAwMDAJMS40CisrKyBrY2FudmFzL0tDYW52YXNUcmVlRGVidWcuaAkyNiBOb3YgMjAwNSAyMzoz
NTo0NCAtMDAwMApAQCAtMzgsOSArMzgsMTQgQEAgY2xhc3MgS0NQYXRoRGF0YTsKIGNsYXNzIFJl
bmRlclBhdGg7CiBjbGFzcyBLQ2FudmFzQ29udGFpbmVyOwogCituYW1lc3BhY2UgS0RPTSB7Cisg
ICAgY2xhc3MgTm9kZUltcGw7Cit9CisKIC8vIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBtYWluIEtX
UVJlbmRlclRyZWVEZWJ1ZyBjb2RlCiB2b2lkIHdyaXRlKFFUZXh0U3RyZWFtICZ0cywgY29uc3Qg
S0NhbnZhc0NvbnRhaW5lciAmY29udGFpbmVyLCBpbnQgaW5kZW50ID0gMCk7CiB2b2lkIHdyaXRl
KFFUZXh0U3RyZWFtICZ0cywgY29uc3QgUmVuZGVyUGF0aCAmcGF0aCwgaW50IGluZGVudCA9IDAp
Owordm9pZCB3cml0ZVJlbmRlclJlc291cmNlcyhRVGV4dFN0cmVhbSAmdHMsIEtET006Ok5vZGVJ
bXBsICpwYXJlbnQpOwogCiAvLyBoZWxwZXIgb3BlcmF0b3JzIGRlZmluZWQgdXNlZCBpbiB2YXJp
b3VzIGNsYXNzZXMgdG8gZHVtcCB0aGUgcmVuZGVyIHRyZWUuIAogUVRleHRTdHJlYW0gJm9wZXJh
dG9yPDwoUVRleHRTdHJlYW0gJnRzLCBjb25zdCBRTWF0cml4ICYpOwpJbmRleDoga2NhbnZhcy9k
ZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNl
cnZlckdyYWRpZW50LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44CmRpZmYgLXAgLXUgLXIx
Ljgga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuY3BwCi0tLSBr
Y2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHAJMjEgTm92IDIw
MDUgMDg6Mjk6MTQgLTAwMDAJMS44CisrKyBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJHcmFkaWVudC5jcHAJMjYgTm92IDIwMDUgMjM6MzU6NDQgLTAwMDAKQEAgLTgxLDcgKzgx
LDggQEAgUVRleHRTdHJlYW0gJm9wZXJhdG9yPDwoUVRleHRTdHJlYW0gJnRzLAogICAgIHsKICAg
ICAgICAgdHMgPDwgIigiIDw8ICgqaXQpLT5vZmZzZXQgPDwgIiwiIDw8ICgqaXQpLT5jb2xvciA8
PCAiKSI7CiAgICAgICAgICsraXQ7Ci0gICAgICAgIGlmICgqaXQpIHRzIDw8ICIsICI7CisgICAg
ICAgIGlmICgqaXQpCisgICAgICAgICAgICB0cyA8PCAiLCAiOwogICAgIH0KICAgICB0cyA8PCAi
XSI7CiAgICAgcmV0dXJuIHRzOwpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNG
aWx0ZXJRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQv
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0sdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMTUKZGlmZiAtcCAtdSAtcjEuMTUga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tD
YW52YXNGaWx0ZXJRdWFydHoubW0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmls
dGVyUXVhcnR6Lm1tCTI2IE5vdiAyMDA1IDIyOjI3OjA1IC0wMDAwCTEuMTUKKysrIGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lm1tCTI2IE5vdiAyMDA1IDIzOjM1OjQ1
IC0wMDAwCkBAIC05Myw4ICs5Myw4IEBAIHZvaWQgS0NhbnZhc0ZpbHRlclF1YXJ0ejo6YXBwbHlG
aWx0ZXIoS1IKICAgICBpZiAoIWJib3guaXNWYWxpZCgpIHx8ICFLUmVuZGVyaW5nRGV2aWNlUXVh
cnR6OjpmaWx0ZXJzRW5hYmxlZCgpIHx8IG1fZWZmZWN0cy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICAvLyByZXN0b3JlIHRoZSBwcmV2aW91cyBjb250ZXh0LgotICAgIGRl
dmljZS0+cG9wQ29udGV4dCgpOworICAgIC8vIHJlc3RvcmUgdGhlIHByZXZpb3VzIGNvbnRleHQs
IGRlbGV0ZSB0aGUgZmlsdGVyIGNvbnRleHQuCisgICAgZGVsZXRlIChkZXZpY2UtPnBvcENvbnRl
eHQoKSk7CiAKICAgICAvLyBhY3R1YWxseSBhcHBseSB0aGUgZmlsdGVyIGVmZmVjdHMKICAgICBD
SUltYWdlICppbnB1dEltYWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dMYXllcjptX2ZpbHRlckNH
TGF5ZXJdOwpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNl
L3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMApk
aWZmIC1wIC11IC1yMS4xMCBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0l0ZW1RdWFydHou
bW0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5tbQkyNiBOb3Yg
MjAwNSAyMjozNTo0MyAtMDAwMAkxLjEwCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZh
c0l0ZW1RdWFydHoubW0JMjYgTm92IDIwMDUgMjM6MzU6NDUgLTAwMDAKQEAgLTcxLDggKzcxLDEz
IEBAIHZvaWQgS0NhbnZhc0l0ZW1RdWFydHo6OnBhaW50KFBhaW50SW5mbyAKICAgICBpZiAocGFp
bnRJbmZvLnAtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50
QWN0aW9uRm9yZWdyb3VuZCkgfHwgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IGtodG1sOjpISURE
RU4pCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6ICpx
dWFydHpEZXZpY2UgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlUXVhcnR6ICo+KGNhbnZh
cygpLT5yZW5kZXJpbmdEZXZpY2UoKSk7Ci0gICAgcXVhcnR6RGV2aWNlLT5wdXNoQ29udGV4dChw
YWludEluZm8ucC0+Y3JlYXRlUmVuZGVyaW5nRGV2aWNlQ29udGV4dCgpKTsKKyAgICBLUmVuZGVy
aW5nRGV2aWNlUXVhcnR6ICpxdWFydHpEZXZpY2UgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2
aWNlUXVhcnR6ICo+KFFQYWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKSk7CisgICAgS1JlbmRlcmlu
Z0RldmljZUNvbnRleHQgKmRldmljZUNvbnRleHQgPSAwOworICAgIGlmICghcGFyZW50KCktPmlz
S0NhbnZhc0NvbnRhaW5lcigpKSB7CisgICAgICAgIC8vIEkgb25seSBuZWVkIHRvIHNldHVwIGZv
ciBLQ2FudmFzIHJlbmRlcmluZyBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVuIGRvbmUuCisgICAg
ICAgIGRldmljZUNvbnRleHQgPSBwYWludEluZm8ucC0+Y3JlYXRlUmVuZGVyaW5nRGV2aWNlQ29u
dGV4dCgpOworICAgICAgICBxdWFydHpEZXZpY2UtPnB1c2hDb250ZXh0KGRldmljZUNvbnRleHQp
OworICAgIH0KICAgICBwYWludEluZm8ucC0+c2F2ZSgpOwogICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gcXVhcnR6RGV2aWNlLT5jdXJyZW50Q0dDb250ZXh0KCk7CiAKQEAgLTEyMiw3ICsxMjcs
MTAgQEAgdm9pZCBLQ2FudmFzSXRlbVF1YXJ0ejo6cGFpbnQoUGFpbnRJbmZvIAogICAgIAogICAg
IC8vIHJlc3RvcmUgZHJhd2luZyBzdGF0ZQogICAgIHBhaW50SW5mby5wLT5yZXN0b3JlKCk7Ci0g
ICAgcXVhcnR6RGV2aWNlLT5wb3BDb250ZXh0KCk7CisgICAgaWYgKCFwYXJlbnQoKS0+aXNLQ2Fu
dmFzQ29udGFpbmVyKCkpIHsKKyAgICAgICAgcXVhcnR6RGV2aWNlLT5wb3BDb250ZXh0KCk7Cisg
ICAgICAgIGRlbGV0ZSBkZXZpY2VDb250ZXh0OworICAgIH0KIH0KIAogI3ByYWdtYSBtYXJrIC0K
SW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzUmVzb3VyY2VzUXVhcnR6Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL3F1
YXJ0ei9LQ2FudmFzUmVzb3VyY2VzUXVhcnR6Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjkK
ZGlmZiAtcCAtdSAtcjEuOSBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc1Jlc291cmNlc1F1
YXJ0ei5tbQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNSZXNvdXJjZXNRdWFydHou
bW0JMjYgTm92IDIwMDUgMjI6Mjc6MDUgLTAwMDAJMS45CisrKyBrY2FudmFzL2RldmljZS9xdWFy
dHovS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5tbQkyNiBOb3YgMjAwNSAyMzozNTo0NSAtMDAwMApA
QCAtMTA4LDE1ICsxMDgsMjAgQEAgdm9pZCBLQ2FudmFzQ29udGFpbmVyUXVhcnR6OjpwYWludChQ
YWludAogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRBY3Rpb25PdXRsaW5lICYmIHN0
eWxlKCktPm91dGxpbmVXaWR0aCgpICYmIHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBraHRtbDo6
VklTSUJMRSkKICAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5wLCBhYnNvbHV0ZVgsIGFi
c29sdXRlWSwgd2lkdGgoKSwgaGVpZ2h0KCksIHN0eWxlKCkpOwogICAgIAotICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRBY3Rpb25Gb3JlZ3JvdW5kIHx8ICFkcmF3c0NvbnRlbnRzKCkp
CisgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludEFjdGlvbkZvcmVncm91bmQgfHwgIWRy
YXdzQ29udGVudHMoKSB8fCBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0ga2h0bWw6OkhJRERFTikK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIEtDYW52YXNGaWx0ZXIgKmZpbHRlciA9IGdldEZp
bHRlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsdGVyKCkubWlkKDEp
KTsKICAgICBpZiAoIWZpcnN0Q2hpbGQoKSAmJiAhZmlsdGVyKQogICAgICAgICByZXR1cm47IC8v
IFNwZWM6IGdyb3VwcyB3L28gY2hpbGRyZW4gc3RpbGwgbWF5IHJlbmRlciBmaWx0ZXIgY29udGVu
dC4KICAgICAKLSAgICBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6ICpxdWFydHpEZXZpY2UgPSBzdGF0
aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlUXVhcnR6ICo+KGNhbnZhcygpLT5yZW5kZXJpbmdEZXZp
Y2UoKSk7Ci0gICAgcXVhcnR6RGV2aWNlLT5wdXNoQ29udGV4dChwYWludEluZm8ucC0+Y3JlYXRl
UmVuZGVyaW5nRGV2aWNlQ29udGV4dCgpKTsKKyAgICBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6ICpx
dWFydHpEZXZpY2UgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlUXVhcnR6ICo+KFFQYWlu
dGVyOjpyZW5kZXJpbmdEZXZpY2UoKSk7CisgICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHQgKmRl
dmljZUNvbnRleHQgPSAwOworICAgIGlmICghcGFyZW50KCktPmlzS0NhbnZhc0NvbnRhaW5lcigp
KSB7CisgICAgICAgIC8vIEkgb25seSBuZWVkIHRvIHNldHVwIGZvciBLQ2FudmFzIHJlbmRlcmlu
ZyBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVuIGRvbmUuCisgICAgICAgIGRldmljZUNvbnRleHQg
PSBwYWludEluZm8ucC0+Y3JlYXRlUmVuZGVyaW5nRGV2aWNlQ29udGV4dCgpOworICAgICAgICBx
dWFydHpEZXZpY2UtPnB1c2hDb250ZXh0KGRldmljZUNvbnRleHQpOworICAgIH0KICAgICBwYWlu
dEluZm8ucC0+c2F2ZSgpOwogICAgIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGFpbnRJ
bmZvLnAtPmN1cnJlbnRDb250ZXh0KCk7CkBAIC0xNTgsNyArMTYzLDEwIEBAIHZvaWQgS0NhbnZh
c0NvbnRhaW5lclF1YXJ0ejo6cGFpbnQoUGFpbnQKICAgICAKICAgICAvLyByZXN0b3JlIGRyYXdp
bmcgc3RhdGUKICAgICBwYWludEluZm8ucC0+cmVzdG9yZSgpOwotICAgIHF1YXJ0ekRldmljZS0+
cG9wQ29udGV4dCgpOworICAgIGlmICghcGFyZW50KCktPmlzS0NhbnZhc0NvbnRhaW5lcigpKSB7
CisgICAgICAgIHF1YXJ0ekRldmljZS0+cG9wQ29udGV4dCgpOworICAgICAgICBkZWxldGUgZGV2
aWNlQ29udGV4dDsKKyAgICB9CiB9CiAKIHZvaWQgS0NhbnZhc0NvbnRhaW5lclF1YXJ0ejo6c2V0
Vmlld3BvcnQoY29uc3QgUVJlY3QgJnZpZXdwb3J0KQpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ei5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44
CmRpZmYgLXAgLXUgLXIxLjgga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNl
cnZlckdyYWRpZW50UXVhcnR6Lm1tCi0tLSBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmlu
Z1BhaW50U2VydmVyR3JhZGllbnRRdWFydHoubW0JMjEgTm92IDIwMDUgMDg6Mjk6MTUgLTAwMDAJ
MS44CisrKyBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGll
bnRRdWFydHoubW0JMjYgTm92IDIwMDUgMjM6MzU6NDUgLTAwMDAKQEAgLTQyLDcgKzQyLDcgQEAK
IC8vIE1heWJlIHRoaXMgc2hvdWxkIGJlIGluIGEgYmFzZSBjbGFzcyBpbnN0ZWFkLi4uCiBzdGF0
aWMgdm9pZCBkcmF3U2hhZGluZ1dpdGhTdHlsZShjb25zdCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJH
cmFkaWVudCAqc2VydmVyLCBDR1NoYWRpbmdSZWYgc2hhZGluZywgS1NWRzo6S0NhbnZhc1JlbmRl
cmluZ1N0eWxlICpjYW52YXNTdHlsZSwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkKIHsKLSAgICBL
UmVuZGVyaW5nRGV2aWNlUXVhcnR6ICpxdWFydHpEZXZpY2UgPSBzdGF0aWNfY2FzdDxLUmVuZGVy
aW5nRGV2aWNlUXVhcnR6ICo+KHNlcnZlci0+YWN0aXZlQ2xpZW50KCktPmNhbnZhcygpLT5yZW5k
ZXJpbmdEZXZpY2UoKSk7CisgICAgS1JlbmRlcmluZ0RldmljZVF1YXJ0eiAqcXVhcnR6RGV2aWNl
ID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ0RldmljZVF1YXJ0eiAqPihRUGFpbnRlcjo6cmVuZGVy
aW5nRGV2aWNlKCkpOwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcXVhcnR6RGV2aWNlLT5j
dXJyZW50Q0dDb250ZXh0KCk7CiAgICAgQVNTRVJUKGNvbnRleHQgIT0gTlVMTCk7CiAgICAgCklu
ZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNl
L3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHoubW0sdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMTAKZGlmZiAtcCAtdSAtcjEuMTAga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJp
bmdQYWludFNlcnZlclF1YXJ0ei5tbQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJp
bmdQYWludFNlcnZlclF1YXJ0ei5tbQkyMyBOb3YgMjAwNSAxNToxNDowNyAtMDAwMAkxLjEwCisr
KyBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6Lm1tCTI2
IE5vdiAyMDA1IDIzOjM1OjQ1IC0wMDAwCkBAIC00MSwzNiArNDEsMzUgQEAKIAogdm9pZCBLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZFF1YXJ0ejo6ZHJhdyhLUmVuZGVyaW5nRGV2aWNlQ29udGV4
dCAqcmVuZGVyaW5nQ29udGV4dCwgY29uc3QgS0NhbnZhc0NvbW1vbkFyZ3MgJmFyZ3MsIEtDUGFp
bnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0CiB7Ci0JS1JlbmRlcmluZ0RldmljZUNvbnRleHRRdWFy
dHogKnF1YXJ0ekNvbnRleHQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF1
YXJ0eiAqPihyZW5kZXJpbmdDb250ZXh0KTsKLQlDR0NvbnRleHRSZWYgY29udGV4dCA9IHF1YXJ0
ekNvbnRleHQtPmNnQ29udGV4dCgpOwotCUtTVkc6OktDYW52YXNSZW5kZXJpbmdTdHlsZSAqY2Fu
dmFzU3R5bGUgPSBhcmdzLmNhbnZhc1N0eWxlKCk7Ci0JCi0gICAgICAgIENHQ29udGV4dFNldEFs
cGhhKGNvbnRleHQsIGNhbnZhc1N0eWxlLT5yZW5kZXJTdHlsZSgpLT5vcGFjaXR5KCkpOwotCQkK
LQlpZiAoICh0eXBlICYgQVBQTFlfVE9fRklMTCkgJiYgY2FudmFzU3R5bGUtPmlzRmlsbGVkKCkg
KSB7Ci0gICAgICAgICAgICBDR0NvbG9yUmVmIGNvbG9yQ0cgPSBjZ0NvbG9yKGNvbG9yKCkpOwot
CQlDR0NvbG9yUmVmIHdpdGhBbHBoYSA9IENHQ29sb3JDcmVhdGVDb3B5V2l0aEFscGhhKGNvbG9y
Q0csIGNhbnZhc1N0eWxlLT5maWxsUGFpbnRlcigpLT5vcGFjaXR5KCkpOwotCQlDR0NvbnRleHRT
ZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgd2l0aEFscGhhKTsKLQkJQ0dDb2xvclJlbGVh
c2UoY29sb3JDRyk7Ci0JCUNHQ29sb3JSZWxlYXNlKHdpdGhBbHBoYSk7Ci0JCWlmIChjYW52YXNT
dHlsZS0+ZmlsbFBhaW50ZXIoKS0+ZmlsbFJ1bGUoKSA9PSBSVUxFX0VWRU5PREQpIHsKLQkJCUNH
Q29udGV4dEVPRmlsbFBhdGgoY29udGV4dCk7Ci0JCX0gZWxzZSB7Ci0JCQlDR0NvbnRleHRGaWxs
UGF0aChjb250ZXh0KTsKLQkJfQotCX0KLQkKLQlpZiAoICh0eXBlICYgQVBQTFlfVE9fU1RST0tF
KSAmJiBjYW52YXNTdHlsZS0+aXNTdHJva2VkKCkgKSB7Ci0JCUNHQ29sb3JSZWYgY29sb3JDRyA9
IGNnQ29sb3IoY29sb3IoKSk7Ci0JCUNHQ29sb3JSZWYgd2l0aEFscGhhID0gQ0dDb2xvckNyZWF0
ZUNvcHlXaXRoQWxwaGEoY29sb3JDRywgY2FudmFzU3R5bGUtPnN0cm9rZVBhaW50ZXIoKS0+b3Bh
Y2l0eSgpKTsJCQotCQlDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCB3
aXRoQWxwaGEpOwotCQlDR0NvbG9yUmVsZWFzZShjb2xvckNHKTsKLQkJQ0dDb2xvclJlbGVhc2Uo
d2l0aEFscGhhKTsKLQkJCi0JCWFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoY29udGV4dCwgY2Fu
dmFzU3R5bGUpOwotCQkKLQkJQ0dDb250ZXh0U3Ryb2tlUGF0aChjb250ZXh0KTsKLQl9CisgICAg
S1JlbmRlcmluZ0RldmljZUNvbnRleHRRdWFydHogKnF1YXJ0ekNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF1YXJ0eiAqPihyZW5kZXJpbmdDb250ZXh0KTsKKyAg
ICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHF1YXJ0ekNvbnRleHQtPmNnQ29udGV4dCgpOworICAg
IEtTVkc6OktDYW52YXNSZW5kZXJpbmdTdHlsZSAqY2FudmFzU3R5bGUgPSBhcmdzLmNhbnZhc1N0
eWxlKCk7CisKKyAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCBjYW52YXNTdHlsZS0+cmVu
ZGVyU3R5bGUoKS0+b3BhY2l0eSgpKTsKKyAgICAgICAgCisgICAgaWYgKCAodHlwZSAmIEFQUExZ
X1RPX0ZJTEwpICYmIGNhbnZhc1N0eWxlLT5pc0ZpbGxlZCgpICkgeworICAgICAgICBDR0NvbG9y
UmVmIGNvbG9yQ0cgPSBjZ0NvbG9yKGNvbG9yKCkpOworICAgICAgICBDR0NvbG9yUmVmIHdpdGhB
bHBoYSA9IENHQ29sb3JDcmVhdGVDb3B5V2l0aEFscGhhKGNvbG9yQ0csIGNhbnZhc1N0eWxlLT5m
aWxsUGFpbnRlcigpLT5vcGFjaXR5KCkpOworICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JX
aXRoQ29sb3IoY29udGV4dCwgd2l0aEFscGhhKTsKKyAgICAgICAgQ0dDb2xvclJlbGVhc2UoY29s
b3JDRyk7CisgICAgICAgIENHQ29sb3JSZWxlYXNlKHdpdGhBbHBoYSk7CisgICAgICAgIGlmIChj
YW52YXNTdHlsZS0+ZmlsbFBhaW50ZXIoKS0+ZmlsbFJ1bGUoKSA9PSBSVUxFX0VWRU5PREQpCisg
ICAgICAgICAgICBDR0NvbnRleHRFT0ZpbGxQYXRoKGNvbnRleHQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBDR0NvbnRleHRGaWxsUGF0aChjb250ZXh0KTsKKyAgICB9CisKKyAgICBpZiAo
ICh0eXBlICYgQVBQTFlfVE9fU1RST0tFKSAmJiBjYW52YXNTdHlsZS0+aXNTdHJva2VkKCkgKSB7
CisgICAgICAgIENHQ29sb3JSZWYgY29sb3JDRyA9IGNnQ29sb3IoY29sb3IoKSk7CisgICAgICAg
IENHQ29sb3JSZWYgd2l0aEFscGhhID0gQ0dDb2xvckNyZWF0ZUNvcHlXaXRoQWxwaGEoY29sb3JD
RywgY2FudmFzU3R5bGUtPnN0cm9rZVBhaW50ZXIoKS0+b3BhY2l0eSgpKTsJCQorICAgICAgICBD
R0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCB3aXRoQWxwaGEpOworICAg
ICAgICBDR0NvbG9yUmVsZWFzZShjb2xvckNHKTsKKyAgICAgICAgQ0dDb2xvclJlbGVhc2Uod2l0
aEFscGhhKTsKKyAgICAgICAgCisgICAgICAgIGFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoY29u
dGV4dCwgY2FudmFzU3R5bGUpOworICAgICAgICAKKyAgICAgICAgQ0dDb250ZXh0U3Ryb2tlUGF0
aChjb250ZXh0KTsKKyAgICB9CiB9CiAKIApJbmRleDoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9j
YW52YXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL3Jl
bmRlcmluZy9yZW5kZXJfY2FudmFzLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zNgpkaWZm
IC1wIC11IC1yMS4zNiBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2NhbnZhcy5jcHAKLS0tIGtodG1s
L3JlbmRlcmluZy9yZW5kZXJfY2FudmFzLmNwcAkyMSBOb3YgMjAwNSAwNDowMTo1NSAtMDAwMAkx
LjM2CisrKyBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2NhbnZhcy5jcHAJMjYgTm92IDIwMDUgMjM6
MzU6NDYgLTAwMDAKQEAgLTczLDE3ICs3MywxMCBAQCBSZW5kZXJDYW52YXM6OlJlbmRlckNhbnZh
cyhET006Ok5vZGVJbXBsCiAKICAgICAvLyBDcmVhdGUgYSBuZXcgcm9vdCBsYXllciBmb3Igb3Vy
IGxheWVyIGhpZXJhcmNoeS4KICAgICBtX2xheWVyID0gbmV3IChub2RlLT5nZXREb2N1bWVudCgp
LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJMYXllcih0aGlzKTsKLSAgICAKLSNpZiBTVkdfU1VQUE9S
VAotICAgIG1fcmVuZGVyaW5nRGV2aWNlID0gMDsKLSNlbmRpZgogfQogCiBSZW5kZXJDYW52YXM6
On5SZW5kZXJDYW52YXMoKQogewotI2lmIFNWR19TVVBQT1JUCi0gICAgZGVsZXRlIG1fcmVuZGVy
aW5nRGV2aWNlOwotI2VuZGlmCiB9CiAKIHZvaWQgUmVuZGVyQ2FudmFzOjpjYWxjSGVpZ2h0KCkK
QEAgLTY1MywxMiArNjQ2LDMgQEAgdm9pZCBSZW5kZXJDYW52YXM6OnNldEJlc3RUcnVuY2F0ZWRB
dChpbgogICAgICAgICBtX2Jlc3RUcnVuY2F0ZWRBdCA9IHk7CiAgICAgfQogfQotCi0jaWYgU1ZH
X1NVUFBPUlQKLUtSZW5kZXJpbmdEZXZpY2UgKlJlbmRlckNhbnZhczo6cmVuZGVyaW5nRGV2aWNl
KCkKLXsKLSAgICBpZiAoIW1fcmVuZGVyaW5nRGV2aWNlKQotICAgICAgICBtX3JlbmRlcmluZ0Rl
dmljZSA9IG5ldyBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6KCk7Ci0gICAgcmV0dXJuIG1fcmVuZGVy
aW5nRGV2aWNlOwotfQotI2VuZGlmCkluZGV4OiBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2NhbnZh
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL3JlbmRlcmlu
Zy9yZW5kZXJfY2FudmFzLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTQKZGlmZiAtcCAtdSAt
cjEuMTQga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9jYW52YXMuaAotLS0ga2h0bWwvcmVuZGVyaW5n
L3JlbmRlcl9jYW52YXMuaAkyMSBOb3YgMjAwNSAwNDowMTo1NSAtMDAwMAkxLjE0CisrKyBraHRt
bC9yZW5kZXJpbmcvcmVuZGVyX2NhbnZhcy5oCTI2IE5vdiAyMDA1IDIzOjM1OjQ2IC0wMDAwCkBA
IC0yOCwxMCArMjgsNiBAQAogY2xhc3MgS0hUTUxWaWV3OwogY2xhc3MgUVNjcm9sbFZpZXc7CiAK
LSNpZiBTVkdfU1VQUE9SVAotY2xhc3MgS1JlbmRlcmluZ0RldmljZTsKLSNlbmRpZgotCiBuYW1l
c3BhY2Uga2h0bWwgewogCiBjbGFzcyBSZW5kZXJDYW52YXMgOiBwdWJsaWMgUmVuZGVyQmxvY2sK
QEAgLTEwNiwxMCArMTAyLDYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlV2lkZ2V0UG9zaXRp
b25zKCk7CiAgICAgdm9pZCBhZGRXaWRnZXQoUmVuZGVyT2JqZWN0ICopOwogICAgIHZvaWQgcmVt
b3ZlV2lkZ2V0KFJlbmRlck9iamVjdCAqKTsKLSAgICAKLSNpZiBTVkdfU1VQUE9SVAotICAgIEtS
ZW5kZXJpbmdEZXZpY2UgKnJlbmRlcmluZ0RldmljZSgpOwotI2VuZGlmCiAKIHByb3RlY3RlZDoK
IApAQCAtMTM3LDEwICsxMjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdHlwZWRlZiBIYXNoU2V0PFJl
bmRlck9iamVjdCAqLCBQb2ludGVySGFzaDxSZW5kZXJPYmplY3QgKj4gPiBSZW5kZXJPYmplY3RT
ZXQ7CiAKICAgICBSZW5kZXJPYmplY3RTZXQgbV93aWRnZXRzOwotICAgIAotI2lmIFNWR19TVVBQ
T1JUCi0gICAgS1JlbmRlcmluZ0RldmljZSAqbV9yZW5kZXJpbmdEZXZpY2U7Ci0jZW5kaWYKIH07
CiAKIH07CkluZGV4OiBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvcmVuZGVyX3N0eWxl
LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS43NQpkaWZmIC1wIC11IC1yMS43NSBraHRtbC9y
ZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmNwcAotLS0ga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9zdHls
ZS5jcHAJMjEgTm92IDIwMDUgMDQ6MDE6NTYgLTAwMDAJMS43NQorKysga2h0bWwvcmVuZGVyaW5n
L3JlbmRlcl9zdHlsZS5jcHAJMjYgTm92IDIwMDUgMjM6MzU6NDcgLTAwMDAKQEAgLTU4OCw2ICs1
ODgsOSBAQCB2b2lkIFJlbmRlclN0eWxlOjppbmhlcml0RnJvbShjb25zdCBSZW5kCiAKIFJlbmRl
clN0eWxlOjp+UmVuZGVyU3R5bGUoKQogeworI2lmIFNWR19TVVBQT1JUCisgICAgZGVsZXRlIG1f
c3ZnU3R5bGU7CisjZW5kaWYKIH0KIAogYm9vbCBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PShjb25z
dCBSZW5kZXJTdHlsZSYgbykgY29uc3QKSW5kZXg6IGtzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvY3NzL1NW
R1JlbmRlclN0eWxlLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIx
LjUga3N2ZzIvY3NzL1NWR1JlbmRlclN0eWxlLmNwcAotLS0ga3N2ZzIvY3NzL1NWR1JlbmRlclN0
eWxlLmNwcAkyMSBOb3YgMjAwNSAwODoyOToyOCAtMDAwMAkxLjUKKysrIGtzdmcyL2Nzcy9TVkdS
ZW5kZXJTdHlsZS5jcHAJMjYgTm92IDIwMDUgMjM6MzU6NDcgLTAwMDAKQEAgLTczLDYgKzczLDEw
IEBAIFNWR1JlbmRlclN0eWxlOjpTVkdSZW5kZXJTdHlsZShjb25zdCBTVkcKICAgICBzdmdfbm9u
aW5oZXJpdGVkX2ZsYWdzID0gb3RoZXIuc3ZnX25vbmluaGVyaXRlZF9mbGFnczsKIH0KIAorU1ZH
UmVuZGVyU3R5bGU6On5TVkdSZW5kZXJTdHlsZSgpCit7Cit9CisKIGJvb2wgU1ZHUmVuZGVyU3R5
bGU6OmVxdWFscyhTVkdSZW5kZXJTdHlsZSAqc3ZnT3RoZXIpIGNvbnN0CiB7CiAgICAgaWYoIXN2
Z090aGVyKQpJbmRleDoga3N2ZzIvbWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5bGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL21pc2MvS0NhbnZhc1Jl
bmRlcmluZ1N0eWxlLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMApkaWZmIC1wIC11IC1y
MS4xMCBrc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAKLS0tIGtzdmcyL21pc2Mv
S0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNwcAkyMSBOb3YgMjAwNSAwODoyOTozMSAtMDAwMAkxLjEw
CisrKyBrc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAJMjYgTm92IDIwMDUgMjM6
MzU6NDggLTAwMDAKQEAgLTQ3LDEwICs0Nyw5IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBLU1ZHOwog
Ci1LQ2FudmFzUmVuZGVyaW5nU3R5bGU6OktDYW52YXNSZW5kZXJpbmdTdHlsZShraHRtbDo6UmVu
ZGVyQ2FudmFzICpjYW52YXMsIGNvbnN0IGtodG1sOjpSZW5kZXJTdHlsZSAqc3R5bGUpCitLQ2Fu
dmFzUmVuZGVyaW5nU3R5bGU6OktDYW52YXNSZW5kZXJpbmdTdHlsZShjb25zdCBraHRtbDo6UmVu
ZGVyU3R5bGUgKnN0eWxlKQogewogICAgIG1fc3R5bGUgPSBzdHlsZTsKLSAgICBtX2NhbnZhcyA9
IGNhbnZhczsKICAgICBtX2ZpbGxQYWludGVyID0gMDsKICAgICBtX3N0cm9rZVBhaW50ZXIgPSAw
OwogfQpAQCAtNjMsOSArNjIsNiBAQCBLQ2FudmFzUmVuZGVyaW5nU3R5bGU6On5LQ2FudmFzUmVu
ZGVyaW5nCiAKIHZvaWQgS0NhbnZhc1JlbmRlcmluZ1N0eWxlOjp1cGRhdGVGaWxsKFJlbmRlclBh
dGggKml0ZW0pCiB7Ci0gICAgaWYoIW1fY2FudmFzIHx8ICFtX2NhbnZhcy0+cmVuZGVyaW5nRGV2
aWNlKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFNWR1BhaW50SW1wbCAqZmlsbCA9IG1fc3R5
bGUtPnN2Z1N0eWxlKCktPmZpbGxQYWludCgpOwogCiAgICAgaWYgKGZpbGwgJiYgZmlsbC0+cGFp
bnRUeXBlKCkgPT0gU1ZHX1BBSU5UVFlQRV9OT05FKQpAQCAtNzMsNyArNjksNyBAQCB2b2lkIEtD
YW52YXNSZW5kZXJpbmdTdHlsZTo6dXBkYXRlRmlsbChSCiAKICAgICBpZighZmlsbCkgLy8gaW5p
dGlhbCB2YWx1ZSAoYmxhY2spCiAgICAgewotICAgICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIg
KmZpbGxQYWludFNlcnZlciA9IG1fY2FudmFzLT5yZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlUGFp
bnRTZXJ2ZXIoS0NQYWludFNlcnZlclR5cGUoUFNfU09MSUQpKTsKKyAgICAgICAgS1JlbmRlcmlu
Z1BhaW50U2VydmVyICpmaWxsUGFpbnRTZXJ2ZXIgPSBRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNl
KCktPmNyZWF0ZVBhaW50U2VydmVyKEtDUGFpbnRTZXJ2ZXJUeXBlKFBTX1NPTElEKSk7CiAgICAg
ICAgIEtSZW5kZXJpbmdQYWludFNlcnZlclNvbGlkICpmaWxsUGFpbnRTZXJ2ZXJTb2xpZCA9IHN0
YXRpY19jYXN0PEtSZW5kZXJpbmdQYWludFNlcnZlclNvbGlkICo+KGZpbGxQYWludFNlcnZlcik7
CiAgICAgICAgIGZpbGxQYWludFNlcnZlclNvbGlkLT5zZXRDb2xvcihRdDo6YmxhY2spOwogCkBA
IC05MSw3ICs4Nyw3IEBAIHZvaWQgS0NhbnZhc1JlbmRlcmluZ1N0eWxlOjp1cGRhdGVGaWxsKFIK
ICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyICpm
aWxsUGFpbnRTZXJ2ZXIgPSBtX2NhbnZhcy0+cmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZVBhaW50
U2VydmVyKEtDUGFpbnRTZXJ2ZXJUeXBlKFBTX1NPTElEKSk7CisgICAgICAgIEtSZW5kZXJpbmdQ
YWludFNlcnZlciAqZmlsbFBhaW50U2VydmVyID0gUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgp
LT5jcmVhdGVQYWludFNlcnZlcihLQ1BhaW50U2VydmVyVHlwZShQU19TT0xJRCkpOwogICAgICAg
ICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZCAqZmlsbFBhaW50U2VydmVyU29saWQgPSBzdGF0
aWNfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZCAqPihmaWxsUGFpbnRTZXJ2ZXIpOwog
CiAgICAgICAgIGlmKGZpbGwtPnBhaW50VHlwZSgpID09IFNWR19QQUlOVFRZUEVfQ1VSUkVOVENP
TE9SKQpAQCAtMTA4LDkgKzEwNCw2IEBAIHZvaWQgS0NhbnZhc1JlbmRlcmluZ1N0eWxlOjp1cGRh
dGVGaWxsKFIKIAogdm9pZCBLQ2FudmFzUmVuZGVyaW5nU3R5bGU6OnVwZGF0ZVN0cm9rZShSZW5k
ZXJQYXRoICppdGVtKQogewotICAgIGlmKCFtX2NhbnZhcyB8fCAhbV9jYW52YXMtPnJlbmRlcmlu
Z0RldmljZSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBTVkdQYWludEltcGwgKnN0cm9rZSA9
IG1fc3R5bGUtPnN2Z1N0eWxlKCktPnN0cm9rZVBhaW50KCk7CiAKICAgICBpZiAoIXN0cm9rZSB8
fCBzdHJva2UtPnBhaW50VHlwZSgpID09IFNWR19QQUlOVFRZUEVfTk9ORSkKQEAgLTEyOCw3ICsx
MjEsNyBAQCB2b2lkIEtDYW52YXNSZW5kZXJpbmdTdHlsZTo6dXBkYXRlU3Ryb2tlCiAgICAgfQog
ICAgIGVsc2UKICAgICB7Ci0gICAgICAgIEtSZW5kZXJpbmdQYWludFNlcnZlciAqc3Ryb2tlUGFp
bnRTZXJ2ZXIgPSBtX2NhbnZhcy0+cmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZVBhaW50U2VydmVy
KEtDUGFpbnRTZXJ2ZXJUeXBlKFBTX1NPTElEKSk7CisgICAgICAgIEtSZW5kZXJpbmdQYWludFNl
cnZlciAqc3Ryb2tlUGFpbnRTZXJ2ZXIgPSBRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNlKCktPmNy
ZWF0ZVBhaW50U2VydmVyKEtDUGFpbnRTZXJ2ZXJUeXBlKFBTX1NPTElEKSk7CiAgICAgICAgIEtS
ZW5kZXJpbmdQYWludFNlcnZlclNvbGlkICpzdHJva2VQYWludFNlcnZlclNvbGlkID0gc3RhdGlj
X2Nhc3Q8S1JlbmRlcmluZ1BhaW50U2VydmVyU29saWQgKj4oc3Ryb2tlUGFpbnRTZXJ2ZXIpOwog
CiAgICAgICAgIGlmKHN0cm9rZS0+cGFpbnRUeXBlKCkgPT0gU1ZHX1BBSU5UVFlQRV9DVVJSRU5U
Q09MT1IpCkluZGV4OiBrc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL21pc2MvS0NhbnZhc1JlbmRl
cmluZ1N0eWxlLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IGtz
dmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmgKLS0tIGtzdmcyL21pc2MvS0NhbnZhc1Jl
bmRlcmluZ1N0eWxlLmgJMjEgTm92IDIwMDUgMDg6Mjk6MzEgLTAwMDAJMS42CisrKyBrc3ZnMi9t
aXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5oCTI2IE5vdiAyMDA1IDIzOjM1OjQ4IC0wMDAwCkBA
IC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBLU1ZHCiAgICAgY2xhc3MgS0NhbnZhc1JlbmRlcmlu
Z1N0eWxlCiAgICAgewogICAgIHB1YmxpYzoKLSAgICAgICAgS0NhbnZhc1JlbmRlcmluZ1N0eWxl
KGtodG1sOjpSZW5kZXJDYW52YXMgKmNhbnZhcywgY29uc3Qga2h0bWw6OlJlbmRlclN0eWxlICpz
dHlsZSk7CisgICAgICAgIEtDYW52YXNSZW5kZXJpbmdTdHlsZShjb25zdCBraHRtbDo6UmVuZGVy
U3R5bGUgKnN0eWxlKTsKICAgICAgICAgfktDYW52YXNSZW5kZXJpbmdTdHlsZSgpOwogCiAgICAg
ICAgIHZvaWQgdXBkYXRlRmlsbChSZW5kZXJQYXRoICppdGVtKTsKQEAgLTkyLDcgKzkyLDYgQEAg
bmFtZXNwYWNlIEtTVkcKICAgICAgICAgY29uc3Qga2h0bWw6OlJlbmRlclN0eWxlICptX3N0eWxl
OwogCiAgICAgICAgIC8vIEtDYW52YXMgc3R1ZmYKLSAgICAgICAga2h0bWw6OlJlbmRlckNhbnZh
cyAqbV9jYW52YXM7CiAgICAgICAgIEtSZW5kZXJpbmdGaWxsUGFpbnRlciAqbV9maWxsUGFpbnRl
cjsKICAgICAgICAgS1JlbmRlcmluZ1N0cm9rZVBhaW50ZXIgKm1fc3Ryb2tlUGFpbnRlcjsKICAg
ICB9OwpJbmRleDoga3N2ZzIvc3ZnL1NWR0FFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0FFbGVtZW50SW1wbC5jcHAs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOApkaWZmIC1wIC11IC1yMS44IGtzdmcyL3N2Zy9TVkdB
RWxlbWVudEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHQUVsZW1lbnRJbXBsLmNwcAkyNiBOb3Yg
MjAwNSAyMjoxOTowMyAtMDAwMAkxLjgKKysrIGtzdmcyL3N2Zy9TVkdBRWxlbWVudEltcGwuY3Bw
CTI2IE5vdiAyMDA1IDIzOjM1OjQ5IC0wMDAwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU1ZHQUVs
ZW1lbnRJbXBsOjpwYXJzZU1hcHBlZEF0dHJpYnUKIAoga2h0bWw6OlJlbmRlck9iamVjdCAqU1ZH
QUVsZW1lbnRJbXBsOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEsIGtodG1sOjpS
ZW5kZXJTdHlsZSAqc3R5bGUpCiB7Ci0gICAgcmV0dXJuIGNhbnZhcygpLT5yZW5kZXJpbmdEZXZp
Y2UoKS0+Y3JlYXRlQ29udGFpbmVyKGFyZW5hLCBzdHlsZSwgdGhpcyk7CisgICAgcmV0dXJuIFFQ
YWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlQ29udGFpbmVyKGFyZW5hLCBzdHlsZSwg
dGhpcyk7CiB9CiAKIHZvaWQgU1ZHQUVsZW1lbnRJbXBsOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEtE
T006OkV2ZW50SW1wbCAqZXZ0KQpJbmRleDoga3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2
Zy9TVkdDbGlwUGF0aEVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMApk
aWZmIC1wIC11IC1yMS4xMCBrc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50SW1wbC5jcHAKLS0t
IGtzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAwNSAyMjoyNzow
NiAtMDAwMAkxLjEwCisrKyBrc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50SW1wbC5jcHAJMjYg
Tm92IDIwMDUgMjM6MzU6NDkgLTAwMDAKQEAgLTQ0LDYgKzQ0LDcgQEAgU1ZHQ2xpcFBhdGhFbGVt
ZW50SW1wbDo6U1ZHQ2xpcFBhdGhFbGVtZQogCiBTVkdDbGlwUGF0aEVsZW1lbnRJbXBsOjp+U1ZH
Q2xpcFBhdGhFbGVtZW50SW1wbCgpCiB7CisgICAgZGVsZXRlIG1fY2xpcHBlcjsKIH0KIAogU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbkltcGwgKlNWR0NsaXBQYXRoRWxlbWVudEltcGw6OmNsaXBQYXRo
VW5pdHMoKSBjb25zdApAQCAtODEsMjIgKzgyLDI0IEBAIEtDYW52YXNDbGlwcGVyICpTVkdDbGlw
UGF0aEVsZW1lbnRJbXBsOjoKICAgICBpZiAoIWNhbnZhcygpKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBpZiAoIW1fY2xpcHBlcikKLSAgICAgICAgbV9jbGlwcGVyID0gc3RhdGljX2Nhc3Q8S0Nh
bnZhc0NsaXBwZXIgKj4oY2FudmFzKCktPnJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVSZXNvdXJj
ZShSU19DTElQUEVSKSk7CisgICAgICAgIG1fY2xpcHBlciA9IHN0YXRpY19jYXN0PEtDYW52YXND
bGlwcGVyICo+KFFQYWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlUmVzb3VyY2UoUlNf
Q0xJUFBFUikpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGlwcGVyLT5yZXNldENsaXBEYXRhKCk7
CiAKICAgICBib29sIGJib3ggPSBjbGlwUGF0aFVuaXRzKCktPmJhc2VWYWwoKSA9PSBTVkdfVU5J
VF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YOwogCi0gICAga2h0bWw6OlJlbmRlclN0eWxlICpjbGlw
UGF0aFN0eWxlID0gc3R5bGVGb3JSZW5kZXJlcihwYXJlbnQoKS0+cmVuZGVyZXIoKSk7CisgICAg
a2h0bWw6OlJlbmRlclN0eWxlICpjbGlwUGF0aFN0eWxlID0gc3R5bGVGb3JSZW5kZXJlcihwYXJl
bnQoKS0+cmVuZGVyZXIoKSk7IC8vIEZJWE1FOiBNYW51YWwgc3R5bGUgcmVzb2x1dGlvbiBpcyBh
IGhhY2sKICAgICBmb3IgKEtET006Ok5vZGVJbXBsICpuID0gZmlyc3RDaGlsZCgpOyBuICE9IDA7
IG4gPSBuLT5uZXh0U2libGluZygpKQogICAgIHsKICAgICAgICAgU1ZHRWxlbWVudEltcGwgKmUg
PSBzdmdfZHluYW1pY19jYXN0KG4pOwogICAgICAgICBpZiAoZSAmJiBlLT5pc1N0eWxlZCgpKSB7
CiAgICAgICAgICAgICBTVkdTdHlsZWRFbGVtZW50SW1wbCAqc3R5bGVkID0gc3RhdGljX2Nhc3Q8
U1ZHU3R5bGVkRWxlbWVudEltcGwgKj4oZSk7Ci0gICAgICAgICAgICBTVkdSZW5kZXJTdHlsZSAq
c3R5bGUgPSBnZXREb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlRm9yRWxlbWVudChz
dHlsZWQsIGNsaXBQYXRoU3R5bGUpLT5zdmdTdHlsZSgpOwotICAgICAgICAgICAgbV9jbGlwcGVy
LT5hZGRDbGlwRGF0YShzdHlsZWQtPnRvUGF0aERhdGEoKSwgKEtDV2luZFJ1bGUpIHN0eWxlLT5j
bGlwUnVsZSgpLCBiYm94KTsKKyAgICAgICAgICAgIGtodG1sOjpSZW5kZXJTdHlsZSAqcGF0aFN0
eWxlID0gZ2V0RG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZUZvckVsZW1lbnQoc3R5
bGVkLCBjbGlwUGF0aFN0eWxlKTsKKyAgICAgICAgICAgIG1fY2xpcHBlci0+YWRkQ2xpcERhdGEo
c3R5bGVkLT50b1BhdGhEYXRhKCksIChLQ1dpbmRSdWxlKSBwYXRoU3R5bGUtPnN2Z1N0eWxlKCkt
PmNsaXBSdWxlKCksIGJib3gpOworICAgICAgICAgICAgcGF0aFN0eWxlLT5kZXJlZihjYW52YXMo
KS0+cmVuZGVyQXJlbmEoKSk7CiAgICAgICAgIH0KICAgICB9CisgICAgY2xpcFBhdGhTdHlsZS0+
ZGVyZWYoY2FudmFzKCktPnJlbmRlckFyZW5hKCkpOwogICAgIHJldHVybiBtX2NsaXBwZXI7CiB9
CiAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRUJsZW5kRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdGRUJsZW5kRWxlbWVu
dEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEwCmRpZmYgLXAgLXUgLXIxLjEwIGtz
dmcyL3N2Zy9TVkdGRUJsZW5kRWxlbWVudEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAwNSAyMjoxOTowNyAtMDAwMAkxLjEwCisrKyBrc3Zn
Mi9zdmcvU1ZHRkVCbGVuZEVsZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAwNSAyMzozNTo0OSAtMDAw
MApAQCAtNDcsNiArNDcsNyBAQCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNJ
bXBsCiAKIFNWR0ZFQmxlbmRFbGVtZW50SW1wbDo6flNWR0ZFQmxlbmRFbGVtZW50SW1wbCgpCiB7
CisgICAgZGVsZXRlIG1fZmlsdGVyRWZmZWN0OwogfQogCiBTVkdBbmltYXRlZFN0cmluZ0ltcGwg
KlNWR0ZFQmxlbmRFbGVtZW50SW1wbDo6aW4xKCkgY29uc3QKQEAgLTk0LDcgKzk1LDcgQEAgdm9p
ZCBTVkdGRUJsZW5kRWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQQogS0NhbnZhc0ZFQmxlbmQgKlNW
R0ZFQmxlbmRFbGVtZW50SW1wbDo6ZmlsdGVyRWZmZWN0KCkgY29uc3QKIHsKICAgICBpZiAoIW1f
ZmlsdGVyRWZmZWN0KQotICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IHN0YXRpY19jYXN0PEtDYW52
YXNGRUJsZW5kICo+KGNhbnZhcygpLT5yZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlRmlsdGVyRWZm
ZWN0KEZFX0JMRU5EKSk7CisgICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gc3RhdGljX2Nhc3Q8S0Nh
bnZhc0ZFQmxlbmQgKj4oUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVGaWx0ZXJF
ZmZlY3QoRkVfQkxFTkQpKTsKICAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQogICAgICAgICByZXR1
cm4gMDsKICAgICBtX2ZpbHRlckVmZmVjdC0+c2V0QmxlbmRNb2RlKChLQ0JsZW5kTW9kZVR5cGUp
KG1vZGUoKS0+YmFzZVZhbCgpLTEpKTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0
L2tzdmcyL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjEyCmRpZmYgLXAgLXUgLXIxLjEyIGtzdmcyL3N2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnRJbXBs
LmNwcAkyNiBOb3YgMjAwNSAyMjoyNzowNiAtMDAwMAkxLjEyCisrKyBrc3ZnMi9zdmcvU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAwNSAyMzozNTo0OSAtMDAwMApAQCAt
NTEsNiArNTEsNyBAQCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNJbXBsCiAK
IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50SW1wbDo6flNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50SW1w
bCgpCiB7CisgICAgZGVsZXRlIG1fZmlsdGVyRWZmZWN0OwogfQogCiBTVkdBbmltYXRlZFN0cmlu
Z0ltcGwgKlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50SW1wbDo6aW4xKCkgY29uc3QKQEAgLTk2LDcg
Kzk3LDcgQEAgdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudEltcGw6OnBhcnNlTQogS0NhbnZh
c0ZFQ29sb3JNYXRyaXggKlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50SW1wbDo6ZmlsdGVyRWZmZWN0
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQotICAgICAgICBtX2ZpbHRlckVm
ZmVjdCA9IHN0YXRpY19jYXN0PEtDYW52YXNGRUNvbG9yTWF0cml4ICo+KGNhbnZhcygpLT5yZW5k
ZXJpbmdEZXZpY2UoKS0+Y3JlYXRlRmlsdGVyRWZmZWN0KEZFX0NPTE9SX01BVFJJWCkpOworICAg
ICAgICBtX2ZpbHRlckVmZmVjdCA9IHN0YXRpY19jYXN0PEtDYW52YXNGRUNvbG9yTWF0cml4ICo+
KFFQYWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlRmlsdGVyRWZmZWN0KEZFX0NPTE9S
X01BVFJJWCkpOwogICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCiAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjExCmRpZmYgLXAgLXUgLXIxLjExIGtzdmcyL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAwNSAyMjoxOTowOCAtMDAwMAkxLjExCisrKyBrc3ZnMi9z
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAwNSAyMzoz
NTo0OSAtMDAwMApAQCAtNTMsNiArNTMsNyBAQCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXNJbXBsCiAKIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50SW1wbDo6flNWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50SW1wbCgpCiB7CisgICAgZGVsZXRlIG1fZmlsdGVyRWZm
ZWN0OwogfQogCiBTVkdBbmltYXRlZFN0cmluZ0ltcGwgKlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50SW1wbDo6aW4xKCkgY29uc3QKQEAgLTczLDcgKzc0LDcgQEAgdm9pZCBTVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudEltcGw6OgogS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXIgKlNW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50SW1wbDo6ZmlsdGVyRWZmZWN0KCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQotICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IHN0YXRp
Y19jYXN0PEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyICo+KGNhbnZhcygpLT5yZW5kZXJpbmdE
ZXZpY2UoKS0+Y3JlYXRlRmlsdGVyRWZmZWN0KEZFX0NPTVBPTkVOVF9UUkFOU0ZFUikpOworICAg
ICAgICBtX2ZpbHRlckVmZmVjdCA9IHN0YXRpY19jYXN0PEtDYW52YXNGRUNvbXBvbmVudFRyYW5z
ZmVyICo+KFFQYWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlRmlsdGVyRWZmZWN0KEZF
X0NPTVBPTkVOVF9UUkFOU0ZFUikpOwogICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCiAgICAgICAg
IHJldHVybiAwOwogICAgIApJbmRleDoga3N2ZzIvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4x
MApkaWZmIC1wIC11IC1yMS4xMCBrc3ZnMi9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50SW1wbC5j
cHAKLS0tIGtzdmcyL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAw
NSAyMjoxOTowOCAtMDAwMAkxLjEwCisrKyBrc3ZnMi9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
SW1wbC5jcHAJMjYgTm92IDIwMDUgMjM6MzU6NDkgLTAwMDAKQEAgLTUxLDYgKzUxLDcgQEAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzSW1wbAogCiBTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnRJbXBsOjp+U1ZHRkVDb21wb3NpdGVFbGVtZW50SW1wbCgpCiB7CisgICAgZGVsZXRlIG1f
ZmlsdGVyRWZmZWN0OwogfQogCiBTVkdBbmltYXRlZFN0cmluZ0ltcGwgKlNWR0ZFQ29tcG9zaXRl
RWxlbWVudEltcGw6OmluMSgpIGNvbnN0CkBAIC0xMjQsNyArMTI1LDcgQEAgdm9pZCBTVkdGRUNv
bXBvc2l0ZUVsZW1lbnRJbXBsOjpwYXJzZU1hcAogS0NhbnZhc0ZFQ29tcG9zaXRlICpTVkdGRUNv
bXBvc2l0ZUVsZW1lbnRJbXBsOjpmaWx0ZXJFZmZlY3QoKSBjb25zdAogewogICAgIGlmICghbV9m
aWx0ZXJFZmZlY3QpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gc3RhdGljX2Nhc3Q8S0NhbnZh
c0ZFQ29tcG9zaXRlICo+KGNhbnZhcygpLT5yZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlRmlsdGVy
RWZmZWN0KEZFX0NPTVBPU0lURSkpOworICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IHN0YXRpY19j
YXN0PEtDYW52YXNGRUNvbXBvc2l0ZSAqPihRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNlKCktPmNy
ZWF0ZUZpbHRlckVmZmVjdChGRV9DT01QT1NJVEUpKTsKICAgICBpZiAoIW1fZmlsdGVyRWZmZWN0
KQogICAgICAgICByZXR1cm4gMDsKICAgICBtX2ZpbHRlckVmZmVjdC0+c2V0T3BlcmF0aW9uKChL
Q0NvbXBvc2l0ZU9wZXJhdGlvblR5cGUpKF9vcGVyYXRvcigpLT5iYXNlVmFsKCkgLSAxKSk7Cklu
ZGV4OiBrc3ZnMi9zdmcvU1ZHRkVGbG9vZEVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHRkVGbG9vZEVsZW1lbnRJbXBs
LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMApkaWZmIC1wIC11IC1yMS4xMCBrc3ZnMi9z
dmcvU1ZHRkVGbG9vZEVsZW1lbnRJbXBsLmNwcAotLS0ga3N2ZzIvc3ZnL1NWR0ZFRmxvb2RFbGVt
ZW50SW1wbC5jcHAJMjYgTm92IDIwMDUgMjI6MTk6MDkgLTAwMDAJMS4xMAorKysga3N2ZzIvc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50SW1wbC5jcHAJMjYgTm92IDIwMDUgMjM6MzU6NDkgLTAwMDAKQEAg
LTQ2LDYgKzQ2LDcgQEAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzSW1wbAog
CiBTVkdGRUZsb29kRWxlbWVudEltcGw6On5TVkdGRUZsb29kRWxlbWVudEltcGwoKQogeworICAg
IGRlbGV0ZSBtX2ZpbHRlckVmZmVjdDsKIH0KIAogU1ZHQW5pbWF0ZWRTdHJpbmdJbXBsICpTVkdG
RUZsb29kRWxlbWVudEltcGw6OmluMSgpIGNvbnN0CkBAIC02NiwxNSArNjcsMTcgQEAgdm9pZCBT
VkdGRUZsb29kRWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQQogS0NhbnZhc0ZFRmxvb2QgKlNWR0ZF
Rmxvb2RFbGVtZW50SW1wbDo6ZmlsdGVyRWZmZWN0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fZmls
dGVyRWZmZWN0KQotICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IHN0YXRpY19jYXN0PEtDYW52YXNG
RUZsb29kICo+KGNhbnZhcygpLT5yZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlRmlsdGVyRWZmZWN0
KEZFX0ZMT09EKSk7CisgICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gc3RhdGljX2Nhc3Q8S0NhbnZh
c0ZFRmxvb2QgKj4oUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVGaWx0ZXJFZmZl
Y3QoRkVfRkxPT0QpKTsKICAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQogICAgICAgICByZXR1cm4g
MDsKICAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oS0RPTTo6RE9NU3RyaW5nKGluMSgpLT5iYXNl
VmFsKCkpLnFzdHJpbmcoKSk7CiAgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZm
ZWN0KTsKICAgICAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGlzIHdpbGwgd29yaywgdGhlIHBh
cmVudCBkb2VzIG5vdCBoYXZlIGEgcmVuZGVyZXIKLSAgICBTVkdSZW5kZXJTdHlsZSAqZmlsdGVy
U3R5bGUgPSBjb25zdF9jYXN0PFNWR0ZFRmxvb2RFbGVtZW50SW1wbCAqPih0aGlzKS0+c3R5bGVG
b3JSZW5kZXJlcihwYXJlbnROb2RlKCktPnJlbmRlcmVyKCkpLT5zdmdTdHlsZSgpOwotICAgIG1f
ZmlsdGVyRWZmZWN0LT5zZXRGbG9vZENvbG9yKGZpbHRlclN0eWxlLT5mbG9vZENvbG9yKCkpOwot
ICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRGbG9vZE9wYWNpdHkoZmlsdGVyU3R5bGUtPmZsb29kT3Bh
Y2l0eSgpKTsKKyAgICBraHRtbDo6UmVuZGVyU3R5bGUgKmZpbHRlclN0eWxlID0gY29uc3RfY2Fz
dDxTVkdGRUZsb29kRWxlbWVudEltcGwgKj4odGhpcyktPnN0eWxlRm9yUmVuZGVyZXIocGFyZW50
Tm9kZSgpLT5yZW5kZXJlcigpKTsKKyAgICBTVkdSZW5kZXJTdHlsZSAqc3ZnU3R5bGUgPSBmaWx0
ZXJTdHlsZS0+c3ZnU3R5bGUoKTsKKyAgICBtX2ZpbHRlckVmZmVjdC0+c2V0Rmxvb2RDb2xvcihz
dmdTdHlsZS0+Zmxvb2RDb2xvcigpKTsKKyAgICBtX2ZpbHRlckVmZmVjdC0+c2V0Rmxvb2RPcGFj
aXR5KHN2Z1N0eWxlLT5mbG9vZE9wYWNpdHkoKSk7CisgICAgZmlsdGVyU3R5bGUtPmRlcmVmKGNh
bnZhcygpLT5yZW5kZXJBcmVuYSgpKTsKIAogICAgIHJldHVybiBtX2ZpbHRlckVmZmVjdDsKIH0K
SW5kZXg6IGtzdmcyL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnRJbXBsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTEKZGlmZiAtcCAt
dSAtcjEuMTEga3N2ZzIvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudEltcGwuY3BwCi0tLSBr
c3ZnMi9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50SW1wbC5jcHAJMjYgTm92IDIwMDUgMjI6
MTk6MDkgLTAwMDAJMS4xMQorKysga3N2ZzIvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudElt
cGwuY3BwCTI2IE5vdiAyMDA1IDIzOjM1OjQ5IC0wMDAwCkBAIC00OSw2ICs0OSw3IEBAIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc0ltcGwKIAogU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50SW1wbDo6flNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudEltcGwoKQogeworICAgIGRlbGV0
ZSBtX2ZpbHRlckVmZmVjdDsKIH0KIAogU1ZHQW5pbWF0ZWRTdHJpbmdJbXBsICpTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnRJbXBsOjppbjEoKSBjb25zdApAQCAtOTMsNyArOTQsNyBAQCB2b2lkIFNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudEltcGw6OnBhcnNlCiBLQ2FudmFzRkVHYXVzc2lhbkJsdXIg
KlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudEltcGw6OmZpbHRlckVmZmVjdCgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBzdGF0aWNf
Y2FzdDxLQ2FudmFzRkVHYXVzc2lhbkJsdXIgKj4oY2FudmFzKCktPnJlbmRlcmluZ0RldmljZSgp
LT5jcmVhdGVGaWx0ZXJFZmZlY3QoRkVfR0FVU1NJQU5fQkxVUikpOworICAgICAgICBtX2ZpbHRl
ckVmZmVjdCA9IHN0YXRpY19jYXN0PEtDYW52YXNGRUdhdXNzaWFuQmx1ciAqPihRUGFpbnRlcjo6
cmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZUZpbHRlckVmZmVjdChGRV9HQVVTU0lBTl9CTFVSKSk7
CiAgICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgbV9maWx0
ZXJFZmZlY3QtPnNldEluKEtET006OkRPTVN0cmluZyhpbjEoKS0+YmFzZVZhbCgpKS5xc3RyaW5n
KCkpOwpJbmRleDoga3N2ZzIvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTEKZGlmZiAtcCAtdSAtcjEuMTEg
a3N2ZzIvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudEltcGwuY3BwCTI2IE5vdiAyMDA1IDIyOjE5OjA5IC0wMDAwCTEuMTEKKysrIGtz
dmcyL3N2Zy9TVkdGRUltYWdlRWxlbWVudEltcGwuY3BwCTI2IE5vdiAyMDA1IDIzOjM1OjQ5IC0w
MDAwCkBAIC01NCw2ICs1NCw3IEBAIFNWR0ZFSW1hZ2VFbGVtZW50SW1wbDo6U1ZHRkVJbWFnZUVs
ZW1lbnQKIAogU1ZHRkVJbWFnZUVsZW1lbnRJbXBsOjp+U1ZHRkVJbWFnZUVsZW1lbnRJbXBsKCkK
IHsKKyAgICBkZWxldGUgbV9maWx0ZXJFZmZlY3Q7CiB9CiAKIFNWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpb0ltcGwgKlNWR0ZFSW1hZ2VFbGVtZW50SW1wbDo6cHJlc2VydmVBc3BlY3RSYXRp
bygpIGNvbnN0CkBAIC05Nyw3ICs5OCw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnRJbXBsOjpu
b3RpZnlGaW5pc2gKIEtDYW52YXNGRUltYWdlICpTVkdGRUltYWdlRWxlbWVudEltcGw6OmZpbHRl
ckVmZmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9m
aWx0ZXJFZmZlY3QgPSBzdGF0aWNfY2FzdDxLQ2FudmFzRkVJbWFnZSAqPihjYW52YXMoKS0+cmVu
ZGVyaW5nRGV2aWNlKCktPmNyZWF0ZUZpbHRlckVmZmVjdChGRV9JTUFHRSkpOworICAgICAgICBt
X2ZpbHRlckVmZmVjdCA9IHN0YXRpY19jYXN0PEtDYW52YXNGRUltYWdlICo+KFFQYWludGVyOjpy
ZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlRmlsdGVyRWZmZWN0KEZFX0lNQUdFKSk7CiAgICAgaWYg
KCFtX2ZpbHRlckVmZmVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgc2V0U3RhbmRhcmRBdHRy
aWJ1dGVzKG1fZmlsdGVyRWZmZWN0KTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRU1lcmdlRWxlbWVu
dEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcy
L3N2Zy9TVkdGRU1lcmdlRWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjkK
ZGlmZiAtcCAtdSAtcjEuOSBrc3ZnMi9zdmcvU1ZHRkVNZXJnZUVsZW1lbnRJbXBsLmNwcAotLS0g
a3N2ZzIvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50SW1wbC5jcHAJMjIgTm92IDIwMDUgMjM6MDQ6MzAg
LTAwMDAJMS45CisrKyBrc3ZnMi9zdmcvU1ZHRkVNZXJnZUVsZW1lbnRJbXBsLmNwcAkyNiBOb3Yg
MjAwNSAyMzozNTo0OSAtMDAwMApAQCAtNDgsMTIgKzQ4LDEzIEBAIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlc0ltcGwKIAogU1ZHRkVNZXJnZUVsZW1lbnRJbXBsOjp+U1ZHRkVN
ZXJnZUVsZW1lbnRJbXBsKCkKIHsKKyAgICBkZWxldGUgbV9maWx0ZXJFZmZlY3Q7CiB9CiAKIEtD
YW52YXNGRU1lcmdlICpTVkdGRU1lcmdlRWxlbWVudEltcGw6OmZpbHRlckVmZmVjdCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBz
dGF0aWNfY2FzdDxLQ2FudmFzRkVNZXJnZSAqPihjYW52YXMoKS0+cmVuZGVyaW5nRGV2aWNlKCkt
PmNyZWF0ZUZpbHRlckVmZmVjdChGRV9NRVJHRSkpOworICAgICAgICBtX2ZpbHRlckVmZmVjdCA9
IHN0YXRpY19jYXN0PEtDYW52YXNGRU1lcmdlICo+KFFQYWludGVyOjpyZW5kZXJpbmdEZXZpY2Uo
KS0+Y3JlYXRlRmlsdGVyRWZmZWN0KEZFX01FUkdFKSk7CiAgICAgaWYgKCFtX2ZpbHRlckVmZmVj
dCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVy
RWZmZWN0KTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnRJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHRkVPZmZz
ZXRFbGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTEKZGlmZiAtcCAtdSAt
cjEuMTEga3N2ZzIvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50SW1wbC5jcHAJMjYgTm92IDIwMDUgMjI6MTk6MTAgLTAwMDAJMS4x
MQorKysga3N2ZzIvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudEltcGwuY3BwCTI2IE5vdiAyMDA1IDIz
OjM1OjQ5IC0wMDAwCkBAIC00OCw2ICs0OCw3IEBAIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlc0ltcGwKIAogU1ZHRkVPZmZzZXRFbGVtZW50SW1wbDo6flNWR0ZFT2Zmc2V0RWxl
bWVudEltcGwoKQogeworICAgIGRlbGV0ZSBtX2ZpbHRlckVmZmVjdDsKIH0KIAogU1ZHQW5pbWF0
ZWRTdHJpbmdJbXBsICpTVkdGRU9mZnNldEVsZW1lbnRJbXBsOjppbjEoKSBjb25zdApAQCAtODQs
NyArODUsNyBAQCB2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudEltcGw6OnBhcnNlTWFwcGVkCiBLQ2Fu
dmFzRkVPZmZzZXQgKlNWR0ZFT2Zmc2V0RWxlbWVudEltcGw6OmZpbHRlckVmZmVjdCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBz
dGF0aWNfY2FzdDxLQ2FudmFzRkVPZmZzZXQgKj4oY2FudmFzKCktPnJlbmRlcmluZ0RldmljZSgp
LT5jcmVhdGVGaWx0ZXJFZmZlY3QoRkVfT0ZGU0VUKSk7CisgICAgICAgIG1fZmlsdGVyRWZmZWN0
ID0gc3RhdGljX2Nhc3Q8S0NhbnZhc0ZFT2Zmc2V0ICo+KFFQYWludGVyOjpyZW5kZXJpbmdEZXZp
Y2UoKS0+Y3JlYXRlRmlsdGVyRWZmZWN0KEZFX09GRlNFVCkpOwogICAgIGlmICghbV9maWx0ZXJF
ZmZlY3QpCiAgICAgICAgIHJldHVybiAwOwogICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihLRE9N
OjpET01TdHJpbmcoaW4xKCktPmJhc2VWYWwoKSkucXN0cmluZygpKTsKSW5kZXg6IGtzdmcyL3N2
Zy9TVkdGRVRpbGVFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0ZFVGlsZUVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS4xMApkaWZmIC1wIC11IC1yMS4xMCBrc3ZnMi9zdmcvU1ZHRkVUaWxlRWxl
bWVudEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHRkVUaWxlRWxlbWVudEltcGwuY3BwCTI2IE5v
diAyMDA1IDIyOjE5OjEwIC0wMDAwCTEuMTAKKysrIGtzdmcyL3N2Zy9TVkdGRVRpbGVFbGVtZW50
SW1wbC5jcHAJMjYgTm92IDIwMDUgMjM6MzU6NDkgLTAwMDAKQEAgLTQ1LDYgKzQ1LDcgQEAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzSW1wbAogCiBTVkdGRVRpbGVFbGVtZW50
SW1wbDo6flNWR0ZFVGlsZUVsZW1lbnRJbXBsKCkKIHsKKyAgICBkZWxldGUgbV9maWx0ZXJFZmZl
Y3Q7CiB9CiAKIFNWR0FuaW1hdGVkU3RyaW5nSW1wbCAqU1ZHRkVUaWxlRWxlbWVudEltcGw6Omlu
MSgpIGNvbnN0CkBAIC02NSw3ICs2Niw3IEBAIHZvaWQgU1ZHRkVUaWxlRWxlbWVudEltcGw6OnBh
cnNlTWFwcGVkQXQKIEtDYW52YXNGRVRpbGUgKlNWR0ZFVGlsZUVsZW1lbnRJbXBsOjpmaWx0ZXJF
ZmZlY3QoKSBjb25zdAogewogICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCi0gICAgICAgIG1fZmls
dGVyRWZmZWN0ID0gc3RhdGljX2Nhc3Q8S0NhbnZhc0ZFVGlsZSAqPihjYW52YXMoKS0+cmVuZGVy
aW5nRGV2aWNlKCktPmNyZWF0ZUZpbHRlckVmZmVjdChGRV9USUxFKSk7CisgICAgICAgIG1fZmls
dGVyRWZmZWN0ID0gc3RhdGljX2Nhc3Q8S0NhbnZhc0ZFVGlsZSAqPihRUGFpbnRlcjo6cmVuZGVy
aW5nRGV2aWNlKCktPmNyZWF0ZUZpbHRlckVmZmVjdChGRV9USUxFKSk7CiAgICAgaWYgKCFtX2Zp
bHRlckVmZmVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgbV9maWx0ZXJFZmZlY3QtPnNldElu
KEtET006OkRPTVN0cmluZyhpbjEoKS0+YmFzZVZhbCgpKS5xc3RyaW5nKCkpOwpJbmRleDoga3N2
ZzIvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudElt
cGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEyCmRpZmYgLXAgLXUgLXIxLjEyIGtzdmcy
L3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdGRVR1
cmJ1bGVuY2VFbGVtZW50SW1wbC5jcHAJMjYgTm92IDIwMDUgMjI6MTk6MTAgLTAwMDAJMS4xMgor
Kysga3N2ZzIvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAwNSAy
MzozNTo0OSAtMDAwMApAQCAtNTAsNiArNTAsNyBAQCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXNJbXBsCiAKIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnRJbXBsOjp+U1ZHRkVUdXJi
dWxlbmNlRWxlbWVudEltcGwoKQogeworICAgIGRlbGV0ZSBtX2ZpbHRlckVmZmVjdDsKIH0KIAog
U1ZHQW5pbWF0ZWROdW1iZXJJbXBsICpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50SW1wbDo6YmFzZUZy
ZXF1ZW5jeVgoKSBjb25zdApAQCAtMTI1LDcgKzEyNiw3IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNl
RWxlbWVudEltcGw6OnBhcnNlTWEKIEtDYW52YXNGRVR1cmJ1bGVuY2UgKlNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnRJbXBsOjpmaWx0ZXJFZmZlY3QoKSBjb25zdAogewogICAgIGlmICghbV9maWx0ZXJF
ZmZlY3QpCi0gICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gc3RhdGljX2Nhc3Q8S0NhbnZhc0ZFVHVy
YnVsZW5jZSAqPihjYW52YXMoKS0+cmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZUZpbHRlckVmZmVj
dChGRV9UVVJCVUxFTkNFKSk7CisgICAgICAgIG1fZmlsdGVyRWZmZWN0ID0gc3RhdGljX2Nhc3Q8
S0NhbnZhc0ZFVHVyYnVsZW5jZSAqPihRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0
ZUZpbHRlckVmZmVjdChGRV9UVVJCVUxFTkNFKSk7CiAgICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgCkluZGV4OiBrc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVu
dEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcy
L3N2Zy9TVkdGaWx0ZXJFbGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTEK
ZGlmZiAtcCAtdSAtcjEuMTEga3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnRJbXBsLmNwcAotLS0g
a3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAwNSAyMjoxOToxMCAt
MDAwMAkxLjExCisrKyBrc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudEltcGwuY3BwCTI2IE5vdiAy
MDA1IDIzOjM1OjQ5IC0wMDAwCkBAIC00Nyw2ICs0Nyw3IEBAIFNWR0ZpbHRlckVsZW1lbnRJbXBs
OjpTVkdGaWx0ZXJFbGVtZW50SW0KIAogU1ZHRmlsdGVyRWxlbWVudEltcGw6On5TVkdGaWx0ZXJF
bGVtZW50SW1wbCgpCiB7CisgICAgZGVsZXRlIG1fZmlsdGVyOwogfQogCiBTVkdBbmltYXRlZEVu
dW1lcmF0aW9uSW1wbCAqU1ZHRmlsdGVyRWxlbWVudEltcGw6OmZpbHRlclVuaXRzKCkgY29uc3QK
QEAgLTE2OCw3ICsxNjksNyBAQCBLQ2FudmFzRmlsdGVyICpTVkdGaWx0ZXJFbGVtZW50SW1wbDo6
Y2FuCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYoIW1fZmlsdGVyKQotICAgICAgICBtX2Zp
bHRlciA9IHN0YXRpY19jYXN0PEtDYW52YXNGaWx0ZXIgKj4oY2FudmFzKCktPnJlbmRlcmluZ0Rl
dmljZSgpLT5jcmVhdGVSZXNvdXJjZShSU19GSUxURVIpKTsKKyAgICAgICAgbV9maWx0ZXIgPSBz
dGF0aWNfY2FzdDxLQ2FudmFzRmlsdGVyICo+KFFQYWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKS0+
Y3JlYXRlUmVzb3VyY2UoUlNfRklMVEVSKSk7CiAKICAgICBib29sIGZpbHRlckJCb3hNb2RlID0g
ZmlsdGVyVW5pdHMoKS0+YmFzZVZhbCgpID09IFNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdC
T1g7CiAgICAgbV9maWx0ZXItPnNldEZpbHRlckJvdW5kaW5nQm94TW9kZShmaWx0ZXJCQm94TW9k
ZSk7CkluZGV4OiBrc3ZnMi9zdmcvU1ZHR0VsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHR0VsZW1lbnRJbXBsLmNwcCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAgLXUgLXIxLjYga3N2ZzIvc3ZnL1NWR0dF
bGVtZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdHRWxlbWVudEltcGwuY3BwCTIxIE5vdiAy
MDA1IDA4OjI5OjQwIC0wMDAwCTEuNgorKysga3N2ZzIvc3ZnL1NWR0dFbGVtZW50SW1wbC5jcHAJ
MjYgTm92IDIwMDUgMjM6MzU6NDkgLTAwMDAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBTVkdHRWxl
bWVudEltcGw6OnNldENoYW5nZWQoYm9vbCBiLAogCiBraHRtbDo6UmVuZGVyT2JqZWN0ICpTVkdH
RWxlbWVudEltcGw6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwga2h0bWw6OlJl
bmRlclN0eWxlICpzdHlsZSkKIHsKLSAgICByZXR1cm4gY2FudmFzKCktPnJlbmRlcmluZ0Rldmlj
ZSgpLT5jcmVhdGVDb250YWluZXIoYXJlbmEsIHN0eWxlLCB0aGlzKTsKKyAgICByZXR1cm4gUVBh
aW50ZXI6OnJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVDb250YWluZXIoYXJlbmEsIHN0eWxlLCB0
aGlzKTsKIH0KIAogLy8gSGVscGVyIGNsYXNzIGZvciA8dXNlPiBzdXBwb3J0CkluZGV4OiBrc3Zn
Mi9zdmcvU1ZHR3JhZGllbnRFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudEltcGwuY3BwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjExCmRpZmYgLXAgLXUgLXIxLjExIGtzdmcyL3N2Zy9TVkdH
cmFkaWVudEVsZW1lbnRJbXBsLmNwcAotLS0ga3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudElt
cGwuY3BwCTI2IE5vdiAyMDA1IDIyOjE5OjExIC0wMDAwCTEuMTEKKysrIGtzdmcyL3N2Zy9TVkdH
cmFkaWVudEVsZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAwNSAyMzozNTo0OSAtMDAwMApAQCAtNDgs
NiArNDgsNyBAQCBTVkdHcmFkaWVudEVsZW1lbnRJbXBsOjpTVkdHcmFkaWVudEVsZW1lCiAKIFNW
R0dyYWRpZW50RWxlbWVudEltcGw6On5TVkdHcmFkaWVudEVsZW1lbnRJbXBsKCkKIHsKKyAgICBk
ZWxldGUgbV9yZXNvdXJjZTsKIH0KIAogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkltcGwgKlNWR0dy
YWRpZW50RWxlbWVudEltcGw6OmdyYWRpZW50VW5pdHMoKSBjb25zdApAQCAtMTI2LDcgKzEyNyw3
IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50SW1wbDo6bm90aWZ5QXR0cmkKIEtSZW5kZXJpbmdQ
YWludFNlcnZlckdyYWRpZW50ICpTVkdHcmFkaWVudEVsZW1lbnRJbXBsOjpjYW52YXNSZXNvdXJj
ZSgpCiB7CiAgICAgaWYgKCFtX3Jlc291cmNlKSB7Ci0gICAgICAgIEtSZW5kZXJpbmdQYWludFNl
cnZlciAqdGVtcCA9IGNhbnZhcygpLT5yZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlUGFpbnRTZXJ2
ZXIoZ3JhZGllbnRUeXBlKCkpOworICAgICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIgKnRlbXAg
PSBRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZVBhaW50U2VydmVyKGdyYWRpZW50
VHlwZSgpKTsKICAgICAgICAgbV9yZXNvdXJjZSA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdQYWlu
dFNlcnZlckdyYWRpZW50ICo+KHRlbXApOwogICAgICAgICBtX3Jlc291cmNlLT5zZXRMaXN0ZW5l
cih0aGlzKTsKICAgICAgICAgYnVpbGRHcmFkaWVudChtX3Jlc291cmNlKTsKQEAgLTE0NSw2ICsx
NDYsNyBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudEltcGw6OnJlYnVpbGRTdG9wCiAgICAgaWYg
KG1fcmVzb3VyY2UgJiYgIW93bmVyRG9jdW1lbnQoKS0+cGFyc2luZygpKSB7CiAgICAgICAgIEtD
U29ydGVkR3JhZGllbnRTdG9wTGlzdCAmc3RvcHMgPSBtX3Jlc291cmNlLT5ncmFkaWVudFN0b3Bz
KCk7CiAgICAgICAgIHN0b3BzLmNsZWFyKCk7CisgICAgICAgICAvLyBGSVhNRTogTWFudWFsIHN0
eWxlIHJlc29sdXRpb24gaXMgYSBoYWNrCiAgICAgICAgIGtodG1sOjpSZW5kZXJTdHlsZSAqZ3Jh
ZGllbnRTdHlsZSA9IGNvbnN0X2Nhc3Q8U1ZHR3JhZGllbnRFbGVtZW50SW1wbCAqPih0aGlzKS0+
c3R5bGVGb3JSZW5kZXJlcihwYXJlbnQoKS0+cmVuZGVyZXIoKSk7CiAgICAgICAgIGZvciAoS0RP
TTo6Tm9kZUltcGwgKm4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7
CiAgICAgICAgICAgICBTVkdFbGVtZW50SW1wbCAqZWxlbWVudCA9IHN2Z19keW5hbWljX2Nhc3Qo
bik7CkBAIC0xNTIsMTMgKzE1NCwxNSBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudEltcGw6OnJl
YnVpbGRTdG9wCiAgICAgICAgICAgICAgICAgU1ZHU3RvcEVsZW1lbnRJbXBsICpzdG9wID0gc3Rh
dGljX2Nhc3Q8U1ZHU3RvcEVsZW1lbnRJbXBsICo+KGVsZW1lbnQpOwogICAgICAgICAgICAgICAg
IGZsb2F0IHN0b3BPZmZzZXQgPSBzdG9wLT5vZmZzZXQoKS0+YmFzZVZhbCgpOwogICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIFNWR1JlbmRlclN0eWxlICpzdG9wU3R5bGUgPSBnZXRE
b2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlRm9yRWxlbWVudChzdG9wLCBncmFkaWVu
dFN0eWxlKS0+c3ZnU3R5bGUoKTsKLSAgICAgICAgICAgICAgICBRQ29sb3IgYyA9IHN0b3BTdHls
ZS0+c3RvcENvbG9yKCk7Ci0gICAgICAgICAgICAgICAgZmxvYXQgb3BhY2l0eSA9IHN0b3BTdHls
ZS0+c3RvcE9wYWNpdHkoKTsKKyAgICAgICAgICAgICAgICBraHRtbDo6UmVuZGVyU3R5bGUgKnN0
b3BTdHlsZSA9IGdldERvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+c3R5bGVGb3JFbGVtZW50
KHN0b3AsIGdyYWRpZW50U3R5bGUpOworICAgICAgICAgICAgICAgIFFDb2xvciBjID0gc3RvcFN0
eWxlLT5zdmdTdHlsZSgpLT5zdG9wQ29sb3IoKTsKKyAgICAgICAgICAgICAgICBmbG9hdCBvcGFj
aXR5ID0gc3RvcFN0eWxlLT5zdmdTdHlsZSgpLT5zdG9wT3BhY2l0eSgpOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIHN0b3BzLmFkZFN0b3Aoc3RvcE9mZnNldCwgcVJnYmEoYy5y
ZWQoKSwgYy5ncmVlbigpLCBjLmJsdWUoKSwgaW50KG9wYWNpdHkgKiAyNTUuKSkpOworICAgICAg
ICAgICAgICAgIHN0b3BTdHlsZS0+ZGVyZWYoY2FudmFzKCktPnJlbmRlckFyZW5hKCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGdyYWRpZW50U3R5bGUtPmRlcmVmKGNhbnZh
cygpLT5yZW5kZXJBcmVuYSgpKTsKICAgICB9CiB9CiAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdJbWFn
ZUVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9y
dC9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMTEKZGlmZiAtcCAtdSAtcjEuMTEga3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudEltcGwuY3Bw
Ci0tLSBrc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50SW1wbC5jcHAJMjYgTm92IDIwMDUgMjI6MTk6
MTIgLTAwMDAJMS4xMQorKysga3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudEltcGwuY3BwCTI2IE5v
diAyMDA1IDIzOjM1OjUwIC0wMDAwCkBAIC0xMzAsNyArMTMwLDcgQEAga2h0bWw6OlJlbmRlck9i
amVjdCAqU1ZHSW1hZ2VFbGVtZW50SW1wbAogICAgIEtNaW1lVHlwZTo6UHRyIG1pbWVUeXBlID0g
S01pbWVUeXBlOjpmaW5kQnlVUkwoZnVsbFVybCk7CiAgICAgaWYobWltZVR5cGUtPmlzKFFTdHJp
bmc6OmZyb21MYXRpbjEoImltYWdlL3N2Zyt4bWwiKSkpIC8vIGRvZXMgaXQgaGF2ZSBzdmcgY29u
dGVudD8KICAgICB7Ci0gICAgICAgIFJlbmRlclBhdGggKnJldCA9IGNhbnZhcygpLT5yZW5kZXJp
bmdEZXZpY2UoKS0+Y3JlYXRlQ29udGFpbmVyKHN0eWxlLCB0aGlzKTsKKyAgICAgICAgUmVuZGVy
UGF0aCAqcmV0ID0gUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVDb250YWluZXIo
c3R5bGUsIHRoaXMpOwogICAgICAgICBtX2NhY2hlZERvY3VtZW50ID0gb3duZXJEb2N1bWVudCgp
LT5kb2NMb2FkZXIoKS0+cmVxdWVzdERvY3VtZW50KGZ1bGxVcmwsIFFTdHJpbmcoKSk7CiAKICAg
ICAgICAgaWYobV9jYWNoZWREb2N1bWVudCkKQEAgLTE0Nyw4ICsxNDcsOCBAQCBraHRtbDo6UmVu
ZGVyT2JqZWN0ICpTVkdJbWFnZUVsZW1lbnRJbXBsCiAgICAgaWYocGF0aERhdGEuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEtDYW52YXNVc2VyRGF0YSBwYXRoID0gS0NhbnZh
c0NyZWF0b3I6OnNlbGYoKS0+Y3JlYXRlQ2FudmFzUGF0aERhdGEoY2FudmFzKCktPnJlbmRlcmlu
Z0RldmljZSgpLCBwYXRoRGF0YSk7Ci0gICAgcmV0dXJuIGNhbnZhcygpLT5yZW5kZXJpbmdEZXZp
Y2UoKS0+Y3JlYXRlSXRlbShhcmVuYSwgc3R5bGUsIHRoaXMsIHBhdGgpOworICAgIEtDYW52YXNV
c2VyRGF0YSBwYXRoID0gS0NhbnZhc0NyZWF0b3I6OnNlbGYoKS0+Y3JlYXRlQ2FudmFzUGF0aERh
dGEoUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpLCBwYXRoRGF0YSk7CisgICAgcmV0dXJuIFFQ
YWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlSXRlbShhcmVuYSwgc3R5bGUsIHRoaXMs
IHBhdGgpOwogfQogCiB2b2lkIFNWR0ltYWdlRWxlbWVudEltcGw6OmF0dGFjaCgpCkBAIC0xNzUs
NyArMTc1LDcgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnRJbXBsOjpub3RpZnlGaW5pc2hlZAogICAg
IGNhbnZhc1N0eWxlLT5kaXNhYmxlRmlsbFBhaW50ZXIoKTsKICAgICBjYW52YXNTdHlsZS0+ZGlz
YWJsZVN0cm9rZVBhaW50ZXIoKTsKIAotICAgIEtSZW5kZXJpbmdQYWludFNlcnZlciAqZmlsbFBh
aW50U2VydmVyID0gY2FudmFzKCktPnJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVQYWludFNlcnZl
cihQU19JTUFHRSk7CisgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyICpmaWxsUGFpbnRTZXJ2ZXIg
PSBRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZVBhaW50U2VydmVyKFBTX0lNQUdF
KTsKICAgICBjYW52YXNTdHlsZS0+ZmlsbFBhaW50ZXIoKS0+c2V0UGFpbnRTZXJ2ZXIoZmlsbFBh
aW50U2VydmVyKTsKIAogI2lmbmRlZiBBUFBMRV9DT01QSUxFX0hBQ0sKSW5kZXg6IGtzdmcyL3N2
Zy9TVkdNYXJrZXJFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS45CmRpZmYgLXAgLXUgLXIxLjkga3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1l
bnRJbXBsLmNwcAotLS0ga3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnRJbXBsLmNwcAkyNiBOb3Yg
MjAwNSAyMjoxOToxMyAtMDAwMAkxLjkKKysrIGtzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50SW1w
bC5jcHAJMjYgTm92IDIwMDUgMjM6MzU6NTAgLTAwMDAKQEAgLTUzLDYgKzUzLDcgQEAgU1ZHTWFy
a2VyRWxlbWVudEltcGw6OlNWR01hcmtlckVsZW1lbnRJbQogCiBTVkdNYXJrZXJFbGVtZW50SW1w
bDo6flNWR01hcmtlckVsZW1lbnRJbXBsKCkKIHsKKyAgICBkZWxldGUgbV9tYXJrZXI7CiB9CiAK
IHZvaWQgU1ZHTWFya2VyRWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEtET006Ok1h
cHBlZEF0dHJpYnV0ZUltcGwgKmF0dHIpCkBAIC0xNDEsNyArMTQyLDcgQEAgdm9pZCBTVkdNYXJr
ZXJFbGVtZW50SW1wbDo6c2V0T3JpZW50VG9BbgogS0NhbnZhc01hcmtlciAqU1ZHTWFya2VyRWxl
bWVudEltcGw6OmNhbnZhc1Jlc291cmNlKCkKIHsKICAgICBpZighbV9tYXJrZXIpCi0gICAgICAg
IG1fbWFya2VyID0gc3RhdGljX2Nhc3Q8S0NhbnZhc01hcmtlciAqPihjYW52YXMoKS0+cmVuZGVy
aW5nRGV2aWNlKCktPmNyZWF0ZVJlc291cmNlKFJTX01BUktFUikpOworICAgICAgICBtX21hcmtl
ciA9IHN0YXRpY19jYXN0PEtDYW52YXNNYXJrZXIgKj4oUVBhaW50ZXI6OnJlbmRlcmluZ0Rldmlj
ZSgpLT5jcmVhdGVSZXNvdXJjZShSU19NQVJLRVIpKTsKICAgICAKICAgICBtX21hcmtlci0+c2V0
TWFya2VyKHJlbmRlcmVyKCkpOwogCkBAIC0xNjYsNyArMTY3LDcgQEAgS0NhbnZhc01hcmtlciAq
U1ZHTWFya2VyRWxlbWVudEltcGw6OmNhbgogCiBraHRtbDo6UmVuZGVyT2JqZWN0ICpTVkdNYXJr
ZXJFbGVtZW50SW1wbDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEgKmFyZW5hLCBraHRtbDo6
UmVuZGVyU3R5bGUgKnN0eWxlKQogewotICAgIEtDYW52YXNDb250YWluZXIgKm1hcmtlckNvbnRh
aW5lciA9IGNhbnZhcygpLT5yZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlQ29udGFpbmVyKGFyZW5h
LCBzdHlsZSwgdGhpcyk7CisgICAgS0NhbnZhc0NvbnRhaW5lciAqbWFya2VyQ29udGFpbmVyID0g
UVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVDb250YWluZXIoYXJlbmEsIHN0eWxl
LCB0aGlzKTsKICAgICBtYXJrZXJDb250YWluZXItPnNldERyYXdzQ29udGVudHMoZmFsc2UpOyAv
LyBNYXJrZXIgY29udGVudHMgd2lsbCBiZSBleHBsaWNpdGx5IGRyYXduLgogICAgIHJldHVybiBt
YXJrZXJDb250YWluZXI7CiB9CkluZGV4OiBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnRJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcv
U1ZHUGF0dGVybkVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMwpkaWZm
IC1wIC11IC1yMS4xMyBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnRJbXBsLmNwcAotLS0ga3N2
ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50SW1wbC5jcHAJMjYgTm92IDIwMDUgMjI6MzU6NDggLTAw
MDAJMS4xMworKysga3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50SW1wbC5jcHAJMjYgTm92IDIw
MDUgMjM6MzU6NTEgLTAwMDAKQEAgLTU3LDYgKzU3LDcgQEAgU1ZHUGF0dGVybkVsZW1lbnRJbXBs
OjpTVkdQYXR0ZXJuRWxlbWVudAogCiBTVkdQYXR0ZXJuRWxlbWVudEltcGw6On5TVkdQYXR0ZXJu
RWxlbWVudEltcGwoKQogeworICAgIGRlbGV0ZSBtX3BhaW50U2VydmVyOwogfQogCiBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uSW1wbCAqU1ZHUGF0dGVybkVsZW1lbnRJbXBsOjpwYXR0ZXJuVW5pdHMo
KSBjb25zdApAQCAtMTk5LDcgKzIwMCw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnRJbXBsOjpm
aWxsQXR0cmlidXQKIAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudEltcGw6OmRyYXdQYXR0ZXJuQ29u
dGVudEludG9UaWxlKGNvbnN0IFNWR1BhdHRlcm5FbGVtZW50SW1wbCAqdGFyZ2V0LCBjb25zdCBR
U2l6ZSAmbmV3U2l6ZSwgS0NhbnZhc01hdHJpeCBwYXR0ZXJuVHJhbnNmb3JtTWF0cml4KSBjb25z
dAogewotICAgIEtSZW5kZXJpbmdEZXZpY2UgKmRldmljZSA9IGNhbnZhcygpLT5yZW5kZXJpbmdE
ZXZpY2UoKTsKKyAgICBLUmVuZGVyaW5nRGV2aWNlICpkZXZpY2UgPSBRUGFpbnRlcjo6cmVuZGVy
aW5nRGV2aWNlKCk7CiAgICAgCiAgICAgU1ZHU3R5bGVkRWxlbWVudEltcGwgKmFjdGl2ZUVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50SW1wbCAqPihtX3BhaW50U2VydmVyLT5h
Y3RpdmVDbGllbnQoKS0+ZWxlbWVudCgpKTsKIApAQCAtMzU5LDcgKzM2MCw3IEBAIHZvaWQgU1ZH
UGF0dGVybkVsZW1lbnRJbXBsOjpub3RpZnlBdHRyaWIKIAoga2h0bWw6OlJlbmRlck9iamVjdCAq
U1ZHUGF0dGVybkVsZW1lbnRJbXBsOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEs
IGtodG1sOjpSZW5kZXJTdHlsZSAqc3R5bGUpCiB7Ci0gICAgS0NhbnZhc0NvbnRhaW5lciAqcGF0
dGVybkNvbnRhaW5lciA9IGNhbnZhcygpLT5yZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlQ29udGFp
bmVyKGFyZW5hLCBzdHlsZSwgdGhpcyk7CisgICAgS0NhbnZhc0NvbnRhaW5lciAqcGF0dGVybkNv
bnRhaW5lciA9IFFQYWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlQ29udGFpbmVyKGFy
ZW5hLCBzdHlsZSwgdGhpcyk7CiAgICAgcGF0dGVybkNvbnRhaW5lci0+c2V0RHJhd3NDb250ZW50
cyhmYWxzZSk7CiAgICAgcmV0dXJuIHBhdHRlcm5Db250YWluZXI7CiB9CkBAIC0zNjcsNyArMzY4
LDcgQEAga2h0bWw6OlJlbmRlck9iamVjdCAqU1ZHUGF0dGVybkVsZW1lbnRJbQogS1JlbmRlcmlu
Z1BhaW50U2VydmVyUGF0dGVybiAqU1ZHUGF0dGVybkVsZW1lbnRJbXBsOjpjYW52YXNSZXNvdXJj
ZSgpCiB7CiAgICAgaWYgKCFtX3BhaW50U2VydmVyKSB7Ci0gICAgICAgIEtSZW5kZXJpbmdQYWlu
dFNlcnZlciAqcHNlcnZlciA9IGNhbnZhcygpLT5yZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlUGFp
bnRTZXJ2ZXIoS0NQYWludFNlcnZlclR5cGUoUFNfUEFUVEVSTikpOworICAgICAgICBLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXIgKnBzZXJ2ZXIgPSBRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNlKCktPmNy
ZWF0ZVBhaW50U2VydmVyKEtDUGFpbnRTZXJ2ZXJUeXBlKFBTX1BBVFRFUk4pKTsKICAgICAgICAg
bV9wYWludFNlcnZlciA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4g
Kj4ocHNlcnZlcik7CiAgICAgICAgIG1fcGFpbnRTZXJ2ZXItPnNldExpc3RlbmVyKGNvbnN0X2Nh
c3Q8U1ZHUGF0dGVybkVsZW1lbnRJbXBsICo+KHRoaXMpKTsKICAgICB9CkluZGV4OiBrc3ZnMi9z
dmcvU1ZHU1ZHRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9T
VkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMTMKZGlmZiAtcCAtdSAtcjEuMTMga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBs
LmNwcAotLS0ga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAwNSAyMjoz
NTo0OCAtMDAwMAkxLjEzCisrKyBrc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudEltcGwuY3BwCTI2IE5v
diAyMDA1IDIzOjM1OjUxIC0wMDAwCkBAIC00NDQsNyArNDQ0LDcgQEAgU1ZHTWF0cml4SW1wbCAq
U1ZHU1ZHRWxlbWVudEltcGw6OmdldFNjcgogCiBraHRtbDo6UmVuZGVyT2JqZWN0ICpTVkdTVkdF
bGVtZW50SW1wbDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEgKmFyZW5hLCBraHRtbDo6UmVu
ZGVyU3R5bGUgKnN0eWxlKQogewotICAgIEtDYW52YXNDb250YWluZXIgKnJvb3RDb250YWluZXIg
PSBjYW52YXMoKS0+cmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZUNvbnRhaW5lcihhcmVuYSwgc3R5
bGUsIHRoaXMpOworICAgIEtDYW52YXNDb250YWluZXIgKnJvb3RDb250YWluZXIgPSBRUGFpbnRl
cjo6cmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZUNvbnRhaW5lcihhcmVuYSwgc3R5bGUsIHRoaXMp
OwogCiAgICAgLy8gRklYTUU6IGFsbCB0aGlzIHNldHVwIHNob3VsZCBiZSBkb25lIGFmdGVyIGF0
dHJpYnV0ZXNDaGFuZ2VkLCBub3QgaGVyZS4KICAgICBmbG9hdCBfeCA9IHgoKS0+YmFzZVZhbCgp
LT52YWx1ZSgpOwpJbmRleDoga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnRJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHU3R5bGVk
RWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEyCmRpZmYgLXAgLXUgLXIx
LjEyIGtzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdT
dHlsZWRFbGVtZW50SW1wbC5jcHAJMjYgTm92IDIwMDUgMjI6MzU6NDggLTAwMDAJMS4xMgorKysg
a3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAwNSAyMzozNTo1MSAt
MDAwMApAQCAtNzMsOCArNzMsOCBAQCBraHRtbDo6UmVuZGVyT2JqZWN0ICpTVkdTdHlsZWRFbGVt
ZW50SW1wCiAgICAgS0NQYXRoRGF0YUxpc3QgcGF0aERhdGEgPSB0b1BhdGhEYXRhKCk7CiAgICAg
aWYgKHBhdGhEYXRhLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgS0NhbnZhc1Vz
ZXJEYXRhIHBhdGggPSBLQ2FudmFzQ3JlYXRvcjo6c2VsZigpLT5jcmVhdGVDYW52YXNQYXRoRGF0
YShjYW52YXMoKS0+cmVuZGVyaW5nRGV2aWNlKCksIHBhdGhEYXRhKTsKLSAgICByZXR1cm4gY2Fu
dmFzKCktPnJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVJdGVtKGFyZW5hLCBzdHlsZSwgdGhpcywg
cGF0aCk7CisgICAgS0NhbnZhc1VzZXJEYXRhIHBhdGggPSBLQ2FudmFzQ3JlYXRvcjo6c2VsZigp
LT5jcmVhdGVDYW52YXNQYXRoRGF0YShRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNlKCksIHBhdGhE
YXRhKTsKKyAgICByZXR1cm4gUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVJdGVt
KGFyZW5hLCBzdHlsZSwgdGhpcywgcGF0aCk7CiB9CiAKIHZvaWQgU1ZHU3R5bGVkRWxlbWVudElt
cGw6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEtET006Ok1hcHBlZEF0dHJpYnV0ZUltcGwgKmF0dHIp
CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50SW1wbDo6dXBkYXRlQ2Fu
dmFzSQogICAgICAgICAmJiBwYXJlbnRFbGVtZW50LT5jaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KHRoaXMpKQogICAgICAgICByZW5kZXJTZWN0aW9uID0gdHJ1ZTsKIAotICAgIEtDYW52YXNVc2Vy
RGF0YSBuZXdQYXRoID0gS0NhbnZhc0NyZWF0b3I6OnNlbGYoKS0+Y3JlYXRlQ2FudmFzUGF0aERh
dGEoY2FudmFzKCktPnJlbmRlcmluZ0RldmljZSgpLCB0b1BhdGhEYXRhKCkpOworICAgIEtDYW52
YXNVc2VyRGF0YSBuZXdQYXRoID0gS0NhbnZhc0NyZWF0b3I6OnNlbGYoKS0+Y3JlYXRlQ2FudmFz
UGF0aERhdGEoUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpLCB0b1BhdGhEYXRhKCkpOwogICAg
IHJlbmRlclBhdGgtPmNoYW5nZVBhdGgobmV3UGF0aCk7CiAKICAgICBpZihyZW5kZXJTZWN0aW9u
KQpAQCAtMTU4LDcgKzE1OCw3IEBAIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnRJbXBsICpTVkdTdHls
ZWRFbGUKIHsKICAgICBpZihjYW52YXMoKSkKICAgICB7Ci0gICAgICAgIEtDYW52YXNVc2VyRGF0
YSBuZXdQYXRoID0gS0NhbnZhc0NyZWF0b3I6OnNlbGYoKS0+Y3JlYXRlQ2FudmFzUGF0aERhdGEo
Y2FudmFzKCktPnJlbmRlcmluZ0RldmljZSgpLCB0b1BhdGhEYXRhKCkpOworICAgICAgICBLQ2Fu
dmFzVXNlckRhdGEgbmV3UGF0aCA9IEtDYW52YXNDcmVhdG9yOjpzZWxmKCktPmNyZWF0ZUNhbnZh
c1BhdGhEYXRhKFFQYWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKSwgdG9QYXRoRGF0YSgpKTsKICAg
ICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyUGF0aCAqPihyZW5kZXJlcigpKS0+Y2hhbmdlUGF0aChu
ZXdQYXRoKTsKICAgICB9CiAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdTd2l0Y2hFbGVtZW50SW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NW
R1N3aXRjaEVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44CmRpZmYgLXAg
LXUgLXIxLjgga3N2ZzIvc3ZnL1NWR1N3aXRjaEVsZW1lbnRJbXBsLmNwcAotLS0ga3N2ZzIvc3Zn
L1NWR1N3aXRjaEVsZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAwNSAyMjozNTo0OSAtMDAwMAkxLjgK
KysrIGtzdmcyL3N2Zy9TVkdTd2l0Y2hFbGVtZW50SW1wbC5jcHAJMjYgTm92IDIwMDUgMjM6MzU6
NTEgLTAwMDAKQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBTVkdTd2l0Y2hFbGVtZW50SW1wbDo6Y2hp
bGRTaG91bGRDcgogCiBraHRtbDo6UmVuZGVyT2JqZWN0ICpTVkdTd2l0Y2hFbGVtZW50SW1wbDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEgKmFyZW5hLCBraHRtbDo6UmVuZGVyU3R5bGUgKnN0
eWxlKQogewotICAgIHJldHVybiBjYW52YXMoKS0+cmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZUNv
bnRhaW5lcihhcmVuYSwgc3R5bGUsIHRoaXMpOworICAgIHJldHVybiBRUGFpbnRlcjo6cmVuZGVy
aW5nRGV2aWNlKCktPmNyZWF0ZUNvbnRhaW5lcihhcmVuYSwgc3R5bGUsIHRoaXMpOwogfQogCiAv
LyB2aW06dHM9NDpub2V0CkluZGV4OiBrc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdVc2VF
bGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTEKZGlmZiAtcCAtdSAtcjEu
MTEga3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnRJbXBsLmNwcAotLS0ga3N2ZzIvc3ZnL1NWR1VzZUVs
ZW1lbnRJbXBsLmNwcAkyNiBOb3YgMjAwNSAyMjoxOToxOCAtMDAwMAkxLjExCisrKyBrc3ZnMi9z
dmcvU1ZHVXNlRWxlbWVudEltcGwuY3BwCTI2IE5vdiAyMDA1IDIzOjM1OjUxIC0wMDAwCkBAIC0x
NzEsNyArMTcxLDcgQEAgYm9vbCBTVkdVc2VFbGVtZW50SW1wbDo6aGFzQ2hpbGROb2RlcygpIAog
CiBraHRtbDo6UmVuZGVyT2JqZWN0ICpTVkdVc2VFbGVtZW50SW1wbDo6Y3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEgKmFyZW5hLCBraHRtbDo6UmVuZGVyU3R5bGUgKnN0eWxlKQogewotICAgIHJl
dHVybiBjYW52YXMoKS0+cmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZUNvbnRhaW5lcihhcmVuYSwg
c3R5bGUsIHRoaXMpOworICAgIHJldHVybiBRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNlKCktPmNy
ZWF0ZUNvbnRhaW5lcihhcmVuYSwgc3R5bGUsIHRoaXMpOwogfQogCiAvLyB2aW06dHM9NDpub2V0
CkluZGV4OiBrd3EvS1dRUGFpbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9X
ZWJDb3JlL2t3cS9LV1FQYWludGVyLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuODMKZGlmZiAt
cCAtdSAtcjEuODMga3dxL0tXUVBhaW50ZXIuaAotLS0ga3dxL0tXUVBhaW50ZXIuaAkyMiBOb3Yg
MjAwNSAyMzowNDoyOCAtMDAwMAkxLjgzCisrKyBrd3EvS1dRUGFpbnRlci5oCTI2IE5vdiAyMDA1
IDIzOjM1OjUxIC0wMDAwCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIFFQYWludGVyUHJpdmF0ZTsK
IGNsYXNzIFFTdHJpbmc7CiAKICNpZiBTVkdfU1VQUE9SVAorY2xhc3MgS1JlbmRlcmluZ0Rldmlj
ZTsKIGNsYXNzIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0OwogI2VuZGlmCiAKQEAgLTE0Miw2ICsx
NDMsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgU1ZHX1NVUFBPUlQKICAgICBLUmVuZGVyaW5nRGV2
aWNlQ29udGV4dCAqY3JlYXRlUmVuZGVyaW5nRGV2aWNlQ29udGV4dCgpOworICAgIHN0YXRpYyBL
UmVuZGVyaW5nRGV2aWNlICpyZW5kZXJpbmdEZXZpY2UoKTsKICNlbmRpZgogICAgIAogICAgIHN0
YXRpYyBpbnQgY29tcG9zaXRlT3BlcmF0b3JGcm9tU3RyaW5nIChjb25zdCBRU3RyaW5nICZhU3Ry
aW5nKTsKSW5kZXg6IGt3cS9LV1FQYWludGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9XZWJDb3JlL2t3cS9LV1FQYWludGVyLm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE0
NwpkaWZmIC1wIC11IC1yMS4xNDcga3dxL0tXUVBhaW50ZXIubW0KLS0tIGt3cS9LV1FQYWludGVy
Lm1tCTIyIE5vdiAyMDA1IDIzOjA0OjI4IC0wMDAwCTEuMTQ3CisrKyBrd3EvS1dRUGFpbnRlci5t
bQkyNiBOb3YgMjAwNSAyMzozNTo1MiAtMDAwMApAQCAtNzIsNiArNzIsOSBAQCBzdHJ1Y3QgUVBh
aW50ZXJQcml2YXRlIHsKICAgICBpbnQgZm9jdXNSaW5nT2Zmc2V0OwogICAgIGJvb2wgaGFzRm9j
dXNSaW5nQ29sb3I7CiAgICAgUUNvbG9yIGZvY3VzUmluZ0NvbG9yOworI2lmIFNWR19TVVBQT1JU
CisgICAgS1JlbmRlcmluZ0RldmljZSAqcmVuZGVyaW5nRGV2aWNlOworI2VuZGlmCiB9OwogCiBR
UGFpbnRlclByaXZhdGU6OlFQYWludGVyUHJpdmF0ZSgpIDogdGV4dFJlbmRlcmVyKDApLCBmb2N1
c1JpbmdQYXRoKDApLCBmb2N1c1JpbmdXaWR0aCgwKSwgZm9jdXNSaW5nT2Zmc2V0KDApLApAQCAt
ODgzLDYgKzg4NiwxMiBAQCBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCAqUVBhaW50ZXI6OmNyZWF0
CiB7CiAgICAgcmV0dXJuIG5ldyBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF1YXJ0eihjdXJyZW50
Q29udGV4dCgpKTsKIH0KKworS1JlbmRlcmluZ0RldmljZSAqUVBhaW50ZXI6OnJlbmRlcmluZ0Rl
dmljZSgpCit7CisgICAgc3RhdGljIEtSZW5kZXJpbmdEZXZpY2UgKl9fc2hhcmVkUmVuZGVyaW5n
RGV2aWNlID0gbmV3IEtSZW5kZXJpbmdEZXZpY2VRdWFydHooKTsKKyAgICByZXR1cm4gX19zaGFy
ZWRSZW5kZXJpbmdEZXZpY2U7Cit9CiAjZW5kaWYKIAogdm9pZCBRUGFpbnRlcjo6YmVnaW5UcmFu
c3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQpJbmRleDoga3dxL0tXUVJlbmRlclRyZWVEZWJ1
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVJlbmRl
clRyZWVEZWJ1Zy5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDgKZGlmZiAtcCAtdSAtcjEu
NDgga3dxL0tXUVJlbmRlclRyZWVEZWJ1Zy5jcHAKLS0tIGt3cS9LV1FSZW5kZXJUcmVlRGVidWcu
Y3BwCTIxIE5vdiAyMDA1IDA0OjAyOjAyIC0wMDAwCTEuNDgKKysrIGt3cS9LV1FSZW5kZXJUcmVl
RGVidWcuY3BwCTI2IE5vdiAyMDA1IDIzOjM1OjUyIC0wMDAwCkBAIC00NDIsNiArNDQyLDcgQEAg
UVN0cmluZyBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFJlbmRlck9iagogICAgICAgICBRVGV4dFN0
cmVhbSB0cygmcyk7CiAjaWYgU1ZHX1NVUFBPUlQKICAgICAgICAgdHMucHJlY2lzaW9uKDIpOwor
ICAgICAgICB3cml0ZVJlbmRlclJlc291cmNlcyh0cywgby0+ZG9jdW1lbnQoKSk7CiAjZW5kaWYK
ICAgICAgICAgaWYgKG8pIHsKICAgICAgICAgICAgIG8tPmNhbnZhcygpLT52aWV3KCktPmxheW91
dCgpOwo=
</data>
<flag name="review"
          id="893"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>