<?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>233727</bug_id>
          
          <creation_ts>2021-12-01 14:55:44 -0800</creation_ts>
          <short_desc>Use Span instead of pointer/length in CompiledContentExtension</short_desc>
          <delta_ts>2021-12-01 16:30:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1819428</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-01 14:55:44 -0800</bug_when>
    <thetext>Use Span instead of pointer/length in CompiledContentExtension</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819429</commentid>
    <comment_count>1</comment_count>
      <attachid>445621</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-01 14:57:14 -0800</bug_when>
    <thetext>Created attachment 445621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819464</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-01 16:29:40 -0800</bug_when>
    <thetext>http://trac.webkit.org/r286402</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819466</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-01 16:30:35 -0800</bug_when>
    <thetext>&lt;rdar://problem/85945120&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445621</attachid>
            <date>2021-12-01 14:57:14 -0800</date>
            <delta_ts>2021-12-01 15:12:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233727-20211201145713.patch</filename>
            <type>text/plain</type>
            <size>24348</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2QwN2M2YTU2Nzk2ZmM0
ZmQ5N2NiMTQzYTk2ZmIzOTE2NDAyNWQyNC4uYjA4NWEwM2IzNGVmOTE2NWFiODlkOTY2YWVmMjJi
MTY5OWExN2U4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTEyLTAxICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFNw
YW4gaW5zdGVhZCBvZiBwb2ludGVyL2xlbmd0aCBpbiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzcyNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5n
ZSBpbiBiZWhhdmlvci4gIEp1c3Qgc2ltcGxpZnlpbmcgdGhlIGludGVyZmFjZSBhIGJpdC4KKwor
ICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5oOgor
ICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OkNvbnRlbnRF
eHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRF
eHRlbnNpb246OmZpbmRGaXJzdElnbm9yZVByZXZpb3VzUnVsZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OmNvbXBpbGVHbG9i
YWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OnBvcHVsYXRlQ29uZGl0aW9uQ2FjaGVJZk5lZWRlZCk6
CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRlc2VyaWFsaXplZEFjdGlvbjo6
ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRlc2Vy
aWFsaXplZEFjdGlvbjo6c2VyaWFsaXplZExlbmd0aCk6CisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJlc291cmNl
TG9hZCBjb25zdCk6CisKIDIwMjEtMTItMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgY3NwLXJlcG9ydCByZXNvdXJjZSB0eXBlIHRv
IFdLQ29udGVudFJ1bGVMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJlMjJlOWNkZjA1NTgxZWM2ZmMwMWMzNjI0
ZTdjNTdmNzk1Y2VhNGUuLmE5Y2IyYzI5MjI4Y2ViYTIwZjQwN2ZiNjNjMzA3MWUwZTNmY2RkN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMTItMDEgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgU3BhbiBpbnN0ZWFkIG9m
IHBvaW50ZXIvbGVuZ3RoIGluIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRS
dWxlTGlzdDo6ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6ZmlsdGVyc1dpdGhDb25kaXRp
b25zQnl0ZWNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRS
dWxlTGlzdDo6dG9wVVJMRmlsdGVyc0J5dGVjb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OnNlcmlhbGl6ZWRBY3Rpb25zIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OnNwYW5XaXRoT2Zmc2V0
QW5kTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50UnVs
ZUxpc3Q6OmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmZpbHRl
cnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OnRvcFVSTEZpbHRlcnNCeXRlY29k
ZUxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBpbGVkQ29u
dGVudFJ1bGVMaXN0OjphY3Rpb25zIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmFjdGlvbnNMZW5ndGggY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5oOgorCiAyMDIx
LTEyLTAxICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V1BdIFNhbmRib3ggdGVsZW1ldHJ5IGlzIG1pc3NpbmcgZm9yIHNvbWUgc3lzdGVtIGNhbGxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21waWxlZENvbnRl
bnRFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbXBpbGVk
Q29udGVudEV4dGVuc2lvbi5oCmluZGV4IDBlYTcxNTk5ZGFjNmQxNWI1M2JhYmQ0NDVjMTU5NzQ0
ZTQyMGM0NjguLjhlMzcwYzJmODE2YTJiYmJjNTljODRmODVhODNlMTA1ZGQzZTFhMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbXBpbGVkQ29udGVudEV4
dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbXBpbGVk
Q29udGVudEV4dGVuc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDI3ICsyOSwyMiBAQAogCiAjaW5jbHVkZSAiQ29udGVudEV4
dGVuc2lvblJ1bGUuaCIKICNpbmNsdWRlICJERkFCeXRlY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9T
cGFuLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CituYW1lc3BhY2UgV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29tcGlsZWRDb250ZW50
RXh0ZW5zaW9uKCk7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IERGQUJ5dGVjb2RlKiBmaWx0ZXJzV2l0
aG91dENvbmRpdGlvbnNCeXRlY29kZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVk
IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgY29uc3QgREZBQnl0ZWNvZGUqIGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2Rl
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdW5zaWduZWQgZmlsdGVyc1dpdGhDb25kaXRpb25z
Qnl0ZWNvZGVMZW5ndGgoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBERkFCeXRlY29k
ZSogdG9wVVJMRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdW5zaWdu
ZWQgdG9wVVJMRmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
Y29uc3QgU2VyaWFsaXplZEFjdGlvbkJ5dGUqIGFjdGlvbnMoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCB1bnNpZ25lZCBhY3Rpb25zTGVuZ3RoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3Bh
bjxjb25zdCB1aW50OF90PiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFNwYW48Y29uc3QgdWludDhfdD4gZmlsdGVyc1dpdGhDb25kaXRp
b25zQnl0ZWNvZGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
IHRvcFVSTEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNwYW48Y29u
c3QgdWludDhfdD4gc2VyaWFsaXplZEFjdGlvbnMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbigpIGNvbnN0ID0gMDsKIH07CiAKLX0gLy8g
bmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucwogCiAjZW5kaWYgLy8gRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKaW5kZXggZGUyMjk0ZTY1OGRhYzc4ZTIzY2Y1
MDE3NTFiODQzOGZhYWUxNmZlYS4uYWNkNGY2NDFhMmY5OTI1MGEzYzc4ZDVkN2U1NThlNzA0Yjdi
MWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzMsOCArMzMsNyBAQAogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNp
b25zIHsKK25hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucyB7CiAKIFJlZjxDb250
ZW50RXh0ZW5zaW9uPiBDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBSZWY8Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uPiYmIGNvbXBpbGVkRXh0ZW5zaW9u
LCBVUkwmJiBleHRlbnNpb25CYXNlVVJMLCBTaG91bGRDb21waWxlQ1NTIHNob3VsZENvbXBpbGVD
U1MpCiB7CkBAIC00Niw4ICs0NSw4IEBAIENvbnRlbnRFeHRlbnNpb246OkNvbnRlbnRFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBSZWY8Q29tcGlsZWRDb250ZW50CiAgICAgLCBt
X2NvbXBpbGVkRXh0ZW5zaW9uKFdURk1vdmUoY29tcGlsZWRFeHRlbnNpb24pKQogICAgICwgbV9l
eHRlbnNpb25CYXNlVVJMKFdURk1vdmUoZXh0ZW5zaW9uQmFzZVVSTCkpCiB7Ci0gICAgREZBQnl0
ZWNvZGVJbnRlcnByZXRlciB3aXRob3V0Q29uZGl0aW9ucyh7IG1fY29tcGlsZWRFeHRlbnNpb24t
PmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCksIG1fY29tcGlsZWRFeHRlbnNpb24t
PmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7Ci0gICAgREZBQnl0
ZWNvZGVJbnRlcnByZXRlciB3aXRoQ29uZGl0aW9ucyh7IG1fY29tcGlsZWRFeHRlbnNpb24tPmZp
bHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKCksIG1fY29tcGlsZWRFeHRlbnNpb24tPmZpbHRl
cnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CisgICAgREZBQnl0ZWNvZGVJbnRl
cnByZXRlciB3aXRob3V0Q29uZGl0aW9ucyhtX2NvbXBpbGVkRXh0ZW5zaW9uLT5maWx0ZXJzV2l0
aG91dENvbmRpdGlvbnNCeXRlY29kZSgpKTsKKyAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdp
dGhDb25kaXRpb25zKG1fY29tcGlsZWRFeHRlbnNpb24tPmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5
dGVjb2RlKCkpOwogICAgIGZvciAodWludDY0X3QgYWN0aW9uIDogd2l0aG91dENvbmRpdGlvbnMu
YWN0aW9uc01hdGNoaW5nRXZlcnl0aGluZygpKSB7CiAgICAgICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oYWN0aW9uKSA9PSBhY3Rpb24pOwogICAgICAgICBtX3VuaXZlcnNhbEFjdGlv
bnNXaXRob3V0Q29uZGl0aW9ucy5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFjdGlvbikp
OwpAQCAtNjUsMTQgKzY0LDEyIEBAIENvbnRlbnRFeHRlbnNpb246OkNvbnRlbnRFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBSZWY8Q29tcGlsZWRDb250ZW50CiAKIHVpbnQzMl90
IENvbnRlbnRFeHRlbnNpb246OmZpbmRGaXJzdElnbm9yZVByZXZpb3VzUnVsZXMoKSBjb25zdAog
ewotICAgIGF1dG8qIGFjdGlvbnMgPSBtX2NvbXBpbGVkRXh0ZW5zaW9uLT5hY3Rpb25zKCk7Ci0g
ICAgdWludDMyX3QgYWN0aW9uc0xlbmd0aCA9IG1fY29tcGlsZWRFeHRlbnNpb24tPmFjdGlvbnNM
ZW5ndGgoKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRBY3Rpb25zID0gbV9jb21waWxlZEV4dGVuc2lv
bi0+c2VyaWFsaXplZEFjdGlvbnMoKTsKICAgICB1aW50MzJfdCBjdXJyZW50QWN0aW9uSW5kZXgg
PSAwOwotICAgIHdoaWxlIChjdXJyZW50QWN0aW9uSW5kZXggPCBhY3Rpb25zTGVuZ3RoKSB7Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGN1cnJlbnRBY3Rpb25JbmRleCA8IGFjdGlvbnNMZW5ndGgp
OwotICAgICAgICBpZiAoYWN0aW9uc1tjdXJyZW50QWN0aW9uSW5kZXhdID09IFdURjo6YWx0ZXJu
YXRpdmVJbmRleFY8SWdub3JlUHJldmlvdXNSdWxlc0FjdGlvbiwgQWN0aW9uRGF0YT4pCisgICAg
d2hpbGUgKGN1cnJlbnRBY3Rpb25JbmRleCA8IHNlcmlhbGl6ZWRBY3Rpb25zLnNpemUoKSkgewor
ICAgICAgICBpZiAoc2VyaWFsaXplZEFjdGlvbnNbY3VycmVudEFjdGlvbkluZGV4XSA9PSBXVEY6
OmFsdGVybmF0aXZlSW5kZXhWPElnbm9yZVByZXZpb3VzUnVsZXNBY3Rpb24sIEFjdGlvbkRhdGE+
KQogICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRBY3Rpb25JbmRleDsKLSAgICAgICAgY3VycmVu
dEFjdGlvbkluZGV4ICs9IERlc2VyaWFsaXplZEFjdGlvbjo6c2VyaWFsaXplZExlbmd0aChhY3Rp
b25zLCBhY3Rpb25zTGVuZ3RoLCBjdXJyZW50QWN0aW9uSW5kZXgpOworICAgICAgICBjdXJyZW50
QWN0aW9uSW5kZXggKz0gRGVzZXJpYWxpemVkQWN0aW9uOjpzZXJpYWxpemVkTGVuZ3RoKHNlcmlh
bGl6ZWRBY3Rpb25zLCBjdXJyZW50QWN0aW9uSW5kZXgpOwogICAgIH0KICAgICByZXR1cm4gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOwogfQpAQCAtODYsMTIgKzgzLDExIEBA
IHZvaWQgQ29udGVudEV4dGVuc2lvbjo6Y29tcGlsZUdsb2JhbERpc3BsYXlOb25lU3R5bGVTaGVl
dCgpCiB7CiAgICAgdWludDMyX3QgZmlyc3RJZ25vcmVQcmV2aW91c1J1bGVzID0gZmluZEZpcnN0
SWdub3JlUHJldmlvdXNSdWxlcygpOwogICAgIAotICAgIGF1dG8qIGFjdGlvbnMgPSBtX2NvbXBp
bGVkRXh0ZW5zaW9uLT5hY3Rpb25zKCk7Ci0gICAgdWludDMyX3QgYWN0aW9uc0xlbmd0aCA9IG1f
Y29tcGlsZWRFeHRlbnNpb24tPmFjdGlvbnNMZW5ndGgoKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRB
Y3Rpb25zID0gbV9jb21waWxlZEV4dGVuc2lvbi0+c2VyaWFsaXplZEFjdGlvbnMoKTsKIAogICAg
IGF1dG8gaW5HbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQgPSBbJl0oY29uc3QgdWludDMyX3Qg
bG9jYXRpb24pIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobG9jYXRpb24gPCBhY3Rpb25zTGVu
Z3RoKTsKLSAgICAgICAgcmV0dXJuIGxvY2F0aW9uIDwgZmlyc3RJZ25vcmVQcmV2aW91c1J1bGVz
ICYmIGFjdGlvbnNbbG9jYXRpb25dID09IFdURjo6YWx0ZXJuYXRpdmVJbmRleFY8Q1NTRGlzcGxh
eU5vbmVTZWxlY3RvckFjdGlvbiwgQWN0aW9uRGF0YT47CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGxvY2F0aW9uIDwgc2VyaWFsaXplZEFjdGlvbnMuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGxv
Y2F0aW9uIDwgZmlyc3RJZ25vcmVQcmV2aW91c1J1bGVzICYmIHNlcmlhbGl6ZWRBY3Rpb25zW2xv
Y2F0aW9uXSA9PSBXVEY6OmFsdGVybmF0aXZlSW5kZXhWPENTU0Rpc3BsYXlOb25lU2VsZWN0b3JB
Y3Rpb24sIEFjdGlvbkRhdGE+OwogICAgIH07CiAgICAgCiAgICAgU3RyaW5nQnVpbGRlciBjc3M7
CkBAIC05OSw3ICs5NSw3IEBAIHZvaWQgQ29udGVudEV4dGVuc2lvbjo6Y29tcGlsZUdsb2JhbERp
c3BsYXlOb25lU3R5bGVTaGVldCgpCiAgICAgICAgIGlmIChpbkdsb2JhbERpc3BsYXlOb25lU3R5
bGVTaGVldCh1bml2ZXJzYWxBY3Rpb25Mb2NhdGlvbikpIHsKICAgICAgICAgICAgIGlmICghY3Nz
LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjc3MuYXBwZW5kKCcsJyk7Ci0gICAgICAgICAg
ICBhdXRvIGFjdGlvbiA9IERlc2VyaWFsaXplZEFjdGlvbjo6ZGVzZXJpYWxpemUoYWN0aW9ucywg
YWN0aW9uc0xlbmd0aCwgdW5pdmVyc2FsQWN0aW9uTG9jYXRpb24pOworICAgICAgICAgICAgYXV0
byBhY3Rpb24gPSBEZXNlcmlhbGl6ZWRBY3Rpb246OmRlc2VyaWFsaXplKHNlcmlhbGl6ZWRBY3Rp
b25zLCB1bml2ZXJzYWxBY3Rpb25Mb2NhdGlvbik7CiAgICAgICAgICAgICBBU1NFUlQoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yQWN0aW9uPihhY3Rpb24uZGF0
YSgpKSk7CiAgICAgICAgICAgICBpZiAoYXV0byogYWN0aW9uRGF0YSA9IHN0ZDo6Z2V0X2lmPENT
U0Rpc3BsYXlOb25lU2VsZWN0b3JBY3Rpb24+KCZhY3Rpb24uZGF0YSgpKSkKICAgICAgICAgICAg
ICAgICBjc3MuYXBwZW5kKGFjdGlvbkRhdGEtPnN0cmluZyk7CkBAIC0xMjMsNyArMTE5LDcgQEAg
dm9pZCBDb250ZW50RXh0ZW5zaW9uOjpjb21waWxlR2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0
KCkKIHZvaWQgQ29udGVudEV4dGVuc2lvbjo6cG9wdWxhdGVDb25kaXRpb25DYWNoZUlmTmVlZGVk
KGNvbnN0IFVSTCYgdG9wVVJMKQogewogICAgIGlmIChtX2NhY2hlZFRvcFVSTCAhPSB0b3BVUkwp
IHsKLSAgICAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcih7IG1fY29tcGls
ZWRFeHRlbnNpb24tPnRvcFVSTEZpbHRlcnNCeXRlY29kZSgpLCBtX2NvbXBpbGVkRXh0ZW5zaW9u
LT50b3BVUkxGaWx0ZXJzQnl0ZWNvZGVMZW5ndGgoKSB9KTsKKyAgICAgICAgREZBQnl0ZWNvZGVJ
bnRlcnByZXRlciBpbnRlcnByZXRlcihtX2NvbXBpbGVkRXh0ZW5zaW9uLT50b3BVUkxGaWx0ZXJz
Qnl0ZWNvZGUoKSk7CiAgICAgICAgIGNvbnN0ZXhwciBSZXNvdXJjZUZsYWdzIGFsbExvYWRUeXBl
c0FuZFJlc291cmNlVHlwZXMgPSBMb2FkVHlwZU1hc2sgfCBSZXNvdXJjZVR5cGVNYXNrIHwgTG9h
ZENvbnRleHRNYXNrOwogICAgICAgICBTdHJpbmcgc3RyaW5nID0gbV9jb21waWxlZEV4dGVuc2lv
bi0+Y29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluKCkgPyB0b3BVUkwuaG9zdCgpLnRvU3RyaW5n
KCkgOiB0b3BVUkwuc3RyaW5nKCk7CiAgICAgICAgIGF1dG8gdG9wVVJMQWN0aW9ucyA9IGludGVy
cHJldGVyLmludGVycHJldChzdHJpbmcudXRmOCgpLCBhbGxMb2FkVHlwZXNBbmRSZXNvdXJjZVR5
cGVzKTsKQEAgLTE1Niw4ICsxNTIsNyBAQCBjb25zdCBWZWN0b3I8dWludDMyX3Q+JiBDb250ZW50
RXh0ZW5zaW9uOjp1bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnMoY29uc3QgVQogICAgIHBv
cHVsYXRlQ29uZGl0aW9uQ2FjaGVJZk5lZWRlZCh0b3BVUkwpOwogICAgIHJldHVybiBtX2NhY2hl
ZFVuaXZlcnNhbENvbmRpdGlvbmVkQWN0aW9uczsKIH0KLSAgICAKLX0gLy8gbmFtZXNwYWNlIENv
bnRlbnRFeHRlbnNpb25zCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwCmluZGV4IDBlMTEyNTc5N2MxYTQ1MjI4NzdmMTYw
MDVmNzJlNTRiYzY3Njk1NmYuLjU1M2Q2NTlkN2NjMDIyNDk5OTU1OWM2YzI0ZTQ0NzBlZmVlNDZh
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25SdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uUnVsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsOSArMzAsNyBAQAogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
Q29udGVudEV4dGVuc2lvbnMgeworbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
IHsKIAogQ29udGVudEV4dGVuc2lvblJ1bGU6OkNvbnRlbnRFeHRlbnNpb25SdWxlKFRyaWdnZXIm
JiB0cmlnZ2VyLCBBY3Rpb24mJiBhY3Rpb24pCiAgICAgOiBtX3RyaWdnZXIoV1RGTW92ZSh0cmln
Z2VyKSkKQEAgLTg1LDE2ICs4MywxNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4gc3Ry
dWN0IFZhcmlhbnREZXNlcmlhbGl6ZXI8c3RkOjp2YXJpYW50PFR5cGVzLi4uPj4gewogICAgIH0K
IH07CiAKLURlc2VyaWFsaXplZEFjdGlvbiBEZXNlcmlhbGl6ZWRBY3Rpb246OmRlc2VyaWFsaXpl
KGNvbnN0IFNlcmlhbGl6ZWRBY3Rpb25CeXRlKiBhY3Rpb25zLCBjb25zdCB1aW50MzJfdCBhY3Rp
b25zTGVuZ3RoLCB1aW50MzJfdCBsb2NhdGlvbikKK0Rlc2VyaWFsaXplZEFjdGlvbiBEZXNlcmlh
bGl6ZWRBY3Rpb246OmRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4gc2VyaWFsaXplZEFj
dGlvbnMsIHVpbnQzMl90IGxvY2F0aW9uKQogewotICAgIFJFTEVBU0VfQVNTRVJUKGxvY2F0aW9u
IDwgYWN0aW9uc0xlbmd0aCk7Ci0gICAgcmV0dXJuIHsgbG9jYXRpb24sIFZhcmlhbnREZXNlcmlh
bGl6ZXI8QWN0aW9uRGF0YT46OmRlc2VyaWFsaXplKHsgYWN0aW9ucyArIGxvY2F0aW9uICsgMSwg
YWN0aW9uc0xlbmd0aCAtIGxvY2F0aW9uIC0gMSB9LCBhY3Rpb25zW2xvY2F0aW9uXSkgfTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChsb2NhdGlvbiA8IHNlcmlhbGl6ZWRBY3Rpb25zLnNpemUoKSk7Cisg
ICAgcmV0dXJuIHsgbG9jYXRpb24sIFZhcmlhbnREZXNlcmlhbGl6ZXI8QWN0aW9uRGF0YT46OmRl
c2VyaWFsaXplKHNlcmlhbGl6ZWRBY3Rpb25zLnN1YnNwYW4obG9jYXRpb24gKyAxKSwgc2VyaWFs
aXplZEFjdGlvbnNbbG9jYXRpb25dKSB9OwogfQogCi1zaXplX3QgRGVzZXJpYWxpemVkQWN0aW9u
OjpzZXJpYWxpemVkTGVuZ3RoKGNvbnN0IFNlcmlhbGl6ZWRBY3Rpb25CeXRlKiBhY3Rpb25zLCBj
b25zdCB1aW50MzJfdCBhY3Rpb25zTGVuZ3RoLCB1aW50MzJfdCBsb2NhdGlvbikKK3NpemVfdCBE
ZXNlcmlhbGl6ZWRBY3Rpb246OnNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90PiBz
ZXJpYWxpemVkQWN0aW9ucywgdWludDMyX3QgbG9jYXRpb24pCiB7Ci0gICAgUkVMRUFTRV9BU1NF
UlQobG9jYXRpb24gPCBhY3Rpb25zTGVuZ3RoKTsKLSAgICByZXR1cm4gMSArIFZhcmlhbnREZXNl
cmlhbGl6ZXI8QWN0aW9uRGF0YT46OnNlcmlhbGl6ZWRMZW5ndGgoeyBhY3Rpb25zICsgbG9jYXRp
b24gKyAxLCBhY3Rpb25zTGVuZ3RoIC0gbG9jYXRpb24gLSAxIH0sIGFjdGlvbnNbbG9jYXRpb25d
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChsb2NhdGlvbiA8IHNlcmlhbGl6ZWRBY3Rpb25zLnNpemUo
KSk7CisgICAgcmV0dXJuIDEgKyBWYXJpYW50RGVzZXJpYWxpemVyPEFjdGlvbkRhdGE+OjpzZXJp
YWxpemVkTGVuZ3RoKHNlcmlhbGl6ZWRBY3Rpb25zLnN1YnNwYW4obG9jYXRpb24gKyAxKSwgc2Vy
aWFsaXplZEFjdGlvbnNbbG9jYXRpb25dKTsKIH0KIAogVHJpZ2dlciBUcmlnZ2VyOjppc29sYXRl
ZENvcHkoKSBjb25zdApAQCAtMTE0LDggKzExMiw2IEBAIEFjdGlvbiBBY3Rpb246Omlzb2xhdGVk
Q29weSgpIGNvbnN0CiAgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KG1fZGF0YSkgfTsKIH0K
IAotfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMKIAogI2VuZGlm
IC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaAppbmRleCA1ZTA0YTYw
ZDkzNjJmMThmNGNkNzQ3OTM4YTE4YzA0ZmZkY2EyZTM5Li5lMmUzOTZkNGZlMWFjZTZkMTRmMzE0
OGQyN2I5ZTYyNTU3ZTA4MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgKQEAgLTEzOCw4ICsxMzgsOCBAQCBw
cml2YXRlOgogfTsKIAogc3RydWN0IERlc2VyaWFsaXplZEFjdGlvbiA6IHB1YmxpYyBBY3Rpb24g
ewotICAgIHN0YXRpYyBEZXNlcmlhbGl6ZWRBY3Rpb24gZGVzZXJpYWxpemUoY29uc3QgU2VyaWFs
aXplZEFjdGlvbkJ5dGUqIGFjdGlvbnMsIGNvbnN0IHVpbnQzMl90IGFjdGlvbnNMZW5ndGgsIHVp
bnQzMl90IGxvY2F0aW9uKTsKLSAgICBzdGF0aWMgc2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGgoY29u
c3QgU2VyaWFsaXplZEFjdGlvbkJ5dGUqIGFjdGlvbnMsIGNvbnN0IHVpbnQzMl90IGFjdGlvbnNM
ZW5ndGgsIHVpbnQzMl90IGxvY2F0aW9uKTsKKyAgICBzdGF0aWMgRGVzZXJpYWxpemVkQWN0aW9u
IGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4sIHVpbnQzMl90IGxvY2F0aW9uKTsKKyAg
ICBzdGF0aWMgc2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90PiwgdWlu
dDMyX3QgbG9jYXRpb24pOwogCiAgICAgdWludDMyX3QgYWN0aW9uSUQoKSBjb25zdCB7IHJldHVy
biBtX2FjdGlvbklEOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IDczMWE2OGU0
MjYxOTBkMzFkN2M1MWFlZDRhMjA3MTNkOGI1NDQyYjAuLmI4NGQ0MGJiYTM1NmQ3NmY0MGVkYjAx
MGY5ZjVhYTc0Y2UyZWUzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAtMTIxLDE1
ICsxMjEsMTQgQEAgYXV0byBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmFjdGlvbnNGb3JSZXNv
dXJjZUxvYWQoY29uc3QgUmVzb3VyY2VMb2FkSW5mbyYgcmUKIAogICAgICAgICBjb25zdCBDb21w
aWxlZENvbnRlbnRFeHRlbnNpb24mIGNvbXBpbGVkRXh0ZW5zaW9uID0gY29udGVudEV4dGVuc2lv
bi0+Y29tcGlsZWRFeHRlbnNpb24oKTsKICAgICAgICAgCi0gICAgICAgIERGQUJ5dGVjb2RlSW50
ZXJwcmV0ZXIgd2l0aG91dENvbmRpdGlvbnNJbnRlcnByZXRlcih7IGNvbXBpbGVkRXh0ZW5zaW9u
LmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCksIGNvbXBpbGVkRXh0ZW5zaW9uLmZp
bHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CisgICAgICAgIERGQUJ5
dGVjb2RlSW50ZXJwcmV0ZXIgd2l0aG91dENvbmRpdGlvbnNJbnRlcnByZXRlcihjb21waWxlZEV4
dGVuc2lvbi5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZSgpKTsKICAgICAgICAgREZB
Qnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyB3aXRob3V0Q29uZGl0aW9uc0FjdGlvbnMgPSB3
aXRob3V0Q29uZGl0aW9uc0ludGVycHJldGVyLmludGVycHJldCh1cmxDU3RyaW5nLCBmbGFncyk7
CiAgICAgICAgIAogICAgICAgICBVUkwgdG9wVVJMID0gcmVzb3VyY2VMb2FkSW5mby5tYWluRG9j
dW1lbnRVUkw7Ci0gICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0aENvbmRpdGlvbnNJ
bnRlcnByZXRlcih7IGNvbXBpbGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVj
b2RlKCksIGNvbXBpbGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlTGVu
Z3RoKCkgfSk7CisgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0aENvbmRpdGlvbnNJ
bnRlcnByZXRlcihjb21waWxlZEV4dGVuc2lvbi5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29k
ZSgpKTsKICAgICAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyB3aXRoQ29uZGl0
aW9uc0FjdGlvbnMgPSB3aXRoQ29uZGl0aW9uc0ludGVycHJldGVyLmludGVycHJldFdpdGhDb25k
aXRpb25zKHVybENTdHJpbmcsIGZsYWdzLCBjb250ZW50RXh0ZW5zaW9uLT50b3BVUkxBY3Rpb25z
KHRvcFVSTCkpOwogICAgICAgICAKLSAgICAgICAgY29uc3QgU2VyaWFsaXplZEFjdGlvbkJ5dGUq
IGFjdGlvbnMgPSBjb21waWxlZEV4dGVuc2lvbi5hY3Rpb25zKCk7Ci0gICAgICAgIGNvbnN0IHVu
c2lnbmVkIGFjdGlvbnNMZW5ndGggPSBjb21waWxlZEV4dGVuc2lvbi5hY3Rpb25zTGVuZ3RoKCk7
CisgICAgICAgIGF1dG8gc2VyaWFsaXplZEFjdGlvbnMgPSBjb21waWxlZEV4dGVuc2lvbi5zZXJp
YWxpemVkQWN0aW9ucygpOwogICAgICAgICAKICAgICAgICAgY29uc3QgVmVjdG9yPHVpbnQzMl90
PiYgdW5pdmVyc2FsV2l0aENvbmRpdGlvbnMgPSBjb250ZW50RXh0ZW5zaW9uLT51bml2ZXJzYWxB
Y3Rpb25zV2l0aENvbmRpdGlvbnModG9wVVJMKTsKICAgICAgICAgY29uc3QgVmVjdG9yPHVpbnQz
Ml90PiYgdW5pdmVyc2FsV2l0aG91dENvbmRpdGlvbnMgPSBjb250ZW50RXh0ZW5zaW9uLT51bml2
ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMoKTsKQEAgLTE0OCw3ICsxNDcsNyBAQCBhdXRv
IENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJlc291cmNlTG9hZChjb25zdCBS
ZXNvdXJjZUxvYWRJbmZvJiByZQogCiAgICAgICAgICAgICAvLyBBZGQgYWN0aW9ucyBpbiByZXZl
cnNlIG9yZGVyIHRvIHByb3Blcmx5IGRlYWwgd2l0aCBJZ25vcmVQcmV2aW91c1J1bGVzLgogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYWN0aW9uTG9jYXRpb25zLnNpemUoKTsgaTsgaS0t
KSB7Ci0gICAgICAgICAgICAgICAgYXV0byBhY3Rpb24gPSBEZXNlcmlhbGl6ZWRBY3Rpb246OmRl
c2VyaWFsaXplKGFjdGlvbnMsIGFjdGlvbnNMZW5ndGgsIGFjdGlvbkxvY2F0aW9uc1tpIC0gMV0p
OworICAgICAgICAgICAgICAgIGF1dG8gYWN0aW9uID0gRGVzZXJpYWxpemVkQWN0aW9uOjpkZXNl
cmlhbGl6ZShzZXJpYWxpemVkQWN0aW9ucywgYWN0aW9uTG9jYXRpb25zW2kgLSAxXSk7CiAgICAg
ICAgICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SWdub3JlUHJldmlvdXNSdWxl
c0FjdGlvbj4oYWN0aW9uLmRhdGEoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgYWN0aW9uc1N0
cnVjdC5zYXdJZ25vcmVQcmV2aW91c1J1bGVzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRl
bnRSdWxlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRS
dWxlTGlzdC5jcHAKaW5kZXggZjQ3NDE0ZTU3MzY1NjM4NjExZGMyNTM3ZjEwY2MwNDc1NmY3NzJh
OS4uMTlkZWNmNjc2OTQ5NGVmMzIxZjRjN2Y5YThkZDNhYTcxODY2YTZhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmNwcApAQCAt
NDksNDQgKzQ5LDMwIEBAIGJvb2wgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmNvbmRpdGlv
bnNBcHBseU9ubHlUb0RvbWFpbigpIGNvbnN0CiAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQzMl90Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YS5kYXRh
LT5kYXRhKCkpICsgbV9kYXRhLmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCk7CiB9
CiAKLWNvbnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSogV2ViQ29t
cGlsZWRDb250ZW50UnVsZUxpc3Q6OmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCkg
Y29uc3QKK1NwYW48Y29uc3QgdWludDhfdD4gV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmZp
bHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKj4o
bV9kYXRhLmRhdGEtPmRhdGEoKSkgKyBtX2RhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0
ZWNvZGVPZmZzZXQ7CisgICAgcmV0dXJuIHNwYW5XaXRoT2Zmc2V0QW5kTGVuZ3RoKG1fZGF0YS5m
aWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCwgbV9kYXRhLmZpbHRlcnNXaXRo
b3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZSk7CiB9CiAKLXVuc2lnbmVkIFdlYkNvbXBpbGVkQ29u
dGVudFJ1bGVMaXN0OjpmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZUxlbmd0aCgpIGNv
bnN0CitTcGFuPGNvbnN0IHVpbnQ4X3Q+IFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0OjpmaWx0
ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS5m
aWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemU7CisgICAgcmV0dXJuIHNwYW5XaXRo
T2Zmc2V0QW5kTGVuZ3RoKG1fZGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNl
dCwgbV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZSk7CiB9CiAKLWNvbnN0
IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSogV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3Q6OmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKCkgY29uc3QKK1NwYW48
Y29uc3QgdWludDhfdD4gV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OnRvcFVSTEZpbHRlcnNC
eXRlY29kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSo+KG1fZGF0YS5kYXRhLT5kYXRhKCkpICsg
bV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0OworICAgIHJldHVybiBz
cGFuV2l0aE9mZnNldEFuZExlbmd0aChtX2RhdGEudG9wVVJMRmlsdGVyc0J5dGVjb2RlT2Zmc2V0
LCBtX2RhdGEudG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZSk7CiB9CiAKLXVuc2lnbmVkIFdlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0OjpmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZUxlbmd0
aCgpIGNvbnN0CitTcGFuPGNvbnN0IHVpbnQ4X3Q+IFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0
OjpzZXJpYWxpemVkQWN0aW9ucygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS5maWx0ZXJz
V2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemU7CisgICAgcmV0dXJuIHNwYW5XaXRoT2Zmc2V0QW5k
TGVuZ3RoKG1fZGF0YS5hY3Rpb25zT2Zmc2V0LCBtX2RhdGEuYWN0aW9uc1NpemUpOwogfQogCi1j
b25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUqIFdlYkNvbXBpbGVk
Q29udGVudFJ1bGVMaXN0Ojp0b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdAorU3Bhbjxjb25z
dCB1aW50OF90PiBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6c3BhbldpdGhPZmZzZXRBbmRM
ZW5ndGgoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2Rl
Kj4obV9kYXRhLmRhdGEtPmRhdGEoKSkgKyBtX2RhdGEudG9wVVJMRmlsdGVyc0J5dGVjb2RlT2Zm
c2V0OwotfQotCi11bnNpZ25lZCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6dG9wVVJMRmls
dGVyc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kYXRhLnRvcFVSTEZp
bHRlcnNCeXRlY29kZVNpemU7Ci19Ci0KLWNvbnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpTZXJpYWxpemVkQWN0aW9uQnl0ZSogV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmFjdGlv
bnMoKSBjb25zdAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZEFjdGlvbkJ5dGUqPihtX2RhdGEuZGF0YS0+ZGF0YSgp
KSArIG1fZGF0YS5hY3Rpb25zT2Zmc2V0OwotfQotCi11bnNpZ25lZCBXZWJDb21waWxlZENvbnRl
bnRSdWxlTGlzdDo6YWN0aW9uc0xlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0YS5h
Y3Rpb25zU2l6ZTsKKyAgICBSRUxFQVNFX0FTU0VSVChvZmZzZXQgKyBsZW5ndGggPD0gbV9kYXRh
LmRhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KG1fZGF0YS5kYXRhLT5kYXRhKCkpICsgb2Zmc2V0LCBsZW5ndGggfTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3QuaAppbmRleCBkYTNkY2I3ZjBlOTEzN2M4OGUyODI5ZDViYjg2MmFiZmNmYzUz
OWE1Li45YmI5ZmZlZTMzODBlZmQ2ZTMwZTAyZTg1M2U0NTAyNmVhZWQ0YzE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgKQEAgLTQz
LDE3ICs0MywxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0KFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YSYmKTsKIAotICAgIGNvbnN0IFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSogZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zQnl0ZWNvZGUoKSBjb25zdCBmaW5hbDsKLSAgICB1bnNpZ25lZCBmaWx0ZXJzV2l0aG91
dENvbmRpdGlvbnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0IGZpbmFsOwotICAgIGNvbnN0IFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSogZmlsdGVyc1dpdGhDb25kaXRpb25z
Qnl0ZWNvZGUoKSBjb25zdCBmaW5hbDsKLSAgICB1bnNpZ25lZCBmaWx0ZXJzV2l0aENvbmRpdGlv
bnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0IGZpbmFsOwotICAgIGNvbnN0IFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSogdG9wVVJMRmlsdGVyc0J5dGVjb2RlKCkgY29uc3Qg
ZmluYWw7Ci0gICAgdW5zaWduZWQgdG9wVVJMRmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3Qg
ZmluYWw7CisgICAgU3Bhbjxjb25zdCB1aW50OF90PiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNC
eXRlY29kZSgpIGNvbnN0IGZpbmFsOworICAgIFNwYW48Y29uc3QgdWludDhfdD4gZmlsdGVyc1dp
dGhDb25kaXRpb25zQnl0ZWNvZGUoKSBjb25zdCBmaW5hbDsKKyAgICBTcGFuPGNvbnN0IHVpbnQ4
X3Q+IHRvcFVSTEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0IGZpbmFsOworICAgIFNwYW48Y29uc3Qg
dWludDhfdD4gc2VyaWFsaXplZEFjdGlvbnMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNvbmRp
dGlvbnNBcHBseU9ubHlUb0RvbWFpbigpIGNvbnN0IGZpbmFsOwogICAgIAotICAgIGNvbnN0IFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkQWN0aW9uQnl0ZSogYWN0aW9ucygp
IGNvbnN0IGZpbmFsOwotICAgIHVuc2lnbmVkIGFjdGlvbnNMZW5ndGgoKSBjb25zdCBmaW5hbDsK
LSAgICAKKyAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW5XaXRoT2Zmc2V0QW5kTGVuZ3RoKHNp
emVfdCwgc2l6ZV90KSBjb25zdDsKKwogICAgIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YSBtX2RhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggNjc5YWUzZWExOWRhYWVlYzFiYTg3OWU1OTZhN2JjYTY3MzAwMzI2OC4uNThk
MDhmZDdmM2I0OWVkMDkzZWRlODM0ZDI2YWQzNTEwM2Y4OWNlNiAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEy
LTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgVXNlIFNwYW4gaW5zdGVhZCBvZiBwb2ludGVyL2xlbmd0aCBpbiBDb21waWxlZENvbnRlbnRF
eHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzcyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKwog
MjAyMS0xMi0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFkZCBjc3AtcmVwb3J0IHJlc291cmNlIHR5cGUgdG8gV0tDb250ZW50UnVsZUxp
c3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50
RXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVu
dEV4dGVuc2lvbnMuY3BwCmluZGV4IDFiNDNkYzg2OTJjYmM2NDk3MWMxN2RmMDQzYTk4OTQ5MWFm
YjUzYmQuLmNkMWIwODk5NTdmZjFlYjI4NWY1ZGY1ZDllNzhhMDdlNmUwMzcxOGIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNp
b25zLmNwcApAQCAtMTQzLDE0ICsxNDMsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IENvbXBpbGVk
Q29udGVudEV4dGVuc2lvbkRhdGEmIGRhdGEoKSB7IHJldHVybiBtX2RhdGE7IH07CiAKIHByaXZh
dGU6Ci0gICAgY29uc3QgQ29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRBY3Rpb25CeXRlKiBh
Y3Rpb25zKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kYXRhLmFjdGlvbnMuZGF0YSgpOyB9Ci0g
ICAgdW5zaWduZWQgYWN0aW9uc0xlbmd0aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGF0YS5h
Y3Rpb25zLnNpemUoKTsgfQotICAgIGNvbnN0IENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29k
ZSogZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2RhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zLmRhdGEoKTsgfQotICAgIHVuc2lnbmVk
IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9kYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucy5zaXplKCk7IH0KLSAgICBjb25z
dCBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUqIGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5
dGVjb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9u
cy5kYXRhKCk7IH0KLSAgICB1bnNpZ25lZCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZUxl
bmd0aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnMu
c2l6ZSgpOyB9Ci0gICAgY29uc3QgQ29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKiB0b3BV
UkxGaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RhdGEudG9wVVJMRmls
dGVycy5kYXRhKCk7IH0KLSAgICB1bnNpZ25lZCB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVMZW5ndGgo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RhdGEudG9wVVJMRmlsdGVycy5zaXplKCk7IH0KKyAg
ICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNlcmlhbGl6ZWRBY3Rpb25zKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4geyBtX2RhdGEuYWN0aW9ucy5kYXRhKCksIG1fZGF0YS5hY3Rpb25zLnNpemUoKSB9OyB9
CisgICAgU3Bhbjxjb25zdCB1aW50OF90PiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29k
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgbV9kYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9u
cy5kYXRhKCksIG1fZGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnMuc2l6ZSgpIH07IH0KKyAg
ICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4geyBtX2RhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zLmRhdGEoKSwg
bV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9ucy5zaXplKCkgfTsgfQorICAgIFNwYW48Y29uc3Qg
dWludDhfdD4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyBt
X2RhdGEudG9wVVJMRmlsdGVycy5kYXRhKCksIG1fZGF0YS50b3BVUkxGaWx0ZXJzLnNpemUoKSB9
OyB9CiAgICAgYm9vbCBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4oKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2RhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOyB9CiAKICAgICBJbk1l
bW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbihDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRh
JiYgZGF0YSkK
</data>
<flag name="review"
          id="470851"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>