{"version":3,"sources":["jsdelivr-header.js","/npm/@apollo/usage-reporting-protobuf@4.1.1/generated/cjs/protobuf.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACLA,aAEA,IAAI,UAAY,QAAQ,8BAGpB,QAAU,UAAU,OAAQ,QAAU,UAAU,OAAQ,MAAQ,UAAU,KAG1E,MAAQ,UAAU,MAAe,UAAM,UAAU,MAAe,QAAI,CAAC,GAEzE,MAAM,MAAQ,WAoCV,SAAS,EAAM,GACX,GAAI,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAqoJA,OA7nJA,EAAM,UAAU,UAAY,KAQ5B,EAAM,UAAU,QAAU,KAQ1B,EAAM,UAAU,WAAa,EAQ7B,EAAM,UAAU,KAAO,KAQvB,EAAM,UAAU,cAAe,EAQ/B,EAAM,UAAU,UAAY,GAQ5B,EAAM,UAAU,wBAA0B,GAQ1C,EAAM,UAAU,wBAA0B,GAQ1C,EAAM,UAAU,QAAU,KAQ1B,EAAM,UAAU,WAAa,GAQ7B,EAAM,UAAU,cAAgB,GAQhC,EAAM,UAAU,KAAO,KAQvB,EAAM,UAAU,YAAc,KAQ9B,EAAM,UAAU,UAAY,KAQ5B,EAAM,UAAU,mBAAoB,EAQpC,EAAM,UAAU,mBAAoB,EAQpC,EAAM,UAAU,wBAAyB,EAQzC,EAAM,UAAU,qBAAsB,EAQtC,EAAM,UAAU,oBAAqB,EAQrC,EAAM,UAAU,qBAAuB,EAUvC,EAAM,OAAS,SAAgB,GAC3B,OAAO,IAAI,EAAM,EACrB,EAWA,EAAM,OAAS,SAAgB,EAAS,GA2CpC,OA1CK,IACD,EAAS,QAAQ,UACE,MAAnB,EAAQ,SAAmB,OAAO,eAAe,KAAK,EAAS,YAC/D,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,QAAS,EAAO,OAA8B,IAAI,QAAQ,SACpF,MAArB,EAAQ,WAAqB,OAAO,eAAe,KAAK,EAAS,cACjE,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,UAAW,EAAO,OAA8B,IAAI,QAAQ,SACxF,MAAnB,EAAQ,SAAmB,OAAO,eAAe,KAAK,EAAS,YAC/D,MAAM,MAAM,QAAQ,OAAO,EAAQ,QAAS,EAAO,OAA8B,IAAI,QAAQ,SACvE,MAAtB,EAAQ,YAAsB,OAAO,eAAe,KAAK,EAAS,eAClE,EAAO,OAA8B,IAAI,OAAO,EAAQ,YAC/B,MAAzB,EAAQ,eAAyB,OAAO,eAAe,KAAK,EAAS,kBACrE,EAAO,OAA8B,IAAI,OAAO,EAAQ,eACxC,MAAhB,EAAQ,MAAgB,OAAO,eAAe,KAAK,EAAS,SAC5D,MAAM,MAAM,KAAK,OAAO,EAAQ,KAAM,EAAO,OAA+B,IAAI,QAAQ,SAClE,MAAtB,EAAQ,YAAsB,OAAO,eAAe,KAAK,EAAS,eAClE,EAAO,OAA+B,IAAI,OAAO,EAAQ,YACzC,MAAhB,EAAQ,MAAgB,OAAO,eAAe,KAAK,EAAS,SAC5D,MAAM,MAAM,KAAK,OAAO,EAAQ,KAAM,EAAO,OAA+B,KAAK,QAAQ,SAClE,MAAvB,EAAQ,aAAuB,OAAO,eAAe,KAAK,EAAS,gBACnE,MAAM,MAAM,YAAY,OAAO,EAAQ,YAAa,EAAO,OAA+B,KAAK,QAAQ,SAClF,MAArB,EAAQ,WAAqB,OAAO,eAAe,KAAK,EAAS,cACjE,EAAO,OAA+B,KAAK,OAAO,EAAQ,WAC7B,MAA7B,EAAQ,mBAA6B,OAAO,eAAe,KAAK,EAAS,sBACzE,EAAO,OAA+B,KAAK,KAAK,EAAQ,mBAC3B,MAA7B,EAAQ,mBAA6B,OAAO,eAAe,KAAK,EAAS,sBACzE,EAAO,OAA+B,KAAK,KAAK,EAAQ,mBACtB,MAAlC,EAAQ,wBAAkC,OAAO,eAAe,KAAK,EAAS,2BAC9E,EAAO,OAA+B,KAAK,KAAK,EAAQ,wBACzB,MAA/B,EAAQ,qBAA+B,OAAO,eAAe,KAAK,EAAS,wBAC3E,EAAO,OAA+B,KAAK,KAAK,EAAQ,qBAC1B,MAA9B,EAAQ,oBAA8B,OAAO,eAAe,KAAK,EAAS,uBAC1E,EAAO,OAA+B,KAAK,KAAK,EAAQ,oBACnC,MAArB,EAAQ,WAAqB,OAAO,eAAe,KAAK,EAAS,cACjE,MAAM,MAAM,cAAc,OAAO,EAAQ,UAAW,EAAO,OAA+B,KAAK,QAAQ,SACpE,MAAnC,EAAQ,yBAAmC,OAAO,eAAe,KAAK,EAAS,4BAC/E,EAAO,OAA+B,KAAK,OAAO,EAAQ,yBACvB,MAAnC,EAAQ,yBAAmC,OAAO,eAAe,KAAK,EAAS,4BAC/E,EAAO,OAA+B,KAAK,OAAO,EAAQ,yBAC1B,MAAhC,EAAQ,sBAAgC,OAAO,eAAe,KAAK,EAAS,yBAC5E,EAAO,OAA+B,KAAK,OAAO,EAAQ,sBAClC,MAAxB,EAAQ,cAAwB,OAAO,eAAe,KAAK,EAAS,iBACpE,EAAO,OAA+B,KAAK,KAAK,EAAQ,cACrD,CACX,EAWA,EAAM,gBAAkB,SAAyB,EAAS,GACtD,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAM,OAAS,SAAgB,EAAQ,GAC7B,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAChF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,UAAY,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,EAAO,UAC1E,MACJ,KAAK,EACD,EAAQ,QAAU,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,EAAO,UACxE,MACJ,KAAK,GACD,EAAQ,WAAa,EAAO,SAC5B,MACJ,KAAK,GACD,EAAQ,KAAO,MAAM,MAAM,KAAK,OAAO,EAAQ,EAAO,UACtD,MACJ,KAAK,GACD,EAAQ,aAAe,EAAO,OAC9B,MACJ,KAAK,GACD,EAAQ,UAAY,EAAO,SAC3B,MACJ,KAAK,GACD,EAAQ,wBAA0B,EAAO,SACzC,MACJ,KAAK,GACD,EAAQ,wBAA0B,EAAO,SACzC,MACJ,KAAK,EACD,EAAQ,QAAU,MAAM,MAAM,QAAQ,OAAO,EAAQ,EAAO,UAC5D,MACJ,KAAK,EACD,EAAQ,WAAa,EAAO,SAC5B,MACJ,KAAK,EACD,EAAQ,cAAgB,EAAO,SAC/B,MACJ,KAAK,GACD,EAAQ,KAAO,MAAM,MAAM,KAAK,OAAO,EAAQ,EAAO,UACtD,MACJ,KAAK,GACD,EAAQ,YAAc,MAAM,MAAM,YAAY,OAAO,EAAQ,EAAO,UACpE,MACJ,KAAK,GACD,EAAQ,UAAY,MAAM,MAAM,cAAc,OAAO,EAAQ,EAAO,UACpE,MACJ,KAAK,GACD,EAAQ,kBAAoB,EAAO,OACnC,MACJ,KAAK,GACD,EAAQ,kBAAoB,EAAO,OACnC,MACJ,KAAK,GACD,EAAQ,uBAAyB,EAAO,OACxC,MACJ,KAAK,GACD,EAAQ,oBAAsB,EAAO,OACrC,MACJ,KAAK,GACD,EAAQ,mBAAqB,EAAO,OACpC,MACJ,KAAK,GACD,EAAQ,qBAAuB,EAAO,SACtC,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAM,gBAAkB,SAAyB,GAG7C,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAM,OAAS,SAAgB,GAC3B,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBAEP,IAmDI,EApDR,GAAyB,MAArB,EAAQ,WAAqB,EAAQ,eAAe,eAChD,EAAQ,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,YAEvD,MAAO,aAAe,EAE9B,GAAuB,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAC9C,EAAQ,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,UAEvD,MAAO,WAAa,EAE5B,GAA0B,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,iBAChD,MAAM,UAAU,EAAQ,aAAiB,EAAQ,YAAc,MAAM,UAAU,EAAQ,WAAW,MAAQ,MAAM,UAAU,EAAQ,WAAW,OAC9I,MAAO,oCACf,GAAoB,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC3C,EAAQ,MAAM,MAAM,KAAK,OAAO,EAAQ,OAExC,MAAO,QAAU,EAEzB,GAA4B,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,iBACnB,kBAAzB,EAAQ,aACf,MAAO,iCACf,GAAyB,MAArB,EAAQ,WAAqB,EAAQ,eAAe,eAC/C,MAAM,SAAS,EAAQ,WACxB,MAAO,6BACf,GAAuC,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,6BAC7D,MAAM,SAAS,EAAQ,yBACxB,MAAO,2CACf,GAAuC,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,6BAC7D,MAAM,SAAS,EAAQ,yBACxB,MAAO,2CACf,GAAuB,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAC9C,EAAQ,MAAM,MAAM,QAAQ,OAAO,EAAQ,UAE3C,MAAO,WAAa,EAE5B,GAA0B,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBAChD,MAAM,SAAS,EAAQ,YACxB,MAAO,8BACf,GAA6B,MAAzB,EAAQ,eAAyB,EAAQ,eAAe,mBACnD,MAAM,SAAS,EAAQ,eACxB,MAAO,iCACf,GAAoB,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC3C,EAAQ,MAAM,MAAM,KAAK,OAAO,EAAQ,OAExC,MAAO,QAAU,EAEzB,GAA2B,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,iBAClD,EAAQ,MAAM,MAAM,YAAY,OAAO,EAAQ,cAE/C,MAAO,eAAiB,EAEhC,GAAyB,MAArB,EAAQ,WAAqB,EAAQ,eAAe,eAChD,EAAQ,MAAM,MAAM,cAAc,OAAO,EAAQ,YAEjD,MAAO,aAAe,EAE9B,OAAiC,MAA7B,EAAQ,mBAA6B,EAAQ,eAAe,sBACnB,kBAA9B,EAAQ,kBACR,sCACkB,MAA7B,EAAQ,mBAA6B,EAAQ,eAAe,sBACnB,kBAA9B,EAAQ,kBACR,sCACuB,MAAlC,EAAQ,wBAAkC,EAAQ,eAAe,2BACnB,kBAAnC,EAAQ,uBACR,2CACoB,MAA/B,EAAQ,qBAA+B,EAAQ,eAAe,wBACnB,kBAAhC,EAAQ,oBACR,wCACmB,MAA9B,EAAQ,oBAA8B,EAAQ,eAAe,uBACnB,kBAA/B,EAAQ,mBACR,uCACqB,MAAhC,EAAQ,sBAAgC,EAAQ,eAAe,yBACnB,iBAAjC,EAAQ,qBACR,wCACR,IACX,EAWA,EAAM,SAAW,SAAkB,EAAS,GACnC,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAkEd,OAjEI,EAAQ,WACR,EAAO,QAAU,KACjB,EAAO,UAAY,KACnB,EAAO,QAAU,KACjB,EAAO,WAAa,GACpB,EAAO,cAAgB,GACvB,EAAO,KAAO,KACd,EAAO,WAAa,EACpB,EAAO,KAAO,KACd,EAAO,YAAc,KACrB,EAAO,UAAY,GACnB,EAAO,mBAAoB,EAC3B,EAAO,mBAAoB,EAC3B,EAAO,wBAAyB,EAChC,EAAO,qBAAsB,EAC7B,EAAO,oBAAqB,EAC5B,EAAO,UAAY,KACnB,EAAO,wBAA0B,GACjC,EAAO,wBAA0B,GACjC,EAAO,qBAAuB,EAC9B,EAAO,cAAe,GAEH,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAClD,EAAO,QAAU,MAAM,OAAO,SAAS,UAAU,SAAS,EAAQ,QAAS,IACtD,MAArB,EAAQ,WAAqB,EAAQ,eAAe,eACpD,EAAO,UAAY,MAAM,OAAO,SAAS,UAAU,SAAS,EAAQ,UAAW,IAC5D,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAClD,EAAO,QAAU,MAAM,MAAM,QAAQ,SAAS,EAAQ,QAAS,IACzC,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBACrD,EAAO,WAAa,EAAQ,YACH,MAAzB,EAAQ,eAAyB,EAAQ,eAAe,mBACxD,EAAO,cAAgB,EAAQ,eACf,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC/C,EAAO,KAAO,MAAM,MAAM,KAAK,SAAS,EAAQ,KAAM,IAChC,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBACnB,iBAAvB,EAAQ,WACf,EAAO,WAAa,EAAQ,QAAU,OAAS,OAAO,EAAQ,YAAc,EAAQ,WAEpF,EAAO,WAAa,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,YAAc,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,WAAW,MAAQ,EAAG,EAAQ,WAAW,OAAS,GAAG,UAAS,GAAQ,EAAQ,YAChO,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC/C,EAAO,KAAO,MAAM,MAAM,KAAK,SAAS,EAAQ,KAAM,IAC/B,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,iBACtD,EAAO,YAAc,MAAM,MAAM,YAAY,SAAS,EAAQ,YAAa,IACtD,MAArB,EAAQ,WAAqB,EAAQ,eAAe,eACpD,EAAO,UAAY,EAAQ,WACE,MAA7B,EAAQ,mBAA6B,EAAQ,eAAe,uBAC5D,EAAO,kBAAoB,EAAQ,mBACN,MAA7B,EAAQ,mBAA6B,EAAQ,eAAe,uBAC5D,EAAO,kBAAoB,EAAQ,mBACD,MAAlC,EAAQ,wBAAkC,EAAQ,eAAe,4BACjE,EAAO,uBAAyB,EAAQ,wBACT,MAA/B,EAAQ,qBAA+B,EAAQ,eAAe,yBAC9D,EAAO,oBAAsB,EAAQ,qBACP,MAA9B,EAAQ,oBAA8B,EAAQ,eAAe,wBAC7D,EAAO,mBAAqB,EAAQ,oBACf,MAArB,EAAQ,WAAqB,EAAQ,eAAe,eACpD,EAAO,UAAY,MAAM,MAAM,cAAc,SAAS,EAAQ,UAAW,IACtC,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,6BAClE,EAAO,wBAA0B,EAAQ,yBACN,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,6BAClE,EAAO,wBAA0B,EAAQ,yBACT,MAAhC,EAAQ,sBAAgC,EAAQ,eAAe,0BAC/D,EAAO,qBAAuB,EAAQ,OAAS,SAAS,EAAQ,sBAAwB,OAAO,EAAQ,sBAAwB,EAAQ,sBAC/G,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,kBACvD,EAAO,aAAe,EAAQ,cAC3B,CACX,EASA,EAAM,UAAU,OAAS,WACrB,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEA,EAAM,YAAc,WAkBhB,SAAS,EAAY,GACjB,GAAI,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAsLoB,IACZ,EAAiB,EAOzB,OAtLA,EAAY,UAAU,MAAQ,EAQ9B,EAAY,UAAU,SAAW,EAUjC,EAAY,OAAS,SAAgB,GACjC,OAAO,IAAI,EAAY,EAC3B,EAWA,EAAY,OAAS,SAAgB,EAAS,GAO1C,OANK,IACD,EAAS,QAAQ,UACA,MAAjB,EAAQ,OAAiB,OAAO,eAAe,KAAK,EAAS,UAC7D,EAAO,OAA8B,GAAG,MAAM,EAAQ,OAClC,MAApB,EAAQ,UAAoB,OAAO,eAAe,KAAK,EAAS,aAChE,EAAO,OAA8B,IAAI,MAAM,EAAQ,UACpD,CACX,EAWA,EAAY,gBAAkB,SAAyB,EAAS,GAC5D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAY,OAAS,SAAgB,EAAQ,GACnC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,YACtF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,MAAQ,EAAO,QACvB,MACJ,KAAK,EACD,EAAQ,SAAW,EAAO,QAC1B,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAY,gBAAkB,SAAyB,GAGnD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAY,OAAS,SAAgB,GACjC,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,SAChD,OAAQ,EAAQ,OAChB,QACI,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,GAGT,OAAwB,MAApB,EAAQ,UAAoB,EAAQ,eAAe,eAC9C,MAAM,UAAU,EAAQ,WAAe,EAAQ,UAAY,MAAM,UAAU,EAAQ,SAAS,MAAQ,MAAM,UAAU,EAAQ,SAAS,OAC/H,kCACR,IACX,EAWA,EAAY,SAAW,SAAkB,EAAS,GACzC,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAYd,OAXI,EAAQ,WACR,EAAO,MAAQ,EAAQ,QAAU,OAAS,UAAY,EACtD,EAAO,SAAW,GAED,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,WAChD,EAAO,MAAQ,EAAQ,QAAU,OAAS,MAAM,MAAM,YAAY,MAAM,EAAQ,OAAS,EAAQ,OAC7E,MAApB,EAAQ,UAAoB,EAAQ,eAAe,cACnB,iBAArB,EAAQ,SACf,EAAO,SAAW,EAAQ,QAAU,OAAS,OAAO,EAAQ,UAAY,EAAQ,SAEhF,EAAO,SAAW,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,UAAY,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,SAAS,MAAQ,EAAG,EAAQ,SAAS,OAAS,GAAG,WAAa,EAAQ,UACjO,CACX,EASA,EAAY,UAAU,OAAS,WAC3B,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAUA,EAAY,OACJ,EAAa,CAAC,GAAG,EAAS,OAAO,OAAO,IACrC,EAAW,GAAK,WAAa,EACpC,EAAO,EAAW,GAAK,UAAY,EACnC,EAAO,EAAW,GAAK,WAAa,EAC7B,GAGJ,CACV,CAtNmB,GAwNpB,EAAM,QAAU,WAkBZ,SAAS,EAAQ,GAEb,GADA,KAAK,cAAgB,CAAC,EAClB,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAoLA,OA5KA,EAAQ,UAAU,cAAgB,MAAM,YAQxC,EAAQ,UAAU,cAAgB,GAUlC,EAAQ,OAAS,SAAgB,GAC7B,OAAO,IAAI,EAAQ,EACvB,EAWA,EAAQ,OAAS,SAAgB,EAAS,GAKtC,GAJK,IACD,EAAS,QAAQ,UACQ,MAAzB,EAAQ,eAAyB,OAAO,eAAe,KAAK,EAAS,kBACrE,EAAO,OAA8B,IAAI,OAAO,EAAQ,eAC/B,MAAzB,EAAQ,eAAyB,OAAO,eAAe,KAAK,EAAS,iBACrE,IAAK,IAAI,EAAO,OAAO,KAAK,EAAQ,eAAgB,EAAI,EAAG,EAAI,EAAK,SAAU,EAC1E,EAAO,OAA8B,IAAI,OAAO,OAA8B,IAAI,OAAO,EAAK,IAAI,OAA8B,IAAI,OAAO,EAAQ,cAAc,EAAK,KAAK,SACnL,OAAO,CACX,EAWA,EAAQ,gBAAkB,SAAyB,EAAS,GACxD,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAQ,OAAS,SAAgB,EAAQ,GAC/B,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAwG,EAApG,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,QACtF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAO,OAAO,MACV,EAAQ,gBAAkB,MAAM,cAChC,EAAQ,cAAgB,CAAC,GAC7B,EAAM,EAAO,SACb,EAAO,MACP,EAAQ,cAAc,GAAO,EAAO,SACpC,MACJ,KAAK,EACD,EAAQ,cAAgB,EAAO,SAC/B,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAQ,gBAAkB,SAAyB,GAG/C,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAQ,OAAS,SAAgB,GAC7B,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAA6B,MAAzB,EAAQ,eAAyB,EAAQ,eAAe,iBAAkB,CAC1E,IAAK,MAAM,SAAS,EAAQ,eACxB,MAAO,iCAEX,IADA,IAAI,EAAM,OAAO,KAAK,EAAQ,eACrB,EAAI,EAAG,EAAI,EAAI,SAAU,EAC9B,IAAK,MAAM,SAAS,EAAQ,cAAc,EAAI,KAC1C,MAAO,0CACnB,CACA,OAA6B,MAAzB,EAAQ,eAAyB,EAAQ,eAAe,mBACnD,MAAM,SAAS,EAAQ,eACjB,iCACR,IACX,EAWA,EAAQ,SAAW,SAAkB,EAAS,GACrC,IACD,EAAU,CAAC,GACf,IAOI,EAPA,EAAS,CAAC,EAQd,IAPI,EAAQ,SAAW,EAAQ,YAC3B,EAAO,cAAgB,CAAC,GACxB,EAAQ,WACR,EAAO,cAAgB,IACE,MAAzB,EAAQ,eAAyB,EAAQ,eAAe,mBACxD,EAAO,cAAgB,EAAQ,eAE/B,EAAQ,gBAAkB,EAAQ,OAAO,KAAK,EAAQ,gBAAgB,OAAQ,CAC9E,EAAO,cAAgB,CAAC,EACxB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,SAAU,EAChC,EAAO,cAAc,EAAM,IAAM,EAAQ,cAAc,EAAM,GACrE,CACA,OAAO,CACX,EASA,EAAQ,UAAU,OAAS,WACvB,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CA7Me,GA+MhB,EAAM,MAAQ,WAoBV,SAAS,EAAM,GAEX,GADA,KAAK,SAAW,GACZ,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CA2NA,OAnNA,EAAM,UAAU,QAAU,GAQ1B,EAAM,UAAU,SAAW,MAAM,WAQjC,EAAM,UAAU,OAAS,EAQzB,EAAM,UAAU,KAAO,GAUvB,EAAM,OAAS,SAAgB,GAC3B,OAAO,IAAI,EAAM,EACrB,EAWA,EAAM,OAAS,SAAgB,EAAS,GAKpC,GAJK,IACD,EAAS,QAAQ,UACE,MAAnB,EAAQ,SAAmB,OAAO,eAAe,KAAK,EAAS,YAC/D,EAAO,OAA8B,IAAI,OAAO,EAAQ,SACpC,MAApB,EAAQ,UAAoB,EAAQ,SAAS,OAC7C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,SAAS,SAAU,EAC3C,MAAM,MAAM,SAAS,OAAO,EAAQ,SAAS,GAAI,EAAO,OAA8B,IAAI,QAAQ,SAK1G,OAJsB,MAAlB,EAAQ,QAAkB,OAAO,eAAe,KAAK,EAAS,WAC9D,EAAO,OAA8B,IAAI,OAAO,EAAQ,QACxC,MAAhB,EAAQ,MAAgB,OAAO,eAAe,KAAK,EAAS,SAC5D,EAAO,OAA8B,IAAI,OAAO,EAAQ,MACrD,CACX,EAWA,EAAM,gBAAkB,SAAyB,EAAS,GACtD,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAM,OAAS,SAAgB,EAAQ,GAC7B,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,MACtF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,QAAU,EAAO,SACzB,MACJ,KAAK,EACK,EAAQ,UAAY,EAAQ,SAAS,SACvC,EAAQ,SAAW,IACvB,EAAQ,SAAS,KAAK,MAAM,MAAM,SAAS,OAAO,EAAQ,EAAO,WACjE,MACJ,KAAK,EACD,EAAQ,OAAS,EAAO,SACxB,MACJ,KAAK,EACD,EAAQ,KAAO,EAAO,SACtB,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAM,gBAAkB,SAAyB,GAG7C,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAM,OAAS,SAAgB,GAC3B,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAuB,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAC7C,MAAM,SAAS,EAAQ,SACxB,MAAO,2BACf,GAAwB,MAApB,EAAQ,UAAoB,EAAQ,eAAe,YAAa,CAChE,IAAK,MAAM,QAAQ,EAAQ,UACvB,MAAO,2BACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,SAAS,SAAU,EAAG,CAC9C,IAAI,EAAQ,MAAM,MAAM,SAAS,OAAO,EAAQ,SAAS,IACzD,GAAI,EACA,MAAO,YAAc,CAC7B,CACJ,CACA,OAAsB,MAAlB,EAAQ,QAAkB,EAAQ,eAAe,aAC5C,MAAM,UAAU,EAAQ,SAAa,EAAQ,QAAU,MAAM,UAAU,EAAQ,OAAO,MAAQ,MAAM,UAAU,EAAQ,OAAO,OACvH,gCACK,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC1C,MAAM,SAAS,EAAQ,MACjB,wBACR,IACX,EAWA,EAAM,SAAW,SAAkB,EAAS,GACnC,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAUd,IATI,EAAQ,QAAU,EAAQ,YAC1B,EAAO,SAAW,IAClB,EAAQ,WACR,EAAO,QAAU,GACjB,EAAO,OAAS,EAChB,EAAO,KAAO,IAEK,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAClD,EAAO,QAAU,EAAQ,SACzB,EAAQ,UAAY,EAAQ,SAAS,OAAQ,CAC7C,EAAO,SAAW,GAClB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,SAAS,SAAU,EAC3C,EAAO,SAAS,GAAK,MAAM,MAAM,SAAS,SAAS,EAAQ,SAAS,GAAI,EAChF,CAQA,OAPsB,MAAlB,EAAQ,QAAkB,EAAQ,eAAe,YACnB,iBAAnB,EAAQ,OACf,EAAO,OAAS,EAAQ,QAAU,OAAS,OAAO,EAAQ,QAAU,EAAQ,OAE5E,EAAO,OAAS,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,QAAU,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,OAAO,MAAQ,EAAG,EAAQ,OAAO,OAAS,GAAG,UAAS,GAAQ,EAAQ,QAChN,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC/C,EAAO,KAAO,EAAQ,MACnB,CACX,EASA,EAAM,UAAU,OAAS,WACrB,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CAtPa,GAwPd,EAAM,KAAO,WAoBT,SAAS,EAAK,GAGV,GAFA,KAAK,eAAiB,CAAC,EACvB,KAAK,gBAAkB,CAAC,EACpB,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAmcc,IACN,EAAiB,EAczB,OA1cA,EAAK,UAAU,OAAS,EAQxB,EAAK,UAAU,eAAiB,MAAM,YAQtC,EAAK,UAAU,gBAAkB,MAAM,YAQvC,EAAK,UAAU,WAAa,EAU5B,EAAK,OAAS,SAAgB,GAC1B,OAAO,IAAI,EAAK,EACpB,EAWA,EAAK,OAAS,SAAgB,EAAS,GAKnC,GAJK,IACD,EAAS,QAAQ,UACC,MAAlB,EAAQ,QAAkB,OAAO,eAAe,KAAK,EAAS,WAC9D,EAAO,OAA8B,GAAG,MAAM,EAAQ,QAC5B,MAA1B,EAAQ,gBAA0B,OAAO,eAAe,KAAK,EAAS,kBACtE,IAAK,IAAI,EAAO,OAAO,KAAK,EAAQ,gBAAiB,EAAI,EAAG,EAAI,EAAK,SAAU,EAC3E,EAAO,OAA8B,IAAI,OAAO,OAA8B,IAAI,OAAO,EAAK,IAC9F,MAAM,MAAM,KAAK,OAAO,OAAO,EAAQ,eAAe,EAAK,IAAK,EAAO,OAA8B,IAAI,QAAQ,SAAS,SAElI,GAA+B,MAA3B,EAAQ,iBAA2B,OAAO,eAAe,KAAK,EAAS,mBACvE,IAAS,EAAO,OAAO,KAAK,EAAQ,iBAAkB,EAAI,EAAG,EAAI,EAAK,SAAU,EAC5E,EAAO,OAA8B,IAAI,OAAO,OAA8B,IAAI,OAAO,EAAK,IAC9F,MAAM,MAAM,KAAK,OAAO,OAAO,EAAQ,gBAAgB,EAAK,IAAK,EAAO,OAA8B,IAAI,QAAQ,SAAS,SAInI,OAF0B,MAAtB,EAAQ,YAAsB,OAAO,eAAe,KAAK,EAAS,eAClE,EAAO,OAA8B,IAAI,OAAO,EAAQ,YACrD,CACX,EAWA,EAAK,gBAAkB,SAAyB,EAAS,GACrD,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAK,OAAS,SAAgB,EAAQ,GAC5B,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAqG,EAAjG,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,KACtF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,OAAS,EAAO,QACxB,MACJ,KAAK,EACD,EAAO,OAAO,MACV,EAAQ,iBAAmB,MAAM,cACjC,EAAQ,eAAiB,CAAC,GAC9B,EAAM,EAAO,SACb,EAAO,MACP,EAAQ,eAAe,GAAO,MAAM,MAAM,KAAK,OAAO,OAAO,EAAQ,EAAO,UAC5E,MACJ,KAAK,EACD,EAAO,OAAO,MACV,EAAQ,kBAAoB,MAAM,cAClC,EAAQ,gBAAkB,CAAC,GAC/B,EAAM,EAAO,SACb,EAAO,MACP,EAAQ,gBAAgB,GAAO,MAAM,MAAM,KAAK,OAAO,OAAO,EAAQ,EAAO,UAC7E,MACJ,KAAK,EACD,EAAQ,WAAa,EAAO,SAC5B,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAK,gBAAkB,SAAyB,GAG5C,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAK,OAAS,SAAgB,GAC1B,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAsB,MAAlB,EAAQ,QAAkB,EAAQ,eAAe,UACjD,OAAQ,EAAQ,QAChB,QACI,MAAO,8BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,GAGT,GAA8B,MAA1B,EAAQ,gBAA0B,EAAQ,eAAe,kBAAmB,CAC5E,IAAK,MAAM,SAAS,EAAQ,gBACxB,MAAO,kCAEX,IADA,IAAI,EAAM,OAAO,KAAK,EAAQ,gBACrB,EAAI,EAAG,EAAI,EAAI,SAAU,EAAG,CAEjC,GADI,EAAQ,MAAM,MAAM,KAAK,OAAO,OAAO,EAAQ,eAAe,EAAI,KAElE,MAAO,kBAAoB,CACnC,CACJ,CACA,GAA+B,MAA3B,EAAQ,iBAA2B,EAAQ,eAAe,mBAAoB,CAC9E,IAAK,MAAM,SAAS,EAAQ,iBACxB,MAAO,mCAEX,IADI,EAAM,OAAO,KAAK,EAAQ,iBACrB,EAAI,EAAG,EAAI,EAAI,SAAU,EAAG,CACjC,IAAI,EACJ,GADI,EAAQ,MAAM,MAAM,KAAK,OAAO,OAAO,EAAQ,gBAAgB,EAAI,KAEnE,MAAO,mBAAqB,CACpC,CACJ,CACA,OAA0B,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBAChD,MAAM,UAAU,EAAQ,YAClB,+BACR,IACX,EAWA,EAAK,SAAW,SAAkB,EAAS,GAClC,IACD,EAAU,CAAC,GACf,IAWI,EAXA,EAAS,CAAC,EAYd,IAXI,EAAQ,SAAW,EAAQ,YAC3B,EAAO,eAAiB,CAAC,EACzB,EAAO,gBAAkB,CAAC,GAE1B,EAAQ,WACR,EAAO,OAAS,EAAQ,QAAU,OAAS,UAAY,EACvD,EAAO,WAAa,GAEF,MAAlB,EAAQ,QAAkB,EAAQ,eAAe,YACjD,EAAO,OAAS,EAAQ,QAAU,OAAS,MAAM,MAAM,KAAK,OAAO,EAAQ,QAAU,EAAQ,QAE7F,EAAQ,iBAAmB,EAAQ,OAAO,KAAK,EAAQ,iBAAiB,OAAQ,CAChF,EAAO,eAAiB,CAAC,EACzB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,SAAU,EAChC,EAAO,eAAe,EAAM,IAAM,MAAM,MAAM,KAAK,OAAO,SAAS,EAAQ,eAAe,EAAM,IAAK,EAC7G,CACA,GAAI,EAAQ,kBAAoB,EAAQ,OAAO,KAAK,EAAQ,kBAAkB,OAAQ,CAClF,EAAO,gBAAkB,CAAC,EAC1B,IAAS,EAAI,EAAG,EAAI,EAAM,SAAU,EAChC,EAAO,gBAAgB,EAAM,IAAM,MAAM,MAAM,KAAK,OAAO,SAAS,EAAQ,gBAAgB,EAAM,IAAK,EAC/G,CAGA,OAF0B,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBACrD,EAAO,WAAa,EAAQ,YACzB,CACX,EASA,EAAK,UAAU,OAAS,WACpB,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEA,EAAK,OAAS,WAiBV,SAAS,EAAO,GAEZ,GADA,KAAK,MAAQ,GACT,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CA2JA,OAnJA,EAAO,UAAU,MAAQ,MAAM,WAU/B,EAAO,OAAS,SAAgB,GAC5B,OAAO,IAAI,EAAO,EACtB,EAWA,EAAO,OAAS,SAAgB,EAAS,GAGrC,GAFK,IACD,EAAS,QAAQ,UACA,MAAjB,EAAQ,OAAiB,EAAQ,MAAM,OACvC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACxC,EAAO,OAA8B,IAAI,OAAO,EAAQ,MAAM,IACtE,OAAO,CACX,EAWA,EAAO,gBAAkB,SAAyB,EAAS,GACvD,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAO,OAAS,SAAgB,EAAQ,GAC9B,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,KAAK,OAC3F,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,GAAQ,IAAQ,GACX,EACK,EAAQ,OAAS,EAAQ,MAAM,SACjC,EAAQ,MAAQ,IACpB,EAAQ,MAAM,KAAK,EAAO,eAG1B,EAAO,SAAe,EAAN,EAGxB,CACA,OAAO,CACX,EAYA,EAAO,gBAAkB,SAAyB,GAG9C,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAO,OAAS,SAAgB,GAC5B,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,SAAU,CAC1D,IAAK,MAAM,QAAQ,EAAQ,OACvB,MAAO,wBACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACxC,IAAK,MAAM,SAAS,EAAQ,MAAM,IAC9B,MAAO,0BACnB,CACA,OAAO,IACX,EAWA,EAAO,SAAW,SAAkB,EAAS,GACpC,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAGd,IAFI,EAAQ,QAAU,EAAQ,YAC1B,EAAO,MAAQ,IACf,EAAQ,OAAS,EAAQ,MAAM,OAAQ,CACvC,EAAO,MAAQ,GACf,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACxC,EAAO,MAAM,GAAK,EAAQ,MAAM,EACxC,CACA,OAAO,CACX,EASA,EAAO,UAAU,OAAS,WACtB,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CAnLa,GAoMd,EAAK,QACG,EAAa,CAAC,GAAG,EAAS,OAAO,OAAO,IACrC,EAAW,GAAK,WAAa,EACpC,EAAO,EAAW,GAAK,WAAa,EACpC,EAAO,EAAW,GAAK,OAAS,EAChC,EAAO,EAAW,GAAK,QAAU,EACjC,EAAO,EAAW,GAAK,QAAU,EACjC,EAAO,EAAW,GAAK,OAAS,EAChC,EAAO,EAAW,GAAK,UAAY,EACnC,EAAO,EAAW,GAAK,SAAW,EAClC,EAAO,EAAW,GAAK,WAAa,EACpC,EAAO,EAAW,GAAK,SAAW,EAC3B,GAGJ,CACV,CA9eY,GAgfb,EAAM,SAAW,WAkBb,SAAS,EAAS,GACd,GAAI,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAqKA,OA7JA,EAAS,UAAU,KAAO,EAQ1B,EAAS,UAAU,OAAS,EAU5B,EAAS,OAAS,SAAgB,GAC9B,OAAO,IAAI,EAAS,EACxB,EAWA,EAAS,OAAS,SAAgB,EAAS,GAOvC,OANK,IACD,EAAS,QAAQ,UACD,MAAhB,EAAQ,MAAgB,OAAO,eAAe,KAAK,EAAS,SAC5D,EAAO,OAA8B,GAAG,OAAO,EAAQ,MACrC,MAAlB,EAAQ,QAAkB,OAAO,eAAe,KAAK,EAAS,WAC9D,EAAO,OAA8B,IAAI,OAAO,EAAQ,QACrD,CACX,EAWA,EAAS,gBAAkB,SAAyB,EAAS,GACzD,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAS,OAAS,SAAgB,EAAQ,GAChC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,SACtF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,KAAO,EAAO,SACtB,MACJ,KAAK,EACD,EAAQ,OAAS,EAAO,SACxB,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAS,gBAAkB,SAAyB,GAGhD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAS,OAAS,SAAgB,GAC9B,MAAuB,iBAAZ,GAAoC,OAAZ,EACxB,kBACS,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC1C,MAAM,UAAU,EAAQ,MAClB,yBACO,MAAlB,EAAQ,QAAkB,EAAQ,eAAe,YAC5C,MAAM,UAAU,EAAQ,QAClB,2BACR,IACX,EAWA,EAAS,SAAW,SAAkB,EAAS,GACtC,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EASd,OARI,EAAQ,WACR,EAAO,KAAO,EACd,EAAO,OAAS,GAEA,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC/C,EAAO,KAAO,EAAQ,MACJ,MAAlB,EAAQ,QAAkB,EAAQ,eAAe,YACjD,EAAO,OAAS,EAAQ,QACrB,CACX,EASA,EAAS,UAAU,OAAS,WACxB,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CA7LgB,GA+LjB,EAAM,KAAO,WA0BT,SAAS,EAAK,GAGV,GAFA,KAAK,MAAQ,GACb,KAAK,MAAQ,GACT,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAmFA,IAAI,EAqSJ,OAhXA,EAAK,UAAU,aAAe,GAQ9B,EAAK,UAAU,MAAQ,EAQvB,EAAK,UAAU,kBAAoB,GAQnC,EAAK,UAAU,KAAO,GAQtB,EAAK,UAAU,WAAa,GAQ5B,EAAK,UAAU,YAAc,KAQ7B,EAAK,UAAU,UAAY,EAQ3B,EAAK,UAAU,QAAU,EAQzB,EAAK,UAAU,MAAQ,MAAM,WAQ7B,EAAK,UAAU,MAAQ,MAAM,WAW7B,OAAO,eAAe,EAAK,UAAW,KAAM,CACxC,IAAK,MAAM,YAAY,EAAe,CAAC,eAAgB,UACvD,IAAK,MAAM,YAAY,KAW3B,EAAK,OAAS,SAAgB,GAC1B,OAAO,IAAI,EAAK,EACpB,EAWA,EAAK,OAAS,SAAgB,EAAS,GAenC,GAdK,IACD,EAAS,QAAQ,UACO,MAAxB,EAAQ,cAAwB,OAAO,eAAe,KAAK,EAAS,iBACpE,EAAO,OAA8B,IAAI,OAAO,EAAQ,cACvC,MAAjB,EAAQ,OAAiB,OAAO,eAAe,KAAK,EAAS,UAC7D,EAAO,OAA8B,IAAI,OAAO,EAAQ,OACxC,MAAhB,EAAQ,MAAgB,OAAO,eAAe,KAAK,EAAS,SAC5D,EAAO,OAA8B,IAAI,OAAO,EAAQ,MACjC,MAAvB,EAAQ,aAAuB,OAAO,eAAe,KAAK,EAAS,gBACnE,MAAM,MAAM,YAAY,OAAO,EAAQ,YAAa,EAAO,OAA8B,IAAI,QAAQ,SAChF,MAArB,EAAQ,WAAqB,OAAO,eAAe,KAAK,EAAS,cACjE,EAAO,OAA8B,IAAI,OAAO,EAAQ,WACrC,MAAnB,EAAQ,SAAmB,OAAO,eAAe,KAAK,EAAS,YAC/D,EAAO,OAA8B,IAAI,OAAO,EAAQ,SACvC,MAAjB,EAAQ,OAAiB,EAAQ,MAAM,OACvC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACxC,MAAM,MAAM,MAAM,OAAO,EAAQ,MAAM,GAAI,EAAO,OAA+B,IAAI,QAAQ,SACrG,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,MAAM,OACvC,IAAS,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACxC,MAAM,MAAM,KAAK,OAAO,EAAQ,MAAM,GAAI,EAAO,OAA+B,IAAI,QAAQ,SAKpG,OAJ0B,MAAtB,EAAQ,YAAsB,OAAO,eAAe,KAAK,EAAS,eAClE,EAAO,OAA+B,KAAK,OAAO,EAAQ,YAC7B,MAA7B,EAAQ,mBAA6B,OAAO,eAAe,KAAK,EAAS,sBACzE,EAAO,OAA+B,KAAK,OAAO,EAAQ,mBACvD,CACX,EAWA,EAAK,gBAAkB,SAAyB,EAAS,GACrD,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAK,OAAS,SAAgB,EAAQ,GAC5B,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,KACtF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,aAAe,EAAO,SAC9B,MACJ,KAAK,EACD,EAAQ,MAAQ,EAAO,SACvB,MACJ,KAAK,GACD,EAAQ,kBAAoB,EAAO,SACnC,MACJ,KAAK,EACD,EAAQ,KAAO,EAAO,SACtB,MACJ,KAAK,GACD,EAAQ,WAAa,EAAO,SAC5B,MACJ,KAAK,EACD,EAAQ,YAAc,MAAM,MAAM,YAAY,OAAO,EAAQ,EAAO,UACpE,MACJ,KAAK,EACD,EAAQ,UAAY,EAAO,SAC3B,MACJ,KAAK,EACD,EAAQ,QAAU,EAAO,SACzB,MACJ,KAAK,GACK,EAAQ,OAAS,EAAQ,MAAM,SACjC,EAAQ,MAAQ,IACpB,EAAQ,MAAM,KAAK,MAAM,MAAM,MAAM,OAAO,EAAQ,EAAO,WAC3D,MACJ,KAAK,GACK,EAAQ,OAAS,EAAQ,MAAM,SACjC,EAAQ,MAAQ,IACpB,EAAQ,MAAM,KAAK,MAAM,MAAM,KAAK,OAAO,EAAQ,EAAO,WAC1D,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAK,gBAAkB,SAAyB,GAG5C,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAK,OAAS,SAAgB,GAC1B,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,IAAI,EAAa,CAAC,EAClB,GAA4B,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,kBACvD,EAAW,GAAK,GACX,MAAM,SAAS,EAAQ,eACxB,MAAO,gCAEf,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,SAAU,CAC1D,GAAsB,IAAlB,EAAW,GACX,MAAO,sBAEX,GADA,EAAW,GAAK,GACX,MAAM,UAAU,EAAQ,OACzB,MAAO,yBACf,CACA,GAAiC,MAA7B,EAAQ,mBAA6B,EAAQ,eAAe,uBACvD,MAAM,SAAS,EAAQ,mBACxB,MAAO,qCACf,GAAoB,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC1C,MAAM,SAAS,EAAQ,MACxB,MAAO,wBACf,GAA0B,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBAChD,MAAM,SAAS,EAAQ,YACxB,MAAO,8BACf,GAA2B,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,iBAClD,EAAQ,MAAM,MAAM,YAAY,OAAO,EAAQ,cAE/C,MAAO,eAAiB,EAEhC,GAAyB,MAArB,EAAQ,WAAqB,EAAQ,eAAe,gBAC/C,MAAM,UAAU,EAAQ,YAAgB,EAAQ,WAAa,MAAM,UAAU,EAAQ,UAAU,MAAQ,MAAM,UAAU,EAAQ,UAAU,OAC1I,MAAO,mCACf,GAAuB,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,cAC7C,MAAM,UAAU,EAAQ,UAAc,EAAQ,SAAW,MAAM,UAAU,EAAQ,QAAQ,MAAQ,MAAM,UAAU,EAAQ,QAAQ,OAClI,MAAO,iCACf,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,SAAU,CAC1D,IAAK,MAAM,QAAQ,EAAQ,OACvB,MAAO,wBACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EAAG,CAE3C,GADI,EAAQ,MAAM,MAAM,MAAM,OAAO,EAAQ,MAAM,IAE/C,MAAO,SAAW,CAC1B,CACJ,CACA,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,SAAU,CAC1D,IAAK,MAAM,QAAQ,EAAQ,OACvB,MAAO,wBACX,IAAS,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EAAG,CAC3C,IAAI,EACJ,GADI,EAAQ,MAAM,MAAM,KAAK,OAAO,EAAQ,MAAM,IAE9C,MAAO,SAAW,CAC1B,CACJ,CACA,OAAO,IACX,EAWA,EAAK,SAAW,SAAkB,EAAS,GAClC,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAqCd,IApCI,EAAQ,QAAU,EAAQ,YAC1B,EAAO,MAAQ,GACf,EAAO,MAAQ,IAEf,EAAQ,WACR,EAAO,KAAO,GACd,EAAO,YAAc,KACrB,EAAO,UAAY,EACnB,EAAO,QAAU,EACjB,EAAO,WAAa,GACpB,EAAO,kBAAoB,IAEH,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,kBACvD,EAAO,aAAe,EAAQ,aAC1B,EAAQ,SACR,EAAO,GAAK,iBAEC,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,WAChD,EAAO,MAAQ,EAAQ,MACnB,EAAQ,SACR,EAAO,GAAK,UAEA,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC/C,EAAO,KAAO,EAAQ,MACC,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,iBACtD,EAAO,YAAc,MAAM,MAAM,YAAY,SAAS,EAAQ,YAAa,IACtD,MAArB,EAAQ,WAAqB,EAAQ,eAAe,eACnB,iBAAtB,EAAQ,UACf,EAAO,UAAY,EAAQ,QAAU,OAAS,OAAO,EAAQ,WAAa,EAAQ,UAElF,EAAO,UAAY,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,WAAa,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,UAAU,MAAQ,EAAG,EAAQ,UAAU,OAAS,GAAG,UAAS,GAAQ,EAAQ,WACzN,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aACnB,iBAApB,EAAQ,QACf,EAAO,QAAU,EAAQ,QAAU,OAAS,OAAO,EAAQ,SAAW,EAAQ,QAE9E,EAAO,QAAU,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,SAAW,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,QAAQ,MAAQ,EAAG,EAAQ,QAAQ,OAAS,GAAG,UAAS,GAAQ,EAAQ,SACpO,EAAQ,OAAS,EAAQ,MAAM,OAAQ,CACvC,EAAO,MAAQ,GACf,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACxC,EAAO,MAAM,GAAK,MAAM,MAAM,MAAM,SAAS,EAAQ,MAAM,GAAI,EACvE,CACA,GAAI,EAAQ,OAAS,EAAQ,MAAM,OAAQ,CACvC,EAAO,MAAQ,GACf,IAAS,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACxC,EAAO,MAAM,GAAK,MAAM,MAAM,KAAK,SAAS,EAAQ,MAAM,GAAI,EACtE,CAKA,OAJ0B,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBACrD,EAAO,WAAa,EAAQ,YACC,MAA7B,EAAQ,mBAA6B,EAAQ,eAAe,uBAC5D,EAAO,kBAAoB,EAAQ,mBAChC,CACX,EASA,EAAK,UAAU,OAAS,WACpB,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CA1ZY,GA4Zb,EAAM,cAAgB,WAsBlB,SAAS,EAAc,GACnB,GAAI,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAmDA,IAAI,EA8zEJ,OAz2EA,EAAc,UAAU,SAAW,KAQnC,EAAc,UAAU,SAAW,KAQnC,EAAc,UAAU,MAAQ,KAQhC,EAAc,UAAU,QAAU,KAQlC,EAAc,UAAU,MAAQ,KAQhC,EAAc,UAAU,UAAY,KAWpC,OAAO,eAAe,EAAc,UAAW,OAAQ,CACnD,IAAK,MAAM,YAAY,EAAe,CAAC,WAAY,WAAY,QAAS,UAAW,QAAS,cAC5F,IAAK,MAAM,YAAY,KAW3B,EAAc,OAAS,SAAgB,GACnC,OAAO,IAAI,EAAc,EAC7B,EAWA,EAAc,OAAS,SAAgB,EAAS,GAe5C,OAdK,IACD,EAAS,QAAQ,UACG,MAApB,EAAQ,UAAoB,OAAO,eAAe,KAAK,EAAS,aAChE,MAAM,MAAM,cAAc,aAAa,OAAO,EAAQ,SAAU,EAAO,OAA8B,IAAI,QAAQ,SAC7F,MAApB,EAAQ,UAAoB,OAAO,eAAe,KAAK,EAAS,aAChE,MAAM,MAAM,cAAc,aAAa,OAAO,EAAQ,SAAU,EAAO,OAA8B,IAAI,QAAQ,SAChG,MAAjB,EAAQ,OAAiB,OAAO,eAAe,KAAK,EAAS,UAC7D,MAAM,MAAM,cAAc,UAAU,OAAO,EAAQ,MAAO,EAAO,OAA8B,IAAI,QAAQ,SACxF,MAAnB,EAAQ,SAAmB,OAAO,eAAe,KAAK,EAAS,YAC/D,MAAM,MAAM,cAAc,YAAY,OAAO,EAAQ,QAAS,EAAO,OAA8B,IAAI,QAAQ,SAC9F,MAAjB,EAAQ,OAAiB,OAAO,eAAe,KAAK,EAAS,UAC7D,MAAM,MAAM,cAAc,UAAU,OAAO,EAAQ,MAAO,EAAO,OAA8B,IAAI,QAAQ,SACtF,MAArB,EAAQ,WAAqB,OAAO,eAAe,KAAK,EAAS,cACjE,MAAM,MAAM,cAAc,cAAc,OAAO,EAAQ,UAAW,EAAO,OAA8B,IAAI,QAAQ,SAChH,CACX,EAWA,EAAc,gBAAkB,SAAyB,EAAS,GAC9D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAc,OAAS,SAAgB,EAAQ,GACrC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,cACtF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,SAAW,MAAM,MAAM,cAAc,aAAa,OAAO,EAAQ,EAAO,UAChF,MACJ,KAAK,EACD,EAAQ,SAAW,MAAM,MAAM,cAAc,aAAa,OAAO,EAAQ,EAAO,UAChF,MACJ,KAAK,EACD,EAAQ,MAAQ,MAAM,MAAM,cAAc,UAAU,OAAO,EAAQ,EAAO,UAC1E,MACJ,KAAK,EACD,EAAQ,QAAU,MAAM,MAAM,cAAc,YAAY,OAAO,EAAQ,EAAO,UAC9E,MACJ,KAAK,EACD,EAAQ,MAAQ,MAAM,MAAM,cAAc,UAAU,OAAO,EAAQ,EAAO,UAC1E,MACJ,KAAK,EACD,EAAQ,UAAY,MAAM,MAAM,cAAc,cAAc,OAAO,EAAQ,EAAO,UAClF,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAc,gBAAkB,SAAyB,GAGrD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAc,OAAS,SAAgB,GACnC,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,IAAI,EAAa,CAAC,EAClB,GAAwB,MAApB,EAAQ,UAAoB,EAAQ,eAAe,cACnD,EAAW,KAAO,EAEV,EAAQ,MAAM,MAAM,cAAc,aAAa,OAAO,EAAQ,WAE9D,MAAO,YAAc,EAGjC,GAAwB,MAApB,EAAQ,UAAoB,EAAQ,eAAe,YAAa,CAChE,GAAwB,IAApB,EAAW,KACX,MAAO,wBAIP,GAHJ,EAAW,KAAO,EAEV,EAAQ,MAAM,MAAM,cAAc,aAAa,OAAO,EAAQ,UAE9D,MAAO,YAAc,CAEjC,CACA,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,SAAU,CAC1D,GAAwB,IAApB,EAAW,KACX,MAAO,wBAIP,GAHJ,EAAW,KAAO,EAEV,EAAQ,MAAM,MAAM,cAAc,UAAU,OAAO,EAAQ,OAE3D,MAAO,SAAW,CAE9B,CACA,GAAuB,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,WAAY,CAC9D,GAAwB,IAApB,EAAW,KACX,MAAO,wBAIP,GAHJ,EAAW,KAAO,EAEV,EAAQ,MAAM,MAAM,cAAc,YAAY,OAAO,EAAQ,SAE7D,MAAO,WAAa,CAEhC,CACA,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,SAAU,CAC1D,GAAwB,IAApB,EAAW,KACX,MAAO,wBAIP,GAHJ,EAAW,KAAO,EAEV,EAAQ,MAAM,MAAM,cAAc,UAAU,OAAO,EAAQ,OAE3D,MAAO,SAAW,CAE9B,CACA,GAAyB,MAArB,EAAQ,WAAqB,EAAQ,eAAe,aAAc,CAClE,GAAwB,IAApB,EAAW,KACX,MAAO,wBAGP,IAAI,EACJ,GAHJ,EAAW,KAAO,EAEV,EAAQ,MAAM,MAAM,cAAc,cAAc,OAAO,EAAQ,WAE/D,MAAO,aAAe,CAElC,CACA,OAAO,IACX,EAWA,EAAc,SAAW,SAAkB,EAAS,GAC3C,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EA+Bd,OA9BwB,MAApB,EAAQ,UAAoB,EAAQ,eAAe,cACnD,EAAO,SAAW,MAAM,MAAM,cAAc,aAAa,SAAS,EAAQ,SAAU,GAChF,EAAQ,SACR,EAAO,KAAO,aAEE,MAApB,EAAQ,UAAoB,EAAQ,eAAe,cACnD,EAAO,SAAW,MAAM,MAAM,cAAc,aAAa,SAAS,EAAQ,SAAU,GAChF,EAAQ,SACR,EAAO,KAAO,aAED,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,WAChD,EAAO,MAAQ,MAAM,MAAM,cAAc,UAAU,SAAS,EAAQ,MAAO,GACvE,EAAQ,SACR,EAAO,KAAO,UAEC,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAClD,EAAO,QAAU,MAAM,MAAM,cAAc,YAAY,SAAS,EAAQ,QAAS,GAC7E,EAAQ,SACR,EAAO,KAAO,YAED,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,WAChD,EAAO,MAAQ,MAAM,MAAM,cAAc,UAAU,SAAS,EAAQ,MAAO,GACvE,EAAQ,SACR,EAAO,KAAO,UAEG,MAArB,EAAQ,WAAqB,EAAQ,eAAe,eACpD,EAAO,UAAY,MAAM,MAAM,cAAc,cAAc,SAAS,EAAQ,UAAW,GACnF,EAAQ,SACR,EAAO,KAAO,cAEf,CACX,EASA,EAAc,UAAU,OAAS,WAC7B,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEA,EAAc,aAAe,WAiBzB,SAAS,EAAa,GAElB,GADA,KAAK,MAAQ,GACT,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CA6JA,OArJA,EAAa,UAAU,MAAQ,MAAM,WAUrC,EAAa,OAAS,SAAgB,GAClC,OAAO,IAAI,EAAa,EAC5B,EAWA,EAAa,OAAS,SAAgB,EAAS,GAG3C,GAFK,IACD,EAAS,QAAQ,UACA,MAAjB,EAAQ,OAAiB,EAAQ,MAAM,OACvC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACxC,MAAM,MAAM,cAAc,OAAO,EAAQ,MAAM,GAAI,EAAO,OAA8B,IAAI,QAAQ,SAC5G,OAAO,CACX,EAWA,EAAa,gBAAkB,SAAyB,EAAS,GAC7D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAa,OAAS,SAAgB,EAAQ,GACpC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,cAAc,aACpG,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,GAAQ,IAAQ,GACX,EACK,EAAQ,OAAS,EAAQ,MAAM,SACjC,EAAQ,MAAQ,IACpB,EAAQ,MAAM,KAAK,MAAM,MAAM,cAAc,OAAO,EAAQ,EAAO,gBAGnE,EAAO,SAAe,EAAN,EAGxB,CACA,OAAO,CACX,EAYA,EAAa,gBAAkB,SAAyB,GAGpD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAa,OAAS,SAAgB,GAClC,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,SAAU,CAC1D,IAAK,MAAM,QAAQ,EAAQ,OACvB,MAAO,wBACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EAAG,CAC3C,IAAI,EAAQ,MAAM,MAAM,cAAc,OAAO,EAAQ,MAAM,IAC3D,GAAI,EACA,MAAO,SAAW,CAC1B,CACJ,CACA,OAAO,IACX,EAWA,EAAa,SAAW,SAAkB,EAAS,GAC1C,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAGd,IAFI,EAAQ,QAAU,EAAQ,YAC1B,EAAO,MAAQ,IACf,EAAQ,OAAS,EAAQ,MAAM,OAAQ,CACvC,EAAO,MAAQ,GACf,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACxC,EAAO,MAAM,GAAK,MAAM,MAAM,cAAc,SAAS,EAAQ,MAAM,GAAI,EAC/E,CACA,OAAO,CACX,EASA,EAAa,UAAU,OAAS,WAC5B,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CArL4B,GAuL7B,EAAc,aAAe,WAiBzB,SAAS,EAAa,GAElB,GADA,KAAK,MAAQ,GACT,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CA6JA,OArJA,EAAa,UAAU,MAAQ,MAAM,WAUrC,EAAa,OAAS,SAAgB,GAClC,OAAO,IAAI,EAAa,EAC5B,EAWA,EAAa,OAAS,SAAgB,EAAS,GAG3C,GAFK,IACD,EAAS,QAAQ,UACA,MAAjB,EAAQ,OAAiB,EAAQ,MAAM,OACvC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACxC,MAAM,MAAM,cAAc,OAAO,EAAQ,MAAM,GAAI,EAAO,OAA8B,IAAI,QAAQ,SAC5G,OAAO,CACX,EAWA,EAAa,gBAAkB,SAAyB,EAAS,GAC7D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAa,OAAS,SAAgB,EAAQ,GACpC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,cAAc,aACpG,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,GAAQ,IAAQ,GACX,EACK,EAAQ,OAAS,EAAQ,MAAM,SACjC,EAAQ,MAAQ,IACpB,EAAQ,MAAM,KAAK,MAAM,MAAM,cAAc,OAAO,EAAQ,EAAO,gBAGnE,EAAO,SAAe,EAAN,EAGxB,CACA,OAAO,CACX,EAYA,EAAa,gBAAkB,SAAyB,GAGpD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAa,OAAS,SAAgB,GAClC,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,SAAU,CAC1D,IAAK,MAAM,QAAQ,EAAQ,OACvB,MAAO,wBACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EAAG,CAC3C,IAAI,EAAQ,MAAM,MAAM,cAAc,OAAO,EAAQ,MAAM,IAC3D,GAAI,EACA,MAAO,SAAW,CAC1B,CACJ,CACA,OAAO,IACX,EAWA,EAAa,SAAW,SAAkB,EAAS,GAC1C,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAGd,IAFI,EAAQ,QAAU,EAAQ,YAC1B,EAAO,MAAQ,IACf,EAAQ,OAAS,EAAQ,MAAM,OAAQ,CACvC,EAAO,MAAQ,GACf,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACxC,EAAO,MAAM,GAAK,MAAM,MAAM,cAAc,SAAS,EAAQ,MAAM,GAAI,EAC/E,CACA,OAAO,CACX,EASA,EAAa,UAAU,OAAS,WAC5B,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CArL4B,GAuL7B,EAAc,UAAY,WAsBtB,SAAS,EAAU,GACf,GAAI,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CA0PA,OAlPA,EAAU,UAAU,YAAc,GAQlC,EAAU,UAAU,oBAAqB,EAQzC,EAAU,UAAU,MAAQ,KAQ5B,EAAU,UAAU,eAAiB,EAQrC,EAAU,UAAU,SAAW,KAQ/B,EAAU,UAAU,aAAe,KAUnC,EAAU,OAAS,SAAgB,GAC/B,OAAO,IAAI,EAAU,EACzB,EAWA,EAAU,OAAS,SAAgB,EAAS,GAexC,OAdK,IACD,EAAS,QAAQ,UACM,MAAvB,EAAQ,aAAuB,OAAO,eAAe,KAAK,EAAS,gBACnE,EAAO,OAA8B,IAAI,OAAO,EAAQ,aAC1B,MAA9B,EAAQ,oBAA8B,OAAO,eAAe,KAAK,EAAS,uBAC1E,EAAO,OAA8B,IAAI,KAAK,EAAQ,oBACrC,MAAjB,EAAQ,OAAiB,OAAO,eAAe,KAAK,EAAS,UAC7D,MAAM,MAAM,OAAO,EAAQ,MAAO,EAAO,OAA8B,IAAI,QAAQ,SACzD,MAA1B,EAAQ,gBAA0B,OAAO,eAAe,KAAK,EAAS,mBACtE,EAAO,OAA8B,IAAI,OAAO,EAAQ,gBACpC,MAApB,EAAQ,UAAoB,OAAO,eAAe,KAAK,EAAS,aAChE,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,SAAU,EAAO,OAA8B,IAAI,QAAQ,SAClF,MAAxB,EAAQ,cAAwB,OAAO,eAAe,KAAK,EAAS,iBACpE,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,aAAc,EAAO,OAA8B,IAAI,QAAQ,SAC3G,CACX,EAWA,EAAU,gBAAkB,SAAyB,EAAS,GAC1D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAU,OAAS,SAAgB,EAAQ,GACjC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,cAAc,UACpG,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,YAAc,EAAO,SAC7B,MACJ,KAAK,EACD,EAAQ,mBAAqB,EAAO,OACpC,MACJ,KAAK,EACD,EAAQ,MAAQ,MAAM,MAAM,OAAO,EAAQ,EAAO,UAClD,MACJ,KAAK,EACD,EAAQ,eAAiB,EAAO,SAChC,MACJ,KAAK,EACD,EAAQ,SAAW,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,EAAO,UACzE,MACJ,KAAK,EACD,EAAQ,aAAe,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,EAAO,UAC7E,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAU,gBAAkB,SAAyB,GAGjD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAU,OAAS,SAAgB,GAC/B,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAA2B,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,iBACjD,MAAM,SAAS,EAAQ,aACxB,MAAO,+BACf,GAAkC,MAA9B,EAAQ,oBAA8B,EAAQ,eAAe,uBACnB,kBAA/B,EAAQ,mBACf,MAAO,uCAEX,IAaI,EAdR,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,WAC5C,EAAQ,MAAM,MAAM,OAAO,EAAQ,QAEnC,MAAO,SAAW,EAE1B,GAA8B,MAA1B,EAAQ,gBAA0B,EAAQ,eAAe,qBACpD,MAAM,UAAU,EAAQ,iBAAqB,EAAQ,gBAAkB,MAAM,UAAU,EAAQ,eAAe,MAAQ,MAAM,UAAU,EAAQ,eAAe,OAC9J,MAAO,wCACf,GAAwB,MAApB,EAAQ,UAAoB,EAAQ,eAAe,cAC/C,EAAQ,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,WAEvD,MAAO,YAAc,EAE7B,GAA4B,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,kBACnD,EAAQ,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,eAEvD,MAAO,gBAAkB,EAEjC,OAAO,IACX,EAWA,EAAU,SAAW,SAAkB,EAAS,GACvC,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAwBd,OAvBI,EAAQ,WACR,EAAO,YAAc,GACrB,EAAO,oBAAqB,EAC5B,EAAO,MAAQ,KACf,EAAO,eAAiB,EACxB,EAAO,SAAW,KAClB,EAAO,aAAe,MAEC,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,iBACtD,EAAO,YAAc,EAAQ,aACC,MAA9B,EAAQ,oBAA8B,EAAQ,eAAe,wBAC7D,EAAO,mBAAqB,EAAQ,oBACnB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,WAChD,EAAO,MAAQ,MAAM,MAAM,SAAS,EAAQ,MAAO,IACzB,MAA1B,EAAQ,gBAA0B,EAAQ,eAAe,oBACnB,iBAA3B,EAAQ,eACf,EAAO,eAAiB,EAAQ,QAAU,OAAS,OAAO,EAAQ,gBAAkB,EAAQ,eAE5F,EAAO,eAAiB,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,gBAAkB,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,eAAe,MAAQ,EAAG,EAAQ,eAAe,OAAS,GAAG,UAAS,GAAQ,EAAQ,gBAC5O,MAApB,EAAQ,UAAoB,EAAQ,eAAe,cACnD,EAAO,SAAW,MAAM,OAAO,SAAS,UAAU,SAAS,EAAQ,SAAU,IACrD,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,kBACvD,EAAO,aAAe,MAAM,OAAO,SAAS,UAAU,SAAS,EAAQ,aAAc,IAClF,CACX,EASA,EAAU,UAAU,OAAS,WACzB,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CAtRyB,GAwR1B,EAAc,YAAc,WAkBxB,SAAS,EAAY,GAEjB,GADA,KAAK,aAAe,GAChB,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAmLA,OA3KA,EAAY,UAAU,aAAe,MAAM,WAQ3C,EAAY,UAAU,KAAO,KAU7B,EAAY,OAAS,SAAgB,GACjC,OAAO,IAAI,EAAY,EAC3B,EAWA,EAAY,OAAS,SAAgB,EAAS,GAG1C,GAFK,IACD,EAAS,QAAQ,UACO,MAAxB,EAAQ,cAAwB,EAAQ,aAAa,OACrD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,aAAa,SAAU,EAC/C,MAAM,MAAM,cAAc,oBAAoB,OAAO,EAAQ,aAAa,GAAI,EAAO,OAA8B,IAAI,QAAQ,SAGvI,OAFoB,MAAhB,EAAQ,MAAgB,OAAO,eAAe,KAAK,EAAS,SAC5D,MAAM,MAAM,cAAc,OAAO,EAAQ,KAAM,EAAO,OAA8B,IAAI,QAAQ,SAC7F,CACX,EAWA,EAAY,gBAAkB,SAAyB,EAAS,GAC5D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAY,OAAS,SAAgB,EAAQ,GACnC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,cAAc,YACpG,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACK,EAAQ,cAAgB,EAAQ,aAAa,SAC/C,EAAQ,aAAe,IAC3B,EAAQ,aAAa,KAAK,MAAM,MAAM,cAAc,oBAAoB,OAAO,EAAQ,EAAO,WAC9F,MACJ,KAAK,EACD,EAAQ,KAAO,MAAM,MAAM,cAAc,OAAO,EAAQ,EAAO,UAC/D,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAY,gBAAkB,SAAyB,GAGnD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAY,OAAS,SAAgB,GACjC,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAA4B,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,gBAAiB,CACxE,IAAK,MAAM,QAAQ,EAAQ,cACvB,MAAO,+BACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,aAAa,SAAU,EAAG,CAElD,GADI,EAAQ,MAAM,MAAM,cAAc,oBAAoB,OAAO,EAAQ,aAAa,IAElF,MAAO,gBAAkB,CACjC,CACJ,CAEI,IAAI,EADR,GAAoB,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC3C,EAAQ,MAAM,MAAM,cAAc,OAAO,EAAQ,OAEjD,MAAO,QAAU,EAEzB,OAAO,IACX,EAWA,EAAY,SAAW,SAAkB,EAAS,GACzC,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAKd,IAJI,EAAQ,QAAU,EAAQ,YAC1B,EAAO,aAAe,IACtB,EAAQ,WACR,EAAO,KAAO,MACd,EAAQ,cAAgB,EAAQ,aAAa,OAAQ,CACrD,EAAO,aAAe,GACtB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,aAAa,SAAU,EAC/C,EAAO,aAAa,GAAK,MAAM,MAAM,cAAc,oBAAoB,SAAS,EAAQ,aAAa,GAAI,EACjH,CAGA,OAFoB,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC/C,EAAO,KAAO,MAAM,MAAM,cAAc,SAAS,EAAQ,KAAM,IAC5D,CACX,EASA,EAAY,UAAU,OAAS,WAC3B,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CA5M2B,GA8M5B,EAAc,UAAY,WAkBtB,SAAS,EAAU,GAEf,GADA,KAAK,SAAW,GACZ,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAmLA,OA3KA,EAAU,UAAU,QAAU,KAQ9B,EAAU,UAAU,SAAW,MAAM,WAUrC,EAAU,OAAS,SAAgB,GAC/B,OAAO,IAAI,EAAU,EACzB,EAWA,EAAU,OAAS,SAAgB,EAAS,GAKxC,GAJK,IACD,EAAS,QAAQ,UACE,MAAnB,EAAQ,SAAmB,OAAO,eAAe,KAAK,EAAS,YAC/D,MAAM,MAAM,cAAc,iBAAiB,OAAO,EAAQ,QAAS,EAAO,OAA8B,IAAI,QAAQ,SAChG,MAApB,EAAQ,UAAoB,EAAQ,SAAS,OAC7C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,SAAS,SAAU,EAC3C,MAAM,MAAM,cAAc,aAAa,OAAO,EAAQ,SAAS,GAAI,EAAO,OAA8B,IAAI,QAAQ,SAC5H,OAAO,CACX,EAWA,EAAU,gBAAkB,SAAyB,EAAS,GAC1D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAU,OAAS,SAAgB,EAAQ,GACjC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,cAAc,UACpG,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,QAAU,MAAM,MAAM,cAAc,iBAAiB,OAAO,EAAQ,EAAO,UACnF,MACJ,KAAK,EACK,EAAQ,UAAY,EAAQ,SAAS,SACvC,EAAQ,SAAW,IACvB,EAAQ,SAAS,KAAK,MAAM,MAAM,cAAc,aAAa,OAAO,EAAQ,EAAO,WACnF,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAU,gBAAkB,SAAyB,GAGjD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAU,OAAS,SAAgB,GAC/B,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAuB,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAC9C,EAAQ,MAAM,MAAM,cAAc,iBAAiB,OAAO,EAAQ,UAElE,MAAO,WAAa,EAE5B,GAAwB,MAApB,EAAQ,UAAoB,EAAQ,eAAe,YAAa,CAChE,IAAK,MAAM,QAAQ,EAAQ,UACvB,MAAO,2BACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,SAAS,SAAU,EAAG,CAC9C,IAAI,EACJ,GADI,EAAQ,MAAM,MAAM,cAAc,aAAa,OAAO,EAAQ,SAAS,IAEvE,MAAO,YAAc,CAC7B,CACJ,CACA,OAAO,IACX,EAWA,EAAU,SAAW,SAAkB,EAAS,GACvC,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAOd,IANI,EAAQ,QAAU,EAAQ,YAC1B,EAAO,SAAW,IAClB,EAAQ,WACR,EAAO,QAAU,MACE,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAClD,EAAO,QAAU,MAAM,MAAM,cAAc,iBAAiB,SAAS,EAAQ,QAAS,IACtF,EAAQ,UAAY,EAAQ,SAAS,OAAQ,CAC7C,EAAO,SAAW,GAClB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,SAAS,SAAU,EAC3C,EAAO,SAAS,GAAK,MAAM,MAAM,cAAc,aAAa,SAAS,EAAQ,SAAS,GAAI,EAClG,CACA,OAAO,CACX,EASA,EAAU,UAAU,OAAS,WACzB,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CA5MyB,GA8M1B,EAAc,cAAgB,WAmB1B,SAAS,EAAc,GACnB,GAAI,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CA4LA,OApLA,EAAc,UAAU,UAAY,GAQpC,EAAc,UAAU,SAAW,KAQnC,EAAc,UAAU,WAAa,KAUrC,EAAc,OAAS,SAAgB,GACnC,OAAO,IAAI,EAAc,EAC7B,EAWA,EAAc,OAAS,SAAgB,EAAS,GAS5C,OARK,IACD,EAAS,QAAQ,UACI,MAArB,EAAQ,WAAqB,OAAO,eAAe,KAAK,EAAS,cACjE,EAAO,OAA8B,IAAI,OAAO,EAAQ,WACpC,MAApB,EAAQ,UAAoB,OAAO,eAAe,KAAK,EAAS,aAChE,MAAM,MAAM,cAAc,OAAO,EAAQ,SAAU,EAAO,OAA8B,IAAI,QAAQ,SAC9E,MAAtB,EAAQ,YAAsB,OAAO,eAAe,KAAK,EAAS,eAClE,MAAM,MAAM,cAAc,OAAO,EAAQ,WAAY,EAAO,OAA8B,IAAI,QAAQ,SACnG,CACX,EAWA,EAAc,gBAAkB,SAAyB,EAAS,GAC9D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAc,OAAS,SAAgB,EAAQ,GACrC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,cAAc,cACpG,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,UAAY,EAAO,SAC3B,MACJ,KAAK,EACD,EAAQ,SAAW,MAAM,MAAM,cAAc,OAAO,EAAQ,EAAO,UACnE,MACJ,KAAK,EACD,EAAQ,WAAa,MAAM,MAAM,cAAc,OAAO,EAAQ,EAAO,UACrE,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAc,gBAAkB,SAAyB,GAGrD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAc,OAAS,SAAgB,GACnC,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAyB,MAArB,EAAQ,WAAqB,EAAQ,eAAe,eAC/C,MAAM,SAAS,EAAQ,WACxB,MAAO,6BAEX,IAKI,EANR,GAAwB,MAApB,EAAQ,UAAoB,EAAQ,eAAe,cAC/C,EAAQ,MAAM,MAAM,cAAc,OAAO,EAAQ,WAEjD,MAAO,YAAc,EAE7B,GAA0B,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBACjD,EAAQ,MAAM,MAAM,cAAc,OAAO,EAAQ,aAEjD,MAAO,cAAgB,EAE/B,OAAO,IACX,EAWA,EAAc,SAAW,SAAkB,EAAS,GAC3C,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAYd,OAXI,EAAQ,WACR,EAAO,UAAY,GACnB,EAAO,SAAW,KAClB,EAAO,WAAa,MAEC,MAArB,EAAQ,WAAqB,EAAQ,eAAe,eACpD,EAAO,UAAY,EAAQ,WACP,MAApB,EAAQ,UAAoB,EAAQ,eAAe,cACnD,EAAO,SAAW,MAAM,MAAM,cAAc,SAAS,EAAQ,SAAU,IACjD,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBACrD,EAAO,WAAa,MAAM,MAAM,cAAc,SAAS,EAAQ,WAAY,IACxE,CACX,EASA,EAAc,UAAU,OAAS,WAC7B,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CArN6B,GAuN9B,EAAc,iBAAmB,WAiB7B,SAAS,EAAiB,GACtB,GAAI,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAmJA,OA3IA,EAAiB,UAAU,KAAO,KAUlC,EAAiB,OAAS,SAAgB,GACtC,OAAO,IAAI,EAAiB,EAChC,EAWA,EAAiB,OAAS,SAAgB,EAAS,GAK/C,OAJK,IACD,EAAS,QAAQ,UACD,MAAhB,EAAQ,MAAgB,OAAO,eAAe,KAAK,EAAS,SAC5D,MAAM,MAAM,cAAc,OAAO,EAAQ,KAAM,EAAO,OAA8B,IAAI,QAAQ,SAC7F,CACX,EAWA,EAAiB,gBAAkB,SAAyB,EAAS,GACjE,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAiB,OAAS,SAAgB,EAAQ,GACxC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,cAAc,iBACpG,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,GAAQ,IAAQ,GACX,EACD,EAAQ,KAAO,MAAM,MAAM,cAAc,OAAO,EAAQ,EAAO,eAG/D,EAAO,SAAe,EAAN,EAGxB,CACA,OAAO,CACX,EAYA,EAAiB,gBAAkB,SAAyB,GAGxD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAiB,OAAS,SAAgB,GACtC,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAoB,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,QAAS,CACxD,IAAI,EAAQ,MAAM,MAAM,cAAc,OAAO,EAAQ,MACrD,GAAI,EACA,MAAO,QAAU,CACzB,CACA,OAAO,IACX,EAWA,EAAiB,SAAW,SAAkB,EAAS,GAC9C,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAKd,OAJI,EAAQ,WACR,EAAO,KAAO,MACE,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC/C,EAAO,KAAO,MAAM,MAAM,cAAc,SAAS,EAAQ,KAAM,IAC5D,CACX,EASA,EAAiB,UAAU,OAAS,WAChC,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CA1KgC,GA4KjC,EAAc,aAAe,WAoBzB,SAAS,EAAa,GAGlB,GAFA,KAAK,QAAU,GACf,KAAK,KAAO,GACR,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAuOA,OA/NA,EAAa,UAAU,QAAU,MAAM,WAQvC,EAAa,UAAU,MAAQ,GAQ/B,EAAa,UAAU,KAAO,MAAM,WAQpC,EAAa,UAAU,KAAO,KAU9B,EAAa,OAAS,SAAgB,GAClC,OAAO,IAAI,EAAa,EAC5B,EAWA,EAAa,OAAS,SAAgB,EAAS,GAG3C,GAFK,IACD,EAAS,QAAQ,UACE,MAAnB,EAAQ,SAAmB,EAAQ,QAAQ,OAC3C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,QAAQ,SAAU,EAC1C,MAAM,MAAM,cAAc,oBAAoB,OAAO,EAAQ,QAAQ,GAAI,EAAO,OAA8B,IAAI,QAAQ,SAGlI,GAFqB,MAAjB,EAAQ,OAAiB,OAAO,eAAe,KAAK,EAAS,UAC7D,EAAO,OAA8B,IAAI,OAAO,EAAQ,OACxC,MAAhB,EAAQ,MAAgB,EAAQ,KAAK,OACrC,IAAS,EAAI,EAAG,EAAI,EAAQ,KAAK,SAAU,EACvC,MAAM,MAAM,cAAc,oBAAoB,OAAO,EAAQ,KAAK,GAAI,EAAO,OAA8B,IAAI,QAAQ,SAG/H,OAFoB,MAAhB,EAAQ,MAAgB,OAAO,eAAe,KAAK,EAAS,SAC5D,MAAM,MAAM,cAAc,OAAO,EAAQ,KAAM,EAAO,OAA8B,IAAI,QAAQ,SAC7F,CACX,EAWA,EAAa,gBAAkB,SAAyB,EAAS,GAC7D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAa,OAAS,SAAgB,EAAQ,GACpC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,cAAc,aACpG,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACK,EAAQ,SAAW,EAAQ,QAAQ,SACrC,EAAQ,QAAU,IACtB,EAAQ,QAAQ,KAAK,MAAM,MAAM,cAAc,oBAAoB,OAAO,EAAQ,EAAO,WACzF,MACJ,KAAK,EACD,EAAQ,MAAQ,EAAO,SACvB,MACJ,KAAK,EACK,EAAQ,MAAQ,EAAQ,KAAK,SAC/B,EAAQ,KAAO,IACnB,EAAQ,KAAK,KAAK,MAAM,MAAM,cAAc,oBAAoB,OAAO,EAAQ,EAAO,WACtF,MACJ,KAAK,EACD,EAAQ,KAAO,MAAM,MAAM,cAAc,OAAO,EAAQ,EAAO,UAC/D,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAa,gBAAkB,SAAyB,GAGpD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAa,OAAS,SAAgB,GAClC,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAuB,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,WAAY,CAC9D,IAAK,MAAM,QAAQ,EAAQ,SACvB,MAAO,0BACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,QAAQ,SAAU,EAAG,CAE7C,GADI,EAAQ,MAAM,MAAM,cAAc,oBAAoB,OAAO,EAAQ,QAAQ,IAE7E,MAAO,WAAa,CAC5B,CACJ,CACA,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,WAC3C,MAAM,SAAS,EAAQ,OACxB,MAAO,yBACf,GAAoB,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,QAAS,CACxD,IAAK,MAAM,QAAQ,EAAQ,MACvB,MAAO,uBACX,IAAS,EAAI,EAAG,EAAI,EAAQ,KAAK,SAAU,EAAG,CAE1C,GADI,EAAQ,MAAM,MAAM,cAAc,oBAAoB,OAAO,EAAQ,KAAK,IAE1E,MAAO,QAAU,CACzB,CACJ,CAEI,IAAI,EADR,GAAoB,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC3C,EAAQ,MAAM,MAAM,cAAc,OAAO,EAAQ,OAEjD,MAAO,QAAU,EAEzB,OAAO,IACX,EAWA,EAAa,SAAW,SAAkB,EAAS,GAC1C,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EASd,IARI,EAAQ,QAAU,EAAQ,YAC1B,EAAO,QAAU,GACjB,EAAO,KAAO,IAEd,EAAQ,WACR,EAAO,MAAQ,GACf,EAAO,KAAO,MAEd,EAAQ,SAAW,EAAQ,QAAQ,OAAQ,CAC3C,EAAO,QAAU,GACjB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,QAAQ,SAAU,EAC1C,EAAO,QAAQ,GAAK,MAAM,MAAM,cAAc,oBAAoB,SAAS,EAAQ,QAAQ,GAAI,EACvG,CAGA,GAFqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,WAChD,EAAO,MAAQ,EAAQ,OACvB,EAAQ,MAAQ,EAAQ,KAAK,OAAQ,CACrC,EAAO,KAAO,GACd,IAAS,EAAI,EAAG,EAAI,EAAQ,KAAK,SAAU,EACvC,EAAO,KAAK,GAAK,MAAM,MAAM,cAAc,oBAAoB,SAAS,EAAQ,KAAK,GAAI,EACjG,CAGA,OAFoB,MAAhB,EAAQ,MAAgB,EAAQ,eAAe,UAC/C,EAAO,KAAO,MAAM,MAAM,cAAc,SAAS,EAAQ,KAAM,IAC5D,CACX,EASA,EAAa,UAAU,OAAS,WAC5B,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CAnQ4B,GAqQ7B,EAAc,oBAAsB,WAkBhC,SAAS,EAAoB,GACzB,GAAI,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAqKA,OA7JA,EAAoB,UAAU,GAAK,GAQnC,EAAoB,UAAU,WAAa,GAU3C,EAAoB,OAAS,SAAgB,GACzC,OAAO,IAAI,EAAoB,EACnC,EAWA,EAAoB,OAAS,SAAgB,EAAS,GAOlD,OANK,IACD,EAAS,QAAQ,UACH,MAAd,EAAQ,IAAc,OAAO,eAAe,KAAK,EAAS,OAC1D,EAAO,OAA8B,IAAI,OAAO,EAAQ,IAClC,MAAtB,EAAQ,YAAsB,OAAO,eAAe,KAAK,EAAS,eAClE,EAAO,OAA8B,IAAI,OAAO,EAAQ,YACrD,CACX,EAWA,EAAoB,gBAAkB,SAAyB,EAAS,GACpE,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAoB,OAAS,SAAgB,EAAQ,GAC3C,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,cAAc,oBACpG,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,GAAK,EAAO,SACpB,MACJ,KAAK,EACD,EAAQ,WAAa,EAAO,SAC5B,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAoB,gBAAkB,SAAyB,GAG3D,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAoB,OAAS,SAAgB,GACzC,MAAuB,iBAAZ,GAAoC,OAAZ,EACxB,kBACO,MAAd,EAAQ,IAAc,EAAQ,eAAe,QACxC,MAAM,SAAS,EAAQ,IACjB,sBACW,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBAChD,MAAM,SAAS,EAAQ,YACjB,8BACR,IACX,EAWA,EAAoB,SAAW,SAAkB,EAAS,GACjD,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EASd,OARI,EAAQ,WACR,EAAO,GAAK,GACZ,EAAO,WAAa,IAEN,MAAd,EAAQ,IAAc,EAAQ,eAAe,QAC7C,EAAO,GAAK,EAAQ,IACE,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBACrD,EAAO,WAAa,EAAQ,YACzB,CACX,EASA,EAAoB,UAAU,OAAS,WACnC,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CA7LmC,GA+LpC,EAAc,oBAAsB,WAkBhC,SAAS,EAAoB,GACzB,GAAI,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAmBA,IAAI,EAyKJ,OApLA,EAAoB,UAAU,UAAY,GAQ1C,EAAoB,UAAU,MAAQ,EAWtC,OAAO,eAAe,EAAoB,UAAW,KAAM,CACvD,IAAK,MAAM,YAAY,EAAe,CAAC,YAAa,UACpD,IAAK,MAAM,YAAY,KAW3B,EAAoB,OAAS,SAAgB,GACzC,OAAO,IAAI,EAAoB,EACnC,EAWA,EAAoB,OAAS,SAAgB,EAAS,GAOlD,OANK,IACD,EAAS,QAAQ,UACI,MAArB,EAAQ,WAAqB,OAAO,eAAe,KAAK,EAAS,cACjE,EAAO,OAA8B,IAAI,OAAO,EAAQ,WACvC,MAAjB,EAAQ,OAAiB,OAAO,eAAe,KAAK,EAAS,UAC7D,EAAO,OAA8B,IAAI,OAAO,EAAQ,OACrD,CACX,EAWA,EAAoB,gBAAkB,SAAyB,EAAS,GACpE,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAoB,OAAS,SAAgB,EAAQ,GAC3C,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,MAAM,cAAc,oBACpG,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,UAAY,EAAO,SAC3B,MACJ,KAAK,EACD,EAAQ,MAAQ,EAAO,SACvB,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAoB,gBAAkB,SAAyB,GAG3D,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAoB,OAAS,SAAgB,GACzC,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,IAAI,EAAa,CAAC,EAClB,GAAyB,MAArB,EAAQ,WAAqB,EAAQ,eAAe,eACpD,EAAW,GAAK,GACX,MAAM,SAAS,EAAQ,YACxB,MAAO,6BAEf,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,SAAU,CAC1D,GAAsB,IAAlB,EAAW,GACX,MAAO,sBAEX,GADA,EAAW,GAAK,GACX,MAAM,UAAU,EAAQ,OACzB,MAAO,yBACf,CACA,OAAO,IACX,EAWA,EAAoB,SAAW,SAAkB,EAAS,GACjD,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAWd,OAVyB,MAArB,EAAQ,WAAqB,EAAQ,eAAe,eACpD,EAAO,UAAY,EAAQ,UACvB,EAAQ,SACR,EAAO,GAAK,cAEC,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,WAChD,EAAO,MAAQ,EAAQ,MACnB,EAAQ,SACR,EAAO,GAAK,UAEb,CACX,EASA,EAAoB,UAAU,OAAS,WACnC,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CApNmC,GAsN7B,CACV,CA74EqB,GA+4Ef,CACV,CA/qJa,GAirJd,MAAM,aAAe,WAuBjB,SAAS,EAAa,GAClB,GAAI,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAoQA,OA5PA,EAAa,UAAU,SAAW,GAQlC,EAAa,UAAU,SAAW,GAQlC,EAAa,UAAU,aAAe,GAQtC,EAAa,UAAU,eAAiB,GAQxC,EAAa,UAAU,eAAiB,GAQxC,EAAa,UAAU,MAAQ,GAQ/B,EAAa,UAAU,mBAAqB,GAU5C,EAAa,OAAS,SAAgB,GAClC,OAAO,IAAI,EAAa,EAC5B,EAWA,EAAa,OAAS,SAAgB,EAAS,GAiB3C,OAhBK,IACD,EAAS,QAAQ,UACG,MAApB,EAAQ,UAAoB,OAAO,eAAe,KAAK,EAAS,aAChE,EAAO,OAA8B,IAAI,OAAO,EAAQ,UAChC,MAAxB,EAAQ,cAAwB,OAAO,eAAe,KAAK,EAAS,iBACpE,EAAO,OAA8B,IAAI,OAAO,EAAQ,cAC9B,MAA1B,EAAQ,gBAA0B,OAAO,eAAe,KAAK,EAAS,mBACtE,EAAO,OAA8B,IAAI,OAAO,EAAQ,gBAC9B,MAA1B,EAAQ,gBAA0B,OAAO,eAAe,KAAK,EAAS,mBACtE,EAAO,OAA8B,IAAI,OAAO,EAAQ,gBACvC,MAAjB,EAAQ,OAAiB,OAAO,eAAe,KAAK,EAAS,UAC7D,EAAO,OAA8B,IAAI,OAAO,EAAQ,OAC1B,MAA9B,EAAQ,oBAA8B,OAAO,eAAe,KAAK,EAAS,uBAC1E,EAAO,OAA+B,IAAI,OAAO,EAAQ,oBACrC,MAApB,EAAQ,UAAoB,OAAO,eAAe,KAAK,EAAS,aAChE,EAAO,OAA+B,IAAI,OAAO,EAAQ,UACtD,CACX,EAWA,EAAa,gBAAkB,SAAyB,EAAS,GAC7D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAa,OAAS,SAAgB,EAAQ,GACpC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,aAChF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,GACD,EAAQ,SAAW,EAAO,SAC1B,MACJ,KAAK,EACD,EAAQ,SAAW,EAAO,SAC1B,MACJ,KAAK,EACD,EAAQ,aAAe,EAAO,SAC9B,MACJ,KAAK,EACD,EAAQ,eAAiB,EAAO,SAChC,MACJ,KAAK,EACD,EAAQ,eAAiB,EAAO,SAChC,MACJ,KAAK,EACD,EAAQ,MAAQ,EAAO,SACvB,MACJ,KAAK,GACD,EAAQ,mBAAqB,EAAO,SACpC,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAa,gBAAkB,SAAyB,GAGpD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAa,OAAS,SAAgB,GAClC,MAAuB,iBAAZ,GAAoC,OAAZ,EACxB,kBACa,MAApB,EAAQ,UAAoB,EAAQ,eAAe,cAC9C,MAAM,SAAS,EAAQ,UACjB,4BACS,MAApB,EAAQ,UAAoB,EAAQ,eAAe,cAC9C,MAAM,SAAS,EAAQ,UACjB,4BACa,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,kBAClD,MAAM,SAAS,EAAQ,cACjB,gCACe,MAA1B,EAAQ,gBAA0B,EAAQ,eAAe,oBACpD,MAAM,SAAS,EAAQ,gBACjB,kCACe,MAA1B,EAAQ,gBAA0B,EAAQ,eAAe,oBACpD,MAAM,SAAS,EAAQ,gBACjB,kCACM,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,WAC3C,MAAM,SAAS,EAAQ,OACjB,yBACmB,MAA9B,EAAQ,oBAA8B,EAAQ,eAAe,wBACxD,MAAM,SAAS,EAAQ,oBACjB,sCACR,IACX,EAWA,EAAa,SAAW,SAAkB,EAAS,GAC1C,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAwBd,OAvBI,EAAQ,WACR,EAAO,SAAW,GAClB,EAAO,aAAe,GACtB,EAAO,eAAiB,GACxB,EAAO,eAAiB,GACxB,EAAO,MAAQ,GACf,EAAO,mBAAqB,GAC5B,EAAO,SAAW,IAEE,MAApB,EAAQ,UAAoB,EAAQ,eAAe,cACnD,EAAO,SAAW,EAAQ,UACF,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,kBACvD,EAAO,aAAe,EAAQ,cACJ,MAA1B,EAAQ,gBAA0B,EAAQ,eAAe,oBACzD,EAAO,eAAiB,EAAQ,gBACN,MAA1B,EAAQ,gBAA0B,EAAQ,eAAe,oBACzD,EAAO,eAAiB,EAAQ,gBACf,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,WAChD,EAAO,MAAQ,EAAQ,OACO,MAA9B,EAAQ,oBAA8B,EAAQ,eAAe,wBAC7D,EAAO,mBAAqB,EAAQ,oBAChB,MAApB,EAAQ,UAAoB,EAAQ,eAAe,cACnD,EAAO,SAAW,EAAQ,UACvB,CACX,EASA,EAAa,UAAU,OAAS,WAC5B,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CAjSoB,GAmSrB,MAAM,eAAiB,WAmBnB,SAAS,EAAe,GAEpB,GADA,KAAK,SAAW,CAAC,EACb,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAkNA,OA1MA,EAAe,UAAU,SAAW,MAAM,YAQ1C,EAAe,UAAU,YAAc,EAQvC,EAAe,UAAU,wBAA0B,EAUnD,EAAe,OAAS,SAAgB,GACpC,OAAO,IAAI,EAAe,EAC9B,EAWA,EAAe,OAAS,SAAgB,EAAS,GAG7C,GAFK,IACD,EAAS,QAAQ,UACG,MAApB,EAAQ,UAAoB,OAAO,eAAe,KAAK,EAAS,YAChE,IAAK,IAAI,EAAO,OAAO,KAAK,EAAQ,UAAW,EAAI,EAAG,EAAI,EAAK,SAAU,EACrE,EAAO,OAA8B,IAAI,OAAO,OAA8B,IAAI,OAAO,EAAK,IAC9F,MAAM,eAAe,OAAO,EAAQ,SAAS,EAAK,IAAK,EAAO,OAA8B,IAAI,QAAQ,SAAS,SAMzH,OAJ2B,MAAvB,EAAQ,aAAuB,OAAO,eAAe,KAAK,EAAS,gBACnE,EAAO,OAA8B,IAAI,OAAO,EAAQ,aACrB,MAAnC,EAAQ,yBAAmC,OAAO,eAAe,KAAK,EAAS,4BAC/E,EAAO,OAA8B,IAAI,OAAO,EAAQ,yBACrD,CACX,EAWA,EAAe,gBAAkB,SAAyB,EAAS,GAC/D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAe,OAAS,SAAgB,EAAQ,GACtC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAyG,EAArG,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,eAChF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAO,OAAO,MACV,EAAQ,WAAa,MAAM,cAC3B,EAAQ,SAAW,CAAC,GACxB,EAAM,EAAO,SACb,EAAO,MACP,EAAQ,SAAS,GAAO,MAAM,eAAe,OAAO,EAAQ,EAAO,UACnE,MACJ,KAAK,EACD,EAAQ,YAAc,EAAO,SAC7B,MACJ,KAAK,EACD,EAAQ,wBAA0B,EAAO,SACzC,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAe,gBAAkB,SAAyB,GAGtD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAe,OAAS,SAAgB,GACpC,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAwB,MAApB,EAAQ,UAAoB,EAAQ,eAAe,YAAa,CAChE,IAAK,MAAM,SAAS,EAAQ,UACxB,MAAO,4BAEX,IADA,IAAI,EAAM,OAAO,KAAK,EAAQ,UACrB,EAAI,EAAG,EAAI,EAAI,SAAU,EAAG,CACjC,IAAI,EAAQ,MAAM,eAAe,OAAO,EAAQ,SAAS,EAAI,KAC7D,GAAI,EACA,MAAO,YAAc,CAC7B,CACJ,CACA,OAA2B,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,kBACjD,MAAM,UAAU,EAAQ,cAAkB,EAAQ,aAAe,MAAM,UAAU,EAAQ,YAAY,MAAQ,MAAM,UAAU,EAAQ,YAAY,OAC3I,qCACwB,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,8BAC7D,MAAM,UAAU,EAAQ,0BAA8B,EAAQ,yBAA2B,MAAM,UAAU,EAAQ,wBAAwB,MAAQ,MAAM,UAAU,EAAQ,wBAAwB,OAC3L,iDACR,IACX,EAWA,EAAe,SAAW,SAAkB,EAAS,GAC5C,IACD,EAAU,CAAC,GACf,IAOI,EAPA,EAAS,CAAC,EAQd,IAPI,EAAQ,SAAW,EAAQ,YAC3B,EAAO,SAAW,CAAC,GACnB,EAAQ,WACR,EAAO,YAAc,EACrB,EAAO,wBAA0B,GAGjC,EAAQ,WAAa,EAAQ,OAAO,KAAK,EAAQ,WAAW,OAAQ,CACpE,EAAO,SAAW,CAAC,EACnB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,SAAU,EAChC,EAAO,SAAS,EAAM,IAAM,MAAM,eAAe,SAAS,EAAQ,SAAS,EAAM,IAAK,EAC9F,CAWA,OAV2B,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,iBACnB,iBAAxB,EAAQ,YACf,EAAO,YAAc,EAAQ,QAAU,OAAS,OAAO,EAAQ,aAAe,EAAQ,YAEtF,EAAO,YAAc,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,aAAe,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,YAAY,MAAQ,EAAG,EAAQ,YAAY,OAAS,GAAG,UAAS,GAAQ,EAAQ,aACjN,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,6BACnB,iBAApC,EAAQ,wBACf,EAAO,wBAA0B,EAAQ,QAAU,OAAS,OAAO,EAAQ,yBAA2B,EAAQ,wBAE9G,EAAO,wBAA0B,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,yBAA2B,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,wBAAwB,MAAQ,EAAG,EAAQ,wBAAwB,OAAS,GAAG,UAAS,GAAQ,EAAQ,yBACjS,CACX,EASA,EAAe,UAAU,OAAS,WAC9B,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CA5OsB,GA8OvB,MAAM,kBAAoB,WA6BtB,SAAS,EAAkB,GAKvB,GAJA,KAAK,aAAe,GACpB,KAAK,kBAAoB,GACzB,KAAK,oBAAsB,GAC3B,KAAK,qBAAuB,GACxB,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CA8gBA,OAtgBA,EAAkB,UAAU,aAAe,MAAM,WAQjD,EAAkB,UAAU,aAAe,EAQ3C,EAAkB,UAAU,UAAY,EAQxC,EAAkB,UAAU,mBAAqB,EAQjD,EAAkB,UAAU,qBAAuB,EAQnD,EAAkB,UAAU,kBAAoB,MAAM,WAQtD,EAAkB,UAAU,eAAiB,KAQ7C,EAAkB,UAAU,wBAA0B,EAQtD,EAAkB,UAAU,oBAAsB,MAAM,WAQxD,EAAkB,UAAU,qBAAuB,MAAM,WAQzD,EAAkB,UAAU,yBAA2B,EAQvD,EAAkB,UAAU,wBAA0B,EAQtD,EAAkB,UAAU,oCAAsC,EAUlE,EAAkB,OAAS,SAAgB,GACvC,OAAO,IAAI,EAAkB,EACjC,EAWA,EAAkB,OAAS,SAAgB,EAAS,GAmBhD,IAAI,EAWA,EAWA,EAWA,EA5BJ,GAvBK,IACD,EAAS,QAAQ,UACO,MAAxB,EAAQ,cAAwB,OAAO,eAAe,KAAK,EAAS,iBACpE,EAAO,OAA8B,IAAI,OAAO,EAAQ,cACnC,MAArB,EAAQ,WAAqB,OAAO,eAAe,KAAK,EAAS,cACjE,EAAO,OAA8B,IAAI,OAAO,EAAQ,WAC1B,MAA9B,EAAQ,oBAA8B,OAAO,eAAe,KAAK,EAAS,uBAC1E,EAAO,OAA8B,IAAI,OAAO,EAAQ,oBACxB,MAAhC,EAAQ,sBAAgC,OAAO,eAAe,KAAK,EAAS,yBAC5E,EAAO,OAA8B,IAAI,OAAO,EAAQ,sBAC9B,MAA1B,EAAQ,gBAA0B,OAAO,eAAe,KAAK,EAAS,mBACtE,MAAM,eAAe,OAAO,EAAQ,eAAgB,EAAO,OAA8B,IAAI,QAAQ,SAClE,MAAnC,EAAQ,yBAAmC,OAAO,eAAe,KAAK,EAAS,4BAC/E,EAAO,OAA8B,IAAI,OAAO,EAAQ,yBACpB,MAApC,EAAQ,0BAAoC,OAAO,eAAe,KAAK,EAAS,6BAChF,EAAO,OAA+B,IAAI,OAAO,EAAQ,0BACtB,MAAnC,EAAQ,yBAAmC,OAAO,eAAe,KAAK,EAAS,4BAC/E,EAAO,OAA+B,IAAI,OAAO,EAAQ,yBAM9C,OAHX,EADwB,MAAxB,EAAQ,cAAwB,EAAQ,aAAa,QAC3C,EAAQ,aAAa,UAErB,EAAQ,eACC,EAAQ,OAAQ,CACnC,EAAO,OAA+B,KAAK,OAC3C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,SAAU,EAClC,EAAO,OAAO,EAAQ,IAC1B,EAAO,QACX,CAMA,GAAe,OAHX,EAD6B,MAA7B,EAAQ,mBAA6B,EAAQ,kBAAkB,QACrD,EAAQ,kBAAkB,UAE1B,EAAQ,oBACC,EAAQ,OAAQ,CACnC,EAAO,OAA+B,KAAK,OAC3C,IAAS,EAAI,EAAG,EAAI,EAAQ,SAAU,EAClC,EAAO,OAAO,EAAQ,IAC1B,EAAO,QACX,CAMA,GAAe,OAHX,EAD+B,MAA/B,EAAQ,qBAA+B,EAAQ,oBAAoB,QACzD,EAAQ,oBAAoB,UAE5B,EAAQ,sBACC,EAAQ,OAAQ,CACnC,EAAO,OAA+B,KAAK,OAC3C,IAAS,EAAI,EAAG,EAAI,EAAQ,SAAU,EAClC,EAAO,OAAO,EAAQ,IAC1B,EAAO,QACX,CAMA,GAAe,OAHX,EADgC,MAAhC,EAAQ,sBAAgC,EAAQ,qBAAqB,QAC3D,EAAQ,qBAAqB,UAE7B,EAAQ,uBACC,EAAQ,OAAQ,CACnC,EAAO,OAA+B,KAAK,OAC3C,IAAS,EAAI,EAAG,EAAI,EAAQ,SAAU,EAClC,EAAO,OAAO,EAAQ,IAC1B,EAAO,QACX,CAGA,OAFmD,MAA/C,EAAQ,qCAA+C,OAAO,eAAe,KAAK,EAAS,wCAC3F,EAAO,OAA+B,KAAK,OAAO,EAAQ,qCACvD,CACX,EAWA,EAAkB,gBAAkB,SAAyB,EAAS,GAClE,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAkB,OAAS,SAAgB,EAAQ,GACzC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,kBAChF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,GAGD,GAFM,EAAQ,cAAgB,EAAQ,aAAa,SAC/C,EAAQ,aAAe,IACT,IAAP,EAAN,GAED,IADA,IAAI,EAAO,EAAO,SAAW,EAAO,IAC7B,EAAO,IAAM,GAChB,EAAQ,aAAa,KAAK,EAAO,eAErC,EAAQ,aAAa,KAAK,EAAO,UACrC,MACJ,KAAK,EACD,EAAQ,aAAe,EAAO,SAC9B,MACJ,KAAK,EACD,EAAQ,UAAY,EAAO,SAC3B,MACJ,KAAK,EACD,EAAQ,mBAAqB,EAAO,SACpC,MACJ,KAAK,EACD,EAAQ,qBAAuB,EAAO,SACtC,MACJ,KAAK,GAGD,GAFM,EAAQ,mBAAqB,EAAQ,kBAAkB,SACzD,EAAQ,kBAAoB,IACd,IAAP,EAAN,GAED,IADI,EAAO,EAAO,SAAW,EAAO,IAC7B,EAAO,IAAM,GAChB,EAAQ,kBAAkB,KAAK,EAAO,eAE1C,EAAQ,kBAAkB,KAAK,EAAO,UAC1C,MACJ,KAAK,EACD,EAAQ,eAAiB,MAAM,eAAe,OAAO,EAAQ,EAAO,UACpE,MACJ,KAAK,EACD,EAAQ,wBAA0B,EAAO,SACzC,MACJ,KAAK,GAGD,GAFM,EAAQ,qBAAuB,EAAQ,oBAAoB,SAC7D,EAAQ,oBAAsB,IAChB,IAAP,EAAN,GAED,IADI,EAAO,EAAO,SAAW,EAAO,IAC7B,EAAO,IAAM,GAChB,EAAQ,oBAAoB,KAAK,EAAO,eAE5C,EAAQ,oBAAoB,KAAK,EAAO,UAC5C,MACJ,KAAK,GAGD,GAFM,EAAQ,sBAAwB,EAAQ,qBAAqB,SAC/D,EAAQ,qBAAuB,IACjB,IAAP,EAAN,GAED,IADI,EAAO,EAAO,SAAW,EAAO,IAC7B,EAAO,IAAM,GAChB,EAAQ,qBAAqB,KAAK,EAAO,eAE7C,EAAQ,qBAAqB,KAAK,EAAO,UAC7C,MACJ,KAAK,GACD,EAAQ,yBAA2B,EAAO,SAC1C,MACJ,KAAK,GACD,EAAQ,wBAA0B,EAAO,SACzC,MACJ,KAAK,GACD,EAAQ,oCAAsC,EAAO,SACrD,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAkB,gBAAkB,SAAyB,GAGzD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAkB,OAAS,SAAgB,GACvC,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAA4B,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,gBAAiB,CACxE,IAAI,EAKJ,GAHI,EADwB,MAAxB,EAAQ,cAAwB,EAAQ,aAAa,QAC3C,EAAQ,aAAa,UAErB,EAAQ,cACjB,MAAM,QAAQ,GACf,MAAO,+BACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,SAAU,EAClC,KAAK,MAAM,UAAU,EAAQ,KAAS,EAAQ,IAAM,MAAM,UAAU,EAAQ,GAAG,MAAQ,MAAM,UAAU,EAAQ,GAAG,OAC9G,MAAO,uCACnB,CACA,GAA4B,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,mBAClD,MAAM,UAAU,EAAQ,eAAmB,EAAQ,cAAgB,MAAM,UAAU,EAAQ,aAAa,MAAQ,MAAM,UAAU,EAAQ,aAAa,OACtJ,MAAO,sCACf,GAAyB,MAArB,EAAQ,WAAqB,EAAQ,eAAe,gBAC/C,MAAM,UAAU,EAAQ,YAAgB,EAAQ,WAAa,MAAM,UAAU,EAAQ,UAAU,MAAQ,MAAM,UAAU,EAAQ,UAAU,OAC1I,MAAO,mCACf,GAAkC,MAA9B,EAAQ,oBAA8B,EAAQ,eAAe,yBACxD,MAAM,UAAU,EAAQ,qBAAyB,EAAQ,oBAAsB,MAAM,UAAU,EAAQ,mBAAmB,MAAQ,MAAM,UAAU,EAAQ,mBAAmB,OAC9K,MAAO,4CACf,GAAoC,MAAhC,EAAQ,sBAAgC,EAAQ,eAAe,2BAC1D,MAAM,UAAU,EAAQ,uBAA2B,EAAQ,sBAAwB,MAAM,UAAU,EAAQ,qBAAqB,MAAQ,MAAM,UAAU,EAAQ,qBAAqB,OACtL,MAAO,8CACf,GAAiC,MAA7B,EAAQ,mBAA6B,EAAQ,eAAe,qBAAsB,CAClF,IAAI,EAKJ,GAHI,EAD6B,MAA7B,EAAQ,mBAA6B,EAAQ,kBAAkB,QACrD,EAAQ,kBAAkB,UAE1B,EAAQ,mBACjB,MAAM,QAAQ,GACf,MAAO,oCACX,IAAS,EAAI,EAAG,EAAI,EAAQ,SAAU,EAClC,KAAK,MAAM,UAAU,EAAQ,KAAS,EAAQ,IAAM,MAAM,UAAU,EAAQ,GAAG,MAAQ,MAAM,UAAU,EAAQ,GAAG,OAC9G,MAAO,4CACnB,CACA,GAA8B,MAA1B,EAAQ,gBAA0B,EAAQ,eAAe,kBAAmB,CAC5E,IAAI,EAAQ,MAAM,eAAe,OAAO,EAAQ,gBAChD,GAAI,EACA,MAAO,kBAAoB,CACnC,CACA,GAAuC,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,8BAC7D,MAAM,UAAU,EAAQ,0BAA8B,EAAQ,yBAA2B,MAAM,UAAU,EAAQ,wBAAwB,MAAQ,MAAM,UAAU,EAAQ,wBAAwB,OAClM,MAAO,iDACf,GAAmC,MAA/B,EAAQ,qBAA+B,EAAQ,eAAe,uBAAwB,CACtF,IAAI,EAKJ,GAHI,EAD+B,MAA/B,EAAQ,qBAA+B,EAAQ,oBAAoB,QACzD,EAAQ,oBAAoB,UAE5B,EAAQ,qBACjB,MAAM,QAAQ,GACf,MAAO,sCACX,IAAS,EAAI,EAAG,EAAI,EAAQ,SAAU,EAClC,KAAK,MAAM,UAAU,EAAQ,KAAS,EAAQ,IAAM,MAAM,UAAU,EAAQ,GAAG,MAAQ,MAAM,UAAU,EAAQ,GAAG,OAC9G,MAAO,8CACnB,CACA,GAAoC,MAAhC,EAAQ,sBAAgC,EAAQ,eAAe,wBAAyB,CACxF,IAAI,EAKJ,GAHI,EADgC,MAAhC,EAAQ,sBAAgC,EAAQ,qBAAqB,QAC3D,EAAQ,qBAAqB,UAE7B,EAAQ,sBACjB,MAAM,QAAQ,GACf,MAAO,uCACX,IAAS,EAAI,EAAG,EAAI,EAAQ,SAAU,EAClC,KAAK,MAAM,UAAU,EAAQ,KAAS,EAAQ,IAAM,MAAM,UAAU,EAAQ,GAAG,MAAQ,MAAM,UAAU,EAAQ,GAAG,OAC9G,MAAO,+CACnB,CACA,OAAwC,MAApC,EAAQ,0BAAoC,EAAQ,eAAe,+BAC9D,MAAM,UAAU,EAAQ,2BAA+B,EAAQ,0BAA4B,MAAM,UAAU,EAAQ,yBAAyB,MAAQ,MAAM,UAAU,EAAQ,yBAAyB,OAC/L,kDACwB,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,8BAC7D,MAAM,UAAU,EAAQ,0BAA8B,EAAQ,yBAA2B,MAAM,UAAU,EAAQ,wBAAwB,MAAQ,MAAM,UAAU,EAAQ,wBAAwB,OAC3L,iDACoC,MAA/C,EAAQ,qCAA+C,EAAQ,eAAe,0CACzE,MAAM,UAAU,EAAQ,sCAA0C,EAAQ,qCAAuC,MAAM,UAAU,EAAQ,oCAAoC,MAAQ,MAAM,UAAU,EAAQ,oCAAoC,OAC3O,6DACR,IACX,EAWA,EAAkB,SAAW,SAAkB,EAAS,GAC/C,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAuDd,IAtDI,EAAQ,QAAU,EAAQ,YAC1B,EAAO,aAAe,GACtB,EAAO,kBAAoB,GAC3B,EAAO,oBAAsB,GAC7B,EAAO,qBAAuB,IAE9B,EAAQ,WACR,EAAO,aAAe,EACtB,EAAO,UAAY,EACnB,EAAO,mBAAqB,EAC5B,EAAO,qBAAuB,EAC9B,EAAO,eAAiB,KACxB,EAAO,wBAA0B,EACjC,EAAO,yBAA2B,EAClC,EAAO,wBAA0B,EACjC,EAAO,oCAAsC,GAErB,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,kBACnB,iBAAzB,EAAQ,aACf,EAAO,aAAe,EAAQ,QAAU,OAAS,OAAO,EAAQ,cAAgB,EAAQ,aAExF,EAAO,aAAe,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,cAAgB,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,aAAa,MAAQ,EAAG,EAAQ,aAAa,OAAS,GAAG,UAAS,GAAQ,EAAQ,cACnO,MAArB,EAAQ,WAAqB,EAAQ,eAAe,eACnB,iBAAtB,EAAQ,UACf,EAAO,UAAY,EAAQ,QAAU,OAAS,OAAO,EAAQ,WAAa,EAAQ,UAElF,EAAO,UAAY,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,WAAa,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,UAAU,MAAQ,EAAG,EAAQ,UAAU,OAAS,GAAG,UAAS,GAAQ,EAAQ,WAC9M,MAA9B,EAAQ,oBAA8B,EAAQ,eAAe,wBACnB,iBAA/B,EAAQ,mBACf,EAAO,mBAAqB,EAAQ,QAAU,OAAS,OAAO,EAAQ,oBAAsB,EAAQ,mBAEpG,EAAO,mBAAqB,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,oBAAsB,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,mBAAmB,MAAQ,EAAG,EAAQ,mBAAmB,OAAS,GAAG,UAAS,GAAQ,EAAQ,oBAChP,MAAhC,EAAQ,sBAAgC,EAAQ,eAAe,0BACnB,iBAAjC,EAAQ,qBACf,EAAO,qBAAuB,EAAQ,QAAU,OAAS,OAAO,EAAQ,sBAAwB,EAAQ,qBAExG,EAAO,qBAAuB,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,sBAAwB,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,qBAAqB,MAAQ,EAAG,EAAQ,qBAAqB,OAAS,GAAG,UAAS,GAAQ,EAAQ,sBAC9P,MAA1B,EAAQ,gBAA0B,EAAQ,eAAe,oBACzD,EAAO,eAAiB,MAAM,eAAe,SAAS,EAAQ,eAAgB,IAC3C,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,6BACnB,iBAApC,EAAQ,wBACf,EAAO,wBAA0B,EAAQ,QAAU,OAAS,OAAO,EAAQ,yBAA2B,EAAQ,wBAE9G,EAAO,wBAA0B,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,yBAA2B,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,wBAAwB,MAAQ,EAAG,EAAQ,wBAAwB,OAAS,GAAG,UAAS,GAAQ,EAAQ,yBAChQ,MAApC,EAAQ,0BAAoC,EAAQ,eAAe,8BACnB,iBAArC,EAAQ,yBACf,EAAO,yBAA2B,EAAQ,QAAU,OAAS,OAAO,EAAQ,0BAA4B,EAAQ,yBAEhH,EAAO,yBAA2B,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,0BAA4B,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,yBAAyB,MAAQ,EAAG,EAAQ,yBAAyB,OAAS,GAAG,UAAS,GAAQ,EAAQ,0BACrQ,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,6BACnB,iBAApC,EAAQ,wBACf,EAAO,wBAA0B,EAAQ,QAAU,OAAS,OAAO,EAAQ,yBAA2B,EAAQ,wBAE9G,EAAO,wBAA0B,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,yBAA2B,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,wBAAwB,MAAQ,EAAG,EAAQ,wBAAwB,OAAS,GAAG,UAAS,GAAQ,EAAQ,yBACpS,EAAQ,cAAgB,EAAQ,aAAa,OAAQ,CACrD,EAAO,aAAe,GACtB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,aAAa,SAAU,EACR,iBAA5B,EAAQ,aAAa,GAC5B,EAAO,aAAa,GAAK,EAAQ,QAAU,OAAS,OAAO,EAAQ,aAAa,IAAM,EAAQ,aAAa,GAE3G,EAAO,aAAa,GAAK,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,aAAa,IAAM,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,aAAa,GAAG,MAAQ,EAAG,EAAQ,aAAa,GAAG,OAAS,GAAG,WAAa,EAAQ,aAAa,EACrR,CACA,GAAI,EAAQ,mBAAqB,EAAQ,kBAAkB,OAAQ,CAC/D,EAAO,kBAAoB,GAC3B,IAAS,EAAI,EAAG,EAAI,EAAQ,kBAAkB,SAAU,EACR,iBAAjC,EAAQ,kBAAkB,GACjC,EAAO,kBAAkB,GAAK,EAAQ,QAAU,OAAS,OAAO,EAAQ,kBAAkB,IAAM,EAAQ,kBAAkB,GAE1H,EAAO,kBAAkB,GAAK,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,kBAAkB,IAAM,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,kBAAkB,GAAG,MAAQ,EAAG,EAAQ,kBAAkB,GAAG,OAAS,GAAG,WAAa,EAAQ,kBAAkB,EAC9S,CACA,GAAI,EAAQ,qBAAuB,EAAQ,oBAAoB,OAAQ,CACnE,EAAO,oBAAsB,GAC7B,IAAS,EAAI,EAAG,EAAI,EAAQ,oBAAoB,SAAU,EACR,iBAAnC,EAAQ,oBAAoB,GACnC,EAAO,oBAAoB,GAAK,EAAQ,QAAU,OAAS,OAAO,EAAQ,oBAAoB,IAAM,EAAQ,oBAAoB,GAEhI,EAAO,oBAAoB,GAAK,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,oBAAoB,IAAM,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,oBAAoB,GAAG,MAAQ,EAAG,EAAQ,oBAAoB,GAAG,OAAS,GAAG,WAAa,EAAQ,oBAAoB,EACxT,CACA,GAAI,EAAQ,sBAAwB,EAAQ,qBAAqB,OAAQ,CACrE,EAAO,qBAAuB,GAC9B,IAAS,EAAI,EAAG,EAAI,EAAQ,qBAAqB,SAAU,EACR,iBAApC,EAAQ,qBAAqB,GACpC,EAAO,qBAAqB,GAAK,EAAQ,QAAU,OAAS,OAAO,EAAQ,qBAAqB,IAAM,EAAQ,qBAAqB,GAEnI,EAAO,qBAAqB,GAAK,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,qBAAqB,IAAM,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,qBAAqB,GAAG,MAAQ,EAAG,EAAQ,qBAAqB,GAAG,OAAS,GAAG,WAAa,EAAQ,qBAAqB,EAC7T,CAMA,OALmD,MAA/C,EAAQ,qCAA+C,EAAQ,eAAe,yCACnB,iBAAhD,EAAQ,oCACf,EAAO,oCAAsC,EAAQ,QAAU,OAAS,OAAO,EAAQ,qCAAuC,EAAQ,oCAEtI,EAAO,oCAAsC,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,qCAAuC,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,oCAAoC,MAAQ,EAAG,EAAQ,oCAAoC,OAAS,GAAG,UAAS,GAAQ,EAAQ,qCACjV,CACX,EASA,EAAkB,UAAU,OAAS,WACjC,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CArjByB,GAujB1B,MAAM,aAAe,WAkBjB,SAAS,EAAa,GAClB,GAAI,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAqKA,OA7JA,EAAa,UAAU,WAAa,GAQpC,EAAa,UAAU,cAAgB,GAUvC,EAAa,OAAS,SAAgB,GAClC,OAAO,IAAI,EAAa,EAC5B,EAWA,EAAa,OAAS,SAAgB,EAAS,GAO3C,OANK,IACD,EAAS,QAAQ,UACK,MAAtB,EAAQ,YAAsB,OAAO,eAAe,KAAK,EAAS,eAClE,EAAO,OAA8B,IAAI,OAAO,EAAQ,YAC/B,MAAzB,EAAQ,eAAyB,OAAO,eAAe,KAAK,EAAS,kBACrE,EAAO,OAA8B,IAAI,OAAO,EAAQ,eACrD,CACX,EAWA,EAAa,gBAAkB,SAAyB,EAAS,GAC7D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAa,OAAS,SAAgB,EAAQ,GACpC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,aAChF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,WAAa,EAAO,SAC5B,MACJ,KAAK,EACD,EAAQ,cAAgB,EAAO,SAC/B,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAa,gBAAkB,SAAyB,GAGpD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAa,OAAS,SAAgB,GAClC,MAAuB,iBAAZ,GAAoC,OAAZ,EACxB,kBACe,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBAChD,MAAM,SAAS,EAAQ,YACjB,8BACc,MAAzB,EAAQ,eAAyB,EAAQ,eAAe,mBACnD,MAAM,SAAS,EAAQ,eACjB,iCACR,IACX,EAWA,EAAa,SAAW,SAAkB,EAAS,GAC1C,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EASd,OARI,EAAQ,WACR,EAAO,WAAa,GACpB,EAAO,cAAgB,IAED,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBACrD,EAAO,WAAa,EAAQ,YACH,MAAzB,EAAQ,eAAyB,EAAQ,eAAe,mBACxD,EAAO,cAAgB,EAAQ,eAC5B,CACX,EASA,EAAa,UAAU,OAAS,WAC5B,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CA7LoB,GA+LrB,MAAM,gCAAkC,WAkBpC,SAAS,EAAgC,GACrC,GAAI,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAyKA,OAjKA,EAAgC,UAAU,kBAAoB,KAQ9D,EAAgC,UAAU,QAAU,KAUpD,EAAgC,OAAS,SAAgB,GACrD,OAAO,IAAI,EAAgC,EAC/C,EAWA,EAAgC,OAAS,SAAgB,EAAS,GAO9D,OANK,IACD,EAAS,QAAQ,UACY,MAA7B,EAAQ,mBAA6B,OAAO,eAAe,KAAK,EAAS,sBACzE,MAAM,kBAAkB,OAAO,EAAQ,kBAAmB,EAAO,OAA8B,IAAI,QAAQ,SACxF,MAAnB,EAAQ,SAAmB,OAAO,eAAe,KAAK,EAAS,YAC/D,MAAM,aAAa,OAAO,EAAQ,QAAS,EAAO,OAA8B,IAAI,QAAQ,SACzF,CACX,EAWA,EAAgC,gBAAkB,SAAyB,EAAS,GAChF,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAgC,OAAS,SAAgB,EAAQ,GACvD,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,gCAChF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,kBAAoB,MAAM,kBAAkB,OAAO,EAAQ,EAAO,UAC1E,MACJ,KAAK,EACD,EAAQ,QAAU,MAAM,aAAa,OAAO,EAAQ,EAAO,UAC3D,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAgC,gBAAkB,SAAyB,GAGvE,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAgC,OAAS,SAAgB,GACrD,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBAEP,IAKI,EANR,GAAiC,MAA7B,EAAQ,mBAA6B,EAAQ,eAAe,uBACxD,EAAQ,MAAM,kBAAkB,OAAO,EAAQ,oBAE/C,MAAO,qBAAuB,EAEtC,GAAuB,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAC9C,EAAQ,MAAM,aAAa,OAAO,EAAQ,UAE1C,MAAO,WAAa,EAE5B,OAAO,IACX,EAWA,EAAgC,SAAW,SAAkB,EAAS,GAC7D,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EASd,OARI,EAAQ,WACR,EAAO,kBAAoB,KAC3B,EAAO,QAAU,MAEY,MAA7B,EAAQ,mBAA6B,EAAQ,eAAe,uBAC5D,EAAO,kBAAoB,MAAM,kBAAkB,SAAS,EAAQ,kBAAmB,IACpE,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAClD,EAAO,QAAU,MAAM,aAAa,SAAS,EAAQ,QAAS,IAC3D,CACX,EASA,EAAgC,UAAU,OAAS,WAC/C,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CAjMuC,GAmMxC,MAAM,wBAA0B,WAkB5B,SAAS,EAAwB,GAE7B,GADA,KAAK,YAAc,CAAC,EAChB,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CA0LA,OAlLA,EAAwB,UAAU,QAAU,KAQ5C,EAAwB,UAAU,YAAc,MAAM,YAUtD,EAAwB,OAAS,SAAgB,GAC7C,OAAO,IAAI,EAAwB,EACvC,EAWA,EAAwB,OAAS,SAAgB,EAAS,GAKtD,GAJK,IACD,EAAS,QAAQ,UACE,MAAnB,EAAQ,SAAmB,OAAO,eAAe,KAAK,EAAS,YAC/D,MAAM,aAAa,OAAO,EAAQ,QAAS,EAAO,OAA8B,IAAI,QAAQ,SACrE,MAAvB,EAAQ,aAAuB,OAAO,eAAe,KAAK,EAAS,eACnE,IAAK,IAAI,EAAO,OAAO,KAAK,EAAQ,aAAc,EAAI,EAAG,EAAI,EAAK,SAAU,EACxE,EAAO,OAA8B,IAAI,OAAO,OAA8B,IAAI,OAAO,EAAK,IAC9F,MAAM,SAAS,OAAO,EAAQ,YAAY,EAAK,IAAK,EAAO,OAA8B,IAAI,QAAQ,SAAS,SAEtH,OAAO,CACX,EAWA,EAAwB,gBAAkB,SAAyB,EAAS,GACxE,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAwB,OAAS,SAAgB,EAAQ,GAC/C,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAkH,EAA9G,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,wBAChF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,QAAU,MAAM,aAAa,OAAO,EAAQ,EAAO,UAC3D,MACJ,KAAK,EACD,EAAO,OAAO,MACV,EAAQ,cAAgB,MAAM,cAC9B,EAAQ,YAAc,CAAC,GAC3B,EAAM,EAAO,SACb,EAAO,MACP,EAAQ,YAAY,GAAO,MAAM,SAAS,OAAO,EAAQ,EAAO,UAChE,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAwB,gBAAkB,SAAyB,GAG/D,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAwB,OAAS,SAAgB,GAC7C,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAuB,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAC9C,EAAQ,MAAM,aAAa,OAAO,EAAQ,UAE1C,MAAO,WAAa,EAE5B,GAA2B,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,eAAgB,CACtE,IAAK,MAAM,SAAS,EAAQ,aACxB,MAAO,+BAEX,IADA,IAAI,EAAM,OAAO,KAAK,EAAQ,aACrB,EAAI,EAAG,EAAI,EAAI,SAAU,EAAG,CACjC,IAAI,EACJ,GADI,EAAQ,MAAM,SAAS,OAAO,EAAQ,YAAY,EAAI,KAEtD,MAAO,eAAiB,CAChC,CACJ,CACA,OAAO,IACX,EAWA,EAAwB,SAAW,SAAkB,EAAS,GACrD,IACD,EAAU,CAAC,GACf,IAOI,EAPA,EAAS,CAAC,EAQd,IAPI,EAAQ,SAAW,EAAQ,YAC3B,EAAO,YAAc,CAAC,GACtB,EAAQ,WACR,EAAO,QAAU,MACE,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAClD,EAAO,QAAU,MAAM,aAAa,SAAS,EAAQ,QAAS,IAE9D,EAAQ,cAAgB,EAAQ,OAAO,KAAK,EAAQ,cAAc,OAAQ,CAC1E,EAAO,YAAc,CAAC,EACtB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,SAAU,EAChC,EAAO,YAAY,EAAM,IAAM,MAAM,SAAS,SAAS,EAAQ,YAAY,EAAM,IAAK,EAC9F,CACA,OAAO,CACX,EASA,EAAwB,UAAU,OAAS,WACvC,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CAnN+B,GAqNhC,MAAM,UAAY,WAsBd,SAAS,EAAU,GAEf,GADA,KAAK,aAAe,GAChB,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CA6RA,OArRA,EAAU,UAAU,WAAa,GAQjC,EAAU,UAAU,YAAc,EAQlC,EAAU,UAAU,uBAAyB,EAQ7C,EAAU,UAAU,wBAA0B,EAQ9C,EAAU,UAAU,wBAA0B,EAQ9C,EAAU,UAAU,aAAe,MAAM,WAUzC,EAAU,OAAS,SAAgB,GAC/B,OAAO,IAAI,EAAU,EACzB,EAWA,EAAU,OAAS,SAAgB,EAAS,GAWxC,IAAI,EAKJ,GAfK,IACD,EAAS,QAAQ,UACK,MAAtB,EAAQ,YAAsB,OAAO,eAAe,KAAK,EAAS,eAClE,EAAO,OAA8B,IAAI,OAAO,EAAQ,YACjC,MAAvB,EAAQ,aAAuB,OAAO,eAAe,KAAK,EAAS,gBACnE,EAAO,OAA8B,IAAI,OAAO,EAAQ,aACtB,MAAlC,EAAQ,wBAAkC,OAAO,eAAe,KAAK,EAAS,2BAC9E,EAAO,OAA8B,IAAI,OAAO,EAAQ,wBACrB,MAAnC,EAAQ,yBAAmC,OAAO,eAAe,KAAK,EAAS,4BAC/E,EAAO,OAA8B,IAAI,OAAO,EAAQ,yBAM9C,OAHV,EADwB,MAAxB,EAAQ,cAAwB,EAAQ,aAAa,QAC5C,EAAQ,aAAa,UAErB,EAAQ,eACC,EAAO,OAAQ,CACjC,EAAO,OAA8B,IAAI,OACzC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,SAAU,EACjC,EAAO,OAAO,EAAO,IACzB,EAAO,QACX,CAGA,OAFuC,MAAnC,EAAQ,yBAAmC,OAAO,eAAe,KAAK,EAAS,4BAC/E,EAAO,OAA+B,IAAI,OAAO,EAAQ,yBACtD,CACX,EAWA,EAAU,gBAAkB,SAAyB,EAAS,GAC1D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAU,OAAS,SAAgB,EAAQ,GACjC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,UAChF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,WAAa,EAAO,SAC5B,MACJ,KAAK,EACD,EAAQ,YAAc,EAAO,SAC7B,MACJ,KAAK,EACD,EAAQ,uBAAyB,EAAO,SACxC,MACJ,KAAK,GACD,EAAQ,wBAA0B,EAAO,SACzC,MACJ,KAAK,EACD,EAAQ,wBAA0B,EAAO,SACzC,MACJ,KAAK,EAGD,GAFM,EAAQ,cAAgB,EAAQ,aAAa,SAC/C,EAAQ,aAAe,IACT,IAAP,EAAN,GAED,IADA,IAAI,EAAO,EAAO,SAAW,EAAO,IAC7B,EAAO,IAAM,GAChB,EAAQ,aAAa,KAAK,EAAO,eAErC,EAAQ,aAAa,KAAK,EAAO,UACrC,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAU,gBAAkB,SAAyB,GAGjD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAU,OAAS,SAAgB,GAC/B,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAA0B,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBAChD,MAAM,SAAS,EAAQ,YACxB,MAAO,8BACf,GAA2B,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,kBACjD,MAAM,UAAU,EAAQ,cAAkB,EAAQ,aAAe,MAAM,UAAU,EAAQ,YAAY,MAAQ,MAAM,UAAU,EAAQ,YAAY,OAClJ,MAAO,qCACf,GAAsC,MAAlC,EAAQ,wBAAkC,EAAQ,eAAe,6BAC5D,MAAM,UAAU,EAAQ,yBAA6B,EAAQ,wBAA0B,MAAM,UAAU,EAAQ,uBAAuB,MAAQ,MAAM,UAAU,EAAQ,uBAAuB,OAC9L,MAAO,gDACf,GAAuC,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,8BAC7D,MAAM,UAAU,EAAQ,0BAA8B,EAAQ,yBAA2B,MAAM,UAAU,EAAQ,wBAAwB,MAAQ,MAAM,UAAU,EAAQ,wBAAwB,OAClM,MAAO,iDACf,GAAuC,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,8BAC7D,MAAM,UAAU,EAAQ,0BAA8B,EAAQ,yBAA2B,MAAM,UAAU,EAAQ,wBAAwB,MAAQ,MAAM,UAAU,EAAQ,wBAAwB,OAClM,MAAO,iDACf,GAA4B,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,gBAAiB,CACxE,IAAI,EAKJ,GAHI,EADwB,MAAxB,EAAQ,cAAwB,EAAQ,aAAa,QAC5C,EAAQ,aAAa,UAErB,EAAQ,cAChB,MAAM,QAAQ,GACf,MAAO,+BACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,SAAU,EACjC,KAAK,MAAM,UAAU,EAAO,KAAS,EAAO,IAAM,MAAM,UAAU,EAAO,GAAG,MAAQ,MAAM,UAAU,EAAO,GAAG,OAC1G,MAAO,uCACnB,CACA,OAAO,IACX,EAWA,EAAU,SAAW,SAAkB,EAAS,GACvC,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EA2Bd,IA1BI,EAAQ,QAAU,EAAQ,YAC1B,EAAO,aAAe,IACtB,EAAQ,WACR,EAAO,WAAa,GACpB,EAAO,YAAc,EACrB,EAAO,uBAAyB,EAChC,EAAO,wBAA0B,EACjC,EAAO,wBAA0B,GAEX,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,gBACrD,EAAO,WAAa,EAAQ,YACL,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,iBACnB,iBAAxB,EAAQ,YACf,EAAO,YAAc,EAAQ,QAAU,OAAS,OAAO,EAAQ,aAAe,EAAQ,YAEtF,EAAO,YAAc,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,aAAe,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,YAAY,MAAQ,EAAG,EAAQ,YAAY,OAAS,GAAG,UAAS,GAAQ,EAAQ,aAClN,MAAlC,EAAQ,wBAAkC,EAAQ,eAAe,4BACnB,iBAAnC,EAAQ,uBACf,EAAO,uBAAyB,EAAQ,QAAU,OAAS,OAAO,EAAQ,wBAA0B,EAAQ,uBAE5G,EAAO,uBAAyB,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,wBAA0B,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,uBAAuB,MAAQ,EAAG,EAAQ,uBAAuB,OAAS,GAAG,UAAS,GAAQ,EAAQ,wBAC7P,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,6BACnB,iBAApC,EAAQ,wBACf,EAAO,wBAA0B,EAAQ,QAAU,OAAS,OAAO,EAAQ,yBAA2B,EAAQ,wBAE9G,EAAO,wBAA0B,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,yBAA2B,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,wBAAwB,MAAQ,EAAG,EAAQ,wBAAwB,OAAS,GAAG,UAAS,GAAQ,EAAQ,yBACpS,EAAQ,cAAgB,EAAQ,aAAa,OAAQ,CACrD,EAAO,aAAe,GACtB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,aAAa,SAAU,EACR,iBAA5B,EAAQ,aAAa,GAC5B,EAAO,aAAa,GAAK,EAAQ,QAAU,OAAS,OAAO,EAAQ,aAAa,IAAM,EAAQ,aAAa,GAE3G,EAAO,aAAa,GAAK,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,aAAa,IAAM,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,aAAa,GAAG,MAAQ,EAAG,EAAQ,aAAa,GAAG,OAAS,GAAG,WAAa,EAAQ,aAAa,EACrR,CAMA,OALuC,MAAnC,EAAQ,yBAAmC,EAAQ,eAAe,6BACnB,iBAApC,EAAQ,wBACf,EAAO,wBAA0B,EAAQ,QAAU,OAAS,OAAO,EAAQ,yBAA2B,EAAQ,wBAE9G,EAAO,wBAA0B,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,yBAA2B,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,wBAAwB,MAAQ,EAAG,EAAQ,wBAAwB,OAAS,GAAG,UAAS,GAAQ,EAAQ,yBACjS,CACX,EASA,EAAU,UAAU,OAAS,WACzB,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CA1TiB,GA4TlB,MAAM,SAAW,WAiBb,SAAS,EAAS,GAEd,GADA,KAAK,aAAe,CAAC,EACjB,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAoKA,OA5JA,EAAS,UAAU,aAAe,MAAM,YAUxC,EAAS,OAAS,SAAgB,GAC9B,OAAO,IAAI,EAAS,EACxB,EAWA,EAAS,OAAS,SAAgB,EAAS,GAGvC,GAFK,IACD,EAAS,QAAQ,UACO,MAAxB,EAAQ,cAAwB,OAAO,eAAe,KAAK,EAAS,gBACpE,IAAK,IAAI,EAAO,OAAO,KAAK,EAAQ,cAAe,EAAI,EAAG,EAAI,EAAK,SAAU,EACzE,EAAO,OAA8B,IAAI,OAAO,OAA8B,IAAI,OAAO,EAAK,IAC9F,MAAM,UAAU,OAAO,EAAQ,aAAa,EAAK,IAAK,EAAO,OAA8B,IAAI,QAAQ,SAAS,SAExH,OAAO,CACX,EAWA,EAAS,gBAAkB,SAAyB,EAAS,GACzD,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAS,OAAS,SAAgB,EAAQ,GAChC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAmG,EAA/F,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,SAChF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,GAAQ,IAAQ,GACX,EACD,EAAO,OAAO,MACV,EAAQ,eAAiB,MAAM,cAC/B,EAAQ,aAAe,CAAC,GAC5B,EAAM,EAAO,SACb,EAAO,MACP,EAAQ,aAAa,GAAO,MAAM,UAAU,OAAO,EAAQ,EAAO,eAGlE,EAAO,SAAe,EAAN,EAGxB,CACA,OAAO,CACX,EAYA,EAAS,gBAAkB,SAAyB,GAGhD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAS,OAAS,SAAgB,GAC9B,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAA4B,MAAxB,EAAQ,cAAwB,EAAQ,eAAe,gBAAiB,CACxE,IAAK,MAAM,SAAS,EAAQ,cACxB,MAAO,gCAEX,IADA,IAAI,EAAM,OAAO,KAAK,EAAQ,cACrB,EAAI,EAAG,EAAI,EAAI,SAAU,EAAG,CACjC,IAAI,EAAQ,MAAM,UAAU,OAAO,EAAQ,aAAa,EAAI,KAC5D,GAAI,EACA,MAAO,gBAAkB,CACjC,CACJ,CACA,OAAO,IACX,EAWA,EAAS,SAAW,SAAkB,EAAS,GACtC,IACD,EAAU,CAAC,GACf,IAGI,EAHA,EAAS,CAAC,EAId,IAHI,EAAQ,SAAW,EAAQ,YAC3B,EAAO,aAAe,CAAC,GAEvB,EAAQ,eAAiB,EAAQ,OAAO,KAAK,EAAQ,eAAe,OAAQ,CAC5E,EAAO,aAAe,CAAC,EACvB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,SAAU,EAChC,EAAO,aAAa,EAAM,IAAM,MAAM,UAAU,SAAS,EAAQ,aAAa,EAAM,IAAK,EACjG,CACA,OAAO,CACX,EASA,EAAS,UAAU,OAAS,WACxB,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CA5LgB,GA8LjB,MAAM,wBAA0B,WAkB5B,SAAS,EAAwB,GAE7B,GADA,KAAK,WAAa,GACd,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CA+KA,OAvKA,EAAwB,UAAU,WAAa,MAAM,WAQrD,EAAwB,UAAU,aAAc,EAUhD,EAAwB,OAAS,SAAgB,GAC7C,OAAO,IAAI,EAAwB,EACvC,EAWA,EAAwB,OAAS,SAAgB,EAAS,GAGtD,GAFK,IACD,EAAS,QAAQ,UACK,MAAtB,EAAQ,YAAsB,EAAQ,WAAW,OACjD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,WAAW,SAAU,EAC7C,EAAO,OAA8B,IAAI,OAAO,EAAQ,WAAW,IAG3E,OAF2B,MAAvB,EAAQ,aAAuB,OAAO,eAAe,KAAK,EAAS,gBACnE,EAAO,OAA8B,IAAI,KAAK,EAAQ,aACnD,CACX,EAWA,EAAwB,gBAAkB,SAAyB,EAAS,GACxE,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAwB,OAAS,SAAgB,EAAQ,GAC/C,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,wBAChF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACK,EAAQ,YAAc,EAAQ,WAAW,SAC3C,EAAQ,WAAa,IACzB,EAAQ,WAAW,KAAK,EAAO,UAC/B,MACJ,KAAK,EACD,EAAQ,YAAc,EAAO,OAC7B,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAwB,gBAAkB,SAAyB,GAG/D,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAwB,OAAS,SAAgB,GAC7C,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAA0B,MAAtB,EAAQ,YAAsB,EAAQ,eAAe,cAAe,CACpE,IAAK,MAAM,QAAQ,EAAQ,YACvB,MAAO,6BACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,WAAW,SAAU,EAC7C,IAAK,MAAM,SAAS,EAAQ,WAAW,IACnC,MAAO,+BACnB,CACA,OAA2B,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,gBACnB,kBAAxB,EAAQ,YACR,gCACR,IACX,EAWA,EAAwB,SAAW,SAAkB,EAAS,GACrD,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAKd,IAJI,EAAQ,QAAU,EAAQ,YAC1B,EAAO,WAAa,IACpB,EAAQ,WACR,EAAO,aAAc,GACrB,EAAQ,YAAc,EAAQ,WAAW,OAAQ,CACjD,EAAO,WAAa,GACpB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,WAAW,SAAU,EAC7C,EAAO,WAAW,GAAK,EAAQ,WAAW,EAClD,CAGA,OAF2B,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,iBACtD,EAAO,YAAc,EAAQ,aAC1B,CACX,EASA,EAAwB,UAAU,OAAS,WACvC,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CAxM+B,GA0MhC,MAAM,OAAS,WAqBX,SAAS,EAAO,GAEZ,GADA,KAAK,eAAiB,CAAC,EACnB,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAyPA,OAjPA,EAAO,UAAU,OAAS,KAQ1B,EAAO,UAAU,eAAiB,MAAM,YAQxC,EAAO,UAAU,QAAU,KAQ3B,EAAO,UAAU,eAAiB,EAQlC,EAAO,UAAU,qBAAsB,EAUvC,EAAO,OAAS,SAAgB,GAC5B,OAAO,IAAI,EAAO,EACtB,EAWA,EAAO,OAAS,SAAgB,EAAS,GAOrC,GANK,IACD,EAAS,QAAQ,UACC,MAAlB,EAAQ,QAAkB,OAAO,eAAe,KAAK,EAAS,WAC9D,MAAM,aAAa,OAAO,EAAQ,OAAQ,EAAO,OAA8B,IAAI,QAAQ,SACxE,MAAnB,EAAQ,SAAmB,OAAO,eAAe,KAAK,EAAS,YAC/D,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,QAAS,EAAO,OAA8B,IAAI,QAAQ,SAC/E,MAA1B,EAAQ,gBAA0B,OAAO,eAAe,KAAK,EAAS,kBACtE,IAAK,IAAI,EAAO,OAAO,KAAK,EAAQ,gBAAiB,EAAI,EAAG,EAAI,EAAK,SAAU,EAC3E,EAAO,OAA8B,IAAI,OAAO,OAA8B,IAAI,OAAO,EAAK,IAC9F,MAAM,eAAe,OAAO,EAAQ,eAAe,EAAK,IAAK,EAAO,OAA8B,IAAI,QAAQ,SAAS,SAM/H,OAJ8B,MAA1B,EAAQ,gBAA0B,OAAO,eAAe,KAAK,EAAS,mBACtE,EAAO,OAA8B,IAAI,OAAO,EAAQ,gBACzB,MAA/B,EAAQ,qBAA+B,OAAO,eAAe,KAAK,EAAS,wBAC3E,EAAO,OAA8B,IAAI,KAAK,EAAQ,qBACnD,CACX,EAWA,EAAO,gBAAkB,SAAyB,EAAS,GACvD,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAO,OAAS,SAAgB,EAAQ,GAC9B,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAiG,EAA7F,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,OAChF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,OAAS,MAAM,aAAa,OAAO,EAAQ,EAAO,UAC1D,MACJ,KAAK,EACD,EAAO,OAAO,MACV,EAAQ,iBAAmB,MAAM,cACjC,EAAQ,eAAiB,CAAC,GAC9B,EAAM,EAAO,SACb,EAAO,MACP,EAAQ,eAAe,GAAO,MAAM,eAAe,OAAO,EAAQ,EAAO,UACzE,MACJ,KAAK,EACD,EAAQ,QAAU,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,EAAO,UACxE,MACJ,KAAK,EACD,EAAQ,eAAiB,EAAO,SAChC,MACJ,KAAK,EACD,EAAQ,oBAAsB,EAAO,OACrC,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAO,gBAAkB,SAAyB,GAG9C,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAO,OAAS,SAAgB,GAC5B,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAsB,MAAlB,EAAQ,QAAkB,EAAQ,eAAe,YAC7C,EAAQ,MAAM,aAAa,OAAO,EAAQ,SAE1C,MAAO,UAAY,EAE3B,GAA8B,MAA1B,EAAQ,gBAA0B,EAAQ,eAAe,kBAAmB,CAC5E,IAAK,MAAM,SAAS,EAAQ,gBACxB,MAAO,kCAEX,IADA,IAAI,EAAM,OAAO,KAAK,EAAQ,gBACrB,EAAI,EAAG,EAAI,EAAI,SAAU,EAAG,CACjC,IAAI,EACJ,GADI,EAAQ,MAAM,eAAe,OAAO,EAAQ,eAAe,EAAI,KAE/D,MAAO,kBAAoB,CACnC,CACJ,CACA,GAAuB,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAC9C,EAAQ,MAAM,OAAO,SAAS,UAAU,OAAO,EAAQ,UAEvD,MAAO,WAAa,EAE5B,OAA8B,MAA1B,EAAQ,gBAA0B,EAAQ,eAAe,qBACpD,MAAM,UAAU,EAAQ,iBAAqB,EAAQ,gBAAkB,MAAM,UAAU,EAAQ,eAAe,MAAQ,MAAM,UAAU,EAAQ,eAAe,OACvJ,wCACoB,MAA/B,EAAQ,qBAA+B,EAAQ,eAAe,wBACnB,kBAAhC,EAAQ,oBACR,wCACR,IACX,EAWA,EAAO,SAAW,SAAkB,EAAS,GACpC,IACD,EAAU,CAAC,GACf,IAaI,EAbA,EAAS,CAAC,EAcd,IAbI,EAAQ,SAAW,EAAQ,YAC3B,EAAO,eAAiB,CAAC,GACzB,EAAQ,WACR,EAAO,OAAS,KAChB,EAAO,QAAU,KACjB,EAAO,eAAiB,EACxB,EAAO,qBAAsB,GAEX,MAAlB,EAAQ,QAAkB,EAAQ,eAAe,YACjD,EAAO,OAAS,MAAM,aAAa,SAAS,EAAQ,OAAQ,IACzC,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAClD,EAAO,QAAU,MAAM,OAAO,SAAS,UAAU,SAAS,EAAQ,QAAS,IAE3E,EAAQ,iBAAmB,EAAQ,OAAO,KAAK,EAAQ,iBAAiB,OAAQ,CAChF,EAAO,eAAiB,CAAC,EACzB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,SAAU,EAChC,EAAO,eAAe,EAAM,IAAM,MAAM,eAAe,SAAS,EAAQ,eAAe,EAAM,IAAK,EAC1G,CAQA,OAP8B,MAA1B,EAAQ,gBAA0B,EAAQ,eAAe,oBACnB,iBAA3B,EAAQ,eACf,EAAO,eAAiB,EAAQ,QAAU,OAAS,OAAO,EAAQ,gBAAkB,EAAQ,eAE5F,EAAO,eAAiB,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,gBAAkB,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,eAAe,MAAQ,EAAG,EAAQ,eAAe,OAAS,GAAG,UAAS,GAAQ,EAAQ,gBACjO,MAA/B,EAAQ,qBAA+B,EAAQ,eAAe,yBAC9D,EAAO,oBAAsB,EAAQ,qBAClC,CACX,EASA,EAAO,UAAU,OAAS,WACtB,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CArRc,GAuRf,MAAM,oBAAsB,WAmBxB,SAAS,EAAoB,GAEzB,GADA,KAAK,YAAc,CAAC,EAChB,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAgNA,OAxMA,EAAoB,UAAU,QAAU,KAQxC,EAAoB,UAAU,kBAAoB,KAQlD,EAAoB,UAAU,YAAc,MAAM,YAUlD,EAAoB,OAAS,SAAgB,GACzC,OAAO,IAAI,EAAoB,EACnC,EAWA,EAAoB,OAAS,SAAgB,EAAS,GAOlD,GANK,IACD,EAAS,QAAQ,UACE,MAAnB,EAAQ,SAAmB,OAAO,eAAe,KAAK,EAAS,YAC/D,MAAM,aAAa,OAAO,EAAQ,QAAS,EAAO,OAA8B,IAAI,QAAQ,SAC/D,MAA7B,EAAQ,mBAA6B,OAAO,eAAe,KAAK,EAAS,sBACzE,MAAM,kBAAkB,OAAO,EAAQ,kBAAmB,EAAO,OAA8B,IAAI,QAAQ,SACpF,MAAvB,EAAQ,aAAuB,OAAO,eAAe,KAAK,EAAS,eACnE,IAAK,IAAI,EAAO,OAAO,KAAK,EAAQ,aAAc,EAAI,EAAG,EAAI,EAAK,SAAU,EACxE,EAAO,OAA8B,IAAI,OAAO,OAA8B,IAAI,OAAO,EAAK,IAC9F,MAAM,SAAS,OAAO,EAAQ,YAAY,EAAK,IAAK,EAAO,OAA8B,IAAI,QAAQ,SAAS,SAEtH,OAAO,CACX,EAWA,EAAoB,gBAAkB,SAAyB,EAAS,GACpE,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAoB,OAAS,SAAgB,EAAQ,GAC3C,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAA8G,EAA1G,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,oBAChF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,QAAU,MAAM,aAAa,OAAO,EAAQ,EAAO,UAC3D,MACJ,KAAK,EACD,EAAQ,kBAAoB,MAAM,kBAAkB,OAAO,EAAQ,EAAO,UAC1E,MACJ,KAAK,EACD,EAAO,OAAO,MACV,EAAQ,cAAgB,MAAM,cAC9B,EAAQ,YAAc,CAAC,GAC3B,EAAM,EAAO,SACb,EAAO,MACP,EAAQ,YAAY,GAAO,MAAM,SAAS,OAAO,EAAQ,EAAO,UAChE,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAoB,gBAAkB,SAAyB,GAG3D,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAoB,OAAS,SAAgB,GACzC,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAuB,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAC9C,EAAQ,MAAM,aAAa,OAAO,EAAQ,UAE1C,MAAO,WAAa,EAE5B,GAAiC,MAA7B,EAAQ,mBAA6B,EAAQ,eAAe,uBACxD,EAAQ,MAAM,kBAAkB,OAAO,EAAQ,oBAE/C,MAAO,qBAAuB,EAEtC,GAA2B,MAAvB,EAAQ,aAAuB,EAAQ,eAAe,eAAgB,CACtE,IAAK,MAAM,SAAS,EAAQ,aACxB,MAAO,+BAEX,IADA,IAAI,EAAM,OAAO,KAAK,EAAQ,aACrB,EAAI,EAAG,EAAI,EAAI,SAAU,EAAG,CACjC,IAAI,EACJ,GADI,EAAQ,MAAM,SAAS,OAAO,EAAQ,YAAY,EAAI,KAEtD,MAAO,eAAiB,CAChC,CACJ,CACA,OAAO,IACX,EAWA,EAAoB,SAAW,SAAkB,EAAS,GACjD,IACD,EAAU,CAAC,GACf,IAWI,EAXA,EAAS,CAAC,EAYd,IAXI,EAAQ,SAAW,EAAQ,YAC3B,EAAO,YAAc,CAAC,GACtB,EAAQ,WACR,EAAO,QAAU,KACjB,EAAO,kBAAoB,MAER,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aAClD,EAAO,QAAU,MAAM,aAAa,SAAS,EAAQ,QAAS,IACjC,MAA7B,EAAQ,mBAA6B,EAAQ,eAAe,uBAC5D,EAAO,kBAAoB,MAAM,kBAAkB,SAAS,EAAQ,kBAAmB,IAEvF,EAAQ,cAAgB,EAAQ,OAAO,KAAK,EAAQ,cAAc,OAAQ,CAC1E,EAAO,YAAc,CAAC,EACtB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,SAAU,EAChC,EAAO,YAAY,EAAM,IAAM,MAAM,SAAS,SAAS,EAAQ,YAAY,EAAM,IAAK,EAC9F,CACA,OAAO,CACX,EASA,EAAoB,UAAU,OAAS,WACnC,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CA1O2B,GA4O5B,MAAM,eAAiB,WAoBnB,SAAS,EAAe,GAKpB,GAJA,KAAK,MAAQ,GACb,KAAK,iBAAmB,GACxB,KAAK,uBAAyB,CAAC,EAC/B,KAAK,kCAAoC,GACrC,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAuRA,OA/QA,EAAe,UAAU,MAAQ,MAAM,WAQvC,EAAe,UAAU,iBAAmB,MAAM,WAQlD,EAAe,UAAU,uBAAyB,MAAM,YAQxD,EAAe,UAAU,kCAAoC,MAAM,WAUnE,EAAe,OAAS,SAAgB,GACpC,OAAO,IAAI,EAAe,EAC9B,EAWA,EAAe,OAAS,SAAgB,EAAS,GAG7C,GAFK,IACD,EAAS,QAAQ,UACA,MAAjB,EAAQ,OAAiB,EAAQ,MAAM,OACvC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACpC,EAAQ,MAAM,aAAc,YAC5B,EAAO,OAA8B,IACrC,EAAO,MAAM,EAAQ,MAAM,KAE3B,MAAM,MAAM,OAAO,EAAQ,MAAM,GAAI,EAAO,OAA8B,IAAI,QAAQ,SAClG,IAAI,EAKJ,GAAc,OAHV,EAD4B,MAA5B,EAAQ,kBAA4B,EAAQ,iBAAiB,QACpD,EAAQ,iBAAiB,UAEzB,EAAQ,mBACC,EAAO,OACzB,IAAS,EAAI,EAAG,EAAI,EAAO,SAAU,EACjC,MAAM,oBAAoB,OAAO,EAAO,GAAI,EAAO,OAA8B,IAAI,QAAQ,SACrG,GAAiD,MAA7C,EAAQ,mCAA6C,EAAQ,kCAAkC,OAC/F,IAAS,EAAI,EAAG,EAAI,EAAQ,kCAAkC,SAAU,EAChE,EAAQ,kCAAkC,aAAc,YACxD,EAAO,OAA8B,IACrC,EAAO,MAAM,EAAQ,kCAAkC,KAEvD,MAAM,MAAM,OAAO,EAAQ,kCAAkC,GAAI,EAAO,OAA8B,IAAI,QAAQ,SAC9H,GAAsC,MAAlC,EAAQ,wBAAkC,OAAO,eAAe,KAAK,EAAS,0BACzE,KAAI,EAAO,OAAO,KAAK,EAAQ,wBAApC,IAA6D,EAAI,EAAG,EAAI,EAAK,SAAU,EACnF,EAAO,OAA8B,IAAI,OAAO,OAA8B,IAAI,OAAO,EAAK,IAC9F,MAAM,wBAAwB,OAAO,EAAQ,uBAAuB,EAAK,IAAK,EAAO,OAA8B,IAAI,QAAQ,SAAS,QAF3E,CAIrE,OAAO,CACX,EAWA,EAAe,gBAAkB,SAAyB,EAAS,GAC/D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAe,OAAS,SAAgB,EAAQ,GACtC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAyG,EAArG,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,eAChF,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACK,EAAQ,OAAS,EAAQ,MAAM,SACjC,EAAQ,MAAQ,IACpB,EAAQ,MAAM,KAAK,MAAM,MAAM,OAAO,EAAQ,EAAO,WACrD,MACJ,KAAK,EACK,EAAQ,kBAAoB,EAAQ,iBAAiB,SACvD,EAAQ,iBAAmB,IAC/B,EAAQ,iBAAiB,KAAK,MAAM,oBAAoB,OAAO,EAAQ,EAAO,WAC9E,MACJ,KAAK,EACD,EAAO,OAAO,MACV,EAAQ,yBAA2B,MAAM,cACzC,EAAQ,uBAAyB,CAAC,GACtC,EAAM,EAAO,SACb,EAAO,MACP,EAAQ,uBAAuB,GAAO,MAAM,wBAAwB,OAAO,EAAQ,EAAO,UAC1F,MACJ,KAAK,EACK,EAAQ,mCAAqC,EAAQ,kCAAkC,SACzF,EAAQ,kCAAoC,IAChD,EAAQ,kCAAkC,KAAK,MAAM,MAAM,OAAO,EAAQ,EAAO,WACjF,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAe,gBAAkB,SAAyB,GAGtD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAe,OAAS,SAAgB,GACpC,GAAuB,iBAAZ,GAAoC,OAAZ,EAC/B,MAAO,kBACX,GAAqB,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,SAAU,CAC1D,IAAK,MAAM,QAAQ,EAAQ,OACvB,MAAO,wBACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACxC,KAAM,EAAQ,MAAM,aAAc,YAAa,CAE3C,GADI,EAAQ,MAAM,MAAM,OAAO,EAAQ,MAAM,IAEzC,MAAO,SAAW,CAC1B,CACR,CACA,GAAgC,MAA5B,EAAQ,kBAA4B,EAAQ,eAAe,oBAAqB,CAChF,IAAI,EAKJ,GAHI,EAD4B,MAA5B,EAAQ,kBAA4B,EAAQ,iBAAiB,QACpD,EAAQ,iBAAiB,UAEzB,EAAQ,kBAChB,MAAM,QAAQ,GACf,MAAO,mCACX,IAAS,EAAI,EAAG,EAAI,EAAO,SAAU,EAAG,CAEpC,GADI,EAAQ,MAAM,oBAAoB,OAAO,EAAO,IAEhD,MAAO,oBAAsB,CACrC,CACJ,CACA,GAAsC,MAAlC,EAAQ,wBAAkC,EAAQ,eAAe,0BAA2B,CAC5F,IAAK,MAAM,SAAS,EAAQ,wBACxB,MAAO,0CACX,IAAI,EAAM,OAAO,KAAK,EAAQ,wBAC9B,IAAS,EAAI,EAAG,EAAI,EAAI,SAAU,EAAG,CAEjC,GADI,EAAQ,MAAM,wBAAwB,OAAO,EAAQ,uBAAuB,EAAI,KAEhF,MAAO,0BAA4B,CAC3C,CACJ,CACA,GAAiD,MAA7C,EAAQ,mCAA6C,EAAQ,eAAe,qCAAsC,CAClH,IAAK,MAAM,QAAQ,EAAQ,mCACvB,MAAO,oDACX,IAAS,EAAI,EAAG,EAAI,EAAQ,kCAAkC,SAAU,EACpE,KAAM,EAAQ,kCAAkC,aAAc,YAAa,CACvE,IAAI,EACJ,GADI,EAAQ,MAAM,MAAM,OAAO,EAAQ,kCAAkC,IAErE,MAAO,qCAAuC,CACtD,CACR,CACA,OAAO,IACX,EAWA,EAAe,SAAW,SAAkB,EAAS,GAC5C,IACD,EAAU,CAAC,GACf,IAuBI,EAvBA,EAAS,CAAC,EAQd,IAPI,EAAQ,QAAU,EAAQ,YAC1B,EAAO,MAAQ,GACf,EAAO,iBAAmB,GAC1B,EAAO,kCAAoC,KAE3C,EAAQ,SAAW,EAAQ,YAC3B,EAAO,uBAAyB,CAAC,GACjC,EAAQ,OAAS,EAAQ,MAAM,OAAQ,CACvC,EAAO,MAAQ,GACf,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,SAAU,EACxC,EAAO,MAAM,GAAK,MAAM,MAAM,SAAS,EAAQ,MAAM,GAAI,EACjE,CACA,GAAI,EAAQ,kBAAoB,EAAQ,iBAAiB,OAAQ,CAC7D,EAAO,iBAAmB,GAC1B,IAAS,EAAI,EAAG,EAAI,EAAQ,iBAAiB,SAAU,EACnD,EAAO,iBAAiB,GAAK,MAAM,oBAAoB,SAAS,EAAQ,iBAAiB,GAAI,EACrG,CACA,GAAI,EAAQ,mCAAqC,EAAQ,kCAAkC,OAAQ,CAC/F,EAAO,kCAAoC,GAC3C,IAAS,EAAI,EAAG,EAAI,EAAQ,kCAAkC,SAAU,EACpE,EAAO,kCAAkC,GAAK,MAAM,MAAM,SAAS,EAAQ,kCAAkC,GAAI,EACzH,CAEA,GAAI,EAAQ,yBAA2B,EAAQ,OAAO,KAAK,EAAQ,yBAAyB,OAAQ,CAChG,EAAO,uBAAyB,CAAC,EACjC,IAAS,EAAI,EAAG,EAAI,EAAM,SAAU,EAChC,EAAO,uBAAuB,EAAM,IAAM,MAAM,wBAAwB,SAAS,EAAQ,uBAAuB,EAAM,IAAK,EACnI,CACA,OAAO,CACX,EASA,EAAe,UAAU,OAAS,WAC9B,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CArTsB,GAuTvB,MAAM,OAAS,WAOX,IASQ,EATJ,EAAS,CAAC,EAgNd,OA9MA,EAAO,WAOC,EAAW,CAAC,GAEP,UAAY,WAkBjB,SAAS,EAAU,GACf,GAAI,EACA,IAAK,IAAI,EAAO,OAAO,KAAK,GAAa,EAAI,EAAG,EAAI,EAAK,SAAU,EACpC,MAAvB,EAAW,EAAK,MAChB,KAAK,EAAK,IAAM,EAAW,EAAK,IAChD,CAwKA,OAhKA,EAAU,UAAU,QAAU,EAQ9B,EAAU,UAAU,MAAQ,EAU5B,EAAU,OAAS,SAAgB,GAC/B,OAAO,IAAI,EAAU,EACzB,EAWA,EAAU,OAAS,SAAgB,EAAS,GAOxC,OANK,IACD,EAAS,QAAQ,UACE,MAAnB,EAAQ,SAAmB,OAAO,eAAe,KAAK,EAAS,YAC/D,EAAO,OAA8B,GAAG,MAAM,EAAQ,SACrC,MAAjB,EAAQ,OAAiB,OAAO,eAAe,KAAK,EAAS,UAC7D,EAAO,OAA8B,IAAI,MAAM,EAAQ,OACpD,CACX,EAWA,EAAU,gBAAkB,SAAyB,EAAS,GAC1D,OAAO,KAAK,OAAO,EAAS,GAAQ,QACxC,EAaA,EAAU,OAAS,SAAgB,EAAQ,GACjC,aAAkB,UACpB,EAAS,QAAQ,OAAO,IAE5B,IADA,IAAI,OAAiB,IAAX,EAAuB,EAAO,IAAM,EAAO,IAAM,EAAQ,EAAU,IAAI,MAAM,OAAO,SAAS,UAChG,EAAO,IAAM,GAAK,CACrB,IAAI,EAAM,EAAO,SACjB,OAAQ,IAAQ,GAChB,KAAK,EACD,EAAQ,QAAU,EAAO,QACzB,MACJ,KAAK,EACD,EAAQ,MAAQ,EAAO,QACvB,MACJ,QACI,EAAO,SAAe,EAAN,GAGxB,CACA,OAAO,CACX,EAYA,EAAU,gBAAkB,SAAyB,GAGjD,OAFM,aAAkB,UACpB,EAAS,IAAI,QAAQ,IAClB,KAAK,OAAO,EAAQ,EAAO,SACtC,EAUA,EAAU,OAAS,SAAgB,GAC/B,MAAuB,iBAAZ,GAAoC,OAAZ,EACxB,kBACY,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,cAC7C,MAAM,UAAU,EAAQ,UAAc,EAAQ,SAAW,MAAM,UAAU,EAAQ,QAAQ,MAAQ,MAAM,UAAU,EAAQ,QAAQ,OAC3H,iCACM,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,WAC3C,MAAM,UAAU,EAAQ,OAClB,0BACR,IACX,EAWA,EAAU,SAAW,SAAkB,EAAS,GACvC,IACD,EAAU,CAAC,GACf,IAAI,EAAS,CAAC,EAYd,OAXI,EAAQ,WACR,EAAO,QAAU,EACjB,EAAO,MAAQ,GAEI,MAAnB,EAAQ,SAAmB,EAAQ,eAAe,aACnB,iBAApB,EAAQ,QACf,EAAO,QAAU,EAAQ,QAAU,OAAS,OAAO,EAAQ,SAAW,EAAQ,QAE9E,EAAO,QAAU,EAAQ,QAAU,OAAS,MAAM,KAAK,UAAU,SAAS,KAAK,EAAQ,SAAW,EAAQ,QAAU,OAAS,IAAI,MAAM,SAAS,EAAQ,QAAQ,MAAQ,EAAG,EAAQ,QAAQ,OAAS,GAAG,WAAa,EAAQ,SAC/M,MAAjB,EAAQ,OAAiB,EAAQ,eAAe,WAChD,EAAO,MAAQ,EAAQ,OACpB,CACX,EASA,EAAU,UAAU,OAAS,WACzB,OAAO,KAAK,YAAY,SAAS,KAAM,UAAU,KAAK,cAC1D,EAEO,CACV,CAhMoB,GAkMd,GAGJ,CACV,CAxNc,GA0Nf,OAAO,QAAU","file":"/npm/@apollo/usage-reporting-protobuf@4.1.1/generated/cjs/protobuf.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@apollo/usage-reporting-protobuf@4.1.1/generated/cjs/protobuf.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\n\"use strict\";\n\nvar $protobuf = require(\"@apollo/protobufjs/minimal\");\n\n// Common aliases\nvar $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nvar $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\n$root.Trace = (function() {\n\n    /**\n     * Properties of a Trace.\n     * @exports ITrace\n     * @interface ITrace\n     * @property {google.protobuf.ITimestamp|null} [startTime] Trace startTime\n     * @property {google.protobuf.ITimestamp|null} [endTime] Trace endTime\n     * @property {number|null} [durationNs] Trace durationNs\n     * @property {Trace.INode|null} [root] Trace root\n     * @property {boolean|null} [isIncomplete] Trace isIncomplete\n     * @property {string|null} [signature] Trace signature\n     * @property {string|null} [unexecutedOperationBody] Trace unexecutedOperationBody\n     * @property {string|null} [unexecutedOperationName] Trace unexecutedOperationName\n     * @property {Trace.IDetails|null} [details] Trace details\n     * @property {string|null} [clientName] Trace clientName\n     * @property {string|null} [clientVersion] Trace clientVersion\n     * @property {Trace.IHTTP|null} [http] Trace http\n     * @property {Trace.ICachePolicy|null} [cachePolicy] Trace cachePolicy\n     * @property {Trace.IQueryPlanNode|null} [queryPlan] Trace queryPlan\n     * @property {boolean|null} [fullQueryCacheHit] Trace fullQueryCacheHit\n     * @property {boolean|null} [persistedQueryHit] Trace persistedQueryHit\n     * @property {boolean|null} [persistedQueryRegister] Trace persistedQueryRegister\n     * @property {boolean|null} [registeredOperation] Trace registeredOperation\n     * @property {boolean|null} [forbiddenOperation] Trace forbiddenOperation\n     * @property {number|null} [fieldExecutionWeight] Trace fieldExecutionWeight\n     */\n\n    /**\n     * Constructs a new Trace.\n     * @exports Trace\n     * @classdesc Represents a Trace.\n     * @implements ITrace\n     * @constructor\n     * @param {ITrace=} [properties] Properties to set\n     */\n    function Trace(properties) {\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * Trace startTime.\n     * @member {google.protobuf.ITimestamp|null|undefined} startTime\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.startTime = null;\n\n    /**\n     * Trace endTime.\n     * @member {google.protobuf.ITimestamp|null|undefined} endTime\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.endTime = null;\n\n    /**\n     * Trace durationNs.\n     * @member {number} durationNs\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.durationNs = 0;\n\n    /**\n     * Trace root.\n     * @member {Trace.INode|null|undefined} root\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.root = null;\n\n    /**\n     * Trace isIncomplete.\n     * @member {boolean} isIncomplete\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.isIncomplete = false;\n\n    /**\n     * Trace signature.\n     * @member {string} signature\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.signature = \"\";\n\n    /**\n     * Trace unexecutedOperationBody.\n     * @member {string} unexecutedOperationBody\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.unexecutedOperationBody = \"\";\n\n    /**\n     * Trace unexecutedOperationName.\n     * @member {string} unexecutedOperationName\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.unexecutedOperationName = \"\";\n\n    /**\n     * Trace details.\n     * @member {Trace.IDetails|null|undefined} details\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.details = null;\n\n    /**\n     * Trace clientName.\n     * @member {string} clientName\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.clientName = \"\";\n\n    /**\n     * Trace clientVersion.\n     * @member {string} clientVersion\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.clientVersion = \"\";\n\n    /**\n     * Trace http.\n     * @member {Trace.IHTTP|null|undefined} http\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.http = null;\n\n    /**\n     * Trace cachePolicy.\n     * @member {Trace.ICachePolicy|null|undefined} cachePolicy\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.cachePolicy = null;\n\n    /**\n     * Trace queryPlan.\n     * @member {Trace.IQueryPlanNode|null|undefined} queryPlan\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.queryPlan = null;\n\n    /**\n     * Trace fullQueryCacheHit.\n     * @member {boolean} fullQueryCacheHit\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.fullQueryCacheHit = false;\n\n    /**\n     * Trace persistedQueryHit.\n     * @member {boolean} persistedQueryHit\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.persistedQueryHit = false;\n\n    /**\n     * Trace persistedQueryRegister.\n     * @member {boolean} persistedQueryRegister\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.persistedQueryRegister = false;\n\n    /**\n     * Trace registeredOperation.\n     * @member {boolean} registeredOperation\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.registeredOperation = false;\n\n    /**\n     * Trace forbiddenOperation.\n     * @member {boolean} forbiddenOperation\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.forbiddenOperation = false;\n\n    /**\n     * Trace fieldExecutionWeight.\n     * @member {number} fieldExecutionWeight\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.fieldExecutionWeight = 0;\n\n    /**\n     * Creates a new Trace instance using the specified properties.\n     * @function create\n     * @memberof Trace\n     * @static\n     * @param {ITrace=} [properties] Properties to set\n     * @returns {Trace} Trace instance\n     */\n    Trace.create = function create(properties) {\n        return new Trace(properties);\n    };\n\n    /**\n     * Encodes the specified Trace message. Does not implicitly {@link Trace.verify|verify} messages.\n     * @function encode\n     * @memberof Trace\n     * @static\n     * @param {ITrace} message Trace message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    Trace.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.endTime != null && Object.hasOwnProperty.call(message, \"endTime\"))\n            $root.google.protobuf.Timestamp.encode(message.endTime, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n        if (message.startTime != null && Object.hasOwnProperty.call(message, \"startTime\"))\n            $root.google.protobuf.Timestamp.encode(message.startTime, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n        if (message.details != null && Object.hasOwnProperty.call(message, \"details\"))\n            $root.Trace.Details.encode(message.details, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n        if (message.clientName != null && Object.hasOwnProperty.call(message, \"clientName\"))\n            writer.uint32(/* id 7, wireType 2 =*/58).string(message.clientName);\n        if (message.clientVersion != null && Object.hasOwnProperty.call(message, \"clientVersion\"))\n            writer.uint32(/* id 8, wireType 2 =*/66).string(message.clientVersion);\n        if (message.http != null && Object.hasOwnProperty.call(message, \"http\"))\n            $root.Trace.HTTP.encode(message.http, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n        if (message.durationNs != null && Object.hasOwnProperty.call(message, \"durationNs\"))\n            writer.uint32(/* id 11, wireType 0 =*/88).uint64(message.durationNs);\n        if (message.root != null && Object.hasOwnProperty.call(message, \"root\"))\n            $root.Trace.Node.encode(message.root, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n        if (message.cachePolicy != null && Object.hasOwnProperty.call(message, \"cachePolicy\"))\n            $root.Trace.CachePolicy.encode(message.cachePolicy, writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n        if (message.signature != null && Object.hasOwnProperty.call(message, \"signature\"))\n            writer.uint32(/* id 19, wireType 2 =*/154).string(message.signature);\n        if (message.fullQueryCacheHit != null && Object.hasOwnProperty.call(message, \"fullQueryCacheHit\"))\n            writer.uint32(/* id 20, wireType 0 =*/160).bool(message.fullQueryCacheHit);\n        if (message.persistedQueryHit != null && Object.hasOwnProperty.call(message, \"persistedQueryHit\"))\n            writer.uint32(/* id 21, wireType 0 =*/168).bool(message.persistedQueryHit);\n        if (message.persistedQueryRegister != null && Object.hasOwnProperty.call(message, \"persistedQueryRegister\"))\n            writer.uint32(/* id 22, wireType 0 =*/176).bool(message.persistedQueryRegister);\n        if (message.registeredOperation != null && Object.hasOwnProperty.call(message, \"registeredOperation\"))\n            writer.uint32(/* id 24, wireType 0 =*/192).bool(message.registeredOperation);\n        if (message.forbiddenOperation != null && Object.hasOwnProperty.call(message, \"forbiddenOperation\"))\n            writer.uint32(/* id 25, wireType 0 =*/200).bool(message.forbiddenOperation);\n        if (message.queryPlan != null && Object.hasOwnProperty.call(message, \"queryPlan\"))\n            $root.Trace.QueryPlanNode.encode(message.queryPlan, writer.uint32(/* id 26, wireType 2 =*/210).fork()).ldelim();\n        if (message.unexecutedOperationBody != null && Object.hasOwnProperty.call(message, \"unexecutedOperationBody\"))\n            writer.uint32(/* id 27, wireType 2 =*/218).string(message.unexecutedOperationBody);\n        if (message.unexecutedOperationName != null && Object.hasOwnProperty.call(message, \"unexecutedOperationName\"))\n            writer.uint32(/* id 28, wireType 2 =*/226).string(message.unexecutedOperationName);\n        if (message.fieldExecutionWeight != null && Object.hasOwnProperty.call(message, \"fieldExecutionWeight\"))\n            writer.uint32(/* id 31, wireType 1 =*/249).double(message.fieldExecutionWeight);\n        if (message.isIncomplete != null && Object.hasOwnProperty.call(message, \"isIncomplete\"))\n            writer.uint32(/* id 33, wireType 0 =*/264).bool(message.isIncomplete);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified Trace message, length delimited. Does not implicitly {@link Trace.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof Trace\n     * @static\n     * @param {ITrace} message Trace message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    Trace.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a Trace message from the specified reader or buffer.\n     * @function decode\n     * @memberof Trace\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {Trace} Trace\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    Trace.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 4:\n                message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                break;\n            case 3:\n                message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                break;\n            case 11:\n                message.durationNs = reader.uint64();\n                break;\n            case 14:\n                message.root = $root.Trace.Node.decode(reader, reader.uint32());\n                break;\n            case 33:\n                message.isIncomplete = reader.bool();\n                break;\n            case 19:\n                message.signature = reader.string();\n                break;\n            case 27:\n                message.unexecutedOperationBody = reader.string();\n                break;\n            case 28:\n                message.unexecutedOperationName = reader.string();\n                break;\n            case 6:\n                message.details = $root.Trace.Details.decode(reader, reader.uint32());\n                break;\n            case 7:\n                message.clientName = reader.string();\n                break;\n            case 8:\n                message.clientVersion = reader.string();\n                break;\n            case 10:\n                message.http = $root.Trace.HTTP.decode(reader, reader.uint32());\n                break;\n            case 18:\n                message.cachePolicy = $root.Trace.CachePolicy.decode(reader, reader.uint32());\n                break;\n            case 26:\n                message.queryPlan = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                break;\n            case 20:\n                message.fullQueryCacheHit = reader.bool();\n                break;\n            case 21:\n                message.persistedQueryHit = reader.bool();\n                break;\n            case 22:\n                message.persistedQueryRegister = reader.bool();\n                break;\n            case 24:\n                message.registeredOperation = reader.bool();\n                break;\n            case 25:\n                message.forbiddenOperation = reader.bool();\n                break;\n            case 31:\n                message.fieldExecutionWeight = reader.double();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a Trace message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof Trace\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {Trace} Trace\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    Trace.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a Trace message.\n     * @function verify\n     * @memberof Trace\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    Trace.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.startTime != null && message.hasOwnProperty(\"startTime\")) {\n            var error = $root.google.protobuf.Timestamp.verify(message.startTime);\n            if (error)\n                return \"startTime.\" + error;\n        }\n        if (message.endTime != null && message.hasOwnProperty(\"endTime\")) {\n            var error = $root.google.protobuf.Timestamp.verify(message.endTime);\n            if (error)\n                return \"endTime.\" + error;\n        }\n        if (message.durationNs != null && message.hasOwnProperty(\"durationNs\"))\n            if (!$util.isInteger(message.durationNs) && !(message.durationNs && $util.isInteger(message.durationNs.low) && $util.isInteger(message.durationNs.high)))\n                return \"durationNs: integer|Long expected\";\n        if (message.root != null && message.hasOwnProperty(\"root\")) {\n            var error = $root.Trace.Node.verify(message.root);\n            if (error)\n                return \"root.\" + error;\n        }\n        if (message.isIncomplete != null && message.hasOwnProperty(\"isIncomplete\"))\n            if (typeof message.isIncomplete !== \"boolean\")\n                return \"isIncomplete: boolean expected\";\n        if (message.signature != null && message.hasOwnProperty(\"signature\"))\n            if (!$util.isString(message.signature))\n                return \"signature: string expected\";\n        if (message.unexecutedOperationBody != null && message.hasOwnProperty(\"unexecutedOperationBody\"))\n            if (!$util.isString(message.unexecutedOperationBody))\n                return \"unexecutedOperationBody: string expected\";\n        if (message.unexecutedOperationName != null && message.hasOwnProperty(\"unexecutedOperationName\"))\n            if (!$util.isString(message.unexecutedOperationName))\n                return \"unexecutedOperationName: string expected\";\n        if (message.details != null && message.hasOwnProperty(\"details\")) {\n            var error = $root.Trace.Details.verify(message.details);\n            if (error)\n                return \"details.\" + error;\n        }\n        if (message.clientName != null && message.hasOwnProperty(\"clientName\"))\n            if (!$util.isString(message.clientName))\n                return \"clientName: string expected\";\n        if (message.clientVersion != null && message.hasOwnProperty(\"clientVersion\"))\n            if (!$util.isString(message.clientVersion))\n                return \"clientVersion: string expected\";\n        if (message.http != null && message.hasOwnProperty(\"http\")) {\n            var error = $root.Trace.HTTP.verify(message.http);\n            if (error)\n                return \"http.\" + error;\n        }\n        if (message.cachePolicy != null && message.hasOwnProperty(\"cachePolicy\")) {\n            var error = $root.Trace.CachePolicy.verify(message.cachePolicy);\n            if (error)\n                return \"cachePolicy.\" + error;\n        }\n        if (message.queryPlan != null && message.hasOwnProperty(\"queryPlan\")) {\n            var error = $root.Trace.QueryPlanNode.verify(message.queryPlan);\n            if (error)\n                return \"queryPlan.\" + error;\n        }\n        if (message.fullQueryCacheHit != null && message.hasOwnProperty(\"fullQueryCacheHit\"))\n            if (typeof message.fullQueryCacheHit !== \"boolean\")\n                return \"fullQueryCacheHit: boolean expected\";\n        if (message.persistedQueryHit != null && message.hasOwnProperty(\"persistedQueryHit\"))\n            if (typeof message.persistedQueryHit !== \"boolean\")\n                return \"persistedQueryHit: boolean expected\";\n        if (message.persistedQueryRegister != null && message.hasOwnProperty(\"persistedQueryRegister\"))\n            if (typeof message.persistedQueryRegister !== \"boolean\")\n                return \"persistedQueryRegister: boolean expected\";\n        if (message.registeredOperation != null && message.hasOwnProperty(\"registeredOperation\"))\n            if (typeof message.registeredOperation !== \"boolean\")\n                return \"registeredOperation: boolean expected\";\n        if (message.forbiddenOperation != null && message.hasOwnProperty(\"forbiddenOperation\"))\n            if (typeof message.forbiddenOperation !== \"boolean\")\n                return \"forbiddenOperation: boolean expected\";\n        if (message.fieldExecutionWeight != null && message.hasOwnProperty(\"fieldExecutionWeight\"))\n            if (typeof message.fieldExecutionWeight !== \"number\")\n                return \"fieldExecutionWeight: number expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a Trace message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof Trace\n     * @static\n     * @param {Trace} message Trace\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    Trace.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.defaults) {\n            object.endTime = null;\n            object.startTime = null;\n            object.details = null;\n            object.clientName = \"\";\n            object.clientVersion = \"\";\n            object.http = null;\n            object.durationNs = 0;\n            object.root = null;\n            object.cachePolicy = null;\n            object.signature = \"\";\n            object.fullQueryCacheHit = false;\n            object.persistedQueryHit = false;\n            object.persistedQueryRegister = false;\n            object.registeredOperation = false;\n            object.forbiddenOperation = false;\n            object.queryPlan = null;\n            object.unexecutedOperationBody = \"\";\n            object.unexecutedOperationName = \"\";\n            object.fieldExecutionWeight = 0;\n            object.isIncomplete = false;\n        }\n        if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n            object.endTime = $root.google.protobuf.Timestamp.toObject(message.endTime, options);\n        if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n            object.startTime = $root.google.protobuf.Timestamp.toObject(message.startTime, options);\n        if (message.details != null && message.hasOwnProperty(\"details\"))\n            object.details = $root.Trace.Details.toObject(message.details, options);\n        if (message.clientName != null && message.hasOwnProperty(\"clientName\"))\n            object.clientName = message.clientName;\n        if (message.clientVersion != null && message.hasOwnProperty(\"clientVersion\"))\n            object.clientVersion = message.clientVersion;\n        if (message.http != null && message.hasOwnProperty(\"http\"))\n            object.http = $root.Trace.HTTP.toObject(message.http, options);\n        if (message.durationNs != null && message.hasOwnProperty(\"durationNs\"))\n            if (typeof message.durationNs === \"number\")\n                object.durationNs = options.longs === String ? String(message.durationNs) : message.durationNs;\n            else\n                object.durationNs = options.longs === String ? $util.Long.prototype.toString.call(message.durationNs) : options.longs === Number ? new $util.LongBits(message.durationNs.low >>> 0, message.durationNs.high >>> 0).toNumber(true) : message.durationNs;\n        if (message.root != null && message.hasOwnProperty(\"root\"))\n            object.root = $root.Trace.Node.toObject(message.root, options);\n        if (message.cachePolicy != null && message.hasOwnProperty(\"cachePolicy\"))\n            object.cachePolicy = $root.Trace.CachePolicy.toObject(message.cachePolicy, options);\n        if (message.signature != null && message.hasOwnProperty(\"signature\"))\n            object.signature = message.signature;\n        if (message.fullQueryCacheHit != null && message.hasOwnProperty(\"fullQueryCacheHit\"))\n            object.fullQueryCacheHit = message.fullQueryCacheHit;\n        if (message.persistedQueryHit != null && message.hasOwnProperty(\"persistedQueryHit\"))\n            object.persistedQueryHit = message.persistedQueryHit;\n        if (message.persistedQueryRegister != null && message.hasOwnProperty(\"persistedQueryRegister\"))\n            object.persistedQueryRegister = message.persistedQueryRegister;\n        if (message.registeredOperation != null && message.hasOwnProperty(\"registeredOperation\"))\n            object.registeredOperation = message.registeredOperation;\n        if (message.forbiddenOperation != null && message.hasOwnProperty(\"forbiddenOperation\"))\n            object.forbiddenOperation = message.forbiddenOperation;\n        if (message.queryPlan != null && message.hasOwnProperty(\"queryPlan\"))\n            object.queryPlan = $root.Trace.QueryPlanNode.toObject(message.queryPlan, options);\n        if (message.unexecutedOperationBody != null && message.hasOwnProperty(\"unexecutedOperationBody\"))\n            object.unexecutedOperationBody = message.unexecutedOperationBody;\n        if (message.unexecutedOperationName != null && message.hasOwnProperty(\"unexecutedOperationName\"))\n            object.unexecutedOperationName = message.unexecutedOperationName;\n        if (message.fieldExecutionWeight != null && message.hasOwnProperty(\"fieldExecutionWeight\"))\n            object.fieldExecutionWeight = options.json && !isFinite(message.fieldExecutionWeight) ? String(message.fieldExecutionWeight) : message.fieldExecutionWeight;\n        if (message.isIncomplete != null && message.hasOwnProperty(\"isIncomplete\"))\n            object.isIncomplete = message.isIncomplete;\n        return object;\n    };\n\n    /**\n     * Converts this Trace to JSON.\n     * @function toJSON\n     * @memberof Trace\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    Trace.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    Trace.CachePolicy = (function() {\n\n        /**\n         * Properties of a CachePolicy.\n         * @memberof Trace\n         * @interface ICachePolicy\n         * @property {Trace.CachePolicy.Scope|null} [scope] CachePolicy scope\n         * @property {number|null} [maxAgeNs] CachePolicy maxAgeNs\n         */\n\n        /**\n         * Constructs a new CachePolicy.\n         * @memberof Trace\n         * @classdesc Represents a CachePolicy.\n         * @implements ICachePolicy\n         * @constructor\n         * @param {Trace.ICachePolicy=} [properties] Properties to set\n         */\n        function CachePolicy(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * CachePolicy scope.\n         * @member {Trace.CachePolicy.Scope} scope\n         * @memberof Trace.CachePolicy\n         * @instance\n         */\n        CachePolicy.prototype.scope = 0;\n\n        /**\n         * CachePolicy maxAgeNs.\n         * @member {number} maxAgeNs\n         * @memberof Trace.CachePolicy\n         * @instance\n         */\n        CachePolicy.prototype.maxAgeNs = 0;\n\n        /**\n         * Creates a new CachePolicy instance using the specified properties.\n         * @function create\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Trace.ICachePolicy=} [properties] Properties to set\n         * @returns {Trace.CachePolicy} CachePolicy instance\n         */\n        CachePolicy.create = function create(properties) {\n            return new CachePolicy(properties);\n        };\n\n        /**\n         * Encodes the specified CachePolicy message. Does not implicitly {@link Trace.CachePolicy.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Trace.ICachePolicy} message CachePolicy message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        CachePolicy.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.scope != null && Object.hasOwnProperty.call(message, \"scope\"))\n                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.scope);\n            if (message.maxAgeNs != null && Object.hasOwnProperty.call(message, \"maxAgeNs\"))\n                writer.uint32(/* id 2, wireType 0 =*/16).int64(message.maxAgeNs);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified CachePolicy message, length delimited. Does not implicitly {@link Trace.CachePolicy.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Trace.ICachePolicy} message CachePolicy message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        CachePolicy.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a CachePolicy message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.CachePolicy} CachePolicy\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        CachePolicy.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.CachePolicy();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.scope = reader.int32();\n                    break;\n                case 2:\n                    message.maxAgeNs = reader.int64();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a CachePolicy message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.CachePolicy} CachePolicy\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        CachePolicy.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a CachePolicy message.\n         * @function verify\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        CachePolicy.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.scope != null && message.hasOwnProperty(\"scope\"))\n                switch (message.scope) {\n                default:\n                    return \"scope: enum value expected\";\n                case 0:\n                case 1:\n                case 2:\n                    break;\n                }\n            if (message.maxAgeNs != null && message.hasOwnProperty(\"maxAgeNs\"))\n                if (!$util.isInteger(message.maxAgeNs) && !(message.maxAgeNs && $util.isInteger(message.maxAgeNs.low) && $util.isInteger(message.maxAgeNs.high)))\n                    return \"maxAgeNs: integer|Long expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a CachePolicy message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Trace.CachePolicy} message CachePolicy\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        CachePolicy.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (options.defaults) {\n                object.scope = options.enums === String ? \"UNKNOWN\" : 0;\n                object.maxAgeNs = 0;\n            }\n            if (message.scope != null && message.hasOwnProperty(\"scope\"))\n                object.scope = options.enums === String ? $root.Trace.CachePolicy.Scope[message.scope] : message.scope;\n            if (message.maxAgeNs != null && message.hasOwnProperty(\"maxAgeNs\"))\n                if (typeof message.maxAgeNs === \"number\")\n                    object.maxAgeNs = options.longs === String ? String(message.maxAgeNs) : message.maxAgeNs;\n                else\n                    object.maxAgeNs = options.longs === String ? $util.Long.prototype.toString.call(message.maxAgeNs) : options.longs === Number ? new $util.LongBits(message.maxAgeNs.low >>> 0, message.maxAgeNs.high >>> 0).toNumber() : message.maxAgeNs;\n            return object;\n        };\n\n        /**\n         * Converts this CachePolicy to JSON.\n         * @function toJSON\n         * @memberof Trace.CachePolicy\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        CachePolicy.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        /**\n         * Scope enum.\n         * @name Trace.CachePolicy.Scope\n         * @enum {string}\n         * @property {number} UNKNOWN=0 UNKNOWN value\n         * @property {number} PUBLIC=1 PUBLIC value\n         * @property {number} PRIVATE=2 PRIVATE value\n         */\n        CachePolicy.Scope = (function() {\n            var valuesById = {}, values = Object.create(valuesById);\n            values[valuesById[0] = \"UNKNOWN\"] = 0;\n            values[valuesById[1] = \"PUBLIC\"] = 1;\n            values[valuesById[2] = \"PRIVATE\"] = 2;\n            return values;\n        })();\n\n        return CachePolicy;\n    })();\n\n    Trace.Details = (function() {\n\n        /**\n         * Properties of a Details.\n         * @memberof Trace\n         * @interface IDetails\n         * @property {Object.<string,string>|null} [variablesJson] Details variablesJson\n         * @property {string|null} [operationName] Details operationName\n         */\n\n        /**\n         * Constructs a new Details.\n         * @memberof Trace\n         * @classdesc Represents a Details.\n         * @implements IDetails\n         * @constructor\n         * @param {Trace.IDetails=} [properties] Properties to set\n         */\n        function Details(properties) {\n            this.variablesJson = {};\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Details variablesJson.\n         * @member {Object.<string,string>} variablesJson\n         * @memberof Trace.Details\n         * @instance\n         */\n        Details.prototype.variablesJson = $util.emptyObject;\n\n        /**\n         * Details operationName.\n         * @member {string} operationName\n         * @memberof Trace.Details\n         * @instance\n         */\n        Details.prototype.operationName = \"\";\n\n        /**\n         * Creates a new Details instance using the specified properties.\n         * @function create\n         * @memberof Trace.Details\n         * @static\n         * @param {Trace.IDetails=} [properties] Properties to set\n         * @returns {Trace.Details} Details instance\n         */\n        Details.create = function create(properties) {\n            return new Details(properties);\n        };\n\n        /**\n         * Encodes the specified Details message. Does not implicitly {@link Trace.Details.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.Details\n         * @static\n         * @param {Trace.IDetails} message Details message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Details.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.operationName != null && Object.hasOwnProperty.call(message, \"operationName\"))\n                writer.uint32(/* id 3, wireType 2 =*/26).string(message.operationName);\n            if (message.variablesJson != null && Object.hasOwnProperty.call(message, \"variablesJson\"))\n                for (var keys = Object.keys(message.variablesJson), i = 0; i < keys.length; ++i)\n                    writer.uint32(/* id 4, wireType 2 =*/34).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.variablesJson[keys[i]]).ldelim();\n            return writer;\n        };\n\n        /**\n         * Encodes the specified Details message, length delimited. Does not implicitly {@link Trace.Details.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.Details\n         * @static\n         * @param {Trace.IDetails} message Details message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Details.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a Details message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.Details\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.Details} Details\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Details.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.Details(), key;\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 4:\n                    reader.skip().pos++;\n                    if (message.variablesJson === $util.emptyObject)\n                        message.variablesJson = {};\n                    key = reader.string();\n                    reader.pos++;\n                    message.variablesJson[key] = reader.string();\n                    break;\n                case 3:\n                    message.operationName = reader.string();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a Details message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.Details\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.Details} Details\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Details.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a Details message.\n         * @function verify\n         * @memberof Trace.Details\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Details.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.variablesJson != null && message.hasOwnProperty(\"variablesJson\")) {\n                if (!$util.isObject(message.variablesJson))\n                    return \"variablesJson: object expected\";\n                var key = Object.keys(message.variablesJson);\n                for (var i = 0; i < key.length; ++i)\n                    if (!$util.isString(message.variablesJson[key[i]]))\n                        return \"variablesJson: string{k:string} expected\";\n            }\n            if (message.operationName != null && message.hasOwnProperty(\"operationName\"))\n                if (!$util.isString(message.operationName))\n                    return \"operationName: string expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a Details message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.Details\n         * @static\n         * @param {Trace.Details} message Details\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Details.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (options.objects || options.defaults)\n                object.variablesJson = {};\n            if (options.defaults)\n                object.operationName = \"\";\n            if (message.operationName != null && message.hasOwnProperty(\"operationName\"))\n                object.operationName = message.operationName;\n            var keys2;\n            if (message.variablesJson && (keys2 = Object.keys(message.variablesJson)).length) {\n                object.variablesJson = {};\n                for (var j = 0; j < keys2.length; ++j)\n                    object.variablesJson[keys2[j]] = message.variablesJson[keys2[j]];\n            }\n            return object;\n        };\n\n        /**\n         * Converts this Details to JSON.\n         * @function toJSON\n         * @memberof Trace.Details\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Details.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        return Details;\n    })();\n\n    Trace.Error = (function() {\n\n        /**\n         * Properties of an Error.\n         * @memberof Trace\n         * @interface IError\n         * @property {string|null} [message] Error message\n         * @property {Array.<Trace.ILocation>|null} [location] Error location\n         * @property {number|null} [timeNs] Error timeNs\n         * @property {string|null} [json] Error json\n         */\n\n        /**\n         * Constructs a new Error.\n         * @memberof Trace\n         * @classdesc Represents an Error.\n         * @implements IError\n         * @constructor\n         * @param {Trace.IError=} [properties] Properties to set\n         */\n        function Error(properties) {\n            this.location = [];\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Error message.\n         * @member {string} message\n         * @memberof Trace.Error\n         * @instance\n         */\n        Error.prototype.message = \"\";\n\n        /**\n         * Error location.\n         * @member {Array.<Trace.ILocation>} location\n         * @memberof Trace.Error\n         * @instance\n         */\n        Error.prototype.location = $util.emptyArray;\n\n        /**\n         * Error timeNs.\n         * @member {number} timeNs\n         * @memberof Trace.Error\n         * @instance\n         */\n        Error.prototype.timeNs = 0;\n\n        /**\n         * Error json.\n         * @member {string} json\n         * @memberof Trace.Error\n         * @instance\n         */\n        Error.prototype.json = \"\";\n\n        /**\n         * Creates a new Error instance using the specified properties.\n         * @function create\n         * @memberof Trace.Error\n         * @static\n         * @param {Trace.IError=} [properties] Properties to set\n         * @returns {Trace.Error} Error instance\n         */\n        Error.create = function create(properties) {\n            return new Error(properties);\n        };\n\n        /**\n         * Encodes the specified Error message. Does not implicitly {@link Trace.Error.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.Error\n         * @static\n         * @param {Trace.IError} message Error message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Error.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.message != null && Object.hasOwnProperty.call(message, \"message\"))\n                writer.uint32(/* id 1, wireType 2 =*/10).string(message.message);\n            if (message.location != null && message.location.length)\n                for (var i = 0; i < message.location.length; ++i)\n                    $root.Trace.Location.encode(message.location[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n            if (message.timeNs != null && Object.hasOwnProperty.call(message, \"timeNs\"))\n                writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.timeNs);\n            if (message.json != null && Object.hasOwnProperty.call(message, \"json\"))\n                writer.uint32(/* id 4, wireType 2 =*/34).string(message.json);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified Error message, length delimited. Does not implicitly {@link Trace.Error.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.Error\n         * @static\n         * @param {Trace.IError} message Error message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Error.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes an Error message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.Error\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.Error} Error\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Error.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.Error();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.message = reader.string();\n                    break;\n                case 2:\n                    if (!(message.location && message.location.length))\n                        message.location = [];\n                    message.location.push($root.Trace.Location.decode(reader, reader.uint32()));\n                    break;\n                case 3:\n                    message.timeNs = reader.uint64();\n                    break;\n                case 4:\n                    message.json = reader.string();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes an Error message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.Error\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.Error} Error\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Error.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies an Error message.\n         * @function verify\n         * @memberof Trace.Error\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Error.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.message != null && message.hasOwnProperty(\"message\"))\n                if (!$util.isString(message.message))\n                    return \"message: string expected\";\n            if (message.location != null && message.hasOwnProperty(\"location\")) {\n                if (!Array.isArray(message.location))\n                    return \"location: array expected\";\n                for (var i = 0; i < message.location.length; ++i) {\n                    var error = $root.Trace.Location.verify(message.location[i]);\n                    if (error)\n                        return \"location.\" + error;\n                }\n            }\n            if (message.timeNs != null && message.hasOwnProperty(\"timeNs\"))\n                if (!$util.isInteger(message.timeNs) && !(message.timeNs && $util.isInteger(message.timeNs.low) && $util.isInteger(message.timeNs.high)))\n                    return \"timeNs: integer|Long expected\";\n            if (message.json != null && message.hasOwnProperty(\"json\"))\n                if (!$util.isString(message.json))\n                    return \"json: string expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from an Error message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.Error\n         * @static\n         * @param {Trace.Error} message Error\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Error.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (options.arrays || options.defaults)\n                object.location = [];\n            if (options.defaults) {\n                object.message = \"\";\n                object.timeNs = 0;\n                object.json = \"\";\n            }\n            if (message.message != null && message.hasOwnProperty(\"message\"))\n                object.message = message.message;\n            if (message.location && message.location.length) {\n                object.location = [];\n                for (var j = 0; j < message.location.length; ++j)\n                    object.location[j] = $root.Trace.Location.toObject(message.location[j], options);\n            }\n            if (message.timeNs != null && message.hasOwnProperty(\"timeNs\"))\n                if (typeof message.timeNs === \"number\")\n                    object.timeNs = options.longs === String ? String(message.timeNs) : message.timeNs;\n                else\n                    object.timeNs = options.longs === String ? $util.Long.prototype.toString.call(message.timeNs) : options.longs === Number ? new $util.LongBits(message.timeNs.low >>> 0, message.timeNs.high >>> 0).toNumber(true) : message.timeNs;\n            if (message.json != null && message.hasOwnProperty(\"json\"))\n                object.json = message.json;\n            return object;\n        };\n\n        /**\n         * Converts this Error to JSON.\n         * @function toJSON\n         * @memberof Trace.Error\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Error.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        return Error;\n    })();\n\n    Trace.HTTP = (function() {\n\n        /**\n         * Properties of a HTTP.\n         * @memberof Trace\n         * @interface IHTTP\n         * @property {Trace.HTTP.Method|null} [method] HTTP method\n         * @property {Object.<string,Trace.HTTP.IValues>|null} [requestHeaders] HTTP requestHeaders\n         * @property {Object.<string,Trace.HTTP.IValues>|null} [responseHeaders] HTTP responseHeaders\n         * @property {number|null} [statusCode] HTTP statusCode\n         */\n\n        /**\n         * Constructs a new HTTP.\n         * @memberof Trace\n         * @classdesc Represents a HTTP.\n         * @implements IHTTP\n         * @constructor\n         * @param {Trace.IHTTP=} [properties] Properties to set\n         */\n        function HTTP(properties) {\n            this.requestHeaders = {};\n            this.responseHeaders = {};\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * HTTP method.\n         * @member {Trace.HTTP.Method} method\n         * @memberof Trace.HTTP\n         * @instance\n         */\n        HTTP.prototype.method = 0;\n\n        /**\n         * HTTP requestHeaders.\n         * @member {Object.<string,Trace.HTTP.IValues>} requestHeaders\n         * @memberof Trace.HTTP\n         * @instance\n         */\n        HTTP.prototype.requestHeaders = $util.emptyObject;\n\n        /**\n         * HTTP responseHeaders.\n         * @member {Object.<string,Trace.HTTP.IValues>} responseHeaders\n         * @memberof Trace.HTTP\n         * @instance\n         */\n        HTTP.prototype.responseHeaders = $util.emptyObject;\n\n        /**\n         * HTTP statusCode.\n         * @member {number} statusCode\n         * @memberof Trace.HTTP\n         * @instance\n         */\n        HTTP.prototype.statusCode = 0;\n\n        /**\n         * Creates a new HTTP instance using the specified properties.\n         * @function create\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Trace.IHTTP=} [properties] Properties to set\n         * @returns {Trace.HTTP} HTTP instance\n         */\n        HTTP.create = function create(properties) {\n            return new HTTP(properties);\n        };\n\n        /**\n         * Encodes the specified HTTP message. Does not implicitly {@link Trace.HTTP.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Trace.IHTTP} message HTTP message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        HTTP.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.method != null && Object.hasOwnProperty.call(message, \"method\"))\n                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.method);\n            if (message.requestHeaders != null && Object.hasOwnProperty.call(message, \"requestHeaders\"))\n                for (var keys = Object.keys(message.requestHeaders), i = 0; i < keys.length; ++i) {\n                    writer.uint32(/* id 4, wireType 2 =*/34).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                    $root.Trace.HTTP.Values.encode(message.requestHeaders[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n                }\n            if (message.responseHeaders != null && Object.hasOwnProperty.call(message, \"responseHeaders\"))\n                for (var keys = Object.keys(message.responseHeaders), i = 0; i < keys.length; ++i) {\n                    writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                    $root.Trace.HTTP.Values.encode(message.responseHeaders[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n                }\n            if (message.statusCode != null && Object.hasOwnProperty.call(message, \"statusCode\"))\n                writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.statusCode);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified HTTP message, length delimited. Does not implicitly {@link Trace.HTTP.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Trace.IHTTP} message HTTP message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        HTTP.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a HTTP message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.HTTP\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.HTTP} HTTP\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        HTTP.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.HTTP(), key;\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.method = reader.int32();\n                    break;\n                case 4:\n                    reader.skip().pos++;\n                    if (message.requestHeaders === $util.emptyObject)\n                        message.requestHeaders = {};\n                    key = reader.string();\n                    reader.pos++;\n                    message.requestHeaders[key] = $root.Trace.HTTP.Values.decode(reader, reader.uint32());\n                    break;\n                case 5:\n                    reader.skip().pos++;\n                    if (message.responseHeaders === $util.emptyObject)\n                        message.responseHeaders = {};\n                    key = reader.string();\n                    reader.pos++;\n                    message.responseHeaders[key] = $root.Trace.HTTP.Values.decode(reader, reader.uint32());\n                    break;\n                case 6:\n                    message.statusCode = reader.uint32();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a HTTP message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.HTTP\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.HTTP} HTTP\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        HTTP.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a HTTP message.\n         * @function verify\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        HTTP.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.method != null && message.hasOwnProperty(\"method\"))\n                switch (message.method) {\n                default:\n                    return \"method: enum value expected\";\n                case 0:\n                case 1:\n                case 2:\n                case 3:\n                case 4:\n                case 5:\n                case 6:\n                case 7:\n                case 8:\n                case 9:\n                    break;\n                }\n            if (message.requestHeaders != null && message.hasOwnProperty(\"requestHeaders\")) {\n                if (!$util.isObject(message.requestHeaders))\n                    return \"requestHeaders: object expected\";\n                var key = Object.keys(message.requestHeaders);\n                for (var i = 0; i < key.length; ++i) {\n                    var error = $root.Trace.HTTP.Values.verify(message.requestHeaders[key[i]]);\n                    if (error)\n                        return \"requestHeaders.\" + error;\n                }\n            }\n            if (message.responseHeaders != null && message.hasOwnProperty(\"responseHeaders\")) {\n                if (!$util.isObject(message.responseHeaders))\n                    return \"responseHeaders: object expected\";\n                var key = Object.keys(message.responseHeaders);\n                for (var i = 0; i < key.length; ++i) {\n                    var error = $root.Trace.HTTP.Values.verify(message.responseHeaders[key[i]]);\n                    if (error)\n                        return \"responseHeaders.\" + error;\n                }\n            }\n            if (message.statusCode != null && message.hasOwnProperty(\"statusCode\"))\n                if (!$util.isInteger(message.statusCode))\n                    return \"statusCode: integer expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a HTTP message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Trace.HTTP} message HTTP\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        HTTP.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (options.objects || options.defaults) {\n                object.requestHeaders = {};\n                object.responseHeaders = {};\n            }\n            if (options.defaults) {\n                object.method = options.enums === String ? \"UNKNOWN\" : 0;\n                object.statusCode = 0;\n            }\n            if (message.method != null && message.hasOwnProperty(\"method\"))\n                object.method = options.enums === String ? $root.Trace.HTTP.Method[message.method] : message.method;\n            var keys2;\n            if (message.requestHeaders && (keys2 = Object.keys(message.requestHeaders)).length) {\n                object.requestHeaders = {};\n                for (var j = 0; j < keys2.length; ++j)\n                    object.requestHeaders[keys2[j]] = $root.Trace.HTTP.Values.toObject(message.requestHeaders[keys2[j]], options);\n            }\n            if (message.responseHeaders && (keys2 = Object.keys(message.responseHeaders)).length) {\n                object.responseHeaders = {};\n                for (var j = 0; j < keys2.length; ++j)\n                    object.responseHeaders[keys2[j]] = $root.Trace.HTTP.Values.toObject(message.responseHeaders[keys2[j]], options);\n            }\n            if (message.statusCode != null && message.hasOwnProperty(\"statusCode\"))\n                object.statusCode = message.statusCode;\n            return object;\n        };\n\n        /**\n         * Converts this HTTP to JSON.\n         * @function toJSON\n         * @memberof Trace.HTTP\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        HTTP.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        HTTP.Values = (function() {\n\n            /**\n             * Properties of a Values.\n             * @memberof Trace.HTTP\n             * @interface IValues\n             * @property {Array.<string>|null} [value] Values value\n             */\n\n            /**\n             * Constructs a new Values.\n             * @memberof Trace.HTTP\n             * @classdesc Represents a Values.\n             * @implements IValues\n             * @constructor\n             * @param {Trace.HTTP.IValues=} [properties] Properties to set\n             */\n            function Values(properties) {\n                this.value = [];\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * Values value.\n             * @member {Array.<string>} value\n             * @memberof Trace.HTTP.Values\n             * @instance\n             */\n            Values.prototype.value = $util.emptyArray;\n\n            /**\n             * Creates a new Values instance using the specified properties.\n             * @function create\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Trace.HTTP.IValues=} [properties] Properties to set\n             * @returns {Trace.HTTP.Values} Values instance\n             */\n            Values.create = function create(properties) {\n                return new Values(properties);\n            };\n\n            /**\n             * Encodes the specified Values message. Does not implicitly {@link Trace.HTTP.Values.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Trace.HTTP.IValues} message Values message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            Values.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.value != null && message.value.length)\n                    for (var i = 0; i < message.value.length; ++i)\n                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.value[i]);\n                return writer;\n            };\n\n            /**\n             * Encodes the specified Values message, length delimited. Does not implicitly {@link Trace.HTTP.Values.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Trace.HTTP.IValues} message Values message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            Values.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a Values message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.HTTP.Values} Values\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            Values.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.HTTP.Values();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.value && message.value.length))\n                            message.value = [];\n                        message.value.push(reader.string());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a Values message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.HTTP.Values} Values\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            Values.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a Values message.\n             * @function verify\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            Values.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.value != null && message.hasOwnProperty(\"value\")) {\n                    if (!Array.isArray(message.value))\n                        return \"value: array expected\";\n                    for (var i = 0; i < message.value.length; ++i)\n                        if (!$util.isString(message.value[i]))\n                            return \"value: string[] expected\";\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a Values message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Trace.HTTP.Values} message Values\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            Values.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.arrays || options.defaults)\n                    object.value = [];\n                if (message.value && message.value.length) {\n                    object.value = [];\n                    for (var j = 0; j < message.value.length; ++j)\n                        object.value[j] = message.value[j];\n                }\n                return object;\n            };\n\n            /**\n             * Converts this Values to JSON.\n             * @function toJSON\n             * @memberof Trace.HTTP.Values\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            Values.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return Values;\n        })();\n\n        /**\n         * Method enum.\n         * @name Trace.HTTP.Method\n         * @enum {string}\n         * @property {number} UNKNOWN=0 UNKNOWN value\n         * @property {number} OPTIONS=1 OPTIONS value\n         * @property {number} GET=2 GET value\n         * @property {number} HEAD=3 HEAD value\n         * @property {number} POST=4 POST value\n         * @property {number} PUT=5 PUT value\n         * @property {number} DELETE=6 DELETE value\n         * @property {number} TRACE=7 TRACE value\n         * @property {number} CONNECT=8 CONNECT value\n         * @property {number} PATCH=9 PATCH value\n         */\n        HTTP.Method = (function() {\n            var valuesById = {}, values = Object.create(valuesById);\n            values[valuesById[0] = \"UNKNOWN\"] = 0;\n            values[valuesById[1] = \"OPTIONS\"] = 1;\n            values[valuesById[2] = \"GET\"] = 2;\n            values[valuesById[3] = \"HEAD\"] = 3;\n            values[valuesById[4] = \"POST\"] = 4;\n            values[valuesById[5] = \"PUT\"] = 5;\n            values[valuesById[6] = \"DELETE\"] = 6;\n            values[valuesById[7] = \"TRACE\"] = 7;\n            values[valuesById[8] = \"CONNECT\"] = 8;\n            values[valuesById[9] = \"PATCH\"] = 9;\n            return values;\n        })();\n\n        return HTTP;\n    })();\n\n    Trace.Location = (function() {\n\n        /**\n         * Properties of a Location.\n         * @memberof Trace\n         * @interface ILocation\n         * @property {number|null} [line] Location line\n         * @property {number|null} [column] Location column\n         */\n\n        /**\n         * Constructs a new Location.\n         * @memberof Trace\n         * @classdesc Represents a Location.\n         * @implements ILocation\n         * @constructor\n         * @param {Trace.ILocation=} [properties] Properties to set\n         */\n        function Location(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Location line.\n         * @member {number} line\n         * @memberof Trace.Location\n         * @instance\n         */\n        Location.prototype.line = 0;\n\n        /**\n         * Location column.\n         * @member {number} column\n         * @memberof Trace.Location\n         * @instance\n         */\n        Location.prototype.column = 0;\n\n        /**\n         * Creates a new Location instance using the specified properties.\n         * @function create\n         * @memberof Trace.Location\n         * @static\n         * @param {Trace.ILocation=} [properties] Properties to set\n         * @returns {Trace.Location} Location instance\n         */\n        Location.create = function create(properties) {\n            return new Location(properties);\n        };\n\n        /**\n         * Encodes the specified Location message. Does not implicitly {@link Trace.Location.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.Location\n         * @static\n         * @param {Trace.ILocation} message Location message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Location.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.line != null && Object.hasOwnProperty.call(message, \"line\"))\n                writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.line);\n            if (message.column != null && Object.hasOwnProperty.call(message, \"column\"))\n                writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.column);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified Location message, length delimited. Does not implicitly {@link Trace.Location.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.Location\n         * @static\n         * @param {Trace.ILocation} message Location message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Location.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a Location message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.Location\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.Location} Location\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Location.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.Location();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.line = reader.uint32();\n                    break;\n                case 2:\n                    message.column = reader.uint32();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a Location message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.Location\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.Location} Location\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Location.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a Location message.\n         * @function verify\n         * @memberof Trace.Location\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Location.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.line != null && message.hasOwnProperty(\"line\"))\n                if (!$util.isInteger(message.line))\n                    return \"line: integer expected\";\n            if (message.column != null && message.hasOwnProperty(\"column\"))\n                if (!$util.isInteger(message.column))\n                    return \"column: integer expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a Location message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.Location\n         * @static\n         * @param {Trace.Location} message Location\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Location.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (options.defaults) {\n                object.line = 0;\n                object.column = 0;\n            }\n            if (message.line != null && message.hasOwnProperty(\"line\"))\n                object.line = message.line;\n            if (message.column != null && message.hasOwnProperty(\"column\"))\n                object.column = message.column;\n            return object;\n        };\n\n        /**\n         * Converts this Location to JSON.\n         * @function toJSON\n         * @memberof Trace.Location\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Location.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        return Location;\n    })();\n\n    Trace.Node = (function() {\n\n        /**\n         * Properties of a Node.\n         * @memberof Trace\n         * @interface INode\n         * @property {string|null} [responseName] Node responseName\n         * @property {number|null} [index] Node index\n         * @property {string|null} [originalFieldName] Node originalFieldName\n         * @property {string|null} [type] Node type\n         * @property {string|null} [parentType] Node parentType\n         * @property {Trace.ICachePolicy|null} [cachePolicy] Node cachePolicy\n         * @property {number|null} [startTime] Node startTime\n         * @property {number|null} [endTime] Node endTime\n         * @property {Array.<Trace.IError>|null} [error] Node error\n         * @property {Array.<Trace.INode>|null} [child] Node child\n         */\n\n        /**\n         * Constructs a new Node.\n         * @memberof Trace\n         * @classdesc Represents a Node.\n         * @implements INode\n         * @constructor\n         * @param {Trace.INode=} [properties] Properties to set\n         */\n        function Node(properties) {\n            this.error = [];\n            this.child = [];\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Node responseName.\n         * @member {string} responseName\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.responseName = \"\";\n\n        /**\n         * Node index.\n         * @member {number} index\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.index = 0;\n\n        /**\n         * Node originalFieldName.\n         * @member {string} originalFieldName\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.originalFieldName = \"\";\n\n        /**\n         * Node type.\n         * @member {string} type\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.type = \"\";\n\n        /**\n         * Node parentType.\n         * @member {string} parentType\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.parentType = \"\";\n\n        /**\n         * Node cachePolicy.\n         * @member {Trace.ICachePolicy|null|undefined} cachePolicy\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.cachePolicy = null;\n\n        /**\n         * Node startTime.\n         * @member {number} startTime\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.startTime = 0;\n\n        /**\n         * Node endTime.\n         * @member {number} endTime\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.endTime = 0;\n\n        /**\n         * Node error.\n         * @member {Array.<Trace.IError>} error\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.error = $util.emptyArray;\n\n        /**\n         * Node child.\n         * @member {Array.<Trace.INode>} child\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.child = $util.emptyArray;\n\n        // OneOf field names bound to virtual getters and setters\n        var $oneOfFields;\n\n        /**\n         * Node id.\n         * @member {\"responseName\"|\"index\"|undefined} id\n         * @memberof Trace.Node\n         * @instance\n         */\n        Object.defineProperty(Node.prototype, \"id\", {\n            get: $util.oneOfGetter($oneOfFields = [\"responseName\", \"index\"]),\n            set: $util.oneOfSetter($oneOfFields)\n        });\n\n        /**\n         * Creates a new Node instance using the specified properties.\n         * @function create\n         * @memberof Trace.Node\n         * @static\n         * @param {Trace.INode=} [properties] Properties to set\n         * @returns {Trace.Node} Node instance\n         */\n        Node.create = function create(properties) {\n            return new Node(properties);\n        };\n\n        /**\n         * Encodes the specified Node message. Does not implicitly {@link Trace.Node.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.Node\n         * @static\n         * @param {Trace.INode} message Node message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Node.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.responseName != null && Object.hasOwnProperty.call(message, \"responseName\"))\n                writer.uint32(/* id 1, wireType 2 =*/10).string(message.responseName);\n            if (message.index != null && Object.hasOwnProperty.call(message, \"index\"))\n                writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.index);\n            if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n                writer.uint32(/* id 3, wireType 2 =*/26).string(message.type);\n            if (message.cachePolicy != null && Object.hasOwnProperty.call(message, \"cachePolicy\"))\n                $root.Trace.CachePolicy.encode(message.cachePolicy, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n            if (message.startTime != null && Object.hasOwnProperty.call(message, \"startTime\"))\n                writer.uint32(/* id 8, wireType 0 =*/64).uint64(message.startTime);\n            if (message.endTime != null && Object.hasOwnProperty.call(message, \"endTime\"))\n                writer.uint32(/* id 9, wireType 0 =*/72).uint64(message.endTime);\n            if (message.error != null && message.error.length)\n                for (var i = 0; i < message.error.length; ++i)\n                    $root.Trace.Error.encode(message.error[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n            if (message.child != null && message.child.length)\n                for (var i = 0; i < message.child.length; ++i)\n                    $root.Trace.Node.encode(message.child[i], writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim();\n            if (message.parentType != null && Object.hasOwnProperty.call(message, \"parentType\"))\n                writer.uint32(/* id 13, wireType 2 =*/106).string(message.parentType);\n            if (message.originalFieldName != null && Object.hasOwnProperty.call(message, \"originalFieldName\"))\n                writer.uint32(/* id 14, wireType 2 =*/114).string(message.originalFieldName);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified Node message, length delimited. Does not implicitly {@link Trace.Node.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.Node\n         * @static\n         * @param {Trace.INode} message Node message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Node.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a Node message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.Node\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.Node} Node\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Node.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.Node();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.responseName = reader.string();\n                    break;\n                case 2:\n                    message.index = reader.uint32();\n                    break;\n                case 14:\n                    message.originalFieldName = reader.string();\n                    break;\n                case 3:\n                    message.type = reader.string();\n                    break;\n                case 13:\n                    message.parentType = reader.string();\n                    break;\n                case 5:\n                    message.cachePolicy = $root.Trace.CachePolicy.decode(reader, reader.uint32());\n                    break;\n                case 8:\n                    message.startTime = reader.uint64();\n                    break;\n                case 9:\n                    message.endTime = reader.uint64();\n                    break;\n                case 11:\n                    if (!(message.error && message.error.length))\n                        message.error = [];\n                    message.error.push($root.Trace.Error.decode(reader, reader.uint32()));\n                    break;\n                case 12:\n                    if (!(message.child && message.child.length))\n                        message.child = [];\n                    message.child.push($root.Trace.Node.decode(reader, reader.uint32()));\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a Node message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.Node\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.Node} Node\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Node.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a Node message.\n         * @function verify\n         * @memberof Trace.Node\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Node.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            var properties = {};\n            if (message.responseName != null && message.hasOwnProperty(\"responseName\")) {\n                properties.id = 1;\n                if (!$util.isString(message.responseName))\n                    return \"responseName: string expected\";\n            }\n            if (message.index != null && message.hasOwnProperty(\"index\")) {\n                if (properties.id === 1)\n                    return \"id: multiple values\";\n                properties.id = 1;\n                if (!$util.isInteger(message.index))\n                    return \"index: integer expected\";\n            }\n            if (message.originalFieldName != null && message.hasOwnProperty(\"originalFieldName\"))\n                if (!$util.isString(message.originalFieldName))\n                    return \"originalFieldName: string expected\";\n            if (message.type != null && message.hasOwnProperty(\"type\"))\n                if (!$util.isString(message.type))\n                    return \"type: string expected\";\n            if (message.parentType != null && message.hasOwnProperty(\"parentType\"))\n                if (!$util.isString(message.parentType))\n                    return \"parentType: string expected\";\n            if (message.cachePolicy != null && message.hasOwnProperty(\"cachePolicy\")) {\n                var error = $root.Trace.CachePolicy.verify(message.cachePolicy);\n                if (error)\n                    return \"cachePolicy.\" + error;\n            }\n            if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n                if (!$util.isInteger(message.startTime) && !(message.startTime && $util.isInteger(message.startTime.low) && $util.isInteger(message.startTime.high)))\n                    return \"startTime: integer|Long expected\";\n            if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n                if (!$util.isInteger(message.endTime) && !(message.endTime && $util.isInteger(message.endTime.low) && $util.isInteger(message.endTime.high)))\n                    return \"endTime: integer|Long expected\";\n            if (message.error != null && message.hasOwnProperty(\"error\")) {\n                if (!Array.isArray(message.error))\n                    return \"error: array expected\";\n                for (var i = 0; i < message.error.length; ++i) {\n                    var error = $root.Trace.Error.verify(message.error[i]);\n                    if (error)\n                        return \"error.\" + error;\n                }\n            }\n            if (message.child != null && message.hasOwnProperty(\"child\")) {\n                if (!Array.isArray(message.child))\n                    return \"child: array expected\";\n                for (var i = 0; i < message.child.length; ++i) {\n                    var error = $root.Trace.Node.verify(message.child[i]);\n                    if (error)\n                        return \"child.\" + error;\n                }\n            }\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a Node message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.Node\n         * @static\n         * @param {Trace.Node} message Node\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Node.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (options.arrays || options.defaults) {\n                object.error = [];\n                object.child = [];\n            }\n            if (options.defaults) {\n                object.type = \"\";\n                object.cachePolicy = null;\n                object.startTime = 0;\n                object.endTime = 0;\n                object.parentType = \"\";\n                object.originalFieldName = \"\";\n            }\n            if (message.responseName != null && message.hasOwnProperty(\"responseName\")) {\n                object.responseName = message.responseName;\n                if (options.oneofs)\n                    object.id = \"responseName\";\n            }\n            if (message.index != null && message.hasOwnProperty(\"index\")) {\n                object.index = message.index;\n                if (options.oneofs)\n                    object.id = \"index\";\n            }\n            if (message.type != null && message.hasOwnProperty(\"type\"))\n                object.type = message.type;\n            if (message.cachePolicy != null && message.hasOwnProperty(\"cachePolicy\"))\n                object.cachePolicy = $root.Trace.CachePolicy.toObject(message.cachePolicy, options);\n            if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n                if (typeof message.startTime === \"number\")\n                    object.startTime = options.longs === String ? String(message.startTime) : message.startTime;\n                else\n                    object.startTime = options.longs === String ? $util.Long.prototype.toString.call(message.startTime) : options.longs === Number ? new $util.LongBits(message.startTime.low >>> 0, message.startTime.high >>> 0).toNumber(true) : message.startTime;\n            if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n                if (typeof message.endTime === \"number\")\n                    object.endTime = options.longs === String ? String(message.endTime) : message.endTime;\n                else\n                    object.endTime = options.longs === String ? $util.Long.prototype.toString.call(message.endTime) : options.longs === Number ? new $util.LongBits(message.endTime.low >>> 0, message.endTime.high >>> 0).toNumber(true) : message.endTime;\n            if (message.error && message.error.length) {\n                object.error = [];\n                for (var j = 0; j < message.error.length; ++j)\n                    object.error[j] = $root.Trace.Error.toObject(message.error[j], options);\n            }\n            if (message.child && message.child.length) {\n                object.child = [];\n                for (var j = 0; j < message.child.length; ++j)\n                    object.child[j] = $root.Trace.Node.toObject(message.child[j], options);\n            }\n            if (message.parentType != null && message.hasOwnProperty(\"parentType\"))\n                object.parentType = message.parentType;\n            if (message.originalFieldName != null && message.hasOwnProperty(\"originalFieldName\"))\n                object.originalFieldName = message.originalFieldName;\n            return object;\n        };\n\n        /**\n         * Converts this Node to JSON.\n         * @function toJSON\n         * @memberof Trace.Node\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Node.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        return Node;\n    })();\n\n    Trace.QueryPlanNode = (function() {\n\n        /**\n         * Properties of a QueryPlanNode.\n         * @memberof Trace\n         * @interface IQueryPlanNode\n         * @property {Trace.QueryPlanNode.ISequenceNode|null} [sequence] QueryPlanNode sequence\n         * @property {Trace.QueryPlanNode.IParallelNode|null} [parallel] QueryPlanNode parallel\n         * @property {Trace.QueryPlanNode.IFetchNode|null} [fetch] QueryPlanNode fetch\n         * @property {Trace.QueryPlanNode.IFlattenNode|null} [flatten] QueryPlanNode flatten\n         * @property {Trace.QueryPlanNode.IDeferNode|null} [defer] QueryPlanNode defer\n         * @property {Trace.QueryPlanNode.IConditionNode|null} [condition] QueryPlanNode condition\n         */\n\n        /**\n         * Constructs a new QueryPlanNode.\n         * @memberof Trace\n         * @classdesc Represents a QueryPlanNode.\n         * @implements IQueryPlanNode\n         * @constructor\n         * @param {Trace.IQueryPlanNode=} [properties] Properties to set\n         */\n        function QueryPlanNode(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * QueryPlanNode sequence.\n         * @member {Trace.QueryPlanNode.ISequenceNode|null|undefined} sequence\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.sequence = null;\n\n        /**\n         * QueryPlanNode parallel.\n         * @member {Trace.QueryPlanNode.IParallelNode|null|undefined} parallel\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.parallel = null;\n\n        /**\n         * QueryPlanNode fetch.\n         * @member {Trace.QueryPlanNode.IFetchNode|null|undefined} fetch\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.fetch = null;\n\n        /**\n         * QueryPlanNode flatten.\n         * @member {Trace.QueryPlanNode.IFlattenNode|null|undefined} flatten\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.flatten = null;\n\n        /**\n         * QueryPlanNode defer.\n         * @member {Trace.QueryPlanNode.IDeferNode|null|undefined} defer\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.defer = null;\n\n        /**\n         * QueryPlanNode condition.\n         * @member {Trace.QueryPlanNode.IConditionNode|null|undefined} condition\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.condition = null;\n\n        // OneOf field names bound to virtual getters and setters\n        var $oneOfFields;\n\n        /**\n         * QueryPlanNode node.\n         * @member {\"sequence\"|\"parallel\"|\"fetch\"|\"flatten\"|\"defer\"|\"condition\"|undefined} node\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        Object.defineProperty(QueryPlanNode.prototype, \"node\", {\n            get: $util.oneOfGetter($oneOfFields = [\"sequence\", \"parallel\", \"fetch\", \"flatten\", \"defer\", \"condition\"]),\n            set: $util.oneOfSetter($oneOfFields)\n        });\n\n        /**\n         * Creates a new QueryPlanNode instance using the specified properties.\n         * @function create\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Trace.IQueryPlanNode=} [properties] Properties to set\n         * @returns {Trace.QueryPlanNode} QueryPlanNode instance\n         */\n        QueryPlanNode.create = function create(properties) {\n            return new QueryPlanNode(properties);\n        };\n\n        /**\n         * Encodes the specified QueryPlanNode message. Does not implicitly {@link Trace.QueryPlanNode.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Trace.IQueryPlanNode} message QueryPlanNode message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        QueryPlanNode.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.sequence != null && Object.hasOwnProperty.call(message, \"sequence\"))\n                $root.Trace.QueryPlanNode.SequenceNode.encode(message.sequence, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n            if (message.parallel != null && Object.hasOwnProperty.call(message, \"parallel\"))\n                $root.Trace.QueryPlanNode.ParallelNode.encode(message.parallel, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n            if (message.fetch != null && Object.hasOwnProperty.call(message, \"fetch\"))\n                $root.Trace.QueryPlanNode.FetchNode.encode(message.fetch, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n            if (message.flatten != null && Object.hasOwnProperty.call(message, \"flatten\"))\n                $root.Trace.QueryPlanNode.FlattenNode.encode(message.flatten, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n            if (message.defer != null && Object.hasOwnProperty.call(message, \"defer\"))\n                $root.Trace.QueryPlanNode.DeferNode.encode(message.defer, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n            if (message.condition != null && Object.hasOwnProperty.call(message, \"condition\"))\n                $root.Trace.QueryPlanNode.ConditionNode.encode(message.condition, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n            return writer;\n        };\n\n        /**\n         * Encodes the specified QueryPlanNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Trace.IQueryPlanNode} message QueryPlanNode message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        QueryPlanNode.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a QueryPlanNode message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.QueryPlanNode} QueryPlanNode\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        QueryPlanNode.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.sequence = $root.Trace.QueryPlanNode.SequenceNode.decode(reader, reader.uint32());\n                    break;\n                case 2:\n                    message.parallel = $root.Trace.QueryPlanNode.ParallelNode.decode(reader, reader.uint32());\n                    break;\n                case 3:\n                    message.fetch = $root.Trace.QueryPlanNode.FetchNode.decode(reader, reader.uint32());\n                    break;\n                case 4:\n                    message.flatten = $root.Trace.QueryPlanNode.FlattenNode.decode(reader, reader.uint32());\n                    break;\n                case 5:\n                    message.defer = $root.Trace.QueryPlanNode.DeferNode.decode(reader, reader.uint32());\n                    break;\n                case 6:\n                    message.condition = $root.Trace.QueryPlanNode.ConditionNode.decode(reader, reader.uint32());\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a QueryPlanNode message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.QueryPlanNode} QueryPlanNode\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        QueryPlanNode.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a QueryPlanNode message.\n         * @function verify\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        QueryPlanNode.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            var properties = {};\n            if (message.sequence != null && message.hasOwnProperty(\"sequence\")) {\n                properties.node = 1;\n                {\n                    var error = $root.Trace.QueryPlanNode.SequenceNode.verify(message.sequence);\n                    if (error)\n                        return \"sequence.\" + error;\n                }\n            }\n            if (message.parallel != null && message.hasOwnProperty(\"parallel\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    var error = $root.Trace.QueryPlanNode.ParallelNode.verify(message.parallel);\n                    if (error)\n                        return \"parallel.\" + error;\n                }\n            }\n            if (message.fetch != null && message.hasOwnProperty(\"fetch\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    var error = $root.Trace.QueryPlanNode.FetchNode.verify(message.fetch);\n                    if (error)\n                        return \"fetch.\" + error;\n                }\n            }\n            if (message.flatten != null && message.hasOwnProperty(\"flatten\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    var error = $root.Trace.QueryPlanNode.FlattenNode.verify(message.flatten);\n                    if (error)\n                        return \"flatten.\" + error;\n                }\n            }\n            if (message.defer != null && message.hasOwnProperty(\"defer\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    var error = $root.Trace.QueryPlanNode.DeferNode.verify(message.defer);\n                    if (error)\n                        return \"defer.\" + error;\n                }\n            }\n            if (message.condition != null && message.hasOwnProperty(\"condition\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    var error = $root.Trace.QueryPlanNode.ConditionNode.verify(message.condition);\n                    if (error)\n                        return \"condition.\" + error;\n                }\n            }\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a QueryPlanNode message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Trace.QueryPlanNode} message QueryPlanNode\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        QueryPlanNode.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (message.sequence != null && message.hasOwnProperty(\"sequence\")) {\n                object.sequence = $root.Trace.QueryPlanNode.SequenceNode.toObject(message.sequence, options);\n                if (options.oneofs)\n                    object.node = \"sequence\";\n            }\n            if (message.parallel != null && message.hasOwnProperty(\"parallel\")) {\n                object.parallel = $root.Trace.QueryPlanNode.ParallelNode.toObject(message.parallel, options);\n                if (options.oneofs)\n                    object.node = \"parallel\";\n            }\n            if (message.fetch != null && message.hasOwnProperty(\"fetch\")) {\n                object.fetch = $root.Trace.QueryPlanNode.FetchNode.toObject(message.fetch, options);\n                if (options.oneofs)\n                    object.node = \"fetch\";\n            }\n            if (message.flatten != null && message.hasOwnProperty(\"flatten\")) {\n                object.flatten = $root.Trace.QueryPlanNode.FlattenNode.toObject(message.flatten, options);\n                if (options.oneofs)\n                    object.node = \"flatten\";\n            }\n            if (message.defer != null && message.hasOwnProperty(\"defer\")) {\n                object.defer = $root.Trace.QueryPlanNode.DeferNode.toObject(message.defer, options);\n                if (options.oneofs)\n                    object.node = \"defer\";\n            }\n            if (message.condition != null && message.hasOwnProperty(\"condition\")) {\n                object.condition = $root.Trace.QueryPlanNode.ConditionNode.toObject(message.condition, options);\n                if (options.oneofs)\n                    object.node = \"condition\";\n            }\n            return object;\n        };\n\n        /**\n         * Converts this QueryPlanNode to JSON.\n         * @function toJSON\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        QueryPlanNode.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        QueryPlanNode.SequenceNode = (function() {\n\n            /**\n             * Properties of a SequenceNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface ISequenceNode\n             * @property {Array.<Trace.IQueryPlanNode>|null} [nodes] SequenceNode nodes\n             */\n\n            /**\n             * Constructs a new SequenceNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a SequenceNode.\n             * @implements ISequenceNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.ISequenceNode=} [properties] Properties to set\n             */\n            function SequenceNode(properties) {\n                this.nodes = [];\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * SequenceNode nodes.\n             * @member {Array.<Trace.IQueryPlanNode>} nodes\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @instance\n             */\n            SequenceNode.prototype.nodes = $util.emptyArray;\n\n            /**\n             * Creates a new SequenceNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Trace.QueryPlanNode.ISequenceNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.SequenceNode} SequenceNode instance\n             */\n            SequenceNode.create = function create(properties) {\n                return new SequenceNode(properties);\n            };\n\n            /**\n             * Encodes the specified SequenceNode message. Does not implicitly {@link Trace.QueryPlanNode.SequenceNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Trace.QueryPlanNode.ISequenceNode} message SequenceNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            SequenceNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.nodes != null && message.nodes.length)\n                    for (var i = 0; i < message.nodes.length; ++i)\n                        $root.Trace.QueryPlanNode.encode(message.nodes[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified SequenceNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.SequenceNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Trace.QueryPlanNode.ISequenceNode} message SequenceNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            SequenceNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a SequenceNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.SequenceNode} SequenceNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            SequenceNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.SequenceNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.nodes && message.nodes.length))\n                            message.nodes = [];\n                        message.nodes.push($root.Trace.QueryPlanNode.decode(reader, reader.uint32()));\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a SequenceNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.SequenceNode} SequenceNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            SequenceNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a SequenceNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            SequenceNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.nodes != null && message.hasOwnProperty(\"nodes\")) {\n                    if (!Array.isArray(message.nodes))\n                        return \"nodes: array expected\";\n                    for (var i = 0; i < message.nodes.length; ++i) {\n                        var error = $root.Trace.QueryPlanNode.verify(message.nodes[i]);\n                        if (error)\n                            return \"nodes.\" + error;\n                    }\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a SequenceNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Trace.QueryPlanNode.SequenceNode} message SequenceNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            SequenceNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.arrays || options.defaults)\n                    object.nodes = [];\n                if (message.nodes && message.nodes.length) {\n                    object.nodes = [];\n                    for (var j = 0; j < message.nodes.length; ++j)\n                        object.nodes[j] = $root.Trace.QueryPlanNode.toObject(message.nodes[j], options);\n                }\n                return object;\n            };\n\n            /**\n             * Converts this SequenceNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            SequenceNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return SequenceNode;\n        })();\n\n        QueryPlanNode.ParallelNode = (function() {\n\n            /**\n             * Properties of a ParallelNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IParallelNode\n             * @property {Array.<Trace.IQueryPlanNode>|null} [nodes] ParallelNode nodes\n             */\n\n            /**\n             * Constructs a new ParallelNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a ParallelNode.\n             * @implements IParallelNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IParallelNode=} [properties] Properties to set\n             */\n            function ParallelNode(properties) {\n                this.nodes = [];\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * ParallelNode nodes.\n             * @member {Array.<Trace.IQueryPlanNode>} nodes\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @instance\n             */\n            ParallelNode.prototype.nodes = $util.emptyArray;\n\n            /**\n             * Creates a new ParallelNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Trace.QueryPlanNode.IParallelNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.ParallelNode} ParallelNode instance\n             */\n            ParallelNode.create = function create(properties) {\n                return new ParallelNode(properties);\n            };\n\n            /**\n             * Encodes the specified ParallelNode message. Does not implicitly {@link Trace.QueryPlanNode.ParallelNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Trace.QueryPlanNode.IParallelNode} message ParallelNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ParallelNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.nodes != null && message.nodes.length)\n                    for (var i = 0; i < message.nodes.length; ++i)\n                        $root.Trace.QueryPlanNode.encode(message.nodes[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified ParallelNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.ParallelNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Trace.QueryPlanNode.IParallelNode} message ParallelNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ParallelNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a ParallelNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.ParallelNode} ParallelNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ParallelNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.ParallelNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.nodes && message.nodes.length))\n                            message.nodes = [];\n                        message.nodes.push($root.Trace.QueryPlanNode.decode(reader, reader.uint32()));\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a ParallelNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.ParallelNode} ParallelNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ParallelNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a ParallelNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            ParallelNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.nodes != null && message.hasOwnProperty(\"nodes\")) {\n                    if (!Array.isArray(message.nodes))\n                        return \"nodes: array expected\";\n                    for (var i = 0; i < message.nodes.length; ++i) {\n                        var error = $root.Trace.QueryPlanNode.verify(message.nodes[i]);\n                        if (error)\n                            return \"nodes.\" + error;\n                    }\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a ParallelNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Trace.QueryPlanNode.ParallelNode} message ParallelNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            ParallelNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.arrays || options.defaults)\n                    object.nodes = [];\n                if (message.nodes && message.nodes.length) {\n                    object.nodes = [];\n                    for (var j = 0; j < message.nodes.length; ++j)\n                        object.nodes[j] = $root.Trace.QueryPlanNode.toObject(message.nodes[j], options);\n                }\n                return object;\n            };\n\n            /**\n             * Converts this ParallelNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            ParallelNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return ParallelNode;\n        })();\n\n        QueryPlanNode.FetchNode = (function() {\n\n            /**\n             * Properties of a FetchNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IFetchNode\n             * @property {string|null} [serviceName] FetchNode serviceName\n             * @property {boolean|null} [traceParsingFailed] FetchNode traceParsingFailed\n             * @property {ITrace|null} [trace] FetchNode trace\n             * @property {number|null} [sentTimeOffset] FetchNode sentTimeOffset\n             * @property {google.protobuf.ITimestamp|null} [sentTime] FetchNode sentTime\n             * @property {google.protobuf.ITimestamp|null} [receivedTime] FetchNode receivedTime\n             */\n\n            /**\n             * Constructs a new FetchNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a FetchNode.\n             * @implements IFetchNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IFetchNode=} [properties] Properties to set\n             */\n            function FetchNode(properties) {\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * FetchNode serviceName.\n             * @member {string} serviceName\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.serviceName = \"\";\n\n            /**\n             * FetchNode traceParsingFailed.\n             * @member {boolean} traceParsingFailed\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.traceParsingFailed = false;\n\n            /**\n             * FetchNode trace.\n             * @member {ITrace|null|undefined} trace\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.trace = null;\n\n            /**\n             * FetchNode sentTimeOffset.\n             * @member {number} sentTimeOffset\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.sentTimeOffset = 0;\n\n            /**\n             * FetchNode sentTime.\n             * @member {google.protobuf.ITimestamp|null|undefined} sentTime\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.sentTime = null;\n\n            /**\n             * FetchNode receivedTime.\n             * @member {google.protobuf.ITimestamp|null|undefined} receivedTime\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.receivedTime = null;\n\n            /**\n             * Creates a new FetchNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFetchNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.FetchNode} FetchNode instance\n             */\n            FetchNode.create = function create(properties) {\n                return new FetchNode(properties);\n            };\n\n            /**\n             * Encodes the specified FetchNode message. Does not implicitly {@link Trace.QueryPlanNode.FetchNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFetchNode} message FetchNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            FetchNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.serviceName != null && Object.hasOwnProperty.call(message, \"serviceName\"))\n                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.serviceName);\n                if (message.traceParsingFailed != null && Object.hasOwnProperty.call(message, \"traceParsingFailed\"))\n                    writer.uint32(/* id 2, wireType 0 =*/16).bool(message.traceParsingFailed);\n                if (message.trace != null && Object.hasOwnProperty.call(message, \"trace\"))\n                    $root.Trace.encode(message.trace, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n                if (message.sentTimeOffset != null && Object.hasOwnProperty.call(message, \"sentTimeOffset\"))\n                    writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.sentTimeOffset);\n                if (message.sentTime != null && Object.hasOwnProperty.call(message, \"sentTime\"))\n                    $root.google.protobuf.Timestamp.encode(message.sentTime, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n                if (message.receivedTime != null && Object.hasOwnProperty.call(message, \"receivedTime\"))\n                    $root.google.protobuf.Timestamp.encode(message.receivedTime, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified FetchNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.FetchNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFetchNode} message FetchNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            FetchNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a FetchNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.FetchNode} FetchNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            FetchNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.FetchNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.serviceName = reader.string();\n                        break;\n                    case 2:\n                        message.traceParsingFailed = reader.bool();\n                        break;\n                    case 3:\n                        message.trace = $root.Trace.decode(reader, reader.uint32());\n                        break;\n                    case 4:\n                        message.sentTimeOffset = reader.uint64();\n                        break;\n                    case 5:\n                        message.sentTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                        break;\n                    case 6:\n                        message.receivedTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a FetchNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.FetchNode} FetchNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            FetchNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a FetchNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            FetchNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.serviceName != null && message.hasOwnProperty(\"serviceName\"))\n                    if (!$util.isString(message.serviceName))\n                        return \"serviceName: string expected\";\n                if (message.traceParsingFailed != null && message.hasOwnProperty(\"traceParsingFailed\"))\n                    if (typeof message.traceParsingFailed !== \"boolean\")\n                        return \"traceParsingFailed: boolean expected\";\n                if (message.trace != null && message.hasOwnProperty(\"trace\")) {\n                    var error = $root.Trace.verify(message.trace);\n                    if (error)\n                        return \"trace.\" + error;\n                }\n                if (message.sentTimeOffset != null && message.hasOwnProperty(\"sentTimeOffset\"))\n                    if (!$util.isInteger(message.sentTimeOffset) && !(message.sentTimeOffset && $util.isInteger(message.sentTimeOffset.low) && $util.isInteger(message.sentTimeOffset.high)))\n                        return \"sentTimeOffset: integer|Long expected\";\n                if (message.sentTime != null && message.hasOwnProperty(\"sentTime\")) {\n                    var error = $root.google.protobuf.Timestamp.verify(message.sentTime);\n                    if (error)\n                        return \"sentTime.\" + error;\n                }\n                if (message.receivedTime != null && message.hasOwnProperty(\"receivedTime\")) {\n                    var error = $root.google.protobuf.Timestamp.verify(message.receivedTime);\n                    if (error)\n                        return \"receivedTime.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a FetchNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Trace.QueryPlanNode.FetchNode} message FetchNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            FetchNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.defaults) {\n                    object.serviceName = \"\";\n                    object.traceParsingFailed = false;\n                    object.trace = null;\n                    object.sentTimeOffset = 0;\n                    object.sentTime = null;\n                    object.receivedTime = null;\n                }\n                if (message.serviceName != null && message.hasOwnProperty(\"serviceName\"))\n                    object.serviceName = message.serviceName;\n                if (message.traceParsingFailed != null && message.hasOwnProperty(\"traceParsingFailed\"))\n                    object.traceParsingFailed = message.traceParsingFailed;\n                if (message.trace != null && message.hasOwnProperty(\"trace\"))\n                    object.trace = $root.Trace.toObject(message.trace, options);\n                if (message.sentTimeOffset != null && message.hasOwnProperty(\"sentTimeOffset\"))\n                    if (typeof message.sentTimeOffset === \"number\")\n                        object.sentTimeOffset = options.longs === String ? String(message.sentTimeOffset) : message.sentTimeOffset;\n                    else\n                        object.sentTimeOffset = options.longs === String ? $util.Long.prototype.toString.call(message.sentTimeOffset) : options.longs === Number ? new $util.LongBits(message.sentTimeOffset.low >>> 0, message.sentTimeOffset.high >>> 0).toNumber(true) : message.sentTimeOffset;\n                if (message.sentTime != null && message.hasOwnProperty(\"sentTime\"))\n                    object.sentTime = $root.google.protobuf.Timestamp.toObject(message.sentTime, options);\n                if (message.receivedTime != null && message.hasOwnProperty(\"receivedTime\"))\n                    object.receivedTime = $root.google.protobuf.Timestamp.toObject(message.receivedTime, options);\n                return object;\n            };\n\n            /**\n             * Converts this FetchNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            FetchNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return FetchNode;\n        })();\n\n        QueryPlanNode.FlattenNode = (function() {\n\n            /**\n             * Properties of a FlattenNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IFlattenNode\n             * @property {Array.<Trace.QueryPlanNode.IResponsePathElement>|null} [responsePath] FlattenNode responsePath\n             * @property {Trace.IQueryPlanNode|null} [node] FlattenNode node\n             */\n\n            /**\n             * Constructs a new FlattenNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a FlattenNode.\n             * @implements IFlattenNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IFlattenNode=} [properties] Properties to set\n             */\n            function FlattenNode(properties) {\n                this.responsePath = [];\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * FlattenNode responsePath.\n             * @member {Array.<Trace.QueryPlanNode.IResponsePathElement>} responsePath\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @instance\n             */\n            FlattenNode.prototype.responsePath = $util.emptyArray;\n\n            /**\n             * FlattenNode node.\n             * @member {Trace.IQueryPlanNode|null|undefined} node\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @instance\n             */\n            FlattenNode.prototype.node = null;\n\n            /**\n             * Creates a new FlattenNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFlattenNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.FlattenNode} FlattenNode instance\n             */\n            FlattenNode.create = function create(properties) {\n                return new FlattenNode(properties);\n            };\n\n            /**\n             * Encodes the specified FlattenNode message. Does not implicitly {@link Trace.QueryPlanNode.FlattenNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFlattenNode} message FlattenNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            FlattenNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.responsePath != null && message.responsePath.length)\n                    for (var i = 0; i < message.responsePath.length; ++i)\n                        $root.Trace.QueryPlanNode.ResponsePathElement.encode(message.responsePath[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                if (message.node != null && Object.hasOwnProperty.call(message, \"node\"))\n                    $root.Trace.QueryPlanNode.encode(message.node, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified FlattenNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.FlattenNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFlattenNode} message FlattenNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            FlattenNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a FlattenNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.FlattenNode} FlattenNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            FlattenNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.FlattenNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.responsePath && message.responsePath.length))\n                            message.responsePath = [];\n                        message.responsePath.push($root.Trace.QueryPlanNode.ResponsePathElement.decode(reader, reader.uint32()));\n                        break;\n                    case 2:\n                        message.node = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a FlattenNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.FlattenNode} FlattenNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            FlattenNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a FlattenNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            FlattenNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.responsePath != null && message.hasOwnProperty(\"responsePath\")) {\n                    if (!Array.isArray(message.responsePath))\n                        return \"responsePath: array expected\";\n                    for (var i = 0; i < message.responsePath.length; ++i) {\n                        var error = $root.Trace.QueryPlanNode.ResponsePathElement.verify(message.responsePath[i]);\n                        if (error)\n                            return \"responsePath.\" + error;\n                    }\n                }\n                if (message.node != null && message.hasOwnProperty(\"node\")) {\n                    var error = $root.Trace.QueryPlanNode.verify(message.node);\n                    if (error)\n                        return \"node.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a FlattenNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Trace.QueryPlanNode.FlattenNode} message FlattenNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            FlattenNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.arrays || options.defaults)\n                    object.responsePath = [];\n                if (options.defaults)\n                    object.node = null;\n                if (message.responsePath && message.responsePath.length) {\n                    object.responsePath = [];\n                    for (var j = 0; j < message.responsePath.length; ++j)\n                        object.responsePath[j] = $root.Trace.QueryPlanNode.ResponsePathElement.toObject(message.responsePath[j], options);\n                }\n                if (message.node != null && message.hasOwnProperty(\"node\"))\n                    object.node = $root.Trace.QueryPlanNode.toObject(message.node, options);\n                return object;\n            };\n\n            /**\n             * Converts this FlattenNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            FlattenNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return FlattenNode;\n        })();\n\n        QueryPlanNode.DeferNode = (function() {\n\n            /**\n             * Properties of a DeferNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IDeferNode\n             * @property {Trace.QueryPlanNode.IDeferNodePrimary|null} [primary] DeferNode primary\n             * @property {Array.<Trace.QueryPlanNode.IDeferredNode>|null} [deferred] DeferNode deferred\n             */\n\n            /**\n             * Constructs a new DeferNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a DeferNode.\n             * @implements IDeferNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IDeferNode=} [properties] Properties to set\n             */\n            function DeferNode(properties) {\n                this.deferred = [];\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * DeferNode primary.\n             * @member {Trace.QueryPlanNode.IDeferNodePrimary|null|undefined} primary\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @instance\n             */\n            DeferNode.prototype.primary = null;\n\n            /**\n             * DeferNode deferred.\n             * @member {Array.<Trace.QueryPlanNode.IDeferredNode>} deferred\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @instance\n             */\n            DeferNode.prototype.deferred = $util.emptyArray;\n\n            /**\n             * Creates a new DeferNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.DeferNode} DeferNode instance\n             */\n            DeferNode.create = function create(properties) {\n                return new DeferNode(properties);\n            };\n\n            /**\n             * Encodes the specified DeferNode message. Does not implicitly {@link Trace.QueryPlanNode.DeferNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNode} message DeferNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.primary != null && Object.hasOwnProperty.call(message, \"primary\"))\n                    $root.Trace.QueryPlanNode.DeferNodePrimary.encode(message.primary, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                if (message.deferred != null && message.deferred.length)\n                    for (var i = 0; i < message.deferred.length; ++i)\n                        $root.Trace.QueryPlanNode.DeferredNode.encode(message.deferred[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified DeferNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.DeferNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNode} message DeferNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a DeferNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.DeferNode} DeferNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.DeferNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.primary = $root.Trace.QueryPlanNode.DeferNodePrimary.decode(reader, reader.uint32());\n                        break;\n                    case 2:\n                        if (!(message.deferred && message.deferred.length))\n                            message.deferred = [];\n                        message.deferred.push($root.Trace.QueryPlanNode.DeferredNode.decode(reader, reader.uint32()));\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a DeferNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.DeferNode} DeferNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a DeferNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            DeferNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.primary != null && message.hasOwnProperty(\"primary\")) {\n                    var error = $root.Trace.QueryPlanNode.DeferNodePrimary.verify(message.primary);\n                    if (error)\n                        return \"primary.\" + error;\n                }\n                if (message.deferred != null && message.hasOwnProperty(\"deferred\")) {\n                    if (!Array.isArray(message.deferred))\n                        return \"deferred: array expected\";\n                    for (var i = 0; i < message.deferred.length; ++i) {\n                        var error = $root.Trace.QueryPlanNode.DeferredNode.verify(message.deferred[i]);\n                        if (error)\n                            return \"deferred.\" + error;\n                    }\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a DeferNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Trace.QueryPlanNode.DeferNode} message DeferNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            DeferNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.arrays || options.defaults)\n                    object.deferred = [];\n                if (options.defaults)\n                    object.primary = null;\n                if (message.primary != null && message.hasOwnProperty(\"primary\"))\n                    object.primary = $root.Trace.QueryPlanNode.DeferNodePrimary.toObject(message.primary, options);\n                if (message.deferred && message.deferred.length) {\n                    object.deferred = [];\n                    for (var j = 0; j < message.deferred.length; ++j)\n                        object.deferred[j] = $root.Trace.QueryPlanNode.DeferredNode.toObject(message.deferred[j], options);\n                }\n                return object;\n            };\n\n            /**\n             * Converts this DeferNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            DeferNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return DeferNode;\n        })();\n\n        QueryPlanNode.ConditionNode = (function() {\n\n            /**\n             * Properties of a ConditionNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IConditionNode\n             * @property {string|null} [condition] ConditionNode condition\n             * @property {Trace.IQueryPlanNode|null} [ifClause] ConditionNode ifClause\n             * @property {Trace.IQueryPlanNode|null} [elseClause] ConditionNode elseClause\n             */\n\n            /**\n             * Constructs a new ConditionNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a ConditionNode.\n             * @implements IConditionNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IConditionNode=} [properties] Properties to set\n             */\n            function ConditionNode(properties) {\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * ConditionNode condition.\n             * @member {string} condition\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @instance\n             */\n            ConditionNode.prototype.condition = \"\";\n\n            /**\n             * ConditionNode ifClause.\n             * @member {Trace.IQueryPlanNode|null|undefined} ifClause\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @instance\n             */\n            ConditionNode.prototype.ifClause = null;\n\n            /**\n             * ConditionNode elseClause.\n             * @member {Trace.IQueryPlanNode|null|undefined} elseClause\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @instance\n             */\n            ConditionNode.prototype.elseClause = null;\n\n            /**\n             * Creates a new ConditionNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Trace.QueryPlanNode.IConditionNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.ConditionNode} ConditionNode instance\n             */\n            ConditionNode.create = function create(properties) {\n                return new ConditionNode(properties);\n            };\n\n            /**\n             * Encodes the specified ConditionNode message. Does not implicitly {@link Trace.QueryPlanNode.ConditionNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Trace.QueryPlanNode.IConditionNode} message ConditionNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ConditionNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.condition != null && Object.hasOwnProperty.call(message, \"condition\"))\n                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.condition);\n                if (message.ifClause != null && Object.hasOwnProperty.call(message, \"ifClause\"))\n                    $root.Trace.QueryPlanNode.encode(message.ifClause, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n                if (message.elseClause != null && Object.hasOwnProperty.call(message, \"elseClause\"))\n                    $root.Trace.QueryPlanNode.encode(message.elseClause, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified ConditionNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.ConditionNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Trace.QueryPlanNode.IConditionNode} message ConditionNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ConditionNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a ConditionNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.ConditionNode} ConditionNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ConditionNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.ConditionNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.condition = reader.string();\n                        break;\n                    case 2:\n                        message.ifClause = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    case 3:\n                        message.elseClause = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a ConditionNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.ConditionNode} ConditionNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ConditionNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a ConditionNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            ConditionNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.condition != null && message.hasOwnProperty(\"condition\"))\n                    if (!$util.isString(message.condition))\n                        return \"condition: string expected\";\n                if (message.ifClause != null && message.hasOwnProperty(\"ifClause\")) {\n                    var error = $root.Trace.QueryPlanNode.verify(message.ifClause);\n                    if (error)\n                        return \"ifClause.\" + error;\n                }\n                if (message.elseClause != null && message.hasOwnProperty(\"elseClause\")) {\n                    var error = $root.Trace.QueryPlanNode.verify(message.elseClause);\n                    if (error)\n                        return \"elseClause.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a ConditionNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Trace.QueryPlanNode.ConditionNode} message ConditionNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            ConditionNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.defaults) {\n                    object.condition = \"\";\n                    object.ifClause = null;\n                    object.elseClause = null;\n                }\n                if (message.condition != null && message.hasOwnProperty(\"condition\"))\n                    object.condition = message.condition;\n                if (message.ifClause != null && message.hasOwnProperty(\"ifClause\"))\n                    object.ifClause = $root.Trace.QueryPlanNode.toObject(message.ifClause, options);\n                if (message.elseClause != null && message.hasOwnProperty(\"elseClause\"))\n                    object.elseClause = $root.Trace.QueryPlanNode.toObject(message.elseClause, options);\n                return object;\n            };\n\n            /**\n             * Converts this ConditionNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            ConditionNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return ConditionNode;\n        })();\n\n        QueryPlanNode.DeferNodePrimary = (function() {\n\n            /**\n             * Properties of a DeferNodePrimary.\n             * @memberof Trace.QueryPlanNode\n             * @interface IDeferNodePrimary\n             * @property {Trace.IQueryPlanNode|null} [node] DeferNodePrimary node\n             */\n\n            /**\n             * Constructs a new DeferNodePrimary.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a DeferNodePrimary.\n             * @implements IDeferNodePrimary\n             * @constructor\n             * @param {Trace.QueryPlanNode.IDeferNodePrimary=} [properties] Properties to set\n             */\n            function DeferNodePrimary(properties) {\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * DeferNodePrimary node.\n             * @member {Trace.IQueryPlanNode|null|undefined} node\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @instance\n             */\n            DeferNodePrimary.prototype.node = null;\n\n            /**\n             * Creates a new DeferNodePrimary instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNodePrimary=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.DeferNodePrimary} DeferNodePrimary instance\n             */\n            DeferNodePrimary.create = function create(properties) {\n                return new DeferNodePrimary(properties);\n            };\n\n            /**\n             * Encodes the specified DeferNodePrimary message. Does not implicitly {@link Trace.QueryPlanNode.DeferNodePrimary.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNodePrimary} message DeferNodePrimary message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferNodePrimary.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.node != null && Object.hasOwnProperty.call(message, \"node\"))\n                    $root.Trace.QueryPlanNode.encode(message.node, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified DeferNodePrimary message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.DeferNodePrimary.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNodePrimary} message DeferNodePrimary message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferNodePrimary.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a DeferNodePrimary message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.DeferNodePrimary} DeferNodePrimary\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferNodePrimary.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.DeferNodePrimary();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.node = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a DeferNodePrimary message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.DeferNodePrimary} DeferNodePrimary\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferNodePrimary.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a DeferNodePrimary message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            DeferNodePrimary.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.node != null && message.hasOwnProperty(\"node\")) {\n                    var error = $root.Trace.QueryPlanNode.verify(message.node);\n                    if (error)\n                        return \"node.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a DeferNodePrimary message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Trace.QueryPlanNode.DeferNodePrimary} message DeferNodePrimary\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            DeferNodePrimary.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.defaults)\n                    object.node = null;\n                if (message.node != null && message.hasOwnProperty(\"node\"))\n                    object.node = $root.Trace.QueryPlanNode.toObject(message.node, options);\n                return object;\n            };\n\n            /**\n             * Converts this DeferNodePrimary to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            DeferNodePrimary.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return DeferNodePrimary;\n        })();\n\n        QueryPlanNode.DeferredNode = (function() {\n\n            /**\n             * Properties of a DeferredNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IDeferredNode\n             * @property {Array.<Trace.QueryPlanNode.IDeferredNodeDepends>|null} [depends] DeferredNode depends\n             * @property {string|null} [label] DeferredNode label\n             * @property {Array.<Trace.QueryPlanNode.IResponsePathElement>|null} [path] DeferredNode path\n             * @property {Trace.IQueryPlanNode|null} [node] DeferredNode node\n             */\n\n            /**\n             * Constructs a new DeferredNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a DeferredNode.\n             * @implements IDeferredNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IDeferredNode=} [properties] Properties to set\n             */\n            function DeferredNode(properties) {\n                this.depends = [];\n                this.path = [];\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * DeferredNode depends.\n             * @member {Array.<Trace.QueryPlanNode.IDeferredNodeDepends>} depends\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             */\n            DeferredNode.prototype.depends = $util.emptyArray;\n\n            /**\n             * DeferredNode label.\n             * @member {string} label\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             */\n            DeferredNode.prototype.label = \"\";\n\n            /**\n             * DeferredNode path.\n             * @member {Array.<Trace.QueryPlanNode.IResponsePathElement>} path\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             */\n            DeferredNode.prototype.path = $util.emptyArray;\n\n            /**\n             * DeferredNode node.\n             * @member {Trace.IQueryPlanNode|null|undefined} node\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             */\n            DeferredNode.prototype.node = null;\n\n            /**\n             * Creates a new DeferredNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.DeferredNode} DeferredNode instance\n             */\n            DeferredNode.create = function create(properties) {\n                return new DeferredNode(properties);\n            };\n\n            /**\n             * Encodes the specified DeferredNode message. Does not implicitly {@link Trace.QueryPlanNode.DeferredNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNode} message DeferredNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferredNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.depends != null && message.depends.length)\n                    for (var i = 0; i < message.depends.length; ++i)\n                        $root.Trace.QueryPlanNode.DeferredNodeDepends.encode(message.depends[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                if (message.label != null && Object.hasOwnProperty.call(message, \"label\"))\n                    writer.uint32(/* id 2, wireType 2 =*/18).string(message.label);\n                if (message.path != null && message.path.length)\n                    for (var i = 0; i < message.path.length; ++i)\n                        $root.Trace.QueryPlanNode.ResponsePathElement.encode(message.path[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n                if (message.node != null && Object.hasOwnProperty.call(message, \"node\"))\n                    $root.Trace.QueryPlanNode.encode(message.node, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified DeferredNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.DeferredNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNode} message DeferredNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferredNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a DeferredNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.DeferredNode} DeferredNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferredNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.DeferredNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.depends && message.depends.length))\n                            message.depends = [];\n                        message.depends.push($root.Trace.QueryPlanNode.DeferredNodeDepends.decode(reader, reader.uint32()));\n                        break;\n                    case 2:\n                        message.label = reader.string();\n                        break;\n                    case 3:\n                        if (!(message.path && message.path.length))\n                            message.path = [];\n                        message.path.push($root.Trace.QueryPlanNode.ResponsePathElement.decode(reader, reader.uint32()));\n                        break;\n                    case 4:\n                        message.node = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a DeferredNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.DeferredNode} DeferredNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferredNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a DeferredNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            DeferredNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.depends != null && message.hasOwnProperty(\"depends\")) {\n                    if (!Array.isArray(message.depends))\n                        return \"depends: array expected\";\n                    for (var i = 0; i < message.depends.length; ++i) {\n                        var error = $root.Trace.QueryPlanNode.DeferredNodeDepends.verify(message.depends[i]);\n                        if (error)\n                            return \"depends.\" + error;\n                    }\n                }\n                if (message.label != null && message.hasOwnProperty(\"label\"))\n                    if (!$util.isString(message.label))\n                        return \"label: string expected\";\n                if (message.path != null && message.hasOwnProperty(\"path\")) {\n                    if (!Array.isArray(message.path))\n                        return \"path: array expected\";\n                    for (var i = 0; i < message.path.length; ++i) {\n                        var error = $root.Trace.QueryPlanNode.ResponsePathElement.verify(message.path[i]);\n                        if (error)\n                            return \"path.\" + error;\n                    }\n                }\n                if (message.node != null && message.hasOwnProperty(\"node\")) {\n                    var error = $root.Trace.QueryPlanNode.verify(message.node);\n                    if (error)\n                        return \"node.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a DeferredNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Trace.QueryPlanNode.DeferredNode} message DeferredNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            DeferredNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.arrays || options.defaults) {\n                    object.depends = [];\n                    object.path = [];\n                }\n                if (options.defaults) {\n                    object.label = \"\";\n                    object.node = null;\n                }\n                if (message.depends && message.depends.length) {\n                    object.depends = [];\n                    for (var j = 0; j < message.depends.length; ++j)\n                        object.depends[j] = $root.Trace.QueryPlanNode.DeferredNodeDepends.toObject(message.depends[j], options);\n                }\n                if (message.label != null && message.hasOwnProperty(\"label\"))\n                    object.label = message.label;\n                if (message.path && message.path.length) {\n                    object.path = [];\n                    for (var j = 0; j < message.path.length; ++j)\n                        object.path[j] = $root.Trace.QueryPlanNode.ResponsePathElement.toObject(message.path[j], options);\n                }\n                if (message.node != null && message.hasOwnProperty(\"node\"))\n                    object.node = $root.Trace.QueryPlanNode.toObject(message.node, options);\n                return object;\n            };\n\n            /**\n             * Converts this DeferredNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            DeferredNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return DeferredNode;\n        })();\n\n        QueryPlanNode.DeferredNodeDepends = (function() {\n\n            /**\n             * Properties of a DeferredNodeDepends.\n             * @memberof Trace.QueryPlanNode\n             * @interface IDeferredNodeDepends\n             * @property {string|null} [id] DeferredNodeDepends id\n             * @property {string|null} [deferLabel] DeferredNodeDepends deferLabel\n             */\n\n            /**\n             * Constructs a new DeferredNodeDepends.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a DeferredNodeDepends.\n             * @implements IDeferredNodeDepends\n             * @constructor\n             * @param {Trace.QueryPlanNode.IDeferredNodeDepends=} [properties] Properties to set\n             */\n            function DeferredNodeDepends(properties) {\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * DeferredNodeDepends id.\n             * @member {string} id\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @instance\n             */\n            DeferredNodeDepends.prototype.id = \"\";\n\n            /**\n             * DeferredNodeDepends deferLabel.\n             * @member {string} deferLabel\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @instance\n             */\n            DeferredNodeDepends.prototype.deferLabel = \"\";\n\n            /**\n             * Creates a new DeferredNodeDepends instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNodeDepends=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.DeferredNodeDepends} DeferredNodeDepends instance\n             */\n            DeferredNodeDepends.create = function create(properties) {\n                return new DeferredNodeDepends(properties);\n            };\n\n            /**\n             * Encodes the specified DeferredNodeDepends message. Does not implicitly {@link Trace.QueryPlanNode.DeferredNodeDepends.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNodeDepends} message DeferredNodeDepends message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferredNodeDepends.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.id != null && Object.hasOwnProperty.call(message, \"id\"))\n                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.id);\n                if (message.deferLabel != null && Object.hasOwnProperty.call(message, \"deferLabel\"))\n                    writer.uint32(/* id 2, wireType 2 =*/18).string(message.deferLabel);\n                return writer;\n            };\n\n            /**\n             * Encodes the specified DeferredNodeDepends message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.DeferredNodeDepends.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNodeDepends} message DeferredNodeDepends message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferredNodeDepends.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a DeferredNodeDepends message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.DeferredNodeDepends} DeferredNodeDepends\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferredNodeDepends.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.DeferredNodeDepends();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.id = reader.string();\n                        break;\n                    case 2:\n                        message.deferLabel = reader.string();\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a DeferredNodeDepends message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.DeferredNodeDepends} DeferredNodeDepends\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferredNodeDepends.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a DeferredNodeDepends message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            DeferredNodeDepends.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.id != null && message.hasOwnProperty(\"id\"))\n                    if (!$util.isString(message.id))\n                        return \"id: string expected\";\n                if (message.deferLabel != null && message.hasOwnProperty(\"deferLabel\"))\n                    if (!$util.isString(message.deferLabel))\n                        return \"deferLabel: string expected\";\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a DeferredNodeDepends message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Trace.QueryPlanNode.DeferredNodeDepends} message DeferredNodeDepends\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            DeferredNodeDepends.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.defaults) {\n                    object.id = \"\";\n                    object.deferLabel = \"\";\n                }\n                if (message.id != null && message.hasOwnProperty(\"id\"))\n                    object.id = message.id;\n                if (message.deferLabel != null && message.hasOwnProperty(\"deferLabel\"))\n                    object.deferLabel = message.deferLabel;\n                return object;\n            };\n\n            /**\n             * Converts this DeferredNodeDepends to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            DeferredNodeDepends.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return DeferredNodeDepends;\n        })();\n\n        QueryPlanNode.ResponsePathElement = (function() {\n\n            /**\n             * Properties of a ResponsePathElement.\n             * @memberof Trace.QueryPlanNode\n             * @interface IResponsePathElement\n             * @property {string|null} [fieldName] ResponsePathElement fieldName\n             * @property {number|null} [index] ResponsePathElement index\n             */\n\n            /**\n             * Constructs a new ResponsePathElement.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a ResponsePathElement.\n             * @implements IResponsePathElement\n             * @constructor\n             * @param {Trace.QueryPlanNode.IResponsePathElement=} [properties] Properties to set\n             */\n            function ResponsePathElement(properties) {\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * ResponsePathElement fieldName.\n             * @member {string} fieldName\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @instance\n             */\n            ResponsePathElement.prototype.fieldName = \"\";\n\n            /**\n             * ResponsePathElement index.\n             * @member {number} index\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @instance\n             */\n            ResponsePathElement.prototype.index = 0;\n\n            // OneOf field names bound to virtual getters and setters\n            var $oneOfFields;\n\n            /**\n             * ResponsePathElement id.\n             * @member {\"fieldName\"|\"index\"|undefined} id\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @instance\n             */\n            Object.defineProperty(ResponsePathElement.prototype, \"id\", {\n                get: $util.oneOfGetter($oneOfFields = [\"fieldName\", \"index\"]),\n                set: $util.oneOfSetter($oneOfFields)\n            });\n\n            /**\n             * Creates a new ResponsePathElement instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Trace.QueryPlanNode.IResponsePathElement=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.ResponsePathElement} ResponsePathElement instance\n             */\n            ResponsePathElement.create = function create(properties) {\n                return new ResponsePathElement(properties);\n            };\n\n            /**\n             * Encodes the specified ResponsePathElement message. Does not implicitly {@link Trace.QueryPlanNode.ResponsePathElement.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Trace.QueryPlanNode.IResponsePathElement} message ResponsePathElement message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ResponsePathElement.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.fieldName != null && Object.hasOwnProperty.call(message, \"fieldName\"))\n                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.fieldName);\n                if (message.index != null && Object.hasOwnProperty.call(message, \"index\"))\n                    writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.index);\n                return writer;\n            };\n\n            /**\n             * Encodes the specified ResponsePathElement message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.ResponsePathElement.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Trace.QueryPlanNode.IResponsePathElement} message ResponsePathElement message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ResponsePathElement.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a ResponsePathElement message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.ResponsePathElement} ResponsePathElement\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ResponsePathElement.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.ResponsePathElement();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.fieldName = reader.string();\n                        break;\n                    case 2:\n                        message.index = reader.uint32();\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a ResponsePathElement message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.ResponsePathElement} ResponsePathElement\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ResponsePathElement.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a ResponsePathElement message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            ResponsePathElement.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                var properties = {};\n                if (message.fieldName != null && message.hasOwnProperty(\"fieldName\")) {\n                    properties.id = 1;\n                    if (!$util.isString(message.fieldName))\n                        return \"fieldName: string expected\";\n                }\n                if (message.index != null && message.hasOwnProperty(\"index\")) {\n                    if (properties.id === 1)\n                        return \"id: multiple values\";\n                    properties.id = 1;\n                    if (!$util.isInteger(message.index))\n                        return \"index: integer expected\";\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a ResponsePathElement message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Trace.QueryPlanNode.ResponsePathElement} message ResponsePathElement\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            ResponsePathElement.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (message.fieldName != null && message.hasOwnProperty(\"fieldName\")) {\n                    object.fieldName = message.fieldName;\n                    if (options.oneofs)\n                        object.id = \"fieldName\";\n                }\n                if (message.index != null && message.hasOwnProperty(\"index\")) {\n                    object.index = message.index;\n                    if (options.oneofs)\n                        object.id = \"index\";\n                }\n                return object;\n            };\n\n            /**\n             * Converts this ResponsePathElement to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            ResponsePathElement.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return ResponsePathElement;\n        })();\n\n        return QueryPlanNode;\n    })();\n\n    return Trace;\n})();\n\n$root.ReportHeader = (function() {\n\n    /**\n     * Properties of a ReportHeader.\n     * @exports IReportHeader\n     * @interface IReportHeader\n     * @property {string|null} [graphRef] ReportHeader graphRef\n     * @property {string|null} [hostname] ReportHeader hostname\n     * @property {string|null} [agentVersion] ReportHeader agentVersion\n     * @property {string|null} [serviceVersion] ReportHeader serviceVersion\n     * @property {string|null} [runtimeVersion] ReportHeader runtimeVersion\n     * @property {string|null} [uname] ReportHeader uname\n     * @property {string|null} [executableSchemaId] ReportHeader executableSchemaId\n     */\n\n    /**\n     * Constructs a new ReportHeader.\n     * @exports ReportHeader\n     * @classdesc Represents a ReportHeader.\n     * @implements IReportHeader\n     * @constructor\n     * @param {IReportHeader=} [properties] Properties to set\n     */\n    function ReportHeader(properties) {\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ReportHeader graphRef.\n     * @member {string} graphRef\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.graphRef = \"\";\n\n    /**\n     * ReportHeader hostname.\n     * @member {string} hostname\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.hostname = \"\";\n\n    /**\n     * ReportHeader agentVersion.\n     * @member {string} agentVersion\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.agentVersion = \"\";\n\n    /**\n     * ReportHeader serviceVersion.\n     * @member {string} serviceVersion\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.serviceVersion = \"\";\n\n    /**\n     * ReportHeader runtimeVersion.\n     * @member {string} runtimeVersion\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.runtimeVersion = \"\";\n\n    /**\n     * ReportHeader uname.\n     * @member {string} uname\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.uname = \"\";\n\n    /**\n     * ReportHeader executableSchemaId.\n     * @member {string} executableSchemaId\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.executableSchemaId = \"\";\n\n    /**\n     * Creates a new ReportHeader instance using the specified properties.\n     * @function create\n     * @memberof ReportHeader\n     * @static\n     * @param {IReportHeader=} [properties] Properties to set\n     * @returns {ReportHeader} ReportHeader instance\n     */\n    ReportHeader.create = function create(properties) {\n        return new ReportHeader(properties);\n    };\n\n    /**\n     * Encodes the specified ReportHeader message. Does not implicitly {@link ReportHeader.verify|verify} messages.\n     * @function encode\n     * @memberof ReportHeader\n     * @static\n     * @param {IReportHeader} message ReportHeader message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ReportHeader.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.hostname != null && Object.hasOwnProperty.call(message, \"hostname\"))\n            writer.uint32(/* id 5, wireType 2 =*/42).string(message.hostname);\n        if (message.agentVersion != null && Object.hasOwnProperty.call(message, \"agentVersion\"))\n            writer.uint32(/* id 6, wireType 2 =*/50).string(message.agentVersion);\n        if (message.serviceVersion != null && Object.hasOwnProperty.call(message, \"serviceVersion\"))\n            writer.uint32(/* id 7, wireType 2 =*/58).string(message.serviceVersion);\n        if (message.runtimeVersion != null && Object.hasOwnProperty.call(message, \"runtimeVersion\"))\n            writer.uint32(/* id 8, wireType 2 =*/66).string(message.runtimeVersion);\n        if (message.uname != null && Object.hasOwnProperty.call(message, \"uname\"))\n            writer.uint32(/* id 9, wireType 2 =*/74).string(message.uname);\n        if (message.executableSchemaId != null && Object.hasOwnProperty.call(message, \"executableSchemaId\"))\n            writer.uint32(/* id 11, wireType 2 =*/90).string(message.executableSchemaId);\n        if (message.graphRef != null && Object.hasOwnProperty.call(message, \"graphRef\"))\n            writer.uint32(/* id 12, wireType 2 =*/98).string(message.graphRef);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ReportHeader message, length delimited. Does not implicitly {@link ReportHeader.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ReportHeader\n     * @static\n     * @param {IReportHeader} message ReportHeader message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ReportHeader.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ReportHeader message from the specified reader or buffer.\n     * @function decode\n     * @memberof ReportHeader\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ReportHeader} ReportHeader\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ReportHeader.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ReportHeader();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 12:\n                message.graphRef = reader.string();\n                break;\n            case 5:\n                message.hostname = reader.string();\n                break;\n            case 6:\n                message.agentVersion = reader.string();\n                break;\n            case 7:\n                message.serviceVersion = reader.string();\n                break;\n            case 8:\n                message.runtimeVersion = reader.string();\n                break;\n            case 9:\n                message.uname = reader.string();\n                break;\n            case 11:\n                message.executableSchemaId = reader.string();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ReportHeader message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ReportHeader\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ReportHeader} ReportHeader\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ReportHeader.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ReportHeader message.\n     * @function verify\n     * @memberof ReportHeader\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ReportHeader.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.graphRef != null && message.hasOwnProperty(\"graphRef\"))\n            if (!$util.isString(message.graphRef))\n                return \"graphRef: string expected\";\n        if (message.hostname != null && message.hasOwnProperty(\"hostname\"))\n            if (!$util.isString(message.hostname))\n                return \"hostname: string expected\";\n        if (message.agentVersion != null && message.hasOwnProperty(\"agentVersion\"))\n            if (!$util.isString(message.agentVersion))\n                return \"agentVersion: string expected\";\n        if (message.serviceVersion != null && message.hasOwnProperty(\"serviceVersion\"))\n            if (!$util.isString(message.serviceVersion))\n                return \"serviceVersion: string expected\";\n        if (message.runtimeVersion != null && message.hasOwnProperty(\"runtimeVersion\"))\n            if (!$util.isString(message.runtimeVersion))\n                return \"runtimeVersion: string expected\";\n        if (message.uname != null && message.hasOwnProperty(\"uname\"))\n            if (!$util.isString(message.uname))\n                return \"uname: string expected\";\n        if (message.executableSchemaId != null && message.hasOwnProperty(\"executableSchemaId\"))\n            if (!$util.isString(message.executableSchemaId))\n                return \"executableSchemaId: string expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ReportHeader message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ReportHeader\n     * @static\n     * @param {ReportHeader} message ReportHeader\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ReportHeader.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.defaults) {\n            object.hostname = \"\";\n            object.agentVersion = \"\";\n            object.serviceVersion = \"\";\n            object.runtimeVersion = \"\";\n            object.uname = \"\";\n            object.executableSchemaId = \"\";\n            object.graphRef = \"\";\n        }\n        if (message.hostname != null && message.hasOwnProperty(\"hostname\"))\n            object.hostname = message.hostname;\n        if (message.agentVersion != null && message.hasOwnProperty(\"agentVersion\"))\n            object.agentVersion = message.agentVersion;\n        if (message.serviceVersion != null && message.hasOwnProperty(\"serviceVersion\"))\n            object.serviceVersion = message.serviceVersion;\n        if (message.runtimeVersion != null && message.hasOwnProperty(\"runtimeVersion\"))\n            object.runtimeVersion = message.runtimeVersion;\n        if (message.uname != null && message.hasOwnProperty(\"uname\"))\n            object.uname = message.uname;\n        if (message.executableSchemaId != null && message.hasOwnProperty(\"executableSchemaId\"))\n            object.executableSchemaId = message.executableSchemaId;\n        if (message.graphRef != null && message.hasOwnProperty(\"graphRef\"))\n            object.graphRef = message.graphRef;\n        return object;\n    };\n\n    /**\n     * Converts this ReportHeader to JSON.\n     * @function toJSON\n     * @memberof ReportHeader\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ReportHeader.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ReportHeader;\n})();\n\n$root.PathErrorStats = (function() {\n\n    /**\n     * Properties of a PathErrorStats.\n     * @exports IPathErrorStats\n     * @interface IPathErrorStats\n     * @property {Object.<string,IPathErrorStats>|null} [children] PathErrorStats children\n     * @property {number|null} [errorsCount] PathErrorStats errorsCount\n     * @property {number|null} [requestsWithErrorsCount] PathErrorStats requestsWithErrorsCount\n     */\n\n    /**\n     * Constructs a new PathErrorStats.\n     * @exports PathErrorStats\n     * @classdesc Represents a PathErrorStats.\n     * @implements IPathErrorStats\n     * @constructor\n     * @param {IPathErrorStats=} [properties] Properties to set\n     */\n    function PathErrorStats(properties) {\n        this.children = {};\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * PathErrorStats children.\n     * @member {Object.<string,IPathErrorStats>} children\n     * @memberof PathErrorStats\n     * @instance\n     */\n    PathErrorStats.prototype.children = $util.emptyObject;\n\n    /**\n     * PathErrorStats errorsCount.\n     * @member {number} errorsCount\n     * @memberof PathErrorStats\n     * @instance\n     */\n    PathErrorStats.prototype.errorsCount = 0;\n\n    /**\n     * PathErrorStats requestsWithErrorsCount.\n     * @member {number} requestsWithErrorsCount\n     * @memberof PathErrorStats\n     * @instance\n     */\n    PathErrorStats.prototype.requestsWithErrorsCount = 0;\n\n    /**\n     * Creates a new PathErrorStats instance using the specified properties.\n     * @function create\n     * @memberof PathErrorStats\n     * @static\n     * @param {IPathErrorStats=} [properties] Properties to set\n     * @returns {PathErrorStats} PathErrorStats instance\n     */\n    PathErrorStats.create = function create(properties) {\n        return new PathErrorStats(properties);\n    };\n\n    /**\n     * Encodes the specified PathErrorStats message. Does not implicitly {@link PathErrorStats.verify|verify} messages.\n     * @function encode\n     * @memberof PathErrorStats\n     * @static\n     * @param {IPathErrorStats} message PathErrorStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    PathErrorStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.children != null && Object.hasOwnProperty.call(message, \"children\"))\n            for (var keys = Object.keys(message.children), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.PathErrorStats.encode(message.children[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        if (message.errorsCount != null && Object.hasOwnProperty.call(message, \"errorsCount\"))\n            writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.errorsCount);\n        if (message.requestsWithErrorsCount != null && Object.hasOwnProperty.call(message, \"requestsWithErrorsCount\"))\n            writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.requestsWithErrorsCount);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified PathErrorStats message, length delimited. Does not implicitly {@link PathErrorStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof PathErrorStats\n     * @static\n     * @param {IPathErrorStats} message PathErrorStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    PathErrorStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a PathErrorStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof PathErrorStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {PathErrorStats} PathErrorStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    PathErrorStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.PathErrorStats(), key;\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                reader.skip().pos++;\n                if (message.children === $util.emptyObject)\n                    message.children = {};\n                key = reader.string();\n                reader.pos++;\n                message.children[key] = $root.PathErrorStats.decode(reader, reader.uint32());\n                break;\n            case 4:\n                message.errorsCount = reader.uint64();\n                break;\n            case 5:\n                message.requestsWithErrorsCount = reader.uint64();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a PathErrorStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof PathErrorStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {PathErrorStats} PathErrorStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    PathErrorStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a PathErrorStats message.\n     * @function verify\n     * @memberof PathErrorStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    PathErrorStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.children != null && message.hasOwnProperty(\"children\")) {\n            if (!$util.isObject(message.children))\n                return \"children: object expected\";\n            var key = Object.keys(message.children);\n            for (var i = 0; i < key.length; ++i) {\n                var error = $root.PathErrorStats.verify(message.children[key[i]]);\n                if (error)\n                    return \"children.\" + error;\n            }\n        }\n        if (message.errorsCount != null && message.hasOwnProperty(\"errorsCount\"))\n            if (!$util.isInteger(message.errorsCount) && !(message.errorsCount && $util.isInteger(message.errorsCount.low) && $util.isInteger(message.errorsCount.high)))\n                return \"errorsCount: integer|Long expected\";\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (!$util.isInteger(message.requestsWithErrorsCount) && !(message.requestsWithErrorsCount && $util.isInteger(message.requestsWithErrorsCount.low) && $util.isInteger(message.requestsWithErrorsCount.high)))\n                return \"requestsWithErrorsCount: integer|Long expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a PathErrorStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof PathErrorStats\n     * @static\n     * @param {PathErrorStats} message PathErrorStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    PathErrorStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.objects || options.defaults)\n            object.children = {};\n        if (options.defaults) {\n            object.errorsCount = 0;\n            object.requestsWithErrorsCount = 0;\n        }\n        var keys2;\n        if (message.children && (keys2 = Object.keys(message.children)).length) {\n            object.children = {};\n            for (var j = 0; j < keys2.length; ++j)\n                object.children[keys2[j]] = $root.PathErrorStats.toObject(message.children[keys2[j]], options);\n        }\n        if (message.errorsCount != null && message.hasOwnProperty(\"errorsCount\"))\n            if (typeof message.errorsCount === \"number\")\n                object.errorsCount = options.longs === String ? String(message.errorsCount) : message.errorsCount;\n            else\n                object.errorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.errorsCount) : options.longs === Number ? new $util.LongBits(message.errorsCount.low >>> 0, message.errorsCount.high >>> 0).toNumber(true) : message.errorsCount;\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (typeof message.requestsWithErrorsCount === \"number\")\n                object.requestsWithErrorsCount = options.longs === String ? String(message.requestsWithErrorsCount) : message.requestsWithErrorsCount;\n            else\n                object.requestsWithErrorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.requestsWithErrorsCount) : options.longs === Number ? new $util.LongBits(message.requestsWithErrorsCount.low >>> 0, message.requestsWithErrorsCount.high >>> 0).toNumber(true) : message.requestsWithErrorsCount;\n        return object;\n    };\n\n    /**\n     * Converts this PathErrorStats to JSON.\n     * @function toJSON\n     * @memberof PathErrorStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    PathErrorStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return PathErrorStats;\n})();\n\n$root.QueryLatencyStats = (function() {\n\n    /**\n     * Properties of a QueryLatencyStats.\n     * @exports IQueryLatencyStats\n     * @interface IQueryLatencyStats\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [latencyCount] QueryLatencyStats latencyCount\n     * @property {number|null} [requestCount] QueryLatencyStats requestCount\n     * @property {number|null} [cacheHits] QueryLatencyStats cacheHits\n     * @property {number|null} [persistedQueryHits] QueryLatencyStats persistedQueryHits\n     * @property {number|null} [persistedQueryMisses] QueryLatencyStats persistedQueryMisses\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [cacheLatencyCount] QueryLatencyStats cacheLatencyCount\n     * @property {IPathErrorStats|null} [rootErrorStats] QueryLatencyStats rootErrorStats\n     * @property {number|null} [requestsWithErrorsCount] QueryLatencyStats requestsWithErrorsCount\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [publicCacheTtlCount] QueryLatencyStats publicCacheTtlCount\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [privateCacheTtlCount] QueryLatencyStats privateCacheTtlCount\n     * @property {number|null} [registeredOperationCount] QueryLatencyStats registeredOperationCount\n     * @property {number|null} [forbiddenOperationCount] QueryLatencyStats forbiddenOperationCount\n     * @property {number|null} [requestsWithoutFieldInstrumentation] QueryLatencyStats requestsWithoutFieldInstrumentation\n     */\n\n    /**\n     * Constructs a new QueryLatencyStats.\n     * @exports QueryLatencyStats\n     * @classdesc Represents a QueryLatencyStats.\n     * @implements IQueryLatencyStats\n     * @constructor\n     * @param {IQueryLatencyStats=} [properties] Properties to set\n     */\n    function QueryLatencyStats(properties) {\n        this.latencyCount = [];\n        this.cacheLatencyCount = [];\n        this.publicCacheTtlCount = [];\n        this.privateCacheTtlCount = [];\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * QueryLatencyStats latencyCount.\n     * @member {Array.<number>} latencyCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.latencyCount = $util.emptyArray;\n\n    /**\n     * QueryLatencyStats requestCount.\n     * @member {number} requestCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.requestCount = 0;\n\n    /**\n     * QueryLatencyStats cacheHits.\n     * @member {number} cacheHits\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.cacheHits = 0;\n\n    /**\n     * QueryLatencyStats persistedQueryHits.\n     * @member {number} persistedQueryHits\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.persistedQueryHits = 0;\n\n    /**\n     * QueryLatencyStats persistedQueryMisses.\n     * @member {number} persistedQueryMisses\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.persistedQueryMisses = 0;\n\n    /**\n     * QueryLatencyStats cacheLatencyCount.\n     * @member {Array.<number>} cacheLatencyCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.cacheLatencyCount = $util.emptyArray;\n\n    /**\n     * QueryLatencyStats rootErrorStats.\n     * @member {IPathErrorStats|null|undefined} rootErrorStats\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.rootErrorStats = null;\n\n    /**\n     * QueryLatencyStats requestsWithErrorsCount.\n     * @member {number} requestsWithErrorsCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.requestsWithErrorsCount = 0;\n\n    /**\n     * QueryLatencyStats publicCacheTtlCount.\n     * @member {Array.<number>} publicCacheTtlCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.publicCacheTtlCount = $util.emptyArray;\n\n    /**\n     * QueryLatencyStats privateCacheTtlCount.\n     * @member {Array.<number>} privateCacheTtlCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.privateCacheTtlCount = $util.emptyArray;\n\n    /**\n     * QueryLatencyStats registeredOperationCount.\n     * @member {number} registeredOperationCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.registeredOperationCount = 0;\n\n    /**\n     * QueryLatencyStats forbiddenOperationCount.\n     * @member {number} forbiddenOperationCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.forbiddenOperationCount = 0;\n\n    /**\n     * QueryLatencyStats requestsWithoutFieldInstrumentation.\n     * @member {number} requestsWithoutFieldInstrumentation\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.requestsWithoutFieldInstrumentation = 0;\n\n    /**\n     * Creates a new QueryLatencyStats instance using the specified properties.\n     * @function create\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {IQueryLatencyStats=} [properties] Properties to set\n     * @returns {QueryLatencyStats} QueryLatencyStats instance\n     */\n    QueryLatencyStats.create = function create(properties) {\n        return new QueryLatencyStats(properties);\n    };\n\n    /**\n     * Encodes the specified QueryLatencyStats message. Does not implicitly {@link QueryLatencyStats.verify|verify} messages.\n     * @function encode\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {IQueryLatencyStats} message QueryLatencyStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    QueryLatencyStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.requestCount != null && Object.hasOwnProperty.call(message, \"requestCount\"))\n            writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.requestCount);\n        if (message.cacheHits != null && Object.hasOwnProperty.call(message, \"cacheHits\"))\n            writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.cacheHits);\n        if (message.persistedQueryHits != null && Object.hasOwnProperty.call(message, \"persistedQueryHits\"))\n            writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.persistedQueryHits);\n        if (message.persistedQueryMisses != null && Object.hasOwnProperty.call(message, \"persistedQueryMisses\"))\n            writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.persistedQueryMisses);\n        if (message.rootErrorStats != null && Object.hasOwnProperty.call(message, \"rootErrorStats\"))\n            $root.PathErrorStats.encode(message.rootErrorStats, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n        if (message.requestsWithErrorsCount != null && Object.hasOwnProperty.call(message, \"requestsWithErrorsCount\"))\n            writer.uint32(/* id 8, wireType 0 =*/64).uint64(message.requestsWithErrorsCount);\n        if (message.registeredOperationCount != null && Object.hasOwnProperty.call(message, \"registeredOperationCount\"))\n            writer.uint32(/* id 11, wireType 0 =*/88).uint64(message.registeredOperationCount);\n        if (message.forbiddenOperationCount != null && Object.hasOwnProperty.call(message, \"forbiddenOperationCount\"))\n            writer.uint32(/* id 12, wireType 0 =*/96).uint64(message.forbiddenOperationCount);\n        var array13;\n        if (message.latencyCount != null && message.latencyCount.toArray)\n            array13 = message.latencyCount.toArray();\n        else\n            array13 = message.latencyCount;\n        if (array13 != null && array13.length) {\n            writer.uint32(/* id 13, wireType 2 =*/106).fork();\n            for (var i = 0; i < array13.length; ++i)\n                writer.sint64(array13[i]);\n            writer.ldelim();\n        }\n        var array14;\n        if (message.cacheLatencyCount != null && message.cacheLatencyCount.toArray)\n            array14 = message.cacheLatencyCount.toArray();\n        else\n            array14 = message.cacheLatencyCount;\n        if (array14 != null && array14.length) {\n            writer.uint32(/* id 14, wireType 2 =*/114).fork();\n            for (var i = 0; i < array14.length; ++i)\n                writer.sint64(array14[i]);\n            writer.ldelim();\n        }\n        var array15;\n        if (message.publicCacheTtlCount != null && message.publicCacheTtlCount.toArray)\n            array15 = message.publicCacheTtlCount.toArray();\n        else\n            array15 = message.publicCacheTtlCount;\n        if (array15 != null && array15.length) {\n            writer.uint32(/* id 15, wireType 2 =*/122).fork();\n            for (var i = 0; i < array15.length; ++i)\n                writer.sint64(array15[i]);\n            writer.ldelim();\n        }\n        var array16;\n        if (message.privateCacheTtlCount != null && message.privateCacheTtlCount.toArray)\n            array16 = message.privateCacheTtlCount.toArray();\n        else\n            array16 = message.privateCacheTtlCount;\n        if (array16 != null && array16.length) {\n            writer.uint32(/* id 16, wireType 2 =*/130).fork();\n            for (var i = 0; i < array16.length; ++i)\n                writer.sint64(array16[i]);\n            writer.ldelim();\n        }\n        if (message.requestsWithoutFieldInstrumentation != null && Object.hasOwnProperty.call(message, \"requestsWithoutFieldInstrumentation\"))\n            writer.uint32(/* id 17, wireType 0 =*/136).uint64(message.requestsWithoutFieldInstrumentation);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified QueryLatencyStats message, length delimited. Does not implicitly {@link QueryLatencyStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {IQueryLatencyStats} message QueryLatencyStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    QueryLatencyStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a QueryLatencyStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {QueryLatencyStats} QueryLatencyStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    QueryLatencyStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.QueryLatencyStats();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 13:\n                if (!(message.latencyCount && message.latencyCount.length))\n                    message.latencyCount = [];\n                if ((tag & 7) === 2) {\n                    var end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.latencyCount.push(reader.sint64());\n                } else\n                    message.latencyCount.push(reader.sint64());\n                break;\n            case 2:\n                message.requestCount = reader.uint64();\n                break;\n            case 3:\n                message.cacheHits = reader.uint64();\n                break;\n            case 4:\n                message.persistedQueryHits = reader.uint64();\n                break;\n            case 5:\n                message.persistedQueryMisses = reader.uint64();\n                break;\n            case 14:\n                if (!(message.cacheLatencyCount && message.cacheLatencyCount.length))\n                    message.cacheLatencyCount = [];\n                if ((tag & 7) === 2) {\n                    var end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.cacheLatencyCount.push(reader.sint64());\n                } else\n                    message.cacheLatencyCount.push(reader.sint64());\n                break;\n            case 7:\n                message.rootErrorStats = $root.PathErrorStats.decode(reader, reader.uint32());\n                break;\n            case 8:\n                message.requestsWithErrorsCount = reader.uint64();\n                break;\n            case 15:\n                if (!(message.publicCacheTtlCount && message.publicCacheTtlCount.length))\n                    message.publicCacheTtlCount = [];\n                if ((tag & 7) === 2) {\n                    var end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.publicCacheTtlCount.push(reader.sint64());\n                } else\n                    message.publicCacheTtlCount.push(reader.sint64());\n                break;\n            case 16:\n                if (!(message.privateCacheTtlCount && message.privateCacheTtlCount.length))\n                    message.privateCacheTtlCount = [];\n                if ((tag & 7) === 2) {\n                    var end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.privateCacheTtlCount.push(reader.sint64());\n                } else\n                    message.privateCacheTtlCount.push(reader.sint64());\n                break;\n            case 11:\n                message.registeredOperationCount = reader.uint64();\n                break;\n            case 12:\n                message.forbiddenOperationCount = reader.uint64();\n                break;\n            case 17:\n                message.requestsWithoutFieldInstrumentation = reader.uint64();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a QueryLatencyStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {QueryLatencyStats} QueryLatencyStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    QueryLatencyStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a QueryLatencyStats message.\n     * @function verify\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    QueryLatencyStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.latencyCount != null && message.hasOwnProperty(\"latencyCount\")) {\n            var array13;\n            if (message.latencyCount != null && message.latencyCount.toArray)\n                array13 = message.latencyCount.toArray();\n            else\n                array13 = message.latencyCount;\n            if (!Array.isArray(array13))\n                return \"latencyCount: array expected\";\n            for (var i = 0; i < array13.length; ++i)\n                if (!$util.isInteger(array13[i]) && !(array13[i] && $util.isInteger(array13[i].low) && $util.isInteger(array13[i].high)))\n                    return \"latencyCount: integer|Long[] expected\";\n        }\n        if (message.requestCount != null && message.hasOwnProperty(\"requestCount\"))\n            if (!$util.isInteger(message.requestCount) && !(message.requestCount && $util.isInteger(message.requestCount.low) && $util.isInteger(message.requestCount.high)))\n                return \"requestCount: integer|Long expected\";\n        if (message.cacheHits != null && message.hasOwnProperty(\"cacheHits\"))\n            if (!$util.isInteger(message.cacheHits) && !(message.cacheHits && $util.isInteger(message.cacheHits.low) && $util.isInteger(message.cacheHits.high)))\n                return \"cacheHits: integer|Long expected\";\n        if (message.persistedQueryHits != null && message.hasOwnProperty(\"persistedQueryHits\"))\n            if (!$util.isInteger(message.persistedQueryHits) && !(message.persistedQueryHits && $util.isInteger(message.persistedQueryHits.low) && $util.isInteger(message.persistedQueryHits.high)))\n                return \"persistedQueryHits: integer|Long expected\";\n        if (message.persistedQueryMisses != null && message.hasOwnProperty(\"persistedQueryMisses\"))\n            if (!$util.isInteger(message.persistedQueryMisses) && !(message.persistedQueryMisses && $util.isInteger(message.persistedQueryMisses.low) && $util.isInteger(message.persistedQueryMisses.high)))\n                return \"persistedQueryMisses: integer|Long expected\";\n        if (message.cacheLatencyCount != null && message.hasOwnProperty(\"cacheLatencyCount\")) {\n            var array14;\n            if (message.cacheLatencyCount != null && message.cacheLatencyCount.toArray)\n                array14 = message.cacheLatencyCount.toArray();\n            else\n                array14 = message.cacheLatencyCount;\n            if (!Array.isArray(array14))\n                return \"cacheLatencyCount: array expected\";\n            for (var i = 0; i < array14.length; ++i)\n                if (!$util.isInteger(array14[i]) && !(array14[i] && $util.isInteger(array14[i].low) && $util.isInteger(array14[i].high)))\n                    return \"cacheLatencyCount: integer|Long[] expected\";\n        }\n        if (message.rootErrorStats != null && message.hasOwnProperty(\"rootErrorStats\")) {\n            var error = $root.PathErrorStats.verify(message.rootErrorStats);\n            if (error)\n                return \"rootErrorStats.\" + error;\n        }\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (!$util.isInteger(message.requestsWithErrorsCount) && !(message.requestsWithErrorsCount && $util.isInteger(message.requestsWithErrorsCount.low) && $util.isInteger(message.requestsWithErrorsCount.high)))\n                return \"requestsWithErrorsCount: integer|Long expected\";\n        if (message.publicCacheTtlCount != null && message.hasOwnProperty(\"publicCacheTtlCount\")) {\n            var array15;\n            if (message.publicCacheTtlCount != null && message.publicCacheTtlCount.toArray)\n                array15 = message.publicCacheTtlCount.toArray();\n            else\n                array15 = message.publicCacheTtlCount;\n            if (!Array.isArray(array15))\n                return \"publicCacheTtlCount: array expected\";\n            for (var i = 0; i < array15.length; ++i)\n                if (!$util.isInteger(array15[i]) && !(array15[i] && $util.isInteger(array15[i].low) && $util.isInteger(array15[i].high)))\n                    return \"publicCacheTtlCount: integer|Long[] expected\";\n        }\n        if (message.privateCacheTtlCount != null && message.hasOwnProperty(\"privateCacheTtlCount\")) {\n            var array16;\n            if (message.privateCacheTtlCount != null && message.privateCacheTtlCount.toArray)\n                array16 = message.privateCacheTtlCount.toArray();\n            else\n                array16 = message.privateCacheTtlCount;\n            if (!Array.isArray(array16))\n                return \"privateCacheTtlCount: array expected\";\n            for (var i = 0; i < array16.length; ++i)\n                if (!$util.isInteger(array16[i]) && !(array16[i] && $util.isInteger(array16[i].low) && $util.isInteger(array16[i].high)))\n                    return \"privateCacheTtlCount: integer|Long[] expected\";\n        }\n        if (message.registeredOperationCount != null && message.hasOwnProperty(\"registeredOperationCount\"))\n            if (!$util.isInteger(message.registeredOperationCount) && !(message.registeredOperationCount && $util.isInteger(message.registeredOperationCount.low) && $util.isInteger(message.registeredOperationCount.high)))\n                return \"registeredOperationCount: integer|Long expected\";\n        if (message.forbiddenOperationCount != null && message.hasOwnProperty(\"forbiddenOperationCount\"))\n            if (!$util.isInteger(message.forbiddenOperationCount) && !(message.forbiddenOperationCount && $util.isInteger(message.forbiddenOperationCount.low) && $util.isInteger(message.forbiddenOperationCount.high)))\n                return \"forbiddenOperationCount: integer|Long expected\";\n        if (message.requestsWithoutFieldInstrumentation != null && message.hasOwnProperty(\"requestsWithoutFieldInstrumentation\"))\n            if (!$util.isInteger(message.requestsWithoutFieldInstrumentation) && !(message.requestsWithoutFieldInstrumentation && $util.isInteger(message.requestsWithoutFieldInstrumentation.low) && $util.isInteger(message.requestsWithoutFieldInstrumentation.high)))\n                return \"requestsWithoutFieldInstrumentation: integer|Long expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a QueryLatencyStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {QueryLatencyStats} message QueryLatencyStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    QueryLatencyStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.arrays || options.defaults) {\n            object.latencyCount = [];\n            object.cacheLatencyCount = [];\n            object.publicCacheTtlCount = [];\n            object.privateCacheTtlCount = [];\n        }\n        if (options.defaults) {\n            object.requestCount = 0;\n            object.cacheHits = 0;\n            object.persistedQueryHits = 0;\n            object.persistedQueryMisses = 0;\n            object.rootErrorStats = null;\n            object.requestsWithErrorsCount = 0;\n            object.registeredOperationCount = 0;\n            object.forbiddenOperationCount = 0;\n            object.requestsWithoutFieldInstrumentation = 0;\n        }\n        if (message.requestCount != null && message.hasOwnProperty(\"requestCount\"))\n            if (typeof message.requestCount === \"number\")\n                object.requestCount = options.longs === String ? String(message.requestCount) : message.requestCount;\n            else\n                object.requestCount = options.longs === String ? $util.Long.prototype.toString.call(message.requestCount) : options.longs === Number ? new $util.LongBits(message.requestCount.low >>> 0, message.requestCount.high >>> 0).toNumber(true) : message.requestCount;\n        if (message.cacheHits != null && message.hasOwnProperty(\"cacheHits\"))\n            if (typeof message.cacheHits === \"number\")\n                object.cacheHits = options.longs === String ? String(message.cacheHits) : message.cacheHits;\n            else\n                object.cacheHits = options.longs === String ? $util.Long.prototype.toString.call(message.cacheHits) : options.longs === Number ? new $util.LongBits(message.cacheHits.low >>> 0, message.cacheHits.high >>> 0).toNumber(true) : message.cacheHits;\n        if (message.persistedQueryHits != null && message.hasOwnProperty(\"persistedQueryHits\"))\n            if (typeof message.persistedQueryHits === \"number\")\n                object.persistedQueryHits = options.longs === String ? String(message.persistedQueryHits) : message.persistedQueryHits;\n            else\n                object.persistedQueryHits = options.longs === String ? $util.Long.prototype.toString.call(message.persistedQueryHits) : options.longs === Number ? new $util.LongBits(message.persistedQueryHits.low >>> 0, message.persistedQueryHits.high >>> 0).toNumber(true) : message.persistedQueryHits;\n        if (message.persistedQueryMisses != null && message.hasOwnProperty(\"persistedQueryMisses\"))\n            if (typeof message.persistedQueryMisses === \"number\")\n                object.persistedQueryMisses = options.longs === String ? String(message.persistedQueryMisses) : message.persistedQueryMisses;\n            else\n                object.persistedQueryMisses = options.longs === String ? $util.Long.prototype.toString.call(message.persistedQueryMisses) : options.longs === Number ? new $util.LongBits(message.persistedQueryMisses.low >>> 0, message.persistedQueryMisses.high >>> 0).toNumber(true) : message.persistedQueryMisses;\n        if (message.rootErrorStats != null && message.hasOwnProperty(\"rootErrorStats\"))\n            object.rootErrorStats = $root.PathErrorStats.toObject(message.rootErrorStats, options);\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (typeof message.requestsWithErrorsCount === \"number\")\n                object.requestsWithErrorsCount = options.longs === String ? String(message.requestsWithErrorsCount) : message.requestsWithErrorsCount;\n            else\n                object.requestsWithErrorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.requestsWithErrorsCount) : options.longs === Number ? new $util.LongBits(message.requestsWithErrorsCount.low >>> 0, message.requestsWithErrorsCount.high >>> 0).toNumber(true) : message.requestsWithErrorsCount;\n        if (message.registeredOperationCount != null && message.hasOwnProperty(\"registeredOperationCount\"))\n            if (typeof message.registeredOperationCount === \"number\")\n                object.registeredOperationCount = options.longs === String ? String(message.registeredOperationCount) : message.registeredOperationCount;\n            else\n                object.registeredOperationCount = options.longs === String ? $util.Long.prototype.toString.call(message.registeredOperationCount) : options.longs === Number ? new $util.LongBits(message.registeredOperationCount.low >>> 0, message.registeredOperationCount.high >>> 0).toNumber(true) : message.registeredOperationCount;\n        if (message.forbiddenOperationCount != null && message.hasOwnProperty(\"forbiddenOperationCount\"))\n            if (typeof message.forbiddenOperationCount === \"number\")\n                object.forbiddenOperationCount = options.longs === String ? String(message.forbiddenOperationCount) : message.forbiddenOperationCount;\n            else\n                object.forbiddenOperationCount = options.longs === String ? $util.Long.prototype.toString.call(message.forbiddenOperationCount) : options.longs === Number ? new $util.LongBits(message.forbiddenOperationCount.low >>> 0, message.forbiddenOperationCount.high >>> 0).toNumber(true) : message.forbiddenOperationCount;\n        if (message.latencyCount && message.latencyCount.length) {\n            object.latencyCount = [];\n            for (var j = 0; j < message.latencyCount.length; ++j)\n                if (typeof message.latencyCount[j] === \"number\")\n                    object.latencyCount[j] = options.longs === String ? String(message.latencyCount[j]) : message.latencyCount[j];\n                else\n                    object.latencyCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.latencyCount[j]) : options.longs === Number ? new $util.LongBits(message.latencyCount[j].low >>> 0, message.latencyCount[j].high >>> 0).toNumber() : message.latencyCount[j];\n        }\n        if (message.cacheLatencyCount && message.cacheLatencyCount.length) {\n            object.cacheLatencyCount = [];\n            for (var j = 0; j < message.cacheLatencyCount.length; ++j)\n                if (typeof message.cacheLatencyCount[j] === \"number\")\n                    object.cacheLatencyCount[j] = options.longs === String ? String(message.cacheLatencyCount[j]) : message.cacheLatencyCount[j];\n                else\n                    object.cacheLatencyCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.cacheLatencyCount[j]) : options.longs === Number ? new $util.LongBits(message.cacheLatencyCount[j].low >>> 0, message.cacheLatencyCount[j].high >>> 0).toNumber() : message.cacheLatencyCount[j];\n        }\n        if (message.publicCacheTtlCount && message.publicCacheTtlCount.length) {\n            object.publicCacheTtlCount = [];\n            for (var j = 0; j < message.publicCacheTtlCount.length; ++j)\n                if (typeof message.publicCacheTtlCount[j] === \"number\")\n                    object.publicCacheTtlCount[j] = options.longs === String ? String(message.publicCacheTtlCount[j]) : message.publicCacheTtlCount[j];\n                else\n                    object.publicCacheTtlCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.publicCacheTtlCount[j]) : options.longs === Number ? new $util.LongBits(message.publicCacheTtlCount[j].low >>> 0, message.publicCacheTtlCount[j].high >>> 0).toNumber() : message.publicCacheTtlCount[j];\n        }\n        if (message.privateCacheTtlCount && message.privateCacheTtlCount.length) {\n            object.privateCacheTtlCount = [];\n            for (var j = 0; j < message.privateCacheTtlCount.length; ++j)\n                if (typeof message.privateCacheTtlCount[j] === \"number\")\n                    object.privateCacheTtlCount[j] = options.longs === String ? String(message.privateCacheTtlCount[j]) : message.privateCacheTtlCount[j];\n                else\n                    object.privateCacheTtlCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.privateCacheTtlCount[j]) : options.longs === Number ? new $util.LongBits(message.privateCacheTtlCount[j].low >>> 0, message.privateCacheTtlCount[j].high >>> 0).toNumber() : message.privateCacheTtlCount[j];\n        }\n        if (message.requestsWithoutFieldInstrumentation != null && message.hasOwnProperty(\"requestsWithoutFieldInstrumentation\"))\n            if (typeof message.requestsWithoutFieldInstrumentation === \"number\")\n                object.requestsWithoutFieldInstrumentation = options.longs === String ? String(message.requestsWithoutFieldInstrumentation) : message.requestsWithoutFieldInstrumentation;\n            else\n                object.requestsWithoutFieldInstrumentation = options.longs === String ? $util.Long.prototype.toString.call(message.requestsWithoutFieldInstrumentation) : options.longs === Number ? new $util.LongBits(message.requestsWithoutFieldInstrumentation.low >>> 0, message.requestsWithoutFieldInstrumentation.high >>> 0).toNumber(true) : message.requestsWithoutFieldInstrumentation;\n        return object;\n    };\n\n    /**\n     * Converts this QueryLatencyStats to JSON.\n     * @function toJSON\n     * @memberof QueryLatencyStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    QueryLatencyStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return QueryLatencyStats;\n})();\n\n$root.StatsContext = (function() {\n\n    /**\n     * Properties of a StatsContext.\n     * @exports IStatsContext\n     * @interface IStatsContext\n     * @property {string|null} [clientName] StatsContext clientName\n     * @property {string|null} [clientVersion] StatsContext clientVersion\n     */\n\n    /**\n     * Constructs a new StatsContext.\n     * @exports StatsContext\n     * @classdesc Represents a StatsContext.\n     * @implements IStatsContext\n     * @constructor\n     * @param {IStatsContext=} [properties] Properties to set\n     */\n    function StatsContext(properties) {\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * StatsContext clientName.\n     * @member {string} clientName\n     * @memberof StatsContext\n     * @instance\n     */\n    StatsContext.prototype.clientName = \"\";\n\n    /**\n     * StatsContext clientVersion.\n     * @member {string} clientVersion\n     * @memberof StatsContext\n     * @instance\n     */\n    StatsContext.prototype.clientVersion = \"\";\n\n    /**\n     * Creates a new StatsContext instance using the specified properties.\n     * @function create\n     * @memberof StatsContext\n     * @static\n     * @param {IStatsContext=} [properties] Properties to set\n     * @returns {StatsContext} StatsContext instance\n     */\n    StatsContext.create = function create(properties) {\n        return new StatsContext(properties);\n    };\n\n    /**\n     * Encodes the specified StatsContext message. Does not implicitly {@link StatsContext.verify|verify} messages.\n     * @function encode\n     * @memberof StatsContext\n     * @static\n     * @param {IStatsContext} message StatsContext message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    StatsContext.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.clientName != null && Object.hasOwnProperty.call(message, \"clientName\"))\n            writer.uint32(/* id 2, wireType 2 =*/18).string(message.clientName);\n        if (message.clientVersion != null && Object.hasOwnProperty.call(message, \"clientVersion\"))\n            writer.uint32(/* id 3, wireType 2 =*/26).string(message.clientVersion);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified StatsContext message, length delimited. Does not implicitly {@link StatsContext.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof StatsContext\n     * @static\n     * @param {IStatsContext} message StatsContext message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    StatsContext.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a StatsContext message from the specified reader or buffer.\n     * @function decode\n     * @memberof StatsContext\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {StatsContext} StatsContext\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    StatsContext.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.StatsContext();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 2:\n                message.clientName = reader.string();\n                break;\n            case 3:\n                message.clientVersion = reader.string();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a StatsContext message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof StatsContext\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {StatsContext} StatsContext\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    StatsContext.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a StatsContext message.\n     * @function verify\n     * @memberof StatsContext\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    StatsContext.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.clientName != null && message.hasOwnProperty(\"clientName\"))\n            if (!$util.isString(message.clientName))\n                return \"clientName: string expected\";\n        if (message.clientVersion != null && message.hasOwnProperty(\"clientVersion\"))\n            if (!$util.isString(message.clientVersion))\n                return \"clientVersion: string expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a StatsContext message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof StatsContext\n     * @static\n     * @param {StatsContext} message StatsContext\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    StatsContext.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.defaults) {\n            object.clientName = \"\";\n            object.clientVersion = \"\";\n        }\n        if (message.clientName != null && message.hasOwnProperty(\"clientName\"))\n            object.clientName = message.clientName;\n        if (message.clientVersion != null && message.hasOwnProperty(\"clientVersion\"))\n            object.clientVersion = message.clientVersion;\n        return object;\n    };\n\n    /**\n     * Converts this StatsContext to JSON.\n     * @function toJSON\n     * @memberof StatsContext\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    StatsContext.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return StatsContext;\n})();\n\n$root.ContextualizedQueryLatencyStats = (function() {\n\n    /**\n     * Properties of a ContextualizedQueryLatencyStats.\n     * @exports IContextualizedQueryLatencyStats\n     * @interface IContextualizedQueryLatencyStats\n     * @property {IQueryLatencyStats|null} [queryLatencyStats] ContextualizedQueryLatencyStats queryLatencyStats\n     * @property {IStatsContext|null} [context] ContextualizedQueryLatencyStats context\n     */\n\n    /**\n     * Constructs a new ContextualizedQueryLatencyStats.\n     * @exports ContextualizedQueryLatencyStats\n     * @classdesc Represents a ContextualizedQueryLatencyStats.\n     * @implements IContextualizedQueryLatencyStats\n     * @constructor\n     * @param {IContextualizedQueryLatencyStats=} [properties] Properties to set\n     */\n    function ContextualizedQueryLatencyStats(properties) {\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ContextualizedQueryLatencyStats queryLatencyStats.\n     * @member {IQueryLatencyStats|null|undefined} queryLatencyStats\n     * @memberof ContextualizedQueryLatencyStats\n     * @instance\n     */\n    ContextualizedQueryLatencyStats.prototype.queryLatencyStats = null;\n\n    /**\n     * ContextualizedQueryLatencyStats context.\n     * @member {IStatsContext|null|undefined} context\n     * @memberof ContextualizedQueryLatencyStats\n     * @instance\n     */\n    ContextualizedQueryLatencyStats.prototype.context = null;\n\n    /**\n     * Creates a new ContextualizedQueryLatencyStats instance using the specified properties.\n     * @function create\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {IContextualizedQueryLatencyStats=} [properties] Properties to set\n     * @returns {ContextualizedQueryLatencyStats} ContextualizedQueryLatencyStats instance\n     */\n    ContextualizedQueryLatencyStats.create = function create(properties) {\n        return new ContextualizedQueryLatencyStats(properties);\n    };\n\n    /**\n     * Encodes the specified ContextualizedQueryLatencyStats message. Does not implicitly {@link ContextualizedQueryLatencyStats.verify|verify} messages.\n     * @function encode\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {IContextualizedQueryLatencyStats} message ContextualizedQueryLatencyStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedQueryLatencyStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.queryLatencyStats != null && Object.hasOwnProperty.call(message, \"queryLatencyStats\"))\n            $root.QueryLatencyStats.encode(message.queryLatencyStats, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        if (message.context != null && Object.hasOwnProperty.call(message, \"context\"))\n            $root.StatsContext.encode(message.context, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ContextualizedQueryLatencyStats message, length delimited. Does not implicitly {@link ContextualizedQueryLatencyStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {IContextualizedQueryLatencyStats} message ContextualizedQueryLatencyStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedQueryLatencyStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ContextualizedQueryLatencyStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ContextualizedQueryLatencyStats} ContextualizedQueryLatencyStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedQueryLatencyStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ContextualizedQueryLatencyStats();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                message.queryLatencyStats = $root.QueryLatencyStats.decode(reader, reader.uint32());\n                break;\n            case 2:\n                message.context = $root.StatsContext.decode(reader, reader.uint32());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ContextualizedQueryLatencyStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ContextualizedQueryLatencyStats} ContextualizedQueryLatencyStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedQueryLatencyStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ContextualizedQueryLatencyStats message.\n     * @function verify\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ContextualizedQueryLatencyStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.queryLatencyStats != null && message.hasOwnProperty(\"queryLatencyStats\")) {\n            var error = $root.QueryLatencyStats.verify(message.queryLatencyStats);\n            if (error)\n                return \"queryLatencyStats.\" + error;\n        }\n        if (message.context != null && message.hasOwnProperty(\"context\")) {\n            var error = $root.StatsContext.verify(message.context);\n            if (error)\n                return \"context.\" + error;\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ContextualizedQueryLatencyStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {ContextualizedQueryLatencyStats} message ContextualizedQueryLatencyStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ContextualizedQueryLatencyStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.defaults) {\n            object.queryLatencyStats = null;\n            object.context = null;\n        }\n        if (message.queryLatencyStats != null && message.hasOwnProperty(\"queryLatencyStats\"))\n            object.queryLatencyStats = $root.QueryLatencyStats.toObject(message.queryLatencyStats, options);\n        if (message.context != null && message.hasOwnProperty(\"context\"))\n            object.context = $root.StatsContext.toObject(message.context, options);\n        return object;\n    };\n\n    /**\n     * Converts this ContextualizedQueryLatencyStats to JSON.\n     * @function toJSON\n     * @memberof ContextualizedQueryLatencyStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ContextualizedQueryLatencyStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ContextualizedQueryLatencyStats;\n})();\n\n$root.ContextualizedTypeStats = (function() {\n\n    /**\n     * Properties of a ContextualizedTypeStats.\n     * @exports IContextualizedTypeStats\n     * @interface IContextualizedTypeStats\n     * @property {IStatsContext|null} [context] ContextualizedTypeStats context\n     * @property {Object.<string,ITypeStat>|null} [perTypeStat] ContextualizedTypeStats perTypeStat\n     */\n\n    /**\n     * Constructs a new ContextualizedTypeStats.\n     * @exports ContextualizedTypeStats\n     * @classdesc Represents a ContextualizedTypeStats.\n     * @implements IContextualizedTypeStats\n     * @constructor\n     * @param {IContextualizedTypeStats=} [properties] Properties to set\n     */\n    function ContextualizedTypeStats(properties) {\n        this.perTypeStat = {};\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ContextualizedTypeStats context.\n     * @member {IStatsContext|null|undefined} context\n     * @memberof ContextualizedTypeStats\n     * @instance\n     */\n    ContextualizedTypeStats.prototype.context = null;\n\n    /**\n     * ContextualizedTypeStats perTypeStat.\n     * @member {Object.<string,ITypeStat>} perTypeStat\n     * @memberof ContextualizedTypeStats\n     * @instance\n     */\n    ContextualizedTypeStats.prototype.perTypeStat = $util.emptyObject;\n\n    /**\n     * Creates a new ContextualizedTypeStats instance using the specified properties.\n     * @function create\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {IContextualizedTypeStats=} [properties] Properties to set\n     * @returns {ContextualizedTypeStats} ContextualizedTypeStats instance\n     */\n    ContextualizedTypeStats.create = function create(properties) {\n        return new ContextualizedTypeStats(properties);\n    };\n\n    /**\n     * Encodes the specified ContextualizedTypeStats message. Does not implicitly {@link ContextualizedTypeStats.verify|verify} messages.\n     * @function encode\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {IContextualizedTypeStats} message ContextualizedTypeStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedTypeStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.context != null && Object.hasOwnProperty.call(message, \"context\"))\n            $root.StatsContext.encode(message.context, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        if (message.perTypeStat != null && Object.hasOwnProperty.call(message, \"perTypeStat\"))\n            for (var keys = Object.keys(message.perTypeStat), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.TypeStat.encode(message.perTypeStat[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ContextualizedTypeStats message, length delimited. Does not implicitly {@link ContextualizedTypeStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {IContextualizedTypeStats} message ContextualizedTypeStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedTypeStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ContextualizedTypeStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ContextualizedTypeStats} ContextualizedTypeStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedTypeStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ContextualizedTypeStats(), key;\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                message.context = $root.StatsContext.decode(reader, reader.uint32());\n                break;\n            case 2:\n                reader.skip().pos++;\n                if (message.perTypeStat === $util.emptyObject)\n                    message.perTypeStat = {};\n                key = reader.string();\n                reader.pos++;\n                message.perTypeStat[key] = $root.TypeStat.decode(reader, reader.uint32());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ContextualizedTypeStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ContextualizedTypeStats} ContextualizedTypeStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedTypeStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ContextualizedTypeStats message.\n     * @function verify\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ContextualizedTypeStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.context != null && message.hasOwnProperty(\"context\")) {\n            var error = $root.StatsContext.verify(message.context);\n            if (error)\n                return \"context.\" + error;\n        }\n        if (message.perTypeStat != null && message.hasOwnProperty(\"perTypeStat\")) {\n            if (!$util.isObject(message.perTypeStat))\n                return \"perTypeStat: object expected\";\n            var key = Object.keys(message.perTypeStat);\n            for (var i = 0; i < key.length; ++i) {\n                var error = $root.TypeStat.verify(message.perTypeStat[key[i]]);\n                if (error)\n                    return \"perTypeStat.\" + error;\n            }\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ContextualizedTypeStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {ContextualizedTypeStats} message ContextualizedTypeStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ContextualizedTypeStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.objects || options.defaults)\n            object.perTypeStat = {};\n        if (options.defaults)\n            object.context = null;\n        if (message.context != null && message.hasOwnProperty(\"context\"))\n            object.context = $root.StatsContext.toObject(message.context, options);\n        var keys2;\n        if (message.perTypeStat && (keys2 = Object.keys(message.perTypeStat)).length) {\n            object.perTypeStat = {};\n            for (var j = 0; j < keys2.length; ++j)\n                object.perTypeStat[keys2[j]] = $root.TypeStat.toObject(message.perTypeStat[keys2[j]], options);\n        }\n        return object;\n    };\n\n    /**\n     * Converts this ContextualizedTypeStats to JSON.\n     * @function toJSON\n     * @memberof ContextualizedTypeStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ContextualizedTypeStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ContextualizedTypeStats;\n})();\n\n$root.FieldStat = (function() {\n\n    /**\n     * Properties of a FieldStat.\n     * @exports IFieldStat\n     * @interface IFieldStat\n     * @property {string|null} [returnType] FieldStat returnType\n     * @property {number|null} [errorsCount] FieldStat errorsCount\n     * @property {number|null} [observedExecutionCount] FieldStat observedExecutionCount\n     * @property {number|null} [estimatedExecutionCount] FieldStat estimatedExecutionCount\n     * @property {number|null} [requestsWithErrorsCount] FieldStat requestsWithErrorsCount\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [latencyCount] FieldStat latencyCount\n     */\n\n    /**\n     * Constructs a new FieldStat.\n     * @exports FieldStat\n     * @classdesc Represents a FieldStat.\n     * @implements IFieldStat\n     * @constructor\n     * @param {IFieldStat=} [properties] Properties to set\n     */\n    function FieldStat(properties) {\n        this.latencyCount = [];\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * FieldStat returnType.\n     * @member {string} returnType\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.returnType = \"\";\n\n    /**\n     * FieldStat errorsCount.\n     * @member {number} errorsCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.errorsCount = 0;\n\n    /**\n     * FieldStat observedExecutionCount.\n     * @member {number} observedExecutionCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.observedExecutionCount = 0;\n\n    /**\n     * FieldStat estimatedExecutionCount.\n     * @member {number} estimatedExecutionCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.estimatedExecutionCount = 0;\n\n    /**\n     * FieldStat requestsWithErrorsCount.\n     * @member {number} requestsWithErrorsCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.requestsWithErrorsCount = 0;\n\n    /**\n     * FieldStat latencyCount.\n     * @member {Array.<number>} latencyCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.latencyCount = $util.emptyArray;\n\n    /**\n     * Creates a new FieldStat instance using the specified properties.\n     * @function create\n     * @memberof FieldStat\n     * @static\n     * @param {IFieldStat=} [properties] Properties to set\n     * @returns {FieldStat} FieldStat instance\n     */\n    FieldStat.create = function create(properties) {\n        return new FieldStat(properties);\n    };\n\n    /**\n     * Encodes the specified FieldStat message. Does not implicitly {@link FieldStat.verify|verify} messages.\n     * @function encode\n     * @memberof FieldStat\n     * @static\n     * @param {IFieldStat} message FieldStat message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    FieldStat.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.returnType != null && Object.hasOwnProperty.call(message, \"returnType\"))\n            writer.uint32(/* id 3, wireType 2 =*/26).string(message.returnType);\n        if (message.errorsCount != null && Object.hasOwnProperty.call(message, \"errorsCount\"))\n            writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.errorsCount);\n        if (message.observedExecutionCount != null && Object.hasOwnProperty.call(message, \"observedExecutionCount\"))\n            writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.observedExecutionCount);\n        if (message.requestsWithErrorsCount != null && Object.hasOwnProperty.call(message, \"requestsWithErrorsCount\"))\n            writer.uint32(/* id 6, wireType 0 =*/48).uint64(message.requestsWithErrorsCount);\n        var array9;\n        if (message.latencyCount != null && message.latencyCount.toArray)\n            array9 = message.latencyCount.toArray();\n        else\n            array9 = message.latencyCount;\n        if (array9 != null && array9.length) {\n            writer.uint32(/* id 9, wireType 2 =*/74).fork();\n            for (var i = 0; i < array9.length; ++i)\n                writer.sint64(array9[i]);\n            writer.ldelim();\n        }\n        if (message.estimatedExecutionCount != null && Object.hasOwnProperty.call(message, \"estimatedExecutionCount\"))\n            writer.uint32(/* id 10, wireType 0 =*/80).uint64(message.estimatedExecutionCount);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified FieldStat message, length delimited. Does not implicitly {@link FieldStat.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof FieldStat\n     * @static\n     * @param {IFieldStat} message FieldStat message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    FieldStat.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a FieldStat message from the specified reader or buffer.\n     * @function decode\n     * @memberof FieldStat\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {FieldStat} FieldStat\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    FieldStat.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.FieldStat();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 3:\n                message.returnType = reader.string();\n                break;\n            case 4:\n                message.errorsCount = reader.uint64();\n                break;\n            case 5:\n                message.observedExecutionCount = reader.uint64();\n                break;\n            case 10:\n                message.estimatedExecutionCount = reader.uint64();\n                break;\n            case 6:\n                message.requestsWithErrorsCount = reader.uint64();\n                break;\n            case 9:\n                if (!(message.latencyCount && message.latencyCount.length))\n                    message.latencyCount = [];\n                if ((tag & 7) === 2) {\n                    var end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.latencyCount.push(reader.sint64());\n                } else\n                    message.latencyCount.push(reader.sint64());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a FieldStat message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof FieldStat\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {FieldStat} FieldStat\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    FieldStat.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a FieldStat message.\n     * @function verify\n     * @memberof FieldStat\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    FieldStat.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.returnType != null && message.hasOwnProperty(\"returnType\"))\n            if (!$util.isString(message.returnType))\n                return \"returnType: string expected\";\n        if (message.errorsCount != null && message.hasOwnProperty(\"errorsCount\"))\n            if (!$util.isInteger(message.errorsCount) && !(message.errorsCount && $util.isInteger(message.errorsCount.low) && $util.isInteger(message.errorsCount.high)))\n                return \"errorsCount: integer|Long expected\";\n        if (message.observedExecutionCount != null && message.hasOwnProperty(\"observedExecutionCount\"))\n            if (!$util.isInteger(message.observedExecutionCount) && !(message.observedExecutionCount && $util.isInteger(message.observedExecutionCount.low) && $util.isInteger(message.observedExecutionCount.high)))\n                return \"observedExecutionCount: integer|Long expected\";\n        if (message.estimatedExecutionCount != null && message.hasOwnProperty(\"estimatedExecutionCount\"))\n            if (!$util.isInteger(message.estimatedExecutionCount) && !(message.estimatedExecutionCount && $util.isInteger(message.estimatedExecutionCount.low) && $util.isInteger(message.estimatedExecutionCount.high)))\n                return \"estimatedExecutionCount: integer|Long expected\";\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (!$util.isInteger(message.requestsWithErrorsCount) && !(message.requestsWithErrorsCount && $util.isInteger(message.requestsWithErrorsCount.low) && $util.isInteger(message.requestsWithErrorsCount.high)))\n                return \"requestsWithErrorsCount: integer|Long expected\";\n        if (message.latencyCount != null && message.hasOwnProperty(\"latencyCount\")) {\n            var array9;\n            if (message.latencyCount != null && message.latencyCount.toArray)\n                array9 = message.latencyCount.toArray();\n            else\n                array9 = message.latencyCount;\n            if (!Array.isArray(array9))\n                return \"latencyCount: array expected\";\n            for (var i = 0; i < array9.length; ++i)\n                if (!$util.isInteger(array9[i]) && !(array9[i] && $util.isInteger(array9[i].low) && $util.isInteger(array9[i].high)))\n                    return \"latencyCount: integer|Long[] expected\";\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a FieldStat message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof FieldStat\n     * @static\n     * @param {FieldStat} message FieldStat\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    FieldStat.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.arrays || options.defaults)\n            object.latencyCount = [];\n        if (options.defaults) {\n            object.returnType = \"\";\n            object.errorsCount = 0;\n            object.observedExecutionCount = 0;\n            object.requestsWithErrorsCount = 0;\n            object.estimatedExecutionCount = 0;\n        }\n        if (message.returnType != null && message.hasOwnProperty(\"returnType\"))\n            object.returnType = message.returnType;\n        if (message.errorsCount != null && message.hasOwnProperty(\"errorsCount\"))\n            if (typeof message.errorsCount === \"number\")\n                object.errorsCount = options.longs === String ? String(message.errorsCount) : message.errorsCount;\n            else\n                object.errorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.errorsCount) : options.longs === Number ? new $util.LongBits(message.errorsCount.low >>> 0, message.errorsCount.high >>> 0).toNumber(true) : message.errorsCount;\n        if (message.observedExecutionCount != null && message.hasOwnProperty(\"observedExecutionCount\"))\n            if (typeof message.observedExecutionCount === \"number\")\n                object.observedExecutionCount = options.longs === String ? String(message.observedExecutionCount) : message.observedExecutionCount;\n            else\n                object.observedExecutionCount = options.longs === String ? $util.Long.prototype.toString.call(message.observedExecutionCount) : options.longs === Number ? new $util.LongBits(message.observedExecutionCount.low >>> 0, message.observedExecutionCount.high >>> 0).toNumber(true) : message.observedExecutionCount;\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (typeof message.requestsWithErrorsCount === \"number\")\n                object.requestsWithErrorsCount = options.longs === String ? String(message.requestsWithErrorsCount) : message.requestsWithErrorsCount;\n            else\n                object.requestsWithErrorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.requestsWithErrorsCount) : options.longs === Number ? new $util.LongBits(message.requestsWithErrorsCount.low >>> 0, message.requestsWithErrorsCount.high >>> 0).toNumber(true) : message.requestsWithErrorsCount;\n        if (message.latencyCount && message.latencyCount.length) {\n            object.latencyCount = [];\n            for (var j = 0; j < message.latencyCount.length; ++j)\n                if (typeof message.latencyCount[j] === \"number\")\n                    object.latencyCount[j] = options.longs === String ? String(message.latencyCount[j]) : message.latencyCount[j];\n                else\n                    object.latencyCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.latencyCount[j]) : options.longs === Number ? new $util.LongBits(message.latencyCount[j].low >>> 0, message.latencyCount[j].high >>> 0).toNumber() : message.latencyCount[j];\n        }\n        if (message.estimatedExecutionCount != null && message.hasOwnProperty(\"estimatedExecutionCount\"))\n            if (typeof message.estimatedExecutionCount === \"number\")\n                object.estimatedExecutionCount = options.longs === String ? String(message.estimatedExecutionCount) : message.estimatedExecutionCount;\n            else\n                object.estimatedExecutionCount = options.longs === String ? $util.Long.prototype.toString.call(message.estimatedExecutionCount) : options.longs === Number ? new $util.LongBits(message.estimatedExecutionCount.low >>> 0, message.estimatedExecutionCount.high >>> 0).toNumber(true) : message.estimatedExecutionCount;\n        return object;\n    };\n\n    /**\n     * Converts this FieldStat to JSON.\n     * @function toJSON\n     * @memberof FieldStat\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    FieldStat.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return FieldStat;\n})();\n\n$root.TypeStat = (function() {\n\n    /**\n     * Properties of a TypeStat.\n     * @exports ITypeStat\n     * @interface ITypeStat\n     * @property {Object.<string,IFieldStat>|null} [perFieldStat] TypeStat perFieldStat\n     */\n\n    /**\n     * Constructs a new TypeStat.\n     * @exports TypeStat\n     * @classdesc Represents a TypeStat.\n     * @implements ITypeStat\n     * @constructor\n     * @param {ITypeStat=} [properties] Properties to set\n     */\n    function TypeStat(properties) {\n        this.perFieldStat = {};\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * TypeStat perFieldStat.\n     * @member {Object.<string,IFieldStat>} perFieldStat\n     * @memberof TypeStat\n     * @instance\n     */\n    TypeStat.prototype.perFieldStat = $util.emptyObject;\n\n    /**\n     * Creates a new TypeStat instance using the specified properties.\n     * @function create\n     * @memberof TypeStat\n     * @static\n     * @param {ITypeStat=} [properties] Properties to set\n     * @returns {TypeStat} TypeStat instance\n     */\n    TypeStat.create = function create(properties) {\n        return new TypeStat(properties);\n    };\n\n    /**\n     * Encodes the specified TypeStat message. Does not implicitly {@link TypeStat.verify|verify} messages.\n     * @function encode\n     * @memberof TypeStat\n     * @static\n     * @param {ITypeStat} message TypeStat message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    TypeStat.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.perFieldStat != null && Object.hasOwnProperty.call(message, \"perFieldStat\"))\n            for (var keys = Object.keys(message.perFieldStat), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.FieldStat.encode(message.perFieldStat[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        return writer;\n    };\n\n    /**\n     * Encodes the specified TypeStat message, length delimited. Does not implicitly {@link TypeStat.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof TypeStat\n     * @static\n     * @param {ITypeStat} message TypeStat message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    TypeStat.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a TypeStat message from the specified reader or buffer.\n     * @function decode\n     * @memberof TypeStat\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {TypeStat} TypeStat\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    TypeStat.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.TypeStat(), key;\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 3:\n                reader.skip().pos++;\n                if (message.perFieldStat === $util.emptyObject)\n                    message.perFieldStat = {};\n                key = reader.string();\n                reader.pos++;\n                message.perFieldStat[key] = $root.FieldStat.decode(reader, reader.uint32());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a TypeStat message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof TypeStat\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {TypeStat} TypeStat\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    TypeStat.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a TypeStat message.\n     * @function verify\n     * @memberof TypeStat\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    TypeStat.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.perFieldStat != null && message.hasOwnProperty(\"perFieldStat\")) {\n            if (!$util.isObject(message.perFieldStat))\n                return \"perFieldStat: object expected\";\n            var key = Object.keys(message.perFieldStat);\n            for (var i = 0; i < key.length; ++i) {\n                var error = $root.FieldStat.verify(message.perFieldStat[key[i]]);\n                if (error)\n                    return \"perFieldStat.\" + error;\n            }\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a TypeStat message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof TypeStat\n     * @static\n     * @param {TypeStat} message TypeStat\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    TypeStat.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.objects || options.defaults)\n            object.perFieldStat = {};\n        var keys2;\n        if (message.perFieldStat && (keys2 = Object.keys(message.perFieldStat)).length) {\n            object.perFieldStat = {};\n            for (var j = 0; j < keys2.length; ++j)\n                object.perFieldStat[keys2[j]] = $root.FieldStat.toObject(message.perFieldStat[keys2[j]], options);\n        }\n        return object;\n    };\n\n    /**\n     * Converts this TypeStat to JSON.\n     * @function toJSON\n     * @memberof TypeStat\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    TypeStat.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return TypeStat;\n})();\n\n$root.ReferencedFieldsForType = (function() {\n\n    /**\n     * Properties of a ReferencedFieldsForType.\n     * @exports IReferencedFieldsForType\n     * @interface IReferencedFieldsForType\n     * @property {Array.<string>|null} [fieldNames] ReferencedFieldsForType fieldNames\n     * @property {boolean|null} [isInterface] ReferencedFieldsForType isInterface\n     */\n\n    /**\n     * Constructs a new ReferencedFieldsForType.\n     * @exports ReferencedFieldsForType\n     * @classdesc Represents a ReferencedFieldsForType.\n     * @implements IReferencedFieldsForType\n     * @constructor\n     * @param {IReferencedFieldsForType=} [properties] Properties to set\n     */\n    function ReferencedFieldsForType(properties) {\n        this.fieldNames = [];\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ReferencedFieldsForType fieldNames.\n     * @member {Array.<string>} fieldNames\n     * @memberof ReferencedFieldsForType\n     * @instance\n     */\n    ReferencedFieldsForType.prototype.fieldNames = $util.emptyArray;\n\n    /**\n     * ReferencedFieldsForType isInterface.\n     * @member {boolean} isInterface\n     * @memberof ReferencedFieldsForType\n     * @instance\n     */\n    ReferencedFieldsForType.prototype.isInterface = false;\n\n    /**\n     * Creates a new ReferencedFieldsForType instance using the specified properties.\n     * @function create\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {IReferencedFieldsForType=} [properties] Properties to set\n     * @returns {ReferencedFieldsForType} ReferencedFieldsForType instance\n     */\n    ReferencedFieldsForType.create = function create(properties) {\n        return new ReferencedFieldsForType(properties);\n    };\n\n    /**\n     * Encodes the specified ReferencedFieldsForType message. Does not implicitly {@link ReferencedFieldsForType.verify|verify} messages.\n     * @function encode\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {IReferencedFieldsForType} message ReferencedFieldsForType message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ReferencedFieldsForType.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.fieldNames != null && message.fieldNames.length)\n            for (var i = 0; i < message.fieldNames.length; ++i)\n                writer.uint32(/* id 1, wireType 2 =*/10).string(message.fieldNames[i]);\n        if (message.isInterface != null && Object.hasOwnProperty.call(message, \"isInterface\"))\n            writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isInterface);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ReferencedFieldsForType message, length delimited. Does not implicitly {@link ReferencedFieldsForType.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {IReferencedFieldsForType} message ReferencedFieldsForType message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ReferencedFieldsForType.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ReferencedFieldsForType message from the specified reader or buffer.\n     * @function decode\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ReferencedFieldsForType} ReferencedFieldsForType\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ReferencedFieldsForType.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ReferencedFieldsForType();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                if (!(message.fieldNames && message.fieldNames.length))\n                    message.fieldNames = [];\n                message.fieldNames.push(reader.string());\n                break;\n            case 2:\n                message.isInterface = reader.bool();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ReferencedFieldsForType message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ReferencedFieldsForType} ReferencedFieldsForType\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ReferencedFieldsForType.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ReferencedFieldsForType message.\n     * @function verify\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ReferencedFieldsForType.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.fieldNames != null && message.hasOwnProperty(\"fieldNames\")) {\n            if (!Array.isArray(message.fieldNames))\n                return \"fieldNames: array expected\";\n            for (var i = 0; i < message.fieldNames.length; ++i)\n                if (!$util.isString(message.fieldNames[i]))\n                    return \"fieldNames: string[] expected\";\n        }\n        if (message.isInterface != null && message.hasOwnProperty(\"isInterface\"))\n            if (typeof message.isInterface !== \"boolean\")\n                return \"isInterface: boolean expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ReferencedFieldsForType message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {ReferencedFieldsForType} message ReferencedFieldsForType\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ReferencedFieldsForType.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.arrays || options.defaults)\n            object.fieldNames = [];\n        if (options.defaults)\n            object.isInterface = false;\n        if (message.fieldNames && message.fieldNames.length) {\n            object.fieldNames = [];\n            for (var j = 0; j < message.fieldNames.length; ++j)\n                object.fieldNames[j] = message.fieldNames[j];\n        }\n        if (message.isInterface != null && message.hasOwnProperty(\"isInterface\"))\n            object.isInterface = message.isInterface;\n        return object;\n    };\n\n    /**\n     * Converts this ReferencedFieldsForType to JSON.\n     * @function toJSON\n     * @memberof ReferencedFieldsForType\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ReferencedFieldsForType.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ReferencedFieldsForType;\n})();\n\n$root.Report = (function() {\n\n    /**\n     * Properties of a Report.\n     * @exports IReport\n     * @interface IReport\n     * @property {IReportHeader|null} [header] Report header\n     * @property {Object.<string,ITracesAndStats>|null} [tracesPerQuery] Report tracesPerQuery\n     * @property {google.protobuf.ITimestamp|null} [endTime] Report endTime\n     * @property {number|null} [operationCount] Report operationCount\n     * @property {boolean|null} [tracesPreAggregated] Report tracesPreAggregated\n     */\n\n    /**\n     * Constructs a new Report.\n     * @exports Report\n     * @classdesc Represents a Report.\n     * @implements IReport\n     * @constructor\n     * @param {IReport=} [properties] Properties to set\n     */\n    function Report(properties) {\n        this.tracesPerQuery = {};\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * Report header.\n     * @member {IReportHeader|null|undefined} header\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.header = null;\n\n    /**\n     * Report tracesPerQuery.\n     * @member {Object.<string,ITracesAndStats>} tracesPerQuery\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.tracesPerQuery = $util.emptyObject;\n\n    /**\n     * Report endTime.\n     * @member {google.protobuf.ITimestamp|null|undefined} endTime\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.endTime = null;\n\n    /**\n     * Report operationCount.\n     * @member {number} operationCount\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.operationCount = 0;\n\n    /**\n     * Report tracesPreAggregated.\n     * @member {boolean} tracesPreAggregated\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.tracesPreAggregated = false;\n\n    /**\n     * Creates a new Report instance using the specified properties.\n     * @function create\n     * @memberof Report\n     * @static\n     * @param {IReport=} [properties] Properties to set\n     * @returns {Report} Report instance\n     */\n    Report.create = function create(properties) {\n        return new Report(properties);\n    };\n\n    /**\n     * Encodes the specified Report message. Does not implicitly {@link Report.verify|verify} messages.\n     * @function encode\n     * @memberof Report\n     * @static\n     * @param {IReport} message Report message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    Report.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.header != null && Object.hasOwnProperty.call(message, \"header\"))\n            $root.ReportHeader.encode(message.header, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        if (message.endTime != null && Object.hasOwnProperty.call(message, \"endTime\"))\n            $root.google.protobuf.Timestamp.encode(message.endTime, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n        if (message.tracesPerQuery != null && Object.hasOwnProperty.call(message, \"tracesPerQuery\"))\n            for (var keys = Object.keys(message.tracesPerQuery), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.TracesAndStats.encode(message.tracesPerQuery[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        if (message.operationCount != null && Object.hasOwnProperty.call(message, \"operationCount\"))\n            writer.uint32(/* id 6, wireType 0 =*/48).uint64(message.operationCount);\n        if (message.tracesPreAggregated != null && Object.hasOwnProperty.call(message, \"tracesPreAggregated\"))\n            writer.uint32(/* id 7, wireType 0 =*/56).bool(message.tracesPreAggregated);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified Report message, length delimited. Does not implicitly {@link Report.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof Report\n     * @static\n     * @param {IReport} message Report message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    Report.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a Report message from the specified reader or buffer.\n     * @function decode\n     * @memberof Report\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {Report} Report\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    Report.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Report(), key;\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                message.header = $root.ReportHeader.decode(reader, reader.uint32());\n                break;\n            case 5:\n                reader.skip().pos++;\n                if (message.tracesPerQuery === $util.emptyObject)\n                    message.tracesPerQuery = {};\n                key = reader.string();\n                reader.pos++;\n                message.tracesPerQuery[key] = $root.TracesAndStats.decode(reader, reader.uint32());\n                break;\n            case 2:\n                message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                break;\n            case 6:\n                message.operationCount = reader.uint64();\n                break;\n            case 7:\n                message.tracesPreAggregated = reader.bool();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a Report message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof Report\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {Report} Report\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    Report.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a Report message.\n     * @function verify\n     * @memberof Report\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    Report.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.header != null && message.hasOwnProperty(\"header\")) {\n            var error = $root.ReportHeader.verify(message.header);\n            if (error)\n                return \"header.\" + error;\n        }\n        if (message.tracesPerQuery != null && message.hasOwnProperty(\"tracesPerQuery\")) {\n            if (!$util.isObject(message.tracesPerQuery))\n                return \"tracesPerQuery: object expected\";\n            var key = Object.keys(message.tracesPerQuery);\n            for (var i = 0; i < key.length; ++i) {\n                var error = $root.TracesAndStats.verify(message.tracesPerQuery[key[i]]);\n                if (error)\n                    return \"tracesPerQuery.\" + error;\n            }\n        }\n        if (message.endTime != null && message.hasOwnProperty(\"endTime\")) {\n            var error = $root.google.protobuf.Timestamp.verify(message.endTime);\n            if (error)\n                return \"endTime.\" + error;\n        }\n        if (message.operationCount != null && message.hasOwnProperty(\"operationCount\"))\n            if (!$util.isInteger(message.operationCount) && !(message.operationCount && $util.isInteger(message.operationCount.low) && $util.isInteger(message.operationCount.high)))\n                return \"operationCount: integer|Long expected\";\n        if (message.tracesPreAggregated != null && message.hasOwnProperty(\"tracesPreAggregated\"))\n            if (typeof message.tracesPreAggregated !== \"boolean\")\n                return \"tracesPreAggregated: boolean expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a Report message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof Report\n     * @static\n     * @param {Report} message Report\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    Report.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.objects || options.defaults)\n            object.tracesPerQuery = {};\n        if (options.defaults) {\n            object.header = null;\n            object.endTime = null;\n            object.operationCount = 0;\n            object.tracesPreAggregated = false;\n        }\n        if (message.header != null && message.hasOwnProperty(\"header\"))\n            object.header = $root.ReportHeader.toObject(message.header, options);\n        if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n            object.endTime = $root.google.protobuf.Timestamp.toObject(message.endTime, options);\n        var keys2;\n        if (message.tracesPerQuery && (keys2 = Object.keys(message.tracesPerQuery)).length) {\n            object.tracesPerQuery = {};\n            for (var j = 0; j < keys2.length; ++j)\n                object.tracesPerQuery[keys2[j]] = $root.TracesAndStats.toObject(message.tracesPerQuery[keys2[j]], options);\n        }\n        if (message.operationCount != null && message.hasOwnProperty(\"operationCount\"))\n            if (typeof message.operationCount === \"number\")\n                object.operationCount = options.longs === String ? String(message.operationCount) : message.operationCount;\n            else\n                object.operationCount = options.longs === String ? $util.Long.prototype.toString.call(message.operationCount) : options.longs === Number ? new $util.LongBits(message.operationCount.low >>> 0, message.operationCount.high >>> 0).toNumber(true) : message.operationCount;\n        if (message.tracesPreAggregated != null && message.hasOwnProperty(\"tracesPreAggregated\"))\n            object.tracesPreAggregated = message.tracesPreAggregated;\n        return object;\n    };\n\n    /**\n     * Converts this Report to JSON.\n     * @function toJSON\n     * @memberof Report\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    Report.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return Report;\n})();\n\n$root.ContextualizedStats = (function() {\n\n    /**\n     * Properties of a ContextualizedStats.\n     * @exports IContextualizedStats\n     * @interface IContextualizedStats\n     * @property {IStatsContext|null} [context] ContextualizedStats context\n     * @property {IQueryLatencyStats|null} [queryLatencyStats] ContextualizedStats queryLatencyStats\n     * @property {Object.<string,ITypeStat>|null} [perTypeStat] ContextualizedStats perTypeStat\n     */\n\n    /**\n     * Constructs a new ContextualizedStats.\n     * @exports ContextualizedStats\n     * @classdesc Represents a ContextualizedStats.\n     * @implements IContextualizedStats\n     * @constructor\n     * @param {IContextualizedStats=} [properties] Properties to set\n     */\n    function ContextualizedStats(properties) {\n        this.perTypeStat = {};\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ContextualizedStats context.\n     * @member {IStatsContext|null|undefined} context\n     * @memberof ContextualizedStats\n     * @instance\n     */\n    ContextualizedStats.prototype.context = null;\n\n    /**\n     * ContextualizedStats queryLatencyStats.\n     * @member {IQueryLatencyStats|null|undefined} queryLatencyStats\n     * @memberof ContextualizedStats\n     * @instance\n     */\n    ContextualizedStats.prototype.queryLatencyStats = null;\n\n    /**\n     * ContextualizedStats perTypeStat.\n     * @member {Object.<string,ITypeStat>} perTypeStat\n     * @memberof ContextualizedStats\n     * @instance\n     */\n    ContextualizedStats.prototype.perTypeStat = $util.emptyObject;\n\n    /**\n     * Creates a new ContextualizedStats instance using the specified properties.\n     * @function create\n     * @memberof ContextualizedStats\n     * @static\n     * @param {IContextualizedStats=} [properties] Properties to set\n     * @returns {ContextualizedStats} ContextualizedStats instance\n     */\n    ContextualizedStats.create = function create(properties) {\n        return new ContextualizedStats(properties);\n    };\n\n    /**\n     * Encodes the specified ContextualizedStats message. Does not implicitly {@link ContextualizedStats.verify|verify} messages.\n     * @function encode\n     * @memberof ContextualizedStats\n     * @static\n     * @param {IContextualizedStats} message ContextualizedStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.context != null && Object.hasOwnProperty.call(message, \"context\"))\n            $root.StatsContext.encode(message.context, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        if (message.queryLatencyStats != null && Object.hasOwnProperty.call(message, \"queryLatencyStats\"))\n            $root.QueryLatencyStats.encode(message.queryLatencyStats, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n        if (message.perTypeStat != null && Object.hasOwnProperty.call(message, \"perTypeStat\"))\n            for (var keys = Object.keys(message.perTypeStat), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.TypeStat.encode(message.perTypeStat[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ContextualizedStats message, length delimited. Does not implicitly {@link ContextualizedStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ContextualizedStats\n     * @static\n     * @param {IContextualizedStats} message ContextualizedStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ContextualizedStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof ContextualizedStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ContextualizedStats} ContextualizedStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ContextualizedStats(), key;\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                message.context = $root.StatsContext.decode(reader, reader.uint32());\n                break;\n            case 2:\n                message.queryLatencyStats = $root.QueryLatencyStats.decode(reader, reader.uint32());\n                break;\n            case 3:\n                reader.skip().pos++;\n                if (message.perTypeStat === $util.emptyObject)\n                    message.perTypeStat = {};\n                key = reader.string();\n                reader.pos++;\n                message.perTypeStat[key] = $root.TypeStat.decode(reader, reader.uint32());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ContextualizedStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ContextualizedStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ContextualizedStats} ContextualizedStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ContextualizedStats message.\n     * @function verify\n     * @memberof ContextualizedStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ContextualizedStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.context != null && message.hasOwnProperty(\"context\")) {\n            var error = $root.StatsContext.verify(message.context);\n            if (error)\n                return \"context.\" + error;\n        }\n        if (message.queryLatencyStats != null && message.hasOwnProperty(\"queryLatencyStats\")) {\n            var error = $root.QueryLatencyStats.verify(message.queryLatencyStats);\n            if (error)\n                return \"queryLatencyStats.\" + error;\n        }\n        if (message.perTypeStat != null && message.hasOwnProperty(\"perTypeStat\")) {\n            if (!$util.isObject(message.perTypeStat))\n                return \"perTypeStat: object expected\";\n            var key = Object.keys(message.perTypeStat);\n            for (var i = 0; i < key.length; ++i) {\n                var error = $root.TypeStat.verify(message.perTypeStat[key[i]]);\n                if (error)\n                    return \"perTypeStat.\" + error;\n            }\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ContextualizedStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ContextualizedStats\n     * @static\n     * @param {ContextualizedStats} message ContextualizedStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ContextualizedStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.objects || options.defaults)\n            object.perTypeStat = {};\n        if (options.defaults) {\n            object.context = null;\n            object.queryLatencyStats = null;\n        }\n        if (message.context != null && message.hasOwnProperty(\"context\"))\n            object.context = $root.StatsContext.toObject(message.context, options);\n        if (message.queryLatencyStats != null && message.hasOwnProperty(\"queryLatencyStats\"))\n            object.queryLatencyStats = $root.QueryLatencyStats.toObject(message.queryLatencyStats, options);\n        var keys2;\n        if (message.perTypeStat && (keys2 = Object.keys(message.perTypeStat)).length) {\n            object.perTypeStat = {};\n            for (var j = 0; j < keys2.length; ++j)\n                object.perTypeStat[keys2[j]] = $root.TypeStat.toObject(message.perTypeStat[keys2[j]], options);\n        }\n        return object;\n    };\n\n    /**\n     * Converts this ContextualizedStats to JSON.\n     * @function toJSON\n     * @memberof ContextualizedStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ContextualizedStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ContextualizedStats;\n})();\n\n$root.TracesAndStats = (function() {\n\n    /**\n     * Properties of a TracesAndStats.\n     * @exports ITracesAndStats\n     * @interface ITracesAndStats\n     * @property {Array.<ITrace|Uint8Array>|null} [trace] TracesAndStats trace\n     * @property {$protobuf.ToArray.<IContextualizedStats>|Array.<IContextualizedStats>|null} [statsWithContext] TracesAndStats statsWithContext\n     * @property {Object.<string,IReferencedFieldsForType>|null} [referencedFieldsByType] TracesAndStats referencedFieldsByType\n     * @property {Array.<ITrace|Uint8Array>|null} [internalTracesContributingToStats] TracesAndStats internalTracesContributingToStats\n     */\n\n    /**\n     * Constructs a new TracesAndStats.\n     * @exports TracesAndStats\n     * @classdesc Represents a TracesAndStats.\n     * @implements ITracesAndStats\n     * @constructor\n     * @param {ITracesAndStats=} [properties] Properties to set\n     */\n    function TracesAndStats(properties) {\n        this.trace = [];\n        this.statsWithContext = [];\n        this.referencedFieldsByType = {};\n        this.internalTracesContributingToStats = [];\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * TracesAndStats trace.\n     * @member {Array.<ITrace|Uint8Array>} trace\n     * @memberof TracesAndStats\n     * @instance\n     */\n    TracesAndStats.prototype.trace = $util.emptyArray;\n\n    /**\n     * TracesAndStats statsWithContext.\n     * @member {Array.<IContextualizedStats>} statsWithContext\n     * @memberof TracesAndStats\n     * @instance\n     */\n    TracesAndStats.prototype.statsWithContext = $util.emptyArray;\n\n    /**\n     * TracesAndStats referencedFieldsByType.\n     * @member {Object.<string,IReferencedFieldsForType>} referencedFieldsByType\n     * @memberof TracesAndStats\n     * @instance\n     */\n    TracesAndStats.prototype.referencedFieldsByType = $util.emptyObject;\n\n    /**\n     * TracesAndStats internalTracesContributingToStats.\n     * @member {Array.<ITrace|Uint8Array>} internalTracesContributingToStats\n     * @memberof TracesAndStats\n     * @instance\n     */\n    TracesAndStats.prototype.internalTracesContributingToStats = $util.emptyArray;\n\n    /**\n     * Creates a new TracesAndStats instance using the specified properties.\n     * @function create\n     * @memberof TracesAndStats\n     * @static\n     * @param {ITracesAndStats=} [properties] Properties to set\n     * @returns {TracesAndStats} TracesAndStats instance\n     */\n    TracesAndStats.create = function create(properties) {\n        return new TracesAndStats(properties);\n    };\n\n    /**\n     * Encodes the specified TracesAndStats message. Does not implicitly {@link TracesAndStats.verify|verify} messages.\n     * @function encode\n     * @memberof TracesAndStats\n     * @static\n     * @param {ITracesAndStats} message TracesAndStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    TracesAndStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.trace != null && message.trace.length)\n            for (var i = 0; i < message.trace.length; ++i)\n                if (message.trace[i] instanceof Uint8Array) {\n                    writer.uint32(/* id 1, wireType 2 =*/10);\n                    writer.bytes(message.trace[i]);\n                } else\n                    $root.Trace.encode(message.trace[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        var array2;\n        if (message.statsWithContext != null && message.statsWithContext.toArray)\n            array2 = message.statsWithContext.toArray();\n        else\n            array2 = message.statsWithContext;\n        if (array2 != null && array2.length)\n            for (var i = 0; i < array2.length; ++i)\n                $root.ContextualizedStats.encode(array2[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n        if (message.internalTracesContributingToStats != null && message.internalTracesContributingToStats.length)\n            for (var i = 0; i < message.internalTracesContributingToStats.length; ++i)\n                if (message.internalTracesContributingToStats[i] instanceof Uint8Array) {\n                    writer.uint32(/* id 3, wireType 2 =*/26);\n                    writer.bytes(message.internalTracesContributingToStats[i]);\n                } else\n                    $root.Trace.encode(message.internalTracesContributingToStats[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n        if (message.referencedFieldsByType != null && Object.hasOwnProperty.call(message, \"referencedFieldsByType\"))\n            for (var keys = Object.keys(message.referencedFieldsByType), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 4, wireType 2 =*/34).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.ReferencedFieldsForType.encode(message.referencedFieldsByType[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        return writer;\n    };\n\n    /**\n     * Encodes the specified TracesAndStats message, length delimited. Does not implicitly {@link TracesAndStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof TracesAndStats\n     * @static\n     * @param {ITracesAndStats} message TracesAndStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    TracesAndStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a TracesAndStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof TracesAndStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {TracesAndStats} TracesAndStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    TracesAndStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.TracesAndStats(), key;\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                if (!(message.trace && message.trace.length))\n                    message.trace = [];\n                message.trace.push($root.Trace.decode(reader, reader.uint32()));\n                break;\n            case 2:\n                if (!(message.statsWithContext && message.statsWithContext.length))\n                    message.statsWithContext = [];\n                message.statsWithContext.push($root.ContextualizedStats.decode(reader, reader.uint32()));\n                break;\n            case 4:\n                reader.skip().pos++;\n                if (message.referencedFieldsByType === $util.emptyObject)\n                    message.referencedFieldsByType = {};\n                key = reader.string();\n                reader.pos++;\n                message.referencedFieldsByType[key] = $root.ReferencedFieldsForType.decode(reader, reader.uint32());\n                break;\n            case 3:\n                if (!(message.internalTracesContributingToStats && message.internalTracesContributingToStats.length))\n                    message.internalTracesContributingToStats = [];\n                message.internalTracesContributingToStats.push($root.Trace.decode(reader, reader.uint32()));\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a TracesAndStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof TracesAndStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {TracesAndStats} TracesAndStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    TracesAndStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a TracesAndStats message.\n     * @function verify\n     * @memberof TracesAndStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    TracesAndStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.trace != null && message.hasOwnProperty(\"trace\")) {\n            if (!Array.isArray(message.trace))\n                return \"trace: array expected\";\n            for (var i = 0; i < message.trace.length; ++i)\n                if (!(message.trace[i] instanceof Uint8Array)) {\n                    var error = $root.Trace.verify(message.trace[i]);\n                    if (error)\n                        return \"trace.\" + error;\n                }\n        }\n        if (message.statsWithContext != null && message.hasOwnProperty(\"statsWithContext\")) {\n            var array2;\n            if (message.statsWithContext != null && message.statsWithContext.toArray)\n                array2 = message.statsWithContext.toArray();\n            else\n                array2 = message.statsWithContext;\n            if (!Array.isArray(array2))\n                return \"statsWithContext: array expected\";\n            for (var i = 0; i < array2.length; ++i) {\n                var error = $root.ContextualizedStats.verify(array2[i]);\n                if (error)\n                    return \"statsWithContext.\" + error;\n            }\n        }\n        if (message.referencedFieldsByType != null && message.hasOwnProperty(\"referencedFieldsByType\")) {\n            if (!$util.isObject(message.referencedFieldsByType))\n                return \"referencedFieldsByType: object expected\";\n            var key = Object.keys(message.referencedFieldsByType);\n            for (var i = 0; i < key.length; ++i) {\n                var error = $root.ReferencedFieldsForType.verify(message.referencedFieldsByType[key[i]]);\n                if (error)\n                    return \"referencedFieldsByType.\" + error;\n            }\n        }\n        if (message.internalTracesContributingToStats != null && message.hasOwnProperty(\"internalTracesContributingToStats\")) {\n            if (!Array.isArray(message.internalTracesContributingToStats))\n                return \"internalTracesContributingToStats: array expected\";\n            for (var i = 0; i < message.internalTracesContributingToStats.length; ++i)\n                if (!(message.internalTracesContributingToStats[i] instanceof Uint8Array)) {\n                    var error = $root.Trace.verify(message.internalTracesContributingToStats[i]);\n                    if (error)\n                        return \"internalTracesContributingToStats.\" + error;\n                }\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a TracesAndStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof TracesAndStats\n     * @static\n     * @param {TracesAndStats} message TracesAndStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    TracesAndStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.arrays || options.defaults) {\n            object.trace = [];\n            object.statsWithContext = [];\n            object.internalTracesContributingToStats = [];\n        }\n        if (options.objects || options.defaults)\n            object.referencedFieldsByType = {};\n        if (message.trace && message.trace.length) {\n            object.trace = [];\n            for (var j = 0; j < message.trace.length; ++j)\n                object.trace[j] = $root.Trace.toObject(message.trace[j], options);\n        }\n        if (message.statsWithContext && message.statsWithContext.length) {\n            object.statsWithContext = [];\n            for (var j = 0; j < message.statsWithContext.length; ++j)\n                object.statsWithContext[j] = $root.ContextualizedStats.toObject(message.statsWithContext[j], options);\n        }\n        if (message.internalTracesContributingToStats && message.internalTracesContributingToStats.length) {\n            object.internalTracesContributingToStats = [];\n            for (var j = 0; j < message.internalTracesContributingToStats.length; ++j)\n                object.internalTracesContributingToStats[j] = $root.Trace.toObject(message.internalTracesContributingToStats[j], options);\n        }\n        var keys2;\n        if (message.referencedFieldsByType && (keys2 = Object.keys(message.referencedFieldsByType)).length) {\n            object.referencedFieldsByType = {};\n            for (var j = 0; j < keys2.length; ++j)\n                object.referencedFieldsByType[keys2[j]] = $root.ReferencedFieldsForType.toObject(message.referencedFieldsByType[keys2[j]], options);\n        }\n        return object;\n    };\n\n    /**\n     * Converts this TracesAndStats to JSON.\n     * @function toJSON\n     * @memberof TracesAndStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    TracesAndStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return TracesAndStats;\n})();\n\n$root.google = (function() {\n\n    /**\n     * Namespace google.\n     * @exports google\n     * @namespace\n     */\n    var google = {};\n\n    google.protobuf = (function() {\n\n        /**\n         * Namespace protobuf.\n         * @memberof google\n         * @namespace\n         */\n        var protobuf = {};\n\n        protobuf.Timestamp = (function() {\n\n            /**\n             * Properties of a Timestamp.\n             * @memberof google.protobuf\n             * @interface ITimestamp\n             * @property {number|null} [seconds] Timestamp seconds\n             * @property {number|null} [nanos] Timestamp nanos\n             */\n\n            /**\n             * Constructs a new Timestamp.\n             * @memberof google.protobuf\n             * @classdesc Represents a Timestamp.\n             * @implements ITimestamp\n             * @constructor\n             * @param {google.protobuf.ITimestamp=} [properties] Properties to set\n             */\n            function Timestamp(properties) {\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * Timestamp seconds.\n             * @member {number} seconds\n             * @memberof google.protobuf.Timestamp\n             * @instance\n             */\n            Timestamp.prototype.seconds = 0;\n\n            /**\n             * Timestamp nanos.\n             * @member {number} nanos\n             * @memberof google.protobuf.Timestamp\n             * @instance\n             */\n            Timestamp.prototype.nanos = 0;\n\n            /**\n             * Creates a new Timestamp instance using the specified properties.\n             * @function create\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {google.protobuf.ITimestamp=} [properties] Properties to set\n             * @returns {google.protobuf.Timestamp} Timestamp instance\n             */\n            Timestamp.create = function create(properties) {\n                return new Timestamp(properties);\n            };\n\n            /**\n             * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.\n             * @function encode\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            Timestamp.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.seconds != null && Object.hasOwnProperty.call(message, \"seconds\"))\n                    writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds);\n                if (message.nanos != null && Object.hasOwnProperty.call(message, \"nanos\"))\n                    writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos);\n                return writer;\n            };\n\n            /**\n             * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            Timestamp.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a Timestamp message from the specified reader or buffer.\n             * @function decode\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {google.protobuf.Timestamp} Timestamp\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            Timestamp.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.seconds = reader.int64();\n                        break;\n                    case 2:\n                        message.nanos = reader.int32();\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a Timestamp message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {google.protobuf.Timestamp} Timestamp\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            Timestamp.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a Timestamp message.\n             * @function verify\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            Timestamp.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.seconds != null && message.hasOwnProperty(\"seconds\"))\n                    if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))\n                        return \"seconds: integer|Long expected\";\n                if (message.nanos != null && message.hasOwnProperty(\"nanos\"))\n                    if (!$util.isInteger(message.nanos))\n                        return \"nanos: integer expected\";\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a Timestamp message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {google.protobuf.Timestamp} message Timestamp\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            Timestamp.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.defaults) {\n                    object.seconds = 0;\n                    object.nanos = 0;\n                }\n                if (message.seconds != null && message.hasOwnProperty(\"seconds\"))\n                    if (typeof message.seconds === \"number\")\n                        object.seconds = options.longs === String ? String(message.seconds) : message.seconds;\n                    else\n                        object.seconds = options.longs === String ? $util.Long.prototype.toString.call(message.seconds) : options.longs === Number ? new $util.LongBits(message.seconds.low >>> 0, message.seconds.high >>> 0).toNumber() : message.seconds;\n                if (message.nanos != null && message.hasOwnProperty(\"nanos\"))\n                    object.nanos = message.nanos;\n                return object;\n            };\n\n            /**\n             * Converts this Timestamp to JSON.\n             * @function toJSON\n             * @memberof google.protobuf.Timestamp\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            Timestamp.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return Timestamp;\n        })();\n\n        return protobuf;\n    })();\n\n    return google;\n})();\n\nmodule.exports = $root;\n"]}