The Future of mruby in HTTP Server - RubyKaigi 2015

The Future of mruby in HTTP Server - RubyKaigi 2015

As the HTTP/2 RFC was published, implementations of HTTP/2 have been actively developed. In this session, from the standpoint of an author of an extension mechanism using mruby for typical HTTP/1.x and HTTP/2 servers like apache, nginx and H2O, I show the possibility of design using mruby in HTTP server with new special features of HTTP/2 like server push. I explain how to design the complex web service system using both HTTP/1.x and HTTP/2 servers based on the need for HTTP/2 considering the changes in the architecture of Web service systems.

2b692bd83f4418103142a053ecf5ff59?s=128

MATSUMOTO Ryosuke

December 21, 2015
Tweet

Transcript

  1. GMO Pepabo, Inc. Principal Engineer MATSUMOTO, Ryosuke @matsumotory 2015/12/11 RubyKaigi

    2015 5IF'VUVSFPGNSVCZ JO)5514FSWFS .JEEMFXBSF$POpHVSBUJPOBT$PEF
  2. !NBUTVNPUPSZ  ."546.050 3ZPTVLF  1SJODJQBM&OHJOFFSBU(.01FQBCP *OD  8FCPQFSBUJPO EFWFMPQNFOUBOESFTFBSDI

     )BOEMFBDPNQBOZXJEFJOUFSOFUUFDIOPMPHZ  044 "DBEFNJD3FTFBSDI &OHJOFFSJOH  IUUQSFTFBSDINBUTVNPUPSKQ
  3. $VSSFOUTUBUVTPG044  NPE@NSVCZ  OHY@NSVCZ  NSVCZJO)0  5SVTUFSE)5518FC4FSWFS 

    NSVCZBOENSCHFNT  04ɾ.JEEMFXBSFEFWFMPQNFOU
  4. $POUFOUT  )551JOUSPEVDUJPO  )551DIBSBDUFSJTUJDT  4FSWFSQVTI  1SJPSJUJ[BUJPO 

    NSVCZJO)5514FSWFSEFTJHOQPMJDZ  NSVCZJO)5514FSWFS  $PODMVTJPOBOE'VUVSFSFTFBSDIQMBO
  5. )551 *OUSPEVDUJPO

  6. )5511SPCMFNT  /PU.VMUJQMFYJOH  SFRVFTUSFTQPOTFQFS355ʢ3PVOE5SJQ5JNFʣ  )BSEUPSFBMJ[F)551QJQFMJOJOHJOQSBDUJDF  4FOENVMUJQMFSFRVFTUTXJUIPVUXBJUJOHGPSUIF DPSSFTQPOEJOHSFTQPOTFTJO355

     /FFEUPTZODISPOJ[FUIFPSEFSTPGSFRVFTUTBOE SFTQPOTFT  "TMPXSFRVFTUIBOEMJOHCMPDLTUIFTVCTFRVFOUPQFSBUJPOT  )BSEUPEFUFSNJOFXIFUIFSUPSFTFOESFRVFTUTMJLF1045  .BOZCVHTBOEOPOTUBOEBSEPQUJPOT
  7. *OFGpDJFOUVTFPGOFUXPSLSFTPVSDFT  /FUXPSL1FSGPSNBODF.FBTVSFT  -BUFODZ #BOEXJEUI  )551QFSGPSNBODFEFQFOETPOMBUFODZ  %FDSFBTJOHMBUFODZJTIBSE

    MJHIUpCFS   *ODSFBTJOHCBOEXJEUIEPFTOPUNBUUFSNVDI
  8. )551ʢ3'$ʣ  &⒏DJFOUMZTFOEEBUBCZ355  6TFlGSBNFTzUPTFOEEBUB  l'SBNFTzBSFTFOUPOBlTUSFBNz  .VMUJQMFYFETUSFBNTPOTJOHMF5$1TFTTJPO 

    *UJTQPTTJCMFUPTFOEPWFSSFRVFTUT GSBNFT  TJNVMUBOFPVTMZ  .VMUJQMFYJOHSFEVDFTF⒎FDUTPGMBUFODZ  4USFBNTBSFMBSHFMZJOEFQFOEFOUPGFBDIPUIFS  NVMUJQMFYJOHPGSFRVFTUTFOBCMFTF⒏DJFOUVTFPG CBOEXJEUI
  9. .BKPS)5514FSWFST  )0CZ!LB[VIP  5IF0QUJNJ[FE)551BOE)5514FSWFS  OHIUUQYCZ!UBUTVIJSP@U  )551SFGFSFODFJNQMFNFOUBUJPO TFSWFSBOEMJCSBSJFT

     TVQQPSUT)551DPOOFDUJPOXJUICBDLFOETFSWFS NBZCFPOMZMJCSBSZ   5SVTUFSE)5514FSWFSCZ!NBUTVNPUPSZ  CZ!NBUTVNPUPSZ OPUNBKPS VTJOHMJCOHIUUQ  "QBDIFIUUQEW  OHJOYW  "MMPGUIFNBSFDPOUSPMMBCMFCZVTJOHNSVCZ
  10. )551 $IBSBDUFSJTUJDT

  11. $IBSBDUFSJTUJDTPG)551  #JOBSZQSPUPDPMT  .VMUJQMFYJOH  )FBEFS$PNQSFTTJPOʢ)1"$,ʣ  4FSWFS1VTI 

    1SJPSJUJ[BUJPO  5-4SFMBUFEJTTVFT  FUDʜ
  12. .BOZNBOZNBOZDIBSBDUFSJTUJDTʜ  5PEBZ`TUPQJDTBSFUIFTFUXPGFBUVSFTDMPTFMZ SFMBUFEUPNSVCZ  4FSWFSQVTI  1SJPSJUJ[BUJPO  'PSSFGFSFODF

     ʮ)551࣌୅ͷ΢ΣϒαΠτઃܭʯ "SDIJUFDUTPGUIF XFCTJUFTGPSUIF)551FSB CZ!LB[VIP  IUUQZBQDBTJBPSHUBMLTIPXEFBECFBEDEDB  ʮ)551࣌୅ͷ8FCʯ 8FCPWFS)551 CZ!+YDL  IUUQZBQDBTJBPSHUBMLTIPXFBFGCFBBCEDB
  13. 4FSWFS1VTI

  14. 4FSWFS1VTI ˞5BMLBCPVUGSPNUIFWJFXQPJOUPGQFSGPSNBODFPOXFC CSPXTFS  "TFSWFSDBOQVTIEBUBUPBDMJFOUUIBUUIFTFSWFS BOUJDJQBUFTUIFDMJFOUXJMMOFFE  *O355BTFSWFSDBOQSFFNQUJWFMZTFOESFTQPOTFTUPUIF DMJFOUUPTBWF355T 

    4FSWFSQVTIXJMMCFBLFZQPJOUUPJNQSPWFBDMJFOUTJEF QFSGPSNBODF
  15. )5514FSWFS1VTI  )551TFSWFSTQVTIEBUBVTJOH164)@130.*4&GSBNF  %FpOFBTFSWFSUPQVTIlJOEFYKTzTJNVMUBOFPVTMZXIFO lJOEFYUYUzJTBDDFTTFE $MJFOU )551 TFSWFS )551DPOOFDUJPO

    (&5JOEFYUYU 3FTQPOTFJOEFYUYU 4JNVMUBOFPVTMZTFSWFSQVTIJOEFYKT
  16. $MJFOUTFOEBSFRVFTU

  17. 3FDFJWF164)@130.*4& GSBNFDPOUBJOJOHSFRVFTU IFBEFSpFMET 3FDFJWFSFTQPOTFIFBEFS PGTFSWFSQVTI

  18. 3FDFJWFSFTQPOTFIFBEFS PGPSJHJOBMSFRVFTU 3FDFJWFSFTQPOTFCPEZPG PSJHJOBMSFRVFTU 3FDFJWFSFTQPOTFCPEZPG TFSWFSQVTI  6TJOH164)@130.*4&GSBNF BDMJFOUDBOSFDFJWFBSFTQPOTFBT JGUIFDMJFOUTFOEBSFRVFTU

     $BDIJOHBSFTQPOTFPGTFSWFSQVTIXJUIJOCSPXTFSDBDIF FOBCMFTBDMJFOUUPHFUBSFTQPOTFPGJOEFYKTGSPNDBDIF
  19. 4FSWFSQVTICZCBDLFOE)551TFSWFS  3FRVFTUGSPOUTJEF)551TFSWFSUPEPTFSWFSQVTICZBEEJOH-JOLIFBEFS  'SPOUTFSWFSDBOQVTIUPBDMJFOUEJSFDUMZCFGPSFGPSXBSEJOHUPBCBDLFOE $MJFOU )551 SFWFSTFQSPYZ )551 CBDLFOE

    TFSWFS )551DPOOFDUJPO )551DPOOFDUJPO "EE-JOLIFBEFS -JOLJOEFYKTSFMQSFMPBE 'PSXBSESFRVFTU (&5JOEFYUYU 3FTQPOTF TFSWFSQVTIJOEFYKT 3FTQPOTF JOEFYUYU
  20. 4FSWFSQVTICZCBDLFOE)551TFSWFS  $VSSFOUMZPOMZOHIUUQYDBONBLF)551DPOOFDUJPOGPSCBDLFOETFSWFS  $VSSFOUMZXFTIPVMEVTF-JOLIFBEFSFWFOJGBCBDLFOETFSWFSTVQQPSUT)551  *OUIFGVUVSFUIFSFJTTPNFQPTTJCJMJUZPGSFUVSOJOH164)@130.*4&TFOEGSPNB CBDLFOETFSWFS  5IFSFBSFTPNFQSPCMFNT

    FHIPXUPNBOBHF4&55*/(4CFUXFFOUXPIPQT $MJFOU )551 SFWFSTFQSPYZ OHIUUQY )551 CBDLFOE TFSWFS )551DPOOFDUJPO )551DPOOFDUJPO "EE-JOLIFBEFS -JOLJOEFYKTSFMQSFMPBE 'PSXBSESFRVFTU (&5JOEFYUYU 3FTQPOTF TFSWFSQVTIJOEFYKT 3FTQPOTF JOEFYUYU
  21. 1SPCMFNTBOETPMVUJPOTPGTFSWFSQVTI  5IFQSPCMFNPGCSPXTFSDBDIF  "TFSWFSDBO`UEFUFDUBCSPXTFSDBDIF  4FOEJOHBSFRVFTUUPEFUFDUBDBDIFXBTUFTF⒏DJFODZ HBJOFEXJUITFSWFSQVTI  )0IBTDBDIFBXBSFTFSWFSQVTI

     .BOBHFJOGPSNBUJPOBCPVUDBDIFCZOFXIFBEFS OPXVTJOH $PPLJFʣFBDIPUIFS  #PUIDMJFOUTBOETFSWFSTTIPVMEJNQMFNFOUUIJTGFBUVSF  !LB[VIPNBEFBESBGU  IUUQLB[VIPHJUIVCJPIUUQDBDIFpOHFSQSJOU  *XBOUUPDPOUSPMTFSWFSQVTICZVTJOHNSVCZ
  22. 4FSWFS1VTIXJUI4FSWJDF8PSLFS  3FTFBSDIGPSF⒏DJFODZJNQSPWFNFOUXJUI TFSWFSQVTICZ!+YDL  IUUQKYDLIBUFOBCMPHDPNFOUSZTFSWJDFXPSLFSDBTQFS  6TF48UPDPOUSPMDBDIFJOTUFBEPGCSPXTFS  48DBMDVMBUFDBDIFpOHFSQSJOU

    QSPYZBSFRVFTU BOEBEEIFBEFS  &OBCMFUPVTFDBDIFBXBSFTFSWFSQVTIFWFOJG CSPXTFSTEPO`UTVQQPSU  5IFSFBSFTPNFQSPCMFNTʜ TFFUIFXFCQBHF
  23. 1SJPSJUJ[BUJPO

  24. 1SJPSJUJ[BUJPO  $MJFOUQSPWJEFTQSJPSJUJ[BUJPOJOGPSNBUJPOBCPVU SFTPVSDFUPBTFSWFS  QSJPSJUJ[BUJPOJOGPSNBUJPOJODMVEFTEFQFOEFODZBOEXFJHIU  (JWJOHQSJPSJUZUPSFDFJWF KTPS DTTJNQSPWF

    pSTUQBJOUUJNFPOCSPXTFS  *OTPNFCSPXTFSTpSTUQBJOUUJNFHFUXPSTF
  25. 1SJPSJUJ[BUJPODPOUSPMPOTFSWFSTJEF  )0TFSWFSPQUJNJ[FTQSJPSJUJ[BUJPO  8IFODMJFOUTQSPWJEFOPQSJPSJUJ[BUJPOJOGPSNBUJPO  )0TFSWFTHJWFQSJPSJUZUPDPOUFOUTXIJDINBZ JNQSPWFpSTUQBJOUUJNF  "MUIPVHIJO3'$QVTIJOHDPOUFOUTTIPVMEGPMMPX

    SFRVFTUDPOUFOUT )0BMTPDPOUSPMTQSJPSJUJ[BUJPOXIFO QVTIJOHEBUB  FHHJWJOHUPQQSJPSJUZUP$44PS+4 )5.-PWFS JNBHFT  *XBOUUPDPOUSPMQSJPSJUJ[BUJPOCZVTJOHNSVCZ
  26. ,FZQPJOUTPGUVOJOHJO)551  4FSWFSTJEFTFUUJOHBCPVUTFSWFSQVTIPSQSJPSJUJ[BUJPO DPOUSPMNBZCFLFZQPJOUT  8IJDITJUVBUJPOTTFSWFSQVTIFTEBUB  )PXUPHJWFQSJPSJUZGPSTFOEJOHDPOUFOUTCBTFEPONJNFUZQF  5IFNFPGXFCBQQMJDBUJPOUVOJOHXJMMTIJGUUPJNQSPWJOH

    EJTQMBZTQFFEGSPNQBSBNFUFSTFUUJOH FHOVNCFSPG DPOOFDUJPOT   %FGBVMUTFUUJOHTPG)0BSFXFMMUVOFE  *XBOUUPQSPHSBNDPNQMFYDPOUSPMTFUUJOH
  27. NSVCZJO)5514FSWFS

  28. NSVCZJO)5514FSWFS %FTJHODPODFQU

  29. NSVCZJO)551TFSWFS *NQMFNFOUBUJPOTGPS)551TFSWFS  NPE@SVCZ  .PEVMFUPDPOUSPM"QBDIFIUUQECZNSVCZ  OHY@NSVCZ  .PEVMFUPDPOUSPMOHJOYCZNSVCZ

    3FDFOUMZ  5IFSFBSFNPEVMFTUPDPOUSPM)0PSOHIUUQY CZNSVCZ
  30. 5IJOHT*LFFQJONJOE  )JHIQFSGPSNBODF  5POPUCFPWFSIFBE  1SFWFOUNFNPSZVTBHFGSPNJODSFBTJOHMJOFBSMZ  -PXMFBSOJOHDVSWF 

    4JNQMFDMBTTFTBOENFUIPET  6OJpFETQFDJpDBUJPOT  6TFNSCHFN˞ GPSFYQBOEJOH ˞NSVCZWFSTJPOPG$3VCZHFN
  31. )JHI1FSGPSNBODF  6TJOHNSVCZFOBCMFTUPLFFQQFSGPSNBODFBOE QSPEVDUJWJUZ  -JHIUJNQMFNFOUBUJPOXJUIGPMMPXJOH+*4  $PNQJMJOHUPCZUFDPEFTJOBEWBODFHFUTVQTQFFE  8IFOUIFOVNCFSPG3VCZDPEFFYFDVUJPO

    JODSFBTFT MJHIUXFJHIUJOUFSQSFUFSIBTBO BEWBOUBHFJOTQFFE  4FFUIFQBQFSGPSNPSFEFUBJMT˞ ˞দຊ྄հɾԬ෦णஉ NPE@NSVCZɿεΫϦϓτݴޠͰߴ଎͔ͭলϝϞϦʹ֦ுՄೳͳ8FCαʔόͷػೳ֦ ுࢧԉػߏ ৘ใॲཧֶձ࿦จࢽ 7PM /P QQ ೥݄
  32. 3VCZBUUIBNPOH$ $ +BWB (PFUD JO8FC'SBNFXPSLQFSGPSNBODFDPNQFUJUJPO SFGIUUQTXXXUFDIFNQPXFSDPNCFODINBSLT

  33. SFGIUUQTXXXUFDIFNQPXFSDPNCFODINBSLT OHY@NSVCZXJOTBEFDJTJWFWJDUPSZ BNPOH3VCZ'SBNFXPSLT

  34. 'JMUFSJOHXJUIOHJOYBT'& %#BDDFTTCMPDLT BQSPHSBNBOEBSFTQPOTFCFDPNFTTMPX 5IJTJTGVUVSFXPSL $BDIJOHEBUBUPSFEVDF%#BDDFTTJTSFDPNNFOEFE

  35. OHY@NSVCZXJOTBEFDJTJWFWJDUPSZ BNPOH3VCZ'SBNFXPSLT

  36. -PXFSMFBSOJOHDVSWF  6TFTBNFDMBTTOBNFTBOENFUIPEOBNFTPWFS EJ⒎FSFOUNJEEMFXBSF  4QMJUTPNFGFBUVSFTJOUPNSCHFNUPTIBSF BNPOHNJEEMFXBSF  ,OPXMFEHFBCPVUNJEEMFXBSFDBOCFBQQMJFEUP PUIFSNJEEMFXBSF

     %JTDVTTJPOBCPVUTUBOEBSEJ[JOHUP3BDLCBTFE "1*
  37. 3BDLCBTFE"1* GPSNSVCZIBOEMFS

  38. 3BDLCBTFE"1*GPSNSVCZ

  39. 3BDLCBTFE"1*GPSNSVCZ  5IFOVNCFSPGNSVCZJO)5514FSWFSIBTCFFO JODSFBTFE  #FGPSF *DMPVEDPOUSPMTQFDJpDBUJPOT  *ODSFBTFPGJNQMFNFOUBUJPOTJODSFBTFTUIFOFFEPG VOJpFE"1*

     !LB[VIPQSPQPTFTUPVTF3BDLCBTFE"1*  3BDLCBTFE"1*JTXFMMLOPXOBOEIBTNBOZ EPDVNFOUT  6OJGZJOHJTOBUVSBM
  40. 4VQQPSUNPE@NSVCZ 1SFWJPVT"1*DBOCFVTFE

  41. 4VQQPSUOHY@NSVCZ 1SFWJPVT"1*DBOCFVTFE

  42. 4VQQPSUNSVCZJO)0 %POPUVTFbSVO`NFUIPEEJ⒎FSFOUMZGSPN NPE@NSVCZ OHY@NSVCZ

  43. 6TFNSVCZIJCBSJ  .BEFCZ!LFOUBSP $50PG(.01FQBCP *OD   NSVCZIJCBSJJTB8"'BCTPSCTUIFEJ⒎FSFODFJONPE@NSVCZPS OHY@NSVCZBOEIP@NSVCZ 

    DPEFTCFMPXXPSLXJUICPUINPE@NSVCZBOEIP@NSVCZ
  44. NSVCZJOOHIUUQY 4VQQPSUJOH3BDLCBTFE"1*JTXPSLJOQSPHSFTT

  45. NSVCZJO)5514FSWFS

  46. NSVCZNFFUT)551  )5514FSWFSTFNCFEEFEXJUINSVCZIBWFCFFO BQQFBSFE  )0ɺOHIUUQYɺ5SVTUFSE  "QBDIFBOEOHJOYTVQQPSU)551  NPE@NSVCZPSOHY@NSVCZFOBCMFUPVTFSVCZJOBQBDIF

    PSOHJOY  )BWFQMBOUPTVQQPSUTFSWFSQVTIDPOUSPMXJUINSVCZ  5IFUJNFNBZDPNFTPPOXIFONSVCZJO)5514FSWFSJT DPNNPO  *BNpMMFEXJUIEFFQFNPUJPOBTUIFDSFBUPSPGNPE@NSVCZ BOEOHY@NSVCZ
  47. NSVCZJO)0

  48. IPDPOG )PPL3VCZTDSJQU

  49. (FOFSBUFBSFTQPOTFXJUI3BDLCBTFE"1*GPSNBU

  50. 4FSWFSQVTIXJUI)0 6TFNSVCZUPEFpOFXIJDIDPOUFOUTBSFQVTIFE CBTFEPOBSFRVFTU63- 0GDPVSTFTVQQPSUTFSWFSQVTI XJUI-JOLIFBEFSTFOEGSPNCBDLFOE)551TFSWFS

  51. NSVCZJOOHIUUQY

  52. QBUIUPSFRSC QBUIUPSFTSC 1BTTBTDSJQUpMFQBUIBTDPNNBOMJOFPQUJPOT 3FXSJUFBSFRVFTUQBUI "DDFTTDPOUSPMCBTFPO*1BEESFTT

  53. 4FSWFSQVTIXJUIOHIUUQY QBUIUPSFRSC 0GDPVSTFTVQQPSUTFSWFSQVTI XJUI-JOLIFBEFSTFOEGSPNCBDLFOE)551TFSWFS

  54. NSVCZJO)5514FSWFS XPSMEJTFYQBOEJOH

  55. 'VUVSFQMBOT

  56. %FTZODISPOJ[BUJPOPGTZODISPOPVTDBMM  1SPCMFNTPGNSVCZJOIUUQE  TZODISPOPVTQSPDFTTJOH FH%#BDDFTT  CMPDLTBFWFOUMPPQPGIUUQEQSPDFTT  3FUVSOUPIUUQQSPDFTTBGUFS%#BDDFTT

     5IJTJTKVTUBOJEFB  SFGNSVCZͰಉظݺग़ΛඇಉظԽ͢Δ࿩ʢ΋͘͠͸)0ͷNSVCZϋϯυϥͰωοτϫʔΫΞΫηε͢Δ࿩ʣIUUQ CMPHLB[VIPPLVDPNNSVCZIUNM
  57. 5$1-BZFSXJUINSVCZ  5$1-PBE#BMBODJOHXJUINSVCZ  &YUFOETUSFBNNPEVMFPGOHJOY  IUUQICNBUTVNPUPSKQFOUSZ  &YBNQMFT 

    'PSXBSE5$1QBDLFUTPG'MVFOUEGSPNNBOZ TFSWFSTUPCBDLFOETFSWFST  %FMJWFSHSBQITPG5$1QBDLFUTHFOFSBUFECZ CBDLFOETFSWFSXJUIOHJOYSFWFSTFQSPYZ  $FOUSBMMZDPOUSPMTFUUJOHTGPSQSPYZTFSWFS  IUUQICNBUTVNPUPSKQFOUSZ
  58. 5IF)VHF/VNCFSPG4FSWFST 'MVFOUE /PSJLSB (SPXUI'PSFDBTU 'MVFOUE /PSJLSB (SPXUI'PSFDBTU 'MVFOUE /PSJLSB (SPXUI'PSFDBTU

    )551$MJFOU 'MVFOUE 'MVFOUE OHY@NSVCZ 5$1-PBE#BMBODFS )5513FWFSTF1SPYZ 5$1 )551 4DBMFPVU
  59. 4UBUJTUJDBMBVUPNBUFETFSWFSDPOUSPM  8SJUFDPEFXIJDIEFDMBSFTQFSGPSNBODFTBTFSWFS NVTUBDIJFWF  3FTPVSDFDPOUSPMCZDPEF  "VUPNBUJDDPOUSPMGPDVTJOHPODIBOHFTJOTFSWFS SFTPVSDFT 

    "VUPOPNPVTMZDPOUSPMTFSWFSTFUUJOHT  "VUPNBUFpOFUVOJOHTXIJDIIBWFCFFONBOVBMMZ PQFSBUFE  &OHJOFFSTTQFOENPSFUJNFUPBDIJFWFIJHIMFWFM JEFBT
  60. $PODMVTJPO

  61. NSVCZJO)5514FSWFS  &BTJMZDPOUSPM)551BOE)551XJUINSVCZ  6OJGZIPXUPEFTDSJCFCFIBWJPSPGIUUQTFSWFSTBOEBCTPSCT UIFEJ⒎FSFODFPGTFUUJOHCFUXFFONBOZIUUQTFSWFST  4JNQMZEFpOFEZOBNJDCFIBWJPSBOEQSPDFTTFTEJ⒏DVMUUP XSJUFCZTFUUJOHpMF 

    4JNQMZEFpOFDPOEJUJPOTPGTFSWFSQVTI  )BQQZUPNBLF)551DPPQFSBUFXJUI)551BOEEFTDSJCF IUUQTFSWFSCFIBWJPSXJUIVOJpFEGPSNBUVTJOHNSVCZ
  62. NSVCZJO)5514FSWFS  -FUTUSZ)551 TFSWFSQVTIFUD CZDPOUSPMMJOH)0PSOHIUUQY XJUINSVCZ  %POPUGPSHFU5SVTUFSE  "OEEFTJHODPPQFSBUJPOCFUXFFO)551BOE)551TFSWFST

    VTJOHNPE@NSVCZPSOHY@NSVCZ  .BZTFOTFUIFDPOWFOJFODFPGDPOUSPMMJOHTFSWFSQSPDFTTXJUI NSVCZ  .BZDPNFVQXJUIBIJHIMZTPQIJTUJDBUFEDPPQFSBUJPO BSDIJUFDUVSFT  -FU`TEFWFMPQNPSFBEWBODFEXFCTZTUFNTVTJOHNSVCZJO)551 TFSWFS