<?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>81181</bug_id>
          
          <creation_ts>2012-03-14 19:03:26 -0700</creation_ts>
          <short_desc>[chromium] Decide occlusion in paint culling with CCOcclusionTracker</short_desc>
          <delta_ts>2012-03-15 20:58:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          <dependson>81306</dependson>
          <blocked>81175</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>579029</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-14 19:03:26 -0700</bug_when>
    <thetext>[chromium] Use CCOcclusionTracker to decide occlusion in paint culling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579046</commentid>
    <comment_count>1</comment_count>
      <attachid>131976</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-14 19:12:59 -0700</bug_when>
    <thetext>Created attachment 131976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579053</commentid>
    <comment_count>2</comment_count>
      <attachid>131977</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-14 19:20:43 -0700</bug_when>
    <thetext>Created attachment 131977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579060</commentid>
    <comment_count>3</comment_count>
      <attachid>131979</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-14 19:53:40 -0700</bug_when>
    <thetext>Created attachment 131979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579449</commentid>
    <comment_count>4</comment_count>
      <attachid>131979</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-15 09:45:37 -0700</bug_when>
    <thetext>Comment on attachment 131979
Patch

Looks good! Such a large diff for so few lines of real change.  R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580050</commentid>
    <comment_count>5</comment_count>
      <attachid>131979</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-15 19:41:18 -0700</bug_when>
    <thetext>Comment on attachment 131979
Patch

Clearing flags on attachment: 131979

Committed r110929: &lt;http://trac.webkit.org/changeset/110929&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580051</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-15 19:41:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131976</attachid>
            <date>2012-03-14 19:12:59 -0700</date>
            <delta_ts>2012-03-14 19:20:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81181-20120314221258.patch</filename>
            <type>text/plain</type>
            <size>52876</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNjZTM5Y2Q0YjllZGU2
