1 Resumen

Este documento muestra los resultados preliminares de un análisis realizado en el campo Cuitláhuac, incluido en un potencial contrato CSIEE para Pemex.

El contenido del análisis comprende:

  • Datos del campo
  • Plan de desarrollo de Referencia (Contrato CSIEE)
  • Reservas (Datos oficiales)
  • Resultados del modelo de Pronóstico de Producción

El modelo de Pronóstico de Producción se ejecuta en dos modalidades (Campo y pozos) y estima las reservas probadas desarrolladas del campo.

Adicionalmente, el modelo permite estimar las reservas probadas desarrolladas tomando en consideración el estado de los pozos a la fecha actual de producción, ello permite segregar las reservas en dos subclases:

  • Reservas probadas desarrolladas en producción (pozos activos con produccion a la fecha del análisis)
  • Reservas probadas desarrolladas no-producción (pozos cerrados a la fecha del análisis)

Desde el punto de vista del valor remanente del campo, las reservas probadas desarrolladas en producción representan el valor actual con el menor riesgo, por otra parte, las reservas probadas desarrolladas no-producción podrían tener cierto valor, siempre que los pozos puedan ser reincorporadas a la producción a través de inversiones de capital que posean la rentabilidad apropiada.

Para el caso del campo Cuitláhuac, un resumen de los resultados del modelo se exponen a continuación:

  • Número de pozos del campo: 477

  • Fecha de inicio de producción: 1950-05-22

  • Fecha actual de producción: 2020-05-30

  • Producción estimada plan de desarrollo de Referencia: 218.2 MMMpc

  • Reservas oficiales certificadas @ 1 de enero de 2020:

    1P: 121.2 MMMpc
    2P: 193.1 MMMpc
    3P: 224.5 MMMpc

  • Pronóstico de Producción (modelo) de reservas probadas desarrolladas (1P)

    Campo: 219 MMMpc
    Pozos: 244 MMMpc

  • Pronóstico de Producción (modelo pozos) de reservas probadas desarrolladas segregadas según subclases

    • Para los 173 pozos activos es 121 MMMpc (Reservas probadas desarrolladas en producción, pozos activos)
    • Para los 175 pozos cerrados es 124 MMMpc (Reservas probadas desarrolladas no-producción, pozos cerrados)

En el resto del documento se muestran algunos datos adicionales.

2 Datos del campo

Field: CUITLAHUAC
Pozos Fecha inicio producción Fecha actual producción
477 1950-05-22 2020-05-30
Note:
Pozos: número total de pozos del campo

3 Plan de desarrollo de Referencia (Contrato CSIEE)

Field: CUITLAHUAC Producción estimada acumulada del campo - Plan de desarrollo de Referencia (Contrato CSIEE)
Gas Natural Gas Neto Km 19 Condensado Km 19
218.2 173.5 3.9
Note:
Todas las unidades están expresadas en miles de millones de pies cúbicos (MMMpc)

3.1 Observaciones:

  • Se estima que el plan de desarrollo de referencia tendrá una producción acumulada de 218.2 MMMpc

4 Reservas (Datos oficiales)

Field: CUITLAHUAC Reservas oficiales
Categoria Reservas OGIP Fr (%) Reservas PCE Ng
1P 1014.4 94 121.2 22.7 827.9
2P 1067.3 96 193.1 36.2
3P 1222.5 86 224.5 42.1
Note:
OGIP: Volumen original de gas en sitio
FR: Factor de recuperacion
Reservas: Reservas oficiales del campo (Reservas certificadas al 1 de enero de 2020)
PCE: Petroleo crudo equivalente
Ng: Produccion acumulada de gas natural (Corte de producción a 31 de diciembre de 2019)
Todas las unidades están expresadas en miles de millones de pies cúbicos (MMMpc)

4.1 Observaciones:

  • El plan de desarrollo producira 218.2 MMMpc y las reservas 3P son 224.5 MMMpc
  • El plan de desarrollo produciría alrededor del 97 % de las reservas 3P

5 Resultados Modelo Pronóstico de Producción - Sumario I

Field: CUITLAHUAC Sumario Modelo Pronóstico de Producción
Id Parameters byField byWells
1 Production @ 2021-03-01 838 737
2 Forecast Production @ 2036-03-01 1058 982
3 Proved Developed Reserves 219 244
Note:
Resultados del modelo: byWells & byField
Production: producción acumulada de gas
Forecast Production: pronóstico de producción del sistema
Proved Developed Reserves: reservas probadas desarrolladas
Production data source: CNH
Todas las unidades están expresadas en miles de millones de píes cúbico (MMMcf)

5.1 Observaciones:

  • El modelo de pronóstico de producción utiliza dos modalidades para estimar las reservas probadas desarrolladas:
    • Modelo campo: 219 MMMpc
    • Modelo pozos: 244 MMMpc

