{"version":3,"sources":["scripts/app.js"],"names":["angular","module","routerConfig","$stateProvider","state","url","views","@","templateUrl","controller","controllerAs","$inject","config","VisorPiscinaTerceiroPassoController","$state","RouteDefinitionService","CalculoEspessuraService","BarraProgressoService","LoadingService","vm","this","model","VisorPiscinaModel","DefinirPassos","ObterState","current","name","IrPasso","titulo","irPassoPosterior","go","ObterStatePosterior","irPassoAnterior","ObterStateAnterior","imprimir","window","print","VisorPiscinaSegundoPassoController","$scope","SelecaoObjetivoService","toastr","CalculoFactory","podeAlterar","calcular","validarDados","loader","exibir","modelo","AlturaVidro","VidroAltura","LarguraVidro","VidroLargura","AlturaAgua","AguaAltura","TipoCalculoId","TipoVisor","Id","TipoVidroId","Nome","Telefone","Empresa","Fax","Obra","Email","calcularPiscinaAquario","then","resposta","retorno","RelatorioFinal","esconder","erro","warning","VisorPiscinaPrimeiroPassoController","init","buscarTiposCalculoPiscinaAquario","resultado","sourceVisores","selecionarVisor","fundo4lados","paramVisor","element","each","iV","visor","selecionado","visorSelecionado","grep","NecessarioAlturaAgua","TampoTerceiroPassoController","Tampo","TampoSegundoPassoController","calcularEspessuraTampo","TampoPrimeiroPassoController","VidroFactory","buscarTiposVidrosTampo","sourceTiposVidro","tipoVidro","AlturaAplicacao","SuperficieTodaApoiada","TampoRedondo","Largura","Comprimento","Diametro","PressaoVentoTerceiroPassoController","buscarTiposVidro","sourceVidros","PressaoVentoModel","crudRelatorioFinal","bordaLivre","sourceLados","descricao","valor","sourceBordasLivres","aoSelecionarVidro","vidro","vidroSelecionado","DadosVidro","Altura","BordaLivre","Vidro","Apoio","Angulo","Composicoes","length","ok","forEach","item","undefined","PressaoVentoSegundoPassoController","PressaoVentoManual","AplicacaoVidroExterno","Edificacao","MenorDimensao","MaiorDimensao","parseFloat","Inicializar","paramsStateAnterior","PressaoVentoQuintoPassoController","console","log","pegarPrimeiroNomeVidro","nomeVidro","split","montarExibicaoVidroAceito","Espessura","exibicao","montarNomeVidroMonolitico","Descricao","Composicao","espessuraTotal","vidrosInternos","objeto","indice","NomeVidro","PressaoVentoQuartoPassoController","Solicitante","match","VidroId","copy","comp","iComp","tempComp","comp2","iComp2","tempComp2","push","RegiaoId","Terreno","RegiaoEolica","RugosidadeId","Rugosidade","TopografiaId","Topografia","PressaoVento","AlturaEdificio","AplicacaoInterna","BordaLivreVidro","InclinacaoVidro","QuantidadeApoios","calcularPressaoVento","Regiao","PressaoCalculo","PressaoDinamica","MaiorDimensaoEdificio","MenorDimensaoEdificio","Vidros","AnguloVidro","ApoioVidro","PressaoVentoPrimeiroPassoController","$q","LocalFactory","deferredRegioes","buscarRegioes","deferredTerrenos","buscarTerrenos","deferredRugosidades","buscarRugosidades","all","resultados","sourceRegioes","sourceTopografia","sourceRugosidade","erros","selecionadoRegiao","selecionada","regiao","corRandom","letters","color","i","Math","floor","random","iR","selecionarRegiao","paramRegiao","Cor","PrateleiraTerceiroPassoController","Prateleira","calcularPrateleira","nome","telefone","empresa","obra","email","PrateleiraSegundoPassoController","buscarTiposVidrosPrateleira","isCemPorCentoApoiada","hasFuracao","tipoVidroId","obterEspessuras","espessuraId","obterDistancia","sourceEspessuras","sourceDistanciaEntreApoios","iniciarComponent","distanciaApoioId","larguraPeca","cargaMaxima","tipoCalculoId","buscarTiposEspessurasPrateleira","buscarDistanciaPrateleira","areaPeca","PrateleiraQuartoPassoController","calculoId","PrateleiraPrimeiroPassoController","buscarTipoCalculoPrateleira","tiposCalculo","formasPrateleira","eRetangular","formaPrateleira","PisoVidroSegundoPassoController","$http","PisoVidroPrimeiroPassoController","PisoVidroModel","EspelhoTerceiroPassoController","Espelho","EspelhoSegundoPassoController","calcularEspessuraEspelho","EspelhoPrimeiroPassoController","altura","largura","BoxTerceiroPassoController","Box","calcularEspessuraBox","BoxQuartoPassoController","BoxSegundoPassoController","lodash","promessaTipoPeca","buscarTiposPecasBox","sourceTiposPeca","modeloPeca","validarPeca","tipoPeca","adicionarPeca","peca","clone","TipoVidro","tipoAplicacao","TipoAplicacao","TipoPecaId","TipoVidroAplicacaoId","Pecas","removerPeca","pecaRemovida","remove","BoxPrimeiroPassoController","promessaTipoVidro","buscarTiposVidrosBox","service","VisorPiscinaSelecaoObjetivoController","sourceObjetivo","VisorPiscinaApresentacaoController","$timeout","_counter","iE","animate","opacity","TampoApresentacaoController","PressaoVentoApresentacaoController","PrateleiraApresentacaoController","PisoVidroApresentacaoController","EspelhoApresentacaoController","RegraController","RegraFactory","buscarRegras","sourceRegras","regraEdicao","mostrarModalEditarRegra","modal","editarRegra","regra","confirmarEdicao","atualizarRegra","BoxApresentacaoController","vidroDctv","restrict","replace","scope","composicoes","aoSelecionarVidroCallback","composicaoMae","link","attrs","atribuirVidroAcomposicaoMae","dispararCallbackAoSelecionarVidro","selecionados","composto","x","QuantidadeVidros","id","alternarCollapse","collapse","existeInsulado","filter","composicao","existeLaminado","directive","abstract","barraProgresso","SelecaoVidroService","SelecaoVidroController","sourceVidro","MainController","WizardHandler","passos","modulo","ObterStates","BarraProgressoController","sourceRoutes","statePosterior","ordemPasso","paramState","ModelService","models","CalculoEspessura","PisoVidro","VisorPiscina","PisoMaiorDimensao","PisoMenorDimensao","Local","AreaVidro","EspessuraRecomendada","Observacao","PesoVidro","TaxaTrabalhoAdmissivel","TextoApoio","CaminhoImagem","fax","espessura","IsCemPorCentoApoiada","LarguraPeca","AreaPeca","DistanciaApoio","CargaMaxima","HasFuracao","_service","_layoutLoader","selector","_intervalInicializacao","setInterval","clearInterval","$","size","fadeOut","fadeIn","resetarModel","unidade","$filter","input","decimais","unidadeMedida","numeroTelefone","numero","ddd","prefixo","sufixo","slice","API","get","URL","response","buscarVidros","buscarComposicoesPossiveis","isCemPorcentoApoiada","factory","data","extend","entidade","post","runBlock","$rootScope","$log","$on","event","toState","toParams","fromState","fromParams","stop","scrollTop","error","run","$urlRouterProvider","otherwise","FiltroPorcentagem","decimals","FiltroSplit","splitChar","splitIndex","constant","malarkey","moment","AppInterceptor","toastInterval","request","res","requestError","reject","_res","ShowToast","Messages","iM","message","success","Title","Data","responseError","Error","Message","$logProvider","$httpProvider","toastrConfig","debugEnabled","allowHtml","timeOut","positionClass","progressBar","interceptors","$templateCache","put"],"mappings":"CAAA,WACI,YAEAA,SACKC,OAAO,gCAEA,+CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,gCACHC,IAAK,kBACLC,OACIC,KACIC,YAAa,8EACbC,WAAY,sCACZC,aAAc,SAblCR,EAAaS,SAAW,kBAAxBX,QACKC,OAAO,gCACPW,OAAOV,MAmBhB,WACI,YAOA,SAASW,GAAoCC,EAAQC,EAAwBC,EAAyBC,EAAuBC,GAEzH,GAAIC,GAAKC,IACTD,GAAGE,MAAQL,EAAwBM,kBAEnCL,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFT,EAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGe,SAAW,WACVC,OAAOC,SArBfvB,EAAoCF,SAAW,SAAU,yBAA0B,0BAA2B,wBAAyB,kBADvIX,QACKC,OAAO,2CAA4C,kBAAmB,0BACtEQ,WAAW,sCAAuCI,MA6B3D,WACI,YAEAb,SACKC,OAAO,+BAKA,8CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,+BACHC,IAAK,iBACLC,OACIC,KACIC,YAAa,4EACbC,WAAY,qCACZC,aAAc,SAXlCR,EAAaS,SAAW,kBAFxBX,QACKC,OAAO,+BACPW,OAAOV,MAmBhB,WACI,YAOA,SAASmC,GAAmCC,EAAQxB,EAAQyB,EAAwBxB,EAAwBC,EAAyBC,EAAuBuB,EAAQtB,EAAgBuB,GAEhL,GAAItB,GAAKC,IACTD,GAAGE,MAAQL,EAAwBM,kBACnCL,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QACrFW,EAAuBG,aAAc,EAErCvB,EAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGwB,SAAW,WACV,GAAKxB,EAAGyB,eAAR,CAIA1B,EAAe2B,OAAOC,QAEtB,IAAIC,IACAC,YAAa7B,EAAGE,MAAM4B,YACtBC,aAAc/B,EAAGE,MAAM8B,aACvBC,WAAYjC,EAAGE,MAAMgC,WACrBC,cAAenC,EAAGE,MAAMkC,UAAUC,GAClCC,YAAa,EACbC,KAAMvC,EAAGE,MAAMqC,KACfC,SAAUxC,EAAGE,MAAMsC,SACnBC,QAASzC,EAAGE,MAAMuC,QAClBC,IAAK1C,EAAGE,MAAMwC,IACdC,KAAM3C,EAAGE,MAAMyC,KACfC,MAAO5C,EAAGE,MAAM0C,MAGpBtB,GAAeuB,uBAAuBjB,GACjCkB,KAAK,SAAUC,GACZ/C,EAAGgD,QAAUD,EAEb/C,EAAGE,MAAM+C,eAAiBF,EAE1BhD,EAAe2B,OAAOwB,WACtBlD,EAAGU,qBAPXY,SASW,SAAU6B,GACbpD,EAAe2B,OAAOwB,eAIlClD,EAAGyB,aAAe,WACd,MAAKzB,GAAGE,MAAMqC,KAILvC,EAAGE,MAAMsC,SAITxC,EAAGE,MAAMuC,QAITzC,EAAGE,MAAMyC,KAIT3C,EAAGE,MAAM0C,OAKP,GAJPvB,EAAO+B,QAAQ,uBAAwB,yBAChC,IALP/B,EAAO+B,QAAQ,sBAAuB,wBAC/B,IALP/B,EAAO+B,QAAQ,yBAA0B,2BAClC,IALP/B,EAAO+B,QAAQ,0BAA2B,4BACnC,IALP/B,EAAO+B,QAAQ,sBAAuB,wBAC/B,IAxDnBlC,EAAmC1B,SAAW,SAAU,SAAU,yBAA0B,yBAA0B,0BAA2B,wBAAyB,SAAU,iBAAkB,kBAHtMX,QACKC,OAAO,0CAA2C,oBAClDQ,WAAW,qCAAsC4B,MAkF1D,WACI,YAEArC,SACKC,OAAO,gCAKA,+CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,gCACHC,IAAK,kBACLC,OACIC,KACIC,YAAa,8EACbC,WAAY,sCACZC,aAAc,SATlCR,EAAaS,SAAW,kBAJxBX,QACKC,OAAO,gCACPW,OAAOV,MAmBhB,WACI,YAOA,SAASsE,GAAoClC,EAAQxB,EAAQyB,EAAwBxB,EAAwBC,EAAyBC,EAAuBuB,EAAQC,EAAgBvB,GAkGjL,QAASuD,KACLvD,EAAe2B,OAAOC,SAEtBL,EAAeiC,mCACVT,KAAK,SAAUU,GACZxD,EAAGyD,cAAgBD,EAEhBxD,EAAGE,MAAMkC,WACRpC,EAAG0D,gBAAgB1D,EAAGE,MAAMkC,WAGhCrC,EAAe2B,OAAOwB,aAR9B5B,SAUW,SAAU6B,GACbpD,EAAe2B,OAAOwB,aA/GlC/B,EAAOwC,aAAc,CACrB,IAAI3D,GAAKC,IACTD,GAAGE,MAAQL,EAAwBM,kBAEnCL,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFW,EAAuBG,aAAc,EA4BrCvB,EAAGyD,iBAEHzD,EAAG0D,gBAAkB,SAAUE,GACR,GAAfA,EAAWvB,GACXlB,EAAOwC,aAAexC,EAAOwC,YAE7BxC,EAAOwC,aAAc,EAIzB9E,QAAQgF,QAAQ7D,EAAGyD,eAAeK,KAAK,SAAUC,EAAIC,GACjDA,EAAMC,aAAc,GAExB,IAAIC,GAAmBrF,QAAQgF,QAAQM,KAAKnE,EAAGyD,cAAe,SAAUO,GACpE,MAAOA,GAAM3B,IAAMuB,EAAWvB,KAC/B,EAEH6B,GAAiBD,aAAc,GAInCjE,EAAGkE,iBAAmB,WAClB,MAAOrF,SAAQgF,QAAQM,KAAKnE,EAAGyD,cAAe,SAAUO,GACpD,MAAOA,GAAMC,cACd,IAGPjE,EAAGU,iBAAmB,WACbV,EAAGyB,iBAIRzB,EAAGE,MAAMkC,UAAYpC,EAAGkE,mBACxBvE,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,SAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGyB,aAAe,WACd,MAAKzB,GAAGkE,oBAIClE,EAAGE,MAAM4B,aAAe9B,EAAGE,MAAM4B,aAAe,GACrDT,EAAO+B,QAAQ,iDACR,IAEFpD,EAAGE,MAAM8B,cAAgBhC,EAAGE,MAAM8B,cAAgB,GACvDX,EAAO+B,QAAQ,kDACR,GAEHpD,EAAGkE,mBAAmBE,wBAA0BpE,EAAGE,MAAMgC,YAAclC,EAAGE,MAAMgC,YAAc,IAClGb,EAAO+B,QAAQ,gDACR,IAGA,GAhBP/B,EAAO+B,QAAQ,+BACR,IAoCfE,IAnHJD,EAAoC7D,SAAW,SAAU,SAAU,yBAA0B,yBAA0B,0BAA2B,wBAAyB,SAAU,iBAAkB,kBALvMX,QACKC,OAAO,2CAA4C,oBACnDQ,WAAW,sCAAuC+D,MA2H3D,WACI,YAEAxE,SACKC,OAAO,wBAEA,uCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,wBACHC,IAAK,kBACLC,OACIC,KACIC,YAAa,sEACbC,WAAY,+BACZC,aAAc,SAPlCR,EAAaS,SAAW,kBANxBX,QACKC,OAAO,wBACPW,OAAOV,MAmBhB,WACI,YAOA,SAASsF,GAA6B1E,EAAQC,EAAwBC,EAAyBC,EAAuBC,GAElH,GAAIC,GAAKC,IACTD,GAAGE,MAAQL,EAAwByE,MAEnCxE,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFT,EAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGe,SAAW,WACVC,OAAOC,SAffoD,EAA6B7E,SAAW,SAAU,yBAA0B,0BAA2B,wBAAyB,kBAPhIX,QACKC,OAAO,mCAAoC,kBAAmB,0BAC9DQ,WAAW,+BAAgC+E,MA6BpD,WACI,YAEAxF,SACKC,OAAO,uBAEA,sCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,uBACHC,IAAK,iBACLC,OACIC,KACIC,YAAa,oEACbC,WAAY,8BACZC,aAAc,SALlCR,EAAaS,SAAW,kBARxBX,QACKC,OAAO,uBACPW,OAAOV,MAmBhB,WACI,YAOA,SAASwF,GAA4BpD,EAAQxB,EAAQyB,EAAwBxB,EAAwBC,EAAyBC,EAAuBuB,EAAQtB,EAAgBuB,GAEzK,GAAItB,GAAKC,IACTD,GAAGE,MAAQL,EAAwByE,MACnCxE,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QACrFW,EAAuBG,aAAc,EAErCvB,EAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGwB,SAAW,WACLxB,EAAGyB,iBAIR1B,EAAe2B,OAAOC,SAEtBL,EAAekD,uBAAuBxE,EAAGE,OACpC4C,KAAK,SAAUC,GACZ/C,EAAGgD,QAAUD,EAEb/C,EAAGE,MAAM+C,eAAiBF,EAE1BhD,EAAe2B,OAAOwB,WACtBlD,EAAGU,qBAPXY,SASW,SAAU6B,GACbpD,EAAe2B,OAAOwB,eAIlClD,EAAGyB,aAAe,WACd,MAAKzB,GAAGE,MAAMqC,KAILvC,EAAGE,MAAMsC,SAITxC,EAAGE,MAAMuC,QAITzC,EAAGE,MAAMyC,KAIT3C,EAAGE,MAAM0C,OAKP,GAJPvB,EAAO+B,QAAQ,uBAAwB,yBAChC,IALP/B,EAAO+B,QAAQ,sBAAuB,wBAC/B,IALP/B,EAAO+B,QAAQ,yBAA0B,2BAClC,IALP/B,EAAO+B,QAAQ,0BAA2B,4BACnC,IALP/B,EAAO+B,QAAQ,sBAAuB,wBAC/B,IApCnBmB,EAA4B/E,SAAW,SAAU,SAAU,yBAA0B,yBAA0B,0BAA2B,wBAAyB,SAAU,iBAAkB,kBAT/LX,QACKC,OAAO,kCAAmC,oBAC1CQ,WAAW,8BAA+BiF,MAoEnD,WACI,YAEA1F,SACKC,OAAO,wBAEA,uCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,wBACHC,IAAK,kBACLC,OACIC,KACIC,YAAa,sEACbC,WAAY,+BACZC,aAAc,SAHlCR,EAAaS,SAAW,kBAVxBX,QACKC,OAAO,wBACPW,OAAOV,MAmBhB,WACI,YAOA,SAAS0F,GAA6BtD,EAAQxB,EAAQyB,EAAwBxB,EAAwBC,EAAyBC,EAAuBuB,EAAQqD,EAAc3E,GAqDxK,QAASuD,KACLvD,EAAe2B,OAAOC,SAEtB+C,EAAaC,yBACR7B,KAAK,SAAUU,GACZxD,EAAG4E,iBAAmBpB,EAEtBzD,EAAe2B,OAAOwB,aAJ9BwB,SAMW,SAAUvB,GACbpD,EAAe2B,OAAOwB,aA7DlC,GAAIlD,GAAKC,IACTD,GAAGE,MAAQL,EAAwByE,MAEnCxE,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFW,EAAuBG,aAAc,EAErCvB,EAAG4E,oBAEH5E,EAAGU,iBAAmB,WACbV,EAAGyB,iBAIRzB,EAAGE,MAAMoC,YAActC,EAAGE,MAAM2E,UAAUxC,GAC1CrC,EAAGE,MAAM4E,gBAAmB9E,EAAGE,MAAM6E,sBAAwB,EAAG/E,EAAGE,MAAM4E,gBAEzEnF,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,SAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGyB,aAAe,WACd,MAAKzB,GAAGE,MAAM2E,UAIL7E,EAAGE,MAAM8E,cAAkBhF,EAAGE,MAAM+E,WAAWjF,EAAGE,MAAM+E,SAAW,GAInEjF,EAAGE,MAAM8E,cAAkBhF,EAAGE,MAAMgF,eAAelF,EAAGE,MAAMgF,aAAe,GAI5ElF,EAAGE,MAAM8E,gBAAkBhF,EAAGE,MAAMiF,UAAYnF,EAAGE,MAAMiF,UAAY,IACzE9D,EAAO+B,QAAQ,mDACR,GAEFpD,EAAGE,MAAM6E,uBAA2B/E,EAAGE,MAAM4E,mBAAmB9E,EAAGE,MAAM4E,iBAAmB,IAK1F,GAJPzD,EAAO+B,QAAQ,wCACR,IATP/B,EAAO+B,QAAQ,sDACR,IALP/B,EAAO+B,QAAQ,kDACR,IALP/B,EAAO+B,QAAQ,+BACR,IAoCfE,IA5DJmB,EAA6BjF,SAAW,SAAU,SAAU,yBAA0B,yBAA0B,0BAA2B,wBAAyB,SAAU,eAAgB,kBAX9LX,QACKC,OAAO,mCAAoC,oBAC3CQ,WAAW,+BAAgCmF,MA0EpD,WACI,YAEA5F,SACKC,OAAO,gCAEA,+CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,gCACHC,IAAK,kBACLC,OACIC,KACIC,YAAa,8EACbC,WAAY,sCACZC,aAAc,SADlCR,EAAaS,SAAW,kBAZxBX,QACKC,OAAO,gCACPW,OAAOV,MAmBhB,WACI,YAOA,SAASqG,GAAoCzF,EAAQC,EAAwBC,EAAyBC,EAAuB4E,EAAcrD,EAAQtB,GAqG/I,QAASuD,KACLvD,EAAe2B,OAAOC,SAExB+C,EAAaW,mBACVvC,KAAK,SAAUU,GACdxD,EAAGsF,aAAe9B,EAChBzD,EAAe2B,OAAOwB,aAH5BwB,SAKW,SAAUvB,GACbpD,EAAe2B,OAAOwB,aA5GhC,GAAIlD,GAAKC,IAETD,GAAGsF,gBACHtF,EAAGuF,kBAAoB1F,EAAwB0F,kBAC/CvF,EAAGwF,sBACHxF,EAAGyF,WAAa,KAChBzF,EAAG0F,cACEC,UAAW,mBAAoBC,MAAO,IACtCD,UAAW,mBAAoBC,MAAO,IACtCD,UAAW,mBAAoBC,MAAO,IAE3C5F,EAAG6F,qBACEF,UAAW,iCAAkCC,MAAO,MACpDD,UAAW,8BAA+BC,MAAO,MAGtD5F,EAAG8F,kBAAoB,SAASC,GAC5B/F,EAAGgG,iBAAmBD,GAG1BjG,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFT,EAAGU,iBAAmB,WACbV,EAAGyB,iBAIJzB,EAAGuF,kBAAkBU,WAAWC,QAAUlG,EAAGuF,kBAAkBU,WAAWhB,QAC1EjF,EAAGuF,kBAAkBU,WAAWE,WAAcnG,EAAGyF,YAA+B,KAAjBzF,EAAGyF,WAAoBzF,EAAGuF,kBAAkBU,WAAWhB,QAAUjF,EAAGuF,kBAAkBU,WAAWC,OAGhKlG,EAAGyF,WAAa,KAGpBzF,EAAGuF,kBAAkBU,WAAWG,MAAQpG,EAAGgG,iBAE3CnG,EAAwB0F,kBAAoBvF,EAAGuF,kBAC/C5F,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,SAGxEP,EAAGa,gBAAkB,WACbb,EAAGyF,YAAczF,EAAGuF,kBAAkBU,WAAWC,QAAUlG,EAAGuF,kBAAkBU,WAAWhB,QAC3FjF,EAAGuF,kBAAkBU,WAAWE,WAA+B,KAAjBnG,EAAGyF,WAAoBzF,EAAGuF,kBAAkBU,WAAWC,OAASlG,EAAGuF,kBAAkBU,WAAWhB,QAG9IjF,EAAGyF,WAAa,KAGpBzF,EAAGuF,kBAAkBU,WAAWG,MAAQpG,EAAGgG,iBAE3CnG,EAAwB0F,kBAAoBvF,EAAGuF,kBAC/C5F,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGyB,aAAe,WACd,GAAKzB,EAAGgG,iBAIH,CAAA,GAAIhG,EAAGuF,kBAAkBU,WAAWC,OAIpC,CAAA,GAAIlG,EAAGuF,kBAAkBU,WAAWhB,QAIpC,CAAA,GAAIjF,EAAGuF,kBAAkBU,WAAWI,MAIpC,CAAA,GAAIrG,EAAGyF,YAAuD,GAAzCzF,EAAGuF,kBAAkBU,WAAWI,MAIrD,CAAA,GAAIrG,EAAGuF,kBAAkBU,WAAWK,OAIpC,CAAA,GAAItG,EAAGgG,iBAAiBO,YAAYC,OAAO,EAAE,CAChD,GAAIC,GAAK,EAMT,OALAzG,GAAGgG,iBAAiBO,YAAYG,QAAQ,SAASC,IAC7BC,SAAbD,EAAKZ,OAAkC,KAAbY,EAAKZ,OAA2B,OAAbY,EAAKZ,SACrDU,EAAK,QAGA,OAALA,GACFpF,EAAO+B,QAAQ,oCACR,IAEA,EAIT,OAAO,EAjBL,MADA/B,GAAO+B,QAAQ,wBAAyB,oBACjC,EAJP,MADA/B,GAAO+B,QAAQ,6BAA8B,yBACtC,EAJP,MADA/B,GAAO+B,QAAQ,sCAAuC,mBAC/C,EAJP,MADA/B,GAAO+B,QAAQ,yBAA0B,qBAClC,EAJP,MADA/B,GAAO+B,QAAQ,wBAAyB,oBACjC,EAJP,MADA/B,GAAO+B,QAAQ,2CAA4C,wBACpD,GAsDfE,IA1GJ8B,EAAoC5F,SAAW,SAAU,yBAA0B,0BAA2B,wBAAyB,eAAgB,SAAU,kBAbjKX,QACKC,OAAO,2CAA4C,kBACnDQ,WAAW,sCAAuC8F,MAyH3D,WACI,YAEAvG,SACKC,OAAO,+BAEA,8CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,+BACHC,IAAK,iBACLC,OACIC,KACIC,YAAa,4EACbC,WAAY,qCACZC,aAAc,SAClCR,EAAaS,SAAW,kBAdxBX,QACKC,OAAO,+BACPW,OAAOV,MAmBhB,WACI,YAOA,SAAS8H,GAAmC1F,EAAQxB,EAAQG,EAAuBF,EAAwBC,EAAyBwB,GAEhI,GAAIrB,GAAKC,IACTD,GAAGuF,kBAAoB1F,EAAwB0F,kBAC/CzF,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFT,EAAGU,iBAAmB,YACfV,EAAGuF,kBAAkBuB,qBACrB9G,EAAGuF,kBAAkBwB,uBAA0B/G,EAAGyB,kBAIrD5B,EAAwB0F,kBAAoBvF,EAAGuF,kBAC/C5F,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,SAGxEP,EAAGa,gBAAkB,WACjBhB,EAAwB0F,kBAAoBvF,EAAGuF,kBAC/C5F,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGyB,aAAe,WACd,MAAKzB,GAAGuF,kBAAkByB,WAAWd,OAI5BlG,EAAGuF,kBAAkByB,WAAWC,cAIhCjH,EAAGuF,kBAAkByB,WAAWE,cAIjCC,WAAWnH,EAAGuF,kBAAkByB,WAAWE,eAAeC,WAAWnH,EAAGuF,kBAAkByB,WAAWC,gBACzG5F,EAAO+B,QAAQ,oBAAqB,kCAC7B,IAGA,GARP/B,EAAO+B,QAAQ,oBAAqB,+BAC7B,IALP/B,EAAO+B,QAAQ,oBAAqB,+BAC7B,IALP/B,EAAO+B,QAAQ,oBAAqB,uBAC7B,IAmBfpD,EAAGoH,YAAc,WACTpH,EAAGuF,kBAAkBwB,wBAClBnH,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,OAAOX,EAAuByH,oBACtFrH,EAAGU,mBAGHV,EAAGa,mBAGPb,EAAGuF,kBAAkBuB,oBACvB9G,EAAGU,oBAGTV,EAAGoH,cA/CPP,EAAmCrH,SAAW,SAAU,SAAU,wBAAyB,yBAA0B,0BAA2B,UAfhJX,QACKC,OAAO,6CACPQ,WAAW,qCAAsCuH,MAiE1D,WACI,YAEAhI,SACKC,OAAO,8BAEA,6CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,8BACHC,IAAK,gBACLC,OACIC,KACIC,YAAa,0EACbC,WAAY,oCACZC,aAAc,SAGlCR,EAAaS,SAAW,kBAhBxBX,QACKC,OAAO,8BACPW,OAAOV,MAmBhB,WACI,YAOA,SAASuI,GAAkC3H,EAAQC,EAAwBC,EAAyBC,EAAuBwB,EAAgBD,EAAQtB,GAE/I,GAAIC,GAAKC,IAETD,GAAGuF,kBAAoB1F,EAAwB0F,kBAE/CzF,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QACrF8G,QAAQC,IAAIxH,EAAGuF,kBAAkBuB,oBACjC9G,EAAGU,iBAAmB,WAClBb,EAAwB0F,kBAAoBvF,EAAGuF,kBAC/C5F,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBhB,EAAwB0F,kBAAoBvF,EAAGuF,kBAC/C5F,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGe,SAAW,WACVC,OAAOC,SAGXjB,EAAGyH,uBAAyB,SAASC,GACjC,MAAOA,GAAUC,MAAM,KAAK,IAGhC3H,EAAG4H,0BAA4B,SAAS7B,GACtC,GAAIA,EAAM8B,UAAU,CAChB,GAAIC,GAAW9H,EAAG+H,0BAA0BhC,EAE5C,QAASiC,UAAWF,EAASE,UAAWH,UAAWC,EAASD,WAG5D,IAAK9B,EAAMkC,WACP,OAASD,UAAW,GAAIH,UAAW,EAGvC,IAAIK,GAAiB,EACjBC,EAAiB,EASrB,OAPAtJ,SAAQ6H,QAAQX,EAAMkC,WAAY,SAAUG,EAAQC,GAChD,GAAIP,GAAW9H,EAAG4H,0BAA0BQ,EAE5CD,IAAqC,IAAlBA,EAAuB,MAAQL,EAASE,UAAYF,EAASE,UAChFE,GAAkBJ,EAASD,aAGtBG,UAAWjC,EAAMuC,UAAUX,MAAM,KAAK,GAAK,IAAMO,EAAiB,OAASC,EAAiB,IAAKN,UAAWK,IAI3HlI,EAAG+H,0BAA4B,SAAShC,GACpC,OAASiC,UAAWjC,EAAMuC,UAAY,IAAMvC,EAAM8B,UAAY,KAAMA,UAAW9B,EAAM8B,YAzC7FP,EAAkC9H,SAAW,SAAU,yBAA0B,0BAA2B,wBAAyB,iBAAkB,SAAU,kBAjBjKX,QACKC,OAAO,yCAA0C,kBAAmB,0BACpEQ,WAAW,oCAAqCgI,MA6DzD,WACI,YAEAzI,SACKC,OAAO,8BAEA,6CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,8BACHC,IAAK,gBACLC,OACIC,KACIC,YAAa,0EACbC,WAAY,oCACZC,aAAc,SAKlCR,EAAaS,SAAW,kBAlBxBX,QACKC,OAAO,8BACPW,OAAOV,MAmBhB,WACI,YAOA,SAASwJ,GAAkC5I,EAAQC,EAAwBC,EAAyBC,EAAuBwB,EAAgBD,EAAQtB,GAE/I,GAAIC,GAAKC,IAETD,GAAGwF,sBACHxF,EAAGuF,kBAAoB1F,EAAwB0F,kBAE/CzF,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFT,EAAGU,iBAAmB,WAClBb,EAAwB0F,kBAAoBvF,EAAGuF,kBAC/C5F,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBhB,EAAwB0F,kBAAoBvF,EAAGuF,kBAC/C5F,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGyB,aAAe,WACd,MAAKzB,GAAGuF,kBAAkBiD,YAAYjG,KAI7BvC,EAAGuF,kBAAkBiD,YAAYhG,SAIjCxC,EAAGuF,kBAAkBiD,YAAY/F,QAQjCzC,EAAGuF,kBAAkBiD,YAAY7F,KAIjC3C,EAAGuF,kBAAkBiD,YAAY5F,MAIhC5C,EAAGuF,kBAAkBiD,YAAY5F,MAAM6F,MAAM,MAI5C,GAHTpH,EAAO+B,QAAQ,4BAA6B,yBACrC,IALL/B,EAAO+B,QAAQ,uBAAwB,yBAChC,IALP/B,EAAO+B,QAAQ,sBAAuB,wBAC/B,IATP/B,EAAO+B,QAAQ,yBAA0B,2BAClC,IALP/B,EAAO+B,QAAQ,0BAA2B,4BACnC,IALP/B,EAAO+B,QAAQ,sBAAuB,wBAC/B,IA8BfpD,EAAGwB,SAAW,WAEV,GADF+F,QAAQC,IAAIxH,GACLA,EAAGyB,eAAR,CAIA1B,EAAe2B,OAAOC,QAEtB,IAAIoE,IACA2C,QAAS7J,QAAQ8J,KAAK3I,EAAGuF,kBAAkBU,WAAWG,MAAM/D,IAC5D4F,cAGJpJ,SAAQ6H,QAAQ1G,EAAGuF,kBAAkBU,WAAWG,MAAMG,YAAa,SAAUqC,EAAMC,GAC/E,GAAIC,IACAJ,QAAS7J,QAAQ8J,KAAKC,EAAK7C,MAAM1D,IACjC4F,cAGJpJ,SAAQ6H,QAAQkC,EAAK7C,MAAMQ,YAAa,SAAUwC,EAAOC,GACrD,GAAIC,IACAP,QAAS7J,QAAQ8J,KAAKI,EAAMhD,MAAM1D,IAClCkE,eAGJuC,GAASb,WAAWiB,KAAKrK,QAAQ8J,KAAKM,MAG1ClD,EAAMkC,WAAWiB,KAAKrK,QAAQ8J,KAAKG,KAGvC,IAAIlH,IACAuH,SAAWnJ,EAAGuF,kBAAkB6D,QAAQC,aAAerJ,EAAGuF,kBAAkB6D,QAAQC,aAAahH,GAAK,KACtGiH,aAAetJ,EAAGuF,kBAAkB6D,QAAQG,WAAavJ,EAAGuF,kBAAkB6D,QAAQG,WAAWlH,GAAK,KACtGmH,aAAexJ,EAAGuF,kBAAkB6D,QAAQK,WAAazJ,EAAGuF,kBAAkB6D,QAAQK,WAAWpH,GAAK,KACtGyE,mBAAoB9G,EAAGuF,kBAAkBmE,aACzCC,eAAgB3J,EAAGuF,kBAAkByB,WAAWd,OAChDgB,cAAelH,EAAGuF,kBAAkByB,WAAWE,cAC/CD,cAAejH,EAAGuF,kBAAkByB,WAAWC,cAC/CpF,YAAa7B,EAAGuF,kBAAkBU,WAAWC,OAC7C0D,kBAAmB5J,EAAGuF,kBAAkBwB,sBACxC8C,gBAAiB7J,EAAGuF,kBAAkBU,WAAWE,WACjD2D,gBAAiB9J,EAAGuF,kBAAkBU,WAAWK,OACjDvE,aAAc/B,EAAGuF,kBAAkBU,WAAWhB,QAC9C8E,iBAAkB/J,EAAGuF,kBAAkBU,WAAWI,MAClD9D,KAAMvC,EAAGuF,kBAAkBiD,YAAYjG,KACvCC,SAAUxC,EAAGuF,kBAAkBiD,YAAYhG,SAC3CC,QAASzC,EAAGuF,kBAAkBiD,YAAY/F,QAC1CC,IAAK1C,EAAGuF,kBAAkBiD,YAAY9F,IACtCC,KAAM3C,EAAGuF,kBAAkBiD,YAAY7F,KACvCC,MAAO5C,EAAGuF,kBAAkBiD,YAAY5F,MACxCwD,MAAOL,EAGXzE,GAAe0I,qBAAqBpI,GAC/BkB,KAAK,SAAUC,GACZ/C,EAAGgD,QAAUD,EAEb/C,EAAGuF,kBAAkBtC,gBACjBV,KAAMvC,EAAGuF,kBAAkBiD,YAAYjG,KACvCC,SAAUxC,EAAGuF,kBAAkBiD,YAAYhG,SAC3CC,QAASzC,EAAGuF,kBAAkBiD,YAAY/F,QAC1CC,IAAK1C,EAAGuF,kBAAkBiD,YAAY9F,IACtCC,KAAM3C,EAAGuF,kBAAkBiD,YAAY7F,KACvCC,MAAO5C,EAAGuF,kBAAkBiD,YAAY5F,MACxCqH,OAAQlH,EAASkH,OACjBC,eAAgBnH,EAASmH,eACzBC,gBAAiBpH,EAASoH,gBAC1BT,aAAc3G,EAAS2G,aACvBC,eAAgB5G,EAAS4G,eACzBS,sBAAuBrH,EAASqH,sBAChCC,sBAAuBtH,EAASsH,sBAChCC,OAAQvH,EAASuH,OACjBzI,YAAakB,EAASlB,YACtBE,aAAcgB,EAAShB,aACvBwI,YAAaxH,EAASwH,YACtBC,WAAYzH,EAASyH,YAGzBzK,EAAe2B,OAAOwB,WACtBlD,EAAGU,qBA1BXY,SAiCW,SAAU6B,GACbpD,EAAe2B,OAAOwB,eAIlClD,EAAGyH,uBAAyB,SAASC,GACjC,MAAOA,GAAUC,MAAM,KAAK,IAGhC3H,EAAG4H,0BAA4B,SAAS7B,GACtC,GAAIA,EAAM8B,UAAU,CAChB,GAAIC,GAAW9H,EAAG+H,0BAA0BhC,EAE5C,QAASiC,UAAWF,EAASE,UAAWH,UAAWC,EAASD,WAG5D,IAAK9B,EAAMkC,WACP,OAASD,UAAW,GAAIH,UAAW,EAGvC,IAAIK,GAAiB,EACjBC,EAAiB,EASrB,OAPAtJ,SAAQ6H,QAAQX,EAAMkC,WAAY,SAAUG,EAAQC,GAChD,GAAIP,GAAW9H,EAAG4H,0BAA0BQ,EAE5CD,IAAqC,IAAlBA,EAAuB,MAAQL,EAASE,UAAYF,EAASE,UAChFE,GAAkBJ,EAASD,aAGtBG,UAAWjC,EAAMuC,UAAUX,MAAM,KAAK,GAAK,IAAMO,EAAiB,OAASC,EAAiB,IAAKN,UAAWK,IAI3HlI,EAAG+H,0BAA4B,SAAShC,GACpC,OAASiC,UAAWjC,EAAMuC,UAAY,IAAMvC,EAAM8B,UAAY,KAAMA,UAAW9B,EAAM8B,YAjK7FU,EAAkC/I,SAAW,SAAU,yBAA0B,0BAA2B,wBAAyB,iBAAkB,SAAU,kBAnBjKX,QACKC,OAAO,yCAA0C,kBAAmB,0BACpEQ,WAAW,oCAAqCiJ,MAuLzD,WACI,YAEA1J,SACKC,OAAO,gCAKA,+CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,gCACHC,IAAK,kBACLC,OACIC,KACIC,YAAa,8EACbC,WAAY,sCACZC,aAAc,SAOlCR,EAAaS,SAAW,kBApBxBX,QACKC,OAAO,gCACPW,OAAOV,MAmBhB,WACE,YAOA,SAAS0L,GAAoCtJ,EAAQxB,EAAQ+K,EAAI5K,EAAuBF,EAAwBC,EAAyBwB,EAAQsJ,EAAc5K,GAyG7J,QAASuD,KACPvD,EAAe2B,OAAOC,QAEtB,IAAIiJ,GAAkBD,EAAaE,gBAC/BC,EAAmBH,EAAaI,iBAChCC,EAAsBL,EAAaM,mBAEvCP,GAAGQ,KAAKN,EAAiBE,EAAkBE,IACtClI,KAAK,SAAUqI,GACdP,EAAgB9H,KAAK,SAAUU,GAC7BxD,EAAGoL,cAAgB5H,IAGrBsH,EAAiBhI,KAAK,SAAUU,GAC9BxD,EAAGqL,iBAAmB7H,IAGxBwH,EAAoBlI,KAAK,SAAUU,GACjCxD,EAAGsL,iBAAmB9H,IAGxBzD,EAAe2B,OAAOwB,aAd5BwH,SAgBW,SAAUa,GACfxL,EAAe2B,OAAOwB,aA/H9B,GAAIlD,GAAKC,IACTD,GAAGuF,kBAAoB1F,EAAwB0F,kBAC/CvF,EAAGoL,iBACHpL,EAAGsL,oBACHtL,EAAGqL,oBAEHvL,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFT,EAAGwL,kBAAoB,WACrB,GAAIC,GAAc5M,QAAQgF,QAAQM,KAAKnE,EAAGoL,cAAe,SAAUM,GACjE,MAAOA,GAAOD,cACb,EACH,OAAOA,IAGTzL,EAAG2L,UAAY,WAGb,IAAK,GAFDC,GAAU,mBAAmBjE,MAAM,IACnCkE,EAAQ,IACHC,EAAI,EAAO,EAAJA,EAAOA,IACrBD,GAASD,EAAQG,KAAKC,MAAsB,GAAhBD,KAAKE,UAEnC,OAAOJ,IAGLhM,EAAwB0F,kBAAkB6D,QAAQC,cACpDxK,QAAQgF,QAAQ7D,EAAGoL,eAAetH,KAAK,SAAUoI,EAAIR,GACnDA,EAAOD,YAAcC,EAAO1D,WAAanI,EAAwB0F,kBAAkB6D,QAAQC,eAI/FrJ,EAAGmM,iBAAmB,SAAUC,GAC9B,GAAIX,GAAc5M,QAAQgF,QAAQM,KAAKnE,EAAGoL,cAAe,SAAUM,GACjE,MAAOA,GAAOD,cACb,EACCA,KACFA,EAAYA,aAAc,GAE5BA,EAAc5M,QAAQgF,QAAQM,KAAKnE,EAAGoL,cAAe,SAAUM,GAC7D,MAAOA,GAAOW,MAAQD,EAAYC,IAAMD,EAAYC,IAAMD,EAAYP,SACrE,GACCJ,IACFA,EAAYA,aAAc,IAK9BzL,EAAGU,iBAAmB,WACpB,MAAKV,GAAGyB,eAIHzB,EAAGuF,kBAAkBuB,uBASxBnH,GAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QARhEP,EAAGwL,sBACLxL,EAAGuF,kBAAkB6D,QAAQC,aAAerJ,EAAGwL,qBAEjD3L,EAAwB0F,kBAAoBvF,EAAGuF,sBAE/C5F,GAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAVtE,QAkBFP,EAAGa,gBAAkB,WACnBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGrEP,EAAGyB,aAAe,WAChB,MAAKzB,GAAGuF,kBAAkBuB,mBAsBiBF,SAApC5G,EAAGuF,kBAAkBmE,cAAgE,IAApC1J,EAAGuF,kBAAkBmE,cAAwD,OAApC1J,EAAGuF,kBAAkBmE,cAClHrI,EAAO+B,QAAQ,8BACR,IAEA,EAzBHpD,EAAGuF,kBAAkBwB,sBACnB/G,EAAGwL,oBAIExL,EAAGuF,kBAAkB6D,QAAQK,WAI7BzJ,EAAGuF,kBAAkB6D,QAAQG,YAK7B,GAJPlI,EAAO+B,QAAQ,uCACR,IALP/B,EAAO+B,QAAQ,uCACR,IALP/B,EAAO+B,QAAQ,wBACR,IAeF,GAwCfE,IApHFmH,EAAoCjL,SAAW,SAAU,SAAU,KAAM,wBAAyB,yBAA0B,0BAA2B,SAAU,eAAgB,kBArBjLX,QACKC,OAAO,2CAA4C,kBACnDQ,WAAW,sCAAuCmL,MA4IzD,WACI,YAEA5L,SACKC,OAAO,6BAEA,4CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,6BACHC,IAAK,kBACLC,OACIC,KACIC,YAAa,2EACbC,WAAY,oCACZC,aAAc,SASlCR,EAAaS,SAAW,kBAtBxBX,QACKC,OAAO,6BACPW,OAAOV,MAmBhB,WACI,YAOA,SAASuN,GAAkC3M,EAAQ0B,EAAQzB,EAAwBC,EAAyBC,EAAuBC,EAAgB2E,EAAcpD,GA+D7J,QAASgC,KAELvD,EAAe2B,OAAOC,SAEtB+C,EAAaC,yBACR7B,KAAK,SAAUU,GACZxD,EAAG4E,iBAAmBpB,EAEtBzD,EAAe2B,OAAOwB,aAJ9BwB,SAMW,SAAUvB,GACbpD,EAAe2B,OAAOwB,aAxElC,GAAIlD,GAAKC,IACTD,GAAGE,MAAQL,EAAwB0M,WAEnCzM,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFT,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGwB,SAAW,WACLxB,EAAGyB,iBAIR1B,EAAe2B,OAAOC,SAEtBL,EAAekL,mBAAmBxM,EAAGE,OAChC4C,KAAK,SAAUC,GACZ/C,EAAGgD,QAAUD,EAEb/C,EAAGE,MAAM+C,eAAiBF,EAE1BhD,EAAe2B,OAAOwB,WACtBlD,EAAGU,qBAPXY,SASW,SAAU6B,GACbpD,EAAe2B,OAAOwB,eAIlClD,EAAGyB,aAAe,WACf,MAAKzB,GAAGE,MAAMuM,KAIHzM,EAAGE,MAAMwM,SAIT1M,EAAGE,MAAMyM,QAIT3M,EAAGE,MAAM0M,KAIT5M,EAAGE,MAAM2M,OAKR,GAJPxL,EAAO+B,QAAQ,uBAAwB,yBAChC,IALP/B,EAAO+B,QAAQ,sBAAuB,wBAC/B,IALP/B,EAAO+B,QAAQ,yBAA0B,2BAClC,IALP/B,EAAO+B,QAAQ,0BAA2B,4BACnC,IALP/B,EAAO+B,QAAQ,sBAAuB,wBAC/B,IAqCfE,IA3DJgJ,EAAkC9M,SAAW,SAAU,SAAU,yBAA0B,0BAA2B,wBAAyB,iBAAkB,eAAgB,kBAvBjLX,QACKC,OAAO,wCAAyC,kBAAmB,0BACnEQ,WAAW,oCAAqCgN,MAoFzD,WACI,YAEAzN,SACKC,OAAO,4BAEA,2CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,4BACHC,IAAK,iBACLC,OACIC,KACIC,YAAa,yEACbC,WAAY,mCACZC,aAAc,SAWlCR,EAAaS,SAAW,kBAxBxBX,QACKC,OAAO,4BACPW,OAAOV,MAmBhB,WACE,YAOA,SAAS+N,GAAiCnN,EAAQyB,EAAwBxB,EAAwBC,EAAyBC,EAAuBuB,EAAQtB,EAAgBuB,EAAgBoD,GAkGxL,QAASpB,KAEPvD,EAAe2B,OAAOC,SAEtB+C,EAAaqI,4BAA4B/M,EAAGE,MAAM8M,qBAAsBhN,EAAGE,MAAM+M,YAC9EnK,KAAK,SAAUU,GACdxD,EAAG4E,iBAAmBpB,EAClBxD,EAAGE,MAAMgN,aAAalN,EAAGmN,iBAAgB,GACzCnN,EAAGE,MAAMkN,aAAapN,EAAGqN,iBAE7BtN,EAAe2B,OAAOwB,aAN1BwB,SAQS,WACL3E,EAAe2B,OAAOwB,aA7G5B,GAAIlD,GAAKC,IACTD,GAAGE,MAAQL,EAAwB0M,WACnCvM,EAAG4E,oBACH5E,EAAGsN,oBACHtN,EAAGuN,8BACHzN,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QACrFW,EAAuBG,aAAc,EAErCvB,EAAGU,iBAAmB,WACfV,EAAGyB,gBAIR9B,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGtEP,EAAGa,gBAAkB,WACnBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGrEP,EAAGmN,gBAAkB,SAAUK,GAS7B,MAPKA,KACHxN,EAAGE,MAAMkN,YAAc,KACvBpN,EAAGE,MAAMuN,iBAAmB,KAC5BzN,EAAGE,MAAMwN,YAAc,KACvB1N,EAAGE,MAAMyN,YAAc,MAGM,IAA3B3N,EAAGE,MAAM0N,kBACX5N,GAAGqN,kBAILtN,EAAe2B,OAAOC,SAEO,OAAzB3B,EAAGE,MAAMgN,gBACX7L,GAAO+B,QAAQ,4BAA6B,kBAI9CsB,GAAamJ,gCAAgC7N,EAAGE,MAAM8M,qBAAsBhN,EAAGE,MAAMgN,aAClFpK,KAAK,SAAUC,GACd/C,EAAGsN,iBAAmBvK,EACtBhD,EAAe2B,OAAOwB,aAH1BwB,SAKS,SAAUvB,GACfpD,EAAe2B,OAAOwB,eAI5BlD,EAAGqN,eAAiB,WAElBtN,EAAe2B,OAAOC,SAEtB+C,EAAaoJ,0BAA0B9N,EAAGE,MAAMgN,YAAalN,EAAGE,MAAMkN,aACnEtK,KAAK,SAAUC,GACd/C,EAAGuN,2BAA6BxK,EAChChD,EAAe2B,OAAOwB,aAH1BwB,SAKS,SAAUvB,GACfpD,EAAe2B,OAAOwB,cAI5BlD,EAAGyB,aAAe,WAChB,MAAKzB,GAAGE,MAAMgN,YAIJlN,EAAGE,MAAMkN,aAA0C,IAA3BpN,EAAGE,MAAM0N,cAIjC5N,EAAGE,MAAMuN,iBAITzN,EAAGE,MAAMwN,YAIT1N,EAAGE,MAAMyN,aAA0C,IAA3B3N,EAAGE,MAAM0N,cAIjC5N,EAAGE,MAAM6N,UAKV,GAJP1M,EAAO+B,QAAQ,8BAA+B,iBACvC,IALP/B,EAAO+B,QAAQ,8BAA+B,iBACvC,IALP/B,EAAO+B,QAAQ,iCAAkC,oBAC1C,IALP/B,EAAO+B,QAAQ,wCAAyC,2BACjD,IALP/B,EAAO+B,QAAQ,mCAAoC,sBAC5C,IALP/B,EAAO+B,QAAQ,4BAA6B,eACrC,IA2CXE,IA9FFwJ,EAAiCtN,SAAW,SAAU,yBAA0B,yBAA0B,0BAA2B,wBAAyB,SAAU,iBAAkB,iBAAkB,gBAzB5MX,QACGC,OAAO,uCAAwC,oBAC/CQ,WAAW,mCAAoCwN,MAyHpD,WACI,YAEAjO,SACKC,OAAO,2BAEA,0CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,2BACHC,IAAK,gBACLC,OACIC,KACIC,YAAa,uEACbC,WAAY,kCACZC,aAAc,SAalCR,EAAaS,SAAW,kBA1BxBX,QACKC,OAAO,2BACPW,OAAOV,MAmBhB,WACI,YAOA,SAASiP,GAAgCrO,EAAQC,EAAwBC,EAAyBC,EAAuBC,GAErH,GAAIC,GAAKC,IACTD,GAAGE,MAAQL,EAAwB0M,WAAWtJ,eAC9CjD,EAAGiO,UAAYjO,EAAGE,MAAMiC,cAExBrC,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFT,EAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGe,SAAW,WACVC,OAAOC,SAIf+M,EAAgCxO,SAAW,SAAU,yBAA0B,0BAA2B,wBAAyB,kBA3BnIX,QACKC,OAAO,sCAAuC,kBAAmB,0BACjEQ,WAAW,kCAAmC0O,MA0BvD,WACI,YAEAnP,SACKC,OAAO,6BAEA,4CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,6BACHC,IAAK,kBACLC,OACIC,KACIC,YAAa,2EACbC,WAAY,oCACZC,aAAc,SAelCR,EAAaS,SAAW,kBA5BxBX,QACKC,OAAO,6BACPW,OAAOV,MAmBhB,WACE,YAOA,SAASmP,GAAkCvO,EAAQyB,EAAwBxB,EAAwBC,EAAyBC,EAAuBuB,EAAQC,EAAgBoD,EAAc3E,GA0CvL,QAASuD,KACPvD,EAAe2B,OAAOC,SAEtBL,EAAe6M,8BACZrL,KAAK,SAAUU,GACdxD,EAAGoO,aAAe5K,EAElBzD,EAAe2B,OAAOwB,aAJ1B5B,SAMS,SAAU6B,GACfpD,EAAe2B,OAAOwB,aAlD5B,GAAIlD,GAAKC,IACTD,GAAGE,MAAQL,EAAwB0M,WAEnCzM,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFW,EAAuBG,aAAc,EAErCvB,EAAG4E;AACH5E,EAAGoO,gBACHpO,EAAGqO,kBAAoB,aAAc,kBAErCrO,EAAGU,iBAAmB,WACfV,EAAGyB,gBAIR9B,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGtEP,EAAGa,gBAAkB,WACnBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGrEP,EAAGyB,aAAe,WAChB,MAAKzB,GAAGE,MAAM0N,cAIwB,OAAlC5N,EAAGE,MAAM8M,sBACX3L,EAAO+B,QAAQ,kDAAmD,8BAC3D,GAEmB,OAAxBpD,EAAGE,MAAM+M,YACX5L,EAAO+B,QAAQ,0CAA2C,8BACnD,IAEF,GAXL/B,EAAO+B,QAAQ,wCAAyC,iCACjD,IA0BXE,IAEAtD,EAAGsO,YAAc,SAAUC,GACzB,MAA2B,eAApBA,GAlCXL,EAAkC1O,SAAW,SAAU,yBAA0B,yBAA0B,0BAA2B,wBAAyB,SAAU,iBAAkB,eAAgB,kBA7B3MX,QACGC,OAAO,wCAAyC,oBAChDQ,WAAW,oCAAqC4O,MAmErD,WACI,YAEArP,SACKC,OAAO,4BAKA,2CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,4BACHC,IAAK,iBACLC,OACIC,KACIC,YAAa,yEACbC,WAAY,kCACZC,aAAc,SAiBlCR,EAAaS,SAAW,kBA9BxBX,QACKC,OAAO,4BACPW,OAAOV,MAmBhB,WACI,YAOA,SAASyP,GAAgCrN,EAAQxB,EAAQ8O,EAAO7O,EAAwBC,EAAyBC,EAAuBuB,GAEpI,GAAIrB,GAAKC,IAETH,GAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFT,EAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAc3EiO,EAAgChP,SAAW,SAAU,SAAU,QAAS,yBAA0B,0BAA2B,wBAAyB,UA/BtJX,QACKC,OAAO,0CACPQ,WAAW,kCAAmCkP,MAqBvD,WACI,YAEA3P,SACKC,OAAO,6BAEA,4CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,6BACHC,IAAK,kBACLC,OACIC,KACIC,YAAa,2EACbC,WAAY,mCACZC,aAAc,SAmBlCR,EAAaS,SAAW,kBAhCxBX,QACKC,OAAO,6BACPW,OAAOV,MAmBhB,WACI,YAOA,SAAS2P,GAAiCvN,EAAQxB,EAAQ8O,EAAO7O,EAAwBC,EAAyBC,EAAuBuB,GAErIvB,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,OACrF,IAAIT,GAAKC,IACTD,GAAGE,MAAQL,EAAwB8O,eAEnC3O,EAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAgB3EmO,EAAiClP,SAAW,SAAU,SAAU,QAAS,yBAA0B,0BAA2B,wBAAyB,UAjCvJX,QACKC,OAAO,2CACPQ,WAAW,mCAAoCoP,MAqBxD,WACI,YAEA7P,SACKC,OAAO,0BAEA,yCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,0BACHC,IAAK,kBACLC,OACIC,KACIC,YAAa,wEACbC,WAAY,iCACZC,aAAc,SAqBlCR,EAAaS,SAAW,kBAlCxBX,QACKC,OAAO,0BACPW,OAAOV,MAmBhB,WACI,YAOA,SAAS6P,GAA+BjP,EAAQC,EAAwBC,EAAyBC,EAAuBC,GAEpH,GAAIC,GAAKC,IACTD,GAAGE,MAAQL,EAAwBgP,QAEnC/O,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFT,EAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGe,SAAW,WACVC,OAAOC,SAaf2N,EAA+BpP,SAAW,SAAU,yBAA0B,0BAA2B,wBAAyB,kBAnClIX,QACKC,OAAO,qCAAsC,kBAAmB,0BAChEQ,WAAW,iCAAkCsP,MA6BtD,WACI,YAEA/P,SACKC,OAAO,yBAEA,wCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,yBACHC,IAAK,iBACLC,OACIC,KACIC,YAAa,sEACbC,WAAY,gCACZC,aAAc,SAuBlCR,EAAaS,SAAW,kBApCxBX,QACKC,OAAO,yBACPW,OAAOV,MAmBhB,WACI,YAOA,SAAS+P,GAA8B3N,EAAQxB,EAAQyB,EAAwBxB,EAAwBC,EAAyBC,EAAuBuB,EAAQtB,EAAgBuB,GAE3K,GAAItB,GAAKC,IACTD,GAAGE,MAAQL,EAAwBgP,QAEnC/O,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QACrFW,EAAuBG,aAAc,EAErCvB,EAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGwB,SAAW,WACLxB,EAAGyB,iBAIR1B,EAAe2B,OAAOC,SAEtBL,EAAeyN,yBAAyB/O,EAAGE,OACtC4C,KAAK,SAAUC,GACZ/C,EAAGgD,QAAUD,EAEb/C,EAAGE,MAAM+C,eAAiBF,EAE1BhD,EAAe2B,OAAOwB,WACtBlD,EAAGU,qBAPXY,SASW,SAAU6B,GACbpD,EAAe2B,OAAOwB,eAIlClD,EAAGyB,aAAe,WACd,MAAKzB,GAAGE,MAAMqC,KAILvC,EAAGE,MAAMsC,SAITxC,EAAGE,MAAMuC,QAITzC,EAAGE,MAAMyC,KAIT3C,EAAGE,MAAM0C,OAKP,GAJPvB,EAAO+B,QAAQ,uBAAwB,yBAChC,IALP/B,EAAO+B,QAAQ,sBAAuB,wBAC/B,IALP/B,EAAO+B,QAAQ,yBAA0B,2BAClC,IALP/B,EAAO+B,QAAQ,0BAA2B,4BACnC,IALP/B,EAAO+B,QAAQ,sBAAuB,wBAC/B,IATnB0L,EAA8BtP,SAAW,SAAU,SAAU,yBAA0B,yBAA0B,0BAA2B,wBAAyB,SAAU,iBAAkB,kBArCjMX,QACKC,OAAO,oCAAqC,oBAC5CQ,WAAW,gCAAiCwP,MAqErD,WACI,YAEAjQ,SACKC,OAAO,0BAEA,yCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,0BACHC,IAAK,kBACLC,OACIC,KACIC,YAAa,wEACbC,WAAY,iCACZC,aAAc,SAyBlCR,EAAaS,SAAW,kBAtCxBX,QACKC,OAAO,0BACPW,OAAOV,MAmBhB,WACI,YAOA,SAASiQ,GAA+B7N,EAAQxB,EAAQyB,EAAwBxB,EAAwBC,EAAyBC,EAAuBuB,EAAQC,EAAgBvB,GAgC5K,QAASuD,KACLvD,EAAe2B,OAAOC,SAEtBL,EAAeiC,mCACVT,KAAK,SAAUU,GACZxD,EAAGyD,cAAgBD,EAEhBxD,EAAGE,MAAMkC,WACRpC,EAAG0D,gBAAgB1D,EAAGE,MAAMkC,WAGhCrC,EAAe2B,OAAOwB,aAR9B5B,SAUW,SAAU6B,GACbpD,EAAe2B,OAAOwB,aA5ClC,GAAIlD,GAAKC,IACTD,GAAGE,MAAQL,EAAwBgP,QAEnC/O,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFW,EAAuBG,aAAc,EAErCvB,EAAGU,iBAAmB,WACbV,EAAGyB,gBAIR9B,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGyB,aAAe,WACd,OAAMzB,EAAGE,MAAM+O,QAAUjP,EAAGE,MAAM+O,OAAS,MAAWjP,EAAGE,MAAMgP,SAAWlP,EAAGE,MAAMgP,QAAU,KACzF7N,EAAO+B,QAAQ,6CACR,IAGA,GAqBfE,IAfJ0L,EAA+BxP,SAAW,SAAU,SAAU,yBAA0B,yBAA0B,0BAA2B,wBAAyB,SAAU,iBAAkB,kBAvClMX,QACKC,OAAO,qCAAsC,oBAC7CQ,WAAW,iCAAkC0P,MAyDtD,WACI,YAEAnQ,SACKC,OAAO,sBAEA,qCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,sBACHC,IAAK,kBACLC,OACIC,KACIC,YAAa,oEACbC,WAAY,6BACZC,aAAc,SA2BlCR,EAAaS,SAAW,kBAxCxBX,QACKC,OAAO,sBACPW,OAAOV,MAmBhB,WACI,YAOA,SAASoQ,GAA2BhO,EAAQxB,EAAQ+K,EAAItJ,EAAwBxB,EAAwBC,EAAyBC,EAAuBuB,EAAQtB,EAAgBuB,GAE5K,GAAItB,GAAKC,IACTD,GAAGE,MAAQL,EAAwBuP,IAEnCtP,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QACrFW,EAAuBG,aAAc,EAErCvB,EAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGwB,SAAW,WACLxB,EAAGyB,iBAIR1B,EAAe2B,OAAOC,SAEtBL,EAAe+N,qBAAqBrP,EAAGE,OAClC4C,KAAK,SAAUC,GACZ/C,EAAGgD,QAAUD,EAEb/C,EAAGE,MAAM+C,eAAiBF,EAE1BhD,EAAe2B,OAAOwB,WACtBlD,EAAGU,qBAPXY,SASW,SAAU6B,GACbpD,EAAe2B,OAAOwB,eAIlClD,EAAGyB,aAAe,WACd,MAAKzB,GAAGE,MAAMqC,KAILvC,EAAGE,MAAMsC,SAITxC,EAAGE,MAAMuC,QAITzC,EAAGE,MAAMyC,KAIT3C,EAAGE,MAAM0C,OAKP,GAJPvB,EAAO+B,QAAQ,uBAAwB,yBAChC,IALP/B,EAAO+B,QAAQ,sBAAuB,wBAC/B,IALP/B,EAAO+B,QAAQ,yBAA0B,2BAClC,IALP/B,EAAO+B,QAAQ,0BAA2B,4BACnC,IALP/B,EAAO+B,QAAQ,sBAAuB,wBAC/B,IALnB+L,EAA2B3P,SAAW,SAAU,SAAU,KAAM,yBAA0B,yBAA0B,0BAA2B,wBAAyB,SAAU,iBAAkB,kBAzCpMX,QACKC,OAAO,iCAAkC,kBAAmB,0BAC5DQ,WAAW,6BAA8B6P,MAqElD,WACI,YAEAtQ,SACKC,OAAO,oBAEA,mCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,oBACHC,IAAK,gBACLC,OACIC,KACIC,YAAa,gEACbC,WAAY,2BACZC,aAAc,SA6BlCR,EAAaS,SAAW,kBA1CxBX,QACKC,OAAO,oBACPW,OAAOV,MAmBhB,WACI,YAOA,SAASuQ,GAAyB3P,EAAQC,EAAwBC,EAAyBC,EAAuBC,GAE9G,GAAIC,GAAKC,IACTD,GAAGE,MAAQL,EAAwBuP,IAEnCtP,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFT,EAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGe,SAAW,WACVC,OAAOC,SAqBfqO,EAAyB9P,SAAW,SAAU,yBAA0B,0BAA2B,wBAAyB,kBA3C5HX,QACKC,OAAO,+BAAgC,kBAAmB,0BAC1DQ,WAAW,2BAA4BgQ,MA6BhD,WACI,YAEAzQ,SACKC,OAAO,qBAEA,oCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,qBACHC,IAAK,iBACLC,OACIC,KACIC,YAAa,kEACbC,WAAY,4BACZC,aAAc,SA+BlCR,EAAaS,SAAW,kBA5CxBX,QACKC,OAAO,qBACPW,OAAOV,MAmBhB,WACI,YAOA,SAASwQ,GAA0BpO,EAAQxB,EAAQ+K,EAAItJ,EAAwBxB,EAAwBC,EAAyBC,EAAuBuB,EAAQtB,EAAgB2E,EAAc8K,GAwEzL,QAASlM,KACLvD,EAAe2B,OAAOC,QAEtB,IAAI8N,GAAmB/K,EAAagL,qBAEpChF,GAAGQ,KAAKuE,IACH3M,KAAK,SAAUqI,GACZsE,EACK3M,KAAK,SAAUU,GACZxD,EAAG2P,gBAAkBnM,IAG7BzD,EAAe2B,OAAOwB,aAP9BwH,SASW,SAAUa,GACbxL,EAAe2B,OAAOwB,aArFlC,GAAIlD,GAAKC,IACTD,GAAGE,MAAQL,EAAwBuP,IAEnCtP,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFW,EAAuBG,aAAc,EAErCvB,EAAG2P,mBACH3P,EAAG4E,oBAEH5E,EAAG4P,cAEH5P,EAAG6P,YAAc,WACb,MAAO7P,GAAG4P,WAAWE,UAChB9P,EAAG4P,WAAWX,QAAUjP,EAAG4P,WAAWX,OAAS,GAC/CjP,EAAG4P,WAAWV,SAAWlP,EAAG4P,WAAWV,QAAU,GAG1DlP,EAAG+P,cAAgB,WACf,GAAI/P,EAAG4P,WAAWX,OAAS,GAAKjP,EAAG4P,WAAWV,QAAU,EAEpD,WADA7N,GAAO+B,QAAQ,4LAInB,IAAI4M,GAAOR,EAAOS,MAAMjQ,EAAG4P,WAE3BI,GAAKnL,UAAY7E,EAAGE,MAAMgQ,UAC1BF,EAAKG,cAAgBnQ,EAAGE,MAAMkQ,cAC9BJ,EAAK9J,OAAS8J,EAAKf,OACnBe,EAAK/K,QAAU+K,EAAKd,QACpBc,EAAKK,WAAaL,EAAKF,SAASzN,GAChC2N,EAAKM,qBAAuBN,EAAKG,cAAc9N,GAE1CrC,EAAGE,MAAMqQ,QACVvQ,EAAGE,MAAMqQ,UAEbvQ,EAAGE,MAAMqQ,MAAMrH,KAAK8G,GACpBhQ,EAAG4P,WAAWX,OAAS,KACvBjP,EAAG4P,WAAWV,QAAU,MAG5BlP,EAAGwQ,YAAc,SAAUC,GACvBjB,EAAOkB,OAAO1Q,EAAGE,MAAMqQ,MAAO,SAAUP,GACpC,MAAOA,IAAQS,KAIvBzQ,EAAGU,iBAAmB,WACbV,EAAGyB,gBAIR9B,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGyB,aAAe,WACd,MAAIzB,GAAGE,MAAMqQ,OAAkC,GAAzBvQ,EAAGE,MAAMqQ,MAAM/J,QAK1B,GAJPnF,EAAO+B,QAAQ,+CACR,IAyBfE,IAlDJiM,EAA0B/P,SAAW,SAAU,SAAU,KAAM,yBAA0B,yBAA0B,0BAA2B,wBAAyB,SAAU,iBAAkB,eAAgB,UA7CnNX,QACKC,OAAO,gCAAiC,oBACxCQ,WAAW,4BAA6BiQ,MAiGjD,WACI,YAEA1Q,SACKC,OAAO,sBAEA,qCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,sBACHC,IAAK,kBACLC,OACIC,KACIC,YAAa,oEACbC,WAAY,6BACZC,aAAc,SAiClCR,EAAaS,SAAW,kBA9CxBX,QACKC,OAAO,sBACPW,OAAOV,MAmBhB,WACI,YAOA,SAAS4R,GAA2BxP,EAAQxB,EAAQ+K,EAAItJ,EAAwBxB,EAAwBC,EAAyBC,EAAuBuB,EAAQtB,EAAgB2E,EAAc8K,GAuC1L,QAASlM,KACLvD,EAAe2B,OAAOC,QAEtB,IAAI8N,GAAmB/K,EAAagL,sBAChCkB,EAAoBlM,EAAamM,sBAErCnG,GAAGQ,KAAKuE,EAAkBmB,IACrB9N,KAAK,SAAUqI,GACZsE,EACK3M,KAAK,SAAUU,GACZxD,EAAG2P,gBAAkBnM,IAG7BoN,EACK9N,KAAK,SAAUU,GACZxD,EAAG4E,iBAAmBpB,IAG1BxD,EAAGE,MAAMqQ,OAASvQ,EAAGE,MAAMqQ,MAAM/J,OAAS,IAC1CxG,EAAG4P,WAAW/K,UAAY7E,EAAGE,MAAMqQ,MAAM,GAAG1L,UAC5C7E,EAAG4P,WAAWO,cAAgBnQ,EAAGE,MAAMqQ,MAAM,GAAGJ,eAGpDpQ,EAAe2B,OAAOwB,aAjB9BwH,SAmBW,SAAUa,GACbxL,EAAe2B,OAAOwB,aA/DlC,GAAIlD,GAAKC,IACTD,GAAGE,MAAQL,EAAwBuP,IAEnCtP,EAAsBM,cAAcR,EAAuBS,WAAWV,EAAOW,QAAQC,MAAMzB,QAC3FgB,EAAsBU,QAAQZ,EAAuBS,WAAWV,EAAOW,QAAQC,MAAME,QAErFW,EAAuBG,aAAc,EAErCvB,EAAG2P,mBACH3P,EAAG4E,oBAEH5E,EAAGU,iBAAmB,WACbV,EAAGyB,gBAIR9B,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,QAGxEP,EAAGa,gBAAkB,WACjBlB,EAAOgB,GAAGf,EAAuBkB,mBAAmBnB,EAAOW,QAAQC,QAGvEP,EAAGyB,aAAe,WACd,MAAIzB,GAAGE,MAAMgQ,UAIJlQ,EAAGE,MAAMkQ,eAKP,GAJP/O,EAAO+B,QAAQ,mCACR,IALP/B,EAAO+B,QAAQ,+BACR,IAwCfE,IA1BJqN,EAA2BnR,SAAW,SAAU,SAAU,KAAM,yBAA0B,yBAA0B,0BAA2B,wBAAyB,SAAU,iBAAkB,eAAgB,UA/CpNX,QACKC,OAAO,iCAAkC,oBACzCQ,WAAW,6BAA8BqR,MA4ElD,WACI,YAMA,SAASvP,KAEL,GAAI0P,GAAU7Q,IACd6Q,GAAQvP,aAAc,EAP1B1C,QAAQC,OAAO,+BACVgS,QAAQ,yBAA0B1P,MAc3C,WACI,YAOA,SAAS2P,GAAsC5P,EAAQxB,EAAQ8O,EAAO7O,EAAwBwB,EAAwBC,GAElH,GAAIrB,GAAKC,IAETD,GAAGoB,uBAAyBA,EAE5BpB,EAAGgR,iBACEzQ,KAAK,qBACLA,KAAK,qBAmCdwQ,EAAsCvR,SAAW,SAAU,SAAU,QAAS,yBAA0B,yBAA0B,UAhDlIX,QACKC,OAAO,gDACPQ,WAAW,wCAAyCyR,MAiB7D,WACI,YAEAlS,SACKC,OAAO,8BAEA,6CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,8BACHC,IAAK,gBACLC,OACIC,KACIC,YAAa,4DACbC,WAAY,qCACZC,aAAc,SAoClCR,EAAaS,SAAW,kBAjDxBX,QACKC,OAAO,8BACPW,OAAOV,MAmBhB,WACI,YAOA,SAASkS,GAAmCC,EAAUvR,EAAQC,GAE1D,GAAII,GAAKC,IAETD,GAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,OAGxE,IAAI4Q,GAAW,IACftS,SAAQgF,QAAQ,qBAAqBC,KAAK,SAAUsN,EAAIvN,GACpDqN,EAAS,WACLrS,QAAQgF,QAAQA,GAASwN,SAASC,QAAS,GAAI,MAChDH,GAAY,OAiCvBF,EAAmCzR,SAAW,WAAY,SAAU,0BAlDpEX,QACKC,OAAO,4CACPQ,WAAW,qCAAsC2R,MAqB1D,WACI,YAEApS,SACKC,OAAO,sBAEA,qCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,sBACHC,IAAK,SACLC,OACIC,KACIC,YAAa,oDACbC,WAAY,8BACZC,aAAc,SAsClCR,EAAaS,SAAW,kBAnDxBX,QACKC,OAAO,sBACPW,OAAOV,MAmBhB,WACI,YAOA,SAASwS,GAA4BL,EAAUvR,EAAQC,GAEnD,GAAII,GAAKC,IAETD,GAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,OAGxE,IAAI4Q,GAAW,IACftS,SAAQgF,QAAQ,qBAAqBC,KAAK,SAAUsN,EAAIvN,GACpDqN,EAAS,WACLrS,QAAQgF,QAAQA,GAASwN,SAASC,QAAS,GAAI,MAChDH,GAAY,OAmCvBI,EAA4B/R,SAAW,WAAY,SAAU,0BApD7DX,QACKC,OAAO,oCACPQ,WAAW,8BAA+BiS,MAqBnD,WACI,YAEA1S,SACKC,OAAO,8BAEA,6CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,8BACHC,IAAK,gBACLC,OACIC,KACIC,YAAa,4DACbC,WAAY,qCACZC,aAAc,SAwClCR,EAAaS,SAAW,kBArDxBX,QACKC,OAAO,8BACPW,OAAOV,MAmBhB,WACI,YAOA,SAASyS,GAAmCN,EAAUvR,EAAQC,GAE1D,GAAII,GAAKC,IAETD,GAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,OAGxE,IAAI4Q,GAAW,IACftS,SAAQgF,QAAQ,qBAAqBC,KAAK,SAAUsN,EAAIvN,GACpDqN,EAAS,WACLrS,QAAQgF,QAAQA,GAASwN,SAASC,QAAS,GAAI,MAChDH,GAAY,OAqCvBK,EAAmChS,SAAW,WAAY,SAAU,0BAtDpEX,QACKC,OAAO,4CACPQ,WAAW,qCAAsCkS,MAqB1D,WACI,YAEA3S,SACKC,OAAO,2BAEA,0CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,2BACHC,IAAK,cACLC,OACIC,KACIC,YAAa,yDACbC,WAAY,mCACZC,aAAc,SA0ClCR,EAAaS,SAAW,kBAvDxBX,QACKC,OAAO,2BACPW,OAAOV,MAmBhB,WACI,YAOA,SAAS0S,GAAiCP,EAAUvR,EAAQC,GAExD,GAAII,GAAKC,IAETD,GAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,OAGxE,IAAI4Q,GAAW,IACftS,SAAQgF,QAAQ,qBAAqBC,KAAK,SAAUsN,EAAIvN,GACpDqN,EAAS,WACLrS,QAAQgF,QAAQA,GAASwN,SAASC,QAAS,GAAI,MAChDH,GAAY,OAuCvBM,EAAiCjS,SAAW,WAAY,SAAU,0BAxDlEX,QACKC,OAAO,yCACPQ,WAAW,mCAAoCmS,MAqBxD,WACI,YAEA5S,SACKC,OAAO,2BAEA,0CAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,2BACHC,IAAK,gBACLC,OACIC,KACIC,YAAa,yDACbC,WAAY,kCACZC,aAAc,SA4ClCR,EAAaS,SAAW,kBAzDxBX,QACKC,OAAO,2BACPW,OAAOV,MAmBhB,WACI,YAOA,SAAS2S,GAAgCR,EAAUvR,EAAQC,GAEvD,GAAII,GAAKC,IAETD,GAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,OAGxE,IAAI4Q,GAAW,IACftS,SAAQgF,QAAQ,qBAAqBC,KAAK,SAAUsN,EAAIvN,GACpDqN,EAAS,WACLrS,QAAQgF,QAAQA,GAASwN,SAASC,QAAS,GAAI,MAChDH,GAAY,OAyCvBO,EAAgClS,SAAW,WAAY,SAAU,0BA1DjEX,QACKC,OAAO,yCACPQ,WAAW,kCAAmCoS,MAqBvD,WACI,YAEA7S,SACKC,OAAO,wBAEA,uCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,wBACHC,IAAK,gBACLC,OACIC,KACIC,YAAa,sDACbC,WAAY,gCACZC,aAAc,SA8ClCR,EAAaS,SAAW,kBA3DxBX,QACKC,OAAO,wBACPW,OAAOV,MAmBhB,WACI,YAOA,SAAS4S,GAA8BT,EAAUvR,EAAQC,GAErD,GAAII,GAAKC,IAETD,GAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,OAGxE,IAAI4Q,GAAW,IACftS,SAAQgF,QAAQ,qBAAqBC,KAAK,SAAUsN,EAAIvN,GACpDqN,EAAS,WACLrS,QAAQgF,QAAQA,GAASwN,SAASC,QAAS,GAAI,MAChDH,GAAY,OA2CvBQ,EAA8BnS,SAAW,WAAY,SAAU,0BA5D/DX,QACKC,OAAO,sCACPQ,WAAW,gCAAiCqS,MAqBrD,WACI,YAEA9S,SACKC,OAAO,sBAEA,qCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,sBACHC,IAAK,SACLC,OACIC,KACIC,YAAa,6CACbC,WAAY,kBACZC,aAAc,SAgDlCR,EAAaS,SAAW,kBA7DxBX,QACKC,OAAO,sBACPW,OAAOV,MAmBhB,WACI,YAOA,SAAS6S,GAAgBjS,EAAQC,EAAwBG,EAAgB8R,GAgCrE,QAASvO,KACLvD,EAAe2B,OAAOC,SAEtBkQ,EAAaC,eACRhP,KAAK,SAAUU,GACZxD,EAAG+R,aAAevO,EAClBzD,EAAe2B,OAAOwB,aAH9B2O,SAKW,SAAU1O,GACboE,QAAQC,IAAIrE,GACZpD,EAAe2B,OAAOwB,aAxClC,GAAIlD,GAAKC,IAETD,GAAG+R,gBACH/R,EAAGgS,eAEHhS,EAAGiS,wBAA0B,WACzBpT,QAAQgF,QAAQ,qBAAqBqO,MAAM,SAG/ClS,EAAGmS,YAAc,SAAUC,GACvBpS,EAAGgS,YAAcnT,QAAQ8J,KAAKyJ,GAE9BpS,EAAGiS,2BAGPjS,EAAGqS,gBAAkB,SAASD,GAC1BrS,EAAe2B,OAAOC,SAEtBkQ,EAAaS,eAAeF,GACvBtP,KAAK,SAAUU,GACZ3E,QAAQgF,QAAQ,qBAAqBqO,MAAM,QAC3CnS,EAAe2B,OAAOwB,WACtBI,MAJRuO,SAMW,SAAU1O,GACboE,QAAQC,IAAIrE,GACZpD,EAAe2B,OAAOwB,cAiBlCI,IAYJsO,EAAgBpS,SAAW,SAAU,yBAA0B,iBAAkB,gBA9DjFX,QACKC,OAAO,iCAAkC,wBAAyB,kBAClEQ,WAAW,kBAAmBsS,MAoDvC,WACI,YAEA/S,SACKC,OAAO,oBAEA,mCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,oBACHC,IAAK,gBACLC,OACIC,KACIC,YAAa,kDACbC,WAAY,4BACZC,aAAc,SAkDlCR,EAAaS,SAAW,kBA/DxBX,QACKC,OAAO,oBACPW,OAAOV,MAmBhB,WACI,YAOA,SAASwT,GAA0BrB,EAAUvR,EAAQC,GAEjD,GAAII,GAAKC,IAETD,GAAGU,iBAAmB,WAClBf,EAAOgB,GAAGf,EAAuBgB,oBAAoBjB,EAAOW,QAAQC,OAGxE,IAAI4Q,GAAW,IACftS,SAAQgF,QAAQ,qBAAqBC,KAAK,SAAUsN,EAAIvN,GACpDqN,EAAS,WACLrS,QAAQgF,QAAQA,GAASwN,SAASC,QAAS,GAAI,MAChDH,GAAY,OA+CvBoB,EAA0B/S,SAAW,WAAY,SAAU,0BAhE3DX,QACKC,OAAO,kCACPQ,WAAW,4BAA6BiT,MAqBjD,WACE,YAMA,SAASC,GAAUhD,GAEjB,OACEiD,SAAU,IACVC,SAAS,EACTC,OACEC,YAAa,IACbC,0BAA2B,IAC3BC,cAAe,KAEjBvT,aAAc,aACdF,YAAa,sDACb0T,KAAM,SAAUJ,EAAO9O,EAASmP,GAiC9B,QAASC,GAA4BlN,GAC/B4M,EAAMG,gBACRH,EAAMG,cAAc/M,MAAQA,GAIhC,QAASmN,GAAkCnN,GACrC4M,EAAME,2BACRF,EAAME,0BAA0B9M,GAvCpC4M,EAAMQ,gBAE0B,GAA5BR,EAAMC,YAAYpM,SACpBmM,EAAMQ,aAAaC,SAAWT,EAAMC,YAAY,IAGlDD,EAAM7M,kBAAoB,SAAUC,GAClCA,EAAMQ,cACN,KAAK,GAAI8M,GAAI,EAAGA,GAAKtN,EAAMuN,iBAAkBD,IAC3CtN,EAAMQ,YAAY2C,MAAMqK,GAAIF,EAAGtN,MAAOa,QAExCqM,GAA4BlN,GAC5BmN,EAAkCnN,IAGpC4M,EAAMa,iBAAmB,WACvBb,EAAMc,UAAYd,EAAMc,UAG1Bd,EAAMe,eAAiB,WACrB,MAAOlE,GAAOmE,OAAOhB,EAAMC,YAAa,SAAUgB,GAC9C,MAAwB,IAAjBA,EAAWvR,KACjBmE,OAAS,GAGhBmM,EAAMkB,eAAiB,WACrB,MAAOrE,GAAOmE,OAAOhB,EAAMC,YAAa,SAAUgB,GAC9C,MAAwB,IAAjBA,EAAWvR,KACjBmE,OAAS,KAmBtBgM,EAAUhT,SAAW,UAjErBX,QAAQC,OAAO,2BACZgV,UAAU,YAAatB,MAkE5B,WACI,YAEA3T,SACKC,OAAO,iBAEA,6BACA,8BACA,sCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,iBACHC,IAAK,iBACL6U,YAAU,EACV5U,OACI6U,gBACI3U,YAAa,oDACbC,WAAY,2BACZC,aAAc,SAoDlCR,EAAaS,SAAW,kBAlExBX,QACKC,OAAO,iBACPW,OAAOV,MAgChB,WACI,YAEAF,SACKC,OAAO,SAEA,qBACA,2BAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,SACHC,IAAK,SACL6U,YAAU,EACV5U,OACI6U,gBACI3U,YAAa,oDACbC,WAAY,2BACZC,aAAc,SAqDlCR,EAAaS,SAAW,kBAnExBX,QACKC,OAAO,SACPW,OAAOV,MAoBhB,WACI,YAMA,SAASkV,KAEL,GAAInD,GAAU7Q,IACd6Q,GAAQvP,aAAc,EAP1B1C,QAAQC,OAAO,4BACVgS,QAAQ,sBAAuBmD,MAcxC,WACI,YAOA,SAASC,GAAuB/S,EAAQxB,EAAQ8O,EAAO7O,EAAwByB,GAE3E,GAAIrB,GAAKC,IAETD,GAAGmU,cACE5T,KAAK,kBACLA,KAAK,kBAyDd2T,EAAuB1U,SAAW,SAAU,SAAU,QAAS,yBAA0B,UApEzFX,QACKC,OAAO,+BACPQ,WAAW,yBAA0B4U,MAe9C,WACI,YAEArV,SACKC,OAAO,iBAEA,6BACA,mCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,iBACHC,IAAK,iBACL6U,YAAU,EACV5U,OACI6U,gBACI3U,YAAa,oDACbC,WAAY,2BACZC,aAAc,SAuDlCR,EAAaS,SAAW,kBArExBX,QACKC,OAAO,iBACPW,OAAOV,MAyBhB,WACI,YAEAF,SACKC,OAAO,cAEA,0BACA,gCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,cACHC,IAAK,cACL6U,YAAU,EACV5U,OACI6U,gBACI3U,YAAa,oDACbC,WAAY,2BACZC,aAAc,SAwDlCR,EAAaS,SAAW,kBAtExBX,QACKC,OAAO,cACPW,OAAOV,MAoBhB,WACI,YAEAF,SACKC,OAAO,cAEA,0BACA,gCAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,cACHC,IAAK,cACL6U,YAAU,EACV5U,OACI6U,gBACI3U,YAAa,oDACbC,WAAY,2BACZC,aAAc,SAyDlCR,EAAaS,SAAW,kBAvExBX,QACKC,OAAO,cACPW,OAAOV,MAyBhB,WACI,YAOA,SAASqV,GAAelD,EAAUvR,EAAQC,IAmE1CwU,EAAe5U,SAAW,WAAY,SAAU,0BAxEhDX,QACKC,OAAO,sBACPQ,WAAW,iBAAkB8U,MAwBtC,WACI,YAEAvV,SACKC,OAAO,WAEA,uBACA,6BAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,WACHC,IAAK,WACL6U,YAAU,EACV5U,OACI6U,gBACI3U,YAAa,oDACbC,WAAY,2BACZC,aAAc,SA2DlCR,EAAaS,SAAW,kBAzExBX,QACKC,OAAO,WACPW,OAAOV,MAoBhB,WACI,YAEAF,SACKC,OAAO,gBAEA,0BAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,gBACHC,IAAK,gBACL6U,YAAU,EACV5U,WAgEZJ,EAAaS,SAAW,kBA1ExBX,QACKC,OAAO,gBACPW,OAAOV,MA8BhB,WACI,YAEAF,SACKC,OAAO,OAEA,mBACA,yBAMhB,WACI,YAOA,SAASC,GAAaC,GAClBA,EACKC,MAAM,OACHC,IAAK,OACL6U,YAAU,EACV5U,OACI6U,gBACI3U,YAAa,oDACbC,WAAY,2BACZC,aAAc,SA6DlCR,EAAaS,SAAW,kBA3ExBX,QACKC,OAAO,OACPW,OAAOV,MAoBhB,WACI,YAMA,SAASe,GAAsBF,EAAwByU,GAEnD,GAAIvD,GAAU7Q,IAEd6Q,GAAQwD,UAERxD,EAAQ1Q,cAAgB,SAAUmU,GAC1BzD,EAAQwD,OAAOC,QAAUA,IACzBzD,EAAQwD,OAASzV,QAAQgF,QAAQM,KAAKvE,EAAuB4U,cAAe,SAAUvV,GAClF,MAAOA,GAAMH,QAAUyV,IAE3BzD,EAAQwD,OAAOC,OAASA,IAIhCzD,EAAQtQ,QAAU,SAAUC,GAExB,GAAIwD,GAAcpF,QAAQgF,QAAQM,KAAK2M,EAAQwD,OAAQ,SAAUrV,GAC7D,MAAOA,GAAMgF,cACd,EACCA,KACAA,EAAYA,aAAc,GAG9BA,EAAcpF,QAAQgF,QAAQM,KAAK2M,EAAQwD,OAAQ,SAAUrV,GACzD,MAAOA,GAAMwB,QAAUA,IACxB,GACCwD,IACAA,EAAYA,aAAc,IA4CtCnE,EAAsBN,SAAW,yBAA0B,iBA5E3DX,QAAQC,OAAO,8BACVgS,QAAQ,wBAAyBhR,MA0C1C,WACI,YAOA,SAAS2U,GAAyBtT,EAAQxB,EAAQ8O,EAAO3O,EAAuBuB,GAE5E,GAAIrB,GAAKC,IAETD,GAAGF,sBAAwBA,EAoE/B2U,EAAyBjV,SAAW,SAAU,SAAU,QAAS,wBAAyB,UA7E1FX,QACKC,OAAO,iCACPQ,WAAW,2BAA4BmV,MAYhD,WACI,YAMA,SAAS7U,KAEL,GAAIkR,GAAU7Q,KAEVyU,IAEIzV,MAAO,WACPH,OAAO,OACP6V,eAAgB,iCAGhB1V,MAAO,+BACP0V,eAAgB,8BAChB7V,OAAO,gBACP2B,OAAO,iBACPmU,WAAW,IAGX3V,MAAO,8BACP0V,eAAgB,+BAChB7V,OAAO,gBACP2B,OAAO,gBACPmU,WAAW,IAGX3V,MAAO,+BACP0V,eAAgB,6BAChB7V,OAAO,gBACP2B,OAAO,iBACPmU,WAAW,IAGX3V,MAAO,6BACP0V,eAAgB,6BAChB7V,OAAO,gBACP2B,OAAO,eACPmU,WAAW,IAGX3V,MAAO,6BACP0V,eAAgB,WAChB7V,OAAO,gBACP2B,OAAO,YACPmU,WAAW,IAGX3V,MAAO,WACPH,OAAO,OACP6V,eAAgB,iCAGhB1V,MAAO,+BACP0V,eAAgB,8BAChB7V,OAAO,gBACP2B,OAAO,iBACPmU,WAAW,IAGX3V,MAAO,8BACP0V,eAAgB,+BAChB7V,OAAO,gBACP2B,OAAO,gBACPmU,WAAW,IAGX3V,MAAO,+BACP0V,eAAgB,WAChB7V,OAAO,gBACP2B,OAAO,YACPmU,WAAW,IAGX3V,MAAO,WACPH,OAAO,OACP6V,eAAgB,8BAGhB1V,MAAO,4BACP0V,eAAgB,2BAChB7V,OAAO,aACP2B,OAAO,iBACPmU,WAAW,IAGX3V,MAAO,2BACP0V,eAAgB,WAChB7V,OAAO,aACP2B,OAAO,gBACPmU,WAAW,IAGX3V,MAAO,WACPH,OAAO,OACP6V,eAAgB,uBAGhB1V,MAAO,qBACP0V,eAAgB,oBAChB7V,OAAO,MACP2B,OAAO,iBACPmU,WAAW,IAGX3V,MAAO,oBACP0V,eAAgB,qBAChB7V,OAAO,MACP2B,OAAO,gBACPmU,WAAW,IAGX3V,MAAO,qBACP0V,eAAgB,mBAChB7V,OAAO,MACP2B,OAAO,iBACPmU,WAAW,IAGX3V,MAAO,mBACP0V,eAAgB,WAChB7V,OAAO,MACP2B,OAAO,YACPmU,WAAW,IAGX3V,MAAO,WACPH,OAAO,OACP6V,eAAgB,2BAGhB1V,MAAO,yBACP0V,eAAgB,wBAChB7V,OAAO,UACP2B,OAAO,iBACPmU,WAAW,IAGX3V,MAAO,wBACP0V,eAAgB,yBAChB7V,OAAO,UACP2B,OAAO,gBACPmU,WAAW,IAGX3V,MAAO,yBACP0V,eAAgB,WAChB7V,OAAO,UACP2B,OAAO,YACPmU,WAAW,IAGX3V,MAAO,WACPH,OAAO,OACP6V,eAAgB,yBAGhB1V,MAAO,uBACP0V,eAAgB,sBAChB7V,OAAO,QACP2B,OAAO,iBACPmU,WAAW,IAGX3V,MAAO,sBACP0V,eAAgB,uBAChB7V,OAAO,QACP2B,OAAO,gBACPmU,WAAW,IAGX3V,MAAO,uBACP0V,eAAgB,WAChB7V,OAAO,QACP2B,OAAO,YACPmU,WAAW,IAGX3V,MAAO,WACPH,OAAO,OACP6V,eAAgB,8BAGhB1V,MAAO,4BACP0V,eAAgB,2BAChB7V,OAAO,aACP2B,OAAO,iBACPmU,WAAW,IAGX3V,MAAO,2BACP0V,eAAgB,4BAChB7V,OAAO,aACP2B,OAAO,gBACPmU,WAAW,IAGX3V,MAAO,4BACP0V,eAAgB,0BAChB7V,OAAO,aACP2B,OAAO,iBACPmU,WAAW,IAGX3V,MAAO,0BACP0V,eAAgB,WAChB7V,OAAO,aACP2B,OAAO,YACPmU,WAAW,GAInB9D,GAAQ0D,YAAc,SAAUK,GAC5B,MAAOhW,SAAQ8J,KAAK+L,IAGxB5D,EAAQhQ,mBAAqB,SAAU+T,GACnC,GAAI5V,GAAQJ,QAAQgF,QAAQM,KAAKuQ,EAAc,SAAUzV,GACrD,MAAOA,GAAM0V,gBAAkBE,IAChC,EACH,OAAO5V,GAAMA,OAGjB6R,EAAQlQ,oBAAsB,SAAUiU,GACpC,GAAI5V,GAAQJ,QAAQgF,QAAQM,KAAKuQ,EAAc,SAAUzV,GACrD,MAAOA,GAAMA,OAAS4V,IACvB,EACH,OAAO5V,GAAM0V,gBAGjB7D,EAAQzQ,WAAa,SAAUwU,GAC3B,GAAI5V,GAAQJ,QAAQgF,QAAQM,KAAKuQ,EAAc,SAAUzV,GACrD,MAAOA,GAAMA,OAAS4V,IACvB,EACH,OAAO5V,IAGX6R,EAAQzJ,oBAAsB,GA/OlCxI,QAAQC,OAAO,+BACVgS,QAAQ,yBAA0BlR,MAsP3C,WACI,YAMA,SAASkV,KAEL,GAAIC,KACJA,GAAOC,iBAAmB,WAStB,MARA/U,MAAKyJ,aAAe,GAAIqL,GAAOrL,aAC/BzJ,KAAKgV,UAAY,GAAIF,GAAOE,UAC5BhV,KAAKiV,aAAe,GAAIH,GAAOG,aAC/BjV,KAAKmP,IAAM,GAAI2F,GAAO3F,IACtBnP,KAAK4O,QAAU,GAAIkG,GAAOlG,QAC1B5O,KAAKqE,MAAQ,GAAIyQ,GAAOzQ,MACxBrE,KAAKsM,WAAa,GAAIwI,GAAOxI,WAEtBtM,MAGX8U,EAAOrL,aAAe,WAqDlB,MApDAzJ,MAAKmJ,SACDC,aAAc,KACdE,WAAY,KACZE,WAAY,MAGhBxJ,KAAKgG,YACDC,OAAQ,KACRI,OAAQ,KACRD,MAAO,KACPF,WAAY,KACZlB,QAAS,KACTmB,MAAO,MAGXnG,KAAK+G,YACDd,OAAQ,KACRgB,cAAe,KACfD,cAAe,MAGnBhH,KAAKuI,aACDjG,KAAM,KACNC,SAAU,KACVC,QAAS;AACTC,IAAK,KACLC,KAAM,KACNC,MAAO,MAGX3C,KAAKgD,gBACDV,KAAM,KACNC,SAAU,KACVC,QAAS,KACTC,IAAK,KACLC,KAAM,KACNC,MAAO,KACPqH,OAAQ,KACRC,eAAgB,KAChBC,gBAAiB,KACjBT,aAAc,KACdC,eAAgB,KAChBS,sBAAuB,KACvBC,sBAAuB,KACvBC,OAAQ,KACRzI,YAAa,KACbE,aAAc,KACdwI,YAAa,KACbC,WAAY,MAGhBvK,KAAK8G,uBAAwB,EACtB9G,MAGX8U,EAAOE,UAAY,WAIf,MAHAhV,MAAKkV,kBAAoB,KACzBlV,KAAKmV,kBAAoB,KACzBnV,KAAKoV,MAAQ,KACNpV,MAGX8U,EAAOG,aAAe,WA8BlB,MA7BAjV,MAAKmC,UAAY,KACjBnC,KAAK6B,YAAc,KACnB7B,KAAK+B,aAAe,KACpB/B,KAAKiC,WAAa,KAClBjC,KAAKsC,KAAO,KACZtC,KAAKuC,SAAW,KAChBvC,KAAKwC,QAAU,KACfxC,KAAKyC,IAAM,KACXzC,KAAK0C,KAAO,KACZ1C,KAAK2C,MAAQ,KAEb3C,KAAKgD,gBACDhB,WAAY,KACZJ,YAAa,KACbyT,UAAW,KACX1S,MAAO,KACPH,QAAS,KACT8S,qBAAsB,KACtB7S,IAAK,KACLX,aAAc,KACdQ,KAAM,KACNI,KAAM,KACN6S,WAAY,KACZC,UAAW,KACXjT,SAAU,KACVkT,uBAAwB,KACxBC,WAAY,KACZC,cAAe,MAEZ3V,MAGX8U,EAAO3F,IAAM,WAWT,MAVAnP,MAAKsQ,MAAQ,KACbtQ,KAAKsC,KAAO,KACZtC,KAAKuC,SAAW,KAChBvC,KAAKwC,QAAU,KACfxC,KAAKyC,IAAM,KACXzC,KAAK0C,KAAO,KACZ1C,KAAK2C,MAAQ,KACb3C,KAAKiQ,UAAY,KACjBjQ,KAAKmQ,cAAgB,KAEdnQ,MAGX8U,EAAOlG,QAAU,WAUb,MATA5O,MAAKiG,OAAS,KACdjG,KAAKgF,QAAU,KACfhF,KAAKsC,KAAO,KACZtC,KAAKuC,SAAW,KAChBvC,KAAKwC,QAAU,KACfxC,KAAKyC,IAAM,KACXzC,KAAK0C,KAAO,KACZ1C,KAAK2C,MAAQ,KAEN3C,MAGX8U,EAAOzQ,MAAQ,WAeX,MAdArE,MAAKgF,QAAU,KACfhF,KAAKiF,YAAc,KACnBjF,KAAKkF,SAAW,KAChBlF,KAAK6E,gBAAkB,KACvB7E,KAAK8E,uBAAwB,EAC7B9E,KAAK+E,cAAe,EACpB/E,KAAKqC,YAAc,KACnBrC,KAAKsC,KAAO,KACZtC,KAAKuC,SAAW,KAChBvC,KAAKwC,QAAU,KACfxC,KAAKyC,IAAM,KACXzC,KAAK0C,KAAO,KACZ1C,KAAK2C,MAAQ,KAEN3C,MAGX8U,EAAOxI,WAAa,WAkChB,MAjCAtM,MAAK2N,cAAgB,KACrB3N,KAAK+M,qBAAuB,KAC5B/M,KAAKwM,KAAO,KACZxM,KAAKyM,SAAW,KAChBzM,KAAK0M,QAAU,KACf1M,KAAK4V,IAAM,KACX5V,KAAK2M,KAAO,KACZ3M,KAAK4M,MAAQ,KACb5M,KAAKwN,iBAAmB,KACxBxN,KAAK0N,YAAc,KACnB1N,KAAKyN,YAAc,KACnBzN,KAAK8N,SAAW,KAChB9N,KAAKgN,WAAa,KAClBhN,KAAKiN,YAAc,KACnBjN,KAAK6V,UAAY,KAEjB7V,KAAKgD,gBACDL,MAAO,KACPH,QAAS,KACTC,IAAK,KACLH,KAAM,KACNI,KAAM,KACNH,SAAU,KACVuT,qBAAsB,KACtBC,YAAa,KACbC,SAAU,KACV/F,UAAW,KACXrI,UAAW,KACXqO,eAAgB,KAChBC,YAAa,KACbC,WAAY,KACZjU,cAAe,MAEZlC,KAIX,IAAI6Q,GAAU7Q,IACd6Q,GAAQkE,iBAAmB,WACvB,MAAO,IAAID,GAAOC,kBAxM1BnW,QAAQC,OAAO,oBACVgS,QAAQ,eAAgBgE,MAgNjC,WACI,YAMA,SAAS/U,KAEL,GAAIsW,GAAWpW,KAEXqW,GAAiBzS,QAAS,KAAM0S,SAAU,mBAE1CC,EAAyBC,YAAY,WACjCH,EAAczS,QACd6S,cAAcF,GAGVG,EAAEL,EAAcC,UAAUK,OAAS,IACnCN,EAAczS,QAAU8S,EAAEL,EAAcC,YAGjD,IAEHF,GAAS3U,QACLwB,SAAU,WACNyT,EAAEL,EAAcC,UAAUM,QAAQ,MAEtClV,OAAQ,WACJgV,EAAEL,EAAcC,UAAUO,OAAO,OA1B7CjY,QAAQC,OAAO,sBACVgS,QAAQ,iBAAkB/Q,MA0DnC,WACI,YAMA,SAASF,GAAwBiV,GAE7B,GAAIhE,GAAU7Q,KACVC,EAAQ,GAAI4U,GAAaE,gBAC7BlE,GAAQvL,kBAAoBrF,EAAMwJ,aAClCoH,EAAQnC,eAAiBzO,EAAM+U,UAC/BnE,EAAQ3Q,kBAAoBD,EAAMgV,aAClCpE,EAAQ1B,IAAMlP,EAAMkP,IACpB0B,EAAQjC,QAAU3O,EAAM2O,QACxBiC,EAAQxM,MAAQpE,EAAMoE,MACtBwM,EAAQvE,WAAarM,EAAMqM,WAE3BuE,EAAQiG,aAAe,WACnBjG,EAAQ5Q,MAAQ,GAAI4U,GAAaE,kBA6DzCnV,EAAwBL,SAAW,gBA9EnCX,QAAQC,OAAO,gCACVgS,QAAQ,0BAA2BjR,MAwB5C,WACI,YAMA,SAASmX,GAAQC,GACb,MAAO,UAAUC,EAAOC,EAAUC,GAC9B,MAAKF,GAIED,EAAQ,UAAUC,EAAOC,GAAYC,EAHjC,IAwEnBJ,EAAQxX,SAAW,WA/EnBX,QACKC,OAAO,qBACP6U,OAAO,UAAWqD,MAc3B,WACI,YAMA,SAASK,GAAeJ,GACpB,MAAO,UAAUK,GACb,IAAKA,EACD,MAAO,EAGX,IAAIC,GAAM,GACNC,EAAU,GACVC,EAAS,EAab,OAXqB,KAAjBH,EAAO9Q,QACP+Q,EAAMD,EAAOI,MAAM,EAAE,GACrBF,EAAUF,EAAOI,MAAM,EAAE,GACzBD,EAASH,EAAOI,MAAM,EAAE,MAGxBH,EAAMD,EAAOI,MAAM,EAAE,GACrBF,EAAUF,EAAOI,MAAM,EAAE,GACzBD,EAASH,EAAOI,MAAM,EAAE,KAGrB,IAAMH,EAAM,KAAOC,EAAU,IAAMC,GAuDlDJ,EAAe7X,SAAW,WAhF1BX,QACKC,OAAO,6BACP6U,OAAO,iBAAkB0D,MA6BlC,WACE,YAMA,SAAS3S,GAAa+J,EAAOkJ,GAiB3B,QAAStS,KACP,MAAOoJ,GAAMmJ,IAAID,EAAIE,IAAM,0BACxB/U,KAAK,SAAUgV,GACd,MAAOA,KAIb,QAASC,GAAa7K,GACpB,MAAOuB,GAAMmJ,IAAID,EAAIE,IAAM,6BAA+B3K,GACvDpK,KAAK,SAAUgV,GACd,MAAOA,KAIb,QAASE,GAA2B9K,GAClC,MAAOuB,GAAMmJ,IAAID,EAAIE,IAAM,oCAAsC3K,GAC9DpK,KAAK,SAAUgV,GACd,MAAOA,KAIb,QAASpI,KACP,MAAOjB,GAAMmJ,IAAID,EAAIE,IAAM,6BACxB/U,KAAK,SAAUgV,GACd,MAAOA,KAIb,QAASjH,KACP,MAAOpC,GAAMmJ,IAAID,EAAIE,IAAM,8BACxB/U,KAAK,SAAUgV,GACd,MAAOA,KAIb,QAASnT,KACP,MAAO8J,GAAMmJ,IAAID,EAAIE,IAAM,gCACxB/U,KAAK,SAAUgV,GACd,MAAOA,KAIb,QAAS/K,GAA4BkL,EAAsBhL,GACzD,MAAOwB,GAAMmJ,IAAID,EAAIE,IAAM,2BAA6BI,EAAuB,IAAMhL,GAClFnK,KAAK,SAAUgV,GACd,MAAOA,KAIb,QAASjK,GAAgCoK,EAAsB/K,GAC7D,MAAOuB,GAAMmJ,IAAID,EAAIE,IAAM,0BAA4BI,EAAuB,cAAgB/K,GAC3FpK,KAAK,SAAUgV,GACd,MAAOA,KAIb,QAAShK,GAA0BZ,EAAaE,GAC9C,MAAOqB,GAAMmJ,IAAID,EAAIE,IAAM,0CAA4C3K,EAAc,cAAgBE,GAClGtK,KAAK,SAAUgV,GACd,MAAOA,KA1Eb,GAAII,GAAU,SAAUC,GACtBtZ,QAAQuZ,OAAOnY,KAAMkY,GA6EvB,OA1EAD,GAAQ7S,iBAAmBA,EAC3B6S,EAAQH,aAAeA,EACvBG,EAAQF,2BAA6BA,EACrCE,EAAQxI,oBAAsBA,EAC9BwI,EAAQrH,qBAAuBA,EAC/BqH,EAAQvT,uBAAyBA,EACjCuT,EAAQnL,4BAA8BA,EACtCmL,EAAQrK,gCAAkCA,EAC1CqK,EAAQpK,0BAA4BA,EAkE7BoK,EAHTxT,EAAalF,SAAW,QAAS,OAjFjCX,QAAQC,OAAO,oBACZgS,QAAQ,eAAgBpM,MAwF7B,WACI,YAMA,SAASmN,GAAapD,EAAOkJ,GASzB,QAAS7F,KACL,MAAOrD,GAAMmJ,IAAID,EAAIE,IAAM,uBACtB/U,KAAK,SAAUgV,GACZ,MAAOA,KAInB,QAASxF,GAAe+F,GACpB,MAAO5J,GAAM6J,KAAKX,EAAIE,IAAM,wBAAyBQ,GAChDvV,KAAK,SAAUgV,GACZ,MAAOA,KAjBnB,GAAII,GAAU,SAAUC,GACpBtZ,QAAQuZ,OAAOnY,KAAMkY,GAoBzB,OAjBAD,GAAQpG,aAAeA,EACvBoG,EAAQ5F,eAAiBA,EAgBlB4F,EAuDXrG,EAAarS,SAAW,QAAS,OAlFjCX,QAAQC,OAAO,oBACVgS,QAAQ,eAAgBe,MA+BjC,WACE,YAMA,SAASlH,GAAa8D,EAAOkJ,GAW3B,QAAS9M,KAEP,MAAO4D,GAAMmJ,IAAID,EAAIE,IAAM,uBACxB/U,KAAK,SAAUgV,GACd,MAAOA,KAIb,QAAS/M,KACP,MAAO0D,GAAMmJ,IAAID,EAAIE,IAAM,wBACxB/U,KAAK,SAAUgV,GACd,MAAOA,KAIb,QAAS7M,KACP,MAAOwD,GAAMmJ,IAAID,EAAIE,IAAM,2BACxB/U,KAAK,SAAUgV,GACd,MAAOA,KA3Bb,GAAII,GAAU,SAAUC,GACtBtZ,QAAQuZ,OAAOnY,KAAMkY,GA8BvB,OA3BAD,GAAQrN,cAAgBA,EACxBqN,EAAQnN,eAAiBA,EACzBmN,EAAQjN,kBAAoBA,EAyBrBiN,EA8CTvN,EAAanL,SAAW,QAAS,OAnFjCX,QAAQC,OAAO,oBACZgS,QAAQ,eAAgBnG,MAyC7B,WACE,YAMA,SAASrJ,GAAemN,EAAOkJ,GAe7B,QAAS3N,GAAqBqO,GAC5B,MAAO5J,GAAM6J,KAAKX,EAAIE,IAAM,gCAAiCQ,GAC1DvV,KAAK,SAAUgV,GACd,MAAOA,KAIb,QAASjV,GAAuBwV,GAC9B,MAAO5J,GAAM6J,KAAKX,EAAIE,IAAM,kCAAmCQ,GAC1DvV,KAAK,SAAUgV,GACd,MAAOA,KAIf,QAASvU,KACP,MAAOkL,GAAMmJ,IAAID,EAAIE,IAAM,6CACtB/U,KAAK,SAAUgV,GACd,MAAOA,KAIf,QAASzI,GAAqBgJ,GAC5B,MAAO5J,GAAM6J,KAAKX,EAAIE,IAAM,gCAAiCQ,GACxDvV,KAAK,SAAUgV,GACd,MAAOA,KAIf,QAAS/I,GAAyBsJ,GAChC,MAAO5J,GAAM6J,KAAKX,EAAIE,IAAM,oCAAqCQ,GAC5DvV,KAAK,SAAUgV,GACd,MAAOA,KAIf,QAAStT,GAAuB6T,GAC9B,MAAO5J,GAAM6J,KAAKX,EAAIE,IAAM,kCAAmCQ,GAC1DvV,KAAK,SAAUgV,GACd,MAAOA,KAIf,QAAStL,GAAmB6L,GAC1B,MAAO5J,GAAM6J,KAAKX,EAAIE,IAAM,cAAeQ,GACtCvV,KAAK,SAAUgV,GACd,MAAOA,KAIf,QAAS3J,KACP,MAAOM,GAAMmJ,IAAID,EAAIE,IAAM,6BACtB/U,KAAK,SAAUgV,GACd,MAAOA,KAjEf,GAAII,GAAU,SAAUC,GACtBtZ,QAAQuZ,OAAOnY,KAAMkY,GAqEvB,OAlEAD,GAAQlO,qBAAuBA,EAC/BkO,EAAQrV,uBAAyBA,EACjCqV,EAAQ3U,iCAAmCA,EAC3C2U,EAAQ7I,qBAAuBA,EAC/B6I,EAAQnJ,yBAA2BA,EACnCmJ,EAAQ1T,uBAAyBA,EACjC0T,EAAQ1L,mBAAqBA,EAC7B0L,EAAQ/J,4BAA8BA,EA2D/B+J,EAQT5W,EAAe9B,SAAW,QAAS,OApFnCX,QAAQC,OAAO,sBACZgS,QAAQ,iBAAkBxP,MAgF/B,WACE,YAEAzC,SACGC,OAAO,aACN,YACA,YACA,UACA,aACA,aACA,SACA,WAEA,YACA,eACA,YACA,cACA,oBACA,cACA,SACA,gBACA,qBACA,iBACE,UAEF,SACA,OACA,6BAMN,WACI,YAOA,SAASyZ,GAASC,EAAYC,EAAM7Y,EAAwByB,EAAQtB,GAEhEyY,EAAWE,IAAI,oBAAqB,SAAUC,EAAOC,EAASC,EAAUC,EAAWC,GAC/Ela,QAAQgF,QAAQ,QAAQmV,OAAO3H,SAAS4H,UAAW,GAAI,MAAO,QAAS,gBAK3ET,EAAWE,IAAI,sBAAuB,SAAUC,EAAOC,EAASC,EAAUC,EAAWC,GACjFnZ,EAAuByH,oBAAsByR,EAAUvY,OAG3DiY,EAAWE,IAAI,oBAAqB,SAAUC,EAAOC,EAASC,EAAUC,EAAWC,EAAYG,GAC3F3R,QAAQ2R,MAAMA,KAGlBV,EAAWnX,OAASA,EAEpBtB,EAAe2B,OAAOwB,WA8D1BqV,EAAS/Y,SAAW,aAAc,OAAQ,yBAA0B,SAAU,kBArF9EX,QACKC,OAAO,aACPqa,IAAIZ,MA0Bb,WACI,YAOA,SAASxZ,GAAaC,EAAgBoa,GAClCpa,EACKC,MAAM,OACHC,IAAK,GACL6U,YAAU,EACV5U,WAGHF,MAAM,YACHC,IAAK,IACLC,OACIC,KACIC,YAAa,8BACbC,WAAY,iBACZC,aAAc,SAK9B6Z,EAAmBC,UAAU,KA8DjCta,EAAaS,SAAW,iBAAkB,sBAtF1CX,QACKC,OAAO,aACPW,OAAOV,MA2BhB,WACI,YAMA,SAASua,GAAkBrC,GACvB,MAAO,UAAUC,EAAOqC,GACpB,MAAIrC,GAAQ,EACDD,EAAQ,UAAkB,IAARC,EAAaqC,GAAY,KAG3C,OAInB,QAASC,GAAatC,EAAOuC,EAAWC,GACpC,MAAOxC,GAAMvP,MAAM8R,GAAWC,GAwElCJ,EAAkB9Z,SAAW,WAC7Bga,EAAYha,SAAW,QAAS,YAAa,cAxF7CX,QAAQC,OAAO,4BACV6U,OAAO,cAAe2F,GACtB3F,OAAO,QAAS6F,MAkBzB,WACI,YAEA3a,SACKC,OAAO,aACP6a,SAAS,WAAYC,UACrBD,SAAS,SAAUE,QACnBF,SAAS,OAGP9B,IAAO,8DAKlB,WACE,YAQA,SAASiC,GAAepP,EAAI8N,GAE1B,GAAInX,GAASmX,EAAWnX,OACpB0Y,EAAgBtD,YAAY,WAC1BpV,GACFqV,cAAcqD,GAEhB1Y,EAASmX,EAAWnX,QAGtB,QACE2Y,QAAS,SAAUC,GACjB,MAAOA,IAGTC,aAAc,SAAUD,GACtB,MAAOvP,GAAGyP,OAAOF,IAGnBnC,SAAU,SAAUmC,GAClB,GAAIG,GAAOH,CAYX,OAVIA,GAAI9B,MAAQ8B,EAAI9B,KAAKkC,WACvBxb,QAAQgF,QAAQoW,EAAI9B,KAAKmC,UAAUxW,KAAK,SAAUyW,EAAIC,GACpDnZ,EAAOoZ,QAAQD,EAASP,EAAI9B,KAAKuC,SAIjCT,EAAI9B,MAAQ8B,EAAI9B,KAAKwC,OACvBP,EAAOvb,QAAQ8J,KAAKsR,EAAI9B,KAAKwC,OAGxBP,GAGTQ,cAAe,SAAUX,GACvB,GAAIG,GAAOH,CAYX,OAXIA,GAAI9B,KAAKwC,OACXP,EAAOH,EAAI9B,KAAKwC,MAEdV,EAAI9B,KAAKkC,WACXxb,QAAQgF,QAAQoW,EAAI9B,KAAKmC,UAAUxW,KAAK,SAAUyW,EAAIC,GACpDnZ,EAAO6X,MAAMsB,EAASP,EAAI9B,KAAKuC,SAG/BT,EAAI9B,KAAK0C,OACXtT,QAAQ2R,MAAMe,EAAI9B,KAAK0C,MAAMC,QAASb,EAAI9B,KAAK0C,MAAMC,SAEhDpQ,EAAGyP,OAAOC,KAMvB,QAAS3a,GAAOsb,EAAcC,EAAeC,GAE3CF,EAAaG,cAAa,GAG1BD,EAAaE,WAAY,EACzBF,EAAaG,QAAU,IACvBH,EAAaI,cAAgB,kBAE7BJ,EAAaK,aAAc,EAG3BN,EAAcO,aAAarS,KAAK,kBAiBlC4Q,EAAeta,SAAW,KAAM,cAChCC,EAAOD,SAAW,eAAgB,gBAAiB,gBA1FnDX,QACGC,OAAO,aACPoZ,QAAQ,iBAAkB4B,GAC1Bra,OAAOA,MA0EZ,WACI,YAEAZ,SACKC,OAAO,kCAEA,4CACA,gCAMhB,WACI,YAEAD,SACKC,OAAO,+BAEA,+BACA,8BACA,oCAMhB,WACI,YAEAD,SACKC,OAAO,uBAEA,uBACA,sBACA,4BAMhB,WACI,YAEAD,SACKC,OAAO,+BAEA,+BACA,8BACA,+BACA,6BACA,kCAMhB,WACI,YAEAD,SACKC,OAAO,4BAEA,4BACA,2BACA,4BACA,+BAMhB,WACI,YAEAD,SACKC,OAAO,4BAEA,4BACA,gCAMhB,WACI,YAEAD,SACKC,OAAO,yBAEA,yBACA,wBACA,8BAMhB,WACI,YAEAD,SACKC,OAAO,qBAEA,qBACA,oBACA,qBACA,wBAMhB,WACI,YAEAD,SACKC,OAAO,iBAEA,2BACA,6BAMhB,WACI,YAEAD,SACKC,OAAO,QAED,uBAMf,WACI,YAEAD,SACKC,OAAO,mBAEA,6BACA,+BAMhB,WACI,YAEAD,SACKC,OAAO,kBAEA,2BACA,gBACA,4BACA,uBAMhB,WACI,YAEAD,SACKC,OAAO,iBAEA,iBACA,8BAMhB,WACE,YAEAD,SACGC,OAAO,kBAEJ,gBACA,gBACA,kBACA,qBAMR,WACI,YAEAD,SACKC,OAAO,oBAEA,4BAMhB,WACI,YAEAD,SACKC,OAAO,QAEA,OACA,gBACA,aACA,gBACA,gBACA,kBACA,eACA,MACA,UACA,QACA,kBAMhB,WACI,YAEAD,SACKC,OAAO,UAEA,iBACA,iBACA,mBACA,qBAMhBD,QAAQC,OAAO,aAAaqa,KAAK,iBAAkB,SAASqC,GAAiBA,EAAeC,IAAI,oDAAoD,gWACpJD,EAAeC,IAAI,8BAA8B,y+IACjDD,EAAeC,IAAI,gDAAgD,4ZACnED,EAAeC,IAAI,sDAAsD,49DACzED,EAAeC,IAAI,kDAAkD,ywBACrED,EAAeC,IAAI,6CAA6C,stFAChED,EAAeC,IAAI,sDAAsD,+vBACzED,EAAeC,IAAI,yDAAyD,0xCAC5ED,EAAeC,IAAI,yDAAyD,uwBAC5ED,EAAeC,IAAI,4DAA4D,wqCAC/ED,EAAeC,IAAI,oDAAoD,+wBACvED,EAAeC,IAAI,4DAA4D,++CAC/ED,EAAeC,IAAI,oEAAoE,2aACvFD,EAAeC,IAAI,oEAAoE;AACvFD,EAAeC,IAAI,gEAAgE,09IACnFD,EAAeC,IAAI,oEAAoE,w4HACvFD,EAAeC,IAAI,kEAAkE,y0FACrFD,EAAeC,IAAI,sEAAsE,w4HACzFD,EAAeC,IAAI,wEAAwE,wmKAC3FD,EAAeC,IAAI,wEAAwE,w2BAC3FD,EAAeC,IAAI,2EAA2E,gtDAC9FD,EAAeC,IAAI,yEAAyE,ohIAC5FD,EAAeC,IAAI,2EAA2E,49GAC9FD,EAAeC,IAAI,uEAAuE;AAC1FD,EAAeC,IAAI,2EAA2E,oqDAC9FD,EAAeC,IAAI,yEAAyE,isFAC5FD,EAAeC,IAAI,8EAA8E,yuKACjGD,EAAeC,IAAI,0EAA0E,uuWAC7FD,EAAeC,IAAI,0EAA0E,mvRAC7FD,EAAeC,IAAI,4EAA4E;AAC/FD,EAAeC,IAAI,8EAA8E,o9KACjGD,EAAeC,IAAI,sEAAsE,0rGACzFD,EAAeC,IAAI,oEAAoE,w4HACvFD,EAAeC,IAAI,sEAAsE,y0JACzFD,EAAeC,IAAI,8EAA8E,ynEACjGD,EAAeC,IAAI,8EAA8E,uxOACjGD,EAAeC,IAAI,4EAA4E","file":"scripts/app-310b1cd6c1.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.terceiro.passo',\r\n [\r\n 'visor.piscina.terceiro.passo.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.terceiro.passo')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('visor-piscina.terceiro-passo', {\r\n url: '/terceiro-passo',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/visor-piscina/passo-a-passo/terceiro-passo/terceiro-passo.tpl.html',\r\n controller: 'VisorPiscinaTerceiroPassoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.terceiro.passo.controller', ['calculo.factory', 'cebraceCredito.filter'])\r\n .controller('VisorPiscinaTerceiroPassoController', VisorPiscinaTerceiroPassoController);\r\n\r\n /** @ngInject */\r\n function VisorPiscinaTerceiroPassoController($state, RouteDefinitionService, CalculoEspessuraService, BarraProgressoService, LoadingService) {\r\n\r\n var vm = this;\r\n vm.model = CalculoEspessuraService.VisorPiscinaModel;\r\n\r\n BarraProgressoService.DefinirPassos(RouteDefinitionService.ObterState($state.current.name).module);\r\n BarraProgressoService.IrPasso(RouteDefinitionService.ObterState($state.current.name).titulo);\r\n\r\n vm.irPassoPosterior = function () {\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n vm.irPassoAnterior = function () {\r\n $state.go(RouteDefinitionService.ObterStateAnterior($state.current.name));\r\n };\r\n\r\n vm.imprimir = function () {\r\n window.print();\r\n };\r\n\r\n function init() {\r\n }\r\n //init();\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.segundo.passo',\r\n [\r\n //'dados.apoio',\r\n //'dados.edificacao',\r\n //'dados.vidro'\r\n 'visor.piscina.segundo.passo.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.segundo.passo')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('visor-piscina.segundo-passo', {\r\n url: '/segundo-passo',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/visor-piscina/passo-a-passo/segundo-passo/segundo-passo.tpl.html',\r\n controller: 'VisorPiscinaSegundoPassoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.segundo.passo.controller', ['calculo.factory'])\r\n .controller('VisorPiscinaSegundoPassoController', VisorPiscinaSegundoPassoController);\r\n\r\n /** @ngInject */\r\n function VisorPiscinaSegundoPassoController($scope, $state, SelecaoObjetivoService, RouteDefinitionService, CalculoEspessuraService, BarraProgressoService, toastr, LoadingService, CalculoFactory) {\r\n\r\n var vm = this;\r\n vm.model = CalculoEspessuraService.VisorPiscinaModel;\r\n BarraProgressoService.DefinirPassos(RouteDefinitionService.ObterState($state.current.name).module);\r\n BarraProgressoService.IrPasso(RouteDefinitionService.ObterState($state.current.name).titulo);\r\n SelecaoObjetivoService.podeAlterar = false;\r\n\r\n vm.irPassoPosterior = function () {\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n vm.irPassoAnterior = function () {\r\n $state.go(RouteDefinitionService.ObterStateAnterior($state.current.name));\r\n };\r\n\r\n vm.calcular = function () {\r\n if (!vm.validarDados()){\r\n return;\r\n }\r\n\r\n LoadingService.loader.exibir();\r\n\r\n var modelo = {\r\n AlturaVidro: vm.model.VidroAltura,\r\n LarguraVidro: vm.model.VidroLargura,\r\n AlturaAgua: vm.model.AguaAltura,\r\n TipoCalculoId: vm.model.TipoVisor.Id,\r\n TipoVidroId: 2,\r\n Nome: vm.model.Nome,\r\n Telefone: vm.model.Telefone,\r\n Empresa: vm.model.Empresa,\r\n Fax: vm.model.Fax,\r\n Obra: vm.model.Obra,\r\n Email: vm.model.Email\r\n };\r\n\r\n CalculoFactory.calcularPiscinaAquario(modelo)\r\n .then(function (resposta) {\r\n vm.retorno = resposta;\r\n\r\n vm.model.RelatorioFinal = resposta;\r\n\r\n LoadingService.loader.esconder();\r\n vm.irPassoPosterior();\r\n })\r\n .catch(function (erro) {\r\n LoadingService.loader.esconder();\r\n });\r\n };\r\n\r\n vm.validarDados = function (){\r\n if (!vm.model.Nome) {\r\n toastr.warning('Nome não informado!', 'Nome do Solicitante');\r\n return false;\r\n }\r\n else if(!vm.model.Telefone){\r\n toastr.warning('Telefone não informado!', 'Telefone do Solicitante');\r\n return false;\r\n }\r\n else if(!vm.model.Empresa){\r\n toastr.warning('Empresa não informada!', 'Empresa do Solicitante');\r\n return false;\r\n }\r\n else if(!vm.model.Obra){\r\n toastr.warning('Obra não informada!', 'Obra do Solicitante');\r\n return false;\r\n }\r\n else if(!vm.model.Email){\r\n toastr.warning('Email não informado!', 'Email do Solicitante');\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.primeiro.passo',\r\n [\r\n //'terreno.regiao.eolica',\r\n //'terreno.rugosidade',\r\n //'terreno.topografia'\r\n 'visor.piscina.primeiro.passo.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.primeiro.passo')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('visor-piscina.primeiro-passo', {\r\n url: '/primeiro-passo',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/visor-piscina/passo-a-passo/primeiro-passo/primeiro-passo.tpl.html',\r\n controller: 'VisorPiscinaPrimeiroPassoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.primeiro.passo.controller', ['calculo.factory'])\r\n .controller('VisorPiscinaPrimeiroPassoController', VisorPiscinaPrimeiroPassoController);\r\n\r\n /** @ngInject */\r\n function VisorPiscinaPrimeiroPassoController($scope, $state, SelecaoObjetivoService, RouteDefinitionService, CalculoEspessuraService, BarraProgressoService, toastr, CalculoFactory, LoadingService) {\r\n $scope.fundo4lados = true;\r\n var vm = this;\r\n vm.model = CalculoEspessuraService.VisorPiscinaModel;\r\n\r\n BarraProgressoService.DefinirPassos(RouteDefinitionService.ObterState($state.current.name).module);\r\n BarraProgressoService.IrPasso(RouteDefinitionService.ObterState($state.current.name).titulo);\r\n\r\n SelecaoObjetivoService.podeAlterar = true;\r\n\r\n // vm.sourceVisores = [\r\n // {\r\n // descricaoVidro: 'Fundo apoiado em 4 lados.',\r\n // titulo: 'Visor Aplicado como Fundo.',\r\n // imgSrc: 'assets/images/piscina/pool_tipo_1.JPG',\r\n // imgSrcSelecionado: 'assets/images/piscina/vidro_selecionado_1.jpg'\r\n // },\r\n // {\r\n // descricaoVidro: 'Apoiado em 4 lados s/ coluna de água.',\r\n // titulo: 'Visor Aplicado na Vertical, apoiado em quatro lados sem coluna de água acima do vidro.',\r\n // imgSrc: 'assets/images/piscina/pool_tipo_2.JPG',\r\n // imgSrcSelecionado: 'assets/images/piscina/vidro_selecionado_2.jpg'\r\n // },\r\n // {\r\n // descricaoVidro: 'Apoiado em 4 lados c/ coluna de água.',\r\n // titulo: 'Visor Aplicado na Vertical, apoiado em quatro lados com coluna de água acima do vidro.',\r\n // imgSrc: 'assets/images/piscina/pool_tipo_3.JPG',\r\n // imgSrcSelecionado: 'assets/images/piscina/vidro_selecionado_3.jpg'\r\n // },\r\n // {\r\n // descricaoVidro: 'Apoiado em 3 lados.',\r\n // titulo: 'Visor Aplicado na Vertical, apoiado em três (com a borda superior livre).',\r\n // imgSrc: 'assets/images/piscina/pool_tipo_4.JPG',\r\n // imgSrcSelecionado: 'assets/images/piscina/vidro_selecionado_4.jpg'\r\n // }\r\n // ];\r\n vm.sourceVisores = [];\r\n\r\n vm.selecionarVisor = function (paramVisor) {\r\n if (paramVisor.Id==3){\r\n $scope.fundo4lados = !$scope.fundo4lados;\r\n }else{\r\n $scope.fundo4lados = true;\r\n }\r\n\r\n \r\n angular.element(vm.sourceVisores).each(function (iV, visor) {\r\n visor.selecionado = false;\r\n });\r\n var visorSelecionado = angular.element.grep(vm.sourceVisores, function (visor) {\r\n return visor.Id == paramVisor.Id;\r\n })[0];\r\n\r\n visorSelecionado.selecionado = true;\r\n //paramVisor.selecionado = true;\r\n };\r\n\r\n vm.visorSelecionado = function () {\r\n return angular.element.grep(vm.sourceVisores, function (visor) {\r\n return visor.selecionado;\r\n })[0];\r\n };\r\n\r\n vm.irPassoPosterior = function () {\r\n if (!vm.validarDados()){\r\n return;\r\n }\r\n\r\n vm.model.TipoVisor = vm.visorSelecionado();\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n vm.irPassoAnterior = function () {\r\n $state.go(RouteDefinitionService.ObterStateAnterior($state.current.name));\r\n };\r\n\r\n vm.validarDados = function (){\r\n if (!vm.visorSelecionado()){\r\n toastr.warning(\"Selecione o tipo de visor!\");\r\n return false;\r\n }\r\n else if(!vm.model.VidroAltura || vm.model.VidroAltura <= 0){\r\n toastr.warning(\"Insira um valor válido para altura do vidro!\");\r\n return false;\r\n }\r\n else if(!vm.model.VidroLargura || vm.model.VidroLargura <= 0){\r\n toastr.warning(\"Insira um valor válido para largura do vidro!\");\r\n return false;\r\n }\r\n else if(vm.visorSelecionado().NecessarioAlturaAgua && (!vm.model.AguaAltura || vm.model.AguaAltura <= 0)){\r\n toastr.warning(\"Insira um valor válido para altura da água!\");\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n\r\n function init() {\r\n LoadingService.loader.exibir();\r\n\r\n CalculoFactory.buscarTiposCalculoPiscinaAquario()\r\n .then(function (resultado) {\r\n vm.sourceVisores = resultado;\r\n\r\n if(vm.model.TipoVisor){\r\n vm.selecionarVisor(vm.model.TipoVisor);\r\n }\r\n\r\n LoadingService.loader.esconder();\r\n })\r\n .catch(function (erro) {\r\n LoadingService.loader.esconder();\r\n });\r\n }\r\n init();\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo.terceiro.passo',\r\n [\r\n 'tampo.terceiro.passo.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo.terceiro.passo')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('tampo.terceiro-passo', {\r\n url: '/terceiro-passo',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/tampo/passo-a-passo/terceiro-passo/terceiro-passo.tpl.html',\r\n controller: 'TampoTerceiroPassoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo.terceiro.passo.controller', ['calculo.factory', 'cebraceCredito.filter'])\r\n .controller('TampoTerceiroPassoController', TampoTerceiroPassoController);\r\n\r\n /** @ngInject */\r\n function TampoTerceiroPassoController($state, RouteDefinitionService, CalculoEspessuraService, BarraProgressoService, LoadingService) {\r\n\r\n var vm = this;\r\n vm.model = CalculoEspessuraService.Tampo;\r\n\r\n BarraProgressoService.DefinirPassos(RouteDefinitionService.ObterState($state.current.name).module);\r\n BarraProgressoService.IrPasso(RouteDefinitionService.ObterState($state.current.name).titulo);\r\n\r\n vm.irPassoPosterior = function () {\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n vm.irPassoAnterior = function () {\r\n $state.go(RouteDefinitionService.ObterStateAnterior($state.current.name));\r\n };\r\n\r\n vm.imprimir = function () {\r\n window.print();\r\n };\r\n\r\n function init() {\r\n }\r\n //init();\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo.segundo.passo',\r\n [\r\n 'tampo.segundo.passo.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo.segundo.passo')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('tampo.segundo-passo', {\r\n url: '/segundo-passo',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/tampo/passo-a-passo/segundo-passo/segundo-passo.tpl.html',\r\n controller: 'TampoSegundoPassoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo.segundo.passo.controller', ['calculo.factory'])\r\n .controller('TampoSegundoPassoController', TampoSegundoPassoController);\r\n\r\n /** @ngInject */\r\n function TampoSegundoPassoController($scope, $state, SelecaoObjetivoService, RouteDefinitionService, CalculoEspessuraService, BarraProgressoService, toastr, LoadingService, CalculoFactory) {\r\n\r\n var vm = this;\r\n vm.model = CalculoEspessuraService.Tampo;\r\n BarraProgressoService.DefinirPassos(RouteDefinitionService.ObterState($state.current.name).module);\r\n BarraProgressoService.IrPasso(RouteDefinitionService.ObterState($state.current.name).titulo);\r\n SelecaoObjetivoService.podeAlterar = false;\r\n\r\n vm.irPassoPosterior = function () {\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n vm.irPassoAnterior = function () {\r\n $state.go(RouteDefinitionService.ObterStateAnterior($state.current.name));\r\n };\r\n\r\n vm.calcular = function () {\r\n if (!vm.validarDados()){\r\n return;\r\n }\r\n\r\n LoadingService.loader.exibir();\r\n\r\n CalculoFactory.calcularEspessuraTampo(vm.model)\r\n .then(function (resposta) {\r\n vm.retorno = resposta;\r\n\r\n vm.model.RelatorioFinal = resposta;\r\n\r\n LoadingService.loader.esconder();\r\n vm.irPassoPosterior();\r\n })\r\n .catch(function (erro) {\r\n LoadingService.loader.esconder();\r\n });\r\n };\r\n\r\n vm.validarDados = function (){\r\n if (!vm.model.Nome) {\r\n toastr.warning('Nome não informado!', 'Nome do Solicitante');\r\n return false;\r\n }\r\n else if(!vm.model.Telefone){\r\n toastr.warning('Telefone não informado!', 'Telefone do Solicitante');\r\n return false;\r\n }\r\n else if(!vm.model.Empresa){\r\n toastr.warning('Empresa não informada!', 'Empresa do Solicitante');\r\n return false;\r\n }\r\n else if(!vm.model.Obra){\r\n toastr.warning('Obra não informada!', 'Obra do Solicitante');\r\n return false;\r\n }\r\n else if(!vm.model.Email){\r\n toastr.warning('Email não informado!', 'Email do Solicitante');\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo.primeiro.passo',\r\n [\r\n 'tampo.primeiro.passo.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo.primeiro.passo')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('tampo.primeiro-passo', {\r\n url: '/primeiro-passo',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/tampo/passo-a-passo/primeiro-passo/primeiro-passo.tpl.html',\r\n controller: 'TampoPrimeiroPassoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo.primeiro.passo.controller', ['calculo.factory'])\r\n .controller('TampoPrimeiroPassoController', TampoPrimeiroPassoController);\r\n\r\n /** @ngInject */\r\n function TampoPrimeiroPassoController($scope, $state, SelecaoObjetivoService, RouteDefinitionService, CalculoEspessuraService, BarraProgressoService, toastr, VidroFactory, LoadingService) {\r\n\r\n var vm = this;\r\n vm.model = CalculoEspessuraService.Tampo;\r\n\r\n BarraProgressoService.DefinirPassos(RouteDefinitionService.ObterState($state.current.name).module);\r\n BarraProgressoService.IrPasso(RouteDefinitionService.ObterState($state.current.name).titulo);\r\n\r\n SelecaoObjetivoService.podeAlterar = true;\r\n\r\n vm.sourceTiposVidro = [];\r\n\r\n vm.irPassoPosterior = function () {\r\n if (!vm.validarDados()){\r\n return;\r\n }\r\n\r\n vm.model.TipoVidroId = vm.model.tipoVidro.Id;\r\n vm.model.AlturaAplicacao = (vm.model.SuperficieTodaApoiada ? 0: vm.model.AlturaAplicacao);\r\n\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n vm.irPassoAnterior = function () {\r\n $state.go(RouteDefinitionService.ObterStateAnterior($state.current.name));\r\n };\r\n\r\n vm.validarDados = function (){\r\n if (!vm.model.tipoVidro){\r\n toastr.warning(\"Selecione o tipo de vidro!\");\r\n return false;\r\n }\r\n else if(!vm.model.TampoRedondo && (!vm.model.Largura || vm.model.Largura <= 0)){\r\n toastr.warning(\"Insira um valor válido para largura do vidro!\");\r\n return false;\r\n }\r\n else if(!vm.model.TampoRedondo && (!vm.model.Comprimento || vm.model.Comprimento <= 0)){\r\n toastr.warning(\"Insira um valor válido para comprimento do vidro!\");\r\n return false;\r\n }\r\n else if(vm.model.TampoRedondo && (!vm.model.Diametro || vm.model.Diametro <= 0)){\r\n toastr.warning(\"Insira um valor válido para diametro do vidro!\");\r\n return false;\r\n }\r\n else if(!vm.model.SuperficieTodaApoiada && (!vm.model.AlturaAplicacao || vm.model.AlturaAplicacao <= 0)){\r\n toastr.warning(\"Insira um valor válido para altura!\");\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n\r\n function init() {\r\n LoadingService.loader.exibir();\r\n\r\n VidroFactory.buscarTiposVidrosTampo()\r\n .then(function (resultado) {\r\n vm.sourceTiposVidro = resultado;\r\n\r\n LoadingService.loader.esconder();\r\n })\r\n .catch(function (erro) {\r\n LoadingService.loader.esconder();\r\n });\r\n }\r\n init();\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('pressao.vento.terceiro.passo',\r\n [\r\n 'pressao.vento.terceiro.passo.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('pressao.vento.terceiro.passo')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('pressao-vento.terceiro-passo', {\r\n url: '/terceiro-passo',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/pressao-vento/passo-a-passo/terceiro-passo/terceiro-passo.tpl.html',\r\n controller: 'PressaoVentoTerceiroPassoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('pressao.vento.terceiro.passo.controller', ['vidro.factory'])\r\n .controller('PressaoVentoTerceiroPassoController', PressaoVentoTerceiroPassoController);\r\n\r\n /** @ngInject */\r\n function PressaoVentoTerceiroPassoController($state, RouteDefinitionService, CalculoEspessuraService, BarraProgressoService, VidroFactory, toastr, LoadingService) {\r\n\r\n var vm = this;\r\n\r\n vm.sourceVidros = [];\r\n vm.PressaoVentoModel = CalculoEspessuraService.PressaoVentoModel;\r\n vm.crudRelatorioFinal = {};\r\n vm.bordaLivre = null;\r\n vm.sourceLados = [\r\n {descricao: '4 Lados Apoiados', valor: 4},\r\n {descricao: '3 Lados Apoiados', valor: 3},\r\n {descricao: '2 Lados Apoiados', valor: 2}\r\n ];\r\n vm.sourceBordasLivres = [\r\n {descricao: 'Horizontal (medida da largura)', valor: 'h'},\r\n {descricao: 'Vertical (medida da altura)', valor: 'v'}\r\n ];\r\n\r\n vm.aoSelecionarVidro = function(vidro){\r\n vm.vidroSelecionado = vidro;\r\n }\r\n\r\n BarraProgressoService.DefinirPassos(RouteDefinitionService.ObterState($state.current.name).module);\r\n BarraProgressoService.IrPasso(RouteDefinitionService.ObterState($state.current.name).titulo);\r\n\r\n vm.irPassoPosterior = function () {\r\n if (!vm.validarDados()){\r\n return;\r\n }\r\n\r\n if (vm.PressaoVentoModel.DadosVidro.Altura && vm.PressaoVentoModel.DadosVidro.Largura){\r\n vm.PressaoVentoModel.DadosVidro.BordaLivre = (vm.bordaLivre && vm.bordaLivre == 'h' ? vm.PressaoVentoModel.DadosVidro.Largura : vm.PressaoVentoModel.DadosVidro.Altura);\r\n }\r\n else {\r\n vm.bordaLivre = null;\r\n }\r\n\r\n vm.PressaoVentoModel.DadosVidro.Vidro = vm.vidroSelecionado;\r\n\r\n CalculoEspessuraService.PressaoVentoModel = vm.PressaoVentoModel;\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n vm.irPassoAnterior = function () {\r\n if (vm.bordaLivre && vm.PressaoVentoModel.DadosVidro.Altura && vm.PressaoVentoModel.DadosVidro.Largura){\r\n vm.PressaoVentoModel.DadosVidro.BordaLivre = (vm.bordaLivre == 'h' ? vm.PressaoVentoModel.DadosVidro.Altura : vm.PressaoVentoModel.DadosVidro.Largura);\r\n }\r\n else {\r\n vm.bordaLivre = null;\r\n }\r\n\r\n vm.PressaoVentoModel.DadosVidro.Vidro = vm.vidroSelecionado;\r\n\r\n CalculoEspessuraService.PressaoVentoModel = vm.PressaoVentoModel;\r\n $state.go(RouteDefinitionService.ObterStateAnterior($state.current.name));\r\n };\r\n\r\n vm.validarDados = function (){\r\n if (!vm.vidroSelecionado) {\r\n toastr.warning('Nenhuma composição de vidro selecionada!', 'Composição do Vidro');\r\n return false;\r\n }\r\n else if(!vm.PressaoVentoModel.DadosVidro.Altura){\r\n toastr.warning('Altura não informada!', 'Altura do Vidro');\r\n return false;\r\n }\r\n else if(!vm.PressaoVentoModel.DadosVidro.Largura){\r\n toastr.warning('Largura não informada!', 'Largura do Vidro');\r\n return false;\r\n }\r\n else if(!vm.PressaoVentoModel.DadosVidro.Apoio){\r\n toastr.warning('Quantidade de apoios não informado!', 'Apoio do Vidro');\r\n return false;\r\n }\r\n else if(!vm.bordaLivre && vm.PressaoVentoModel.DadosVidro.Apoio != 4){\r\n toastr.warning('Borda livre não informada!', 'Borda Livre do Vidro');\r\n return false;\r\n }\r\n else if(!vm.PressaoVentoModel.DadosVidro.Angulo){\r\n toastr.warning('Angulo não informado!', 'Angulo do Vidro');\r\n return false;\r\n }\r\n else if (vm.vidroSelecionado.Composicoes.length>0){\r\n var ok = '';\r\n vm.vidroSelecionado.Composicoes.forEach(function(item){\r\n if ((item.vidro===undefined)||(item.vidro==='')||(item.vidro===null)){\r\n ok = 'ok'\r\n }\r\n });\r\n if (ok==='ok'){\r\n toastr.warning('Selecione a composição do vidro');\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n }\r\n else{\r\n return true;\r\n }\r\n };\r\n\r\n function init() {\r\n LoadingService.loader.exibir();\r\n\r\n VidroFactory.buscarTiposVidro()\r\n .then(function (resultado){\r\n vm.sourceVidros = resultado;\r\n LoadingService.loader.esconder();\r\n })\r\n .catch(function (erro) {\r\n LoadingService.loader.esconder();\r\n });\r\n }\r\n\r\n init();\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('pressao.vento.segundo.passo',\r\n [\r\n 'pressao.vento.segundo.passo.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('pressao.vento.segundo.passo')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('pressao-vento.segundo-passo', {\r\n url: '/segundo-passo',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/pressao-vento/passo-a-passo/segundo-passo/segundo-passo.tpl.html',\r\n controller: 'PressaoVentoSegundoPassoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('pressao.vento.segundo.passo.controller', [])\r\n .controller('PressaoVentoSegundoPassoController', PressaoVentoSegundoPassoController);\r\n\r\n /** @ngInject */\r\n function PressaoVentoSegundoPassoController($scope, $state, BarraProgressoService, RouteDefinitionService, CalculoEspessuraService, toastr) {\r\n\r\n var vm = this;\r\n vm.PressaoVentoModel = CalculoEspessuraService.PressaoVentoModel;\r\n BarraProgressoService.DefinirPassos(RouteDefinitionService.ObterState($state.current.name).module);\r\n BarraProgressoService.IrPasso(RouteDefinitionService.ObterState($state.current.name).titulo);\r\n\r\n vm.irPassoPosterior = function () {\r\n if (!vm.PressaoVentoModel.PressaoVentoManual){\r\n if(vm.PressaoVentoModel.AplicacaoVidroExterno && !vm.validarDados()) {\r\n return;\r\n }\r\n }\r\n CalculoEspessuraService.PressaoVentoModel = vm.PressaoVentoModel;\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n vm.irPassoAnterior = function () {\r\n CalculoEspessuraService.PressaoVentoModel = vm.PressaoVentoModel;\r\n $state.go(RouteDefinitionService.ObterStateAnterior($state.current.name));\r\n };\r\n\r\n vm.validarDados = function (){\r\n if (!vm.PressaoVentoModel.Edificacao.Altura) {\r\n toastr.warning('Campo obrigatório', 'Altura do Edifício');\r\n return false;\r\n }\r\n else if(!vm.PressaoVentoModel.Edificacao.MenorDimensao){\r\n toastr.warning('Campo obrigatório', 'Menor Dimensão do Edifício');\r\n return false;\r\n }\r\n else if(!vm.PressaoVentoModel.Edificacao.MaiorDimensao){\r\n toastr.warning('Campo obrigatório', 'Maior Dimensão do Edifício');\r\n return false;\r\n }\r\n else if(parseFloat(vm.PressaoVentoModel.Edificacao.MaiorDimensao) 0) &&\r\n (vm.modeloPeca.largura && vm.modeloPeca.largura > 0);\r\n };\r\n\r\n vm.adicionarPeca = function () {\r\n if (vm.modeloPeca.altura > 2 || vm.modeloPeca.largura > 1){\r\n toastr.warning(\"As dimensões máximas previstas na NBR 14207 são 2 metros de altura por 1 metro de comprimento. Valores acima dessas medidas devem ser recomendados por um responsável técnico habilitado.\");\r\n return;\r\n }\r\n\r\n var peca = lodash.clone(vm.modeloPeca);\r\n\r\n peca.tipoVidro = vm.model.TipoVidro;\r\n peca.tipoAplicacao = vm.model.TipoAplicacao;\r\n peca.Altura = peca.altura;\r\n peca.Largura = peca.largura;\r\n peca.TipoPecaId = peca.tipoPeca.Id;\r\n peca.TipoVidroAplicacaoId = peca.tipoAplicacao.Id;\r\n\r\n if (!vm.model.Pecas)\r\n vm.model.Pecas = [];\r\n\r\n vm.model.Pecas.push(peca);\r\n vm.modeloPeca.altura = null;\r\n vm.modeloPeca.largura = null;\r\n };\r\n\r\n vm.removerPeca = function (pecaRemovida) {\r\n lodash.remove(vm.model.Pecas, function (peca) {\r\n return peca == pecaRemovida;\r\n });\r\n };\r\n\r\n vm.irPassoPosterior = function () {\r\n if (!vm.validarDados()){\r\n return;\r\n }\r\n\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n vm.irPassoAnterior = function () {\r\n $state.go(RouteDefinitionService.ObterStateAnterior($state.current.name));\r\n };\r\n\r\n vm.validarDados = function (){\r\n if(!vm.model.Pecas && vm.model.Pecas.length == 0){\r\n toastr.warning(\"Adicione pelo menos uma peça para cálculo!\");\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n\r\n function init() {\r\n LoadingService.loader.exibir();\r\n\r\n var promessaTipoPeca = VidroFactory.buscarTiposPecasBox();\r\n\r\n $q.all([promessaTipoPeca])\r\n .then(function (resultados) {\r\n promessaTipoPeca\r\n .then(function (resultado) {\r\n vm.sourceTiposPeca = resultado;\r\n });\r\n\r\n LoadingService.loader.esconder();\r\n })\r\n .catch(function (erros) {\r\n LoadingService.loader.esconder();\r\n });\r\n }\r\n init();\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('box.primeiro.passo',\r\n [\r\n 'box.primeiro.passo.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('box.primeiro.passo')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('box.primeiro-passo', {\r\n url: '/primeiro-passo',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/box/passo-a-passo/primeiro-passo/primeiro-passo.tpl.html',\r\n controller: 'BoxPrimeiroPassoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('box.primeiro.passo.controller', ['calculo.factory'])\r\n .controller('BoxPrimeiroPassoController', BoxPrimeiroPassoController);\r\n\r\n /** @ngInject */\r\n function BoxPrimeiroPassoController($scope, $state, $q, SelecaoObjetivoService, RouteDefinitionService, CalculoEspessuraService, BarraProgressoService, toastr, LoadingService, VidroFactory, lodash) {\r\n\r\n var vm = this;\r\n vm.model = CalculoEspessuraService.Box;\r\n\r\n BarraProgressoService.DefinirPassos(RouteDefinitionService.ObterState($state.current.name).module);\r\n BarraProgressoService.IrPasso(RouteDefinitionService.ObterState($state.current.name).titulo);\r\n\r\n SelecaoObjetivoService.podeAlterar = true;\r\n\r\n vm.sourceTiposPeca = [];\r\n vm.sourceTiposVidro = [];\r\n \r\n vm.irPassoPosterior = function () {\r\n if (!vm.validarDados()){\r\n return;\r\n }\r\n\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n vm.irPassoAnterior = function () {\r\n $state.go(RouteDefinitionService.ObterStateAnterior($state.current.name));\r\n };\r\n\r\n vm.validarDados = function (){\r\n if(!vm.model.TipoVidro){\r\n toastr.warning(\"Selecione o tipo do vidro!\");\r\n return false;\r\n }\r\n else if(!vm.model.TipoAplicacao){\r\n toastr.warning(\"Selecione o tipo de aplicação!\");\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n\r\n function init() {\r\n LoadingService.loader.exibir();\r\n\r\n var promessaTipoPeca = VidroFactory.buscarTiposPecasBox();\r\n var promessaTipoVidro = VidroFactory.buscarTiposVidrosBox();\r\n\r\n $q.all([promessaTipoPeca, promessaTipoVidro])\r\n .then(function (resultados) {\r\n promessaTipoPeca\r\n .then(function (resultado) {\r\n vm.sourceTiposPeca = resultado;\r\n });\r\n\r\n promessaTipoVidro\r\n .then(function (resultado) {\r\n vm.sourceTiposVidro = resultado;\r\n });\r\n\r\n if (vm.model.Pecas && vm.model.Pecas.length > 0){\r\n vm.modeloPeca.tipoVidro = vm.model.Pecas[0].tipoVidro;\r\n vm.modeloPeca.tipoAplicacao = vm.model.Pecas[0].tipoAplicacao;\r\n }\r\n\r\n LoadingService.loader.esconder();\r\n })\r\n .catch(function (erros) {\r\n LoadingService.loader.esconder();\r\n });\r\n }\r\n init();\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular.module('selecao-objetivo.service', [])\r\n .service('SelecaoObjetivoService', SelecaoObjetivoService);\r\n\r\n /** @ngInject */\r\n function SelecaoObjetivoService() {\r\n\r\n var service = this;\r\n service.podeAlterar = true;\r\n\r\n\r\n }\r\n\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.selecao.objetivo.controller', [])\r\n .controller('VisorPiscinaSelecaoObjetivoController', VisorPiscinaSelecaoObjetivoController);\r\n\r\n /** @ngInject */\r\n function VisorPiscinaSelecaoObjetivoController($scope, $state, $http, RouteDefinitionService, SelecaoObjetivoService, toastr) {\r\n\r\n var vm = this;\r\n\r\n vm.SelecaoObjetivoService = SelecaoObjetivoService;\r\n\r\n vm.sourceObjetivo = [\r\n {name:'Visor de Piscina'},\r\n {name:'Visor de Aquário'}\r\n ];\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.apresentacao',\r\n [\r\n 'visor.piscina.apresentacao.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.apresentacao')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('visor-piscina.apresentacao', {\r\n url: '/apresentacao',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/visor-piscina/apresentacao/apresentacao.tpl.html',\r\n controller: 'VisorPiscinaApresentacaoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.apresentacao.controller', [])\r\n .controller('VisorPiscinaApresentacaoController', VisorPiscinaApresentacaoController);\r\n\r\n /** @ngInject */\r\n function VisorPiscinaApresentacaoController($timeout, $state, RouteDefinitionService) {\r\n\r\n var vm = this;\r\n\r\n vm.irPassoPosterior = function () {\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n var _counter = -500;\r\n angular.element('.row div.opacity0').each(function (iE, element) {\r\n $timeout(function () {\r\n angular.element(element).animate({opacity: 1}, 1000);\r\n }, _counter += 500);\r\n });\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo.apresentacao',\r\n [\r\n 'tampo.apresentacao.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo.apresentacao')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('tampo.apresentacao', {\r\n url: '/tampo',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/tampo/apresentacao/apresentacao.tpl.html',\r\n controller: 'TampoApresentacaoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo.apresentacao.controller', [])\r\n .controller('TampoApresentacaoController', TampoApresentacaoController);\r\n\r\n /** @ngInject */\r\n function TampoApresentacaoController($timeout, $state, RouteDefinitionService) {\r\n\r\n var vm = this;\r\n\r\n vm.irPassoPosterior = function () {\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n var _counter = -500;\r\n angular.element('.row div.opacity0').each(function (iE, element) {\r\n $timeout(function () {\r\n angular.element(element).animate({opacity: 1}, 1000);\r\n }, _counter += 500);\r\n });\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('pressao.vento.apresentacao',\r\n [\r\n 'pressao.vento.apresentacao.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('pressao.vento.apresentacao')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('pressao-vento.apresentacao', {\r\n url: '/apresentacao',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/pressao-vento/apresentacao/apresentacao.tpl.html',\r\n controller: 'PressaoVentoApresentacaoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('pressao.vento.apresentacao.controller', [])\r\n .controller('PressaoVentoApresentacaoController', PressaoVentoApresentacaoController);\r\n\r\n /** @ngInject */\r\n function PressaoVentoApresentacaoController($timeout, $state, RouteDefinitionService) {\r\n\r\n var vm = this;\r\n \r\n vm.irPassoPosterior = function () {\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n var _counter = -500;\r\n angular.element('.row div.opacity0').each(function (iE, element) {\r\n $timeout(function () {\r\n angular.element(element).animate({opacity: 1}, 1000);\r\n }, _counter += 500);\r\n });\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('prateleira.apresentacao',\r\n [\r\n 'prateleira.apresentacao.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('prateleira.apresentacao')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('prateleira.apresentacao', {\r\n url: '/prateleira',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/prateleira/apresentacao/apresentacao.tpl.html',\r\n controller: 'PrateleiraApresentacaoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('prateleira.apresentacao.controller', [])\r\n .controller('PrateleiraApresentacaoController', PrateleiraApresentacaoController);\r\n\r\n /** @ngInject */\r\n function PrateleiraApresentacaoController($timeout, $state, RouteDefinitionService) {\r\n\r\n var vm = this;\r\n\r\n vm.irPassoPosterior = function () {\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n var _counter = -500;\r\n angular.element('.row div.opacity0').each(function (iE, element) {\r\n $timeout(function () {\r\n angular.element(element).animate({opacity: 1}, 1000);\r\n }, _counter += 500);\r\n });\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('piso.vidro.apresentacao',\r\n [\r\n 'piso.vidro.apresentacao.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('piso.vidro.apresentacao')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('piso-vidro.apresentacao', {\r\n url: '/apresentacao',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/piso-vidro/apresentacao/apresentacao.tpl.html',\r\n controller: 'PisoVidroApresentacaoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('piso.vidro.apresentacao.controller', [])\r\n .controller('PisoVidroApresentacaoController', PisoVidroApresentacaoController);\r\n\r\n /** @ngInject */\r\n function PisoVidroApresentacaoController($timeout, $state, RouteDefinitionService) {\r\n\r\n var vm = this;\r\n\r\n vm.irPassoPosterior = function () {\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n var _counter = -500;\r\n angular.element('.row div.opacity0').each(function (iE, element) {\r\n $timeout(function () {\r\n angular.element(element).animate({opacity: 1}, 1000);\r\n }, _counter += 500);\r\n });\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('espelho.apresentacao',\r\n [\r\n 'espelho.apresentacao.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('espelho.apresentacao')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('espelho.apresentacao', {\r\n url: '/apresentacao',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/espelho/apresentacao/apresentacao.tpl.html',\r\n controller: 'EspelhoApresentacaoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('espelho.apresentacao.controller', [])\r\n .controller('EspelhoApresentacaoController', EspelhoApresentacaoController);\r\n\r\n /** @ngInject */\r\n function EspelhoApresentacaoController($timeout, $state, RouteDefinitionService) {\r\n\r\n var vm = this;\r\n\r\n vm.irPassoPosterior = function () {\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n var _counter = -500;\r\n angular.element('.row div.opacity0').each(function (iE, element) {\r\n $timeout(function () {\r\n angular.element(element).animate({opacity: 1}, 1000);\r\n }, _counter += 500);\r\n });\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('configuracao.regra',\r\n [\r\n 'configuracao.regra.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('configuracao.regra')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('configuracao.regra', {\r\n url: '/regra',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/configuracao/regra/regra.tpl.html',\r\n controller: 'RegraController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('configuracao.regra.controller', ['cebraceCredito.filter', 'regra.factory'])\r\n .controller('RegraController', RegraController);\r\n\r\n /** @ngInject */\r\n function RegraController($state, RouteDefinitionService, LoadingService, RegraFactory) {\r\n\r\n var vm = this;\r\n\r\n vm.sourceRegras = [];\r\n vm.regraEdicao = {};\r\n\r\n vm.mostrarModalEditarRegra = function () {\r\n angular.element('#ModalEditarRegra').modal('show');\r\n };\r\n\r\n vm.editarRegra = function (regra) {\r\n vm.regraEdicao = angular.copy(regra);\r\n\r\n vm.mostrarModalEditarRegra();\r\n };\r\n\r\n vm.confirmarEdicao = function(regra){\r\n LoadingService.loader.exibir();\r\n\r\n RegraFactory.atualizarRegra(regra)\r\n .then(function (resultado) {\r\n angular.element('#ModalEditarRegra').modal('hide');\r\n LoadingService.loader.esconder();\r\n init();\r\n })\r\n .catch(function (erro) {\r\n console.log(erro);\r\n LoadingService.loader.esconder();\r\n });\r\n };\r\n\r\n function init() {\r\n LoadingService.loader.exibir();\r\n\r\n RegraFactory.buscarRegras()\r\n .then(function (resultado) {\r\n vm.sourceRegras = resultado;\r\n LoadingService.loader.esconder();\r\n })\r\n .catch(function (erro) {\r\n console.log(erro);\r\n LoadingService.loader.esconder();\r\n });\r\n }\r\n init();\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('box.apresentacao',\r\n [\r\n 'box.apresentacao.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('box.apresentacao')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('box.apresentacao', {\r\n url: '/apresentacao',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/box/apresentacao/apresentacao.tpl.html',\r\n controller: 'BoxApresentacaoController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('box.apresentacao.controller', [])\r\n .controller('BoxApresentacaoController', BoxApresentacaoController);\r\n\r\n /** @ngInject */\r\n function BoxApresentacaoController($timeout, $state, RouteDefinitionService) {\r\n\r\n var vm = this;\r\n\r\n vm.irPassoPosterior = function () {\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n var _counter = -500;\r\n angular.element('.row div.opacity0').each(function (iE, element) {\r\n $timeout(function () {\r\n angular.element(element).animate({opacity: 1}, 1000);\r\n }, _counter += 500);\r\n });\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular.module('vidro-dctv.directive', [])\r\n .directive('vidroDctv', vidroDctv);\r\n\r\n /** @ngInject */\r\n function vidroDctv(lodash) {\r\n\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n scope: {\r\n composicoes: '=',\r\n aoSelecionarVidroCallback: '=',\r\n composicaoMae: '='\r\n },\r\n controllerAs: 'controller',\r\n templateUrl: 'app/common/directive/vidro-dctv/vidro-dctv.tpl.html',\r\n link: function (scope, element, attrs) {\r\n\r\n scope.selecionados = {}\r\n\r\n if (scope.composicoes.length == 1) {\r\n scope.selecionados.composto = scope.composicoes[0];\r\n }\r\n\r\n scope.aoSelecionarVidro = function (vidro) {\r\n vidro.Composicoes = [];\r\n for (var x = 1; x <= vidro.QuantidadeVidros; x++) {\r\n vidro.Composicoes.push({id: x, vidro: undefined});\r\n }\r\n atribuirVidroAcomposicaoMae(vidro);\r\n dispararCallbackAoSelecionarVidro(vidro);\r\n };\r\n\r\n scope.alternarCollapse = function () {\r\n scope.collapse = !scope.collapse;\r\n };\r\n\r\n scope.existeInsulado = function () {\r\n return lodash.filter(scope.composicoes, function (composicao) {\r\n return composicao.Id == 1;\r\n }).length > 0;\r\n };\r\n\r\n scope.existeLaminado = function () {\r\n return lodash.filter(scope.composicoes, function (composicao) {\r\n return composicao.Id == 2;\r\n }).length > 0;\r\n };\r\n\r\n function atribuirVidroAcomposicaoMae(vidro) {\r\n if (scope.composicaoMae) {\r\n scope.composicaoMae.vidro = vidro;\r\n }\r\n };\r\n\r\n function dispararCallbackAoSelecionarVidro(vidro) {\r\n if (scope.aoSelecionarVidroCallback) {\r\n scope.aoSelecionarVidroCallback(vidro);\r\n }\r\n };\r\n }\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina',\r\n [\r\n 'visor.piscina.apresentacao',\r\n 'visor.piscina.passo.a.passo',\r\n 'visor.piscina.selecao.objetivo'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('visor-piscina', {\r\n url: '/visor-piscina',\r\n abstract: true,\r\n views: {\r\n 'barraProgresso': {\r\n templateUrl: 'app/view/barra-progresso/barra-progresso.tpl.html',\r\n controller: 'BarraProgressoController',\r\n controllerAs: 'vm'\r\n },\r\n /*\r\n 'selecaoObjetivo': {\r\n templateUrl: 'app/view/visor-piscina/selecao-objetivo/selecao-objetivo.tpl.html',\r\n controller: 'VisorPiscinaSelecaoObjetivoController',\r\n controllerAs: 'vm'\r\n },\r\n 'selecaoVidro': {\r\n templateUrl: 'app/view/selecao-vidro/selecao-vidro.tpl.html',\r\n controller: 'SelecaoVidroController',\r\n controllerAs: 'vm'\r\n }\r\n */\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo',\r\n [\r\n 'tampo.apresentacao',\r\n 'tampo.passo.a.passo'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('tampo', {\r\n url: '/tampo',\r\n abstract: true,\r\n views: {\r\n 'barraProgresso': {\r\n templateUrl: 'app/view/barra-progresso/barra-progresso.tpl.html',\r\n controller: 'BarraProgressoController',\r\n controllerAs: 'vm'\r\n },\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular.module('selecao.vidro.service', [])\r\n .service('SelecaoVidroService', SelecaoVidroService);\r\n\r\n /** @ngInject */\r\n function SelecaoVidroService() {\r\n\r\n var service = this;\r\n service.podeAlterar = true;\r\n\r\n\r\n }\r\n\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('selecao.vidro.controller', [])\r\n .controller('SelecaoVidroController', SelecaoVidroController);\r\n\r\n /** @ngInject */\r\n function SelecaoVidroController($scope, $state, $http, RouteDefinitionService, toastr) {\r\n\r\n var vm = this;\r\n\r\n vm.sourceVidro = [\r\n {name:'Vidro Interno'},\r\n {name:'Vidro Externo'}\r\n ];\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('pressao.vento',\r\n [\r\n 'pressao.vento.apresentacao',\r\n 'pressao.vento.passo.a.passo'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('pressao.vento')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('pressao-vento', {\r\n url: '/pressao-vento',\r\n abstract: true,\r\n views: {\r\n 'barraProgresso': {\r\n templateUrl: 'app/view/barra-progresso/barra-progresso.tpl.html',\r\n controller: 'BarraProgressoController',\r\n controllerAs: 'vm'\r\n },\r\n /*'selecaoVidro': {\r\n templateUrl: 'app/view/selecao-vidro/selecao-vidro.tpl.html',\r\n controller: 'SelecaoVidroController',\r\n controllerAs: 'vm'\r\n }*/\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('prateleira',\r\n [\r\n 'prateleira.apresentacao',\r\n 'prateleira.passo.a.passo'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('prateleira')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('prateleira', {\r\n url: '/prateleira',\r\n abstract: true,\r\n views: {\r\n 'barraProgresso': {\r\n templateUrl: 'app/view/barra-progresso/barra-progresso.tpl.html',\r\n controller: 'BarraProgressoController',\r\n controllerAs: 'vm'\r\n },\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('piso.vidro',\r\n [\r\n 'piso.vidro.apresentacao',\r\n 'piso.vidro.passo.a.passo'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('piso.vidro')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('piso-vidro', {\r\n url: '/piso-vidro',\r\n abstract: true,\r\n views: {\r\n 'barraProgresso': {\r\n templateUrl: 'app/view/barra-progresso/barra-progresso.tpl.html',\r\n controller: 'BarraProgressoController',\r\n controllerAs: 'vm'\r\n },\r\n /*'selecaoVidro': {\r\n templateUrl: 'app/view/selecao-vidro/selecao-vidro.tpl.html',\r\n controller: 'SelecaoVidroController',\r\n controllerAs: 'vm'\r\n }*/\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('main.controller', [])\r\n .controller('MainController', MainController);\r\n\r\n /** @ngInject */\r\n function MainController($timeout, $state, RouteDefinitionService) {\r\n\r\n var vm = this;\r\n\r\n /*$state.go('pressao-vento');\r\n\r\n vm.irPassoPosterior = function () {\r\n $state.go(RouteDefinitionService.ObterStatePosterior($state.current.name));\r\n };\r\n\r\n var _counter = -500;\r\n angular.element('.row div.opacity0').each(function (iE, element) {\r\n $timeout(function () {\r\n angular.element(element).animate({opacity: 1}, 1000);\r\n }, _counter += 500);\r\n });*/\r\n\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('espelho',\r\n [\r\n 'espelho.apresentacao',\r\n 'espelho.passo.a.passo'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('espelho')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('espelho', {\r\n url: '/espelho',\r\n abstract: true,\r\n views: {\r\n 'barraProgresso': {\r\n templateUrl: 'app/view/barra-progresso/barra-progresso.tpl.html',\r\n controller: 'BarraProgressoController',\r\n controllerAs: 'vm'\r\n },\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('configuracao',\r\n [\r\n 'configuracao.regra'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('configuracao')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('configuracao', {\r\n url: '/configuracao',\r\n abstract: true,\r\n views: {\r\n /*'barraProgresso': {\r\n templateUrl: 'app/view/barra-progresso/barra-progresso.tpl.html',\r\n controller: 'BarraProgressoController',\r\n controllerAs: 'vm'\r\n },\r\n 'selecaoObjetivo': {\r\n templateUrl: 'app/view/visor-piscina/selecao-objetivo/selecao-objetivo.tpl.html',\r\n controller: 'VisorPiscinaSelecaoObjetivoController',\r\n controllerAs: 'vm'\r\n },\r\n 'selecaoVidro': {\r\n templateUrl: 'app/view/selecao-vidro/selecao-vidro.tpl.html',\r\n controller: 'SelecaoVidroController',\r\n controllerAs: 'vm'\r\n }*/\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('box',\r\n [\r\n 'box.apresentacao',\r\n 'box.passo.a.passo'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('box')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider) {\r\n $stateProvider\r\n .state('box', {\r\n url: '/box',\r\n abstract: true,\r\n views: {\r\n 'barraProgresso': {\r\n templateUrl: 'app/view/barra-progresso/barra-progresso.tpl.html',\r\n controller: 'BarraProgressoController',\r\n controllerAs: 'vm'\r\n },\r\n }\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular.module('barra.progresso.service', [])\r\n .service('BarraProgressoService', BarraProgressoService);\r\n\r\n /** @ngInject */\r\n function BarraProgressoService(RouteDefinitionService, WizardHandler) {\r\n\r\n var service = this;\r\n\r\n service.passos = [];\r\n\r\n service.DefinirPassos = function (modulo) {\r\n if (service.passos.modulo != modulo) {\r\n service.passos = angular.element.grep(RouteDefinitionService.ObterStates(), function (state) {\r\n return state.module == modulo;\r\n });\r\n service.passos.modulo = modulo\r\n }\r\n };\r\n\r\n service.IrPasso = function (titulo) {\r\n\r\n var selecionado = angular.element.grep(service.passos, function (state) {\r\n return state.selecionado;\r\n })[0];\r\n if (selecionado) {\r\n selecionado.selecionado = false;\r\n }\r\n\r\n selecionado = angular.element.grep(service.passos, function (state) {\r\n return state.titulo == titulo;\r\n })[0];\r\n if (selecionado) {\r\n selecionado.selecionado = true;\r\n }\r\n\r\n };\r\n\r\n\r\n }\r\n\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('barra.progresso.controller', [])\r\n .controller('BarraProgressoController', BarraProgressoController);\r\n\r\n /** @ngInject */\r\n function BarraProgressoController($scope, $state, $http, BarraProgressoService, toastr) {\r\n\r\n var vm = this;\r\n\r\n vm.BarraProgressoService = BarraProgressoService;\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular.module('route-definition.service', [])\r\n .service('RouteDefinitionService', RouteDefinitionService);\r\n\r\n /** @ngInject */\r\n function RouteDefinitionService() {\r\n\r\n var service = this;\r\n\r\n var sourceRoutes = [\r\n {\r\n state: 'app.home',\r\n module:'home',\r\n statePosterior: 'pressao-vento.primeiro-passo',\r\n },\r\n {\r\n state: 'pressao-vento.primeiro-passo',\r\n statePosterior: 'pressao-vento.segundo-passo',\r\n module:'pressao-vento',\r\n titulo:'Primeiro Passo',\r\n ordemPasso:0\r\n },\r\n {\r\n state: 'pressao-vento.segundo-passo',\r\n statePosterior: 'pressao-vento.terceiro-passo',\r\n module:'pressao-vento',\r\n titulo:'Segundo Passo',\r\n ordemPasso:1\r\n },\r\n {\r\n state: 'pressao-vento.terceiro-passo',\r\n statePosterior: 'pressao-vento.quarto-passo',\r\n module:'pressao-vento',\r\n titulo:'Terceiro Passo',\r\n ordemPasso:2\r\n },\r\n {\r\n state: 'pressao-vento.quarto-passo',\r\n statePosterior: 'pressao-vento.quinto-passo',\r\n module:'pressao-vento',\r\n titulo:'Quarto Passo',\r\n ordemPasso:3\r\n },\r\n {\r\n state: 'pressao-vento.quinto-passo',\r\n statePosterior: 'app.home',\r\n module:'pressao-vento',\r\n titulo:'Relatório',\r\n ordemPasso:4\r\n },\r\n {\r\n state: 'app.home',\r\n module:'home',\r\n statePosterior: 'visor-piscina.primeiro-passo',\r\n },\r\n {\r\n state: 'visor-piscina.primeiro-passo',\r\n statePosterior: 'visor-piscina.segundo-passo',\r\n module:'visor-piscina',\r\n titulo:'Primeiro Passo',\r\n ordemPasso:0\r\n },\r\n {\r\n state: 'visor-piscina.segundo-passo',\r\n statePosterior: 'visor-piscina.terceiro-passo',\r\n module:'visor-piscina',\r\n titulo:'Segundo Passo',\r\n ordemPasso:1\r\n },\r\n {\r\n state: 'visor-piscina.terceiro-passo',\r\n statePosterior: 'app.home',\r\n module:'visor-piscina',\r\n titulo:'Relatório',\r\n ordemPasso:2\r\n },\r\n {\r\n state: 'app.home',\r\n module:'home',\r\n statePosterior: 'piso-vidro.primeiro-passo',\r\n },\r\n {\r\n state: 'piso-vidro.primeiro-passo',\r\n statePosterior: 'piso-vidro.segundo-passo',\r\n module:'piso-vidro',\r\n titulo:'Primeiro Passo',\r\n ordemPasso:0\r\n },\r\n {\r\n state: 'piso-vidro.segundo-passo',\r\n statePosterior: 'app.home',\r\n module:'piso-vidro',\r\n titulo:'Segundo Passo',\r\n ordemPasso:1\r\n },\r\n {\r\n state: 'app.home',\r\n module:'home',\r\n statePosterior: 'box.primeiro-passo',\r\n },\r\n {\r\n state: 'box.primeiro-passo',\r\n statePosterior: 'box.segundo-passo',\r\n module:'box',\r\n titulo:'Primeiro Passo',\r\n ordemPasso:0\r\n },\r\n {\r\n state: 'box.segundo-passo',\r\n statePosterior: 'box.terceiro-passo',\r\n module:'box',\r\n titulo:'Segundo Passo',\r\n ordemPasso:1\r\n },\r\n {\r\n state: 'box.terceiro-passo',\r\n statePosterior: 'box.quarto-passo',\r\n module:'box',\r\n titulo:'Terceiro Passo',\r\n ordemPasso:2\r\n },\r\n {\r\n state: 'box.quarto-passo',\r\n statePosterior: 'app.home',\r\n module:'box',\r\n titulo:'Relatório',\r\n ordemPasso:2\r\n },\r\n {\r\n state: 'app.home',\r\n module:'home',\r\n statePosterior: 'espelho.primeiro-passo',\r\n },\r\n {\r\n state: 'espelho.primeiro-passo',\r\n statePosterior: 'espelho.segundo-passo',\r\n module:'espelho',\r\n titulo:'Primeiro Passo',\r\n ordemPasso:0\r\n },\r\n {\r\n state: 'espelho.segundo-passo',\r\n statePosterior: 'espelho.terceiro-passo',\r\n module:'espelho',\r\n titulo:'Segundo Passo',\r\n ordemPasso:1\r\n },\r\n {\r\n state: 'espelho.terceiro-passo',\r\n statePosterior: 'app.home',\r\n module:'espelho',\r\n titulo:'Relatório',\r\n ordemPasso:2\r\n },\r\n {\r\n state: 'app.home',\r\n module:'home',\r\n statePosterior: 'tampo.primeiro-passo',\r\n },\r\n {\r\n state: 'tampo.primeiro-passo',\r\n statePosterior: 'tampo.segundo-passo',\r\n module:'tampo',\r\n titulo:'Primeiro Passo',\r\n ordemPasso:0\r\n },\r\n {\r\n state: 'tampo.segundo-passo',\r\n statePosterior: 'tampo.terceiro-passo',\r\n module:'tampo',\r\n titulo:'Segundo Passo',\r\n ordemPasso:1\r\n },\r\n {\r\n state: 'tampo.terceiro-passo',\r\n statePosterior: 'app.home',\r\n module:'tampo',\r\n titulo:'Relatório',\r\n ordemPasso:2\r\n },\r\n {\r\n state: 'app.home',\r\n module:'home',\r\n statePosterior: 'prateleira.primeiro-passo',\r\n },\r\n {\r\n state: 'prateleira.primeiro-passo',\r\n statePosterior: 'prateleira.segundo-passo',\r\n module:'prateleira',\r\n titulo:'Primeiro Passo',\r\n ordemPasso:0\r\n },\r\n {\r\n state: 'prateleira.segundo-passo',\r\n statePosterior: 'prateleira.terceiro-passo',\r\n module:'prateleira',\r\n titulo:'Segundo Passo',\r\n ordemPasso:1\r\n },\r\n {\r\n state: 'prateleira.terceiro-passo',\r\n statePosterior: 'prateleira.quarto-passo',\r\n module:'prateleira',\r\n titulo:'Terceiro passo',\r\n ordemPasso:2\r\n },\r\n {\r\n state: 'prateleira.quarto-passo',\r\n statePosterior: 'app.home',\r\n module:'prateleira',\r\n titulo:'Relatório',\r\n ordemPasso:3\r\n }\r\n ];\r\n\r\n service.ObterStates = function (paramState) {\r\n return angular.copy(sourceRoutes);\r\n };\r\n\r\n service.ObterStateAnterior = function (paramState) {\r\n var state = angular.element.grep(sourceRoutes, function (state) {\r\n return state.statePosterior == paramState;\r\n })[0];\r\n return state.state;\r\n };\r\n\r\n service.ObterStatePosterior = function (paramState) {\r\n var state = angular.element.grep(sourceRoutes, function (state) {\r\n return state.state == paramState;\r\n })[0];\r\n return state.statePosterior;\r\n };\r\n\r\n service.ObterState = function (paramState) {\r\n var state = angular.element.grep(sourceRoutes, function (state) {\r\n return state.state == paramState;\r\n })[0];\r\n return state;\r\n };\r\n\r\n service.paramsStateAnterior = '';\r\n\r\n\r\n }\r\n\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular.module('model.service', [])\r\n .service('ModelService', ModelService);\r\n\r\n /** @ngInject */\r\n function ModelService() {\r\n\r\n var models = {};\r\n models.CalculoEspessura = function () {\r\n this.PressaoVento = new models.PressaoVento();\r\n this.PisoVidro = new models.PisoVidro();\r\n this.VisorPiscina = new models.VisorPiscina();\r\n this.Box = new models.Box();\r\n this.Espelho = new models.Espelho();\r\n this.Tampo = new models.Tampo();\r\n this.Prateleira = new models.Prateleira();\r\n\r\n return this;\r\n };\r\n\r\n models.PressaoVento = function () {\r\n this.Terreno = {\r\n RegiaoEolica: null,\r\n Rugosidade: null,\r\n Topografia: null\r\n };\r\n\r\n this.DadosVidro = {\r\n Altura: null,\r\n Angulo: null,\r\n Apoio: null,\r\n BordaLivre: null,\r\n Largura: null,\r\n Vidro: null\r\n };\r\n\r\n this.Edificacao = {\r\n Altura: null,\r\n MaiorDimensao: null,\r\n MenorDimensao: null\r\n };\r\n\r\n this.Solicitante = {\r\n Nome: null,\r\n Telefone: null,\r\n Empresa: null,\r\n Fax: null,\r\n Obra: null,\r\n Email: null\r\n };\r\n\r\n this.RelatorioFinal = {\r\n Nome: null,\r\n Telefone: null,\r\n Empresa: null,\r\n Fax: null,\r\n Obra: null,\r\n Email: null,\r\n Regiao: null,\r\n PressaoCalculo: null,\r\n PressaoDinamica: null,\r\n PressaoVento: null,\r\n AlturaEdificio: null,\r\n MaiorDimensaoEdificio: null,\r\n MenorDimensaoEdificio: null,\r\n Vidros: null,\r\n AlturaVidro: null,\r\n LarguraVidro: null,\r\n AnguloVidro: null,\r\n ApoioVidro: null\r\n };\r\n\r\n this.AplicacaoVidroExterno = false;\r\n return this;\r\n };\r\n\r\n models.PisoVidro = function () {\r\n this.PisoMaiorDimensao = null;\r\n this.PisoMenorDimensao = null;\r\n this.Local = null;\r\n return this;\r\n };\r\n\r\n models.VisorPiscina = function () {\r\n this.TipoVisor = null;\r\n this.VidroAltura = null;\r\n this.VidroLargura = null;\r\n this.AguaAltura = null;\r\n this.Nome = null;\r\n this.Telefone = null;\r\n this.Empresa = null;\r\n this.Fax = null;\r\n this.Obra = null;\r\n this.Email = null;\r\n\r\n this.RelatorioFinal = {\r\n AlturaAgua: null,\r\n AlturaVidro: null,\r\n AreaVidro: null,\r\n Email: null,\r\n Empresa: null,\r\n EspessuraRecomendada: null,\r\n Fax: null,\r\n LarguraVidro: null,\r\n Nome: null,\r\n Obra: null,\r\n Observacao: null,\r\n PesoVidro: null,\r\n Telefone: null,\r\n TaxaTrabalhoAdmissivel: null,\r\n TextoApoio: null,\r\n CaminhoImagem: null\r\n };\r\n return this;\r\n };\r\n\r\n models.Box = function () {\r\n this.Pecas = null;\r\n this.Nome = null;\r\n this.Telefone = null;\r\n this.Empresa = null;\r\n this.Fax = null;\r\n this.Obra = null;\r\n this.Email = null;\r\n this.TipoVidro = null;\r\n this.TipoAplicacao = null;\r\n\r\n return this;\r\n };\r\n\r\n models.Espelho = function () {\r\n this.Altura = null;\r\n this.Largura = null;\r\n this.Nome = null;\r\n this.Telefone = null;\r\n this.Empresa = null;\r\n this.Fax = null;\r\n this.Obra = null;\r\n this.Email = null;\r\n\r\n return this;\r\n };\r\n\r\n models.Tampo = function () {\r\n this.Largura = null;\r\n this.Comprimento = null;\r\n this.Diametro = null;\r\n this.AlturaAplicacao = null;\r\n this.SuperficieTodaApoiada = false;\r\n this.TampoRedondo = false;\r\n this.TipoVidroId = null;\r\n this.Nome = null;\r\n this.Telefone = null;\r\n this.Empresa = null;\r\n this.Fax = null;\r\n this.Obra = null;\r\n this.Email = null;\r\n\r\n return this;\r\n };\r\n\r\n models.Prateleira = function () {\r\n this.tipoCalculoId = null;\r\n this.isCemPorCentoApoiada = null;\r\n this.nome = null;\r\n this.telefone = null;\r\n this.empresa = null;\r\n this.fax = null;\r\n this.obra = null;\r\n this.email = null;\r\n this.distanciaApoioId = null;\r\n this.cargaMaxima = null;\r\n this.larguraPeca = null;\r\n this.areaPeca = null;\r\n this.hasFuracao = null;\r\n this.tipoVidroId = null;\r\n this.espessura = null;\r\n\r\n this.RelatorioFinal = {\r\n Email: null,\r\n Empresa: null,\r\n Fax: null,\r\n Nome: null,\r\n Obra: null,\r\n Telefone: null,\r\n IsCemPorCentoApoiada: null,\r\n LarguraPeca: null,\r\n AreaPeca: null,\r\n TipoVidro: null,\r\n Espessura: null,\r\n DistanciaApoio: null,\r\n CargaMaxima: null,\r\n HasFuracao: null,\r\n TipoCalculoId: null\r\n };\r\n return this;\r\n };\r\n\r\n\r\n var service = this;\r\n service.CalculoEspessura = function () {\r\n return new models.CalculoEspessura();\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular.module('loading.service', [])\r\n .service('LoadingService', LoadingService);\r\n\r\n /** @ngInject */\r\n function LoadingService() {\r\n\r\n var _service = this;\r\n\r\n var _layoutLoader = {element: null, selector: '.loading-screen'};\r\n\r\n var _intervalInicializacao = setInterval(function () {\r\n if (_layoutLoader.element) {\r\n clearInterval(_intervalInicializacao);\r\n }\r\n else {\r\n if ($(_layoutLoader.selector).size() > 0) {\r\n _layoutLoader.element = $(_layoutLoader.selector);\r\n }\r\n }\r\n }, 500);\r\n\r\n _service.loader = {\r\n esconder: function () {\r\n $(_layoutLoader.selector).fadeOut(300);\r\n },\r\n exibir: function () {\r\n $(_layoutLoader.selector).fadeIn(300);\r\n },\r\n };\r\n\r\n\r\n var tentarEsconderLoader = function () {\r\n if (_layoutLoader.element) {\r\n $(_layoutLoader.selector).fadeOut(300);\r\n }\r\n else {\r\n setTimeout(function () {\r\n tentarEsconderLoader();\r\n }, 300);\r\n }\r\n };\r\n\r\n var tentarExibirLoader = function () {\r\n if (_layoutLoader.element) {\r\n $(_layoutLoader.selector).fadeIn(300);\r\n }\r\n else {\r\n setTimeout(function () {\r\n tentarExibirLoader();\r\n }, 300);\r\n }\r\n };\r\n\r\n\r\n }\r\n\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular.module('calculo-espessura.service', [])\r\n .service('CalculoEspessuraService', CalculoEspessuraService);\r\n\r\n /** @ngInject */\r\n function CalculoEspessuraService(ModelService) {\r\n\r\n var service = this;\r\n var model = new ModelService.CalculoEspessura();\r\n service.PressaoVentoModel = model.PressaoVento;\r\n service.PisoVidroModel = model.PisoVidro;\r\n service.VisorPiscinaModel = model.VisorPiscina;\r\n service.Box = model.Box;\r\n service.Espelho = model.Espelho;\r\n service.Tampo = model.Tampo;\r\n service.Prateleira = model.Prateleira;\r\n\r\n service.resetarModel = function () {\r\n service.model = new ModelService.CalculoEspessura();\r\n }\r\n\r\n }\r\n\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('unidade.filter', [])\r\n .filter('unidade', unidade);\r\n\r\n function unidade($filter) {\r\n return function (input, decimais, unidadeMedida) {\r\n if (!input){\r\n return '';\r\n }\r\n\r\n return $filter('number')(input, decimais) + unidadeMedida;\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('numero-telefone.filter', [])\r\n .filter('numeroTelefone', numeroTelefone);\r\n\r\n function numeroTelefone($filter) {\r\n return function (numero) {\r\n if (!numero){\r\n return '';\r\n }\r\n\r\n var ddd = '';\r\n var prefixo = '';\r\n var sufixo = '';\r\n\r\n if (numero.length == 10){\r\n ddd = numero.slice(0,2);\r\n prefixo = numero.slice(2,6);\r\n sufixo = numero.slice(6,10);\r\n }\r\n else{\r\n ddd = numero.slice(0,2);\r\n prefixo = numero.slice(2,7);\r\n sufixo = numero.slice(7,11);\r\n }\r\n\r\n return '(' + ddd + ') ' + prefixo + '-' + sufixo;\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular.module('vidro.factory', [])\r\n .service('VidroFactory', VidroFactory);\r\n\r\n /** @ngInject */\r\n function VidroFactory($http, API) {\r\n\r\n var factory = function (data) {\r\n angular.extend(this, data);\r\n };\r\n\r\n factory.buscarTiposVidro = buscarTiposVidro;\r\n factory.buscarVidros = buscarVidros;\r\n factory.buscarComposicoesPossiveis = buscarComposicoesPossiveis;\r\n factory.buscarTiposPecasBox = buscarTiposPecasBox;\r\n factory.buscarTiposVidrosBox = buscarTiposVidrosBox;\r\n factory.buscarTiposVidrosTampo = buscarTiposVidrosTampo;\r\n factory.buscarTiposVidrosPrateleira = buscarTiposVidrosPrateleira;\r\n factory.buscarTiposEspessurasPrateleira = buscarTiposEspessurasPrateleira;\r\n factory.buscarDistanciaPrateleira = buscarDistanciaPrateleira;\r\n\r\n\r\n function buscarTiposVidro() {\r\n return $http.get(API.URL + 'Vidro/BuscarTiposVidro')\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function buscarVidros(tipoVidroId) {\r\n return $http.get(API.URL + 'Vidro/BuscarVidrosPorTipo/' + tipoVidroId)\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function buscarComposicoesPossiveis(tipoVidroId) {\r\n return $http.get(API.URL + 'Vidro/BuscarComposicoesPossiveis/' + tipoVidroId)\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function buscarTiposPecasBox() {\r\n return $http.get(API.URL + 'Vidro/BuscarTiposPecasBox')\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function buscarTiposVidrosBox() {\r\n return $http.get(API.URL + 'Vidro/BuscarTiposVidrosBox')\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function buscarTiposVidrosTampo() {\r\n return $http.get(API.URL + 'Vidro/BuscarTiposVidrosTampo')\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function buscarTiposVidrosPrateleira(isCemPorcentoApoiada, hasFuracao) {\r\n return $http.get(API.URL + 'Prateleiras/TiposVidros/' + isCemPorcentoApoiada + '/' + hasFuracao)\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function buscarTiposEspessurasPrateleira(isCemPorcentoApoiada, tipoVidroId) {\r\n return $http.get(API.URL + 'Prateleiras/Espessuras/' + isCemPorcentoApoiada + '/TipoVidro/' + tipoVidroId)\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function buscarDistanciaPrateleira(tipoVidroId, espessuraId) {\r\n return $http.get(API.URL + 'Prateleiras/DistanciasApoios/TipoVidro/' + tipoVidroId + '/Espessura/' + espessuraId)\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n return factory;\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular.module('regra.factory', [])\r\n .service('RegraFactory', RegraFactory);\r\n\r\n /** @ngInject */\r\n function RegraFactory($http, API) {\r\n\r\n var factory = function (data) {\r\n angular.extend(this, data);\r\n };\r\n\r\n factory.buscarRegras = buscarRegras;\r\n factory.atualizarRegra = atualizarRegra;\r\n\r\n function buscarRegras() {\r\n return $http.get(API.URL + 'Regras/BuscarRegras')\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function atualizarRegra(entidade) {\r\n return $http.post(API.URL + 'Regras/AtualizarRegra', entidade)\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n return factory;\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular.module('local.factory', [])\r\n .service('LocalFactory', LocalFactory);\r\n\r\n /** @ngInject */\r\n function LocalFactory($http, API) {\r\n\r\n var factory = function (data) {\r\n angular.extend(this, data);\r\n };\r\n\r\n factory.buscarRegioes = buscarRegioes;\r\n factory.buscarTerrenos = buscarTerrenos;\r\n factory.buscarRugosidades = buscarRugosidades;\r\n\r\n\r\n function buscarRegioes() {\r\n\r\n return $http.get(API.URL + 'Local/BuscarRegioes')\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function buscarTerrenos() {\r\n return $http.get(API.URL + 'Local/BuscarTerrenos')\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function buscarRugosidades() {\r\n return $http.get(API.URL + 'Local/BuscarRugosidades')\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n return factory;\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular.module('calculo.factory', [])\r\n .service('CalculoFactory', CalculoFactory);\r\n\r\n /** @ngInject */\r\n function CalculoFactory($http, API) {\r\n\r\n var factory = function (data) {\r\n angular.extend(this, data);\r\n };\r\n\r\n factory.calcularPressaoVento = calcularPressaoVento;\r\n factory.calcularPiscinaAquario = calcularPiscinaAquario;\r\n factory.buscarTiposCalculoPiscinaAquario = buscarTiposCalculoPiscinaAquario;\r\n factory.calcularEspessuraBox = calcularEspessuraBox;\r\n factory.calcularEspessuraEspelho = calcularEspessuraEspelho;\r\n factory.calcularEspessuraTampo = calcularEspessuraTampo;\r\n factory.calcularPrateleira = calcularPrateleira;\r\n factory.buscarTipoCalculoPrateleira = buscarTipoCalculoPrateleira;\r\n\r\n function calcularPressaoVento(entidade) {\r\n return $http.post(API.URL + 'Calculos/CalcularPressaoVento', entidade)\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function calcularPiscinaAquario(entidade) {\r\n return $http.post(API.URL + 'Calculos/CalcularPiscinaAquario', entidade)\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function buscarTiposCalculoPiscinaAquario() {\r\n return $http.get(API.URL + 'Calculos/BuscarTiposCalculoPiscinaAquario')\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function calcularEspessuraBox(entidade) {\r\n return $http.post(API.URL + 'Calculos/CalcularEspessuraBox', entidade)\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function calcularEspessuraEspelho(entidade) {\r\n return $http.post(API.URL + 'Calculos/CalcularEspessuraEspelho', entidade)\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function calcularEspessuraTampo(entidade) {\r\n return $http.post(API.URL + 'Calculos/CalcularEspessuraTampo', entidade)\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function calcularPrateleira(entidade) {\r\n return $http.post(API.URL + 'Prateleiras', entidade)\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n function buscarTipoCalculoPrateleira() {\r\n return $http.get(API.URL + 'Prateleiras/CalculosTipos')\r\n .then(function (response) {\r\n return response;\r\n });\r\n }\r\n\r\n\r\n return factory;\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('espessura', [\r\n 'ngAnimate',\r\n 'ngCookies',\r\n 'ngTouch',\r\n 'ngSanitize',\r\n 'ngMessages',\r\n 'ngAria',\r\n 'ngLodash',\r\n\r\n 'ui.router',\r\n 'ui.bootstrap',\r\n 'ui.select',\r\n 'ui.checkbox',\r\n 'leaflet-directive',\r\n 'anim-in-out',\r\n 'toastr',\r\n 'wt.responsive',\r\n 'mgo-angular-wizard',\r\n 'ui.utils.masks',\r\n 'ui.mask',\r\n\r\n 'common',\r\n 'view',\r\n 'cebraceCredito.filter'\r\n\r\n ]);\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('espessura')\r\n .run(runBlock);\r\n\r\n /** @ngInject */\r\n function runBlock($rootScope, $log, RouteDefinitionService, toastr, LoadingService) {\r\n\r\n $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {\r\n angular.element('body').stop().animate({scrollTop: 0}, '200', 'swing', function () {\r\n\r\n });\r\n });\r\n\r\n $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\r\n RouteDefinitionService.paramsStateAnterior = fromState.name;\r\n });\r\n\r\n $rootScope.$on('$stateChangeError', function (event, toState, toParams, fromState, fromParams, error) {\r\n console.error(error);\r\n });\r\n\r\n $rootScope.toastr = toastr;\r\n\r\n LoadingService.loader.esconder();\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('espessura')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider, $urlRouterProvider) {\r\n $stateProvider\r\n .state('app', {\r\n url: '',\r\n abstract: true,\r\n views: {\r\n }\r\n })\r\n .state('app.home', {\r\n url: '/',\r\n views: {\r\n '@': {\r\n templateUrl: 'app/view/main/main.tpl.html',\r\n controller: 'MainController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n\r\n $urlRouterProvider.otherwise('/');\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular.module('cebraceCredito.filter', [])\r\n .filter('porcentagem', FiltroPorcentagem)\r\n .filter('split', FiltroSplit);\r\n\r\n function FiltroPorcentagem($filter) {\r\n return function (input, decimals) {\r\n if (input > 0){\r\n return $filter('number')(input * 100, decimals) + ' %';\r\n }\r\n else {\r\n return '0 %';\r\n }\r\n };\r\n }\r\n function FiltroSplit (input, splitChar, splitIndex) {\r\n return input.split(splitChar)[splitIndex];\r\n }\r\n})();\r\n\n/* global malarkey:false, moment:false */\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('espessura')\r\n .constant('malarkey', malarkey)\r\n .constant('moment', moment)\r\n .constant('API', {\r\n // 'URL': 'http://localhost:56050/api/' //Local\r\n //'URL': 'http://sistemas_qa.cebrace.com.br/CalculoEspessura.WebAPI/api/' //QA\r\n 'URL': 'http://www.cebrace.com.br/CalculoEspessura.WebAPI/api/' // PRD\r\n });\r\n\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('espessura')\r\n .factory('AppInterceptor', AppInterceptor)\r\n .config(config);\r\n\r\n /** @ngInject */\r\n function AppInterceptor($q, $rootScope) {\r\n\r\n var toastr = $rootScope.toastr;\r\n var toastInterval = setInterval(function () {\r\n if (toastr) {\r\n clearInterval(toastInterval);\r\n }\r\n toastr = $rootScope.toastr;\r\n });\r\n\r\n return {\r\n request: function (res) {\r\n return res;\r\n },\r\n\r\n requestError: function (res) {\r\n return $q.reject(res);\r\n },\r\n\r\n response: function (res) {\r\n var _res = res;\r\n\r\n if (res.data && res.data.ShowToast) {\r\n angular.element(res.data.Messages).each(function (iM, message) {\r\n toastr.success(message, res.data.Title);\r\n });\r\n }\r\n\r\n if (res.data && res.data.Data) {\r\n _res = angular.copy(res.data.Data);\r\n }\r\n \r\n return _res;\r\n },\r\n\r\n responseError: function (res) {\r\n var _res = res;\r\n if (res.data.Data) {\r\n _res = res.data.Data;\r\n }\r\n if (res.data.ShowToast) {\r\n angular.element(res.data.Messages).each(function (iM, message) {\r\n toastr.error(message, res.data.Title);\r\n });\r\n }\r\n if (res.data.Error) {\r\n console.error(res.data.Error.Message, res.data.Error.Message);\r\n }\r\n return $q.reject(_res);\r\n }\r\n }\r\n }\r\n\r\n /** @ngInject */\r\n function config($logProvider, $httpProvider, toastrConfig) {\r\n // Enable log\r\n $logProvider.debugEnabled(true);\r\n\r\n // Set options third-party lib\r\n toastrConfig.allowHtml = true;\r\n toastrConfig.timeOut = 7000;\r\n toastrConfig.positionClass = 'toast-top-right';\r\n //toastrConfig.preventDuplicates = true;\r\n toastrConfig.progressBar = true;\r\n\r\n // Declare the Interceptor\r\n $httpProvider.interceptors.push('AppInterceptor');\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.selecao.objetivo',\r\n [\r\n 'visor.piscina.selecao.objetivo.controller',\r\n 'selecao-objetivo.service'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('visor.piscina.passo.a.passo',\r\n [\r\n 'visor.piscina.primeiro.passo',\r\n 'visor.piscina.segundo.passo',\r\n 'visor.piscina.terceiro.passo',\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('tampo.passo.a.passo',\r\n [\r\n 'tampo.primeiro.passo',\r\n 'tampo.segundo.passo',\r\n 'tampo.terceiro.passo'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('pressao.vento.passo.a.passo',\r\n [\r\n 'pressao.vento.primeiro.passo',\r\n 'pressao.vento.segundo.passo',\r\n 'pressao.vento.terceiro.passo',\r\n 'pressao.vento.quarto.passo',\r\n 'pressao.vento.quinto.passo'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('prateleira.passo.a.passo',\r\n [\r\n 'prateleira.primeiro.passo',\r\n 'prateleira.segundo.passo',\r\n 'prateleira.terceiro.passo',\r\n 'prateleira.quarto.passo'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('piso.vidro.passo.a.passo',\r\n [\r\n 'piso.vidro.primeiro.passo',\r\n 'piso.vidro.segundo.passo'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('espelho.passo.a.passo',\r\n [\r\n 'espelho.primeiro.passo',\r\n 'espelho.segundo.passo',\r\n 'espelho.terceiro.passo'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('box.passo.a.passo',\r\n [\r\n 'box.primeiro.passo',\r\n 'box.segundo.passo',\r\n 'box.terceiro.passo',\r\n 'box.quarto.passo',\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('selecao.vidro',\r\n [\r\n 'selecao.vidro.controller',\r\n 'selecao.vidro.service'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('main',\r\n [\r\n 'main.controller'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('barra.progresso',\r\n [\r\n 'barra.progresso.controller',\r\n 'barra.progresso.service'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('common.service',\r\n [\r\n 'route-definition.service',\r\n 'model.service',\r\n 'calculo-espessura.service',\r\n 'loading.service'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('common.filter',\r\n [\r\n 'unidade.filter',\r\n 'numero-telefone.filter'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('common.factory',\r\n [\r\n 'vidro.factory',\r\n 'local.factory',\r\n 'calculo.factory',\r\n 'regra.factory'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('common.directive',\r\n [\r\n 'vidro-dctv.directive'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('view',\r\n [\r\n 'main',\r\n 'pressao.vento',\r\n 'piso.vidro',\r\n 'visor.piscina',\r\n 'selecao.vidro',\r\n 'barra.progresso',\r\n 'configuracao',\r\n 'box',\r\n 'espelho',\r\n 'tampo',\r\n 'prateleira'\r\n ]\r\n );\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('common',\r\n [\r\n 'common.service',\r\n 'common.factory',\r\n 'common.directive',\r\n 'common.filter'\r\n ]\r\n );\r\n\r\n})();\r\n\nangular.module(\"espessura\").run([\"$templateCache\", function($templateCache) {$templateCache.put(\"app/view/barra-progresso/barra-progresso.tpl.html\",\"\");\n$templateCache.put(\"app/view/main/main.tpl.html\",\"

Sobre

O Software de Cálculo Cebrace é uma ferramenta de especificação destinada a calcular as espessuras de vidros aplicados em fachadas, cobertura, visores de piscina, aquários e pisos de vidro, de propriedade da Cebrace, desenvolvido de acordo com as normas brasileiras ABNT NBR 7199 e NBR 6123. Segue conjuntamente algumas recomendações da norma francesa da DTU - 39. O resultado fornecido por esta ferramenta leva em consideração as informações prestadas pelo usuário, sendo este o único responsável pelas mesmas. Neste sentido, a Cebrace não se responsabiliza por quaisquer erros, omissões ou imprecisões nas informações prestadas pelo usuário. Em caso de dúvida, contatar o Departamento Técnico Cebrace nos números 0800 72 VIDRO (0800 72 84376). A Cebrace reserva-se o direito de modificar e/ou alterar o presente software sempre que necessário, com o intuito de garantir ao usuário a adequação ao texto da Norma pertinente.

Pressão do Vento

Bem vindo à ferramenta Cebrace de Dimensionamento de vidros aplicados em fachadas e coberturas.

Esta ferramenta tem como objetivo auxiliar os clientes Cebrace assim como os projetistas no dimensionamento de vidros para fachadas e coberturas. Você passará por três passos até obter o resultado. Tenha em mãos informações como local da obra, dimensões da edificação, tipo de vidro a ser utilizado e suas dimensões e detalhes de aplicação.

Piso de Vidro

Descrição Aqui

Visores de Piscina e Aquário

Descrição Aqui

Box de Vidro

Descrição Aqui

Espelhos

Descrição Aqui

Tampos de Vidro

Descrição Aqui

Prateleiras

Descrição Aqui

\");\n$templateCache.put(\"app/view/selecao-vidro/selecao-vidro.tpl.html\",\"
\");\n$templateCache.put(\"app/common/directive/vidro-dctv/vidro-dctv.tpl.html\",\"
Vidro
0\\\" ng-class=\\\"{\\'col-md-8\\':existeInsulado(),\\'col-md-6\\':!existeInsulado()&&existeLaminado()}\\\">
Composições
\");\n$templateCache.put(\"app/view/box/apresentacao/apresentacao.tpl.html\",\"

Calculo de Box de Vidro

\\\"Responsive

Sobre a Ferramenta

Calculo de Box de Vidro.

\");\n$templateCache.put(\"app/view/configuracao/regra/regra.tpl.html\",\"

Regras

Configure as regras do sistema.


{{regra.Descricao}}
{{regra.Valor}}
{{regra.Ativo ? \\'Ativo\\' : \\'Inativo\\'}}

\");\n$templateCache.put(\"app/view/espelho/apresentacao/apresentacao.tpl.html\",\"

Calculo de Espelho

\\\"Responsive

Sobre a Ferramenta

Calculo de Espelho.

\");\n$templateCache.put(\"app/view/piso-vidro/apresentacao/apresentacao.tpl.html\",\"

Calculo para Piso de Vidro

\\\"Responsive

Sobre a Ferramenta

Bem vindo a ferramenta de cálculo Cebrace para pisos de vidro! Antes de iniciar sua simulação é importante destacar que, quando utilizado como piso, o vidro a ser aplicado deverá ser obrigatoriamente um vidro laminado. Para fazer sua simulação é necessário que tenha a mão as dimensões do piso e a aplicação que se destina. Em caso de pisos circulares ou modelados, considerar com dimensão de simulação o retângulo ou quadrado que circunda a peça em questão. Esta ferramenta avalia somente situações aonde o piso será apoiado em todo o seu perímetro.

\");\n$templateCache.put(\"app/view/prateleira/apresentacao/apresentacao.tpl.html\",\"

Calculo de Prateleiras

\\\"Responsive

Sobre a Ferramenta

Calculo de Prateleiras.

\");\n$templateCache.put(\"app/view/pressao-vento/apresentacao/apresentacao.tpl.html\",\"

Calculo para Pressão do Vento

\\\"Responsive

Sobre a Ferramenta

Esta ferramenta tem como objetivo auxiliar os clientes Cebrace assim como os projetistas no dimensionamento de vidros para fachadas e coberturas. Você passará por 3 passos até obter o resultado. Tenha a mão informações como local da obra, dimensões da edificação, tipo de vidro a ser utilizado e suas dimensões e detalhes de aplicação. A memória de calculo desta ferramenta está de acordo com as Normas Brasileiras NBR7199 e NBR6123.

\");\n$templateCache.put(\"app/view/tampo/apresentacao/apresentacao.tpl.html\",\"

Calculo de Tampos de Vidro

\\\"Responsive

Sobre a Ferramenta

Calculo de Tampos de Vidro.

\");\n$templateCache.put(\"app/view/visor-piscina/apresentacao/apresentacao.tpl.html\",\"

Calculo de Visor de Piscina e Aquário

\\\"Responsive

Sobre a Ferramenta

Antes de iniciar sua simulação é importante destacar que, quando aplicado como visor, o vidro a ser utilizado deverá ser obrigatoriamente um vidro laminado. Para fazer sua simulação é necessário que tenha a mão algumas informações como as dimensões das peças, o local de sua aplicação (no fundo do visor ou nas paredes laterais do mesmo) além de, em alguns casos, da coluna de água presente acima da peça de vidro. Em caso de aquários circulares ou modelados, considerar com dimensão de simulação o retângulo ou quadrado que circunda a peça em questão. Esta ferramenta avalia somente situações onde as peças estejam apoiadas em todo o seu perímetro ou com a borda superior livre. Para iniciar a simulação escolha uma das opções clicando sobre a figura.

\");\n$templateCache.put(\"app/view/visor-piscina/selecao-objetivo/selecao-objetivo.tpl.html\",\"
\");\n$templateCache.put(\"app/view/box/passo-a-passo/primeiro-passo/primeiro-passo.tpl.html\",\"

Tipo de vidro e Tipo de estrutura.

Por recomendação da NBR 14207, todas as peças do box devem ser do mesmo tipo, desta forma, primeiramente selecione o tipo de vidro e como será a estrutura do box para dar prosseguimento no dimensionamento das peças.

1.

Selecione o tipo de vidro.

2.

Selecione o tipo de estrutura.

\");\n$templateCache.put(\"app/view/box/passo-a-passo/quarto-passo/quarto-passo.tpl.html\",\"

6.

Resultados obtidos.

Cálculo de Espessura de Vidro
{{vm.model.Nome}}
{{vm.model.Telefone | numeroTelefone}}
{{vm.model.Empresa}}
{{vm.model.Fax | numeroTelefone}}
{{vm.model.Obra}}
{{vm.model.Email}}

Resultado do Calculo

VidroTipo de PeçaAltura (em metros)Largura (em metros)Espessura Recomendada (em milímetros)
Vidro {{$index + 1}}{{peca.TipoPeca}}{{peca.Altura | number: 2}}{{peca.Largura | number: 2}}{{peca.Espessura | number: 2}}

Segundo NBR 14207 de 2009, deve-se evitar o contato entre o vidro e outros materiais que possam danificá-lo, colocando-se entre eles materiais imputrescíveis que protejam sua superfície.

Todo furo e recorte feito no vidro deve ter uma proteção feita com materiais não higroscópicos e imputrescíveis, que evite o contato das bordas das chapas de vidro entre si, e com alvenaria ou peças metálicas.

Caso seja feita aplicação de película de segurança, esta deve ser instalada do lado externo do box. A instalação deve garantir o ancoramento da película de segurança, garantindo a segurança do sistema com vidro temperado quebrado. Para isso a película deve ser instalada sob a fixação das roldanas e, no caso da porta de abrir, a película de segurança deve ser instalada sob a dobradiça.

A presente ferramenta de cálculo fornece as espessuras mínimas de cada peça de vidro, calculada de forma independente, cabendo ao usuário a escolha da espessura de aplicação do sistema.

\");\n$templateCache.put(\"app/view/box/passo-a-passo/terceiro-passo/terceiro-passo.tpl.html\",\"

5.

Informar dados do solicitante para emissão do relatório.

Dados da Edificação e Vidro

Dados Fornecidos

{{vm.crudCalculoEspessura.Dados.Vidro.Nome}}
{{vm.crudCalculoEspessura.Dados.Vidro.Altura}}
{{vm.crudCalculoEspessura.Dados.Vidro.Largura}}

Resultado do Calculo

Tipo de Vidro2 Lâminas3 Lâminas4 Lâminas
Laminado Comum19+19=38 mm15+15+15=45 mm12+12+12+12=48 mm
Laminado Temperado10+10=20 mm8+8+8=24 mm6+6+6+6=24 mm
\");\n$templateCache.put(\"app/view/box/passo-a-passo/segundo-passo/segundo-passo.tpl.html\",\"

Tipo da Peça e Dimensões.

Selecione qual peça e suas dimensões para recomendação de espessura e clique em adicionar para calcular o restante das peças do projeto.

0\\\">
Tipo PeçaTipo VidroTipo EncaixeAlturaLargura
{{peca.tipoPeca.Descricao}}{{peca.tipoVidro.Descricao}}{{peca.tipoAplicacao.Descricao}}{{peca.altura | number: 2}} metros{{peca.largura | number: 2}} metros

Nenhum item adicionado. Adicione para prosseguir.

3.

Selecione o tipo de peça.

4.

Quais as dimensões da peça?

\");\n$templateCache.put(\"app/view/espelho/passo-a-passo/segundo-passo/segundo-passo.tpl.html\",\"

2.

Informar dados do solicitante para emissão do relatório.

Dados da Edificação e Vidro

Dados Fornecidos

{{vm.crudCalculoEspessura.Dados.Vidro.Nome}}
{{vm.crudCalculoEspessura.Dados.Vidro.Altura}}
{{vm.crudCalculoEspessura.Dados.Vidro.Largura}}

Resultado do Calculo

Tipo de Vidro2 Lâminas3 Lâminas4 Lâminas
Laminado Comum19+19=38 mm15+15+15=45 mm12+12+12+12=48 mm
Laminado Temperado10+10=20 mm8+8+8=24 mm6+6+6+6=24 mm
\");\n$templateCache.put(\"app/view/espelho/passo-a-passo/terceiro-passo/terceiro-passo.tpl.html\",\"

3.

Resultados obtidos.

Cálculo de Espessura de Espelho
{{vm.model.Nome}}
{{vm.model.Telefone | numeroTelefone}}
{{vm.model.Empresa}}
{{vm.model.Fax | numeroTelefone}}
{{vm.model.Obra}}
{{vm.model.Email}}

Dados do Vidro

{{vm.model.altura | number: 2}} metro(s)
{{vm.model.largura | number: 2}} metro(s)

Resultado do Cálculo

{{vm.model.RelatorioFinal.Espessura | number: 2}} mm

Segundo NBR 15198 de 2005 o substrato onde o espelho será instalado deve ser plano, a fim de não permitir distorção óptica; possuir isolamento quanto à umidade; e ter resistência mecânica suficiente para suportar o espelho.

Para uma boa instalação, recomenda-se que entre o espelho e o substrato exista um espaçamento de, no mínimo, 3mm, permitindo a circulação de ar; Quando mais de um espelho é fixado na mesma superfície, deve ser assegurado que exista uma folga mínima entre as bordas. Um separador de 1 mm pode ser utilizado para este propósito; Espelhos utilizados em saunas, banheiros, piscinas, ou em quaisquer ambientes que tenham um alto índice de umidade ou atmosfera corrosiva, são propensos à oxidação;

Além disso, para instalação recomenda-se que os filetes sejam sempre na vertical, de modo a permitir o fluxo de ar de baixo para cima. Não deve ser utilizado qualquer cola que contenha solventes orgânicos e/ou componentes ácidos, como colas de sapateiro, cola de fórmica, cola de carpete etc. Esses adesivos são corrosivos e provocam sérios riscos a segurança da montagem e durabilidade dos espelhos, além de conterem solventes tóxicos. A colagem mais eficiente e menos agressiva ao revestimento do espelho é realizada com adesivos elastoméricos neutros, como o Fixa Espelho Cebrace e o Protetor de Borda.

\");\n$templateCache.put(\"app/view/espelho/passo-a-passo/primeiro-passo/primeiro-passo.tpl.html\",\"

1.

Quais as dimensões do espelho?

\");\n$templateCache.put(\"app/view/piso-vidro/passo-a-passo/primeiro-passo/primeiro-passo.tpl.html\",\"

1.

Inserir os valores dos lados do piso.

2.

Selecionar a topografia do terreno clicando sobre os desenhos que representam as topografias de terreno possíveis.

\");\n$templateCache.put(\"app/view/piso-vidro/passo-a-passo/segundo-passo/segundo-passo.tpl.html\",\"

Passo 2

  1. Preencha todos os campos de informação.
  2. Selecione as informações que deseja retirar do relatório nos campos de check (nos dados da Região).
  3. Clique em “Imprimir” para obter o relatório impresso.

Dados da Edificação e Vidro

Dados Fornecidos

###################
###################
###################
###################

Resultado do Calculo

Tipo de Vidro2 Lâminas3 Lâminas4 Lâminas
Laminado Comum19+19=38 mm15+15+15=45 mm12+12+12+12=48 mm
Laminado Temperado10+10=20 mm8+8+8=24 mm6+6+6+6=24 mm
\");\n$templateCache.put(\"app/view/prateleira/passo-a-passo/primeiro-passo/primeiro-passo.tpl.html\",\"

1.

Selecione o tipo de Cálculo.

{{ formaPrateleira }}

2.

Preciso descobrir:

{{ tipoCalculo.Descricao }}

3.

Sua prateleira está 100% apoiada?

4.

A peça possui furação?

\");\n$templateCache.put(\"app/view/prateleira/passo-a-passo/quarto-passo/quarto-passo.tpl.html\",\"

8.

Resultados obtidos.

Cálculo de Prateleira
{{vm.model.Nome}}
{{vm.model.Telefone | numeroTelefone}}
{{vm.model.Empresa}}
{{vm.model.Fax | numeroTelefone}}
{{vm.model.Obra}}
{{vm.model.Email}}

Dados

{{vm.model.LarguraPeca | number: 2}} mm
{{vm.model.AreaPeca | number: 2}} m²
{{vm.model.DistanciaApoio}}

Considerado

{{ vm.model.IsCemPorCentoApoiada ? \\'Sim\\' : \\'Não\\' }}
{{ vm.model.HasFuracao ? \\'Sim\\' : \\'Não\\' }}

Resultado do Cálculo

{{vm.model.TipoVidro}}
{{vm.model.Espessura}}
{{vm.model.CargaMaxima}} kg/m²

Observação

Caso a peça de vidro possua furação para fixação, o vidro é considerado autoportante e obrigatoriamente dever ser temperado.

As informações contidas nesse formulário foram baseadas na norma brasileira ABNT NBR 14564/2017 e são para assistência na aplicação dos vidros CEBRACE, no entanto levam em consideração as informações prestadas pelo usuário, sendo este o único responsável pelas mesmas. Neste sentido, A CEBRACE NÃO SE RESPONSABILIZA POR QUAISQUER ERROS, OMISSÕES OU IMPRECISÕES NAS INFORMAÇÕES PRESTADAS PELO USUÁRIO. Portanto, este documento não deve ser utilizado como memorial de cálculo e sim como uma ferramenta de especificação e auxílio na aplicação de vidros planos CEBRACE. O cliente declara que se responsabilizará perante quaisquer terceiros, por quaisquer atos e fatos oriundos da utilização dos produtos, inclusive no que diz respeito à emissão de ARTs e/ou RRTs quando se tratar de projetos.
\");\n$templateCache.put(\"app/view/prateleira/passo-a-passo/terceiro-passo/terceiro-passo.tpl.html\",\"

7.

Complete com as informações

Dados do Solicitante

\");\n$templateCache.put(\"app/view/prateleira/passo-a-passo/segundo-passo/segundo-passo.tpl.html\",\"

5.

Complete com as informações

Qual o tipo de vidro?


Qual a espessura da peça?


Qual a distância entre apoios?


Qual a largura da peça?


Qual a carga máxima?


6.

Qual a área da peça?

\");\n$templateCache.put(\"app/view/pressao-vento/passo-a-passo/primeiro-passo/primeiro-passo.tpl.html\",\"

1.

Selecionar Aplicação do Vidro.

2.

Como deseja registrar a pressão de vento? Manualmente ou Cálcular pela NBR6123.


3.

Selecionar a região aonde se encontra a obra clicando nas regiões descritas no mapa.

Regiões Eólicas
{{regiao.Titulo}}

{{vm.selecionadoRegiao().Descricao}}

4.

Selecionar a topografia do terreno clicando sobre os desenhos que representam as topografias de terreno possíveis.


5.

Selecionar a rugosidade do terreno clicando sobre os desenhos que representam as rugosidades de terreno possíveis.

{{item.DescricaoCategoria}}
\");\n$templateCache.put(\"app/view/pressao-vento/passo-a-passo/quinto-passo/quinto-passo.tpl.html\",\"

11.

Resultados obtidos.

Cálculo de Espessura de Vidro
{{vm.PressaoVentoModel.RelatorioFinal.Nome}}
{{vm.PressaoVentoModel.RelatorioFinal.Telefone | numeroTelefone}}
{{vm.PressaoVentoModel.RelatorioFinal.Empresa}}
{{vm.PressaoVentoModel.RelatorioFinal.Fax | numeroTelefone}}
{{vm.PressaoVentoModel.RelatorioFinal.Obra}}
{{vm.PressaoVentoModel.RelatorioFinal.Email}}

Dados de Calculo da Pressão

{{vm.PressaoVentoModel.RelatorioFinal.PressaoCalculo | number: 2}} Pa
{{vm.PressaoVentoModel.RelatorioFinal.PressaoVento | number: 2}} Pa

Dados da Região

{{vm.PressaoVentoModel.AplicacaoVidroExterno ? vm.PressaoVentoModel.RelatorioFinal.Regiao : \\'Aplicação Interna\\'}}

Dados do Edifício

{{vm.PressaoVentoModel.RelatorioFinal.AlturaEdificio}} metro(s)
{{vm.PressaoVentoModel.RelatorioFinal.MaiorDimensaoEdificio | number: 2}} metro(s)
{{vm.PressaoVentoModel.RelatorioFinal.MenorDimensaoEdificio | number: 2}} metro(s)

Dados do Vidro

{{vm.PressaoVentoModel.DadosVidro.Vidro.Descricao}}
    {{item.vidro.Descricao}}
{{vm.PressaoVentoModel.RelatorioFinal.AlturaVidro | number: 2}} metro(s)
{{vm.PressaoVentoModel.RelatorioFinal.LarguraVidro | number: 2}} metro(s)
{{vm.PressaoVentoModel.RelatorioFinal.AnguloVidro}} graus
{{vm.PressaoVentoModel.RelatorioFinal.ApoioVidro}} lados apoiados

Resultado do Calculo

0\\\">
{{vm.montarExibicaoVidroAceito(vidro).Descricao}}
As informações contidas nesse formulário foram baseadas nas normas brasileiras ABNT NBR 7199 e NBR 6123 e são para assistência na aplicação dos vidros CEBRACE, no entanto levam em consideração as informações prestadas pelo usuário, sendo este o único responsável pelas mesmas. Neste sentido, A CEBRACE NÃO SE RESPONSABILIZA POR QUAISQUER ERROS, OMISSÕES OU IMPRECISÕES NAS INFORMAÇÕES PRESTADAS PELO USUÁRIO. Portanto, este documento não deve ser utilizado como memorial de cálculo e sim como uma ferramenta de especificação e auxílio na aplicação de vidros planos CEBRACE. O cliente declara que se responsabilizará perante quaisquer terceiros, por quaisquer atos e fatos oriundos da utilização dos produtos, inclusive no que diz respeito à emissão de ARTs e/ou RRTs quando se tratar de projetos.
As informações contidas nesse formulário foram baseadas nas normas brasileiras ABNT NBR 7199 e pressão de vento inseridas manualmente pelo usuário. Este sistema tem a finalidade de assistência na aplicação dos vidros CEBRACE, no entanto levam em consideração as informações prestadas pelo usuário, sendo este o único responsável pelas mesmas. Neste sentido, A CEBRACE NÃO SE RESPONSABILIZA POR QUAISQUER ERROS, OMISSÕES OU IMPRECISÕES NAS INFORMAÇÕES PRESTADAS PELO USUÁRIO. Portanto, este documento não deve ser utilizado como memorial de cálculo e sim como uma ferramenta de especificação e auxílio na aplicação de vidros planos CEBRACE. O cliente declara que se responsabilizará perante quaisquer terceiros, por quaisquer atos e fatos oriundos da utilização dos produtos, inclusive no que diz respeito à emissão de ARTs e/ou RRTs quando se tratar de projetos.
As informações contidas nesse formulário foram baseadas nas normas brasileiras ABNT NBR 7199 e NBR 6123 e são para assistência na aplicação dos vidros CEBRACE, no entanto levam em consideração as informações prestadas pelo usuário, sendo este o único responsável pelas mesmas. Neste sentido, A CEBRACE NÃO SE RESPONSABILIZA POR QUAISQUER ERROS, OMISSÕES OU IMPRECISÕES NAS INFORMAÇÕES PRESTADAS PELO USUÁRIO. Portanto, este documento não deve ser utilizado como memorial de cálculo e sim como uma ferramenta de especificação e auxílio na aplicação de vidros planos CEBRACE. O cliente declara que se responsabilizará perante quaisquer terceiros, por quaisquer atos e fatos oriundos da utilização dos produtos, inclusive no que diz respeito à emissão de ARTs e/ou RRTs quando se tratar de projetos.
\");\n$templateCache.put(\"app/view/pressao-vento/passo-a-passo/quarto-passo/quarto-passo.tpl.html\",\"

10.

Informar dados do solicitante para emissão do relatório.

Cálculo de Espessura de Vidro

Dados da Região

{{vm.PressaoVentoModel.AplicacaoVidroExterno ? vm.retorno.Regiao : \\'Aplicação Interna\\'}}
{{vm.retorno.PressaoCalculo | number: 2}} Pa
{{vm.retorno.PressaoDinamica | number: 2}} Pa
{{vm.retorno.PressaoVento | number: 2}} Pa

Dados do Edifício

{{vm.retorno.AlturaEdificio}} metro(s)
{{vm.retorno.MaiorDimensaoEdificio | number: 2}} metro(s)
{{vm.retorno.MenorDimensaoEdificio | number: 2}} metro(s)

Dados do Vidro

  • {{vm.pegarPrimeiroNomeVidro(vidro.NomeVidro)}}
    • {{\\'Vidro \\' + ($index + 1) + \\': \\'}}{{vm.pegarPrimeiroNomeVidro(vidroNvl2.NomeVidro)}}
      • {{\\'Vidro \\' + ($parent.$index + 1) + \\'.\\' + ($index + 1) + \\': \\'}}{{vm.pegarPrimeiroNomeVidro(vidroNvl3.NomeVidro)}}
{{vm.retorno.AlturaVidro | number: 2}} metro(s)
{{vm.retorno.LarguraVidro | number: 2}} metro(s)
{{vm.retorno.AnguloVidro}} graus
{{vm.retorno.ApoioVidro}} lados apoiados

Resultado do Calculo

0\\\">
{{vm.montarExibicaoVidroAceito(vidro).Descricao}}
As informações contidas nesse formulário foram baseadas nas normas brasileiras ABNT NBR 7199 e NBR 6123 e são para assistência na aplicação dos vidros CEBRACE, no entanto levam em consideração as informações prestadas pelo usuário, sendo este o único responsável pelas mesmas. Neste sentido, A CEBRACE NÃO SE RESPONSABILIZA POR QUAISQUER ERROS, OMISSÕES OU IMPRECISÕES NAS INFORMAÇÕES PRESTADAS PELO USUÁRIO. Portanto, este documento não deve ser utilizado como memorial de cálculo e sim como uma ferramenta de especificação e auxílio na aplicação de vidros planos CEBRACE. O cliente declara que se responsabilizará perante quaisquer terceiros, por quaisquer atos e fatos oriundos da utilização dos produtos, inclusive no que diz respeito à emissão de ARTs e/ou RRTs quando se tratar de projetos.
\");\n$templateCache.put(\"app/view/pressao-vento/passo-a-passo/segundo-passo/segundo-passo.tpl.html\",\"

5.

Preencher os campos referentes aos \\\"Dados da edificação\\\".

Caso o vidro seja aplicado em apenas uma região do edifício, indicar no campo “Altura (H1)” a altura onde o vidro será aplicado com relação ao solo.

\");\n$templateCache.put(\"app/view/pressao-vento/passo-a-passo/terceiro-passo/terceiro-passo.tpl.html\",\"

6.

Nos campos referentes aos \\\"Dados do Vidro\\\", selecionar o tipo de vidro e preencher as informações quanto a suas dimensões.

Vale ressaltar que a escolha do tipo de vidro deve estar de acordo com o recomendado no item 4.8 Disposições Construtivas da norma NBR 7199.

7.

Selecionar o número de lados do vidro apoiado.




8.

Caso exista borda livre, clicar sobre a figura selecionando qual será a orientação da(s) borda(s) livre(s).



9.

Verificar o ângulo que a peça de vidro forma com a horizontal do prédio preenchendo no campo correspondente o valor positivo do ângulo.



\");\n$templateCache.put(\"app/view/tampo/passo-a-passo/primeiro-passo/primeiro-passo.tpl.html\",\"

1.

Selecione o tipo de vidro.

2.

Qual o Tipo do Tampo?

3.

Quais as dimensões da peça?

4.

Superficie toda apoiada?

5.

Altura em relação ao piso.

\");\n$templateCache.put(\"app/view/tampo/passo-a-passo/segundo-passo/segundo-passo.tpl.html\",\"

6.

Informar dados do solicitante para emissão do relatório.

Dados da Edificação e Vidro

Dados Fornecidos

{{vm.crudCalculoEspessura.Dados.Vidro.Nome}}
{{vm.crudCalculoEspessura.Dados.Vidro.Altura}}
{{vm.crudCalculoEspessura.Dados.Vidro.Largura}}

Resultado do Calculo

Tipo de Vidro2 Lâminas3 Lâminas4 Lâminas
Laminado Comum19+19=38 mm15+15+15=45 mm12+12+12+12=48 mm
Laminado Temperado10+10=20 mm8+8+8=24 mm6+6+6+6=24 mm
\");\n$templateCache.put(\"app/view/tampo/passo-a-passo/terceiro-passo/terceiro-passo.tpl.html\",\"

7.

Resultados obtidos.

Cálculo de Espessura de Vidro
{{vm.model.Nome}}
{{vm.model.Telefone | numeroTelefone}}
{{vm.model.Empresa}}
{{vm.model.Fax | numeroTelefone}}
{{vm.model.Obra}}
{{vm.model.Email}}

Resultado do Calculo

{{vm.model.tipoVidro.Descricao}}
{{vm.model.Largura | number: 2}} metros
{{vm.model.Comprimento | number: 2}} metros
{{vm.model.Diametro | number: 2}} metros
{{vm.model.SuperficieTodaApoiada ? \\'Sim\\' : \\'Não\\'}}
{{vm.model.AlturaAplicacao | number: 2}} metros
{{vm.model.RelatorioFinal | number: 2}} mm

Segundo NBR 14488 de 2010, O tampo, pela exigência de uso na estrutura do móvel e pela necessidade ergonômica de uso, requer que os cantos expostos sejam arredondados com um raio mínimo de 5 mm. Os tampos não fabricados com vidros de segurança devem ser apoiados no mínimo em 50% do perímetro e devem estar apoiados em duas regiões diametralmente opostas e distantes no máximo 100 mm da borda.

Para aplicações onde exista a possibilidade de choque térmico é recomendado o uso de vidro de segurança temperado.

\");\n$templateCache.put(\"app/view/visor-piscina/passo-a-passo/primeiro-passo/primeiro-passo.tpl.html\",\"

1.

Selecione o Tipo de Visor.

{{visor.Titulo}}

2.

Você selecionou {{vm.visorSelecionado().Titulo}}, Preencha os respectivos campos abaixo.

\");\n$templateCache.put(\"app/view/visor-piscina/passo-a-passo/terceiro-passo/terceiro-passo.tpl.html\",\"

4.

Resultados obtidos.

Cálculo de Espessura de Vidro
{{vm.model.RelatorioFinal.Nome}}
{{vm.model.RelatorioFinal.Telefone | numeroTelefone}}
{{vm.model.RelatorioFinal.Empresa}}
{{vm.model.RelatorioFinal.Fax | numeroTelefone}}
{{vm.model.RelatorioFinal.Obra}}
{{vm.model.RelatorioFinal.Email}}

Dados

{{vm.model.RelatorioFinal.AlturaVidro | number: 2}} metros
{{vm.model.RelatorioFinal.LarguraVidro | number: 2}} metros
{{vm.model.RelatorioFinal.AlturaAgua | number: 2}} metros

Considerado

{{vm.model.RelatorioFinal.TaxaTrabalhoAdmissivel | number: 2}} kg/cm³
{{vm.model.RelatorioFinal.TextoApoio}}

Resultado do Calculo

{{vm.model.RelatorioFinal.AreaVidro | number: 2}} m²
{{espessura.Vidro}}
{{espessura.EspessuraRecomendada | number: 2}} mm
{{espessura.Peso | number: 2}} kg

Observação

{{vm.model.RelatorioFinal.Observacao}}
O cálculo de espessura de vidros para visores de piscina, não contempla o cálculo de flecha admissível, que deve ser definida na etapa do projeto e acordado entre as partes. As informações contidas nesse são para assistência na aplicação dos vidros CEBRACE, no entanto levam em consideração as informações prestadas pelo usuário, sendo este o único responsável pelas mesmas. Neste sentido, A CEBRACE NÃO SE RESPONSABILIZA POR QUAISQUER ERROS, OMISSÕES OU IMPRECISÕES NAS INFORMAÇÕES PRESTADAS PELO USUÁRIO. Portanto, este documento não deve ser utilizado como memorial de cálculo e sim como uma ferramenta de especificação e auxílio na aplicação de vidros planos CEBRACE. O cliente declara que se responsabilizará perante quaisquer terceiros, por quaisquer atos e fatos oriundos da utilização dos produtos, inclusive no que diz respeito à emissão de ARTs e/ou RRTs quando se tratar de projetos
\");\n$templateCache.put(\"app/view/visor-piscina/passo-a-passo/segundo-passo/segundo-passo.tpl.html\",\"

3.

Informar dados do solicitante para emissão do relatório.

Dados da Edificação e Vidro

Dados Fornecidos

{{vm.crudCalculoEspessura.Dados.Vidro.Nome}}
{{vm.crudCalculoEspessura.Dados.Vidro.Altura}}
{{vm.crudCalculoEspessura.Dados.Vidro.Largura}}

Resultado do Calculo

Tipo de Vidro2 Lâminas3 Lâminas4 Lâminas
Laminado Comum19+19=38 mm15+15+15=45 mm12+12+12+12=48 mm
Laminado Temperado10+10=20 mm8+8+8=24 mm6+6+6+6=24 mm
\");}]);"],"sourceRoot":"/source/"}