NDE1ZGFmZTY5NjkyNzA3ZjQ1MmFmMjQ4Ni4uNGMyOTEwYmViOGI5ZmE1YzY2Yzk0OWNkNjhlYWI5
YmI5M2RiOGU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAzLTE0ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRGVj
aWRlIG9jY2x1c2lvbiBpbiBwYWludCBjdWxsaW5nIHdpdGggQ0NPY2NsdXNpb25UcmFja2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTE4MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdW1iIGEgQ0NP
Y2NsdXNpb25UcmFja2VyKiBhcm91bmQgaW5zdGVhZCBvZiBhIGJhcmUgUmVnaW9uLCBzbyB0aGF0
IGl0CisgICAgICAgIGNhbiBtYWtlIGEgbW9yZSBpbmZvcm1lZCBkZWNpc2lvbiBpZiBhIHRpbGUg
aXMgb2NjbHVkZWQgb3Igbm90IGR1cmluZworICAgICAgICBwYWludC4KKworICAgICAgICBDb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENvbnRlbnRMYXllckNocm9taXVtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0
eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9t
aXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEltYWdlTGF5ZXJDaHJvbWl1bSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGVUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZUlkbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoVGlsZWRMYXllckNocm9taXVtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzSWZEaXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FG
b3JSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFp
bnRMYXllckNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaDoKKwogMjAxMi0wMy0xNCAgSWdvciBPbGl2ZWlyYSAgPGlnb3Iu
b0BzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFNwbGl0IHRoZSBleHRyYSBsb2dpYyBvdXQg
b2YgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDVkNDdmZTg4ZTAwNjI4OGJlYzA4NGJhNTQyMjEyMTc5ZmZkNWFmYzMuLmI1ZDNmYjYz
MWM5NDJiMTA1ZWZhMjY0NjczM2U0ZDk4ODAwZDE2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDMtMTQgIERhbmEgSmFuc2VucyAgPGRhbmFrakBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBEZWNpZGUgb2NjbHVzaW9uIGluIHBh
aW50IGN1bGxpbmcgd2l0aCBDQ09jY2x1c2lvblRyYWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cDoKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6
OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmc6OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAg
IChXVEY6OlRlc3RMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAg
ICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChUZXN0Q0NPY2Ns
dXNpb25UcmFja2VyKToKKyAgICAgICAgKFdURjo6VGVzdENDT2NjbHVzaW9uVHJhY2tlcjo6VGVz
dENDT2NjbHVzaW9uVHJhY2tlcik6CisgICAgICAgIChXVEY6OlRlc3RDQ09jY2x1c2lvblRyYWNr
ZXI6OnNldE9jY2x1c2lvbik6CisgICAgICAgIChXVEY6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXI6
OmxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UpOgorICAgICAgICAoV1RGKToKKyAgICAg
ICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAg
ICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZSk6Cisg
ICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KToKKyAgICAgICAgKFdURjo6VEVTVCk6CisKIDIwMTItMDMtMTMgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgogCiAgICAgICAgIFNlcGFyYXRlIE5PVElGSUNBVElPTlMgYW5kIExFR0FDWV9O
T1RJRklDQVRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggN2E2
Njk4NGJkNzYyYjBjZDk4Mjk1OWI2MTVkNzM4NDU5MWViMGQ0My4uYzAwNzIxNTc5NzlkNzhiNTlh
YjM3ZTBmMjJkYjI2NTYyMjljMDQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcApAQCAtOTMsNyArOTMsNyBAQCBib29sIENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3c0Nv
bnRlbnQoKSBjb25zdAogICAgIHJldHVybiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVu
dCgpICYmIG1fZGVsZWdhdGU7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50
Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKK3ZvaWQg
Q29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVz
aW9uVHJhY2tlciogb2NjbHVzaW9uKQogewogICAgIHVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0
aW9uKCk7CiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwpAQCAtMTA1LDExICsx
MDUsMTEgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHko
Y29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWMKICAgICBpZiAoZHJhd3NDb250ZW50KCkp
CiAgICAgICAgIGxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsKIAotICAgIHByZXBhcmVU
b1VwZGF0ZShsYXllclJlY3QsIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgIHByZXBhcmVUb1Vw
ZGF0ZShsYXllclJlY3QsIG9jY2x1c2lvbik7CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsK
IH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5
KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKK3ZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIq
IG9jY2x1c2lvbikKIHsKICAgICBpZiAoIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47
CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50
Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW4KICAgICBpZiAobGF5
ZXJSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJlcGFyZVRvVXBkYXRl
SWRsZShsYXllclJlY3QsIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgIHByZXBhcmVUb1VwZGF0
ZUlkbGUobGF5ZXJSZWN0LCBvY2NsdXNpb24pOwogICAgIGlmIChuZWVkc0lkbGVQYWludChsYXll
clJlY3QpKQogICAgICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmgKaW5kZXggZmE1OTAxZTJhZDJkOTUwMjZhNjIwMThjOGNkNjFlNjg0ZTc0MmFk
ZC4uZTY5OTRhMjFhZWZhYzIxNDA4ODdlNWJiZDhhYmIyMDNjOWFiODE3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC00MSw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTGF5ZXJUaWxlckNocm9taXVtOwogY2xhc3MgTGF5ZXJUZXh0dXJlVXBkYXRl
cjsKLWNsYXNzIFJlZ2lvbjsKIAogY2xhc3MgQ29udGVudExheWVyRGVsZWdhdGUgewogcHVibGlj
OgpAQCAtNTksOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckRlbGVnYXRlKCkgeyBt
X2RlbGVnYXRlID0gMDsgfQogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9j
Y2x1ZGVkU2NyZWVuU3BhY2UpOwotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lm
RGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CisgICAg
dmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRy
YWNrZXIqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDYxMWFiMmE2YTY1ODA1Mzk1NmU4YjhlZDMyODBk
ZmIxYjAwZGIwNTkuLjM5MzkxNThhODViNTczZmIyZDRiNTdmZTFhNWVmNmYyZmJmMGZmMDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQg
SW1hZ2VMYXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAgICAgc2V0
TmVlZHNEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRl
bnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCit2b2lkIEltYWdl
TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFj
a2VyKiBvY2NsdXNpb24pCiB7CiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwog
ICAgIGlmIChtX25lZWRzRGlzcGxheSkgewpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgSW1hZ2VM
YXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVk
U2NyZWVuU3BhY2UpCiAgICAgICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CiAgICAgfQogCi0g
ICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2NjbHVkZWRTY3JlZW5TcGFj
ZSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2NjbHVzaW9uKTsK
IH0KIAogdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVk
ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCBkZWFmZDM3ZTczM2VhMzhiYzRk
ZDViYmRmMTIzN2U1ODRkNGIwOTllLi5iMDFlZjI5ZGExM2QwZTExMTVlODQxYWMyMGY0ZTYwZThh
YzE2NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNDEsNyArNDEsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlOwogY2xhc3MgSW1hZ2VMYXllclRleHR1
cmVVcGRhdGVyOwotY2xhc3MgUmVnaW9uOwogCiAvLyBBIExheWVyIHRoYXQgY29udGFpbnMgb25s
eSBhbiBJbWFnZSBlbGVtZW50LgogY2xhc3MgSW1hZ2VMYXllckNocm9taXVtIDogcHVibGljIFRp
bGVkTGF5ZXJDaHJvbWl1bSB7CkBAIC01MCw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5JbWFnZUxheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVn
aW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50
c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CiAgICAgdmlydHVhbCBib29sIG5l
ZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRDb250ZW50cyhJbWFnZSog
aW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDg2ZmRmOTUxNTY4ODkzNzhjM2Q2MmQxOTE5
YTc5NWEyY2UxMjUxNmEuLmU1MmVjNDhjN2Q1N2M2Y2FmYTQ4ZmFhZTdkMGMzNjVhNWU0ZjkzNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmgKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJT
dXJmYWNlQ2hyb21pdW0uaCIKICNpbmNsdWRlICJTaGFkZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUg
IlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2Vy
LmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KQEAgLTE2MSw4ICsxNjIsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5
cGljYWxseSBuZWVkIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2
aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyog
b2NjbHVkZWRTY3JlZW5TcGFjZSAqLykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lv
blRyYWNrZXIqIC8qIG9jY2x1c2lvbiAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGlkbGVQYWlu
dENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9jY2x1c2lvbiAq
LykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhp
Y3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0
dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCAwMjU5YTIzZDM4
NmRkM2QxYWM4YTk4YmMyODRlMjM4MmM1NGM2M2UxLi5jZWQzYjFkODU2NDkzMzg5NTZkZGY1OTE1
ZDkxOWYwMjMyNTAyY2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5
NywyMyArMzk3LDEwIEBAIGJvb2wgVGlsZWRMYXllckNocm9taXVtOjp0aWxlTmVlZHNCdWZmZXJl
ZFVwZGF0ZShVcGRhdGFibGVUaWxlKiB0aWxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi0vLyBG
SVhNRTogVGhpcyBnZXRzIHJvbGxlZCBpbnRvIENDT2NjbHVzaW9uVHJhY2tlciB3aGVuIHdlIHN0
b3AgcGFzc2luZyBhcm91bmQgUmVnaW9uIG9iamVjdHMuCi1zdGF0aWMgaW5saW5lIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGNvbnRlbnRUb0xheWVyVHJhbnNmb3JtKGNvbnN0IEludFNpemUmIGJvdW5k
c0luTGF5ZXJTcGFjZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzSW5Db250ZW50U3BhY2UpCi17Ci0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwotICAgIC8vIFNjYWxlIGZyb20gY29u
dGVudCBzcGFjZSB0byBsYXllciBzcGFjZQotICAgIHRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0o
Ym91bmRzSW5MYXllclNwYWNlLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGJvdW5kc0lu
Q29udGVudFNwYWNlLndpZHRoKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91
bmRzSW5MYXllclNwYWNlLmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihib3VuZHNJbkNv
bnRlbnRTcGFjZS5oZWlnaHQoKSkpOwotICAgIHJldHVybiB0cmFuc2Zvcm07Ci19Ci0KLXZvaWQg
VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBs
ZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20sIGNvbnN0IFJlZ2lvbiYgb2NjbHVk
ZWRTY3JlZW5TcGFjZSkKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVU
aWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20s
IGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogewogICAgIGNyZWF0ZVRleHR1
cmVVcGRhdGVySWZOZWVkZWQoKTsKIAotICAgIC8vIFRpbGVzIGFyZSBpbiB0aGUgbGF5ZXIncyBj
b250ZW50IHNwYWNlLCB0aGUgb2NjbHVkZWQgcmVnaW9uIGlzIGluIHNjcmVlbiBzcGFjZS4KLSAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9TY3JlZW5TcGFjZSA9IHNjcmVlblNwYWNl
VHJhbnNmb3JtKCkgKiBjb250ZW50VG9MYXllclRyYW5zZm9ybShib3VuZHMoKSwgY29udGVudEJv
dW5kcygpKTsKLQogICAgIC8vIENyZWF0ZSB0aWxlcyBhcyBuZWVkZWQsIGV4cGFuZGluZyBhIGRp
cnR5IHJlY3QgdG8gY29udGFpbiBhbGwKICAgICAvLyB0aGUgZGlydHkgcmVnaW9ucyBjdXJyZW50
bHkgYmVpbmcgZHJhd24uIEFsbCBkaXJ0eSB0aWxlcyB0aGF0IGFyZSB0byBiZSBwYWludGVkCiAg
ICAgLy8gZ2V0IHRoZWlyIG1fdXBkYXRlUmVjdCBzZXQgdG8gbV9kaXJ0eVJlY3QgYW5kIG1fZGly
dHlSZWN0IGNsZWFyZWQuIFRoaXMgd2F5IGlmCkBAIC00MjgsOSArNDE1LDkgQEAgdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQs
IGludCB0b3AsIGludAogICAgICAgICAgICAgLy8gV2hlbiBub3QgaWRsZSBwYWludGluZywgaWYg
dGhlIHZpc2libGUgcmVnaW9uIG9mIHRoZSB0aWxlIGlzIG9jY2x1ZGVkLCBkb24ndCByZXNlcnZl
IGEgdGV4dHVyZSBvciBtYXJrIGl0IGZvciB1cGRhdGUuCiAgICAgICAgICAgICAvLyBJZiBhbnkg
cGFydCBvZiB0aGUgdGlsZSBpcyB2aXNpYmxlLCB0aGVuIHdlIG5lZWQgdG8gcGFpbnQgaXQgc28g
dGhlIHRpbGUgaXMgcHVzaGVkIHRvIHRoZSBpbXBsIHRocmVhZC4KICAgICAgICAgICAgIC8vIFRo
aXMgd2lsbCBhbHNvIGF2b2lkIHBhaW50aW5nIHRoZSB0aWxlIGluIHRoZSBuZXh0IGxvb3AsIGJl
bG93LgotICAgICAgICAgICAgaWYgKCFpZGxlKSB7CisgICAgICAgICAgICBpZiAob2NjbHVzaW9u
KSB7CiAgICAgICAgICAgICAgICAgSW50UmVjdCB2aXNpYmxlVGlsZVJlY3QgPSBpbnRlcnNlY3Rp
b24obV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKSwgdmlzaWJsZUxheWVyUmVjdCgpKTsKLSAgICAg
ICAgICAgICAgICBpZiAob2NjbHVkZWRTY3JlZW5TcGFjZS5jb250YWlucyhjb250ZW50VG9TY3Jl
ZW5TcGFjZS5tYXBSZWN0KHZpc2libGVUaWxlUmVjdCkpKQorICAgICAgICAgICAgICAgIGlmIChv
Y2NsdXNpb24tPm9jY2x1ZGVkKHRoaXMsIHZpc2libGVUaWxlUmVjdCkpCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCkBAIC01NzIsNyArNTU5LDcgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnJlc2V0VXBkYXRlU3RhdGUoKQogICAgIH0KIH0KIAotdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXll
clJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKK3ZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25z
dCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKIHsKICAgICBtX3NraXBzRHJhdyA9IGZh
bHNlOwogICAgIG1fc2tpcHNJZGxlUGFpbnQgPSBmYWxzZTsKQEAgLTU4OSwxMCArNTc2LDEwIEBA
IHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYg
bGF5ZXJSZWN0LCBjb25zdCBSZWdpb24mCiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRv
bTsKICAgICBtX3RpbGVyLT5sYXllclJlY3RUb1RpbGVJbmRpY2VzKGxheWVyUmVjdCwgbGVmdCwg
dG9wLCByaWdodCwgYm90dG9tKTsKIAotICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBs
ZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20sIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgIHByZXBh
cmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20sIG9jY2x1c2lv
bik7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNl
KQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKIHsK
ICAgICAvLyBBYm9ydCBpZiB3ZSBoYXZlIGFscmVhZHkgcHJlcGFyZWQgYSBwYWludCBvciBydW4g
b3V0IG9mIG1lbW9yeS4KICAgICBpZiAobV9za2lwc0lkbGVQYWludCB8fCAhbV9wYWludFJlY3Qu
aXNFbXB0eSgpKQpAQCAtNjE0LDcgKzYwMSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgUmVnCiAg
ICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwg
cmlnaHQsIGJvdHRvbSk7CiAKICAgICAvLyBQcmVwYWludCBhbnl0aGluZyB0aGF0IHdhcyBvY2Ns
dWRlZCBidXQgaW5zaWRlIHRoZSBsYXllcidzIHZpc2libGUgcmVnaW9uLgotICAgIHByZXBhcmVU
b1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3Jl
ZW5TcGFjZSk7CisgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCByaWdo
dCwgYm90dG9tLCAwKTsKICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBz
SWRsZVBhaW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTYyNCwyNSArNjExLDI1IEBAIHZvaWQg
VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxh
eWVyUmVjdCwgY29uc3QgUmVnCiAgICAgd2hpbGUgKCFtX3NraXBzSWRsZVBhaW50ICYmIChsZWZ0
ID4gcHJlcGFpbnRMZWZ0IHx8IHRvcCA+IHByZXBhaW50VG9wIHx8IHJpZ2h0IDwgcHJlcGFpbnRS
aWdodCB8fCBib3R0b20gPCBwcmVwYWludEJvdHRvbSkpIHsKICAgICAgICAgaWYgKGJvdHRvbSA8
IHByZXBhaW50Qm90dG9tKSB7CiAgICAgICAgICAgICArK2JvdHRvbTsKLSAgICAgICAgICAgIHBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIGJvdHRvbSwgcmlnaHQsIGJvdHRvbSwgb2Nj
bHVkZWRTY3JlZW5TcGFjZSk7CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVl
LCBsZWZ0LCBib3R0b20sIHJpZ2h0LCBib3R0b20sIDApOwogICAgICAgICAgICAgaWYgKCFtX3Bh
aW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAodG9wID4gcHJlcGFpbnRUb3ApIHsKICAgICAg
ICAgICAgIC0tdG9wOwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVm
dCwgdG9wLCByaWdodCwgdG9wLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICAgICAgICAgIHBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIHRvcCwgMCk7CiAgICAg
ICAgICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChsZWZ0ID4gcHJl
cGFpbnRMZWZ0KSB7CiAgICAgICAgICAgICAtLWxlZnQ7Ci0gICAgICAgICAgICBwcmVwYXJlVG9V
cGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIGxlZnQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5T
cGFjZSk7CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3As
IGxlZnQsIGJvdHRvbSwgMCk7CiAgICAgICAgICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHko
KSB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGlmIChyaWdodCA8IHByZXBhaW50UmlnaHQpIHsKICAgICAgICAgICAgICsrcmln
aHQ7Ci0gICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCByaWdodCwgdG9wLCBy
aWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICAgICAgICAgIHByZXBhcmVU
b1VwZGF0ZVRpbGVzKHRydWUsIHJpZ2h0LCB0b3AsIHJpZ2h0LCBib3R0b20sIDApOwogICAgICAg
ICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aAppbmRleCA2ZmY5MDFkZmRiZmY3NjJmMDQ2MzYzYjM0YTQ4NDUyYzA0ZDEyMTAwLi42NDNmNjk2
NDAwMjk0MThhNDc3YzZmMjE0MzNkZGE3ODM2Y2Q0OGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uaApAQCAtMzMsOSArMzMsNyBAQAogI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyOwot
Y2xhc3MgUmVnaW9uOwogY2xhc3MgVXBkYXRhYmxlVGlsZTsKIAogY2xhc3MgVGlsZWRMYXllckNo
cm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewpAQCAtOTAsMTAgKzg4LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIHJlc2V0VXBkYXRlU3RhdGUoKTsKIAogICAgIC8vIFByZXBhcmUgZGF0
YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0
LgotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29u
c3QgUmVnaW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0
ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwog
CiAgICAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHRoaXMgd2lsbCB0cnkgdG8gcGFpbnQgYWRkaXRp
b25hbCBzdXJyb3VuZGluZyBjb250ZW50IGlmIGlkbGUuCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRh
dGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZFRh
cmdldFNwYWNlKTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYg
bGF5ZXJSZWN0LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKIAogICAgIC8vIEFmdGVyIHBy
ZXBhcmluZyBhbiB1cGRhdGUsIHJldHVybnMgdHJ1ZSBpZiBtb3JlIHByZS1wYWludGluZyBpcyBu
ZWVkZWQuCiAgICAgYm9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
OwpAQCAtMTEzLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0aWxlT25seU5lZWRzUGFy
dGlhbFVwZGF0ZShVcGRhdGFibGVUaWxlKik7CiAgICAgYm9vbCB0aWxlTmVlZHNCdWZmZXJlZFVw
ZGF0ZShVcGRhdGFibGVUaWxlKik7CiAKLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGJv
b2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgY29uc3Qg
UmVnaW9uJiBvY2NsdWRlZFRhcmdldFNwYWNlKTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZVRp
bGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwg
Y29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CiAgICAgSW50UmVjdCBpZGxlUGFpbnRSZWN0KGNv
bnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpOwogCiAgICAgVXBkYXRhYmxlVGlsZSogdGls
ZUF0KGludCwgaW50KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4
IDM0YmNlMTE4MTAwZmE1ZmEzOGQ5MzUyODIwZDU3MDhlOWZlZGRjYTIuLjA2NTkwMmNlNWEzMTMy
M2RmZmU5MWM4ZTVhZWNmMDMxYzc1OTUwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcApAQCAtNDk5LDE0ICs0OTksMTQgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnJlc2VydmVU
ZXh0dXJlcygpCiB9CiAKIC8vIHN0YXRpYwotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29u
dGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBQYWludFR5cGUgcGFpbnRUeXBlLCBj
b25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlwZSBwYWlu
dFR5cGUsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogewogICAgIEFTU0VS
VChsYXllcik7CiAgICAgQVNTRVJUKFBhaW50VmlzaWJsZSA9PSBwYWludFR5cGUgfHwgUGFpbnRJ
ZGxlID09IHBhaW50VHlwZSk7CiAgICAgaWYgKFBhaW50VmlzaWJsZSA9PSBwYWludFR5cGUpCi0g
ICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdWRlZFNjcmVlblNwYWNlKTsK
KyAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1c2lvbik7CiAgICAgZWxz
ZQotICAgICAgICBsYXllci0+aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVu
U3BhY2UpOworICAgICAgICBsYXllci0+aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1c2lv
bik7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVu
ZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIsIFBhaW50VHlwZSBw
YWludFR5cGUpCkBAIC01MTYsMjAgKzUxNiwxOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFp
bnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyUwog
ICAgIC8vIG1hc2sgYW5kIHJlcGxpY2Egc2hvdWxkIGJlIHBhaW50ZWQuCiAKICAgICAvLyBGSVhN
RTogSWYgdGhlIHN1cmZhY2UgaGFzIGEgcmVwbGljYSwgaXQgc2hvdWxkIGJlIHBhaW50ZWQgd2l0
aCBvY2NsdXNpb24gdGhhdCBleGNsdWRlcyB0aGUgY3VycmVudCB0YXJnZXQgc3VyZmFjZSBzdWJ0
cmVlLgotICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5
ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVy
KCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNl
TGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShy
ZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUsIG5vT2NjbHVzaW9uKTsK
KyAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5
ZXIoKSwgcGFpbnRUeXBlLCAwKTsKICAgICB9CiAKICAgICBMYXllckNocm9taXVtKiByZXBsaWNh
TGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpOwogICAgIGlmIChyZXBs
aWNhTGF5ZXIpIHsKLSAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVwbGljYUxheWVyLCBw
YWludFR5cGUsIG5vT2NjbHVzaW9uKTsKKyAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVw
bGljYUxheWVyLCBwYWludFR5cGUsIDApOwogCiAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXItPm1h
c2tMYXllcigpKSB7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5
ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0
eShyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUsIG5vT2NjbHVzaW9uKTsKKyAg
ICAgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllci0+bWFza0xheWVyKCks
IHBhaW50VHlwZSwgMCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC01NTMsNyArNTUyLDcgQEAg
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3Qm
IHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICAgICAgICAgIEFTU0VSVCghaXQtPmJvdW5kcygp
LmlzRW1wdHkoKSk7CiAKICAgICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKGl0LT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICAgICAgcGFp
bnRDb250ZW50c0lmRGlydHkoKml0LCBwYWludFR5cGUsIG9jY2x1c2lvblRyYWNrZXIuY3VycmVu
dE9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKSk7CisgICAgICAgICAgICBwYWludENvbnRlbnRzSWZE
aXJ0eSgqaXQsIHBhaW50VHlwZSwgJm9jY2x1c2lvblRyYWNrZXIpOwogICAgICAgICAgICAgb2Nj
bHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcigqaXQpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubGVhdmVUb1RhcmdldFJlbmRlclN1cmZh
Y2UoaXQudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCktPnJlbmRlclN1cmZhY2UoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGQ1MjYyMjYyZDRmMmNjYTU0NDk2Y2ZiYmE3YTU1
MGRiOTMyYmE0YWUuLmM1YjBjMDNiZGY2MWVlNTVhYjFjMDY5ZjVhNDY2NzEwZjYwMzU0MGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
VHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJjYy9DQ0FuaW1hdGlvbkV2ZW50cy5o
IgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgorI2luY2x1ZGUgImNjL0ND
T2NjbHVzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKIAogI2luY2x1ZGUg
PGxpbWl0cz4KQEAgLTIxNiw3ICsyMTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoKTsKIAogICAgIGVudW0gUGFpbnRUeXBlIHsgUGFpbnRWaXNpYmxlLCBQ
YWludElkbGUgfTsKLSAgICBzdGF0aWMgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShMYXllckNo
cm9taXVtKiwgUGFpbnRUeXBlLCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwor
ICAgIHN0YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qLCBQYWlu
dFR5cGUsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogICAgIHZvaWQgcGFpbnRMYXllckNv
bnRlbnRzKGNvbnN0IExheWVyTGlzdCYsIFBhaW50VHlwZSk7CiAgICAgdm9pZCBwYWludE1hc2tB
bmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKaW5kZXggZmU3ODhmYmFlZWU3N2U3OTNhMDAzOGVjN2FmMjkyNjU1ZmZjNzQ2Yi4uNzA2
YjRkMDAyNDA2N2Y5YzJkNzg5NGU4ODA0ZDIyNWUxYzQ5OGIzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0zMiw3
ICszMiw2IEBACiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKLSNpbmNs
dWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIldl
YkNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKQEAgLTEyNzMsMTUgKzEyNzIsMTUg
QEAgcHVibGljOgogICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fdXBkYXRlQ291bnQ7
IH0KICAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRlQ291bnQgPSAwOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2Ns
dWRlZFNjcmVlblNwYWNlKQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShj
b25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKICAgICB7Ci0gICAgICAgIENvbnRl
bnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdWRlZFNjcmVlblNwYWNl
KTsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KG9j
Y2x1c2lvbik7CiAgICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7CiAgICAgfQogCi0gICAg
dmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1
ZGVkKQorICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiAgICAgewotICAgICAgICBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkKTsKKyAgICAgICAgQ29u
dGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdXNpb24pOwog
ICAgICAgICBtX2lkbGVQYWludENvbnRlbnRzQ291bnQrKzsKICAgICB9CiAKQEAgLTE2MzMsOSAr
MTYzMiw5IEBAIGNsYXNzIFRlc3RMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0g
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRlc3RMYXllckNocm9taXVtPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGVzdExheWVyQ2hyb21pdW0oKSk7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVk
U2NyZWVuU3BhY2UpCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0
IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogICAgIHsKLSAgICAgICAgbV9vY2NsdWRl
ZFNjcmVlblNwYWNlID0gb2NjbHVkZWRTY3JlZW5TcGFjZTsKKyAgICAgICAgbV9vY2NsdWRlZFNj
cmVlblNwYWNlID0gb2NjbHVzaW9uID8gb2NjbHVzaW9uLT5jdXJyZW50T2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpIDogUmVnaW9uKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDI1MjMyMzBl
MDA1Y2I5MWUxNTRkOTE5Y2M3ZTljOTY1ZjBmOTQxMDMuLjA3Y2VhYWU4OGQ3NTc3N2I2MzYzYzdh
NzRjOWJhMGM4OTM0YjgwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNDgsNiArNDgsMjUgQEAgdXNp
bmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIHsKIAorY2xhc3MgVGVzdENDT2NjbHVzaW9u
VHJhY2tlciA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXIgeworcHVibGljOgorICAgIFRlc3RD
Q09jY2x1c2lvblRyYWNrZXIoKQorICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKQorICAgICAgICAsIG1fc2Npc3NvclJlY3RJblNjcmVlbihJbnRS
ZWN0KDAsIDAsIDEwMDAsIDEwMDApKQorICAgIHsKKyAgICAgICAgLy8gUHJldGVuZCB3ZSBoYXZl
IHZpc2l0ZWQgYSByZW5kZXIgc3VyZmFjZS4KKyAgICAgICAgbV9zdGFjay5hcHBlbmQoU3RhY2tP
YmplY3QoKSk7CisgICAgfQorCisgICAgdm9pZCBzZXRPY2NsdXNpb24oY29uc3QgUmVnaW9uJiBv
Y2NsdXNpb24pIHsgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4gPSBvY2NsdXNpb247
IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgSW50UmVjdCBsYXllclNjaXNzb3JSZWN0SW5U
YXJnZXRTdXJmYWNlKGNvbnN0IExheWVyQ2hyb21pdW0qIGxheWVyKSBjb25zdCB7IHJldHVybiBt
X3NjaXNzb3JSZWN0SW5TY3JlZW47IH0KKworcHJpdmF0ZToKKyAgICBJbnRSZWN0IG1fc2Npc3Nv
clJlY3RJblNjcmVlbjsKK307CisKIGNsYXNzIEZha2VUZXh0dXJlQWxsb2NhdG9yIDogcHVibGlj
IFRleHR1cmVBbGxvY2F0b3IgewogcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRl
VGV4dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pIHsgcmV0dXJuIDA7IH0KQEAgLTE1MCwx
NCArMTY5LDE0IEBAIHB1YmxpYzoKICAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjppbnZhbGlk
YXRlUmVjdChyZWN0KTsKICAgICB9CiAKLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkKQorICAgIHZvaWQgcHJlcGFyZVRv
VXBkYXRlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2Nj
bHVzaW9uKQogICAgIHsKLSAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGUocmVjdCwgb2NjbHVkZWQpOworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZShyZWN0LCBvY2NsdXNpb24pOwogICAgIH0KIAotICAgIHZvaWQgcHJlcGFyZVRvVXBk
YXRlSWRsZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkKQorICAg
IHZvaWQgcHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBDQ09j
Y2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKICAgICB7Ci0gICAgICAgIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShyZWN0LCBvY2NsdWRlZCk7CisgICAgICAgIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShyZWN0LCBvY2NsdXNpb24pOwogICAg
IH0KIAogICAgIGJvb2wgbmVlZHNJZGxlUGFpbnQoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTE4
Miw5ICsyMDEsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0
dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXI7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2Ny
ZWVuU3BhY2UpCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IEND
T2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogICAgIHsKLSAgICAgICAgcHJlcGFyZVRvVXBk
YXRlKHZpc2libGVMYXllclJlY3QoKSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgICAgIHBy
ZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCksIG9jY2x1c2lvbik7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtMjQwLDcgKzI1OSw2IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaERpcnR5VGlsZXMpCiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVy
ID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0
KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25Q
dHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGls
ZWRMYXllckltcGwoMCkpKTsKLSAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICBGYWtlVGV4
dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBk
YXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CkBAIC0yNDgsNyArMjY2LDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICAvLyBUaGUgdGlsZSBzaXplIGlz
IDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4K
ICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52
YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVz
aFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0yNjEsNyArMjc5LDcgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICAvLyBJbnZhbGlk
YXRlcyBib3RoIHRpbGVzLi4uCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwg
MCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUgb25lIG9mIHRo
ZW0uCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwg
bm9PY2NsdXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCksIDApOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVw
ZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAK
QEAgLTI3NiwxNSArMjk0LDE3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaE9j
Y2x1ZGVkRGlydHlUaWxlcykKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5n
ZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93
blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NU
aWxlZExheWVySW1wbCgwKSkpOwotICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKKyAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOwogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4
dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxv
Y2F0b3IpOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFs
aWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJ
bnRTaXplKDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oVHJhbnNmb3Jt
YXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxh
eWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5
ZXJSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAmb2NjbHVkZWQpOwogICAgIGxheWVy
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNo
UHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTI5Nyw4ICszMTcsOCBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAgICAgLy8g
SW52YWxpZGF0ZXMgcGFydCBvZiB0aGUgdG9wIHRpbGUuLi4KICAgICBsYXllci0+aW52YWxpZGF0
ZVJlY3QoSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICAvLyAuLi4uYnV0IHRoZSBhcmVhIGlz
IG9jY2x1ZGVkLgotICAgIFJlZ2lvbiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCA1MCwgNTApKTsK
LSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCBvY2Ns
dXNpb24pOworICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDUwLCA1MCkp
OworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZv
Y2NsdWRlZCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAt
MzIxLDEzICszNDEsMTIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBh
aW50VGlsZXMpCiAgICAgSW50U2l6ZSBjb250ZW50Qm91bmRzKDUwMCwgNTAwKTsKICAgICBJbnRS
ZWN0IGNvbnRlbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGNvbnRlbnRCb3VuZHMpOwogICAgIElu
dFJlY3QgdmlzaWJsZVJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKTsKLSAgICBSZWdpb24gbm9PY2Ns
dXNpb247CiAKICAgICAvLyBUaGlzIGludmFsaWRhdGVzIDI1IHRpbGVzIGFuZCB0aGVuIHBhaW50
cyBvbmUgdmlzaWJsZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7
CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZVJlY3QpOwogICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
dmlzaWJsZVJlY3QsIDApOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBm
b3IgM3gzIHRpbGVzIGluIHRoZSBjZW50ZXIuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRz
SWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC0zNDIsOSArMzYxLDkgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAKICAgICAvLyBGb3IgdGhlIG5l
eHQgZm91ciB1cGRhdGVzLCB3ZSBzaG91bGQgZGV0ZWN0IHdlIHN0aWxsIG5lZWQgaWRsZSBwYWlu
dGluZy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCBub09jY2x1c2lvbik7CisgICAgICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIDApOwogICAgICAgICBFWFBFQ1RfVFJVRShs
YXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKLSAgICAgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKKyAgICAgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QsIDApOwogICAgICAgICBsYXllci0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICAgICAgbGF5ZXItPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnVu
cHJvdGVjdEFsbFRleHR1cmVzKCk7CkBAIC0zNzQsNyArMzkzLDYgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwdXNoVGlsZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogCiAgICAgRmFr
ZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVy
IHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwotICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAog
ICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQg
dGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIC8vIEhvd2V2ZXIsIGR1cmluZyB0aGUgcGFpbnQs
IHdlIGludmFsaWRhdGUgb25lIG9mIHRoZSB0aWxlcy4gVGhpcyBzaG91bGQKQEAgLTM4Miw3ICs0
MDAsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc01hcmtlZERpcnR5
RHVyaW5nUGFpbnQpCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAg
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRS
ZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBsYXllci0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFBy
b3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC00MDIsMTggKzQyMCwxNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQ
YWludE9uTmV4dExheWVyKQogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9j
YXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwot
ICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIGxheWVyMS0+c2V0Qm91bmRzKEludFNpemUo
MTAwLCAyMDApKTsKICAgICBsYXllcjEtPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKICAgICBsYXllcjItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAg
bGF5ZXIyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKLSAgICBs
YXllcjEtPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNp
b24pOworICAgIGxheWVyMS0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
LCAwKTsKIAogICAgIC8vIEludmFsaWRhdGUgYSB0aWxlIG9uIGxheWVyMQogICAgIGxheWVyMi0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDAs
IDUwLCAxMDAsIDUwKSwgbGF5ZXIxLmdldCgpKTsKLSAgICBsYXllcjItPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOworICAgIGxheWVyMi0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKIAogICAgIGxheWVyMS0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllcjItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CkBAIC00MzksNyArNDU2LDYgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5n
UGFpbnRPblByZXZpb3VzTGF5ZXIKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVB
bGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9y
KTsKLSAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICBsYXllcjEtPnNldEJvdW5kcyhJbnRT
aXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIxLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSk7CkBAIC00NDgsOSArNDY0LDkgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRPblByZXZpb3VzTGF5ZXIK
IAogICAgIC8vIEludmFsaWRhdGUgYSB0aWxlIG9uIGxheWVyMgogICAgIGxheWVyMS0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAx
MDAsIDUwKSwgbGF5ZXIyLmdldCgpKTsKLSAgICBsYXllcjEtPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOworICAgIGxheWVyMS0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKIAotICAgIGxheWVyMi0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CisgICAgbGF5
ZXIyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogCiAgICAg
bGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVy
Mi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKQEAgLTQ3MSw3ICs0ODcs
NiBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQog
ICAgIEludFNpemUgY29udGVudEJvdW5kcygzMDAsIDMwMCk7CiAgICAgSW50UmVjdCBjb250ZW50
UmVjdChJbnRQb2ludDo6emVybygpLCBjb250ZW50Qm91bmRzKTsKICAgICBJbnRSZWN0IHZpc2li
bGVSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCk7Ci0gICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAg
ICAgLy8gV2UgaGF2ZSBlbm91Z2ggbWVtb3J5IGZvciBvbmx5IHRoZSB2aXNpYmxlIHJlY3QsIHNv
IHdlIHdpbGwgcnVuIG91dCBvZiBtZW1vcnkgaW4gZmlyc3QgaWRsZSBwYWludC4KICAgICBpbnQg
bWVtb3J5TGltaXQgPSA0ICogMTAwICogMTAwOyAvLyAyIHRpbGVzLCA0IGJ5dGVzIHBlciBwaXhl
bC4KQEAgLTQ4OCw3ICs1MDMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQ
YWludE91dE9mTWVtb3J5KQogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAg
ICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZVJlY3QpOwogICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2
aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlz
aWJsZVJlY3QsIDApOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3Ig
M3gzIHRpbGVzIHN1cm91bmRpbmcgdmlzaWJsZSB0aWxlLgogICAgIEVYUEVDVF9UUlVFKGxheWVy
LT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtNTAwLDggKzUxNSw4IEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgRVhQRUNU
X1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMSwgMSkpOwogCiAgICAgdGV4dHVyZU1hbmFnZXIt
PnVucHJvdGVjdEFsbFRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNp
YmxlUmVjdCwgbm9PY2NsdXNpb24pOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZp
c2libGVSZWN0LCBub09jY2x1c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNp
YmxlUmVjdCwgMCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3Qs
IDApOwogCiAgICAgLy8gV2Ugc2hvdWxkbid0IHNpZ25hbCB3ZSBuZWVkIGFub3RoZXIgaWRsZSBw
YWludCBhZnRlciB3ZSBydW4gb3V0IG9mIG1lbW9yeS4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXIt
Pm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC01MTYsNyArNTMxLDYgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgUmVmUHRy
PEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExh
eWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxh
eWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKLSAgICBSZWdp
b24gbm9PY2NsdXNpb247CiAKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2Nh
dG9yOwogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CkBA
IC01MjQsNyArNTM4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRl
RnJvbVByZXBhcmUpCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGlu
dmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5k
cyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwg
MCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJ
bXBsLmdldCgpKTsKIApAQCAtNTM3LDE4ICs1NTEsMTggQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gSW52b2tlIHByZXBhcmVU
b1VwZGF0ZSBhZ2Fpbi4gQXMgdGhlIGxheWVyIGlzIHZhbGlkIHByZXBhcmVUb1VwZGF0ZSBzaG91
bGRuJ3QgYmUgaW52b2tlZCBvbgogICAgIC8vIHRoZSBMYXllclRleHR1cmVVcGRhdGVyLgotICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVz
aW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
LCAwKTsKICAgICBFWFBFQ1RfRVEoMCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnByZXBhcmVDb3VudCgpKTsKIAogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAs
IDAsIDUwLCA1MCkpOwogICAgIC8vIHNldFJlY3RUb0ludmFsaWRhdGUgdHJpZ2dlcnMgaW52YWxp
ZGF0ZVJlY3QoKSBiZWluZyBpbnZva2VkIGZyb20gcHJlcGFyZVRvVXBkYXRlLgogICAgIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3Qo
MjUsIDI1LCA1MCwgNTApLCBsYXllci5nZXQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIEVYUEVDVF9F
USgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwog
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgp
OwogICAgIC8vIFRoZSBsYXllciBzaG91bGQgc3RpbGwgYmUgaW52YWxpZCBhcyBwcmVwYXJlVG9V
cGRhdGUgaW52b2tlZCBpbnZhbGlkYXRlLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsKIH0KIApAQCAt
NTU5LDcgKzU3Myw2IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRl
UmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogCiAgICAgT3duUHRyPFRleHR1cmVNYW5h
Z2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQs
IDIqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJXaXRoU2NhbGVk
Qm91bmRzPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3Vu
ZHModGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLSAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAg
ICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwogICAgIENDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CkBAIC01NzQsMjAgKzU4NywyMCBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJv
dW5kc0FyZVNjYWxlZCkKICAgICAvLyBPbiBmaXJzdCB1cGRhdGUsIHRoZSB1cGRhdGVSZWN0IGlu
Y2x1ZGVzIGFsbCB0aWxlcywgZXZlbiBiZXlvbmQgdGhlIGJvdW5kYXJpZXMgb2YgdGhlIGxheWVy
LgogICAgIC8vIEhvd2V2ZXIsIGl0IHNob3VsZCBzdGlsbCBiZSBpbiBsYXllciBzcGFjZSwgbm90
IGNvbnRlbnQgc3BhY2UuCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24p
OworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgMCk7CiAgICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgRVhQRUNUX0ZM
T0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDMwMCwgMzAwICogMC44KSwgbGF5ZXItPnVwZGF0
ZVJlY3QoKSk7CiAKICAgICAvLyBBZnRlciB0aGUgdGlsZXMgYXJlIHVwZGF0ZWQgb25jZSwgYW5v
dGhlciBpbnZhbGlkYXRlIG9ubHkgbmVlZHMgdG8gdXBkYXRlIHRoZSBib3VuZHMgb2YgdGhlIGxh
eWVyLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKKyAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIDApOwogICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VR
KEZsb2F0UmVjdChsYXllckJvdW5kcyksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8g
UGFydGlhbCByZS1wYWludCBzaG91bGQgYWxzbyBiZSByZXByZXNlbnRlZCBieSB0aGUgdXBkYXRl
UmVjdCBpbiBsYXllciBzcGFjZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAgICAgSW50UmVjdCBwYXJ0
aWFsRGFtYWdlKDMwLCAxMDAsIDEwLCAxMCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KHBh
cnRpYWxEYW1hZ2UpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywg
bm9PY2NsdXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywg
MCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAg
ICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDQ1LCA4MCwgMTUsIDgpLCBsYXllci0+
dXBkYXRlUmVjdCgpKTsKIH0KQEAgLTYwMSw3ICs2MTQsNiBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKIAog
ICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJl
VXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKLSAgICBSZWdpb24gbm9PY2NsdXNp
b247CiAKICAgICAvLyBDcmVhdGUgYSBsYXllciB3aXRoIG9uZSB0aWxlLgogICAgIGxheWVyLT5z
ZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDEwMCkpOwpAQCAtNjExLDcgKzYyMyw3IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVD
aGFuZ2VzKQogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEw
MCksIGxheWVyLT5sYXN0TmVlZHNEaXNwbGF5UmVjdCgpKTsKIAogICAgIC8vIFB1c2ggdGhlIHRp
bGVzIHRvIHRoZSBpbXBsIHNpZGUgYW5kIGNoZWNrIHRoYXQgdGhlcmUgaXMgZXhhY3RseSBvbmUu
Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgbm9P
Y2NsdXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCksIDApOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0
ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAg
RVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwpAQCAtNjI1LDcgKzYzNyw3
IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNv
bnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgw
LCAwLCAxMDAsIDEwMCksIGxheWVyLT5sYXN0TmVlZHNEaXNwbGF5UmVjdCgpKTsKIAogICAgIC8v
IFRoZSBpbXBsIHNpZGUgc2hvdWxkIGdldCAyeDIgdGlsZXMgbm93LgotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAyMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMjAwLCAyMDApLCAwKTsKICAgICBs
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+
cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVy
SW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKQEAgLTYzNiw3ICs2NDgsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdl
cykKICAgICAvLyBJbnZhbGlkYXRlIHRoZSBlbnRpcmUgbGF5ZXIgYWdhaW4sIGJ1dCBkbyBub3Qg
cGFpbnQuIEFsbCB0aWxlcyBzaG91bGQgYmUgZ29uZSBub3cgZnJvbSB0aGUKICAgICAvLyBpbXBs
IHNpZGUuCiAgICAgbGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCAwLCAwKSwgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgxLCAwLCAwLCAxKSwgMCk7CiAgICAgbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNU
aWxlQXQoMCwgMCkpOwpAQCAtNzAyLDExICs3MTQsMTAgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCByZXNpemVUb1NtYWxsZXIpCiB7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0
ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNjAqMTAyNCoxMDI0LCA2MCox
MDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXll
ciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdl
dCgpKSk7Ci0gICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJ
bnRTaXplKDcwMCwgNzAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwg
MCwgNzAwLCA3MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwg
NzAwLCA3MDApLCBub09jY2x1c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7CiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUo
MjAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAyMDAs
IDIwMCkpOwpAQCAtNzg3LDEzICs3OTgsMTIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCB0aWxlc1BhaW50ZWRXaXRob3V0T2NjbHVzaW9uKQogewogICAgIE93blB0cjxUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+
IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKLSAgICBSZWdpb24gb2NjbHVkZWQ7CiAKICAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxl
cy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKIAogICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVkZWQpOworICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIEVY
UEVDVF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RD
b3VudCgpKTsKIH0KIApAQCAtODAxLDMwICs4MTEsMzEgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQogewogICAgIE93blB0cjxUZXh0dXJl
TWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCox
MDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21p
dW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1h
bmFnZXIuZ2V0KCkpKTsKLSAgICBSZWdpb24gb2NjbHVkZWQ7CisgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlciBvY2NsdWRlZDsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KIAog
ICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworICAgIGxheWVyLT5zZXRE
cmF3VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5ib3Vu
ZHMoKS53aWR0aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsKIAot
ICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApOworICAgIG9jY2x1ZGVk
LnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRl
ZCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwg
Jm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CiAKLSAgICBvY2NsdWRlZCA9
IEludFJlY3QoMjUwLCAyMDAsIDMwMCwgMTAwKTsKKyAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24o
SW50UmVjdCgyNTAsIDIwMCwgMzAwLCAxMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgz
Ni0yLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgp
KTsKIAogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVS
ZWN0Q291bnQoKTsKIAotICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyNTAsIDI1MCwgMzAwLCAxMDAp
OworICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDI1MCwgMjUwLCAzMDAsIDEwMCkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0g
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVk
ZWQpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCks
ICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIH0KIApAQCAtODMyLDU4ICs4NDMsNjAgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5k
VmlzaWJsaXR5Q29uc3RyYWludHMpCiB7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCox
MDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBh
ZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkp
OwotICAgIFJlZ2lvbiBvY2NsdWRlZDsKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1
ZGVkOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgogCiAgICAgbGF5ZXItPnNl
dEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0o
VHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkg
LyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogCiAgICAgLy8gVGhlIHBh
cnRpYWxseSBvY2NsdWRlZCB0aWxlcyAoYnkgdGhlIDE1MCBvY2NsdXNpb24gaGVpZ2h0KSBhcmUg
dmlzaWJsZSBiZXlvbmQgdGhlIG9jY2x1c2lvbiwgc28gbm90IGN1bGxlZC4KLSAgICBvY2NsdWRl
ZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTUwKTsKKyAgICBvY2NsdWRlZC5zZXRPY2NsdXNp
b24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxNTApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxh
eWVyUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgMzYwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7Ci0gICAgRVhQRUNUX0VRKDM2LTMs
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwor
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2Ns
dWRlZCk7CisgICAgRVhQRUNUX0VRKDI0LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOwogCiAgICAgLy8gTm93IHRoZSB2aXNp
YmxlIHJlZ2lvbiBzdG9wcyBhdCB0aGUgZWRnZSBvZiB0aGUgb2NjbHVzaW9uIHNvIHRoZSBwYXJ0
bHkgdmlzaWJsZSB0aWxlcyBiZWNvbWUgZnVsbHkgb2NjbHVkZWQuCi0gICAgb2NjbHVkZWQgPSBJ
bnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCk7CisgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKElu
dFJlY3QoMjAwLCAyMDAsIDMwMCwgMTUwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJl
Y3QoSW50UmVjdCgwLCAwLCA2MDAsIDM1MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJ
bnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOwotICAgIEVYUEVDVF9FUSgzNi02LCBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKyAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQp
OworICAgIEVYUEVDVF9FUSgyNC02LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKIAogICAgIC8vIE5vdyB0aGUgdmlzaWJsZSBy
ZWdpb24gaXMgZXZlbiBzbWFsbGVyIHRoYW4gdGhlIG9jY2x1c2lvbiwgaXQgc2hvdWxkIGhhdmUg
dGhlIHNhbWUgcmVzdWx0LgotICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAx
NTApOworICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1
MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAz
NDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9j
Y2x1ZGVkKTsKLSAgICBFWFBFQ1RfRVEoMzYtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMjQtNiwg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiB9
CiAKIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dElu
dmFsaWRhdGlvbikKIHsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
ID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQp
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7Ci0gICAgUmVn
aW9uIG9jY2x1ZGVkOworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAKICAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKICAgICBsYXllci0+c2V0Qm91bmRzKElu
dFNpemUoNjAwLCA2MDApKTsKKyAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5
ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4wKSk7CiAKLSAgICBvY2NsdWRlZCA9IEludFJlY3Qo
MjAwLCAyMDAsIDMwMCwgMTAwKTsKKyAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgy
MDAsIDIwMCwgMzAwLCAxMDApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3Qo
MCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwg
MCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYtMywgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50
KCk7CiAKICAgICAvLyBSZXBhaW50IHdpdGhvdXQgbWFya2luZyBpdCBkaXJ0eS4KLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7Cisg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1
ZGVkKTsKICAgICBFWFBFQ1RfRVEoMCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnByZXBhcmVSZWN0Q291bnQoKSk7CiB9CiAKQEAgLTg5MSw3ICs5MDQsNyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRUcmFuc2Zvcm1z
KQogewogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVm
UHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxl
ZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLSAgICBSZWdpb24gb2NjbHVk
ZWQ7CisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIAogICAgIC8vIFRoZSB0
aWxlIHNpemUgaXMgMTAweDEwMC4KIApAQCAtOTAxLDExICs5MTQsMTIgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3JtcykK
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5UcmFuc2Zvcm07CiAgICAgc2NyZWVuVHJh
bnNmb3JtLnNjYWxlKDAuNSk7CiAgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNj
cmVlblRyYW5zZm9ybSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oc2NyZWVuVHJhbnNm
b3JtICogVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndp
ZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogCi0gICAgb2Nj
bHVkZWQgPSBJbnRSZWN0KDEwMCwgMTAwLCAxNTAsIDUwKTsKKyAgICBvY2NsdWRlZC5zZXRPY2Ns
dXNpb24oSW50UmVjdCgxMDAsIDEwMCwgMTUwLCA1MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxl
TGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5
ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVk
KTsKICAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnByZXBhcmVSZWN0Q291bnQoKSk7CiB9CiAKQEAgLTkxMyw3ICs5MjcsNyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQog
ewogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRy
PEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExh
eWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLSAgICBSZWdpb24gb2NjbHVkZWQ7
CisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIAogICAgIC8vIFRoZSB0aWxl
IHNpemUgaXMgMTAweDEwMC4KIApAQCAtOTIyLDExICs5MzYsMTIgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICAv
LyBwaXhlbHMsIHdoaWNoIG1lYW5zIG5vbmUgc2hvdWxkIGJlIG9jY2x1ZGVkLgogICAgIGxheWVy
LT5zZXRDb250ZW50c1NjYWxlKDAuNSk7CiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYw
MCwgNjAwKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRy
aXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3Vu
ZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogCi0gICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAw
LCAzMDAsIDEwMCk7CisgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAs
IDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQ
b2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50
UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIC8vIFRoZSBjb250ZW50
IGlzIGhhbGYgdGhlIHNpemUgb2YgdGhlIGxheWVyIChzbyB0aGUgbnVtYmVyIG9mIHRpbGVzIGlz
IGZld2VyKS4KICAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBjb250ZW50IGlzIDMwMHgzMDAsIGFu
ZCBzaW5jZSB0aGUgdGlsZSBzaXplIGlzIDEwMCwgdGhlCiAgICAgLy8gbnVtYmVyIG9mIHRpbGVz
IDN4My4KQEAgLTkzNywxMCArOTUyLDEwIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgLy8gVGhpcyBtYWtlcyBz
dXJlIHRoZSBwYWludGluZyB3b3JrcyB3aGVuIHRoZSBjb250ZW50IHNwYWNlIGlzIHNjYWxlZCB0
bwogICAgIC8vIGEgZGlmZmVyZW50IGxheWVyIHNwYWNlLiBJbiB0aGlzIGNhc2UgdGhlIG9jY2x1
ZGVkIHJlZ2lvbiBjYXRjaGVzIHRoZQogICAgIC8vIGJsb3duIHVwIHRpbGVzLgotICAgIG9jY2x1
ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAyMDApOworICAgIG9jY2x1ZGVkLnNldE9jY2x1
c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDIwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxl
TGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5
ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVk
KTsKICAgICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKQEAgLTk0OSwxMSArOTY0LDEyIEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxp
bmcpCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVuVHJhbnNmb3JtOwogICAgIHNjcmVl
blRyYW5zZm9ybS5zY2FsZSgwLjUpOwogICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9y
bShzY3JlZW5UcmFuc2Zvcm0pOworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKHNjcmVlblRy
YW5zZm9ybSAqIFRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5ib3VuZHMo
KS53aWR0aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsKIAotICAg
IG9jY2x1ZGVkID0gSW50UmVjdCgxMDAsIDEwMCwgMTUwLCAxMDApOworICAgIG9jY2x1ZGVkLnNl
dE9jY2x1c2lvbihJbnRSZWN0KDEwMCwgMTAwLCAxNTAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAg
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7
CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9j
Y2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIH0KIApAQCAtOTY2LDcgKzk4Miw2IEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgb3BhcXVlQ29udGVudHNSZWdpb24pCiAKICAgICBJbnRS
ZWN0IG9wYXF1ZVBhaW50UmVjdDsKICAgICBSZWdpb24gb3BhcXVlQ29udGVudHM7Ci0gICAgUmVn
aW9uIG5vT2NjbHVzaW9uOwogCiAgICAgSW50UmVjdCBjb250ZW50Qm91bmRzID0gSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCk7CiAgICAgSW50UmVjdCB2aXNpYmxlQm91bmRzID0gSW50UmVjdCgwLCAw
LCAxMDAsIDE1MCk7CkBAIC05NzgsNyArOTkzLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBvcGFxdWVDb250ZW50c1JlZ2lvbikKICAgICAvLyBJZiB0aGUgbGF5ZXIgZG9lc24ndCBw
YWludCBvcGFxdWUgY29udGVudCwgdGhlbiB0aGUgb3BhcXVlQ29udGVudHNSZWdpb24gc2hvdWxk
IGJlIGVtcHR5LgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFx
dWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
Y29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRz
LCBub09jY2x1c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRz
LCAwKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT5vcGFxdWVDb250ZW50c1JlZ2lvbigp
OwogICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7CiAKQEAgLTk4Niwx
NCArMTAwMSwxNCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUNvbnRlbnRz
UmVnaW9uKQogICAgIG9wYXF1ZVBhaW50UmVjdCA9IEludFJlY3QoMTAsIDEwLCA5MCwgMTkwKTsK
ICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0
KG9wYXF1ZVBhaW50UmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3Vu
ZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNp
b24pOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgMCk7CiAgICAg
b3BhcXVlQ29udGVudHMgPSBsYXllci0+b3BhcXVlQ29udGVudHNSZWdpb24oKTsKICAgICBFWFBF
Q1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwg
b3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwogICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVu
dHMucmVjdHMoKS5zaXplKCkpOwogCiAgICAgLy8gSWYgd2UgcGFpbnQgYWdhaW4gd2l0aG91dCBp
bnZhbGlkYXRpbmcsIHRoZSBzYW1lIHN0dWZmIHNob3VsZCBiZSBvcGFxdWUuCiAgICAgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24p
OworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgMCk7CiAgICAgb3Bh
cXVlQ29udGVudHMgPSBsYXllci0+b3BhcXVlQ29udGVudHNSZWdpb24oKTsKICAgICBFWFBFQ1Rf
RVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3Bh
cXVlQ29udGVudHMuYm91bmRzKCkpOwogICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMu
cmVjdHMoKS5zaXplKCkpOwpAQCAtMTAwMiw3ICsxMDE3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBvcGFxdWVDb250ZW50c1JlZ2lvbikKICAgICAvLyBub3QgYmUgYWZmZWN0ZWQu
CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVj
dChJbnRSZWN0KCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEs
IDEpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVz
aW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIDApOwogICAg
IG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPm9wYXF1ZUNvbnRlbnRzUmVnaW9uKCk7CiAgICAgRVhQ
RUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJvdW5kcyks
IG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMXUsIG9wYXF1ZUNvbnRl
bnRzLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTEwMTEsNyArMTAyNiw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgb3BhcXVlQ29udGVudHNSZWdpb24pCiAgICAgLy8gbm90IGJlIGFmZmVj
dGVkLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWlu
dFJlY3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgxMCwg
MTAsIDEsIDEpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5v
T2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIDAp
OwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPm9wYXF1ZUNvbnRlbnRzUmVnaW9uKCk7CiAg
ICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKEludFJlY3QoMTAsIDEwMCwgOTAsIDEwMCks
IHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CiAgICAgRVhQRUNUX0VR
KDF1LCBvcGFxdWVDb250ZW50cy5yZWN0cygpLnNpemUoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131977</attachid>
            <date>2012-03-14 19:20:43 -0700</date>
            <delta_ts>2012-03-14 19:53:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81181-20120314222041.patch</filename>
            <type>text/plain</type>
            <size>57247</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNjZTM5Y2Q0YjllZGU2