6 Resultados Modelo Pronóstico de Producción - Sumario II

Field: CUITLAHUAC Proved Reserves @ 2036-03-01
Reserves.Status Wells Production Forecast.Production Reserves
1.Producing 173 407 528 121
2.Non-producing 175 313 437 124
3.Model 13 17 17 0
Note:
Producing: Proved Developed producing reserves
Non-producing: Proved Developed non-producing reserves
Wells: number of wells
Production: Accumulated gas production
Forecast Production: Accumulated forecast gas production
Reserves: Proved developed Reserves
Todas las unidades están expresadas en miles de millones de pies cúbicos (MMMpc)

6.1 Observaciones:

  • Las reservas probadas desarrolladas estimadas por el modelo:
    • Para los 173 pozos activos es 121 MMMpc
    • Para los 175 pozos cerrados es 124 MMMpc
LS0tCnRpdGxlOiAiTW9kZWxvIGRlIFByb27Ds3N0aWNvIGRlIFByb2R1Y2Npw7NuOiBjYW1wbyBDdWl0bGFodWFjIgphdXRob3I6ICJFdWxlckVuZXJneUBnbWFpbC5jb20iCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCIKb3V0cHV0OiAKICBodG1sX25vdGVib29rOiAKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwogICAgaGlnaGxpZ2h0OiBrYXRlCiAgICB0aGVtZTogdW5pdGVkCiAgICBjc3M6IH4vRG9jdW1lbnRzL3BmbV9tYXN0ZXIvc3JjL3N0eWxlLmNzcwogICAgY29kZV9mb2xkaW5nOiBoaWRlCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcwotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEYsIG1lc3NhZ2UgPSBGLCByZXN1bHRzID0gJ2hpZGUnLCB3YXJuaW5nID0gRikKYGBgCgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQpybShsaXN0ID0gbHMoKSkKIwojIGxvYWQgZnVuY3Rpb25zIAojCnNldHdkKCJ+L0RvY3VtZW50cy9wZm1fbWFzdGVyL1IiKQpmaWxlcy5zb3VyY2VzID0gbGlzdC5maWxlcygpCnNhcHBseShmaWxlcy5zb3VyY2VzLCBzb3VyY2UpCgojIGRlZmluZSBDYXB0aW9uIG9iamVjdCAgCkNhcHRpb24gPSBwYXN0ZSgiRXVsZXJFbmVyZ3kiLCBTeXMuRGF0ZSgpKSAKYGBgCgoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0Kc2V0d2QoIn4vRG9jdW1lbnRzL3BmbV9tYXN0ZXIvZGF0YS9wcm9jZXNzZWQvbXgiKQp3cGQgPC0gcmVhZFJEUygid3BkLlJEUyIpCmBgYAoKCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGluY2x1ZGU9RkFMU0V9CnNldHdkKCJ+L0RvY3VtZW50cy9wZm1fbWFzdGVyLzUwMC5DdWl0bGFodWFjL2RvYy8wMl9CYXNlc19QRVAtQ0FULVMtR0NQLTUwMS05MTAzNS0yMS0xIFBhcnRlIDEvU2VjY2nCom4gMiBJbmZvcm1hY2nCom4gdMOHY25pY2EgZGVsIHByb3llY3RvIikKd2QgPC0gcmVhZF9leGNlbCgiMi4xLi0gQXBlbmRpY2UgMi4xIEZvcm1hdG8gMTAgQ05JSCAgQ3VpdGzigKBodWFjLnhsc3giKQpjb2xuYW1lcyh3ZCkKCnBkIDwtIHJlYWRfZXhjZWwoIn4vRG9jdW1lbnRzL3BmbV9tYXN0ZXIvNTAwLkN1aXRsYWh1YWMvZGF0YS9wZF9jdWl0bGFodWFjLnhsc3giLCAKICAgIGNvbF90eXBlcyA9IGMoIm51bWVyaWMiLCAibnVtZXJpYyIsICJudW1lcmljIiwgCiAgICAgICAgIm51bWVyaWMiLCAic2tpcCIpLCBza2lwID0gMSkKYGBgCgpgYGB7ciBlY2hvPUZBTFNFfQpjb2xuIDwtIGMoIm51bSIsICJuaXBlcCIsICJ1d2kiLCAid2VsbF9uYW1lIiwgImFsaWFzIiwgInR0IiwgImNsYXMiLCAiZmlwIiwgInBmcCIsCiAgICAgICAgICAicGl0IiwgInBmdCIsICJwdiIsICJwZCIsICJ4YyIsICJ5YyIsICJ4IiwgInkiLCAienV0bSIsICJmdmMiLCAKICAgICAgICAgICJlc3QiLCAiYXNpZyIsICJtaWciLCAiY29tIiwgImZwIikKY29sbmFtZXMod2QpIDwtIGNvbG4KYGBgCgpgYGB7cn0KZmllbGRfYW5hbHl6ZSA8LSAiY3VpdGxhaHVhYyIKCiMgZGVmaW5lIFRpdGxlIG9iamVjdApUaXRsZSA9IHBhc3RlKCJGaWVsZDoiLCB0b3VwcGVyKGZpZWxkX2FuYWx5emUpKQoKZnB0ID0gMTgwCnltbWQgPSAzMC40MTY2NwpgYGAKCiMgUmVzdW1lbiAgICAKCkVzdGUgZG9jdW1lbnRvIG11ZXN0cmEgbG9zIHJlc3VsdGFkb3MgcHJlbGltaW5hcmVzIGRlIHVuIGFuw6FsaXNpcyByZWFsaXphZG8gZW4gZWwgY2FtcG8gQ3VpdGzDoWh1YWMsIGluY2x1aWRvIGVuIHVuIHBvdGVuY2lhbCBjb250cmF0byBDU0lFRSBwYXJhIFBlbWV4LiAKCkVsIGNvbnRlbmlkbyBkZWwgYW7DoWxpc2lzIGNvbXByZW5kZTogICAKCi0gRGF0b3MgZGVsIGNhbXBvICAKLSBQbGFuIGRlIGRlc2Fycm9sbG8gZGUgUmVmZXJlbmNpYSAoQ29udHJhdG8gQ1NJRUUpICAKLSBSZXNlcnZhcyAoRGF0b3Mgb2ZpY2lhbGVzKSAgCi0gUmVzdWx0YWRvcyBkZWwgbW9kZWxvIGRlIFByb27Ds3N0aWNvIGRlIFByb2R1Y2Npw7NuICAgCgpFbCBtb2RlbG8gZGUgUHJvbsOzc3RpY28gZGUgUHJvZHVjY2nDs24gc2UgZWplY3V0YSBlbiBkb3MgbW9kYWxpZGFkZXMgKENhbXBvIHkgcG96b3MpIHkgZXN0aW1hIGxhcyAqKnJlc2VydmFzIHByb2JhZGFzIGRlc2Fycm9sbGFkYXMqKiBkZWwgY2FtcG8uIAoKQWRpY2lvbmFsbWVudGUsIGVsIG1vZGVsbyBwZXJtaXRlIGVzdGltYXIgbGFzIHJlc2VydmFzIHByb2JhZGFzIGRlc2Fycm9sbGFkYXMgdG9tYW5kbyBlbiBjb25zaWRlcmFjacOzbiBlbCBlc3RhZG8gZGUgbG9zIHBvem9zIGEgbGEgZmVjaGEgYWN0dWFsIGRlIHByb2R1Y2Npw7NuLCBlbGxvIHBlcm1pdGUgc2VncmVnYXIgbGFzIHJlc2VydmFzIGVuIGRvcyBzdWJjbGFzZXM6ICAKCi0gKipSZXNlcnZhcyBwcm9iYWRhcyBkZXNhcnJvbGxhZGFzIGVuIHByb2R1Y2Npw7NuKiogKHBvem9zIGFjdGl2b3MgY29uIHByb2R1Y2Npb24gYSBsYSBmZWNoYSBkZWwgYW7DoWxpc2lzKSAgIAotICoqUmVzZXJ2YXMgcHJvYmFkYXMgZGVzYXJyb2xsYWRhcyBuby1wcm9kdWNjacOzbioqIChwb3pvcyBjZXJyYWRvcyBhIGxhIGZlY2hhIGRlbCBhbsOhbGlzaXMpICAgCgpEZXNkZSBlbCBwdW50byBkZSB2aXN0YSBkZWwgKip2YWxvciByZW1hbmVudGUqKiBkZWwgY2FtcG8sIGxhcyAqKnJlc2VydmFzIHByb2JhZGFzIGRlc2Fycm9sbGFkYXMgZW4gcHJvZHVjY2nDs24qKiByZXByZXNlbnRhbiBlbCB2YWxvciBhY3R1YWwgY29uIGVsIG1lbm9yIHJpZXNnbywgcG9yIG90cmEgcGFydGUsIGxhcyAqKnJlc2VydmFzIHByb2JhZGFzIGRlc2Fycm9sbGFkYXMgbm8tcHJvZHVjY2nDs24qKiBwb2Ryw61hbiB0ZW5lciBjaWVydG8gdmFsb3IsIHNpZW1wcmUgcXVlIGxvcyBwb3pvcyBwdWVkYW4gc2VyIHJlaW5jb3Jwb3JhZGFzIGEgbGEgcHJvZHVjY2nDs24gYSB0cmF2w6lzIGRlIGludmVyc2lvbmVzIGRlIGNhcGl0YWwgcXVlIHBvc2VhbiBsYSByZW50YWJpbGlkYWQgYXByb3BpYWRhLiAgIAoKUGFyYSBlbCBjYXNvIGRlbCBjYW1wbyBDdWl0bMOhaHVhYywgdW4gKipyZXN1bWVuIGRlIGxvcyByZXN1bHRhZG9zIGRlbCBtb2RlbG8qKiBzZSBleHBvbmVuIGEgY29udGludWFjacOzbjogICAKCi0gTsO6bWVybyBkZSBwb3pvcyBkZWwgY2FtcG86ICoqNDc3KiogICAJIAotIEZlY2hhIGRlIGluaWNpbyBkZSBwcm9kdWNjacOzbjogKioxOTUwLTA1LTIyKioJIAotIEZlY2hhIGFjdHVhbCBkZSBwcm9kdWNjacOzbjogKioyMDIwLTA1LTMwKiogICAKLSBQcm9kdWNjacOzbiBlc3RpbWFkYSBwbGFuIGRlIGRlc2Fycm9sbG8gZGUgUmVmZXJlbmNpYTogKioyMTguMiBNTU1wYyoqCi0gUmVzZXJ2YXMgb2ZpY2lhbGVzIGNlcnRpZmljYWRhcyBAIDEgZGUgZW5lcm8gZGUgMjAyMDogICAKCiAgMVA6ICoqMTIxLjIgTU1NcGMqKiAgICAgCiAgMlA6ICoqMTkzLjEgTU1NcGMqKiAgICAgCiAgM1A6ICoqMjI0LjUgTU1NcGMqKiAgICAgIAoKLSBQcm9uw7NzdGljbyBkZSBQcm9kdWNjacOzbiAobW9kZWxvKSBkZSByZXNlcnZhcyBwcm9iYWRhcyBkZXNhcnJvbGxhZGFzICgxUCkgICAgIAoKICBDYW1wbzogICoqMjE5CU1NTXBjKiogICAKICBQb3pvczogICoqMjQ0IE1NTXBjKiogICAKICAKLSBQcm9uw7NzdGljbyBkZSBQcm9kdWNjacOzbiAobW9kZWxvIHBvem9zKSBkZSByZXNlcnZhcyBwcm9iYWRhcyBkZXNhcnJvbGxhZGFzIHNlZ3JlZ2FkYXMgc2Vnw7puICoqc3ViY2xhc2VzKiogICAgIAoKICAtIFBhcmEgbG9zICoqMTczIHBvem9zIGFjdGl2b3MqKiBlcyAqKjEyMSBNTU1wYyoqIChSZXNlcnZhcyBwcm9iYWRhcyBkZXNhcnJvbGxhZGFzIGVuIHByb2R1Y2Npw7NuLCBwb3pvcyBhY3Rpdm9zKSAgICAKICAtIFBhcmEgbG9zICoqMTc1IHBvem9zIGNlcnJhZG9zKiogZXMgKioxMjQgTU1NcGMqKiAoUmVzZXJ2YXMgcHJvYmFkYXMgZGVzYXJyb2xsYWRhcyBuby1wcm9kdWNjacOzbiwgcG96b3MgY2VycmFkb3MpICAgIAogIApFbiBlbCByZXN0byBkZWwgZG9jdW1lbnRvIHNlIG11ZXN0cmFuIGFsZ3Vub3MgZGF0b3MgYWRpY2lvbmFsZXMuICAgCgojIERhdG9zIGRlbCBjYW1wbwoKYGBge3J9CmR1bW15IDwtIHdkICU+JSBncm91cF9ieSh3ZWxsX25hbWUpICU+JSAKICBzdW1tYXJpc2UobncgPSBucm93KHdkKSwgCiAgICAgICAgICAgIGZpcCA9IG1pbihmaXAsIG5hLnJtID0gVCksIAogICAgICAgICAgICBwZnAgPSBtYXgocGZwLCBuYS5ybSA9IFQpKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgc3VtbWFyaXNlKFBvem9zID0gdW5pcXVlKG53KSwKICAgICAgICAgICAgIkZlY2hhIGluaWNpbyBwcm9kdWNjacOzbiIgPSBtaW4oZmlwLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAiRmVjaGEgYWN0dWFsIHByb2R1Y2Npw7NuIiA9IG1heChwZnAsIG5hLnJtID0gVCkpCgpwcmludC50YWJsZShkdW1teSwgVGl0bGUsIDEsIAogICAgICAgICAgICAiUG96b3M6IG7Dum1lcm8gdG90YWwgZGUgcG96b3MgZGVsIGNhbXBvIikgCmBgYAoKIyBQbGFuIGRlIGRlc2Fycm9sbG8gZGUgUmVmZXJlbmNpYSAoQ29udHJhdG8gQ1NJRUUpCgpgYGB7cn0KcGQgPC0gcGQgJT4lIG11dGF0ZSh0ID0gMTpuKCkpCnBkbyA8LSBwZCAlPiUgCiAgc3VtbWFyaXNlKGduID0gc3VtKGduLCBuYS5ybSA9IFQpICogeW1tZC8xMDAwLAogICAgICAgICAgICAgICAgIGduMTkgPSBzdW0oZ24xOSwgbmEucm0gPSBUKSAqIHltbWQvMTAwMCwKICAgICAgICAgICAgICAgICBjb24xOSA9IHN1bShjb24xOSwgbmEucm0gPSBUKSAqIHltbWQvMTAwMCkgJT4lCiAgbXV0YXRlX2lmKGlzLm51bWVyaWMsIHJvdW5kLCAxKQp0aXRsZSA8LSBwYXN0ZShUaXRsZSwgIlxuUHJvZHVjY2nDs24gZXN0aW1hZGEgYWN1bXVsYWRhIGRlbCBjYW1wbyAtIFBsYW4gZGUgZGVzYXJyb2xsbyBkZSBSZWZlcmVuY2lhIChDb250cmF0byBDU0lFRSkiKQpwZG8gPC0gcGRvICU+JSByZW5hbWUoIkdhcyBOYXR1cmFsIiA9IGduLCAiR2FzIE5ldG8gS20gMTkiID0gZ24xOSwgIkNvbmRlbnNhZG8gS20gMTkiID0gY29uMTkpCnByaW50LnRhYmxlKHBkbywgdGl0bGUsIDEsIAogICAgICAgICAgICAiVG9kYXMgbGFzIHVuaWRhZGVzIGVzdMOhbiBleHByZXNhZGFzIGVuIG1pbGVzIGRlIG1pbGxvbmVzIGRlIHBpZXMgY8O6Ymljb3MgKE1NTXBjKSIpIApgYGAKCiMjIE9ic2VydmFjaW9uZXM6CgotIFNlIGVzdGltYSBxdWUgZWwgcGxhbiBkZSBkZXNhcnJvbGxvIGRlIHJlZmVyZW5jaWEgdGVuZHLDoSB1bmEgcHJvZHVjY2nDs24gYWN1bXVsYWRhIGRlICoqMjE4LjIgTU1NcGMqKgoKIyBSZXNlcnZhcyAoRGF0b3Mgb2ZpY2lhbGVzKQoKYGBge3J9CnJlYyA8LSB0aWJibGUoIkNhdGVnb3JpYSBSZXNlcnZhcyIgPSBjKCIxUCIsICIyUCIsICIzUCIpLCAKICAgICAgICAgICAgICAiT0dJUCIgPSBjKDEwMTQuNCwgMTA2Ny4zLCAxMjIyLjUpLAogICAgICAgICAgICAgICJGciAoJSkiID0gYyg5NCwgOTYsIDg2KSwKICAgICAgICAgICAgICAiUmVzZXJ2YXMiID0gYygxMjEuMiwgMTkzLjEsIDIyNC41KSwKICAgICAgICAgICAgICAiUENFIiA9IGMoMjIuNywgMzYuMiwgNDIuMSksCiAgICAgICAgICAgICAgIk5nIiA9IGMoODI3LjksICIiLCAiIikpCgp0aXRsZSA8LSBwYXN0ZShUaXRsZSwgIlxuUmVzZXJ2YXMgb2ZpY2lhbGVzIikKcHJpbnQudGFibGUocmVjLCB0aXRsZSwgMSwgCiAgICAgICAgICAgICJPR0lQOiBWb2x1bWVuIG9yaWdpbmFsIGRlIGdhcyBlbiBzaXRpbwogICAgICAgICAgICBGUjogRmFjdG9yIGRlIHJlY3VwZXJhY2lvbgogICAgICAgICAgICBSZXNlcnZhczogUmVzZXJ2YXMgb2ZpY2lhbGVzIGRlbCBjYW1wbyAoUmVzZXJ2YXMgY2VydGlmaWNhZGFzIGFsIDEgZGUgZW5lcm8gZGUgMjAyMCkKICAgICAgICAgICAgUENFOiBQZXRyb2xlbyBjcnVkbyBlcXVpdmFsZW50ZQogICAgICAgICAgICBOZzogUHJvZHVjY2lvbiBhY3VtdWxhZGEgZGUgZ2FzIG5hdHVyYWwgKENvcnRlIGRlIHByb2R1Y2Npw7NuIGEgMzEgZGUgZGljaWVtYnJlIGRlIDIwMTkpCiAgICAgICAgICAgIFRvZGFzIGxhcyB1bmlkYWRlcyBlc3TDoW4gZXhwcmVzYWRhcyBlbiBtaWxlcyBkZSBtaWxsb25lcyBkZSBwaWVzIGPDumJpY29zIChNTU1wYykiKSAKYGBgCgojIyBPYnNlcnZhY2lvbmVzOgoKLSBFbCBwbGFuIGRlIGRlc2Fycm9sbG8gcHJvZHVjaXJhICoqMjE4LjIgTU1NcGMqKiB5IGxhcyByZXNlcnZhcyAzUCBzb24gKioyMjQuNSBNTU1wYyoqCi0gRWwgcGxhbiBkZSBkZXNhcnJvbGxvIHByb2R1Y2lyw61hIGFscmVkZWRvciBkZWwgKio5NyAlKiogZGUgbGFzIHJlc2VydmFzIDNQCgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojIyAxLiBmdW5fd2VsbHMuZmllbGQuZGF0YQp3ZWxscy5maWVsZC5kYXRhIDwtIGZ1bmN0aW9uKGRhdGEsIEZpZWxkKSAKewogIGRhdGEgJT4lCiAgICBkcGx5cjo6ZmlsdGVyKGZpZWxkX2FuYWx5emUgPT0gZmllbGQpICU+JQogICAgZHBseXI6OnNlbGVjdChmaWVsZCwgd2VsbF9uYW1lID0gd2VsbCwgZGF0ZSA9IHdwZCwgeWVhciwgCiAgICAgICAgICAgICAgICAgIG1vbnRoID0gbW9udGhzLCBkYXlzLCBxID0gZG5hZ3AsIGR3cCkgJT4lCiAgICBkcGx5cjo6YXJyYW5nZSh3ZWxsX25hbWUsIGRhdGUpCn0KCiMgcmVtb3ZlIHdlbGwgCmRmIDwtIHdlbGxzLmZpZWxkLmRhdGEod3BkLCBmaWVsZF9hbmFseXplKSAlPiUKICBncm91cF9ieSh3ZWxsX25hbWUpICU+JQogIGZpbHRlcighYW55KHdlbGxfbmFtZSA9PSAiQ1VJVExBSFVBQy02ODIiKSkgJT4lCiAgdW5ncm91cCgpCgpkYWQgPC0gbWF4KHdwZCR3cGQsIG5hLnJtID0gVCkgICMgZGF0YSBhY3R1YWwgZGF0ZSAKZmFkIDwtIG1heChkZiRkYXRlLCBuYS5ybSA9IFQpICAjIEZpZWxkIGFjdHVhbCBwcm9kdWN0aW9uIGRhdGUKcGZtZCA8LSBmYWQgKyBtb250aHMoZnB0KSAgICAgICAjIFByb2R1Y3Rpb24gZm9yZWNhc3QgbW9kZWwgZGF0ZQoKd2VsbF9zdGF0dXMgPC0gZGYgJT4lIGdyb3VwX2J5KHdlbGxfbmFtZSkgJT4lIAogIHN1bW1hcmlzZShwbSA9IG4oKSwgCiAgICAgICAgICAgIHNwZCA9IG1pbihkYXRlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICBhcGQgPSBtYXgoZGF0ZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgUSA9IHJvdW5kKHN1bShxICogZGF5cywgbmEucm0gPSBUKSwgMCkgLyAxMDAwCiAgICAgICAgICAgICkgJT4lCiAgdW5ncm91cCgpICU+JQogIG11dGF0ZShzdGF0dXMgPSBpZl9lbHNlKGFwZCA9PSBmYWQsICJBY3RpdmUiLCAiQ2xvc2VkIikpICU+JQogIGFycmFuZ2UoZGVzYyhRKSwgc3RhdHVzLCB3ZWxsX25hbWUpCgojIyBQRk0gcmVzdWx0cyAKc3RhcnRfdGltZSA8LSBTeXMudGltZSgpCiMgcmVtb3ZlIHdlbGwgCmRmIDwtIHdwZCAlPiUgZmlsdGVyKCFhbnkod2VsbCA9PSAiQ1VJVExBSFVBQy02ODIiKSkKb3V0IDwtIHdlbGxzLmZpZWxkLm1vZGVsKGRmKQpmdHd2IDwtIG91dCRmdHd2CndxUWYgPC0gb3V0JHdxUWYKZmFwZCA8LSBvdXQkZmFwZApmZG1lIDwtIG91dCRmZG1lCnFlIDwtIG91dCRxZQp3ZWxsX3N0YXR1c19zdW0gPC0gb3V0JHdlbGxfc3RhdHVzX3N1bQoKIyBmdW5jdGlvbiB0byBwdXQgTkEgdmFsdWUgdG8gZGF0ZSBpZiBxIHZhbHVlIGlzIE5BCm5hX2RhdGUgPC0gZnVuY3Rpb24oZGF0ZSwgcSkgewogIHggPSBpZl9lbHNlKGlzLm5hKHEpLCB5bWQoTkEpLCB5bWQoZGF0ZSkpICAKfQoKIyByZW1vdmUgd3JvbmcgZGF0ZSAKZDIgPC0gd3FRZiAlPiUgCiAgZ3JvdXBfYnkod2VsbF9uYW1lKSAlPiUgCiAgbXV0YXRlKGRhdGUgPSBuYV9kYXRlKGRhdGUsIHEpKQpuYW1lcyhkMikKCiMgZmlsdGVyIG91dCBxIGVxdWFsIE5BCmQzIDwtIGQyICU+JSAKICBncm91cF9ieSh3ZWxsX25hbWUpICU+JSAKICBmaWx0ZXIoaXMubmEocSkpICU+JSAKICB1bmdyb3VwKCkgJT4lCiAgc2VsZWN0KHdlbGxfbmFtZSwgdG4gPSB0KQoKIyBmdW5jdGlvbiB0byBleHRyYWN0IGxhc3QgZGF0ZSBwcm9kdWN0aW9uIApleHRyYWN0X2xhc3RfcHJvZF9kYXRlIDwtIGZ1bmN0aW9uKHgpIHsKICB4ID0gbWF4KHgsIG5hLnJtID0gVCkKfQoKIyBleHRyYWN0IGxhc3QgZGF0ZSBwcm9kdWN0aW9uIApkNCA8LSBkMiAlPiUgCiAgZ3JvdXBfYnkod2VsbF9uYW1lKSAlPiUgCiAgbXV0YXRlKGRhX21heCA9IGV4dHJhY3RfbGFzdF9wcm9kX2RhdGUoZGF0ZSkpICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgc2VsZWN0KHdlbGxfbmFtZSwgZGFfbWF4LCB0LCBxKQoKIyBhZGQgbnVtYmVyIG9mIG1vbnRocyB0byBkYXRlIApkNSA8LSBkNCAlPiUgCiAgZ3JvdXBfYnkod2VsbF9uYW1lKSAlPiUKICBmaWx0ZXIoaXMubmEocSkpICU+JQogIG11dGF0ZSh0cCA9IDE6bigpKSAlPiUgCiAgbXV0YXRlKGRhdGUxID0gZGFfbWF4ICVtKyUgbW9udGhzKHRwKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIHNlbGVjdCh3ZWxsX25hbWUsIHQsIGRhdGUxKQoKIyBqb2luIGQyICYgZDUKZDYgPC0gCiAgZnVsbF9qb2luKGQyLCBkNSkgJT4lCiAgZGlzdGluY3QodCwgLmtlZXBfYWxsID0gVCkgJT4lCiAgYXJyYW5nZSh3ZWxsX25hbWUsIHQpCgojIGNvcnJlY3RlZCBkYXRlICAKZDcgPC0gZDYgJT4lIAogIG11dGF0ZShkYXRlMiA9IGlmX2Vsc2UoaXMubmEoZGF0ZSksIGRhdGUxLCBkYXRlKSkgJT4lCiAgc2VsZWN0KC1kYXRlLCAtZGF0ZTEpICU+JQogIHJlbmFtZShkYXRlID0gZGF0ZTIpCgojIGNoYW5nZSBuYW1lICAKd3FRZiA8LSBkNwpgYGAKCiMgUmVzdWx0YWRvcyBNb2RlbG8gUHJvbsOzc3RpY28gZGUgUHJvZHVjY2nDs24gLSBTdW1hcmlvIEkKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CndxUWYgPC0gd3FRZiAlPiUKICBncm91cF9ieSh3ZWxsX25hbWUpICU+JQogIGZpbHRlcighYW55KHdlbGxfbmFtZSA9PSAiQ1VJVExBSFVBQy02ODIiKSkgJT4lCiAgdW5ncm91cCgpCgojIyAyMi4yIHJ1bi5zdW1tYXJpemUubW9kZWwKIyBzdCA8LSBzdW1tYXJpemUubW9kZWwoZnR3diwgd3FRZikKc3QgPC0gc3VtbWFyaXplLm1vZGVsKGZ0d3YsIHdxUWYpCgojIGNyZWF0ZSBwcmludCByZXN1bHRzIG9iamVjdCAgCiMgVGl0bGUKdGl0bGUgPC0gcGFzdGUoVGl0bGUsIAogICAgICAgICAgICAgICAiU3VtYXJpbyBNb2RlbG8gUHJvbsOzc3RpY28gZGUgUHJvZHVjY2nDs24iKQoKcHJpbnQudGFibGUoc3QsIHRpdGxlLCAwLCAKICAgICAgICAgICAgIlJlc3VsdGFkb3MgZGVsIG1vZGVsbzogYnlXZWxscyAmIGJ5RmllbGQgCiAgICAgICAgICAgIFByb2R1Y3Rpb246IHByb2R1Y2Npw7NuIGFjdW11bGFkYSBkZSBnYXMKICAgICAgICAgICAgRm9yZWNhc3QgUHJvZHVjdGlvbjogcHJvbsOzc3RpY28gZGUgcHJvZHVjY2nDs24gZGVsIHNpc3RlbWEgICAKICAgICAgICAgICAgUHJvdmVkIERldmVsb3BlZCBSZXNlcnZlczogcmVzZXJ2YXMgcHJvYmFkYXMgZGVzYXJyb2xsYWRhcyAgCiAgICAgICAgICAgIFByb2R1Y3Rpb24gZGF0YSBzb3VyY2U6IENOSAogICAgICAgICAgICBUb2RhcyBsYXMgdW5pZGFkZXMgZXN0w6FuIGV4cHJlc2FkYXMgZW4gbWlsZXMgZGUgbWlsbG9uZXMgZGUgcMOtZXMgY8O6YmljbyAoTU1NY2YpIikgICAgIApgYGAKCiMjIE9ic2VydmFjaW9uZXM6CgotIEVsIG1vZGVsbyBkZSBwcm9uw7NzdGljbyBkZSBwcm9kdWNjacOzbiB1dGlsaXphIGRvcyBtb2RhbGlkYWRlcyBwYXJhIGVzdGltYXIgbGFzICoqcmVzZXJ2YXMgcHJvYmFkYXMgZGVzYXJyb2xsYWRhcyoqOgogIC0gTW9kZWxvIGNhbXBvOiAqKjIxOSoqIE1NTXBjICAKICAtIE1vZGVsbyBwb3pvczogKioyNDQqKiBNTU1wYyAgIAoKIyBSZXN1bHRhZG9zIE1vZGVsbyBQcm9uw7NzdGljbyBkZSBQcm9kdWNjacOzbiAtIFN1bWFyaW8gSUkKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiMjIDIyLjMgcHJpbnQud2VsbC5zdGF0dXMuc3VtCnRpdGxlIDwtIHBhc3RlKFRpdGxlLCAiUHJvdmVkIFJlc2VydmVzIiwgIkAiLCBmZG1lKQpwcmludC50YWJsZSh3ZWxsX3N0YXR1c19zdW0sIAogICAgICAgICAgICB0aXRsZSwgMCwgCiAgICAgICAgICAgICJQcm9kdWNpbmc6IFByb3ZlZCBEZXZlbG9wZWQgcHJvZHVjaW5nIHJlc2VydmVzIAogICAgICAgICAgICBOb24tcHJvZHVjaW5nOiBQcm92ZWQgRGV2ZWxvcGVkIG5vbi1wcm9kdWNpbmcgcmVzZXJ2ZXMgCiAgICAgICAgICAgIFdlbGxzOiBudW1iZXIgb2Ygd2VsbHMKICAgICAgICAgICAgUHJvZHVjdGlvbjogQWNjdW11bGF0ZWQgZ2FzIHByb2R1Y3Rpb24KICAgICAgICAgICAgRm9yZWNhc3QgUHJvZHVjdGlvbjogQWNjdW11bGF0ZWQgZm9yZWNhc3QgZ2FzIHByb2R1Y3Rpb24KICAgICAgICAgICAgUmVzZXJ2ZXM6IFByb3ZlZCBkZXZlbG9wZWQgUmVzZXJ2ZXMKICAgICAgICAgICAgVG9kYXMgbGFzIHVuaWRhZGVzIGVzdMOhbiBleHByZXNhZGFzIGVuIG1pbGVzIGRlIG1pbGxvbmVzIGRlIHBpZXMgY8O6Ymljb3MgKE1NTXBjKSIpCmBgYAoKIyMgT2JzZXJ2YWNpb25lczoKCi0gTGFzICoqcmVzZXJ2YXMgcHJvYmFkYXMgZGVzYXJyb2xsYWRhcyoqIGVzdGltYWRhcyBwb3IgZWwgbW9kZWxvOiAgCiAgLSBQYXJhIGxvcyAqKjE3MyBwb3pvcyBhY3Rpdm9zKiogZXMgKioxMjEgTU1NcGMqKiAgCiAgLSBQYXJhIGxvcyAqKjE3NSBwb3pvcyBjZXJyYWRvcyoqIGVzICoqMTI0IE1NTXBjKiogIAoK