<?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>120997</bug_id>
          
          <creation_ts>2013-09-08 00:37:21 -0700</creation_ts>
          <short_desc>Remove ComposedShadowTreeWalker</short_desc>
          <delta_ts>2013-09-08 02:32:25 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>926394</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-08 00:37:21 -0700</bug_when>
    <thetext>Move the code to NodeRenderingTraversal which is the only client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926398</commentid>
    <comment_count>1</comment_count>
      <attachid>210967</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-08 00:59:55 -0700</bug_when>
    <thetext>Created attachment 210967
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926413</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-08 02:32:25 -0700</bug_when>
    <thetext>https://trac.webkit.org/r155292</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210967</attachid>
            <date>2013-09-08 00:59:55 -0700</date>
            <delta_ts>2013-09-08 01:05:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>kill-shadow-walker.ptach</filename>
            <type>text/plain</type>
            <size>39866</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTI4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTA5LTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjA5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb3ZlIHRoZSBjb2RlIHRvIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwgd2hpY2ggaXMgdGhl
IG9ubHkgY2xpZW50IGJlc2lkZXMgSW50ZXJuYWxzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJp
OgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpub2RlQ2FuQmVEaXN0cmlidXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpmaW5kRmlyc3RTaWJsaW5nRW50ZXJp
bmdJbnNlcnRpb25Qb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6ZmluZEZpcnN0RW50ZXJpbmdJbnNlcnRpb25Qb2ludHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6ZmluZEZpcnN0RnJvbURpc3RyaWJ1dGVkTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpmaW5kTGFzdFNpYmxp
bmdFbnRlcmluZ0luc2VydGlvblBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVy
aW5nVHJhdmVyc2FsOjpmaW5kTGFzdEVudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OmZpbmRMYXN0RnJvbURpc3RyaWJ1dGVk
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjp0cmF2ZXJz
ZVBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjp0cmF2
ZXJzZUZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNh
bDo6dHJhdmVyc2VMYXN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbDo6dHJhdmVyc2VOZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzU2libGluZyk6CisgICAgICAgIAorICAg
ICAgICAgICAgTWFrZSBmb3JtZXIgbWVtYmVycyBvZiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIg
c3RhbmRhbG9uZSBmdW5jdGlvbnMgaW4gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC4KKworICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cGFyZW50U2xvdyk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpuZXh0U2libGluZ1Nsb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nU2xv
dyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpuZXh0SW5TY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwcmV2aW91c0lu
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cGFyZW50
SW5TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpsYXN0
Q2hpbGRJblNjb3BlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6
CisKIDIwMTMtMDktMDcgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFNlcGFyYXRlIGZvcndhcmQgYW5kIGJhY2t3YXJkIHBhdGhzIGluIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlcgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE1NTI4NikKKysr
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTIyLDcg
KzExMjIsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL0NsaXBib2FyZC5jcHAKICAg
ICBkb20vQ2xpcGJvYXJkRXZlbnQuY3BwCiAgICAgZG9tL0NvbW1lbnQuY3BwCi0gICAgZG9tL0Nv
bXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKICAgICBkb20vQ29tcG9zaXRpb25FdmVudC5jcHAK
ICAgICBkb20vQ29udGFpbmVyTm9kZS5jcHAKICAgICBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1NTI4
NikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTI3OTcsOCArMjc5Nyw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL0NsaXBib2FyZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmggXAotCVNvdXJjZS9XZWJDb3JlL2RvbS9Db21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaCBcCiAJU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggXApJbmRleDogU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CShyZXZpc2lvbiAxNTUyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5n
IGNvcHkpCkBAIC0zNzAsNyArMzcwLDYgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL0NsaXBib2Fy
ZC5jcHAgXAogICAgIGRvbS9DbGlwYm9hcmRFdmVudC5jcHAgXAogICAgIGRvbS9Db21tZW50LmNw
cCBcCi0gICAgZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgXAogICAgIGRvbS9Db21w
b3NpdGlvbkV2ZW50LmNwcCBcCiAgICAgZG9tL0NvbnRhaW5lck5vZGUuY3BwIFwKICAgICBkb20v
Q29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwIFwKQEAgLTE1ODMsNyArMTU4Miw2IEBAIEhFQURF
UlMgKz0gXAogICAgIGRvbS9DbGlwYm9hcmRFdmVudC5oIFwKICAgICBkb20vQ2xpcGJvYXJkLmgg
XAogICAgIGRvbS9Db21tZW50LmggXAotICAgIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIu
aCBcCiAgICAgZG9tL0NvbnRhaW5lck5vZGUuaCBcCiAgICAgZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmggXAogICAgIGRvbS9Db250ZXh0RmVhdHVyZXMuaCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gMTU1Mjg2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTc3MiwxMSArNzcyLDYgQEAgX19aTjdXZWJDb3JlMjNlbmNv
ZGVIb3N0TmFtZVdpdGhSYW5nZUVQOAogX19aTjdXZWJDb3JlMjNldmVudFRpbWVTdGFtcFNpbmNl
MTk3MEVQN05TRXZlbnQKIF9fWk43V2ViQ29yZTIzZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNFUktO
U18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSTjNXVEY3SGFzaFNldElOUzNfNlN0cmluZ0VOUzNf
MTBTdHJpbmdIYXNoRU5TM18xMEhhc2hUcmFpdHNJUzVfRUVFRQogX19aTjdXZWJDb3JlMjRDYWNo
ZWRSZXNvdXJjZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQot
X19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgotX19a
TjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMW5leHRTaWJsaW5nRXYKLV9fWk43
V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyNG5leHRFdgotX19aTjdXZWJDb3JlMjRD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXI4cHJldmlvdXNFdgotX19aTjdXZWJDb3JlMjRDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXI5bGFzdENoaWxkRXYKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyMTBtYXJrZXJzRm9yRVBOU180Tm9kZUVOU18xNERvY3VtZW50TWFya2VyMTFN
YXJrZXJUeXBlc0UKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyMTNyZW1v
dmVNYXJrZXJzRU5TXzE0RG9jdW1lbnRNYXJrZXIxMU1hcmtlclR5cGVzRQogX19aTjdXZWJDb3Jl
MjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxOGFkZFRleHRNYXRjaE1hcmtlckVQS05TXzVSYW5n
ZUViCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oJKHJldmlzaW9uIDE1NTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMTY2LDcgKzEyMTY2LDYgQEAK
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAg
ICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkb21cQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRvbVxD
b21wb3NpdGlvbkV2ZW50LmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CkBAIC0yMDI2NCw3ICsyMDI2Myw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxkb21cQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxkb21cQ2xpcGJvYXJkRXZlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGRvbVxDb21tZW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxk
b21cQ29tcG9zaXRpb25FdmVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9t
XENvbnRhaW5lck5vZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRvbVxDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIiAvPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU1Mjg2KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTA1LDggKzE1MDUsNiBAQAogCQk0QTVBMkFEQzE2MUU3RTAwMDA1ODg5REQg
LyogV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QTVBMkFEQTE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0
RXh0ZW5zaW9uUGFyc2VyLmggKi87IH07CiAJCTRBNUNCMUM1MTZDM0E1RkQwMEFCMjg4NiAvKiBF
dmVudFJldGFyZ2V0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEE1Q0IxQzMxNkMzQTVGRDAwQUIyODg2IC8qIEV2ZW50UmV0YXJnZXRlci5jcHAg
Ki87IH07CiAJCTRBNUNCMUM2MTZDM0E1RkQwMEFCMjg4NiAvKiBFdmVudFJldGFyZ2V0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNUNCMUM0MTZD
M0E1RkQwMEFCMjg4NiAvKiBFdmVudFJldGFyZ2V0ZXIuaCAqLzsgfTsKLQkJNEE2QTBDNUIxNTIz
MkYyNDAwQjA5QzZFIC8qIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTZBMEM1OTE1MjMyRjI0MDBCMDlD
NkUgLyogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcCAqLzsgfTsKLQkJNEE2QTBDNUMxNTIz
MkYyNDAwQjA5QzZFIC8qIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2QTBDNUExNTIzMkYyNDAwQjA5QzZF
IC8qIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oICovOyB9OwogCQk0QTZFOUZDMzEzQzE3RDFE
MDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTZFOUZDMTEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZl
YXR1cmVWYWx1ZS5jcHAgKi87IH07CiAJCTRBNkU5RkM0MTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250
RmVhdHVyZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QTZFOUZDMjEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBNkU5RkM3MTND
MTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNkU5RkM1MTNDMTdENTcwMDQ2QTdGOCAv
KiBGb250RmVhdHVyZVNldHRpbmdzLmNwcCAqLzsgfTsKQEAgLTgwMjEsOCArODAxOSw2IEBACiAJ
CTRBNUEyQURBMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2Vy
Lmg7IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNUNCMUMzMTZDM0E1RkQwMEFCMjg4NiAv
KiBFdmVudFJldGFyZ2V0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRXZlbnRSZXRhcmdldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE1
Q0IxQzQxNkMzQTVGRDAwQUIyODg2IC8qIEV2ZW50UmV0YXJnZXRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFJldGFyZ2V0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNEE2QTBDNTkxNTIzMkYyNDAwQjA5QzZFIC8qIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QTZB
MEM1QTE1MjMyRjI0MDBCMDlDNkUgLyogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTZFOUZDMTEzQzE3RDFEMDA0NkE3RjggLyog
Rm9udEZlYXR1cmVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGb250RmVhdHVyZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE2
RTlGQzIxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEZlYXR1cmVWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0QTZFOUZDNTEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0
aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmVhdHVy
ZVNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjI5LDggKzIw
NjI1LDYgQEAKIAkJCQk2NTUwQjY5NzA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5jcHAgKi8s
CiAJCQkJNjU1MEI2OTgwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCAqLywKIAkJCQk4NTA4
OUNDNzBBOThDMjI2MDBBMjc1QUEgLyogQ29tbWVudC5pZGwgKi8sCi0JCQkJNEE2QTBDNTkxNTIz
MkYyNDAwQjA5QzZFIC8qIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgKi8sCi0JCQkJNEE2
QTBDNUExNTIzMkYyNDAwQjA5QzZFIC8qIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oICovLAog
CQkJCTc5RjJGNTlFMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCAqLywK
IAkJCQk3OUYyRjU5RjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oICovLAog
CQkJCTc5RjJGNUEwMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmlkbCAqLywK
QEAgLTIxNTk0LDcgKzIxNTg4LDYgQEAKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3ODEgLyog
Q29tbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc5REMwMzcxNkE3OTkyRTAwODA3Nzk0IC8q
IENvbXBhY3RIVE1MVG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QzIzNjExMTA5N0VFNzcw
MEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTRB
NkEwQzVDMTUyMzJGMjQwMEIwOUM2RSAvKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxNkZFMTE2MEU2RTFEQTcwMEJGNjA4OCAvKiBDb21wb3NpdGVBbmlt
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REREMDk5RTY0OTIwMDU2RTU4MSAvKiBD
b21wb3NpdGVFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlGMkY1QTIxMDkxOTM5
QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjUxMDIs
NyArMjUwOTUsNiBAQAogCQkJCTY1NTBCNkExMDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTM3QzIzNjEwMTA5N0VFNzcwMEVGOUY3MiAvKiBDb21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdDMjM4MjIxMDk4Qzg0MjAw
RUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNEE2QTBDNUIxNTIzMkYyNDAwQjA5QzZFIC8qIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExNTBFNkUxREE3MDBCRjYwODggLyogQ29t
cG9zaXRlQW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RERDMDk5RTY0OTIw
MDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
OUYyRjVBMTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIuY3BwCShyZXZpc2lvbiAxNTUyODcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyODAgKzAsMCBAQAot
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIu
aCIKLQotI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgotI2luY2x1ZGUgIkVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQuaCIKLSNpbmNsdWRlICJJbnNlcnRpb25Q
b2ludC5oIgotI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1zdGF0aWMgaW5saW5lIGJvb2wgbm9kZUNhbkJlRGlzdHJpYnV0ZWQoY29uc3QgTm9kZSog
bm9kZSkKLXsKLSAgICBBU1NFUlQobm9kZSk7Ci0gICAgTm9kZSogcGFyZW50ID0gcGFyZW50Tm9k
ZUZvckRpc3RyaWJ1dGlvbihub2RlKTsKLSAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKHBhcmVudC0+aXNTaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGlmIChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
cGFyZW50KS0+c2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotc3RhdGljIE5vZGUqIGZpbmRGaXJzdFNpYmxpbmdFbnRlcmluZ0luc2Vy
dGlvblBvaW50cyhjb25zdCBOb2RlKik7Ci1zdGF0aWMgTm9kZSogZmluZEZpcnN0RW50ZXJpbmdJ
bnNlcnRpb25Qb2ludHMoY29uc3QgTm9kZSopOwotc3RhdGljIE5vZGUqIGZpbmRGaXJzdEZyb21E
aXN0cmlidXRlZE5vZGUoY29uc3QgTm9kZSosIGNvbnN0IEluc2VydGlvblBvaW50Kik7Ci1zdGF0
aWMgTm9kZSogZmluZExhc3RTaWJsaW5nRW50ZXJpbmdJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9k
ZSopOwotc3RhdGljIE5vZGUqIGZpbmRMYXN0RW50ZXJpbmdJbnNlcnRpb25Qb2ludHMoY29uc3Qg
Tm9kZSopOwotc3RhdGljIE5vZGUqIGZpbmRMYXN0RnJvbURpc3RyaWJ1dGVkTm9kZShjb25zdCBO
b2RlKiwgY29uc3QgSW5zZXJ0aW9uUG9pbnQqKTsKLQotc3RhdGljIE5vZGUqIGZpbmRGaXJzdFNp
YmxpbmdFbnRlcmluZ0luc2VydGlvblBvaW50cyhjb25zdCBOb2RlKiBub2RlKQotewotICAgIGZv
ciAoY29uc3QgTm9kZSogc2libGluZyA9IG5vZGU7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5n
LT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRGaXJzdEVu
dGVyaW5nSW5zZXJ0aW9uUG9pbnRzKHNpYmxpbmcpKQotICAgICAgICAgICAgcmV0dXJuIGZvdW5k
OwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotc3RhdGljIE5vZGUqIGZpbmRGaXJz
dEVudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKGNvbnN0IE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJU
KG5vZGUpOwotICAgIGlmICghaXNBY3RpdmVJbnNlcnRpb25Qb2ludChub2RlKSkKLSAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpOwotICAgIGNvbnN0IEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSk7Ci0gICAgaWYgKE5vZGUq
IGZvdW5kID0gZmluZEZpcnN0RnJvbURpc3RyaWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludC0+Zmly
c3REaXN0cmlidXRlZCgpLCBpbnNlcnRpb25Qb2ludCkpCi0gICAgICAgIHJldHVybiBmb3VuZDsK
LSAgICByZXR1cm4gZmluZEZpcnN0U2libGluZ0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKG5vZGUt
PmZpcnN0Q2hpbGQoKSk7Ci19Ci0KLXN0YXRpYyBOb2RlKiBmaW5kRmlyc3RGcm9tRGlzdHJpYnV0
ZWROb2RlKGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Q
b2ludCkKLXsKLSAgICBmb3IgKGNvbnN0IE5vZGUqIG5leHQgPSBub2RlOyBuZXh0OyBuZXh0ID0g
aW5zZXJ0aW9uUG9pbnQtPm5leHREaXN0cmlidXRlZFRvKG5leHQpKSB7Ci0gICAgICAgIGlmIChO
b2RlKiBmb3VuZCA9IGZpbmRGaXJzdEVudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKG5leHQpKQotICAg
ICAgICAgICAgcmV0dXJuIGZvdW5kOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQot
c3RhdGljIE5vZGUqIGZpbmRMYXN0U2libGluZ0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKGNvbnN0
IE5vZGUqIG5vZGUpCi17Ci0gICAgZm9yIChjb25zdCBOb2RlKiBzaWJsaW5nID0gbm9kZTsgc2li
bGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgIGlm
IChOb2RlKiBmb3VuZCA9IGZpbmRMYXN0RW50ZXJpbmdJbnNlcnRpb25Qb2ludHMoc2libGluZykp
Ci0gICAgICAgICAgICByZXR1cm4gZm91bmQ7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwot
fQotCi1zdGF0aWMgTm9kZSogZmluZExhc3RFbnRlcmluZ0luc2VydGlvblBvaW50cyhjb25zdCBO
b2RlKiBub2RlKQotewotICAgIEFTU0VSVChub2RlKTsKLSAgICBpZiAoIWlzQWN0aXZlSW5zZXJ0
aW9uUG9pbnQobm9kZSkpCi0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PE5vZGUqPihub2RlKTsK
LSAgICBjb25zdCBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0b0luc2VydGlvblBv
aW50KG5vZGUpOwotICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRMYXN0RnJvbURpc3RyaWJ1dGVk
Tm9kZShpbnNlcnRpb25Qb2ludC0+bGFzdERpc3RyaWJ1dGVkKCksIGluc2VydGlvblBvaW50KSkK
LSAgICAgICAgcmV0dXJuIGZvdW5kOwotICAgIHJldHVybiBmaW5kTGFzdFNpYmxpbmdFbnRlcmlu
Z0luc2VydGlvblBvaW50cyhub2RlLT5sYXN0Q2hpbGQoKSk7Ci19Ci0KLXN0YXRpYyBOb2RlKiBm
aW5kTGFzdEZyb21EaXN0cmlidXRlZE5vZGUoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgSW5zZXJ0
aW9uUG9pbnQqIGluc2VydGlvblBvaW50KQotewotICAgIGZvciAoY29uc3QgTm9kZSogbmV4dCA9
IG5vZGU7IG5leHQ7IG5leHQgPSBpbnNlcnRpb25Qb2ludC0+cHJldmlvdXNEaXN0cmlidXRlZFRv
KG5leHQpKSB7Ci0gICAgICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRMYXN0RW50ZXJpbmdJbnNl
cnRpb25Qb2ludHMobmV4dCkpCi0gICAgICAgICAgICByZXR1cm4gZm91bmQ7Ci0gICAgfQotICAg
IHJldHVybiBudWxscHRyOwotfQotCi12b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Zmly
c3RDaGlsZCgpCi17Ci0gICAgYXNzZXJ0UHJlY29uZGl0aW9uKCk7Ci0gICAgbV9ub2RlID0gdHJh
dmVyc2VGaXJzdENoaWxkKG1fbm9kZSk7Ci0gICAgYXNzZXJ0UG9zdGNvbmRpdGlvbigpOwotfQot
Ci1Ob2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlRmlyc3RDaGlsZChjb25z
dCBOb2RlKiBub2RlKSBjb25zdAotewotICAgIEFTU0VSVChub2RlKTsKLSAgICBpZiAobm9kZS0+
c2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIGlmICghY2FuQ3Jvc3NVcHBlckJvdW5kYXJ5KCkpCi0g
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgbm9kZSA9IG5vZGUtPnNoYWRvd1Jv
b3QoKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZpbmRGaXJzdFNpYmxpbmdFbnRlcmluZ0luc2VydGlv
blBvaW50cyhub2RlLT5maXJzdENoaWxkKCkpOwotfQotCi12b2lkIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjo6bGFzdENoaWxkKCkKLXsKLSAgICBhc3NlcnRQcmVjb25kaXRpb24oKTsKLSAgICBt
X25vZGUgPSB0cmF2ZXJzZUxhc3RDaGlsZChtX25vZGUpOwotICAgIGFzc2VydFBvc3Rjb25kaXRp
b24oKTsKLX0KLQotTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZUxhc3RD
aGlsZChjb25zdCBOb2RlKiBub2RlKSBjb25zdAotewotICAgIEFTU0VSVChub2RlKTsKLSAgICBp
ZiAobm9kZS0+c2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIGlmICghY2FuQ3Jvc3NVcHBlckJvdW5k
YXJ5KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgbm9kZSA9IG5vZGUt
PnNoYWRvd1Jvb3QoKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZpbmRMYXN0U2libGluZ0VudGVyaW5n
SW5zZXJ0aW9uUG9pbnRzKG5vZGUtPmxhc3RDaGlsZCgpKTsKLX0KLQotdm9pZCBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXI6Om5leHRTaWJsaW5nKCkKLXsKLSAgICBhc3NlcnRQcmVjb25kaXRpb24o
KTsKLSAgICBtX25vZGUgPSB0cmF2ZXJzZU5leHRTaWJsaW5nKG1fbm9kZSk7Ci0gICAgYXNzZXJ0
UG9zdGNvbmRpdGlvbigpOwotfQotCi12b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6cHJl
dmlvdXNTaWJsaW5nKCkKLXsKLSAgICBhc3NlcnRQcmVjb25kaXRpb24oKTsKLSAgICBtX25vZGUg
PSB0cmF2ZXJzZVByZXZpb3VzU2libGluZyhtX25vZGUpOwotICAgIGFzc2VydFBvc3Rjb25kaXRp
b24oKTsKLX0KLQotdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBhcmVudCgpCi17Ci0g
ICAgYXNzZXJ0UHJlY29uZGl0aW9uKCk7Ci0gICAgbV9ub2RlID0gdHJhdmVyc2VQYXJlbnQobV9u
b2RlKTsKLSAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7Ci19Ci0KLU5vZGUqIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKLXsK
LSAgICBpZiAobm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIHJldHVybiB0b1BzZXVk
b0VsZW1lbnQobm9kZSktPmhvc3RFbGVtZW50KCk7Ci0KLSAgICBpZiAoIWNhbkNyb3NzVXBwZXJC
b3VuZGFyeSgpICYmIG5vZGUtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIGlmIChub2RlQ2FuQmVEaXN0cmlidXRlZChub2RlKSkgewotICAgICAgICBpZiAoSW5zZXJ0
aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gZmluZEluc2VydGlvblBvaW50T2Yobm9kZSkpCi0g
ICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQoaW5zZXJ0aW9uUG9pbnQpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9k
ZS0+cGFyZW50Tm9kZSgpOwotICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIGlmIChwYXJlbnQtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gY2Fu
Q3Jvc3NVcHBlckJvdW5kYXJ5KCkgPyB0b1NoYWRvd1Jvb3QocGFyZW50KS0+aG9zdEVsZW1lbnQo
KSA6IHBhcmVudDsKLQotICAgIGlmIChwYXJlbnQtPmlzSW5zZXJ0aW9uUG9pbnQoKSkgewotICAg
ICAgICBjb25zdCBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0b0luc2VydGlvblBv
aW50KHBhcmVudCk7Ci0gICAgICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aGFzRGlzdHJpYnV0aW9u
KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgaWYgKGluc2VydGlvblBv
aW50LT5pc0FjdGl2ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlUGFyZW50KHBhcmVu
dCk7Ci0gICAgfQotICAgIHJldHVybiBwYXJlbnQ7Ci19Ci0KLU5vZGUqIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlcjo6dHJhdmVyc2VOZXh0U2libGluZyhjb25zdCBOb2RlKiBub2RlKQotewotICAg
IEFTU0VSVChub2RlKTsKLQotICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludDsKLSAg
ICBpZiAobm9kZUNhbkJlRGlzdHJpYnV0ZWQobm9kZSkgJiYgKGluc2VydGlvblBvaW50ID0gZmlu
ZEluc2VydGlvblBvaW50T2Yobm9kZSkpKSB7Ci0gICAgICAgIE5vZGUqIGZvdW5kID0gZmluZEZp
cnN0RnJvbURpc3RyaWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludC0+bmV4dERpc3RyaWJ1dGVkVG8o
bm9kZSksIGluc2VydGlvblBvaW50KTsKLSAgICAgICAgaWYgKGZvdW5kKQotICAgICAgICAgICAg
cmV0dXJuIGZvdW5kOwotICAgICAgICByZXR1cm4gdHJhdmVyc2VOZXh0U2libGluZyhpbnNlcnRp
b25Qb2ludCk7Ci0gICAgfQotCi0gICAgZm9yIChjb25zdCBOb2RlKiBzaWJsaW5nID0gbm9kZS0+
bmV4dFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRTaWJsaW5nKCkp
IHsKLSAgICAgICAgaWYgKE5vZGUqIGZvdW5kID0gZmluZEZpcnN0RW50ZXJpbmdJbnNlcnRpb25Q
b2ludHMoc2libGluZykpCi0gICAgICAgICAgICByZXR1cm4gZm91bmQ7Ci0gICAgfQotICAgIGlm
IChub2RlLT5wYXJlbnROb2RlKCkgJiYgaXNBY3RpdmVJbnNlcnRpb25Qb2ludChub2RlLT5wYXJl
bnROb2RlKCkpKQotICAgICAgICByZXR1cm4gdHJhdmVyc2VOZXh0U2libGluZyhub2RlLT5wYXJl
bnROb2RlKCkpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLU5vZGUqIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkK
LXsKLSAgICBBU1NFUlQobm9kZSk7Ci0KLSAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnQ7Ci0gICAgaWYgKG5vZGVDYW5CZURpc3RyaWJ1dGVkKG5vZGUpICYmIChpbnNlcnRpb25Qb2lu
dCA9IGZpbmRJbnNlcnRpb25Qb2ludE9mKG5vZGUpKSkgewotICAgICAgICBOb2RlKiBmb3VuZCA9
IGZpbmRMYXN0RnJvbURpc3RyaWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludC0+cHJldmlvdXNEaXN0
cmlidXRlZFRvKG5vZGUpLCBpbnNlcnRpb25Qb2ludCk7Ci0gICAgICAgIGlmIChmb3VuZCkKLSAg
ICAgICAgICAgIHJldHVybiBmb3VuZDsKLSAgICAgICAgcmV0dXJuIHRyYXZlcnNlUHJldmlvdXNT
aWJsaW5nKGluc2VydGlvblBvaW50KTsKLSAgICB9Ci0KLSAgICBmb3IgKGNvbnN0IE5vZGUqIHNp
YmxpbmcgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxp
bmctPnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRM
YXN0RW50ZXJpbmdJbnNlcnRpb25Qb2ludHMoc2libGluZykpCi0gICAgICAgICAgICByZXR1cm4g
Zm91bmQ7Ci0gICAgfQotICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkgJiYgaXNBY3RpdmVJbnNl
cnRpb25Qb2ludChub2RlLT5wYXJlbnROb2RlKCkpKQotICAgICAgICByZXR1cm4gdHJhdmVyc2VQ
cmV2aW91c1NpYmxpbmcobm9kZS0+cGFyZW50Tm9kZSgpKTsKLQotICAgIHJldHVybiBudWxscHRy
OwotfQotCi12b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6bmV4dCgpCi17Ci0gICAgYXNz
ZXJ0UHJlY29uZGl0aW9uKCk7Ci0gICAgaWYgKE5vZGUqIG5leHQgPSB0cmF2ZXJzZUZpcnN0Q2hp
bGQobV9ub2RlKSkKLSAgICAgICAgbV9ub2RlID0gbmV4dDsKLSAgICBlbHNlIGlmIChOb2RlKiBu
ZXh0ID0gdHJhdmVyc2VOZXh0U2libGluZyhtX25vZGUpKQotICAgICAgICBtX25vZGUgPSBuZXh0
OwotICAgIGVsc2UgewotICAgICAgICBjb25zdCBOb2RlKiBuID0gbV9ub2RlOwotICAgICAgICB3
aGlsZSAobiAmJiAhdHJhdmVyc2VOZXh0U2libGluZyhuKSkKLSAgICAgICAgICAgIG4gPSB0cmF2
ZXJzZVBhcmVudChuKTsKLSAgICAgICAgbV9ub2RlID0gbiA/IHRyYXZlcnNlTmV4dFNpYmxpbmco
bikgOiAwOwotICAgIH0KLSAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7Ci19Ci0KLXZvaWQgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91cygpCi17Ci0gICAgYXNzZXJ0UHJlY29uZGl0
aW9uKCk7Ci0gICAgaWYgKE5vZGUqIG4gPSB0cmF2ZXJzZVByZXZpb3VzU2libGluZyhtX25vZGUp
KSB7Ci0gICAgICAgIHdoaWxlIChOb2RlKiBjaGlsZCA9IHRyYXZlcnNlTGFzdENoaWxkKG4pKQot
ICAgICAgICAgICAgbiA9IGNoaWxkOwotICAgICAgICBtX25vZGUgPSBuOwotICAgIH0gZWxzZQot
ICAgICAgICBtX25vZGUgPSB0cmF2ZXJzZVBhcmVudChtX25vZGUpOwotICAgIGFzc2VydFBvc3Rj
b25kaXRpb24oKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgJKHJldmlzaW9uIDE1NTI4NykKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyX2gK
LSNkZWZpbmUgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyX2gKLQotI2luY2x1ZGUgIkluc2VydGlv
blBvaW50LmgiCi0jaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgotI2luY2x1ZGUg
IlNoYWRvd1Jvb3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb2RlOwotY2xh
c3MgU2hhZG93Um9vdDsKLQotLy8gRklYTUU6IE1ha2Ugc29tZSBmdW5jdGlvbnMgaW5saW5lIHRv
IG9wdGltaXNlIHRoZSBwZXJmb3JtYW5jZS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MjcwMgotY2xhc3MgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHsKLXB1
YmxpYzoKLSAgICBlbnVtIFBvbGljeSB7Ci0gICAgICAgIENyb3NzVXBwZXJCb3VuZGFyeSwKLSAg
ICAgICAgRG9Ob3RDcm9zc1VwcGVyQm91bmRhcnksCi0gICAgfTsKLQotICAgIGVudW0gU3RhcnRQ
b2xpY3kgewotICAgICAgICBDYW5TdGFydEZyb21TaGFkb3dCb3VuZGFyeSwKLSAgICAgICAgQ2Fu
bm90U3RhcnRGcm9tU2hhZG93Qm91bmRhcnkKLSAgICB9OwotCi0gICAgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyKGNvbnN0IE5vZGUqLCBQb2xpY3kgPSBDcm9zc1VwcGVyQm91bmRhcnksIFN0YXJ0
UG9saWN5ID0gQ2Fubm90U3RhcnRGcm9tU2hhZG93Qm91bmRhcnkpOwotCi0gICAgTm9kZSogZ2V0
KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxOb2RlKj4obV9ub2RlKTsgfQotCi0gICAgdm9p
ZCBmaXJzdENoaWxkKCk7Ci0gICAgdm9pZCBsYXN0Q2hpbGQoKTsKLQotICAgIHZvaWQgbmV4dFNp
YmxpbmcoKTsKLSAgICB2b2lkIHByZXZpb3VzU2libGluZygpOwotCi0gICAgdm9pZCBwYXJlbnQo
KTsKLQotICAgIHZvaWQgbmV4dCgpOwotICAgIHZvaWQgcHJldmlvdXMoKTsKLQotICAgIE5vZGUq
IHRyYXZlcnNlUGFyZW50KGNvbnN0IE5vZGUqKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBib29s
IGNhbkNyb3NzVXBwZXJCb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9saWN5ID09IENyb3Nz
VXBwZXJCb3VuZGFyeTsgfQotCi0gICAgdm9pZCBhc3NlcnRQcmVjb25kaXRpb24oKSBjb25zdAot
ICAgIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIEFTU0VSVChtX25vZGUpOwotICAgICAgICBp
ZiAoY2FuQ3Jvc3NVcHBlckJvdW5kYXJ5KCkpCi0gICAgICAgICAgICBBU1NFUlQoIW1fbm9kZS0+
aXNTaGFkb3dSb290KCkpOwotICAgICAgICBBU1NFUlQoIWlzQWN0aXZlSW5zZXJ0aW9uUG9pbnQo
bV9ub2RlKSk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGFzc2VydFBvc3Rjb25kaXRpb24o
KSBjb25zdAotICAgIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGlmIChtX25vZGUpCi0gICAg
ICAgICAgICBhc3NlcnRQcmVjb25kaXRpb24oKTsKLSNlbmRpZgotICAgIH0KLQotICAgIE5vZGUq
IHRyYXZlcnNlRmlyc3RDaGlsZChjb25zdCBOb2RlKikgY29uc3Q7Ci0gICAgTm9kZSogdHJhdmVy
c2VMYXN0Q2hpbGQoY29uc3QgTm9kZSopIGNvbnN0OwotCi0gICAgc3RhdGljIE5vZGUqIHRyYXZl
cnNlTmV4dFNpYmxpbmcoY29uc3QgTm9kZSopOwotICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVBy
ZXZpb3VzU2libGluZyhjb25zdCBOb2RlKik7Ci0KLSAgICBjb25zdCBOb2RlKiBtX25vZGU7Ci0g
ICAgUG9saWN5IG1fcG9saWN5OwotfTsKLQotaW5saW5lIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cjo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKGNvbnN0IE5vZGUqIG5vZGUsIFBvbGljeSBwb2xp
Y3ksIFN0YXJ0UG9saWN5IHN0YXJ0UG9saWN5KQotICAgIDogbV9ub2RlKG5vZGUpCi0gICAgLCBt
X3BvbGljeShwb2xpY3kpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXJ0UG9saWN5KTsKLSNpZm5k
ZWYgTkRFQlVHCi0gICAgaWYgKG1fbm9kZSAmJiBzdGFydFBvbGljeSA9PSBDYW5ub3RTdGFydEZy
b21TaGFkb3dCb3VuZGFyeSkKLSAgICAgICAgYXNzZXJ0UHJlY29uZGl0aW9uKCk7Ci0jZW5kaWYK
LX0KLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCShyZXZpc2lvbiAxNTUyODYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
MjcsMzIgKzI4LDIxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGVSZW5k
ZXJpbmdUcmF2ZXJzYWwuaCIKIAotI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5o
IgorI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5o
IgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1l
c3BhY2UgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCB7CiAKK3N0YXRpYyBOb2RlKiBmaW5kRmlyc3RT
aWJsaW5nRW50ZXJpbmdJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9kZSopOworc3RhdGljIE5vZGUq
IGZpbmRGaXJzdEVudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKGNvbnN0IE5vZGUqKTsKK3N0YXRpYyBO
b2RlKiBmaW5kRmlyc3RGcm9tRGlzdHJpYnV0ZWROb2RlKGNvbnN0IE5vZGUqLCBjb25zdCBJbnNl
cnRpb25Qb2ludCopOworc3RhdGljIE5vZGUqIGZpbmRMYXN0U2libGluZ0VudGVyaW5nSW5zZXJ0
aW9uUG9pbnRzKGNvbnN0IE5vZGUqKTsKK3N0YXRpYyBOb2RlKiBmaW5kTGFzdEVudGVyaW5nSW5z
ZXJ0aW9uUG9pbnRzKGNvbnN0IE5vZGUqKTsKK3N0YXRpYyBOb2RlKiBmaW5kTGFzdEZyb21EaXN0
cmlidXRlZE5vZGUoY29uc3QgTm9kZSosIGNvbnN0IEluc2VydGlvblBvaW50Kik7CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBub2RlQ2FuQmVEaXN0cmlidXRlZChjb25zdCBOb2RlKiBub2RlKQorewor
ICAgIEFTU0VSVChub2RlKTsKKyAgICBOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlRm9yRGlzdHJp
YnV0aW9uKG5vZGUpOworICAgIGlmICghcGFyZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChwYXJlbnQpLT5z
aGFkb3dSb290KCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIHJldHVybiBmYWxz
ZTsKK30KKworc3RhdGljIE5vZGUqIGZpbmRGaXJzdFNpYmxpbmdFbnRlcmluZ0luc2VydGlvblBv
aW50cyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIGZvciAoY29uc3QgTm9kZSogc2libGluZyA9
IG5vZGU7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0U2libGluZygpKSB7CisgICAg
ICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRGaXJzdEVudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKHNp
YmxpbmcpKQorICAgICAgICAgICAgcmV0dXJuIGZvdW5kOworICAgIH0KKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworc3RhdGljIE5vZGUqIGZpbmRGaXJzdEVudGVyaW5nSW5zZXJ0aW9uUG9pbnRz
KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghaXNBY3Rp
dmVJbnNlcnRpb25Qb2ludChub2RlKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+
KG5vZGUpOworICAgIGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHRvSW5z
ZXJ0aW9uUG9pbnQobm9kZSk7CisgICAgaWYgKE5vZGUqIGZvdW5kID0gZmluZEZpcnN0RnJvbURp
c3RyaWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludC0+Zmlyc3REaXN0cmlidXRlZCgpLCBpbnNlcnRp
b25Qb2ludCkpCisgICAgICAgIHJldHVybiBmb3VuZDsKKyAgICByZXR1cm4gZmluZEZpcnN0U2li
bGluZ0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKG5vZGUtPmZpcnN0Q2hpbGQoKSk7Cit9CisKK3N0
YXRpYyBOb2RlKiBmaW5kRmlyc3RGcm9tRGlzdHJpYnV0ZWROb2RlKGNvbnN0IE5vZGUqIG5vZGUs
IGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCkKK3sKKyAgICBmb3IgKGNvbnN0
IE5vZGUqIG5leHQgPSBub2RlOyBuZXh0OyBuZXh0ID0gaW5zZXJ0aW9uUG9pbnQtPm5leHREaXN0
cmlidXRlZFRvKG5leHQpKSB7CisgICAgICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRGaXJzdEVu
dGVyaW5nSW5zZXJ0aW9uUG9pbnRzKG5leHQpKQorICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwor
ICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIE5vZGUqIGZpbmRMYXN0U2li
bGluZ0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgZm9y
IChjb25zdCBOb2RlKiBzaWJsaW5nID0gbm9kZTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmct
PnByZXZpb3VzU2libGluZygpKSB7CisgICAgICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRMYXN0
RW50ZXJpbmdJbnNlcnRpb25Qb2ludHMoc2libGluZykpCisgICAgICAgICAgICByZXR1cm4gZm91
bmQ7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgTm9kZSogZmluZExh
c3RFbnRlcmluZ0luc2VydGlvblBvaW50cyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VS
VChub2RlKTsKKyAgICBpZiAoIWlzQWN0aXZlSW5zZXJ0aW9uUG9pbnQobm9kZSkpCisgICAgICAg
IHJldHVybiBjb25zdF9jYXN0PE5vZGUqPihub2RlKTsKKyAgICBjb25zdCBJbnNlcnRpb25Qb2lu
dCogaW5zZXJ0aW9uUG9pbnQgPSB0b0luc2VydGlvblBvaW50KG5vZGUpOworICAgIGlmIChOb2Rl
KiBmb3VuZCA9IGZpbmRMYXN0RnJvbURpc3RyaWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludC0+bGFz
dERpc3RyaWJ1dGVkKCksIGluc2VydGlvblBvaW50KSkKKyAgICAgICAgcmV0dXJuIGZvdW5kOwor
ICAgIHJldHVybiBmaW5kTGFzdFNpYmxpbmdFbnRlcmluZ0luc2VydGlvblBvaW50cyhub2RlLT5s
YXN0Q2hpbGQoKSk7Cit9CisKK3N0YXRpYyBOb2RlKiBmaW5kTGFzdEZyb21EaXN0cmlidXRlZE5v
ZGUoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
KQoreworICAgIGZvciAoY29uc3QgTm9kZSogbmV4dCA9IG5vZGU7IG5leHQ7IG5leHQgPSBpbnNl
cnRpb25Qb2ludC0+cHJldmlvdXNEaXN0cmlidXRlZFRvKG5leHQpKSB7CisgICAgICAgIGlmIChO
b2RlKiBmb3VuZCA9IGZpbmRMYXN0RW50ZXJpbmdJbnNlcnRpb25Qb2ludHMobmV4dCkpCisgICAg
ICAgICAgICByZXR1cm4gZm91bmQ7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitl
bnVtIFNoYWRvd1Jvb3RDcm9zc2luZyB7IENyb3NzU2hhZG93Um9vdCwgRG9udENyb3NzU2hhZG93
Um9vdCB9OworCitzdGF0aWMgQ29udGFpbmVyTm9kZSogdHJhdmVyc2VQYXJlbnQoY29uc3QgTm9k
ZSogbm9kZSwgU2hhZG93Um9vdENyb3NzaW5nIHNoYWRvd1Jvb3RDcm9zc2luZykKK3sKKyAgICBp
ZiAobm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIHJldHVybiB0b1BzZXVkb0VsZW1l
bnQobm9kZSktPmhvc3RFbGVtZW50KCk7CisKKyAgICBpZiAoc2hhZG93Um9vdENyb3NzaW5nID09
IERvbnRDcm9zc1NoYWRvd1Jvb3QgICYmIG5vZGUtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIGlmIChub2RlQ2FuQmVEaXN0cmlidXRlZChub2RlKSkgeworICAgICAg
ICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gZmluZEluc2VydGlvblBvaW50
T2Yobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQoaW5zZXJ0aW9uUG9p
bnQsIHNoYWRvd1Jvb3RDcm9zc2luZyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgaWYg
KCFwYXJlbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKHBhcmVudC0+aXNT
aGFkb3dSb290KCkpCisgICAgICAgIHJldHVybiBzaGFkb3dSb290Q3Jvc3NpbmcgPT0gQ3Jvc3NT
aGFkb3dSb290ID8gdG9TaGFkb3dSb290KHBhcmVudCktPmhvc3RFbGVtZW50KCkgOiBwYXJlbnQ7
CisKKyAgICBpZiAocGFyZW50LT5pc0luc2VydGlvblBvaW50KCkpIHsKKyAgICAgICAgY29uc3Qg
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gdG9JbnNlcnRpb25Qb2ludChwYXJlbnQp
OworICAgICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmhhc0Rpc3RyaWJ1dGlvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aXNBY3Rp
dmUoKSkKKyAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudChwYXJlbnQsIHNoYWRvd1Jv
b3RDcm9zc2luZyk7CisgICAgfQorICAgIHJldHVybiBwYXJlbnQ7Cit9CisKK3N0YXRpYyBOb2Rl
KiB0cmF2ZXJzZUZpcnN0Q2hpbGQoY29uc3QgTm9kZSogbm9kZSwgU2hhZG93Um9vdENyb3NzaW5n
IHNoYWRvd1Jvb3RDcm9zc2luZykKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKG5vZGUt
PnNoYWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAoc2hhZG93Um9vdENyb3NzaW5nID09IERvbnRD
cm9zc1NoYWRvd1Jvb3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbm9k
ZSA9IG5vZGUtPnNoYWRvd1Jvb3QoKTsKKyAgICB9CisgICAgcmV0dXJuIGZpbmRGaXJzdFNpYmxp
bmdFbnRlcmluZ0luc2VydGlvblBvaW50cyhub2RlLT5maXJzdENoaWxkKCkpOworfQorCitzdGF0
aWMgTm9kZSogdHJhdmVyc2VMYXN0Q2hpbGQoY29uc3QgTm9kZSogbm9kZSwgU2hhZG93Um9vdENy
b3NzaW5nIHNoYWRvd1Jvb3RDcm9zc2luZykKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYg
KG5vZGUtPnNoYWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAoc2hhZG93Um9vdENyb3NzaW5nID09
IERvbnRDcm9zc1NoYWRvd1Jvb3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgbm9kZSA9IG5vZGUtPnNoYWRvd1Jvb3QoKTsKKyAgICB9CisgICAgcmV0dXJuIGZpbmRMYXN0
U2libGluZ0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKG5vZGUtPmxhc3RDaGlsZCgpKTsKK30KKwor
c3RhdGljIE5vZGUqIHRyYXZlcnNlTmV4dFNpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAg
ICBBU1NFUlQobm9kZSk7CisKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQ7Cisg
ICAgaWYgKG5vZGVDYW5CZURpc3RyaWJ1dGVkKG5vZGUpICYmIChpbnNlcnRpb25Qb2ludCA9IGZp
bmRJbnNlcnRpb25Qb2ludE9mKG5vZGUpKSkgeworICAgICAgICBOb2RlKiBmb3VuZCA9IGZpbmRG
aXJzdEZyb21EaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9uUG9pbnQtPm5leHREaXN0cmlidXRlZFRv
KG5vZGUpLCBpbnNlcnRpb25Qb2ludCk7CisgICAgICAgIGlmIChmb3VuZCkKKyAgICAgICAgICAg
IHJldHVybiBmb3VuZDsKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlTmV4dFNpYmxpbmcoaW5zZXJ0
aW9uUG9pbnQpOworICAgIH0KKworICAgIGZvciAoY29uc3QgTm9kZSogc2libGluZyA9IG5vZGUt
Pm5leHRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0U2libGluZygp
KSB7CisgICAgICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRGaXJzdEVudGVyaW5nSW5zZXJ0aW9u
UG9pbnRzKHNpYmxpbmcpKQorICAgICAgICAgICAgcmV0dXJuIGZvdW5kOworICAgIH0KKyAgICBp
ZiAobm9kZS0+cGFyZW50Tm9kZSgpICYmIGlzQWN0aXZlSW5zZXJ0aW9uUG9pbnQobm9kZS0+cGFy
ZW50Tm9kZSgpKSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlTmV4dFNpYmxpbmcobm9kZS0+cGFy
ZW50Tm9kZSgpKTsKKworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgTm9kZSogdHJh
dmVyc2VQcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9k
ZSk7CisKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQ7CisgICAgaWYgKG5vZGVD
YW5CZURpc3RyaWJ1dGVkKG5vZGUpICYmIChpbnNlcnRpb25Qb2ludCA9IGZpbmRJbnNlcnRpb25Q
b2ludE9mKG5vZGUpKSkgeworICAgICAgICBOb2RlKiBmb3VuZCA9IGZpbmRMYXN0RnJvbURpc3Ry
aWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludC0+cHJldmlvdXNEaXN0cmlidXRlZFRvKG5vZGUpLCBp
bnNlcnRpb25Qb2ludCk7CisgICAgICAgIGlmIChmb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBm
b3VuZDsKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKGluc2VydGlvblBv
aW50KTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IE5vZGUqIHNpYmxpbmcgPSBub2RlLT5wcmV2
aW91c1NpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzU2libGlu
ZygpKSB7CisgICAgICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRMYXN0RW50ZXJpbmdJbnNlcnRp
b25Qb2ludHMoc2libGluZykpCisgICAgICAgICAgICByZXR1cm4gZm91bmQ7CisgICAgfQorICAg
IGlmIChub2RlLT5wYXJlbnROb2RlKCkgJiYgaXNBY3RpdmVJbnNlcnRpb25Qb2ludChub2RlLT5w
YXJlbnROb2RlKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VQcmV2aW91c1NpYmxpbmcobm9k
ZS0+cGFyZW50Tm9kZSgpKTsKKworICAgIHJldHVybiBudWxscHRyOworfQorCiBDb250YWluZXJO
b2RlKiBwYXJlbnRTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyIHdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkNyb3NzVXBw
ZXJCb3VuZGFyeSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDYW5TdGFydEZyb21TaGFkb3dC
b3VuZGFyeSk7Ci0gICAgcmV0dXJuIHRvQ29udGFpbmVyTm9kZSh3YWxrZXIudHJhdmVyc2VQYXJl
bnQod2Fsa2VyLmdldCgpKSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisK
KyAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQobm9kZSwgQ3Jvc3NTaGFkb3dSb290KTsKIH0KIAog
Tm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKKyAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93
Um9vdCgpKTsKKworICAgIC8vIEZJWE1FOiBXaHkgZG8gdGhlc2UgZnVuY3Rpb25zIGRlYWwgd2l0
aCBiZWZvcmUvYWZ0ZXIgd2hlbiBvdGhlciBjb2RlIGhlcmUgZG9lc24ndD8KKyAgICBOb2RlKiBu
ZXh0U2libGluZyA9IDA7CiAgICAgaWYgKG5vZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVudCgpKSB7
Ci0gICAgICAgIHdhbGtlci5wYXJlbnQoKTsKLSAgICAgICAgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsK
KyAgICAgICAgbmV4dFNpYmxpbmcgPSB0cmF2ZXJzZVBhcmVudChub2RlLCBDcm9zc1NoYWRvd1Jv
b3QpOworICAgICAgICBuZXh0U2libGluZyA9IHRyYXZlcnNlRmlyc3RDaGlsZChuZXh0U2libGlu
ZywgQ3Jvc3NTaGFkb3dSb290KTsKICAgICB9IGVsc2UKLSAgICAgICAgd2Fsa2VyLm5leHRTaWJs
aW5nKCk7CisgICAgICAgIG5leHRTaWJsaW5nID0gdHJhdmVyc2VOZXh0U2libGluZyhub2RlKTsK
IAotICAgIGlmICh3YWxrZXIuZ2V0KCkgfHwgbm9kZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyAgICBpZiAobmV4dFNpYmxpbmcgfHwgbm9k
ZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5nOwog
Ci0gICAgTm9kZSogcGFyZW50ID0gd2Fsa2VyLnRyYXZlcnNlUGFyZW50KG5vZGUpOworICAgIE5v
ZGUqIHBhcmVudCA9IHRyYXZlcnNlUGFyZW50KG5vZGUsIENyb3NzU2hhZG93Um9vdCk7CiAgICAg
aWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuIHRv
RWxlbWVudChwYXJlbnQpLT5hZnRlclBzZXVkb0VsZW1lbnQoKTsKIApAQCAtNjEsMTcgKzI0Niwx
OSBAQCBOb2RlKiBuZXh0U2libGluZ1Nsb3coY29uc3QgTm9kZSogbm9kZSkKIAogTm9kZSogcHJl
dmlvdXNTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQogewotICAgIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3Qo
KSk7CisKKyAgICBOb2RlKiBwcmV2aW91c1NpYmxpbmcgPSAwOwogICAgIGlmIChub2RlLT5pc0Fm
dGVyUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIHdhbGtlci5wYXJlbnQoKTsKLSAgICAgICAg
d2Fsa2VyLmxhc3RDaGlsZCgpOworICAgICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSB0cmF2
ZXJzZVBhcmVudChub2RlLCBDcm9zc1NoYWRvd1Jvb3QpOworICAgICAgICBwcmV2aW91c1NpYmxp
bmcgPSB0cmF2ZXJzZUxhc3RDaGlsZChwYXJlbnQsIENyb3NzU2hhZG93Um9vdCk7CiAgICAgfSBl
bHNlCi0gICAgICAgIHdhbGtlci5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICAgICAgcHJldmlvdXNT
aWJsaW5nID0gdHJhdmVyc2VQcmV2aW91c1NpYmxpbmcobm9kZSk7CiAKLSAgICBpZiAod2Fsa2Vy
LmdldCgpIHx8IG5vZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVudCgpKQotICAgICAgICByZXR1cm4g
d2Fsa2VyLmdldCgpOworICAgIGlmIChwcmV2aW91c1NpYmxpbmcgfHwgbm9kZS0+aXNCZWZvcmVQ
c2V1ZG9FbGVtZW50KCkpCisgICAgICAgIHJldHVybiBwcmV2aW91c1NpYmxpbmc7CiAKLSAgICBO
b2RlKiBwYXJlbnQgPSB3YWxrZXIudHJhdmVyc2VQYXJlbnQobm9kZSk7CisgICAgQ29udGFpbmVy
Tm9kZSogcGFyZW50ID0gdHJhdmVyc2VQYXJlbnQobm9kZSwgQ3Jvc3NTaGFkb3dSb290KTsKICAg
ICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm4g
dG9FbGVtZW50KHBhcmVudCktPmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsKIApAQCAtODAsMzQgKzI2
Nyw0MiBAQCBOb2RlKiBwcmV2aW91c1NpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vCiAKIE5vZGUq
IG5leHRJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RP
TSkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQotICAgIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIo
bm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpEb05vdENyb3NzVXBwZXJCb3VuZGFyeSk7
Ci0gICAgd2Fsa2VyLm5leHQoKTsKLSAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworICAgIEFTU0VS
VCghaXNBY3RpdmVJbnNlcnRpb25Qb2ludChub2RlKSk7CisKKyAgICBpZiAoTm9kZSogbmV4dCA9
IHRyYXZlcnNlRmlyc3RDaGlsZChub2RlLCBEb250Q3Jvc3NTaGFkb3dSb290KSkKKyAgICAgICAg
cmV0dXJuIG5leHQ7CisgICAgaWYgKE5vZGUqIG5leHQgPSB0cmF2ZXJzZU5leHRTaWJsaW5nKG5v
ZGUpKQorICAgICAgICByZXR1cm4gbmV4dDsKKyAgICBjb25zdCBOb2RlKiBjdXJyZW50ID0gbm9k
ZTsKKyAgICB3aGlsZSAoY3VycmVudCAmJiAhdHJhdmVyc2VOZXh0U2libGluZyhjdXJyZW50KSkK
KyAgICAgICAgY3VycmVudCA9IHRyYXZlcnNlUGFyZW50KGN1cnJlbnQsIERvbnRDcm9zc1NoYWRv
d1Jvb3QpOworICAgIHJldHVybiBjdXJyZW50ID8gdHJhdmVyc2VOZXh0U2libGluZyhjdXJyZW50
KSA6IDA7CiB9CiAKIE5vZGUqIHByZXZpb3VzSW5TY29wZShjb25zdCBOb2RlKiBub2RlKQogewot
ICAgIC8vIEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgc2hvdWxkbid0IGJlIHVzZWQg
d2hlbiAhRU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDMzMzkKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9O
b3RDcm9zc1VwcGVyQm91bmRhcnkpOwotICAgIHdhbGtlci5wcmV2aW91cygpOwotICAgIHJldHVy
biB3YWxrZXIuZ2V0KCk7CisgICAgQVNTRVJUKCFpc0FjdGl2ZUluc2VydGlvblBvaW50KG5vZGUp
KTsKKworICAgIGlmIChOb2RlKiBjdXJyZW50ID0gdHJhdmVyc2VQcmV2aW91c1NpYmxpbmcobm9k
ZSkpIHsKKyAgICAgICAgd2hpbGUgKE5vZGUqIGNoaWxkID0gdHJhdmVyc2VMYXN0Q2hpbGQoY3Vy
cmVudCwgRG9udENyb3NzU2hhZG93Um9vdCkpCisgICAgICAgICAgICBjdXJyZW50ID0gY2hpbGQ7
CisgICAgICAgIHJldHVybiBjdXJyZW50OworICAgIH0KKyAgICByZXR1cm4gdHJhdmVyc2VQYXJl
bnQobm9kZSwgRG9udENyb3NzU2hhZG93Um9vdCk7CiB9CiAKIE5vZGUqIHBhcmVudEluU2NvcGUo
Y29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhNRTogQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyIHNob3VsZG4ndCBiZSB1c2VkIHdoZW4gIUVOQUJMRShTSEFET1dfRE9NKSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzM5Ci0gICAgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyIHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihub2RlLCBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5KTsKLSAgICB3YWxrZXIu
cGFyZW50KCk7Ci0gICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyAgICBBU1NFUlQoIWlzQWN0aXZl
SW5zZXJ0aW9uUG9pbnQobm9kZSkpOworCisgICAgcmV0dXJuIHRyYXZlcnNlUGFyZW50KG5vZGUs
IERvbnRDcm9zc1NoYWRvd1Jvb3QpOwogfQogCiBOb2RlKiBsYXN0Q2hpbGRJblNjb3BlKGNvbnN0
IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBz
aG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RPTSkgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQotICAgIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlciB3YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyOjpEb05vdENyb3NzVXBwZXJCb3VuZGFyeSk7Ci0gICAgd2Fsa2VyLmxhc3RD
aGlsZCgpOwotICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisgICAgQVNTRVJUKCFpc0FjdGl2ZUlu
c2VydGlvblBvaW50KG5vZGUpKTsKKworICAgIHJldHVybiB0cmF2ZXJzZUxhc3RDaGlsZChub2Rl
LCBEb250Q3Jvc3NTaGFkb3dSb290KTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTU1Mjg2KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVk
ZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgogI2luY2x1ZGUgIkNs
aWVudFJlY3RMaXN0LmgiCi0jaW5jbHVkZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCiAj
aW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCiAjaW5j
bHVkZSAiRE9NU3RyaW5nTGlzdC5oIgpAQCAtNTEwLDYxICs1MDksNiBAQCBib29sIEludGVybmFs
czo6YXR0YWNoZWQoTm9kZSogbm9kZSwgRXhjCiAgICAgcmV0dXJuIG5vZGUtPmF0dGFjaGVkKCk7
CiB9CiAKLU5vZGUqIEludGVybmFsczo6bmV4dFNpYmxpbmdCeVdhbGtlcihOb2RlKiBub2RlLCBF
eGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIW5vZGUpIHsKLSAgICAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwotICAgIHdhbGtlci5uZXh0U2libGluZygpOwot
ICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7Ci19Ci0KLU5vZGUqIEludGVybmFsczo6Zmlyc3RDaGls
ZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghbm9k
ZSkgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7Ci0gICAg
d2Fsa2VyLmZpcnN0Q2hpbGQoKTsKLSAgICByZXR1cm4gd2Fsa2VyLmdldCgpOwotfQotCi1Ob2Rl
KiBJbnRlcm5hbHM6Omxhc3RDaGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIGlmICghbm9kZSkgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ciB3YWxrZXIobm9kZSk7Ci0gICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwotICAgIHJldHVybiB3YWxr
ZXIuZ2V0KCk7Ci19Ci0KLU5vZGUqIEludGVybmFsczo6bmV4dE5vZGVCeVdhbGtlcihOb2RlKiBu
b2RlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIW5vZGUpIHsKLSAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwotICAgIHdhbGtlci5uZXh0KCk7Ci0g
ICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKLX0KLQotTm9kZSogSW50ZXJuYWxzOjpwcmV2aW91c05v
ZGVCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIW5v
ZGUpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwotICAg
IHdhbGtlci5wcmV2aW91cygpOwotICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7Ci19Ci0KIFN0cmlu
ZyBJbnRlcm5hbHM6OmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqIGVsZW1lbnQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghZWxlbWVudCkgewpJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAxNTUyODYpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsMTMgKzEyMCw2IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgYXR0YWNoZWQoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAg
IC8vIEZJWE1FOiBSZW5hbWUgdGhlc2UgZnVuY3Rpb25zIGlmIHdhbGtlciBpcyBwcmVmZXJlZC4K
LSAgICBOb2RlKiBuZXh0U2libGluZ0J5V2Fsa2VyKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgTm9kZSogZmlyc3RDaGlsZEJ5V2Fsa2VyKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
Tm9kZSogbGFzdENoaWxkQnlXYWxrZXIoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBOb2Rl
KiBuZXh0Tm9kZUJ5V2Fsa2VyKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgTm9kZSogcHJl
dmlvdXNOb2RlQnlXYWxrZXIoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKLQogICAgIFN0cmluZyB2
aXNpYmxlUGxhY2Vob2xkZXIoRWxlbWVudCopOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQogICAgIHZvaWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihFbGVtZW50KiwgY29uc3QgU3Ry
aW5nJiBjb2xvclZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJ
KHJldmlzaW9uIDE1NTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNjksMTIgKzY5LDYgQEAKICAgICBbUmFpc2VzRXhjZXB0aW9u
XSBib29sZWFuIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudChET01TdHJpbmcgcHJvcGVy
dHlOYW1lLCBkb3VibGUgcGF1c2VUaW1lLCBFbGVtZW50IGVsZW1lbnQpOwogICAgIFtSYWlzZXNF
eGNlcHRpb25dIGJvb2xlYW4gcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KERP
TVN0cmluZyBwcm9wZXJ0eSwgZG91YmxlIHBhdXNlVGltZSwgRWxlbWVudCBlbGVtZW50LCBET01T
dHJpbmcgcHNldWRvSWQpOwogCi0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gTm9kZSBuZXh0U2libGlu
Z0J5V2Fsa2VyKE5vZGUgbm9kZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gTm9kZSBmaXJzdENo
aWxkQnlXYWxrZXIoTm9kZSBub2RlKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBOb2RlIGxhc3RD
aGlsZEJ5V2Fsa2VyKE5vZGUgbm9kZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gTm9kZSBuZXh0
Tm9kZUJ5V2Fsa2VyKE5vZGUgbm9kZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gTm9kZSBwcmV2
aW91c05vZGVCeVdhbGtlcihOb2RlIG5vZGUpOwotCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9v
bGVhbiBhdHRhY2hlZChOb2RlIG5vZGUpOwogCiAgICAgRE9NU3RyaW5nIHZpc2libGVQbGFjZWhv
bGRlcihFbGVtZW50IGVsZW1lbnQpOwo=
</data>
<flag name="review"
          id="232998"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>