NDE1ZGFmZTY5NjkyNzA3ZjQ1MmFmMjQ4Ni4uNjliOWJiNmNlOWEzMWVjNGIxN2MwNDQxNmVmODZk
NjA4YzFmNTM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTAzLTE0ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRGVj
aWRlIG9jY2x1c2lvbiBpbiBwYWludCBjdWxsaW5nIHdpdGggQ0NPY2NsdXNpb25UcmFja2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTE4MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdW1iIGEgQ0NP
Y2NsdXNpb25UcmFja2VyKiBhcm91bmQgaW5zdGVhZCBvZiBhIGJhcmUgUmVnaW9uLCBzbyB0aGF0
IGl0CisgICAgICAgIGNhbiBtYWtlIGEgbW9yZSBpbmZvcm1lZCBkZWNpc2lvbiBpZiBhIHRpbGUg
aXMgb2NjbHVkZWQgb3Igbm90IGR1cmluZworICAgICAgICBwYWludC4KKworICAgICAgICBDb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
czJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAo
Q2FudmFzMkRMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW1hZ2VMYXllckNocm9taXVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlSWRsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmg6CisgICAgICAgIChUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKFdlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Lmg6CisKIDIwMTItMDMtMTQgIElnb3IgT2xpdmVpcmEgIDxpZ29yLm9Ac2lzYS5zYW1zdW5n
LmNvbT4KIAogICAgICAgICBTcGxpdCB0aGUgZXh0cmEgbG9naWMgb3V0IG9mIFJlbmRlckJsb2Nr
Ojp1cGRhdGVGaXJzdExldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1ZDQ3ZmU4
OGUwMDYyODhiZWMwODRiYTU0MjIxMjE3OWZmZDVhZmMzLi40MjcxNDdiYzNjOWY1ZDVkNzcyYzI0
ZWUzOWM3NTczYWVhMmQyNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI2IEBACisyMDEyLTAzLTE0ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gRGVjaWRlIG9jY2x1c2lvbiBpbiBwYWludCBjdWxsaW5nIHdp
dGggQ0NPY2NsdXNpb25UcmFja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MTE4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChX
VEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRz
SWZEaXJ0eSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV1RGOjpUZXN0TGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHRlc3RzL0NhbnZh
czJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwOgorICAgICAgICAoVGVzdENDT2NjbHVzaW9uVHJhY2tlcik6CisgICAgICAg
IChXVEY6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXI6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXIpOgor
ICAgICAgICAoV1RGOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyOjpzZXRPY2NsdXNpb24pOgorICAg
ICAgICAoV1RGOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyOjpsYXllclNjaXNzb3JSZWN0SW5UYXJn
ZXRTdXJmYWNlKToKKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRM
YXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXVEY6OlRFU1Qp
OgorCiAyMDEyLTAzLTEzICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBT
ZXBhcmF0ZSBOT1RJRklDQVRJT05TIGFuZCBMRUdBQ1lfTk9USUZJQ0FUSU9OUwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggM2ZjNjAwMmM4YTIyMDllMzM4NDQ3Y2Rl
NDI5MGZlNjA3NTkyYTAwYS4uNWMwYWYyY2ZiOTNlNGQwMGY3YjkwNmQ1NGNiZjBiYzI3YjRjNTQy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC05Nyw3ICs5Nyw3
IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpzZXRDYW52YXMoU2tDYW52YXMqIGNhbnZh
cykKICAgICBtX2NhbnZhcyA9IGNhbnZhczsKIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5T
cGFjZSAqLykKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0
eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9jY2x1c2lvbiAqLykKIHsKICAgICBUUkFD
RV9FVkVOVCgiQ2FudmFzMkRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSIsIHRo
aXMsIDApOwogICAgIGlmICghZHJhd3NDb250ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJD
aHJvbWl1bS5oCmluZGV4IGNiZDRhZGM5YjliNWQzNzg0NGFkZTgxMTEzMTJmYWY2M2Y2YjNlMWEu
LjkzMDIyNDY4NGJiZTQ4MGFiODg2NDU0ZWNkNGFhZjUwZmI1MDc3NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFBy
b3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IDdhNjY5ODRiZDc2MmIwY2Q5ODI5NTliNjE1ZDczODQ1OTFlYjBkNDMuLmMwMDcy
MTU3OTc5ZDc4YjU5YWIzN2UwZjIyZGIyNjU2MjI5YzA0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gVGlsZWRMYXllckNocm9taXVt
OjpkcmF3c0NvbnRlbnQoKSAmJiBtX2RlbGVnYXRlOwogfQogCi12b2lkIENvbnRlbnRMYXllckNo
cm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVu
U3BhY2UpCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShj
b25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKIHsKICAgICB1cGRhdGVUaWxlU2l6
ZUFuZFRpbGluZ09wdGlvbigpOwogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKTsK
QEAgLTEwNSwxMSArMTA1LDExIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29u
dGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjCiAgICAgaWYgKGRy
YXdzQ29udGVudCgpKQogICAgICAgICBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7CiAK
LSAgICBwcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0LCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAg
ICBwcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0LCBvY2NsdXNpb24pOwogICAgIG1fbmVlZHNEaXNw
bGF5ID0gZmFsc2U7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCit2b2lkIENv
bnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2Ns
dXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21p
dW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVu
CiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBy
ZXBhcmVUb1VwZGF0ZUlkbGUobGF5ZXJSZWN0LCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICBw
cmVwYXJlVG9VcGRhdGVJZGxlKGxheWVyUmVjdCwgb2NjbHVzaW9uKTsKICAgICBpZiAobmVlZHNJ
ZGxlUGFpbnQobGF5ZXJSZWN0KSkKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGZhNTkwMWUyYWQyZDk1MDI2YTYyMDE4Yzhj
ZDYxZTY4NGU3NDJhZGQuLmU2OTk0YTIxYWVmYWMyMTQwODg3ZTViYmQ4YWJiMjAzYzlhYjgxNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNDEsNyArNDEsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bTsKIGNsYXNzIExheWVy
VGV4dHVyZVVwZGF0ZXI7Ci1jbGFzcyBSZWdpb247CiAKIGNsYXNzIENvbnRlbnRMYXllckRlbGVn
YXRlIHsKIHB1YmxpYzoKQEAgLTU5LDggKzU4LDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJE
ZWxlZ2F0ZSgpIHsgbV9kZWxlZ2F0ZSA9IDA7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0Nv
bnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29u
c3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJh
Y2tlciopOworICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCA2MTFhYjJhNmE2NTgwNTM5
NTZlOGI4ZWQzMjgwZGZiMWIwMGRiMDU5Li4zOTM5MTU4YTg1YjU3M2ZiMmQ0YjU3ZmUxYTVlZjZm
MmZiZjBmZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE1OCw3ICsx
NTgsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRl
bnRzKQogICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCi12b2lkIEltYWdlTGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNl
KQordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IEND
T2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogewogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVy
SWZOZWVkZWQoKTsKICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKQEAgLTE2OCw3ICsxNjgsNyBA
QCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVn
aW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQogICAgICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNl
OwogICAgIH0KIAotICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCksIG9jY2x1
ZGVkU2NyZWVuU3BhY2UpOworICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCks
IG9jY2x1c2lvbik7CiB9CiAKIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJl
VXBkYXRlcklmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKaW5kZXggZGVhZmQz
N2U3MzNlYTM4YmM0ZGQ1YmJkZjEyMzdlNTg0ZDRiMDk5ZS4uYjAxZWYyOWRhMTNkMGUxMTE1ZTg0
MWFjMjBmNGU2MGU4YWMxNjQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKQEAgLTQx
LDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZTsKIGNsYXNzIElt
YWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjsKLWNsYXNzIFJlZ2lvbjsKIAogLy8gQSBMYXllciB0aGF0
IGNvbnRhaW5zIG9ubHkgYW4gSW1hZ2UgZWxlbWVudC4KIGNsYXNzIEltYWdlTGF5ZXJDaHJvbWl1
bSA6IHB1YmxpYyBUaWxlZExheWVyQ2hyb21pdW0gewpAQCAtNTAsNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRp
cnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogICAgIHZp
cnR1YWwgYm9vbCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29u
dGVudHMoSW1hZ2UqIGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA4NmZkZjk1MTU2ODg5
Mzc4YzNkNjJkMTkxOWE3OTVhMmNlMTI1MTZhLi5lNTJlYzQ4YzdkNTdjNmNhZmE0OGZhYWU3ZDBj
MzY1YTVlNGY5MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiU2hhZGVyQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorI2luY2x1ZGUgImNjL0NDT2Nj
bHVzaW9uVHJhY2tlci5oIgogCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CkBAIC0xNjEsOCArMTYyLDggQEAgcHVibGljOgogCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNs
YXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEcmF3YWJsZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25z
dCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVl
blNwYWNlICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29u
c3QgQ0NPY2NsdXNpb25UcmFja2VyKiAvKiBvY2NsdXNpb24gKi8pIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiAv
KiBvY2NsdXNpb24gKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2
ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggMDI1OWEyM2QzODZkZDNkMWFjOGE5OGJjMjg0ZTIzODJjNTRjNjNlMS4uY2VkM2IxZDg1NjQ5
MzM4OTU2ZGRmNTkxNWQ5MTlmMDIzMjUwMmNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwCkBAIC0zOTcsMjMgKzM5NywxMCBAQCBib29sIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dGls
ZU5lZWRzQnVmZmVyZWRVcGRhdGUoVXBkYXRhYmxlVGlsZSogdGlsZSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotLy8gRklYTUU6IFRoaXMgZ2V0cyByb2xsZWQgaW50byBDQ09jY2x1c2lvblRyYWNr
ZXIgd2hlbiB3ZSBzdG9wIHBhc3NpbmcgYXJvdW5kIFJlZ2lvbiBvYmplY3RzLgotc3RhdGljIGlu
bGluZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9MYXllclRyYW5zZm9ybShjb25zdCBJ
bnRTaXplJiBib3VuZHNJbkxheWVyU3BhY2UsIGNvbnN0IEludFNpemUmIGJvdW5kc0luQ29udGVu
dFNwYWNlKQotewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKLSAgICAvLyBT
Y2FsZSBmcm9tIGNvbnRlbnQgc3BhY2UgdG8gbGF5ZXIgc3BhY2UKLSAgICB0cmFuc2Zvcm0uc2Nh
bGVOb25Vbmlmb3JtKGJvdW5kc0luTGF5ZXJTcGFjZS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZG91
YmxlPihib3VuZHNJbkNvbnRlbnRTcGFjZS53aWR0aCgpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvdW5kc0luTGF5ZXJTcGFjZS5oZWlnaHQoKSAvIHN0YXRpY19jYXN0PGRvdWJs
ZT4oYm91bmRzSW5Db250ZW50U3BhY2UuaGVpZ2h0KCkpKTsKLSAgICByZXR1cm4gdHJhbnNmb3Jt
OwotfQotCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9v
bCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBjb25zdCBS
ZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0
LCBpbnQgYm90dG9tLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKIHsKICAg
ICBjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCk7CiAKLSAgICAvLyBUaWxlcyBhcmUgaW4g
dGhlIGxheWVyJ3MgY29udGVudCBzcGFjZSwgdGhlIG9jY2x1ZGVkIHJlZ2lvbiBpcyBpbiBzY3Jl
ZW4gc3BhY2UuCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2Ug
PSBzY3JlZW5TcGFjZVRyYW5zZm9ybSgpICogY29udGVudFRvTGF5ZXJUcmFuc2Zvcm0oYm91bmRz
KCksIGNvbnRlbnRCb3VuZHMoKSk7Ci0KICAgICAvLyBDcmVhdGUgdGlsZXMgYXMgbmVlZGVkLCBl
eHBhbmRpbmcgYSBkaXJ0eSByZWN0IHRvIGNvbnRhaW4gYWxsCiAgICAgLy8gdGhlIGRpcnR5IHJl
Z2lvbnMgY3VycmVudGx5IGJlaW5nIGRyYXduLiBBbGwgZGlydHkgdGlsZXMgdGhhdCBhcmUgdG8g
YmUgcGFpbnRlZAogICAgIC8vIGdldCB0aGVpciBtX3VwZGF0ZVJlY3Qgc2V0IHRvIG1fZGlydHlS
ZWN0IGFuZCBtX2RpcnR5UmVjdCBjbGVhcmVkLiBUaGlzIHdheSBpZgpAQCAtNDI4LDkgKzQxNSw5
IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlk
bGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIC8vIFdoZW4gbm90IGlkbGUg
cGFpbnRpbmcsIGlmIHRoZSB2aXNpYmxlIHJlZ2lvbiBvZiB0aGUgdGlsZSBpcyBvY2NsdWRlZCwg
ZG9uJ3QgcmVzZXJ2ZSBhIHRleHR1cmUgb3IgbWFyayBpdCBmb3IgdXBkYXRlLgogICAgICAgICAg
ICAgLy8gSWYgYW55IHBhcnQgb2YgdGhlIHRpbGUgaXMgdmlzaWJsZSwgdGhlbiB3ZSBuZWVkIHRv
IHBhaW50IGl0IHNvIHRoZSB0aWxlIGlzIHB1c2hlZCB0byB0aGUgaW1wbCB0aHJlYWQuCiAgICAg
ICAgICAgICAvLyBUaGlzIHdpbGwgYWxzbyBhdm9pZCBwYWludGluZyB0aGUgdGlsZSBpbiB0aGUg
bmV4dCBsb29wLCBiZWxvdy4KLSAgICAgICAgICAgIGlmICghaWRsZSkgeworICAgICAgICAgICAg
aWYgKG9jY2x1c2lvbikgewogICAgICAgICAgICAgICAgIEludFJlY3QgdmlzaWJsZVRpbGVSZWN0
ID0gaW50ZXJzZWN0aW9uKG1fdGlsZXItPnRpbGVCb3VuZHMoaSwgaiksIHZpc2libGVMYXllclJl
Y3QoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9jY2x1ZGVkU2NyZWVuU3BhY2UuY29udGFpbnMo
Y29udGVudFRvU2NyZWVuU3BhY2UubWFwUmVjdCh2aXNpYmxlVGlsZVJlY3QpKSkKKyAgICAgICAg
ICAgICAgICBpZiAob2NjbHVzaW9uLT5vY2NsdWRlZCh0aGlzLCB2aXNpYmxlVGlsZVJlY3QpKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIApAQCAtNTcyLDcg
KzU1OSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpyZXNldFVwZGF0ZVN0YXRlKCkKICAg
ICB9CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCit2
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxh
eWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgbV9z
a2lwc0RyYXcgPSBmYWxzZTsKICAgICBtX3NraXBzSWRsZVBhaW50ID0gZmFsc2U7CkBAIC01ODks
MTAgKzU3NiwxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgUmVnaW9uJgogICAgIGludCBsZWZ0LCB0b3As
IHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXll
clJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAKLSAgICBwcmVwYXJlVG9VcGRhdGVU
aWxlcyhmYWxzZSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFNjcmVlblNwYWNl
KTsKKyAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9wLCByaWdodCwgYm90
dG9tLCBvY2NsdXNpb24pOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVk
ZWRTY3JlZW5TcGFjZSkKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJ
ZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBv
Y2NsdXNpb24pCiB7CiAgICAgLy8gQWJvcnQgaWYgd2UgaGF2ZSBhbHJlYWR5IHByZXBhcmVkIGEg
cGFpbnQgb3IgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgaWYgKG1fc2tpcHNJZGxlUGFpbnQgfHwg
IW1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKQEAgLTYxNCw3ICs2MDEsNyBAQCB2b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qs
IGNvbnN0IFJlZwogICAgIG1fdGlsZXItPmxheWVyUmVjdFRvVGlsZUluZGljZXMobGF5ZXJSZWN0
LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogCiAgICAgLy8gUHJlcGFpbnQgYW55dGhpbmcg
dGhhdCB3YXMgb2NjbHVkZWQgYnV0IGluc2lkZSB0aGUgbGF5ZXIncyB2aXNpYmxlIHJlZ2lvbi4K
LSAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20s
IG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxl
ZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgMCk7CiAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5
KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MjQsMjUgKzYx
MSwyNSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25z
dCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZwogICAgIHdoaWxlICghbV9za2lwc0lkbGVQ
YWludCAmJiAobGVmdCA+IHByZXBhaW50TGVmdCB8fCB0b3AgPiBwcmVwYWludFRvcCB8fCByaWdo
dCA8IHByZXBhaW50UmlnaHQgfHwgYm90dG9tIDwgcHJlcGFpbnRCb3R0b20pKSB7CiAgICAgICAg
IGlmIChib3R0b20gPCBwcmVwYWludEJvdHRvbSkgewogICAgICAgICAgICAgKytib3R0b207Ci0g
ICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCBib3R0b20sIHJpZ2h0
LCBib3R0b20sIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgICAgICAgICAgcHJlcGFyZVRvVXBk
YXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdodCwgYm90dG9tLCAwKTsKICAgICAgICAg
ICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRvcCA+IHByZXBhaW50
VG9wKSB7CiAgICAgICAgICAgICAtLXRvcDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRp
bGVzKHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIHRvcCwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7Cisg
ICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0LCB0
b3AsIDApOwogICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lw
c0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBp
ZiAobGVmdCA+IHByZXBhaW50TGVmdCkgewogICAgICAgICAgICAgLS1sZWZ0OwotICAgICAgICAg
ICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20sIG9j
Y2x1ZGVkU2NyZWVuU3BhY2UpOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1
ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20sIDApOwogICAgICAgICAgICAgaWYgKCFtX3BhaW50
UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBpZiAocmlnaHQgPCBwcmVwYWludFJpZ2h0KSB7CiAgICAg
ICAgICAgICArK3JpZ2h0OwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwg
cmlnaHQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgICAg
ICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCByaWdodCwgdG9wLCByaWdodCwgYm90dG9t
LCAwKTsKICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJ
ZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmgKaW5kZXggNmZmOTAxZGZkYmZmNzYyZjA0NjM2M2IzNGE0ODQ1MmMwNGQx
MjEwMC4uNjQzZjY5NjQwMDI5NDE4YTQ3N2M2ZjIxNDMzZGRhNzgzNmNkNDhiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmgKQEAgLTMzLDkgKzMzLDcgQEAKICNpbmNsdWRlICJjYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQogY2xhc3MgTGF5ZXJUZXh0
dXJlVXBkYXRlcjsKLWNsYXNzIFJlZ2lvbjsKIGNsYXNzIFVwZGF0YWJsZVRpbGU7CiAKIGNsYXNz
IFRpbGVkTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKQEAgLTkwLDEwICs4
OCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCByZXNldFVwZGF0ZVN0YXRlKCk7CiAKICAgICAv
LyBQcmVwYXJlIGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3
aXRoIGxheWVyUmVjdC4KLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBs
YXllclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CisgICAgdm9pZCBw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBDQ09jY2x1c2lv
blRyYWNrZXIqKTsKIAogICAgIC8vIFNhbWUgYXMgYWJvdmUsIGJ1dCB0aGlzIHdpbGwgdHJ5IHRv
IHBhaW50IGFkZGl0aW9uYWwgc3Vycm91bmRpbmcgY29udGVudCBpZiBpZGxlLgotICAgIHZvaWQg
cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZ2lv
biYgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CiAKICAg
ICAvLyBBZnRlciBwcmVwYXJpbmcgYW4gdXBkYXRlLCByZXR1cm5zIHRydWUgaWYgbW9yZSBwcmUt
cGFpbnRpbmcgaXMgbmVlZGVkLgogICAgIGJvb2wgbmVlZHNJZGxlUGFpbnQoY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KTsKQEAgLTExMyw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdGls
ZU9ubHlOZWVkc1BhcnRpYWxVcGRhdGUoVXBkYXRhYmxlVGlsZSopOwogICAgIGJvb2wgdGlsZU5l
ZWRzQnVmZmVyZWRVcGRhdGUoVXBkYXRhYmxlVGlsZSopOwogCi0gICAgdm9pZCBwcmVwYXJlVG9V
cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBi
b3R0b20sIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CisgICAgdm9pZCBwcmVw
YXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQs
IGludCBib3R0b20sIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogICAgIEludFJlY3QgaWRs
ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KTsKIAogICAgIFVwZGF0
YWJsZVRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmNwcAppbmRleCBlM2UxOWUyNThmYWE2MDRiYzdmNWJhYjI5MjcyMjM2YzJjMTY3ZDE2Li44
MGQyM2QxYThlMTkwZjI2ZGViYjZhZmViNDQ1YzkwN2YzYWYzZDQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdM
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgYm9vbCBXZWJHTExheWVyQ2hyb21p
dW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIExheWVyQ2hyb21pdW06OmRyYXdz
Q29udGVudCgpICYmICFtX2NvbnRleHRMb3N0OwogfQogCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJikKK3ZvaWQgV2ViR0xMYXllckNo
cm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8q
IG9jY2x1c2lvbiAqLykKIHsKICAgICBpZiAoIWRyYXdzQ29udGVudCgpIHx8ICFtX25lZWRzRGlz
cGxheSB8fCAhbV90ZXh0dXJlVXBkYXRlZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExh
eWVyQ2hyb21pdW0uaAppbmRleCBhZjEzOGZhMWUwZjNjOTg3NDFkYWUwZTlhYjRmYzUwNzM1YTdk
MDc5Li42NTA5ZmIzNThkOTVlOWIwZGYxNzFhYzBiMWNkZmM1ZDUzNTQxNjNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKSB7IG1fdGV4dHVyZUlkID0gdGV4dHVyZUlk
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNU
byhDQ0xheWVySW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMzRi
Y2UxMTgxMDBmYTVmYTM4ZDkzNTI4MjBkNTcwOGU5ZmVkZGNhMi4uMDY1OTAyY2U1YTMxMzIzZGZm
ZTkxYzhlNWFlY2YwMzFjNzU5NTBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CkBAIC00OTksMTQgKzQ5OSwxNCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRleHR1
cmVzKCkKIH0KIAogLy8gc3RhdGljCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50
c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlwZSBwYWludFR5cGUsIGNvbnN0
IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWlu
dENvbnRlbnRzSWZEaXJ0eShMYXllckNocm9taXVtKiBsYXllciwgUGFpbnRUeXBlIHBhaW50VHlw
ZSwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgQVNTRVJUKGxh
eWVyKTsKICAgICBBU1NFUlQoUGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSB8fCBQYWludElkbGUg
PT0gcGFpbnRUeXBlKTsKICAgICBpZiAoUGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSkKLSAgICAg
ICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAg
ICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVzaW9uKTsKICAgICBlbHNlCi0g
ICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVkZWRTY3JlZW5TcGFj
ZSk7CisgICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVzaW9uKTsK
IH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJT
dXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgUGFpbnRUeXBlIHBhaW50
VHlwZSkKQEAgLTUxNiwyMCArNTE2LDE5IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1h
c2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAgICAg
Ly8gbWFzayBhbmQgcmVwbGljYSBzaG91bGQgYmUgcGFpbnRlZC4KIAogICAgIC8vIEZJWE1FOiBJ
ZiB0aGUgc3VyZmFjZSBoYXMgYSByZXBsaWNhLCBpdCBzaG91bGQgYmUgcGFpbnRlZCB3aXRoIG9j
Y2x1c2lvbiB0aGF0IGV4Y2x1ZGVzIHRoZSBjdXJyZW50IHRhcmdldCBzdXJmYWNlIHN1YnRyZWUu
Ci0gICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+
bWFza0xheWVyKCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+
c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXll
ci0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlbmRl
clN1cmZhY2VMYXllci0+bWFza0xheWVyKCksIHBhaW50VHlwZSwgbm9PY2NsdXNpb24pOworICAg
ICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigp
LCBwYWludFR5cGUsIDApOwogICAgIH0KIAogICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXll
ciA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCk7CiAgICAgaWYgKHJlcGxpY2FM
YXllcikgewotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXIsIHBhaW50
VHlwZSwgbm9PY2NsdXNpb24pOworICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNh
TGF5ZXIsIHBhaW50VHlwZSwgMCk7CiAKICAgICAgICAgaWYgKHJlcGxpY2FMYXllci0+bWFza0xh
eWVyKCkpIHsKICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPnNldFZpc2li
bGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigp
LT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJl
cGxpY2FMYXllci0+bWFza0xheWVyKCksIHBhaW50VHlwZSwgbm9PY2NsdXNpb24pOworICAgICAg
ICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgcGFp
bnRUeXBlLCAwKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTU1Myw3ICs1NTIsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdAogICAgICAgICAgICAgQVNTRVJUKCFpdC0+Ym91bmRzKCkuaXNF
bXB0eSgpKTsKIAogICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2UoaXQtPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgICAgICBwYWludENv
bnRlbnRzSWZEaXJ0eSgqaXQsIHBhaW50VHlwZSwgb2NjbHVzaW9uVHJhY2tlci5jdXJyZW50T2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpKTsKKyAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5
KCppdCwgcGFpbnRUeXBlLCAmb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgICAgICAgICBvY2NsdXNp
b25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKCppdCk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShp
dC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKaW5kZXggZDUyNjIyNjJkNGYyY2NhNTQ0OTZjZmJiYTdhNTUwZGI5
MzJiYTRhZS4uYzViMGMwM2JkZjYxZWU1NWFiMWMwNjlmNWE0NjY3MTBmNjAzNTQwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgImNjL0NDQW5pbWF0aW9uRXZlbnRzLmgiCiAj
aW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCisjaW5jbHVkZSAiY2MvQ0NPY2Ns
dXNpb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogCiAjaW5jbHVkZSA8bGlt
aXRzPgpAQCAtMjE2LDcgKzIxNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplTGF5
ZXJSZW5kZXJlcigpOwogCiAgICAgZW51bSBQYWludFR5cGUgeyBQYWludFZpc2libGUsIFBhaW50
SWRsZSB9OwotICAgIHN0YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21p
dW0qLCBQYWludFR5cGUsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAg
c3RhdGljIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlw
ZSwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CiAgICAgdm9pZCBwYWludExheWVyQ29udGVu
dHMoY29uc3QgTGF5ZXJMaXN0JiwgUGFpbnRUeXBlKTsKICAgICB2b2lkIHBhaW50TWFza0FuZFJl
cGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cAppbmRleCBmZTc4OGZiYWVlZTc3ZTc5M2EwMDM4ZWM3YWYyOTI2NTVmZmM3NDZiLi43MDZiNGQw
MDI0MDY3ZjljMmQ3ODk0ZTg4MDRkMjI1ZTFjNDk4YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTMyLDcgKzMy
LDYgQEAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUg
IlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29t
cG9zaXRvci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgpAQCAtMTI3MywxNSArMTI3MiwxNSBAQCBw
dWJsaWM6CiAgICAgaW50IHVwZGF0ZUNvdW50KCkgeyByZXR1cm4gbV91cGRhdGVDb3VudDsgfQog
ICAgIHZvaWQgcmVzZXRVcGRhdGVDb3VudCgpIHsgbV91cGRhdGVDb3VudCA9IDA7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVk
U2NyZWVuU3BhY2UpCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0
IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogICAgIHsKLSAgICAgICAgQ29udGVudExh
eWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwor
ICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVz
aW9uKTsKICAgICAgICAgbV9wYWludENvbnRlbnRzQ291bnQrKzsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWQp
CisgICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1
c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9t
aXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVkZWQpOworICAgICAgICBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1c2lvbik7CiAgICAg
ICAgIG1faWRsZVBhaW50Q29udGVudHNDb3VudCsrOwogICAgIH0KIApAQCAtMTYzMyw5ICsxNjMy
LDkgQEAgY2xhc3MgVGVzdExheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXN0TGF5ZXJDaHJvbWl1bSgpKTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3Jl
ZW5TcGFjZSkKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiAgICAgewotICAgICAgICBtX29jY2x1ZGVkU2Ny
ZWVuU3BhY2UgPSBvY2NsdWRlZFNjcmVlblNwYWNlOworICAgICAgICBtX29jY2x1ZGVkU2NyZWVu
U3BhY2UgPSBvY2NsdXNpb24gPyBvY2NsdXNpb24tPmN1cnJlbnRPY2NsdXNpb25JblNjcmVlblNw
YWNlKCkgOiBSZWdpb24oKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNmEzZGIw
MmE3YjViZGFhZmNhZWRjMWFkNmJlODNjMjBjNzQ3MGNhNS4uMDNhZGIzYzg4OGFiZmY4NDBmYTFl
NjA5OTdmNmYwMDY1MTRmZGFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0xNTYsOCArMTU2
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIGNhbnZhcy0+c2V0TmVlZHNEaXNwbGF5KCk7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkpOwotICAgICAgICBSZWdp
b24gb2NjbHVkZWRTY3JlZW5TcGFjZTsKLSAgICAgICAgY2FudmFzLT5wYWludENvbnRlbnRzSWZE
aXJ0eShvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICAgICAgY2FudmFzLT5wYWludENvbnRlbnRz
SWZEaXJ0eSgwKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkp
OwogICAgICAgICB7CiAgICAgICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2NvcGVk
SW1wbFRocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGls
ZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDI1MjMyMzBlMDA1Y2I5MWUxNTRkOTE5Y2M3
ZTljOTY1ZjBmOTQxMDMuLjA3Y2VhYWU4OGQ3NTc3N2I2MzYzYzdhNzRjOWJhMGM4OTM0YjgwYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9t
aXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcApAQCAtNDgsNiArNDgsMjUgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsK
IAogbmFtZXNwYWNlIHsKIAorY2xhc3MgVGVzdENDT2NjbHVzaW9uVHJhY2tlciA6IHB1YmxpYyBD
Q09jY2x1c2lvblRyYWNrZXIgeworcHVibGljOgorICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIo
KQorICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KQorICAgICAgICAsIG1fc2Npc3NvclJlY3RJblNjcmVlbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApKQorICAgIHsKKyAgICAgICAgLy8gUHJldGVuZCB3ZSBoYXZlIHZpc2l0ZWQgYSByZW5kZXIg
c3VyZmFjZS4KKyAgICAgICAgbV9zdGFjay5hcHBlbmQoU3RhY2tPYmplY3QoKSk7CisgICAgfQor
CisgICAgdm9pZCBzZXRPY2NsdXNpb24oY29uc3QgUmVnaW9uJiBvY2NsdXNpb24pIHsgbV9zdGFj
ay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4gPSBvY2NsdXNpb247IH0KKworcHJvdGVjdGVkOgor
ICAgIHZpcnR1YWwgSW50UmVjdCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGNvbnN0
IExheWVyQ2hyb21pdW0qIGxheWVyKSBjb25zdCB7IHJldHVybiBtX3NjaXNzb3JSZWN0SW5TY3Jl
ZW47IH0KKworcHJpdmF0ZToKKyAgICBJbnRSZWN0IG1fc2Npc3NvclJlY3RJblNjcmVlbjsKK307
CisKIGNsYXNzIEZha2VUZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFRleHR1cmVBbGxvY2F0b3Ig
ewogcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJbnRT
aXplJiwgR0MzRGVudW0pIHsgcmV0dXJuIDA7IH0KQEAgLTE1MCwxNCArMTY5LDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChyZWN0KTsKICAg
ICB9CiAKLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBSZWdpb24mIG9jY2x1ZGVkKQorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogICAgIHsKLSAg
ICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUocmVjdCwgb2NjbHVkZWQp
OworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShyZWN0LCBvY2Ns
dXNpb24pOwogICAgIH0KIAotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkKQorICAgIHZvaWQgcHJlcGFyZVRvVXBk
YXRlSWRsZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9j
Y2x1c2lvbikKICAgICB7Ci0gICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBk
YXRlSWRsZShyZWN0LCBvY2NsdWRlZCk7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlSWRsZShyZWN0LCBvY2NsdXNpb24pOwogICAgIH0KIAogICAgIGJvb2wgbmVl
ZHNJZGxlUGFpbnQoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTE4Miw5ICsyMDEsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCisgICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciog
b2NjbHVzaW9uKQogICAgIHsKLSAgICAgICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJl
Y3QoKSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNp
YmxlTGF5ZXJSZWN0KCksIG9jY2x1c2lvbik7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjQwLDcg
KzI1OSw2IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAg
ICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZh
a2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXll
ckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsK
LSAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0
dXJlQWxsb2NhdG9yOwogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9j
YXRvcik7CkBAIC0yNDgsNyArMjY2LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoRGlydHlUaWxlcykKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMg
aW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91
bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogCkBAIC0yNjEsNyArMjc5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICAvLyBJbnZhbGlkYXRlcyBib3RoIHRpbGVzLi4u
CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAg
ICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUgb25lIG9mIHRoZW0uCi0gICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgbm9PY2NsdXNpb24pOworICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogICAg
IGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTI3NiwxNSArMjk0LDE3
IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlUaWxlcykK
ICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcg
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExh
eWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkp
OwotICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9j
Y2x1ZGVkOwogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAg
ICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwogCiAgICAgLy8g
VGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBh
aW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7
CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwg
MCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWln
aHQoKSAvIDIuMCkpOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwg
MCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApLCAmb2NjbHVkZWQpOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
SW1wbC5nZXQoKSk7CiAKQEAgLTI5Nyw4ICszMTcsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAgICAgLy8gSW52YWxpZGF0ZXMgcGFydCBv
ZiB0aGUgdG9wIHRpbGUuLi4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAw
LCA1MCwgNTApKTsKICAgICAvLyAuLi4uYnV0IHRoZSBhcmVhIGlzIG9jY2x1ZGVkLgotICAgIFJl
Z2lvbiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKLSAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCBvY2NsdXNpb24pOworICAgIG9jY2x1
ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDUwLCA1MCkpOworICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CiAgICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMzIxLDEzICszNDEsMTIgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgSW50
U2l6ZSBjb250ZW50Qm91bmRzKDUwMCwgNTAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KElu
dFBvaW50Ojp6ZXJvKCksIGNvbnRlbnRCb3VuZHMpOwogICAgIEludFJlY3QgdmlzaWJsZVJlY3Qo
MjAwLCAyMDAsIDEwMCwgMTAwKTsKLSAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICAvLyBU
aGlzIGludmFsaWRhdGVzIDI1IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUgdmlzaWJsZSB0aWxl
LgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnNldFZp
c2libGVMYXllclJlY3QodmlzaWJsZVJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChj
b250ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgbm9P
Y2NsdXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIDApOwog
CiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRpbGVzIGluIHRo
ZSBjZW50ZXIuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVS
ZWN0KSk7CkBAIC0zNDIsOSArMzYxLDkgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoSWRsZVBhaW50VGlsZXMpCiAKICAgICAvLyBGb3IgdGhlIG5leHQgZm91ciB1cGRhdGVzLCB3
ZSBzaG91bGQgZGV0ZWN0IHdlIHN0aWxsIG5lZWQgaWRsZSBwYWludGluZy4KICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZp
c2libGVSZWN0LCBub09jY2x1c2lvbik7CisgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
dmlzaWJsZVJlY3QsIDApOwogICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFp
bnQodmlzaWJsZVJlY3QpKTsKLSAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlz
aWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlk
bGUodmlzaWJsZVJlY3QsIDApOwogICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygwLCB1cGRhdGVyKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJ
bXBsLmdldCgpKTsKICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVz
KCk7CkBAIC0zNzQsNyArMzkzLDYgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNo
VGlsZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3Ig
dGV4dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVB
bGxvY2F0b3IpOwotICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIC8vIFRoZSB0aWxlIHNp
emUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRp
bGVzLgogICAgIC8vIEhvd2V2ZXIsIGR1cmluZyB0aGUgcGFpbnQsIHdlIGludmFsaWRhdGUgb25l
IG9mIHRoZSB0aWxlcy4gVGhpcyBzaG91bGQKQEAgLTM4Miw3ICs0MDAsNyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc01hcmtlZERpcnR5RHVyaW5nUGFpbnQpCiAgICAg
bGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUw
KSwgbGF5ZXIuZ2V0KCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllcklt
cGwuZ2V0KCkpOwogCkBAIC00MDIsMTggKzQyMCwxNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uTmV4dExheWVyKQog
CiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1
cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwotICAgIFJlZ2lvbiBub09jY2x1
c2lvbjsKIAogICAgIGxheWVyMS0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBs
YXllcjEtPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXll
cjItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIyLT5pbnZhbGlkYXRl
UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKLSAgICBsYXllcjEtPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOworICAgIGxheWVyMS0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKIAogICAgIC8vIElu
dmFsaWRhdGUgYSB0aWxlIG9uIGxheWVyMQogICAgIGxheWVyMi0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5
ZXIxLmdldCgpKTsKLSAgICBsYXllcjItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSwgbm9PY2NsdXNpb24pOworICAgIGxheWVyMi0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKIAogICAgIGxheWVyMS0+dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllcjItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoMCwgdXBkYXRlcik7CkBAIC00MzksNyArNDU2LDYgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRPblByZXZpb3VzTGF5
ZXIKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NU
ZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKLSAgICBSZWdpb24gbm9P
Y2NsdXNpb247CiAKICAgICBsYXllcjEtPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAg
ICAgbGF5ZXIxLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CkBAIC00
NDgsOSArNDY0LDkgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXll
ck1hcmtlZERpcnR5RHVyaW5nUGFpbnRPblByZXZpb3VzTGF5ZXIKIAogICAgIC8vIEludmFsaWRh
dGUgYSB0aWxlIG9uIGxheWVyMgogICAgIGxheWVyMS0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIyLmdl
dCgpKTsKLSAgICBsYXllcjEtPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSwgbm9PY2NsdXNpb24pOworICAgIGxheWVyMS0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwg
MCwgMTAwLCAyMDApLCAwKTsKIAotICAgIGxheWVyMi0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CisgICAgbGF5ZXIyLT5wcmVwYXJlVG9VcGRh
dGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogCiAgICAgbGF5ZXIxLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygwLCB1cGRhdGVyKTsKQEAgLTQ3MSw3ICs0ODcsNiBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIEludFNpemUgY29udGVu
dEJvdW5kcygzMDAsIDMwMCk7CiAgICAgSW50UmVjdCBjb250ZW50UmVjdChJbnRQb2ludDo6emVy
bygpLCBjb250ZW50Qm91bmRzKTsKICAgICBJbnRSZWN0IHZpc2libGVSZWN0KDEwMCwgMTAwLCAx
MDAsIDEwMCk7Ci0gICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAgICAgLy8gV2UgaGF2ZSBlbm91
Z2ggbWVtb3J5IGZvciBvbmx5IHRoZSB2aXNpYmxlIHJlY3QsIHNvIHdlIHdpbGwgcnVuIG91dCBv
ZiBtZW1vcnkgaW4gZmlyc3QgaWRsZSBwYWludC4KICAgICBpbnQgbWVtb3J5TGltaXQgPSA0ICog
MTAwICogMTAwOyAvLyAyIHRpbGVzLCA0IGJ5dGVzIHBlciBwaXhlbC4KQEAgLTQ4OCw3ICs1MDMs
NyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQog
ICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnNldFZpc2li
bGVMYXllclJlY3QodmlzaWJsZVJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250
ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgbm9PY2Ns
dXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIDApOwogCiAg
ICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRpbGVzIHN1cm91bmRp
bmcgdmlzaWJsZSB0aWxlLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2
aXNpYmxlUmVjdCkpOwpAQCAtNTAwLDggKzUxNSw4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5o
YXNUaWxlQXQoMSwgMSkpOwogCiAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1
cmVzKCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNp
b24pOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0LCBub09jY2x1
c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgMCk7CisgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QsIDApOwogCiAgICAgLy8gV2Ug
c2hvdWxkbid0IHNpZ25hbCB3ZSBuZWVkIGFub3RoZXIgaWRsZSBwYWludCBhZnRlciB3ZSBydW4g
b3V0IG9mIG1lbW9yeS4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZp
c2libGVSZWN0KSk7CkBAIC01MTYsNyArNTMxLDYgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hy
b21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVy
ZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihu
ZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKLSAgICBSZWdpb24gbm9PY2NsdXNpb247CiAK
ICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwogICAgIENDVGV4dHVy
ZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CkBAIC01MjQsNyArNTM4LDcgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAg
Ly8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVu
IHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAw
KSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsK
LSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09j
Y2x1c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSwgMCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAt
NTM3LDE4ICs1NTEsMTggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRl
RnJvbVByZXBhcmUpCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFy
UHJlcGFyZUNvdW50KCk7CiAgICAgLy8gSW52b2tlIHByZXBhcmVUb1VwZGF0ZSBhZ2Fpbi4gQXMg
dGhlIGxheWVyIGlzIHZhbGlkIHByZXBhcmVUb1VwZGF0ZSBzaG91bGRuJ3QgYmUgaW52b2tlZCBv
bgogICAgIC8vIHRoZSBMYXllclRleHR1cmVVcGRhdGVyLgotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBFWFBFQ1Rf
RVEoMCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsK
IAogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDUwLCA1MCkpOwogICAg
IC8vIHNldFJlY3RUb0ludmFsaWRhdGUgdHJpZ2dlcnMgaW52YWxpZGF0ZVJlY3QoKSBiZWluZyBp
bnZva2VkIGZyb20gcHJlcGFyZVRvVXBkYXRlLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMjUsIDI1LCA1MCwgNTApLCBs
YXllci5nZXQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFy
UHJlcGFyZUNvdW50KCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwogICAgIC8vIFRoZSBsYXll
ciBzaG91bGQgc3RpbGwgYmUgaW52YWxpZCBhcyBwcmVwYXJlVG9VcGRhdGUgaW52b2tlZCBpbnZh
bGlkYXRlLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCksIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwg
MCwgMTAwLCAyMDApLCAwKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsKIH0KIApAQCAtNTU5LDcgKzU3Myw2IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91
bmRzQXJlU2NhbGVkKQogCiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0
KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJXaXRoU2NhbGVkQm91bmRzPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHModGV4dHVyZU1hbmFnZXIu
Z2V0KCkpKTsKLSAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICBGYWtlVGV4dHVyZUFsbG9j
YXRvciB0ZXh0dXJlQWxsb2NhdG9yOwogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4
dHVyZUFsbG9jYXRvcik7CkBAIC01NzQsMjAgKzU4NywyMCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAg
ICAvLyBPbiBmaXJzdCB1cGRhdGUsIHRoZSB1cGRhdGVSZWN0IGluY2x1ZGVzIGFsbCB0aWxlcywg
ZXZlbiBiZXlvbmQgdGhlIGJvdW5kYXJpZXMgb2YgdGhlIGxheWVyLgogICAgIC8vIEhvd2V2ZXIs
IGl0IHNob3VsZCBzdGlsbCBiZSBpbiBsYXllciBzcGFjZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAg
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgMCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRS
ZWN0KDAsIDAsIDMwMCwgMzAwICogMC44KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAgICAv
LyBBZnRlciB0aGUgdGlsZXMgYXJlIHVwZGF0ZWQgb25jZSwgYW5vdGhlciBpbnZhbGlkYXRlIG9u
bHkgbmVlZHMgdG8gdXBkYXRlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVyLgogICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KGNvbnRlbnRCb3VuZHMsIDApOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KDAsIHVwZGF0ZXIpOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdChsYXllckJv
dW5kcyksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gUGFydGlhbCByZS1wYWludCBz
aG91bGQgYWxzbyBiZSByZXByZXNlbnRlZCBieSB0aGUgdXBkYXRlUmVjdCBpbiBsYXllciBzcGFj
ZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAgICAgSW50UmVjdCBwYXJ0aWFsRGFtYWdlKDMwLCAxMDAs
IDEwLCAxMCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KHBhcnRpYWxEYW1hZ2UpOwotICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOworICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgMCk7CiAgICAgbGF5ZXItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JF
Q1RfRVEoRmxvYXRSZWN0KDQ1LCA4MCwgMTUsIDgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIH0K
QEAgLTYwMSw3ICs2MTQsNiBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUlu
dmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKIAogICAgIEZha2VUZXh0dXJlQWxs
b2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0
ZXh0dXJlQWxsb2NhdG9yKTsKLSAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICAvLyBDcmVh
dGUgYSBsYXllciB3aXRoIG9uZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgx
MDAsIDEwMCkpOwpAQCAtNjExLDcgKzYyMyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIEVYUEVD
VF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEwMCksIGxheWVyLT5sYXN0TmVl
ZHNEaXNwbGF5UmVjdCgpKTsKIAogICAgIC8vIFB1c2ggdGhlIHRpbGVzIHRvIHRoZSBpbXBsIHNp
ZGUgYW5kIGNoZWNrIHRoYXQgdGhlcmUgaXMgZXhhY3RseSBvbmUuCi0gICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgbm9PY2NsdXNpb24pOworICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogICAgIGxh
eWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5w
dXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJ
bXBsLT5oYXNUaWxlQXQoMCwgMCkpOwpAQCAtNjI1LDcgKzYzNyw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2Vz
KQogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEwMCksIGxh
eWVyLT5sYXN0TmVlZHNEaXNwbGF5UmVjdCgpKTsKIAogICAgIC8vIFRoZSBpbXBsIHNpZGUgc2hv
dWxkIGdldCAyeDIgdGlsZXMgbm93LgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCAyMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgMjAwLCAyMDApLCAwKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAs
IDApKTsKQEAgLTYzNiw3ICs2NDgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZl
cmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICAvLyBJbnZhbGlk
YXRlIHRoZSBlbnRpcmUgbGF5ZXIgYWdhaW4sIGJ1dCBkbyBub3QgcGFpbnQuIEFsbCB0aWxlcyBz
aG91bGQgYmUgZ29uZSBub3cgZnJvbSB0aGUKICAgICAvLyBpbXBsIHNpZGUuCiAgICAgbGF5ZXIt
PnNldE5lZWRzRGlzcGxheSgpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCAwLCAwKSwgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgxLCAwLCAwLCAxKSwgMCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdl
dCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwpAQCAt
NzAyLDExICs3MTQsMTAgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCByZXNpemVUb1Nt
YWxsZXIpCiB7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoNjAqMTAyNCoxMDI0LCA2MCoxMDI0KjEwMjQsIDEwMjQpOwog
ICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBG
YWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7Ci0gICAgUmVnaW9u
IG5vT2NjbHVzaW9uOwogCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDcwMCwgNzAwKSk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNzAwLCA3MDApKTsKLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNzAwLCA3MDApLCBub09jY2x1
c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDcwMCwgNzAw
KSwgMCk7CiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMjAwLCAyMDApKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpOwpAQCAtNzg3LDEz
ICs3OTgsMTIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRo
b3V0T2NjbHVzaW9uKQogewogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFn
ZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAy
NCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYo
bmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLSAgICBS
ZWdpb24gb2NjbHVkZWQ7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRo
aXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0
Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKIAogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVkZWQpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRh
dGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIEVYUEVDVF9FUSgyLCBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIH0KIApAQCAt
ODAxLDMwICs4MTEsMzEgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50
ZWRXaXRoT2NjbHVzaW9uKQogewogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwg
MTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRS
ZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLSAg
ICBSZWdpb24gb2NjbHVkZWQ7CisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsK
IAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KIAogICAgIGxheWVyLT5zZXRCb3Vu
ZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKFRyYW5z
Zm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpIC8gMi4w
LCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsKIAotICAgIG9jY2x1ZGVkID0gSW50
UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApOworICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRS
ZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0
KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFs
aWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBF
WFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVS
ZWN0Q291bnQoKSk7CiAKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xl
YXJQcmVwYXJlUmVjdENvdW50KCk7CiAKLSAgICBvY2NsdWRlZCA9IEludFJlY3QoMjUwLCAyMDAs
IDMwMCwgMTAwKTsKKyAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyNTAsIDIwMCwg
MzAwLCAxMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAs
IDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCksIG9jY2x1ZGVkKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwg
NjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0yLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKIAotICAg
IG9jY2x1ZGVkID0gSW50UmVjdCgyNTAsIDI1MCwgMzAwLCAxMDApOworICAgIG9jY2x1ZGVkLnNl
dE9jY2x1c2lvbihJbnRSZWN0KDI1MCwgMjUwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAg
RVhQRUNUX0VRKDM2LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJl
Y3RDb3VudCgpKTsKIH0KIApAQCAtODMyLDU4ICs4NDMsNjAgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3RyYWlu
dHMpCiB7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1
cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBS
ZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwotICAgIFJlZ2lvbiBvY2Ns
dWRlZDsKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOwogCiAgICAgLy8gVGhl
IHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgogCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYw
MCwgNjAwKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRy
aXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3Vu
ZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogCiAgICAgLy8gVGhlIHBhcnRpYWxseSBvY2NsdWRlZCB0
aWxlcyAoYnkgdGhlIDE1MCBvY2NsdXNpb24gaGVpZ2h0KSBhcmUgdmlzaWJsZSBiZXlvbmQgdGhl
IG9jY2x1c2lvbiwgc28gbm90IGN1bGxlZC4KLSAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAy
MDAsIDMwMCwgMTUwKTsKKyAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIw
MCwgMzAwLCAxNTApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAs
IDAsIDYwMCwgMzYwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwg
NjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAw
LCA2MDApLCBvY2NsdWRlZCk7Ci0gICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgRVhQRUNU
X0VRKDI0LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENv
dW50KCkpOwogCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJl
cGFyZVJlY3RDb3VudCgpOwogCiAgICAgLy8gTm93IHRoZSB2aXNpYmxlIHJlZ2lvbiBzdG9wcyBh
dCB0aGUgZWRnZSBvZiB0aGUgb2NjbHVzaW9uIHNvIHRoZSBwYXJ0bHkgdmlzaWJsZSB0aWxlcyBi
ZWNvbWUgZnVsbHkgb2NjbHVkZWQuCi0gICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAz
MDAsIDE1MCk7CisgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMw
MCwgMTUwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA2
MDAsIDM1MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSwgb2NjbHVkZWQpOwotICAgIEVYUEVDVF9FUSgzNi02LCBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgy
NC02LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgp
KTsKIAogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVS
ZWN0Q291bnQoKTsKIAogICAgIC8vIE5vdyB0aGUgdmlzaWJsZSByZWdpb24gaXMgZXZlbiBzbWFs
bGVyIHRoYW4gdGhlIG9jY2x1c2lvbiwgaXQgc2hvdWxkIGhhdmUgdGhlIHNhbWUgcmVzdWx0Lgot
ICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxNTApOworICAgIG9jY2x1ZGVk
LnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCkpOwogICAgIGxheWVyLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNDApKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKLSAgICBFWFBF
Q1RfRVEoMzYtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0
Q291bnQoKSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMjQtNiwgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiB9CiAKIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKIHsKICAg
ICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6
OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtl
VGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNo
cm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7Ci0gICAgUmVnaW9uIG9jY2x1ZGVkOworICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAKICAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAuCiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsK
KyAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAw
LCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhlaWdo
dCgpIC8gMi4wKSk7CiAKLSAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAw
KTsKKyAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDAp
KTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsK
LSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2Ns
dWRlZCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CiAKICAgICAvLyBSZXBh
aW50IHdpdGhvdXQgbWFya2luZyBpdCBkaXJ0eS4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1Rf
RVEoMCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQo
KSk7CiB9CiAKQEAgLTg5MSw3ICs5MDQsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRUcmFuc2Zvcm1zKQogewogICAgIE93blB0cjxU
ZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVy
Q2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4
dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLSAgICBSZWdpb24gb2NjbHVkZWQ7CisgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEw
MC4KIApAQCAtOTAxLDExICs5MTQsMTIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0
aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3JtcykKICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBzY3JlZW5UcmFuc2Zvcm07CiAgICAgc2NyZWVuVHJhbnNmb3JtLnNjYWxlKDAuNSk7
CiAgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNjcmVlblRyYW5zZm9ybSk7Cisg
ICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oc2NyZWVuVHJhbnNmb3JtICogVHJhbnNmb3JtYXRp
b25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVy
LT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogCi0gICAgb2NjbHVkZWQgPSBJbnRSZWN0KDEw
MCwgMTAwLCAxNTAsIDUwKTsKKyAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgxMDAs
IDEwMCwgMTUwLCA1MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEo
MzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQo
KSk7CiB9CiAKQEAgLTkxMyw3ICs5MjcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogewogICAgIE93blB0cjxUZXh0
dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAy
NCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hy
b21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVy
ZU1hbmFnZXIuZ2V0KCkpKTsKLSAgICBSZWdpb24gb2NjbHVkZWQ7CisgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlciBvY2NsdWRlZDsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4K
IApAQCAtOTIyLDExICs5MzYsMTIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxl
c1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICAvLyBwaXhlbHMsIHdoaWNoIG1l
YW5zIG5vbmUgc2hvdWxkIGJlIG9jY2x1ZGVkLgogICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxl
KDAuNSk7CiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisgICAgbGF5
ZXItPnNldERyYXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5
ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIu
MCkpOwogCi0gICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCk7CisgICAg
b2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKSk7CiAgICAg
bGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91
bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCks
IG9jY2x1ZGVkKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAw
LCA2MDApLCAmb2NjbHVkZWQpOwogICAgIC8vIFRoZSBjb250ZW50IGlzIGhhbGYgdGhlIHNpemUg
b2YgdGhlIGxheWVyIChzbyB0aGUgbnVtYmVyIG9mIHRpbGVzIGlzIGZld2VyKS4KICAgICAvLyBJ
biB0aGlzIGNhc2UsIHRoZSBjb250ZW50IGlzIDMwMHgzMDAsIGFuZCBzaW5jZSB0aGUgdGlsZSBz
aXplIGlzIDEwMCwgdGhlCiAgICAgLy8gbnVtYmVyIG9mIHRpbGVzIDN4My4KQEAgLTkzNywxMCAr
OTUyLDEwIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9j
Y2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRoZSBwYWludGluZyB3
b3JrcyB3aGVuIHRoZSBjb250ZW50IHNwYWNlIGlzIHNjYWxlZCB0bwogICAgIC8vIGEgZGlmZmVy
ZW50IGxheWVyIHNwYWNlLiBJbiB0aGlzIGNhc2UgdGhlIG9jY2x1ZGVkIHJlZ2lvbiBjYXRjaGVz
IHRoZQogICAgIC8vIGJsb3duIHVwIHRpbGVzLgotICAgIG9jY2x1ZGVkID0gSW50UmVjdCgyMDAs
IDIwMCwgMzAwLCAyMDApOworICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwg
MjAwLCAzMDAsIDIwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEo
OS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgp
KTsKIAogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVS
ZWN0Q291bnQoKTsKQEAgLTk0OSwxMSArOTY0LDEyIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggc2NyZWVuVHJhbnNmb3JtOwogICAgIHNjcmVlblRyYW5zZm9ybS5zY2FsZSgw
LjUpOwogICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5UcmFuc2Zvcm0p
OworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKHNjcmVlblRyYW5zZm9ybSAqIFRyYW5zZm9y
bWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpIC8gMi4wLCBs
YXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsKIAotICAgIG9jY2x1ZGVkID0gSW50UmVj
dCgxMDAsIDEwMCwgMTUwLCAxMDApOworICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0
KDEwMCwgMTAwLCAxNTAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KElu
dFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBF
Q1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RD
b3VudCgpKTsKIH0KIApAQCAtOTY2LDcgKzk4Miw2IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgb3BhcXVlQ29udGVudHNSZWdpb24pCiAKICAgICBJbnRSZWN0IG9wYXF1ZVBhaW50UmVj
dDsKICAgICBSZWdpb24gb3BhcXVlQ29udGVudHM7Ci0gICAgUmVnaW9uIG5vT2NjbHVzaW9uOwog
CiAgICAgSW50UmVjdCBjb250ZW50Qm91bmRzID0gSW50UmVjdCgwLCAwLCAxMDAsIDIwMCk7CiAg
ICAgSW50UmVjdCB2aXNpYmxlQm91bmRzID0gSW50UmVjdCgwLCAwLCAxMDAsIDE1MCk7CkBAIC05
NzgsNyArOTkzLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVDb250ZW50
c1JlZ2lvbikKICAgICAvLyBJZiB0aGUgbGF5ZXIgZG9lc24ndCBwYWludCBvcGFxdWUgY29udGVu
dCwgdGhlbiB0aGUgb3BhcXVlQ29udGVudHNSZWdpb24gc2hvdWxkIGJlIGVtcHR5LgogICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVl
UGFpbnRSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0g
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7Cisg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAwKTsKICAgICBvcGFxdWVD
b250ZW50cyA9IGxheWVyLT5vcGFxdWVDb250ZW50c1JlZ2lvbigpOwogICAgIEVYUEVDVF9UUlVF
KG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7CiAKQEAgLTk4NiwxNCArMTAwMSwxNCBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUNvbnRlbnRzUmVnaW9uKQogICAgIG9wYXF1
ZVBhaW50UmVjdCA9IEludFJlY3QoMTAsIDEwLCA5MCwgMTkwKTsKICAgICBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KG9wYXF1ZVBhaW50UmVjdCk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgMCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBs
YXllci0+b3BhcXVlQ29udGVudHNSZWdpb24oKTsKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNl
Y3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91
bmRzKCkpOwogICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkp
OwogCiAgICAgLy8gSWYgd2UgcGFpbnQgYWdhaW4gd2l0aG91dCBpbnZhbGlkYXRpbmcsIHRoZSBz
YW1lIHN0dWZmIHNob3VsZCBiZSBvcGFxdWUuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgMCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXll
ci0+b3BhcXVlQ29udGVudHNSZWdpb24oKTsKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rp
b24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRz
KCkpOwogICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwpA
QCAtMTAwMiw3ICsxMDE3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVD
b250ZW50c1JlZ2lvbikKICAgICAvLyBub3QgYmUgYWZmZWN0ZWQuCiAgICAgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwogICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEsIDEpKTsKLSAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIDApOwogICAgIG9wYXF1ZUNvbnRlbnRzID0g
bGF5ZXItPm9wYXF1ZUNvbnRlbnRzUmVnaW9uKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJz
ZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJvdW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJv
dW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMXUsIG9wYXF1ZUNvbnRlbnRzLnJlY3RzKCkuc2l6ZSgp
KTsKQEAgLTEwMTEsNyArMTAyNiw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgb3Bh
cXVlQ29udGVudHNSZWdpb24pCiAgICAgLy8gbm90IGJlIGFmZmVjdGVkLgogICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsK
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgxMCwgMTAsIDEsIDEpKTsKLSAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKKyAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIDApOwogICAgIG9wYXF1ZUNvbnRl
bnRzID0gbGF5ZXItPm9wYXF1ZUNvbnRlbnRzUmVnaW9uKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1Qo
aW50ZXJzZWN0aW9uKEludFJlY3QoMTAsIDEwMCwgOTAsIDEwMCksIHZpc2libGVCb3VuZHMpLCBv
cGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVDb250ZW50
cy5yZWN0cygpLnNpemUoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131979</attachid>
            <date>2012-03-14 19:53:40 -0700</date>
            <delta_ts>2012-03-15 19:41:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81181-20120314225339.patch</filename>
            <type>text/plain</type>
            <size>57047</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNjZTM5Y2Q0YjllZGU2
NDE1ZGFmZTY5NjkyNzA3ZjQ1MmFmMjQ4Ni4uNjliOWJiNmNlOWEzMWVjNGIxN2MwNDQxNmVmODZk
NjA4YzFmNTM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTAzLTE0ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRGVj
aWRlIG9jY2x1c2lvbiBpbiBwYWludCBjdWxsaW5nIHdpdGggQ0NPY2NsdXNpb25UcmFja2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTE4MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdW1iIGEgQ0NP
Y2NsdXNpb25UcmFja2VyKiBhcm91bmQgaW5zdGVhZCBvZiBhIGJhcmUgUmVnaW9uLCBzbyB0aGF0
IGl0CisgICAgICAgIGNhbiBtYWtlIGEgbW9yZSBpbmZvcm1lZCBkZWNpc2lvbiBpZiBhIHRpbGUg
aXMgb2NjbHVkZWQgb3Igbm90IGR1cmluZworICAgICAgICBwYWludC4KKworICAgICAgICBDb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
czJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAo
Q2FudmFzMkRMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW1hZ2VMYXllckNocm9taXVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlSWRsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmg6CisgICAgICAgIChUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKFdlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Lmg6CisKIDIwMTItMDMtMTQgIElnb3IgT2xpdmVpcmEgIDxpZ29yLm9Ac2lzYS5zYW1zdW5n
LmNvbT4KIAogICAgICAgICBTcGxpdCB0aGUgZXh0cmEgbG9naWMgb3V0IG9mIFJlbmRlckJsb2Nr
Ojp1cGRhdGVGaXJzdExldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1ZDQ3ZmU4
OGUwMDYyODhiZWMwODRiYTU0MjIxMjE3OWZmZDVhZmMzLi40MjcxNDdiYzNjOWY1ZDVkNzcyYzI0
ZWUzOWM3NTczYWVhMmQyNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI2IEBACisyMDEyLTAzLTE0ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gRGVjaWRlIG9jY2x1c2lvbiBpbiBwYWludCBjdWxsaW5nIHdp
dGggQ0NPY2NsdXNpb25UcmFja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MTE4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChX
VEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRz
SWZEaXJ0eSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV1RGOjpUZXN0TGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHRlc3RzL0NhbnZh
czJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwOgorICAgICAgICAoVGVzdENDT2NjbHVzaW9uVHJhY2tlcik6CisgICAgICAg
IChXVEY6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXI6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXIpOgor
ICAgICAgICAoV1RGOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyOjpzZXRPY2NsdXNpb24pOgorICAg
ICAgICAoV1RGOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyOjpsYXllclNjaXNzb3JSZWN0SW5UYXJn
ZXRTdXJmYWNlKToKKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRM
YXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXVEY6OlRFU1Qp
OgorCiAyMDEyLTAzLTEzICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBT
ZXBhcmF0ZSBOT1RJRklDQVRJT05TIGFuZCBMRUdBQ1lfTk9USUZJQ0FUSU9OUwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggM2ZjNjAwMmM4YTIyMDllMzM4NDQ3Y2Rl
NDI5MGZlNjA3NTkyYTAwYS4uNWMwYWYyY2ZiOTNlNGQwMGY3YjkwNmQ1NGNiZjBiYzI3YjRjNTQy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC05Nyw3ICs5Nyw3
IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpzZXRDYW52YXMoU2tDYW52YXMqIGNhbnZh
cykKICAgICBtX2NhbnZhcyA9IGNhbnZhczsKIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5T
cGFjZSAqLykKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0
eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9jY2x1c2lvbiAqLykKIHsKICAgICBUUkFD
RV9FVkVOVCgiQ2FudmFzMkRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSIsIHRo
aXMsIDApOwogICAgIGlmICghZHJhd3NDb250ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJD
aHJvbWl1bS5oCmluZGV4IGNiZDRhZGM5YjliNWQzNzg0NGFkZTgxMTEzMTJmYWY2M2Y2YjNlMWEu
LjkzMDIyNDY4NGJiZTQ4MGFiODg2NDU0ZWNkNGFhZjUwZmI1MDc3NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFBy
b3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IDdhNjY5ODRiZDc2MmIwY2Q5ODI5NTliNjE1ZDczODQ1OTFlYjBkNDMuLmMwMDcy
MTU3OTc5ZDc4YjU5YWIzN2UwZjIyZGIyNjU2MjI5YzA0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gVGlsZWRMYXllckNocm9taXVt
OjpkcmF3c0NvbnRlbnQoKSAmJiBtX2RlbGVnYXRlOwogfQogCi12b2lkIENvbnRlbnRMYXllckNo
cm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVu
U3BhY2UpCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShj
b25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKIHsKICAgICB1cGRhdGVUaWxlU2l6
ZUFuZFRpbGluZ09wdGlvbigpOwogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKTsK
QEAgLTEwNSwxMSArMTA1LDExIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29u
dGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjCiAgICAgaWYgKGRy
YXdzQ29udGVudCgpKQogICAgICAgICBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7CiAK
LSAgICBwcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0LCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAg
ICBwcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0LCBvY2NsdXNpb24pOwogICAgIG1fbmVlZHNEaXNw
bGF5ID0gZmFsc2U7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCit2b2lkIENv
bnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2Ns
dXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21p
dW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVu
CiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBy
ZXBhcmVUb1VwZGF0ZUlkbGUobGF5ZXJSZWN0LCBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICBw
cmVwYXJlVG9VcGRhdGVJZGxlKGxheWVyUmVjdCwgb2NjbHVzaW9uKTsKICAgICBpZiAobmVlZHNJ
ZGxlUGFpbnQobGF5ZXJSZWN0KSkKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGZhNTkwMWUyYWQyZDk1MDI2YTYyMDE4Yzhj
ZDYxZTY4NGU3NDJhZGQuLmU2OTk0YTIxYWVmYWMyMTQwODg3ZTViYmQ4YWJiMjAzYzlhYjgxNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNDEsNyArNDEsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bTsKIGNsYXNzIExheWVy
VGV4dHVyZVVwZGF0ZXI7Ci1jbGFzcyBSZWdpb247CiAKIGNsYXNzIENvbnRlbnRMYXllckRlbGVn
YXRlIHsKIHB1YmxpYzoKQEAgLTU5LDggKzU4LDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJE
ZWxlZ2F0ZSgpIHsgbV9kZWxlZ2F0ZSA9IDA7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0Nv
bnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29u
c3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJh
Y2tlciopOworICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCA2MTFhYjJhNmE2NTgwNTM5
NTZlOGI4ZWQzMjgwZGZiMWIwMGRiMDU5Li4zOTM5MTU4YTg1YjU3M2ZiMmQ0YjU3ZmUxYTVlZjZm
MmZiZjBmZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE1OCw3ICsx
NTgsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRl
bnRzKQogICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCi12b2lkIEltYWdlTGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNl
KQordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IEND
T2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogewogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVy
SWZOZWVkZWQoKTsKICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKQEAgLTE2OCw3ICsxNjgsNyBA
QCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVn
aW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQogICAgICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNl
OwogICAgIH0KIAotICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCksIG9jY2x1
ZGVkU2NyZWVuU3BhY2UpOworICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCks
IG9jY2x1c2lvbik7CiB9CiAKIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJl
VXBkYXRlcklmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKaW5kZXggZGVhZmQz
N2U3MzNlYTM4YmM0ZGQ1YmJkZjEyMzdlNTg0ZDRiMDk5ZS4uYjAxZWYyOWRhMTNkMGUxMTE1ZTg0
MWFjMjBmNGU2MGU4YWMxNjQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKQEAgLTQx
LDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZTsKIGNsYXNzIElt
YWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjsKLWNsYXNzIFJlZ2lvbjsKIAogLy8gQSBMYXllciB0aGF0
IGNvbnRhaW5zIG9ubHkgYW4gSW1hZ2UgZWxlbWVudC4KIGNsYXNzIEltYWdlTGF5ZXJDaHJvbWl1
bSA6IHB1YmxpYyBUaWxlZExheWVyQ2hyb21pdW0gewpAQCAtNTAsNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRp
cnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogICAgIHZp
cnR1YWwgYm9vbCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29u
dGVudHMoSW1hZ2UqIGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA4NmZkZjk1MTU2ODg5
Mzc4YzNkNjJkMTkxOWE3OTVhMmNlMTI1MTZhLi5lNTJlYzQ4YzdkNTdjNmNhZmE0OGZhYWU3ZDBj
MzY1YTVlNGY5MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiU2hhZGVyQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorI2luY2x1ZGUgImNjL0NDT2Nj
bHVzaW9uVHJhY2tlci5oIgogCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CkBAIC0xNjEsOCArMTYyLDggQEAgcHVibGljOgogCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNs
YXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEcmF3YWJsZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25z
dCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVl
blNwYWNlICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29u
c3QgQ0NPY2NsdXNpb25UcmFja2VyKiAvKiBvY2NsdXNpb24gKi8pIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiAv
KiBvY2NsdXNpb24gKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2
ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggMDI1OWEyM2QzODZkZDNkMWFjOGE5OGJjMjg0ZTIzODJjNTRjNjNlMS4uODUzZDY3NTRjYWE1
OWI3YmUyODEzOTMyODllZDdkMDBjZDM0OTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwCkBAIC0zOTcsMjMgKzM5NywxMCBAQCBib29sIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dGls
ZU5lZWRzQnVmZmVyZWRVcGRhdGUoVXBkYXRhYmxlVGlsZSogdGlsZSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotLy8gRklYTUU6IFRoaXMgZ2V0cyByb2xsZWQgaW50byBDQ09jY2x1c2lvblRyYWNr
ZXIgd2hlbiB3ZSBzdG9wIHBhc3NpbmcgYXJvdW5kIFJlZ2lvbiBvYmplY3RzLgotc3RhdGljIGlu
bGluZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9MYXllclRyYW5zZm9ybShjb25zdCBJ
bnRTaXplJiBib3VuZHNJbkxheWVyU3BhY2UsIGNvbnN0IEludFNpemUmIGJvdW5kc0luQ29udGVu
dFNwYWNlKQotewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKLSAgICAvLyBT
Y2FsZSBmcm9tIGNvbnRlbnQgc3BhY2UgdG8gbGF5ZXIgc3BhY2UKLSAgICB0cmFuc2Zvcm0uc2Nh
bGVOb25Vbmlmb3JtKGJvdW5kc0luTGF5ZXJTcGFjZS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZG91
YmxlPihib3VuZHNJbkNvbnRlbnRTcGFjZS53aWR0aCgpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvdW5kc0luTGF5ZXJTcGFjZS5oZWlnaHQoKSAvIHN0YXRpY19jYXN0PGRvdWJs
ZT4oYm91bmRzSW5Db250ZW50U3BhY2UuaGVpZ2h0KCkpKTsKLSAgICByZXR1cm4gdHJhbnNmb3Jt
OwotfQotCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9v
bCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBjb25zdCBS
ZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0
LCBpbnQgYm90dG9tLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKIHsKICAg
ICBjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCk7CiAKLSAgICAvLyBUaWxlcyBhcmUgaW4g
dGhlIGxheWVyJ3MgY29udGVudCBzcGFjZSwgdGhlIG9jY2x1ZGVkIHJlZ2lvbiBpcyBpbiBzY3Jl
ZW4gc3BhY2UuCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2Ug
PSBzY3JlZW5TcGFjZVRyYW5zZm9ybSgpICogY29udGVudFRvTGF5ZXJUcmFuc2Zvcm0oYm91bmRz
KCksIGNvbnRlbnRCb3VuZHMoKSk7Ci0KICAgICAvLyBDcmVhdGUgdGlsZXMgYXMgbmVlZGVkLCBl
eHBhbmRpbmcgYSBkaXJ0eSByZWN0IHRvIGNvbnRhaW4gYWxsCiAgICAgLy8gdGhlIGRpcnR5IHJl
Z2lvbnMgY3VycmVudGx5IGJlaW5nIGRyYXduLiBBbGwgZGlydHkgdGlsZXMgdGhhdCBhcmUgdG8g
YmUgcGFpbnRlZAogICAgIC8vIGdldCB0aGVpciBtX3VwZGF0ZVJlY3Qgc2V0IHRvIG1fZGlydHlS
ZWN0IGFuZCBtX2RpcnR5UmVjdCBjbGVhcmVkLiBUaGlzIHdheSBpZgpAQCAtNDI4LDkgKzQxNSw5
IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlk
bGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIC8vIFdoZW4gbm90IGlkbGUg
cGFpbnRpbmcsIGlmIHRoZSB2aXNpYmxlIHJlZ2lvbiBvZiB0aGUgdGlsZSBpcyBvY2NsdWRlZCwg
ZG9uJ3QgcmVzZXJ2ZSBhIHRleHR1cmUgb3IgbWFyayBpdCBmb3IgdXBkYXRlLgogICAgICAgICAg
ICAgLy8gSWYgYW55IHBhcnQgb2YgdGhlIHRpbGUgaXMgdmlzaWJsZSwgdGhlbiB3ZSBuZWVkIHRv
IHBhaW50IGl0IHNvIHRoZSB0aWxlIGlzIHB1c2hlZCB0byB0aGUgaW1wbCB0aHJlYWQuCiAgICAg
ICAgICAgICAvLyBUaGlzIHdpbGwgYWxzbyBhdm9pZCBwYWludGluZyB0aGUgdGlsZSBpbiB0aGUg
bmV4dCBsb29wLCBiZWxvdy4KLSAgICAgICAgICAgIGlmICghaWRsZSkgeworICAgICAgICAgICAg
aWYgKCFpZGxlICYmIG9jY2x1c2lvbikgewogICAgICAgICAgICAgICAgIEludFJlY3QgdmlzaWJs
ZVRpbGVSZWN0ID0gaW50ZXJzZWN0aW9uKG1fdGlsZXItPnRpbGVCb3VuZHMoaSwgaiksIHZpc2li
bGVMYXllclJlY3QoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9jY2x1ZGVkU2NyZWVuU3BhY2Uu
Y29udGFpbnMoY29udGVudFRvU2NyZWVuU3BhY2UubWFwUmVjdCh2aXNpYmxlVGlsZVJlY3QpKSkK
KyAgICAgICAgICAgICAgICBpZiAob2NjbHVzaW9uLT5vY2NsdWRlZCh0aGlzLCB2aXNpYmxlVGls
ZVJlY3QpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIApA
QCAtNTcyLDcgKzU1OSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpyZXNldFVwZGF0ZVN0
YXRlKCkKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVu
U3BhY2UpCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7
CiAgICAgbV9za2lwc0RyYXcgPSBmYWxzZTsKICAgICBtX3NraXBzSWRsZVBhaW50ID0gZmFsc2U7
CkBAIC01ODksMTAgKzU3NiwxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgUmVnaW9uJgogICAgIGludCBs
ZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5k
aWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAKLSAgICBwcmVwYXJl
VG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCBvY2NsdWRlZFNj
cmVlblNwYWNlKTsKKyAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9wLCBy
aWdodCwgYm90dG9tLCBvY2NsdXNpb24pOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZ2lv
biYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJl
VG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgLy8gQWJvcnQgaWYgd2UgaGF2ZSBhbHJlYWR5IHBy
ZXBhcmVkIGEgcGFpbnQgb3IgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgaWYgKG1fc2tpcHNJZGxl
UGFpbnQgfHwgIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKQEAgLTYxNCw3ICs2MDEsNyBAQCB2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBs
YXllclJlY3QsIGNvbnN0IFJlZwogICAgIG1fdGlsZXItPmxheWVyUmVjdFRvVGlsZUluZGljZXMo
bGF5ZXJSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogCiAgICAgLy8gUHJlcGFpbnQg
YW55dGhpbmcgdGhhdCB3YXMgb2NjbHVkZWQgYnV0IGluc2lkZSB0aGUgbGF5ZXIncyB2aXNpYmxl
IHJlZ2lvbi4KLSAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0
LCBib3R0b20sIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVz
KHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgMCk7CiAgICAgaWYgKCFtX3BhaW50UmVj
dC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgcmV0dXJuOwogCkBAIC02
MjQsMjUgKzYxMSwyNSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRl
SWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZwogICAgIHdoaWxlICghbV9z
a2lwc0lkbGVQYWludCAmJiAobGVmdCA+IHByZXBhaW50TGVmdCB8fCB0b3AgPiBwcmVwYWludFRv
cCB8fCByaWdodCA8IHByZXBhaW50UmlnaHQgfHwgYm90dG9tIDwgcHJlcGFpbnRCb3R0b20pKSB7
CiAgICAgICAgIGlmIChib3R0b20gPCBwcmVwYWludEJvdHRvbSkgewogICAgICAgICAgICAgKyti
b3R0b207Ci0gICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCBib3R0
b20sIHJpZ2h0LCBib3R0b20sIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgICAgICAgICAgcHJl
cGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdodCwgYm90dG9tLCAwKTsK
ICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFp
bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRvcCA+
IHByZXBhaW50VG9wKSB7CiAgICAgICAgICAgICAtLXRvcDsKLSAgICAgICAgICAgIHByZXBhcmVU
b1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIHRvcCwgb2NjbHVkZWRTY3JlZW5T
cGFjZSk7CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3As
IHJpZ2h0LCB0b3AsIDApOwogICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkg
fHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBpZiAobGVmdCA+IHByZXBhaW50TGVmdCkgewogICAgICAgICAgICAgLS1sZWZ0Owot
ICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBi
b3R0b20sIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRl
VGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20sIDApOwogICAgICAgICAgICAgaWYg
KCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAocmlnaHQgPCBwcmVwYWludFJpZ2h0
KSB7CiAgICAgICAgICAgICArK3JpZ2h0OwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGls
ZXModHJ1ZSwgcmlnaHQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgb2NjbHVkZWRTY3JlZW5TcGFjZSk7
CisgICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCByaWdodCwgdG9wLCByaWdo
dCwgYm90dG9tLCAwKTsKICAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8
IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggNmZmOTAxZGZkYmZmNzYyZjA0NjM2M2IzNGE0
ODQ1MmMwNGQxMjEwMC4uNjQzZjY5NjQwMDI5NDE4YTQ3N2M2ZjIxNDMzZGRhNzgzNmNkNDhiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTMzLDkgKzMzLDcgQEAKICNpbmNsdWRl
ICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQogY2xhc3Mg
TGF5ZXJUZXh0dXJlVXBkYXRlcjsKLWNsYXNzIFJlZ2lvbjsKIGNsYXNzIFVwZGF0YWJsZVRpbGU7
CiAKIGNsYXNzIFRpbGVkTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKQEAg
LTkwLDEwICs4OCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCByZXNldFVwZGF0ZVN0YXRlKCk7
CiAKICAgICAvLyBQcmVwYXJlIGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGlu
dGVyc2VjdCB3aXRoIGxheWVyUmVjdC4KLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRUYXJnZXRTcGFjZSk7Cisg
ICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBD
Q09jY2x1c2lvblRyYWNrZXIqKTsKIAogICAgIC8vIFNhbWUgYXMgYWJvdmUsIGJ1dCB0aGlzIHdp
bGwgdHJ5IHRvIHBhaW50IGFkZGl0aW9uYWwgc3Vycm91bmRpbmcgY29udGVudCBpZiBpZGxlLgot
ICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNv
bnN0IFJlZ2lvbiYgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRh
dGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
Kik7CiAKICAgICAvLyBBZnRlciBwcmVwYXJpbmcgYW4gdXBkYXRlLCByZXR1cm5zIHRydWUgaWYg
bW9yZSBwcmUtcGFpbnRpbmcgaXMgbmVlZGVkLgogICAgIGJvb2wgbmVlZHNJZGxlUGFpbnQoY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKQEAgLTExMyw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgdGlsZU9ubHlOZWVkc1BhcnRpYWxVcGRhdGUoVXBkYXRhYmxlVGlsZSopOwogICAgIGJv
b2wgdGlsZU5lZWRzQnVmZmVyZWRVcGRhdGUoVXBkYXRhYmxlVGlsZSopOwogCi0gICAgdm9pZCBw
cmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmln
aHQsIGludCBib3R0b20sIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRUYXJnZXRTcGFjZSk7CisgICAg
dm9pZCBwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBp
bnQgcmlnaHQsIGludCBib3R0b20sIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogICAgIElu
dFJlY3QgaWRsZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KTsKIAog
ICAgIFVwZGF0YWJsZVRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmNwcAppbmRleCBlM2UxOWUyNThmYWE2MDRiYzdmNWJhYjI5MjcyMjM2YzJj
MTY3ZDE2Li44MGQyM2QxYThlMTkwZjI2ZGViYjZhZmViNDQ1YzkwN2YzYWYzZDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgYm9vbCBXZWJHTExh
eWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIExheWVyQ2hyb21p
dW06OmRyYXdzQ29udGVudCgpICYmICFtX2NvbnRleHRMb3N0OwogfQogCi12b2lkIFdlYkdMTGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJikKK3ZvaWQgV2Vi
R0xMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRy
YWNrZXIqIC8qIG9jY2x1c2lvbiAqLykKIHsKICAgICBpZiAoIWRyYXdzQ29udGVudCgpIHx8ICFt
X25lZWRzRGlzcGxheSB8fCAhbV90ZXh0dXJlVXBkYXRlZCkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCBhZjEzOGZhMWUwZjNjOTg3NDFkYWUwZTlhYjRm
YzUwNzM1YTdkMDc5Li42NTA5ZmIzNThkOTVlOWIwZGYxNzFhYzBiMWNkZmM1ZDUzNTQxNjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKSB7IG1fdGV4dHVyZUlkID0g
dGV4dHVyZUlkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYpOworICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNr
ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFBy
b3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3Bs
YXlSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
aW5kZXggMzRiY2UxMTgxMDBmYTVmYTM4ZDkzNTI4MjBkNTcwOGU5ZmVkZGNhMi4uMDY1OTAyY2U1
YTMxMzIzZGZmZTkxYzhlNWFlY2YwMzFjNzU5NTBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCkBAIC00OTksMTQgKzQ5OSwxNCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cmVz
ZXJ2ZVRleHR1cmVzKCkKIH0KIAogLy8gc3RhdGljCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFp
bnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlwZSBwYWludFR5
cGUsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0OjpwYWludENvbnRlbnRzSWZEaXJ0eShMYXllckNocm9taXVtKiBsYXllciwgUGFpbnRUeXBl
IHBhaW50VHlwZSwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAg
QVNTRVJUKGxheWVyKTsKICAgICBBU1NFUlQoUGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSB8fCBQ
YWludElkbGUgPT0gcGFpbnRUeXBlKTsKICAgICBpZiAoUGFpbnRWaXNpYmxlID09IHBhaW50VHlw
ZSkKLSAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3Bh
Y2UpOworICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVzaW9uKTsKICAg
ICBlbHNlCi0gICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVkZWRT
Y3JlZW5TcGFjZSk7CisgICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50c0lmRGlydHkob2Nj
bHVzaW9uKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FG
b3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgUGFpbnRU
eXBlIHBhaW50VHlwZSkKQEAgLTUxNiwyMCArNTE2LDE5IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5k
ZXJTCiAgICAgLy8gbWFzayBhbmQgcmVwbGljYSBzaG91bGQgYmUgcGFpbnRlZC4KIAogICAgIC8v
IEZJWE1FOiBJZiB0aGUgc3VyZmFjZSBoYXMgYSByZXBsaWNhLCBpdCBzaG91bGQgYmUgcGFpbnRl
ZCB3aXRoIG9jY2x1c2lvbiB0aGF0IGV4Y2x1ZGVzIHRoZSBjdXJyZW50IHRhcmdldCBzdXJmYWNl
IHN1YnRyZWUuCi0gICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAgICAgaWYgKHJlbmRlclN1cmZh
Y2VMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNr
TGF5ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlbmRlclN1
cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRp
cnR5KHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCksIHBhaW50VHlwZSwgbm9PY2NsdXNp
b24pOworICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5ZXItPm1h
c2tMYXllcigpLCBwYWludFR5cGUsIDApOwogICAgIH0KIAogICAgIExheWVyQ2hyb21pdW0qIHJl
cGxpY2FMYXllciA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCk7CiAgICAgaWYg
KHJlcGxpY2FMYXllcikgewotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5
ZXIsIHBhaW50VHlwZSwgbm9PY2NsdXNpb24pOworICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0
eShyZXBsaWNhTGF5ZXIsIHBhaW50VHlwZSwgMCk7CiAKICAgICAgICAgaWYgKHJlcGxpY2FMYXll
ci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkt
PnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZXBsaWNhTGF5ZXItPm1h
c2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAgICAgIHBhaW50Q29udGVudHNJ
ZkRpcnR5KHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHBhaW50VHlwZSwgbm9PY2NsdXNpb24p
OworICAgICAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVwbGljYUxheWVyLT5tYXNrTGF5
ZXIoKSwgcGFpbnRUeXBlLCAwKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTU1Myw3ICs1NTIs
NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVy
TGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAogICAgICAgICAgICAgQVNTRVJUKCFpdC0+Ym91
bmRzKCkuaXNFbXB0eSgpKTsKIAogICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UoaXQtPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgICAg
ICBwYWludENvbnRlbnRzSWZEaXJ0eSgqaXQsIHBhaW50VHlwZSwgb2NjbHVzaW9uVHJhY2tlci5j
dXJyZW50T2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpKTsKKyAgICAgICAgICAgIHBhaW50Q29udGVu
dHNJZkRpcnR5KCppdCwgcGFpbnRUeXBlLCAmb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgICAgICAg
ICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKCppdCk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5sZWF2ZVRvVGFyZ2V0UmVuZGVy
U3VyZmFjZShpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggZDUyNjIyNjJkNGYyY2NhNTQ0OTZjZmJi
YTdhNTUwZGI5MzJiYTRhZS4uODlmMWJlMzA3ZWRmYzkxNmQ2MDllMDg1YTM1NTIyNjc3NjIzZWM4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKTsKIAogICAgIGVudW0gUGFp
bnRUeXBlIHsgUGFpbnRWaXNpYmxlLCBQYWludElkbGUgfTsKLSAgICBzdGF0aWMgdm9pZCBwYWlu
dENvbnRlbnRzSWZEaXJ0eShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlLCBjb25zdCBSZWdpb24m
IG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgIHN0YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRp
cnR5KExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciop
OwogICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYsIFBhaW50VHlw
ZSk7CiAgICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNo
cm9taXVtKiwgUGFpbnRUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggZmU3ODhmYmFlZWU3N2U3OTNhMDAz
OGVjN2FmMjkyNjU1ZmZjNzQ2Yi4uNzA2YjRkMDAyNDA2N2Y5YzJkNzg5NGU4ODA0ZDIyNWUxYzQ5
OGIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IkxheWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUZXh0dXJl
TWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJXZWJLaXQu
aCIKQEAgLTEyNzMsMTUgKzEyNzIsMTUgQEAgcHVibGljOgogICAgIGludCB1cGRhdGVDb3VudCgp
IHsgcmV0dXJuIG1fdXBkYXRlQ291bnQ7IH0KICAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7
IG1fdXBkYXRlQ291bnQgPSAwOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lm
RGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQorICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lv
bikKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZE
aXJ0eShvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06
OnBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1c2lvbik7CiAgICAgICAgIG1fcGFpbnRDb250ZW50
c0NvdW50Kys7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZE
aXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkKQorICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRD
b250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiAgICAg
ewotICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5
KG9jY2x1ZGVkKTsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRl
bnRzSWZEaXJ0eShvY2NsdXNpb24pOwogICAgICAgICBtX2lkbGVQYWludENvbnRlbnRzQ291bnQr
KzsKICAgICB9CiAKQEAgLTE2MzMsOSArMTYzMiw5IEBAIGNsYXNzIFRlc3RMYXllckNocm9taXVt
IDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFRlc3RMYXllckNocm9taXVtPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGVzdExh
eWVyQ2hyb21pdW0oKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0
eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCisgICAgdmlydHVhbCB2b2lkIHBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQog
ICAgIHsKLSAgICAgICAgbV9vY2NsdWRlZFNjcmVlblNwYWNlID0gb2NjbHVkZWRTY3JlZW5TcGFj
ZTsKKyAgICAgICAgbV9vY2NsdWRlZFNjcmVlblNwYWNlID0gb2NjbHVzaW9uID8gb2NjbHVzaW9u
LT5jdXJyZW50T2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpIDogUmVnaW9uKCk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9t
aXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJD
aHJvbWl1bVRlc3QuY3BwCmluZGV4IDZhM2RiMDJhN2I1YmRhYWZjYWVkYzFhZDZiZTgzYzIwYzc0
NzBjYTUuLjAzYWRiM2M4ODhhYmZmODQwZmExZTYwOTk3ZjZmMDA2NTE0ZmRhZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hy
b21pdW1UZXN0LmNwcApAQCAtMTU2LDggKzE1Niw3IEBAIHByb3RlY3RlZDoKIAogICAgICAgICBj
YW52YXMtPnNldE5lZWRzRGlzcGxheSgpOwogICAgICAgICBFWFBFQ1RfVFJVRShjYW52YXMtPm5l
ZWRzRGlzcGxheSgpKTsKLSAgICAgICAgUmVnaW9uIG9jY2x1ZGVkU2NyZWVuU3BhY2U7Ci0gICAg
ICAgIGNhbnZhcy0+cGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVkZWRTY3JlZW5TcGFjZSk7Cisg
ICAgICAgIGNhbnZhcy0+cGFpbnRDb250ZW50c0lmRGlydHkoMCk7CiAgICAgICAgIEVYUEVDVF9G
QUxTRShjYW52YXMtPm5lZWRzRGlzcGxheSgpKTsKICAgICAgICAgewogICAgICAgICAgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRl
eCAyNTIzMjMwZTAwNWNiOTFlMTU0ZDkxOWNjN2U5Yzk2NWYwZjk0MTAzLi4wN2NlYWFlODhkNzU3
NzdiNjM2M2M3YTc0YzliYTBjODkzNGI4MGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTQ4LDYgKzQ4
LDI1IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSB7CiAKK2NsYXNzIFRlc3RD
Q09jY2x1c2lvblRyYWNrZXIgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyIHsKK3B1YmxpYzoK
KyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyKCkKKyAgICAgICAgOiBDQ09jY2x1c2lvblRyYWNr
ZXIoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSkKKyAgICAgICAgLCBtX3NjaXNzb3JSZWN0SW5T
Y3JlZW4oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSkKKyAgICB7CisgICAgICAgIC8vIFByZXRl
bmQgd2UgaGF2ZSB2aXNpdGVkIGEgcmVuZGVyIHN1cmZhY2UuCisgICAgICAgIG1fc3RhY2suYXBw
ZW5kKFN0YWNrT2JqZWN0KCkpOworICAgIH0KKworICAgIHZvaWQgc2V0T2NjbHVzaW9uKGNvbnN0
IFJlZ2lvbiYgb2NjbHVzaW9uKSB7IG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuID0g
b2NjbHVzaW9uOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIEludFJlY3QgbGF5ZXJTY2lz
c29yUmVjdEluVGFyZ2V0U3VyZmFjZShjb25zdCBMYXllckNocm9taXVtKiBsYXllcikgY29uc3Qg
eyByZXR1cm4gbV9zY2lzc29yUmVjdEluU2NyZWVuOyB9CisKK3ByaXZhdGU6CisgICAgSW50UmVj
dCBtX3NjaXNzb3JSZWN0SW5TY3JlZW47Cit9OworCiBjbGFzcyBGYWtlVGV4dHVyZUFsbG9jYXRv
ciA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVuc2ln
bmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7IHJldHVybiAwOyB9
CkBAIC0xNTAsMTQgKzE2OSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6aW52YWxpZGF0ZVJlY3QocmVjdCk7CiAgICAgfQogCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZCkKKyAgICB2b2lk
IHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBDQ09jY2x1c2lvblRy
YWNrZXIqIG9jY2x1c2lvbikKICAgICB7Ci0gICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlKHJlY3QsIG9jY2x1ZGVkKTsKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGUocmVjdCwgb2NjbHVzaW9uKTsKICAgICB9CiAKLSAgICB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmVnaW9uJiBvY2Ns
dWRlZCkKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiAgICAgewotICAgICAgICBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUocmVjdCwgb2NjbHVkZWQpOworICAg
ICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUocmVjdCwgb2NjbHVz
aW9uKTsKICAgICB9CiAKICAgICBib29sIG5lZWRzSWRsZVBhaW50KGNvbnN0IEludFJlY3QmIHJl
Y3QpCkBAIC0xODIsOSArMjAxLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBUZXh0dXJlTWFu
YWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVNYW5hZ2VyOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBv
Y2NsdWRlZFNjcmVlblNwYWNlKQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0
eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKICAgICB7Ci0gICAgICAgIHBy
ZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCksIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwor
ICAgICAgICBwcmVwYXJlVG9VcGRhdGUodmlzaWJsZUxheWVyUmVjdCgpLCBvY2NsdXNpb24pOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTI0MCw3ICsyNTksNiBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9t
aXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVN
YW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3
IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7Ci0gICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAg
ICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVV
cGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwpAQCAtMjQ4LDcgKzI2Niw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgLy8gVGhlIHRp
bGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0
d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7
CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7
CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMjYxLDcgKzI3
OSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAg
Ly8gSW52YWxpZGF0ZXMgYm90aCB0aWxlcy4uLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGVuIG9ubHkgdXBkYXRl
IG9uZSBvZiB0aGVtLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwu
Z2V0KCkpOwogCkBAIC0yNzYsMTUgKzI5NCwxNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hy
b21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVy
ZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihu
ZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKLSAgICBSZWdpb24gbm9PY2NsdXNpb247Cisg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIAogICAgIEZha2VUZXh0dXJlQWxs
b2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0
ZXh0dXJlQWxsb2NhdG9yKTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28g
dGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5z
ZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3Jt
KFRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgp
IC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsKKyAgICBsYXllci0+c2V0
VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CisgICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1ZGVkKTsK
ICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBs
YXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0yOTcsOCArMzE3
LDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2NjbHVkZWREaXJ0eVRpbGVz
KQogICAgIC8vIEludmFsaWRhdGVzIHBhcnQgb2YgdGhlIHRvcCB0aWxlLi4uCiAgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gLi4uLmJ1dCB0
aGUgYXJlYSBpcyBvY2NsdWRlZC4KLSAgICBSZWdpb24gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwg
NTAsIDUwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwg
MTAwKSwgb2NjbHVzaW9uKTsKKyAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgwLCAw
LCA1MCwgNTApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAw
LCAxMDApLCAmb2NjbHVkZWQpOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQo
KSk7CiAKQEAgLTMyMSwxMyArMzQxLDEyIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaElkbGVQYWludFRpbGVzKQogICAgIEludFNpemUgY29udGVudEJvdW5kcyg1MDAsIDUwMCk7
CiAgICAgSW50UmVjdCBjb250ZW50UmVjdChJbnRQb2ludDo6emVybygpLCBjb250ZW50Qm91bmRz
KTsKICAgICBJbnRSZWN0IHZpc2libGVSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCk7Ci0gICAgUmVn
aW9uIG5vT2NjbHVzaW9uOwogCiAgICAgLy8gVGhpcyBpbnZhbGlkYXRlcyAyNSB0aWxlcyBhbmQg
dGhlbiBwYWludHMgb25lIHZpc2libGUgdGlsZS4KICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRl
bnRCb3VuZHMpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsK
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKHZpc2libGVSZWN0LCAwKTsKIAogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUt
cGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgogICAgIEVYUEVDVF9UUlVFKGxh
eWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtMzQyLDkgKzM2MSw5IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogCiAgICAgLy8g
Rm9yIHRoZSBuZXh0IGZvdXIgdXBkYXRlcywgd2Ugc2hvdWxkIGRldGVjdCB3ZSBzdGlsbCBuZWVk
IGlkbGUgcGFpbnRpbmcuCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKLSAgICAg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOworICAg
ICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCAwKTsKICAgICAgICAgRVhQ
RUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7Ci0gICAgICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0LCBub09jY2x1c2lvbik7CisgICAg
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0LCAwKTsKICAgICAgICAg
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgICAgIHRleHR1cmVN
YW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwpAQCAtMzc0LDcgKzM5Myw2IEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTWFya2VkRGlydHlEdXJpbmdQYWludCkK
IAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKLSAgICBSZWdpb24gbm9PY2Ns
dXNpb247CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxp
ZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICAvLyBIb3dldmVyLCBkdXJpbmcg
dGhlIHBhaW50LCB3ZSBpbnZhbGlkYXRlIG9uZSBvZiB0aGUgdGlsZXMuIFRoaXMgc2hvdWxkCkBA
IC0zODIsNyArNDAwLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNN
YXJrZWREaXJ0eUR1cmluZ1BhaW50KQogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAs
IDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFs
aWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxheWVyLmdldCgpKTsKLSAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7Cisg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAg
ICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5
ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtNDAyLDE4ICs0MjAs
MTcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERp
cnR5RHVyaW5nUGFpbnRPbk5leHRMYXllcikKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRl
eHR1cmVBbGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxs
b2NhdG9yKTsKLSAgICBSZWdpb24gbm9PY2NsdXNpb247CiAKICAgICBsYXllcjEtPnNldEJvdW5k
cyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIxLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIw
MCkpOwogICAgIGxheWVyMi0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OwogCi0gICAgbGF5ZXIxLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCks
IG5vT2NjbHVzaW9uKTsKKyAgICBsYXllcjEtPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSwgMCk7CiAKICAgICAvLyBJbnZhbGlkYXRlIGEgdGlsZSBvbiBsYXllcjEKICAg
ICBsYXllcjItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUo
SW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxheWVyMS5nZXQoKSk7Ci0gICAgbGF5ZXIyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBs
YXllcjItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAKICAg
ICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5
ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwpAQCAtNDM5LDcgKzQ1
Niw2IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWRE
aXJ0eUR1cmluZ1BhaW50T25QcmV2aW91c0xheWVyCiAKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRv
ciB0ZXh0dXJlQWxsb2NhdG9yOwogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVy
ZUFsbG9jYXRvcik7Ci0gICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAgICAgbGF5ZXIxLT5zZXRC
b3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyMS0+aW52YWxpZGF0ZVJlY3QoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwpAQCAtNDQ4LDkgKzQ2NCw5IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25QcmV2
aW91c0xheWVyCiAKICAgICAvLyBJbnZhbGlkYXRlIGEgdGlsZSBvbiBsYXllcjIKICAgICBsYXll
cjEtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVj
dCgwLCA1MCwgMTAwLCA1MCksIGxheWVyMi5nZXQoKSk7Ci0gICAgbGF5ZXIxLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllcjEt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAKLSAgICBsYXll
cjItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24p
OworICAgIGxheWVyMi0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAw
KTsKIAogICAgIGxheWVyMS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsK
ICAgICBsYXllcjItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CkBAIC00
NzEsNyArNDg3LDYgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRP
Zk1lbW9yeSkKICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoMzAwLCAzMDApOwogICAgIEludFJl
Y3QgY29udGVudFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgY29udGVudEJvdW5kcyk7CiAgICAgSW50
UmVjdCB2aXNpYmxlUmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApOwotICAgIFJlZ2lvbiBub09jY2x1
c2lvbjsKIAogICAgIC8vIFdlIGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSB0aGUgdmlzaWJs
ZSByZWN0LCBzbyB3ZSB3aWxsIHJ1biBvdXQgb2YgbWVtb3J5IGluIGZpcnN0IGlkbGUgcGFpbnQu
CiAgICAgaW50IG1lbW9yeUxpbWl0ID0gNCAqIDEwMCAqIDEwMDsgLy8gMiB0aWxlcywgNCBieXRl
cyBwZXIgcGl4ZWwuCkBAIC00ODgsNyArNTAzLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRC
b3VuZHMpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAg
ICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKHZpc2libGVSZWN0LCAwKTsKIAogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFp
bnRpbmcgZm9yIDN4MyB0aWxlcyBzdXJvdW5kaW5nIHZpc2libGUgdGlsZS4KICAgICBFWFBFQ1Rf
VFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKQEAgLTUwMCw4ICs1MTUs
OCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQog
ICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDEsIDEpKTsKIAogICAgIHRleHR1
cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUodmlzaWJsZVJlY3QsIG5vT2NjbHVzaW9uKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlSWRsZSh2aXNpYmxlUmVjdCwgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUodmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZp
c2libGVSZWN0LCAwKTsKIAogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90
aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgRVhQRUNUX0ZB
TFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtNTE2LDcgKzUzMSw2
IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQog
ICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBG
YWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5
ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7
Ci0gICAgUmVnaW9uIG5vT2NjbHVzaW9uOwogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4
dHVyZUFsbG9jYXRvcjsKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxv
Y2F0b3IpOwpAQCAtNTI0LDcgKzUzOCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
aW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwg
c28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVy
LT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTUzNywxOCArNTUxLDE4IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwogICAgIC8vIEludm9r
ZSBwcmVwYXJlVG9VcGRhdGUgYWdhaW4uIEFzIHRoZSBsYXllciBpcyB2YWxpZCBwcmVwYXJlVG9V
cGRhdGUgc2hvdWxkbid0IGJlIGludm9rZWQgb24KICAgICAvLyB0aGUgTGF5ZXJUZXh0dXJlVXBk
YXRlci4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
LCBub09jY2x1c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSwgMCk7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICAvLyBzZXRSZWN0VG9JbnZhbGlkYXRlIHRyaWdn
ZXJzIGludmFsaWRhdGVSZWN0KCkgYmVpbmcgaW52b2tlZCBmcm9tIHByZXBhcmVUb1VwZGF0ZS4K
ICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0
ZShJbnRSZWN0KDI1LCAyNSwgNTAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwogICAgIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG5vT2NjbHVzaW9uKTsKKyAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAg
ICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVD
b3VudCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVw
YXJlQ291bnQoKTsKICAgICAvLyBUaGUgbGF5ZXIgc2hvdWxkIHN0aWxsIGJlIGludmFsaWQgYXMg
cHJlcGFyZVRvVXBkYXRlIGludm9rZWQgaW52YWxpZGF0ZS4KLSAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBub09jY2x1c2lvbik7CisgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAgRVhQRUNU
X0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7
CiB9CiAKQEAgLTU1OSw3ICs1NzMsNiBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZl
cmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKIAogICAgIE93blB0cjxU
ZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVy
V2l0aFNjYWxlZEJvdW5kcz4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJXaXRo
U2NhbGVkQm91bmRzKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7Ci0gICAgUmVnaW9uIG5vT2NjbHVz
aW9uOwogCiAgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKICAgICBD
Q1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwpAQCAtNTc0LDIwICs1
ODcsMjAgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hl
bkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgLy8gT24gZmlyc3QgdXBkYXRlLCB0aGUgdXBk
YXRlUmVjdCBpbmNsdWRlcyBhbGwgdGlsZXMsIGV2ZW4gYmV5b25kIHRoZSBib3VuZGFyaWVzIG9m
IHRoZSBsYXllci4KICAgICAvLyBIb3dldmVyLCBpdCBzaG91bGQgc3RpbGwgYmUgaW4gbGF5ZXIg
c3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250
ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5v
T2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIDAp
OwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAg
IEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAzMDAsIDMwMCAqIDAuOCksIGxh
eWVyLT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gQWZ0ZXIgdGhlIHRpbGVzIGFyZSB1cGRhdGVk
IG9uY2UsIGFub3RoZXIgaW52YWxpZGF0ZSBvbmx5IG5lZWRzIHRvIHVwZGF0ZSB0aGUgYm91bmRz
IG9mIHRoZSBsYXllci4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7
Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7
CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAwKTsKICAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBFWFBFQ1RfRkxP
QVRfUkVDVF9FUShGbG9hdFJlY3QobGF5ZXJCb3VuZHMpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsK
IAogICAgIC8vIFBhcnRpYWwgcmUtcGFpbnQgc2hvdWxkIGFsc28gYmUgcmVwcmVzZW50ZWQgYnkg
dGhlIHVwZGF0ZVJlY3QgaW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAgIElu
dFJlY3QgcGFydGlhbERhbWFnZSgzMCwgMTAwLCAxMCwgMTApOwogICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChwYXJ0aWFsRGFtYWdlKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRl
bnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRl
bnRCb3VuZHMsIDApOwogICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVw
ZGF0ZXIpOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCg0NSwgODAsIDE1LCA4
KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiB9CkBAIC02MDEsNyArNjE0LDYgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNo
YW5nZXMpCiAKICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwogICAg
IENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7Ci0gICAgUmVnaW9u
IG5vT2NjbHVzaW9uOwogCiAgICAgLy8gQ3JlYXRlIGEgbGF5ZXIgd2l0aCBvbmUgdGlsZS4KICAg
ICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAxMDApKTsKQEAgLTYxMSw3ICs2MjMsNyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250
ZW50c1NjYWxlQ2hhbmdlcykKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwg
MCwgMTAwLCAxMDApLCBsYXllci0+bGFzdE5lZWRzRGlzcGxheVJlY3QoKSk7CiAKICAgICAvLyBQ
dXNoIHRoZSB0aWxlcyB0byB0aGUgaW1wbCBzaWRlIGFuZCBjaGVjayB0aGF0IHRoZXJlIGlzIGV4
YWN0bHkgb25lLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCksIG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0
KCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKQEAgLTYy
NSw3ICs2MzcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRh
dGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShG
bG9hdFJlY3QoMCwgMCwgMTAwLCAxMDApLCBsYXllci0+bGFzdE5lZWRzRGlzcGxheVJlY3QoKSk7
CiAKICAgICAvLyBUaGUgaW1wbCBzaWRlIHNob3VsZCBnZXQgMngyIHRpbGVzIG5vdy4KLSAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMjAwLCAyMDApLCBub09jY2x1c2lv
bik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSwg
MCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAg
ICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1Rf
VFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CkBAIC02MzYsNyArNjQ4LDcgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNT
Y2FsZUNoYW5nZXMpCiAgICAgLy8gSW52YWxpZGF0ZSB0aGUgZW50aXJlIGxheWVyIGFnYWluLCBi
dXQgZG8gbm90IHBhaW50LiBBbGwgdGlsZXMgc2hvdWxkIGJlIGdvbmUgbm93IGZyb20gdGhlCiAg
ICAgLy8gaW1wbCBzaWRlLgogICAgIGxheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMCwgMCksIG5vT2NjbHVzaW9uKTsKKyAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMSwgMCwgMCwgMSksIDApOwogICAgIGxh
eWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5w
dXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGxheWVy
SW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKQEAgLTcwMiwxMSArNzE0LDEwIEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcmVzaXplVG9TbWFsbGVyKQogewogICAgIE93blB0cjxUZXh0dXJl
TWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDYwKjEwMjQq
MTAyNCwgNjAqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJl
TWFuYWdlci5nZXQoKSkpOwotICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIGxheWVyLT5z
ZXRCb3VuZHMoSW50U2l6ZSg3MDAsIDcwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJ
bnRSZWN0KDAsIDAsIDcwMCwgNzAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDcwMCwgNzAwKSwgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOwogCiAgICAgbGF5ZXItPnNldEJvdW5k
cyhJbnRTaXplKDIwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3Qo
MCwgMCwgMjAwLCAyMDApKTsKQEAgLTc4NywxMyArNzk4LDEyIEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aG91dE9jY2x1c2lvbikKIHsKICAgICBPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0
KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXll
ckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRl
eHR1cmVNYW5hZ2VyLmdldCgpKSk7Ci0gICAgUmVnaW9uIG9jY2x1ZGVkOwogCiAgICAgLy8gVGhl
IHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50
cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAK
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG9jY2x1ZGVk
KTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAw
KTsKICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnBy
ZXBhcmVSZWN0Q291bnQoKSk7CiB9CiAKQEAgLTgwMSwzMCArODExLDMxIEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikKIHsKICAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRM
YXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVt
KHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7Ci0gICAgUmVnaW9uIG9jY2x1ZGVkOworICAgIFRlc3RD
Q09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEw
MHgxMDAuCiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAgICBs
YXllci0+c2V0RHJhd1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBs
YXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8g
Mi4wKSk7CiAKLSAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKTsKKyAg
ICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApKTsKICAg
ICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5i
b3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSwgb2NjbHVkZWQpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2
MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOwogCi0gICAg
b2NjbHVkZWQgPSBJbnRSZWN0KDI1MCwgMjAwLCAzMDAsIDEwMCk7CisgICAgb2NjbHVkZWQuc2V0
T2NjbHVzaW9uKEludFJlY3QoMjUwLCAyMDAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPmludmFs
aWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBF
WFBFQ1RfRVEoMzYtMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVS
ZWN0Q291bnQoKSk7CiAKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xl
YXJQcmVwYXJlUmVjdENvdW50KCk7CiAKLSAgICBvY2NsdWRlZCA9IEludFJlY3QoMjUwLCAyNTAs
IDMwMCwgMTAwKTsKKyAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyNTAsIDI1MCwg
MzAwLCAxMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAs
IDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCksIG9jY2x1ZGVkKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwg
NjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNiwgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiB9CiAKQEAgLTgzMiw1OCAr
ODQzLDYwIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9j
Y2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogewogICAgIE93blB0cjxUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+
IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKLSAgICBSZWdpb24gb2NjbHVkZWQ7CisgICAgVGVzdENDT2NjbHVzaW9uVHJh
Y2tlciBvY2NsdWRlZDsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KIAogICAg
IGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworICAgIGxheWVyLT5zZXREcmF3
VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5ib3VuZHMo
KS53aWR0aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsKIAogICAg
IC8vIFRoZSBwYXJ0aWFsbHkgb2NjbHVkZWQgdGlsZXMgKGJ5IHRoZSAxNTAgb2NjbHVzaW9uIGhl
aWdodCkgYXJlIHZpc2libGUgYmV5b25kIHRoZSBvY2NsdXNpb24sIHNvIG5vdCBjdWxsZWQuCi0g
ICAgb2NjbHVkZWQgPSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCk7CisgICAgb2NjbHVkZWQu
c2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTUwKSk7CiAgICAgbGF5ZXItPnNl
dFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDM2MCkpOwogICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOwotICAgIEVYUEVD
VF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RD
b3VudCgpKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2
MDApLCAmb2NjbHVkZWQpOworICAgIEVYUEVDVF9FUSgyNC0zLCBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKIAogICAgIC8vIE5v
dyB0aGUgdmlzaWJsZSByZWdpb24gc3RvcHMgYXQgdGhlIGVkZ2Ugb2YgdGhlIG9jY2x1c2lvbiBz
byB0aGUgcGFydGx5IHZpc2libGUgdGlsZXMgYmVjb21lIGZ1bGx5IG9jY2x1ZGVkLgotICAgIG9j
Y2x1ZGVkID0gSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxNTApOworICAgIG9jY2x1ZGVkLnNldE9j
Y2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCkpOwogICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNTApKTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksIG9jY2x1ZGVkKTsKLSAgICBFWFBFQ1RfRVEo
MzYtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQo
KSk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwg
Jm9jY2x1ZGVkKTsKKyAgICBFWFBFQ1RfRVEoMjQtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CiAKICAgICAvLyBOb3cgdGhl
IHZpc2libGUgcmVnaW9uIGlzIGV2ZW4gc21hbGxlciB0aGFuIHRoZSBvY2NsdXNpb24sIGl0IHNo
b3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdC4KLSAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAy
MDAsIDMwMCwgMTUwKTsKKyAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIw
MCwgMzAwLCAxNTApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAs
IDAsIDYwMCwgMzQwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwg
NjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAw
LCA2MDApLCBvY2NsdWRlZCk7Ci0gICAgRVhQRUNUX0VRKDM2LTYsIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOworICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgRVhQRUNU
X0VRKDI0LTYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENv
dW50KCkpOwogfQogCiBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRl
ZFdpdGhvdXRJbnZhbGlkYXRpb24pCiB7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCox
MDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBh
ZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkp
OwotICAgIFJlZ2lvbiBvY2NsdWRlZDsKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1
ZGVkOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgogCiAgICAgbGF5ZXItPnNl
dEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0o
VHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkg
LyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogCi0gICAgb2NjbHVkZWQg
PSBJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCk7CisgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9u
KEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXll
clJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVkZWQpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VR
KDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50
KCkpOwogCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFy
ZVJlY3RDb3VudCgpOwogCiAgICAgLy8gUmVwYWludCB3aXRob3V0IG1hcmtpbmcgaXQgZGlydHku
Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2Nj
bHVkZWQpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogfQogCkBAIC04OTEsNyArOTA0LDcgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5k
VHJhbnNmb3JtcykKIHsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
ID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQp
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7Ci0gICAgUmVn
aW9uIG9jY2x1ZGVkOworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAKICAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKQEAgLTkwMSwxMSArOTE0LDEyIEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFRy
YW5zZm9ybXMpCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVuVHJhbnNmb3JtOwogICAg
IHNjcmVlblRyYW5zZm9ybS5zY2FsZSgwLjUpOwogICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRy
YW5zZm9ybShzY3JlZW5UcmFuc2Zvcm0pOworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKHNj
cmVlblRyYW5zZm9ybSAqIFRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5i
b3VuZHMoKS53aWR0aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsK
IAotICAgIG9jY2x1ZGVkID0gSW50UmVjdCgxMDAsIDEwMCwgMTUwLCA1MCk7CisgICAgb2NjbHVk
ZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDE1MCwgNTApKTsKICAgICBsYXllci0+
c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0g
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVk
ZWQpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCks
ICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogfQogCkBAIC05MTMsNyArOTI3LDcgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5k
U2NhbGluZykKIHsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0g
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwog
ICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBG
YWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7Ci0gICAgUmVnaW9u
IG9jY2x1ZGVkOworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAKICAgICAv
LyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKQEAgLTkyMiwxMSArOTM2LDEyIEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxp
bmcpCiAgICAgLy8gcGl4ZWxzLCB3aGljaCBtZWFucyBub25lIHNob3VsZCBiZSBvY2NsdWRlZC4K
ICAgICBsYXllci0+c2V0Q29udGVudHNTY2FsZSgwLjUpOwogICAgIGxheWVyLT5zZXRCb3VuZHMo
SW50U2l6ZSg2MDAsIDYwMCkpOworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKFRyYW5zZm9y
bWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpIC8gMi4wLCBs
YXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsKIAotICAgIG9jY2x1ZGVkID0gSW50UmVj
dCgyMDAsIDIwMCwgMzAwLCAxMDApOworICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0
KDIwMCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KElu
dFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCBvY2NsdWRlZCk7CisgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICAvLyBU
aGUgY29udGVudCBpcyBoYWxmIHRoZSBzaXplIG9mIHRoZSBsYXllciAoc28gdGhlIG51bWJlciBv
ZiB0aWxlcyBpcyBmZXdlcikuCiAgICAgLy8gSW4gdGhpcyBjYXNlLCB0aGUgY29udGVudCBpcyAz
MDB4MzAwLCBhbmQgc2luY2UgdGhlIHRpbGUgc2l6ZSBpcyAxMDAsIHRoZQogICAgIC8vIG51bWJl
ciBvZiB0aWxlcyAzeDMuCkBAIC05MzcsMTAgKzk1MiwxMCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogICAgIC8vIFRo
aXMgbWFrZXMgc3VyZSB0aGUgcGFpbnRpbmcgd29ya3Mgd2hlbiB0aGUgY29udGVudCBzcGFjZSBp
cyBzY2FsZWQgdG8KICAgICAvLyBhIGRpZmZlcmVudCBsYXllciBzcGFjZS4gSW4gdGhpcyBjYXNl
IHRoZSBvY2NsdWRlZCByZWdpb24gY2F0Y2hlcyB0aGUKICAgICAvLyBibG93biB1cCB0aWxlcy4K
LSAgICBvY2NsdWRlZCA9IEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMjAwKTsKKyAgICBvY2NsdWRl
ZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAyMDApKTsKICAgICBsYXllci0+
c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0g
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgb2NjbHVk
ZWQpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCks
ICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDktMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CkBAIC05NDksMTEgKzk2NCwx
MiBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNp
b25BbmRTY2FsaW5nKQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcmVlblRyYW5zZm9ybTsK
ICAgICBzY3JlZW5UcmFuc2Zvcm0uc2NhbGUoMC41KTsKICAgICBsYXllci0+c2V0U2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0oc2NyZWVuVHJhbnNmb3JtKTsKKyAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9y
bShzY3JlZW5UcmFuc2Zvcm0gKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXll
ci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4w
KSk7CiAKLSAgICBvY2NsdWRlZCA9IEludFJlY3QoMTAwLCAxMDAsIDE1MCwgMTAwKTsKKyAgICBv
Y2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgxMDAsIDEwMCwgMTUwLCAxMDApKTsKICAgICBs
YXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3Vu
ZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwg
b2NjbHVkZWQpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAs
IDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDktMSwgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiB9CiAKQEAgLTk2Niw3ICs5ODIs
NiBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUNvbnRlbnRzUmVnaW9uKQog
CiAgICAgSW50UmVjdCBvcGFxdWVQYWludFJlY3Q7CiAgICAgUmVnaW9uIG9wYXF1ZUNvbnRlbnRz
OwotICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKIAogICAgIEludFJlY3QgY29udGVudEJvdW5kcyA9
IEludFJlY3QoMCwgMCwgMTAwLCAyMDApOwogICAgIEludFJlY3QgdmlzaWJsZUJvdW5kcyA9IElu
dFJlY3QoMCwgMCwgMTAwLCAxNTApOwpAQCAtOTc4LDcgKzk5Myw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgb3BhcXVlQ29udGVudHNSZWdpb24pCiAgICAgLy8gSWYgdGhlIGxheWVy
IGRvZXNuJ3QgcGFpbnQgb3BhcXVlIGNvbnRlbnQsIHRoZW4gdGhlIG9wYXF1ZUNvbnRlbnRzUmVn
aW9uIHNob3VsZCBiZSBlbXB0eS4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+c2V0T3BhcXVlUGFpbnRSZWN0KG9wYXF1ZVBhaW50UmVjdCk7CiAgICAgbGF5ZXItPmludmFs
aWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29u
dGVudEJvdW5kcywgbm9PY2NsdXNpb24pOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29u
dGVudEJvdW5kcywgMCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+b3BhcXVlQ29udGVu
dHNSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJVRShvcGFxdWVDb250ZW50cy5pc0VtcHR5KCkpOwog
CkBAIC05ODYsMTQgKzEwMDEsMTQgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBvcGFx
dWVDb250ZW50c1JlZ2lvbikKICAgICBvcGFxdWVQYWludFJlY3QgPSBJbnRSZWN0KDEwLCAxMCwg
OTAsIDE5MCk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1
ZVBhaW50UmVjdChvcGFxdWVQYWludFJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChj
b250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMs
IG5vT2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMs
IDApOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPm9wYXF1ZUNvbnRlbnRzUmVnaW9uKCk7
CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJs
ZUJvdW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMXUsIG9w
YXF1ZUNvbnRlbnRzLnJlY3RzKCkuc2l6ZSgpKTsKIAogICAgIC8vIElmIHdlIHBhaW50IGFnYWlu
IHdpdGhvdXQgaW52YWxpZGF0aW5nLCB0aGUgc2FtZSBzdHVmZiBzaG91bGQgYmUgb3BhcXVlLgog
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qo
SW50UmVjdCgpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5v
T2NjbHVzaW9uKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIDAp
OwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPm9wYXF1ZUNvbnRlbnRzUmVnaW9uKCk7CiAg
ICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJv
dW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMXUsIG9wYXF1
ZUNvbnRlbnRzLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTEwMDIsNyArMTAxNyw3IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgb3BhcXVlQ29udGVudHNSZWdpb24pCiAgICAgLy8gbm90IGJl
IGFmZmVjdGVkLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFx
dWVQYWludFJlY3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVj
dCgwLCAwLCAxLCAxKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRz
LCBub09jY2x1c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRz
LCAwKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT5vcGFxdWVDb250ZW50c1JlZ2lvbigp
OwogICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2li
bGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBv
cGFxdWVDb250ZW50cy5yZWN0cygpLnNpemUoKSk7CkBAIC0xMDExLDcgKzEwMjYsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUNvbnRlbnRzUmVnaW9uKQogICAgIC8vIG5v
dCBiZSBhZmZlY3RlZC4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0
T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KElu
dFJlY3QoMTAsIDEwLCAxLCAxKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50
Qm91bmRzLCBub09jY2x1c2lvbik7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50
Qm91bmRzLCAwKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT5vcGFxdWVDb250ZW50c1Jl
Z2lvbigpOwogICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlvbihJbnRSZWN0KDEwLCAxMDAs
IDkwLCAxMDApLCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwogICAg
IEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>