{"context":{"domain":"danjuns-eleicoes2026"},"layers":{"ApplicationLayer":{"reference":"ApplicationLayer","availableInstances":[{"reference":"ComponentsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"SystemsDataSet","params":{"filter":{"domain":"data2"},"pagination":{"size":1},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSource"}}}},{"reference":"ExternalComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"SystemsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5e3b796d6228227ca637d0f4","name":"data2","domain":"data2","organization":"62292184611f480b3191c37c","visibility":"public","updatedAt":"2026-07-27T14:19:36.810Z"}]}},{"reference":"OrganizationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"DataComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"OneFileComponentInstancesDataSet","params":{"pagination":{"size":1},"master":{"dataset":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSet"}},"localField":"system","masterField":"_id"},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"FileComponentInstancesDataSource"}}}},{"reference":"ApplicationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ServiceComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@Data2TableDataSource","reference":"FileComponentInstancesDataSource","params":{"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}}]}},{"component":"data2-core@MemoryDataSource","reference":"EmptyDataSource","params":{"initialData":[]}},{"reference":"ComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"UserComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"DataComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ServiceComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ExternalComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ApplicationsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}}],"processesParams":{}},"HostApplicationLayer":{"reference":"HostApplicationLayer","availableInstances":[{"_id":"5f15ff190528b92601890f71","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"SystemsTableDataSource"}},"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"domain"}}},"pk":"_id","fields":[{"component":"data2-core-types@FieldReference","params":{"key":"_id"}},{"component":"data2-core-types@FieldReference","params":{"key":"name"}},{"component":"data2-core-types@FieldReference","params":{"key":"domain"}},{"component":"data2-core-types@FieldReference","params":{"key":"visibility"}},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization._id"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.name"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.billingStatus"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.publicTrial.active"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"settings.defaultAccessPolicy"}}},"break":true}],"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"staticPagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"policies":[{"component":"data2-core-auth@Policy","params":{"allow":{"params":{"actions":[{"params":{"components":[{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"_id"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"domain"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"}]},"component":"data2-core-logical-operators@Or"}]},"component":"data2-core-flow@Series"}}}]},"reference":"SystemsDataSet","updatedAt":"2026-08-07T21:51:24.037Z","createdAt":"2020-07-20T20:31:21.838Z"},{"_id":"5f1601ce0528b92601890f7c","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":1000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"sort":{"params.package":1,"params.component":1},"pk":"_id","autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"staticFilter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}},"filter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}}},"reference":"ComponentsDataSet","updatedAt":"2025-11-05T19:37:01.935Z","createdAt":"2020-07-20T20:42:54.898Z"},{"_id":"5f9041dbc8da12be8b94aea4","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":2000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"UserComponentsDataSet","updatedAt":"2025-11-06T21:06:58.095Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"65d8c4fabc9dbb8f94de8d53","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ExternalComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ExternalComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:23.742Z","createdAt":"2024-02-23T16:17:01.816Z"},{"reference":"SystemsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6ac135f6ea8ac94fb09605d9","name":"Eleicoes 2026","domain":"danjuns-eleicoes2026","visibility":"public","updatedAt":"2026-10-03T17:05:58.751Z","createdAt":"2026-10-03T17:05:58.751Z"}]}},{"reference":"ComponentsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5f52a278a575399a45d239b4","component":"data2-core-types@Component","params":{"package":"data2-core-primitives","component":"Router","interactions":{"component":"data2-core-types@FieldSet","params":{"fields":{"goBack":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.goBack","args":[]}}}},"icon":{"component":"data2-core-primitives@String","params":{"content":"arrow-left"}},"visibility":"public"}},"goTo":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"component":"data2-core-types@Reference","params":{"reference":"url"}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}}}]}},"parameters":[{"component":"data2-core-primitives@String","params":{"content":"url"}},{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}]},"break":true},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Path to route"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Path to redirect user"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Boolean"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Preserve Query"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Preserve query string parameters  preserve query parameters on navigating."}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"}]}},"open":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"pathname":{"component":"data2-core-types@Reference","params":{"reference":"value"}}}]}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}]}},"close":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":"close"}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"times"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}],"description":{"component":"data2-core-primitives@String","params":{"content":"Closes a window that was opened via router.open."}}}}}}}}},{"_id":"620d28658271aa4129919d89","component":"data2-core-types@Component","params":{"package":"data2-interface-services","component":"DeviceController","interactions":{"params":{"fields":{"postMessage":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@String","title":{"component":"data2-core-primitives@String","params":{"content":"data"}}}}]},"component":"data2-core-types@ComponentParameter"},"print":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"zoom":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Number"}},"title":{"component":"data2-core-primitives@String","params":{"content":"zoom"}},"visibility":"public"}}},"visibility":"public"},"component":"data2-core-types@ComponentParameter"}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"share":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}}},"component":"data2-core-types@ComponentParameter"},"clipboard.copy":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"clipboard.paste":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"download":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}]},"component":"data2-core-types@ComponentParameter"},"downloadUrl":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Url"}}}}]},"component":"data2-core-types@ComponentParameter"},"promptFiles":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"params":{"fields":{"multiple":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Multiple"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Whether or not to allow selecting multiple files"}},"component":"data2-core-primitives@Boolean"}},"acceptedFormats":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Accepted Formats"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Accepted file formats"}},"component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},"timeout":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Timeout"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Max milliseconds to wait for file upload"}},"component":"data2-core-primitives@Number"}}}},"component":"data2-core-types@FieldSet"}}}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"meetingRecord":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","definition":{"params":{"actions":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"meeting"}},"script":{"component":"data2-core-primitives@String","params":{"content":"(function() {\n  let mediaRecorder;\n  let audioChunks = [];\n  let combinedStream;\n  let audioContext;\n  \n  window.meetingCapture = async function() {\n    try {\n      // Solicitar acesso ao áudio da guia (e vídeo, que será ignorado depois)\n      const tabStream = await navigator.mediaDevices.getDisplayMedia({ \n        video: true, // Necessário para alguns navegadores\n        audio: true\n      });\n      \n      // Remover a trilha de vídeo\n      const tabAudioTrack = tabStream.getAudioTracks()[0];\n      \n      // Solicitar acesso ao microfone\n      const micStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n      const micAudioTrack = micStream.getAudioTracks()[0];\n      \n      // Criar um novo MediaStream com ambas as trilhas de áudio\n      combinedStream = new MediaStream([tabAudioTrack, micAudioTrack]);\n      \n      // Criar um contexto de áudio para misturar os streams\n      audioContext = new AudioContext();\n      const destination = audioContext.createMediaStreamDestination();\n      \n      // Conectar a trilha de áudio da guia\n      const tabSource = audioContext.createMediaStreamSource(new MediaStream([tabAudioTrack]));\n      tabSource.connect(destination);\n      \n      // Conectar a trilha de áudio do microfone\n      const micSource = audioContext.createMediaStreamSource(new MediaStream([micAudioTrack]));\n      micSource.connect(destination);\n      \n      // Iniciar gravação com o stream misturado\n      mediaRecorder = new MediaRecorder(destination.stream);\n      audioChunks = [];\n      mediaRecorder.ondataavailable = (e) => audioChunks.push(e.data);\n      mediaRecorder.start();\n      \n      console.log('Gravação iniciada. Chame meetingCaptureStop() para finalizar.');\n    } catch (error) {\n      console.error('Erro ao iniciar a captura:', error);\n    }\n  };\n  \n  window.meetingCaptureStop = function() {\n    return new Promise((resolve, reject) => {\n      if (!mediaRecorder) {\n        reject('Nenhuma gravação em andamento.');\n        return;\n      }\n      \n      mediaRecorder.onstop = () => {\n        const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });\n        combinedStream.getTracks().forEach(track => track.stop());\n        audioContext.close();\n        \n        resolve(audioBlob);\n        console.log('Gravação finalizada. O arquivo de áudio está pronto para upload.');\n      };\n      \n      mediaRecorder.stop();\n    });\n  };\n})();"}}},"component":"data2-core-web@Script"},{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCapture"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"meetingRecordStop":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}],"definition":{"params":{"actions":[{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCaptureStop"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"notify":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"private","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","parameters":{"title":{"params":{"component":"data2-core-primitives@String","index":{"component":"data2-core-primitives@Number","params":{"content":0}},"title":{"component":"data2-core-primitives@String","params":{"content":"title"}}},"component":"data2-core-types@ComponentParameter"},"sound":{"params":{"component":"data2-core-types@FileComponentUrlReference","index":{"component":"data2-core-primitives@Number","params":{"content":1}},"title":{"component":"data2-core-primitives@String","params":{"content":"sound"}}},"component":"data2-core-types@ComponentParameter"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}}]},"component":"data2-core-types@ComponentParameter"}}},"component":"data2-core-types@FieldSet"}}},{"_id":"6ac13f0ec1d9b5fa79cadb12","component":"data2-core-types@Component","system":"6ac135f6ea8ac94fb09605d9","params":{"extends":"data2-core-primitives@Block","component":"eleicoes-app","package":"danjuns-eleicoes2026","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"const LS_FAV = 'eleicoes26.interessantes'\nconst LS_COLA = 'eleicoes26.cola'\nconst LS_PRIV = 'eleicoes26.privado'\n\nconst CARGOS = [\n  { k: 'dep_federal', label: 'Dep. Federal', curto: 'Federal', dig: 4, vagas: 1 },\n  { k: 'dep_estadual', label: 'Dep. Estadual', curto: 'Estadual', dig: 5, vagas: 1 },\n  { k: 'senador', label: 'Senado', curto: 'Senado', dig: 3, vagas: 2 },\n  { k: 'governador', label: 'Governador', curto: 'Governo', dig: 2, vagas: 1 },\n  { k: 'presidente', label: 'Presidente', curto: 'Presid.', dig: 2, vagas: 1 },\n]\nconst CRIT = [\n  ['longo_prazo', 'Projeto de longo prazo', 'Longo prazo'],\n  ['soberania', 'Soberania (EUA e China, indústria própria)', 'Soberania'],\n  ['educacao', 'Educação', 'Educação'],\n  ['industria_tec', 'Indústria e tecnologia', 'Indústria/tec'],\n  ['infra', 'Infraestrutura', 'Infraestrutura'],\n]\nconst NIVEIS = {\n  condenado: { r: 1, label: 'Condenado', cls: 'n1' },\n  reu: { r: 2, label: 'Denunciado / réu', cls: 'n2' },\n  investigado: { r: 3, label: 'Investigado', cls: 'n3' },\n  administrativo: { r: 4, label: 'Irregularidade administrativa', cls: 'n4' },\n  citado: { r: 5, label: 'Citado / entorno', cls: 'n5' },\n  alegacao: { r: 6, label: 'Alegação sem prova', cls: 'n6' },\n  encerrado: { r: 7, label: 'Encerrado (absolvido, arquivado ou anulado)', cls: 'n7' },\n}\n\nconst SPRITE = 'https://danjuns-eleicoes2026.data2.media/file/Iwunqak2tv1dJapSF0WjH'\nconst SP = { w: 120, h: 150, cols: 8, rows: 5 }\nconst POS = {\"lula\":[0,0],\"flavio\":[1,0],\"cury\":[2,0],\"caiado\":[3,0],\"renan\":[4,0],\"zema\":[5,0],\"samara\":[6,0],\"grassi\":[7,0],\"edmilson\":[0,1],\"hertz\":[1,1],\"ruipimenta\":[2,1],\"clariana\":[3,1],\"avalanche\":[4,1],\"tarcisio\":[5,1],\"haddad\":[6,1],\"vera\":[7,1],\"machado\":[0,2],\"vivian\":[1,2],\"izadora\":[2,2],\"marina\":[3,2],\"tebet\":[4,2],\"prado\":[5,2],\"derrite\":[6,2],\"rufino\":[7,2],\"soninha\":[0,3],\"schiavetto\":[1,3],\"maira\":[2,3],\"marcioalves\":[3,3],\"eliana\":[4,3],\"william\":[5,3],\"cesaretti\":[6,3],\"weller\":[7,3],\"maahs\":[0,4],\"salles\":[1,4],\"alvino\":[2,4],\"gambale\":[3,4],\"lucena\":[4,4],\"caiocunha\":[5,4],\"katia\":[6,4]}\nconst BLOCOS = {\n  governo: { label: 'Base de Lula', cls: 'bg' },\n  oposicao: { label: 'Oposição a Lula', cls: 'bo' },\n  centro: { label: 'Centro (negocia com qualquer governo)', curto: 'Centro', cls: 'bc' },\n  esq_rad: { label: 'Esquerda fora da base', cls: 'br' },\n}\nfunction blocoChip(r) {\n  const b = BLOCOS[r.bloco]\n  return b ? `<span class=\"bloco ${b.cls}\">${esc(b.curto || b.label)}</span>` : ''\n}\nconst SPRITES = [{ url: SPRITE, cols: SP.cols, rows: SP.rows, pos: POS }]\nfunction avatar(r, w) {\n  const h = Math.round(w * 1.25)\n  const s = SPRITES.find(x => x.pos[r.slug])\n  if (s) {\n    const p = s.pos[r.slug]\n    return `<div class=\"ph\" role=\"img\" aria-label=\"Foto de ${esc(r.nome)}\" style=\"width:${w}px;height:${h}px;background-image:url('${s.url}');background-size:${w * s.cols}px ${h * s.rows}px;background-position:-${p[0] * w}px -${p[1] * h}px\"></div>`\n  }\n  const ini = String(r.nome || '?').replace(/[^A-Za-zÀ-ÿ ]/g, ' ').trim().split(/\\s+/).filter(x => x.length > 2 || /^[A-ZÀ-Þ]/.test(x)).slice(0, 2).map(x => x[0]).join('').toUpperCase() || '?'\n  return `<div class=\"ph ini ${(BLOCOS[r.bloco] || {}).cls || ''}\" style=\"width:${w}px;height:${h}px;font-size:${Math.round(w * 0.36)}px\">${esc(ini)}</div>`\n}\n// --- alinhamento presidente x Congresso, governador x Assembleia ---\nfunction opostos(a, b) {\n  return (a === 'governo' && b === 'oposicao') || (a === 'oposicao' && b === 'governo') || (a === 'esq_rad' && b === 'oposicao') || (a === 'oposicao' && b === 'esq_rad')\n}\nfunction alinhamento(d2, all) {\n  const bySlug = {}; all.forEach(r => { bySlug[r.slug] = r })\n  const cl = cola(d2)\n  const pick = k => arr(cl[k]).map(s => bySlug[s]).filter(Boolean)\n  const pres = pick('presidente')[0], gov = pick('governador')[0]\n  const congresso = pick('dep_federal').concat(pick('senador'))\n  const est = pick('dep_estadual')\n  const avisos = []\n  const nomes = xs => xs.map(x => x.nome).join(', ')\n  if (pres && congresso.length) {\n    const contra = congresso.filter(c => opostos(pres.bloco, c.bloco))\n    const centro = congresso.filter(c => c.bloco === 'centro')\n    if (pres.bloco === 'esq_rad') {\n      avisos.push({ n: 'medio', t: `${pres.nome} é de um partido sem bancada relevante no Congresso. Qualquer que seja o Congresso, um governo dele teria muita dificuldade para aprovar o próprio programa.` })\n    }\n    if (contra.length >= 2 || (contra.length && contra.length === congresso.length)) {\n      avisos.push({ n: 'alto', t: `Cola dividida: você escolheu ${pres.nome} (${BLOCOS[pres.bloco].label}) para presidente, mas ${contra.length} de ${congresso.length} dos seus votos para o Congresso vão para quem faz oposição a esse campo (${nomes(contra)}). Se o Congresso eleito saísse assim, o governo teria dificuldade para aprovar o que prometeu, e o Congresso teria motivo para travar a pauta do presidente.` })\n    } else if (contra.length === 1) {\n      avisos.push({ n: 'medio', t: `Um voto seu para o Congresso (${nomes(contra)}) vai para o campo oposto ao de ${pres.nome}. Pode ser uma escolha consciente (ter contrapeso); só vale saber.` })\n    }\n    if (centro.length && !contra.length) {\n      avisos.push({ n: 'info', t: `${nomes(centro)} ${centro.length > 1 ? 'são' : 'é'} de partido de centro, que costuma negociar com qualquer governo: apoio possível, mas em troca de cargos e emendas.` })\n    }\n  }\n  if (gov && est.length) {\n    const contra = est.filter(c => opostos(gov.bloco, c.bloco))\n    if (contra.length) avisos.push({ n: 'medio', t: `Na esfera estadual: seu deputado estadual (${nomes(contra)}) é do campo oposto ao de ${gov.nome}. A Assembleia é quem aprova (ou trava) os projetos do governador.` })\n  }\n  if (pres && gov && opostos(pres.bloco, gov.bloco)) {\n    avisos.push({ n: 'info', t: `Presidente (${pres.nome}) e governador (${gov.nome}) de campos opostos. É comum e funciona, mas parcerias federais (verba para metrô, CPTM, saúde) tendem a ser mais difíceis.` })\n  }\n  const temBase = (pres && congresso.length) || (gov && est.length)\n  if (temBase && !avisos.some(a => a.n === 'alto' || a.n === 'medio')) {\n    avisos.unshift({ n: 'ok', t: 'Cola coerente: seus votos para o Legislativo estão no mesmo campo (ou no centro) do Executivo que você escolheu.' })\n  }\n  return avisos\n}\nfunction avisosBlock(avs) {\n  if (!avs.length) return ''\n  const icon = { alto: '⚠️', medio: '🟡', info: 'ℹ️', ok: '✅' }\n  return `<div class=\"avisos\">${avs.map(a => `<div class=\"aviso a-${a.n}\"><span>${icon[a.n]}</span><p>${esc(a.t)}</p></div>`).join('')}\n    <p class=\"muted small\">Os blocos seguem as alianças de 2026 (quem apoia ou se opõe a Lula). É uma simplificação: deputados às vezes votam fora do bloco. Seu voto sozinho não muda o tamanho das bancadas; o aviso fala da coerência da sua escolha.</p></div>`\n}\n\nfunction esc(s) {\n  return String(s == null ? '' : s).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;')\n}\nfunction lsGet(k, fb) {\n  try { const v = window.localStorage.getItem(k); return v ? JSON.parse(v) : fb } catch (e) { return fb }\n}\nfunction lsSet(k, v) {\n  try { window.localStorage.setItem(k, JSON.stringify(v)) } catch (e) {}\n}\nfunction cargoOf(k) { return CARGOS.find(c => c.k === k) || CARGOS[0] }\nfunction favs(d2) { return Array.isArray(d2.state.fav) ? d2.state.fav : [] }\nfunction cola(d2) { return d2.state.cola && typeof d2.state.cola === 'object' ? d2.state.cola : {} }\nfunction arr(x) { return Array.isArray(x) ? x : [] }\nfunction host(u) { try { return new URL(u).hostname.replace(/^www\\./, '') } catch (e) { return u } }\n\nfunction piorNivel(r) {\n  const list = arr(r.escandalos).filter(e => e && NIVEIS[e.nivel] && e.nivel !== 'encerrado')\n  if (!list.length) return null\n  return list.map(e => NIVEIS[e.nivel]).sort((a, b) => a.r - b.r)[0]\n}\nfunction fichaBadge(r) {\n  const p = piorNivel(r)\n  if (p) return `<span class=\"badge ${p.cls}\">${esc(p.label)}</span>`\n  if (r.verificacao === 'minima') return `<span class=\"badge nv\">Ficha não verificada</span>`\n  if (r.verificacao === 'parcial') return `<span class=\"badge ok\">Nada encontrado (busca parcial)</span>`\n  return `<span class=\"badge ok\">Nada pendente encontrado</span>`\n}\nfunction pips(v) {\n  if (v === null || v === undefined || v === '') return `<span class=\"pips none\">sem dados</span>`\n  const n = Number(v)\n  if (n === 0) return `<span class=\"pips zero\">contraria</span>`\n  let s = ''\n  for (let i = 1; i <= 3; i++) s += `<i class=\"${i <= n ? 'on' : ''}\"></i>`\n  return `<span class=\"pips\">${s}</span>`\n}\nfunction hasCrit(r) {\n  const c = r.criterios || {}\n  return CRIT.some(([k]) => c[k] !== null && c[k] !== undefined)\n}\nfunction critBlock(r, compact) {\n  if (!hasCrit(r)) return compact ? '' : `<p class=\"muted small\">Sem avaliação pelos seus critérios (pouca informação).</p>`\n  const c = r.criterios || {}\n  return `<div class=\"crit ${compact ? 'compact' : ''}\">${CRIT.map(([k, l, s]) =>\n    `<div class=\"critrow\"><span class=\"cl\">${esc(compact ? s : l)}</span>${pips(c[k])}</div>`).join('')}</div>`\n}\nfunction escBlock(r) {\n  const list = arr(r.escandalos).filter(e => e && NIVEIS[e.nivel])\n  if (!list.length) {\n    return `<p class=\"small ${r.verificacao === 'minima' ? 'muted' : ''}\">${r.verificacao === 'minima'\n      ? 'Nada encontrado, mas a busca foi mínima: não quer dizer que a ficha esteja limpa.'\n      : 'Nenhuma condenação, investigação ou alegação encontrada.'}</p>`\n  }\n  return list.slice().sort((a, b) => NIVEIS[a.nivel].r - NIVEIS[b.nivel].r).map(e =>\n    `<div class=\"esc\"><span class=\"badge ${NIVEIS[e.nivel].cls}\">${esc(NIVEIS[e.nivel].label)}</span><p>${esc(e.texto)}</p></div>`).join('')\n}\nfunction listBlock(title, items) {\n  const a = arr(items).filter(Boolean)\n  if (!a.length) return ''\n  return `<h4>${esc(title)}</h4><ul>${a.map(x => `<li>${esc(x)}</li>`).join('')}</ul>`\n}\nfunction votosBlock(r) {\n  const v = arr(r.votos).filter(Boolean)\n  if (!v.length) return ''\n  return `<h4>Votos importantes</h4><div class=\"votos\">${v.map(x => {\n    const s = String(x.voto || '')\n    const cls = /^sim/i.test(s) ? 'vs' : /^n[aã]o$/i.test(s) ? 'vn' : 'vo'\n    return `<div class=\"voto\"><span>${esc(x.tema)}</span><b class=\"${cls}\">${esc(s)}</b></div>`\n  }).join('')}</div>`\n}\nfunction notaClaude(r) {\n  if (!r.nota_claude) return ''\n  return `<div class=\"claude\"><b>💬 Nota do Claude</b><p>${esc(r.nota_claude)}</p></div>`\n}\nfunction detalhes(r) {\n  return `<div class=\"det\">\n    ${notaClaude(r)}\n    ${r.perfil ? `<p>${esc(r.perfil)}</p>` : ''}\n    ${BLOCOS[r.bloco] ? `<p class=\"small\"><b>Bloco:</b> ${esc(BLOCOS[r.bloco].label)}</p>` : ''}\n    <h4>Pelos seus critérios <span class=\"muted small\">(avaliação do Claude, 0 a 3)</span></h4>\n    ${critBlock(r, false)}\n    ${r.criterios_nota ? `<p class=\"leitura\">${esc(r.criterios_nota)}</p>` : ''}\n    ${listBlock('Propostas', r.propostas)}\n    ${listBlock('Histórico e resultados', r.historico)}\n    ${votosBlock(r)}\n    ${r.stf ? `<h4>STF e crise do Master</h4><p>${esc(r.stf)}</p>` : ''}\n    <h4>Escândalos e processos (separados por gravidade)</h4>\n    ${escBlock(r)}\n    ${listBlock('Checagens de fatos', r.checagens)}\n    ${arr(r.fontes).length ? `<h4>Fontes</h4><div class=\"fontes\">${arr(r.fontes).map(u =>\n      `<a href=\"${esc(u)}\" target=\"_blank\" rel=\"noopener\">${esc(host(u))}</a>`).join('')}</div>` : ''}\n  </div>`\n}\nfunction colaHas(d2, r) { return arr(cola(d2)[r.cargo]).includes(r.slug) }\n\nfunction card(d2, r) {\n  const fav = favs(d2).includes(r.slug)\n  const open = d2.state.open === r.slug\n  const inCola = colaHas(d2, r)\n  return `<article class=\"card ${r.destaque ? 'dest' : ''} ${r.alerta ? 'alert' : ''}\" data-key=\"${esc(r.slug)}\">\n    <div class=\"top\">\n      ${avatar(r, 60)}\n      <div class=\"who\">\n        <div class=\"nome\">${esc(r.nome)}${r.nota_claude ? ' <span class=\"chip-claude\">💬 Claude</span>' : ''}</div>\n        <div class=\"sub\">${esc(r.partido)}${r.cidade ? ' · ' + esc(r.cidade) : ''}</div>\n        <div class=\"rowchips\"><span class=\"num\">${esc(r.numero)}</span>${blocoChip(r)}</div>\n        ${r.pesquisa ? `<div class=\"poll\">${esc(r.pesquisa)}</div>` : ''}\n      </div>\n    </div>\n    ${r.resumo ? `<p class=\"resumo ${open ? '' : 'clamp'}\"><b>Plano em resumo:</b> ${esc(r.resumo)}</p>` : ''}\n    ${r.alerta ? `<div class=\"alerta\">⚠️ ${esc(r.alerta)}</div>` : ''}\n    <div class=\"badges\">${fichaBadge(r)}</div>\n    ${critBlock(r, true)}\n    <div class=\"acts\">\n      <button data-act=\"fav\" data-slug=\"${esc(r.slug)}\" class=\"${fav ? 'on' : ''}\">${fav ? '★ Interessante' : '☆ Interessante'}</button>\n      <button data-act=\"open\" data-slug=\"${esc(r.slug)}\">${open ? 'Fechar ▴' : 'Detalhes ▾'}</button>\n      ${r.alerta && /anulado|n[aã]o use/i.test(r.alerta) ? '' :\n        `<button data-act=\"cola\" data-slug=\"${esc(r.slug)}\" class=\"${inCola ? 'pick' : ''}\">${inCola ? '✓ Na cola' : '+ Cola'}</button>`}\n    </div>\n    ${open ? detalhes(r) : ''}\n  </article>`\n}\n\nfunction cargoChips(d2, all) {\n  const cur = d2.state.cargo || 'presidente'\n  return `<div class=\"chips\">${CARGOS.map((c, i) => {\n    const nFav = all.filter(r => r.cargo === c.k && favs(d2).includes(r.slug)).length\n    return `<button data-act=\"cargo\" data-k=\"${c.k}\" class=\"${cur === c.k ? 'on' : ''}\"><small>${i + 1}º</small> ${esc(c.label)}${nFav ? ` <em>${nFav}★</em>` : ''}</button>`\n  }).join('')}</div>`\n}\n\nfunction viewLista(d2, all) {\n  const cargo = d2.state.cargo || 'presidente'\n  const q = String(d2.state.q || '').toLowerCase().trim()\n  const so = !!d2.state.soFav\n  const soClaude = !!d2.state.soClaude\n  let rows = all.filter(r => r.cargo === cargo)\n  if (so) rows = rows.filter(r => favs(d2).includes(r.slug))\n  if (soClaude) rows = rows.filter(r => r.nota_claude)\n  if (q) rows = rows.filter(r => [r.nome, r.numero, r.partido, r.cidade].join(' ').toLowerCase().includes(q))\n  const isDep = cargo === 'dep_federal' || cargo === 'dep_estadual'\n  const reg = d2.state.regiao || 'todas'\n  if (isDep && reg !== 'todas') rows = rows.filter(r => (r.regiao || 'alto_tiete') === reg)\n  const nCap = all.filter(r => r.cargo === cargo && r.regiao === 'capital').length\n  rows.sort((a, b) => (a.ordem || 99) - (b.ordem || 99))\n  const c = cargoOf(cargo)\n  const intro = {\n    senador: 'São 2 votos para o Senado (2 números diferentes). Os 4 primeiros estão em empate técnico.',\n    dep_federal: 'Você pode votar em qualquer candidato do estado. Aqui estão os com base no Alto Tietê e na capital. O voto vai primeiro para o partido e pode ajudar a eleger outro nome da lista.',\n    dep_estadual: 'Você pode votar em qualquer candidato do estado. Aqui estão os com base no Alto Tietê e na capital. O voto vai primeiro para o partido e pode ajudar a eleger outro nome da lista.',\n    governador: 'Tarcísio pode vencer já no 1º turno, segundo as pesquisas.',\n    presidente: 'Tudo indica 2º turno entre Lula e Flávio. No 1º turno, vale votar em quem você realmente prefere.',\n  }[cargo]\n  return `${cargoChips(d2, all)}\n    <div class=\"filters\">\n      <input class=\"q\" type=\"search\" placeholder=\"Buscar nome, número, partido…\" value=\"${esc(d2.state.q || '')}\"/>\n      <label><input type=\"checkbox\" data-act=\"soFav\" ${so ? 'checked' : ''}/> Só ★</label>\n      <label><input type=\"checkbox\" data-act=\"soClaude\" ${soClaude ? 'checked' : ''}/> Só com 💬</label>\n    </div>\n    ${isDep ? `<div class=\"chips reg\">${[['todas', 'Todas as regiões'], ['alto_tiete', 'Mogi / Alto Tietê'], ['capital', 'Capital (SP)']].filter(([k]) => k !== 'capital' || nCap).map(([k, l]) => `<button data-act=\"regiao\" data-k=\"${k}\" class=\"${reg === k ? 'on' : ''}\">${esc(l)}</button>`).join('')}</div>` : ''}\n    <p class=\"intro\">${esc(intro)} <span class=\"muted\">${c.dig} dígitos${c.vagas > 1 ? ' · 2 votos' : ''}.</span></p>\n    ${rows.length ? rows.map(r => card(d2, r)).join('') : `<p class=\"empty\">Nenhum candidato com esses filtros.</p>`}`\n}\n\nfunction viewComparar(d2, all) {\n  const cargo = d2.state.cargo || 'presidente'\n  const cols = all.filter(r => r.cargo === cargo && favs(d2).includes(r.slug)).sort((a, b) => (a.ordem || 99) - (b.ordem || 99))\n  if (!cols.length) {\n    return `${cargoChips(d2, all)}<div class=\"empty\"><p>Nenhum candidato marcado como ★ Interessante em <b>${esc(cargoOf(cargo).label)}</b>.</p><p>Na aba <b>Candidatos</b>, toque em ☆ nos que quer comparar.</p></div>`\n  }\n  const sec = (title, fn) => `<div class=\"crow\"><div class=\"ctitle\">${esc(title)}</div><div class=\"ccells\">${cols.map(r => `<div class=\"cell\">${fn(r)}</div>`).join('')}</div></div>`\n  return `${cargoChips(d2, all)}\n    <p class=\"muted small\">Arraste para o lado para ver todos. ${cols.length} candidato(s).</p>\n    <div class=\"cmp\" style=\"--n:${cols.length}\">\n      <div class=\"crow head\"><div class=\"ctitle\"></div><div class=\"ccells\">${cols.map(r => {\n        const inCola = colaHas(d2, r)\n        return `<div class=\"cell\"><div class=\"chead\">${avatar(r, 52)}<div><div class=\"nome\">${esc(r.nome)}</div><div class=\"sub\">${esc(r.partido)}</div><div class=\"rowchips\"><span class=\"num sm\">${esc(r.numero)}</span>${blocoChip(r)}</div></div></div>\n          ${r.alerta ? `<div class=\"alerta sm\">⚠️ ${esc(r.alerta)}</div>` : ''}\n          <div class=\"acts\">\n            ${r.alerta && /anulado|n[aã]o use/i.test(r.alerta) ? '' : `<button data-act=\"cola\" data-slug=\"${esc(r.slug)}\" class=\"${inCola ? 'pick' : ''}\">${inCola ? '✓ Na cola' : 'Escolher p/ cola'}</button>`}\n            <button data-act=\"fav\" data-slug=\"${esc(r.slug)}\" class=\"on\">★ Tirar</button>\n          </div></div>`\n      }).join('')}</div></div>\n      ${cols.some(r => r.nota_claude) ? sec('💬 Nota do Claude', r => r.nota_claude ? `<p class=\"claude-in\">${esc(r.nota_claude)}</p>` : '<span class=\"muted\">—</span>') : ''}\n      ${sec('Plano em resumo', r => r.resumo ? esc(r.resumo) : (arr(r.propostas).length ? `<ul>${arr(r.propostas).slice(0, 3).map(x => `<li>${esc(x)}</li>`).join('')}</ul>` : '<span class=\"muted\">—</span>'))}\n      ${sec('Pesquisa', r => esc(r.pesquisa || '—'))}\n      ${sec('Seus critérios', r => critBlock(r, false) + (r.criterios_nota ? `<p class=\"leitura small\">${esc(r.criterios_nota)}</p>` : ''))}\n      ${sec('Escândalos e processos', r => `<div class=\"badges\">${fichaBadge(r)}</div>${escBlock(r)}`)}\n      ${sec('Propostas', r => arr(r.propostas).length ? `<ul>${arr(r.propostas).map(x => `<li>${esc(x)}</li>`).join('')}</ul>` : '<span class=\"muted\">—</span>')}\n      ${sec('Histórico', r => arr(r.historico).length ? `<ul>${arr(r.historico).map(x => `<li>${esc(x)}</li>`).join('')}</ul>` : '<span class=\"muted\">—</span>')}\n      ${cols.some(r => arr(r.votos).length) ? sec('Votos importantes', r => votosBlock(r).replace('<h4>Votos importantes</h4>', '') || '<span class=\"muted\">—</span>') : ''}\n      ${cols.some(r => r.stf) ? sec('STF', r => r.stf ? esc(r.stf) : '<span class=\"muted\">—</span>') : ''}\n    </div>`\n}\n\nfunction viewCola(d2, all) {\n  const cl = cola(d2)\n  const priv = !!d2.state.privado\n  const bySlug = {}\n  all.forEach(r => { bySlug[r.slug] = r })\n  const linhas = []\n  CARGOS.forEach(c => {\n    for (let i = 0; i < c.vagas; i++) {\n      const slug = arr(cl[c.k])[i]\n      const r = slug ? bySlug[slug] : null\n      linhas.push({ c, i, r })\n    }\n  })\n  const done = linhas.filter(l => l.r).length\n  return `<div class=\"colahead\">\n      <div><b>Minha cola</b><div class=\"muted small\">Ordem da urna · ${done}/${linhas.length} escolhidos</div></div>\n      <label class=\"priv\"><input type=\"checkbox\" data-act=\"privado\" ${priv ? 'checked' : ''}/> Esconder nomes</label>\n    </div>\n    ${avisosBlock(alinhamento(d2, all))}\n    <div class=\"cola\">${linhas.map(({ c, i, r }) => {\n      const label = c.vagas > 1 ? `${c.label} (${i + 1}º voto)` : c.label\n      const digits = r ? String(r.numero).split('') : Array(c.dig).fill('')\n      return `<div class=\"lin ${r ? '' : 'vazio'}\">\n        <div class=\"lc\">${esc(label)}<span class=\"muted small\"> · ${c.dig} dígitos</span></div>\n        <div class=\"dig\">${digits.map(d => `<span>${esc(d)}</span>`).join('')}</div>\n        <div class=\"ln\">${r ? (priv ? '<span class=\"muted\">••••••</span>' : `<span class=\"lnw\">${avatar(r, 28)}<span>${esc(r.nome)} <span class=\"muted\">· ${esc(r.partido)}</span> ${blocoChip(r)}</span></span>`) : '<span class=\"muted\">Ainda não escolhido</span>'}</div>\n        ${r ? `<button class=\"x\" data-act=\"rmcola\" data-cargo=\"${c.k}\" data-slug=\"${esc(r.slug)}\" aria-label=\"Remover\">✕</button>` : `<button class=\"x add\" data-act=\"gocargo\" data-k=\"${c.k}\">Escolher</button>`}\n      </div>`\n    }).join('')}</div>\n    <div class=\"colaacts\">\n      <button data-act=\"copiar\">📋 Copiar números</button>\n      <button data-act=\"limpar\" class=\"danger\">Limpar cola</button>\n    </div>\n    ${d2.state.copiado ? `<p class=\"ok small\">Copiado!</p>` : ''}\n    <div class=\"info\">\n      <p>🔒 Sua cola e os ★ ficam salvos <b>só neste aparelho</b> (localStorage do navegador). Nada vai para o servidor.</p>\n      <p>📵 O celular não entra na cabine. Passe os números para um papel antes de sair de casa.</p>\n      <p>🕗 Votação das 8h às 17h (horário de Brasília). Leve documento com foto ou o e-Título.</p>\n    </div>`\n}\n\nfunction legenda() {\n  return `<details class=\"leg\"><summary>Como ler este app</summary>\n    <p><b>Critérios (0 a 3)</b>: avaliação do Claude sobre o quanto as propostas e o histórico atendem ao que você pediu: projeto de longo prazo, soberania pragmática (EUA <i>e</i> China, sem depender deles, com indústria e tecnologia nacionais), educação, indústria e tecnologia, infraestrutura. \"contraria\" = vai na direção oposta; \"sem dados\" = nada encontrado.</p>\n    <p><b>Escândalos, do mais grave ao menos grave:</b></p>\n    <div class=\"legn\">${Object.values(NIVEIS).map(n => `<span class=\"badge ${n.cls}\">${esc(n.label)}</span>`).join('')}</div>\n    <p class=\"small muted\">Delação de Vorcaro = rejeitada pela PF e pela PGR, por isso conta como \"alegação sem prova\". Dados levantados em 03/10/2026 na imprensa, em checadores e nos sites da Câmara e da Alesp. O site do TSE (DivulgaCand) não pôde ser consultado: confira lá.</p>\n  </details>`\n}\n\nexport default {\n  css: `\n  :host{all:initial}\n  *{box-sizing:border-box}\n  .app{--bg:#f6f5f2;--card:#fff;--ink:#16181d;--mut:#6b7280;--line:#e5e2db;--acc:#1f6f5c;--acc2:#e8f3ef;--gold:#b7791f;\n    position:absolute;inset:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;background:var(--bg);color:var(--ink);-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;\n    font:15px/1.45 -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Inter,sans-serif;-webkit-font-smoothing:antialiased}\n  @media (prefers-color-scheme:dark){.app{--bg:#111315;--card:#1b1e21;--ink:#eceae6;--mut:#9aa0a6;--line:#2c3035;--acc:#4fbf9f;--acc2:#1d2e29;--gold:#e0a84a}}\n  .wrap{max-width:820px;margin:0 auto;padding:0 max(14px, env(safe-area-inset-left)) calc(90px + env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-right))}\n  header{position:sticky;top:0;z-index:5;background:var(--bg);padding:calc(12px + env(safe-area-inset-top)) 14px 0;margin:0 -14px;border-bottom:1px solid var(--line)}\n  button{touch-action:manipulation;-webkit-appearance:none;appearance:none}\n  .retry{margin-top:10px;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:9px;padding:10px 16px;font:600 15px inherit;font-family:inherit}\n  input[type=checkbox]{width:18px;height:18px;accent-color:var(--acc)}\n  .ttl{display:flex;justify-content:space-between;align-items:baseline;gap:8px}\n  h1{font-size:19px;margin:0;letter-spacing:-.01em}\n  .date{font-size:12px;color:var(--mut)}\n  .tabs{display:flex;gap:4px;margin-top:10px}\n  .tabs button{flex:1;border:0;background:none;padding:10px 4px;font:600 14px inherit;color:var(--mut);border-bottom:3px solid transparent;cursor:pointer;font-family:inherit}\n  .tabs button.on{color:var(--ink);border-color:var(--acc)}\n  .chips{display:flex;gap:6px;overflow-x:auto;padding:12px 0 6px;scrollbar-width:none}\n  .chips::-webkit-scrollbar{display:none}\n  .chips button{min-height:36px;white-space:nowrap;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:7px 12px;font:500 13px inherit;cursor:pointer;font-family:inherit}\n  .chips button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}\n  .chips.reg{padding-top:2px}.chips.reg button{font-size:12.5px;min-height:32px;padding:5px 11px}\n  .chips.reg button.on{background:var(--acc);border-color:var(--acc);color:#fff}\n  .chips small{opacity:.6} .chips em{font-style:normal;color:var(--gold);font-weight:700}\n  .filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:6px 0}\n  .filters input.q{flex:1;min-width:160px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);font-size:16px;font-family:inherit;-webkit-appearance:none;appearance:none}\n  .filters label{font-size:13px;color:var(--mut);display:flex;gap:4px;align-items:center;white-space:nowrap}\n  .intro{font-size:13px;margin:6px 0 12px}\n  .muted{color:var(--mut)} .small{font-size:12.5px}\n  .card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:10px}\n  .card.dest{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}\n  .top{display:flex;gap:12px;align-items:flex-start}\n  .num{font:700 20px ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--ink);color:var(--bg);border-radius:10px;padding:8px 10px;min-width:58px;text-align:center;letter-spacing:.06em}\n  .num.sm{font-size:16px;min-width:0;display:inline-block;padding:4px 8px}\n  .nome{font-weight:700;font-size:16px;line-height:1.25}\n  .sub{font-size:13px;color:var(--mut)}\n  .poll{font-size:12px;color:var(--mut);margin-top:2px}\n  .chip-claude{font-size:11px;background:var(--acc2);color:var(--acc);border-radius:999px;padding:1px 7px;font-weight:600;vertical-align:middle}\n  .alerta{margin-top:10px;background:#fde8e8;color:#9b1c1c;border-radius:8px;padding:8px 10px;font-size:13px;font-weight:600}\n  .alerta.sm{font-size:12px;padding:6px 8px}\n  @media (prefers-color-scheme:dark){.alerta{background:#3b1717;color:#fca5a5}}\n  .badges{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}\n  .badge{display:inline-block;font-size:11.5px;font-weight:700;border-radius:6px;padding:3px 8px;line-height:1.3}\n  .n1{background:#b91c1c;color:#fff}.n2{background:#ea580c;color:#fff}.n3{background:#f59e0b;color:#1f1300}\n  .n4{background:#fde68a;color:#5b4300}.n5{background:#cbd5e1;color:#1e293b}.n6{background:#e5e7eb;color:#4b5563}\n  .n7{background:#d1fae5;color:#065f46}.ok{background:#d1fae5;color:#065f46}.nv{background:#eef0f2;color:#6b7280;border:1px dashed #9ca3af}\n  .crit{margin-top:10px;display:grid;gap:4px}\n  .crit.compact{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:4px 16px}\n  .critrow{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12.5px}\n  .crit.compact .cl{color:var(--mut)}\n  .pips{display:inline-flex;gap:3px;flex:none}\n  .pips i{width:14px;height:8px;border-radius:3px;background:var(--line)}\n  .pips i.on{background:var(--acc)}\n  .pips.none{font-size:11px;color:var(--mut)}\n  .pips.zero{font-size:11px;color:#b91c1c;font-weight:700}\n  .acts{display:flex;gap:6px;margin-top:12px;flex-wrap:wrap}\n  .acts button,.colaacts button{min-height:40px;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:9px;padding:8px 11px;font:600 13px inherit;cursor:pointer;font-family:inherit}\n  .acts button.on{border-color:var(--gold);color:var(--gold)}\n  .acts button.pick{background:var(--acc);border-color:var(--acc);color:#fff}\n  .det{margin-top:12px;border-top:1px solid var(--line);padding-top:10px;font-size:14px}\n  .det h4{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);margin:16px 0 6px}\n  .det ul,.cell ul{margin:0;padding-left:18px}.det li,.cell li{margin:3px 0}\n  .leitura{background:var(--acc2);border-radius:8px;padding:8px 10px;margin:8px 0 0}\n  .claude{background:#fff7e6;border:1px solid var(--gold);border-radius:10px;padding:10px 12px;margin-bottom:10px}\n  .claude p{margin:4px 0 0}\n  @media (prefers-color-scheme:dark){.claude{background:#2b2312}}\n  .claude-in{margin:0}\n  .esc{display:flex;flex-direction:column;gap:4px;margin:8px 0}.esc p{margin:0;font-size:13.5px}\n  .votos{display:grid;gap:4px}.voto{display:flex;justify-content:space-between;gap:10px;font-size:13px;border-bottom:1px dashed var(--line);padding:3px 0}\n  .vs{color:var(--acc)}.vn{color:#b91c1c}.vo{color:var(--mut);font-weight:500}\n  .fontes{display:flex;flex-wrap:wrap;gap:6px}.fontes a{font-size:12px;color:var(--acc);background:var(--acc2);padding:3px 8px;border-radius:6px;text-decoration:none}\n  .empty{text-align:center;color:var(--mut);padding:30px 10px}\n  .cmp{overflow-x:auto;margin:0 -14px;padding:0 14px}\n  .crow{display:grid;grid-template-columns:1fr;margin-bottom:8px}\n  .ctitle{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);font-weight:700;padding:8px 2px 4px;position:sticky;left:0}\n  .ccells{display:grid;grid-template-columns:repeat(var(--n),minmax(230px,1fr));gap:8px}\n  .cell{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px;font-size:13px}\n  .crow.head .cell{border-color:var(--ink)}\n  .colahead{display:flex;justify-content:space-between;align-items:center;margin:14px 0 10px}\n  .priv{font-size:13px;display:flex;gap:6px;align-items:center}\n  .cola{display:grid;gap:8px}\n  .lin{display:grid;grid-template-columns:1fr auto;grid-template-areas:\"c x\" \"d d\" \"n n\";gap:4px 8px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px}\n  .lin.vazio{border-style:dashed}\n  .lc{grid-area:c;font-weight:700;font-size:13px}\n  .dig{grid-area:d;display:flex;gap:6px;margin:4px 0}\n  .dig span{width:42px;height:52px;border:2px solid var(--ink);border-radius:8px;display:flex;align-items:center;justify-content:center;font:700 26px ui-monospace,Menlo,monospace}\n  .lin.vazio .dig span{border-color:var(--line)}\n  .ln{grid-area:n;font-size:14px}\n  .x{grid-area:x;border:0;background:none;color:var(--mut);font-size:16px;cursor:pointer;padding:6px 10px;min-height:36px;font-family:inherit}\n  .x.add{font-size:13px;color:var(--acc);font-weight:700}\n  .colaacts{display:flex;gap:8px;margin-top:12px}\n  .colaacts .danger{color:#b91c1c}\n  .ok{color:var(--acc)}\n  .info{margin-top:16px;font-size:13px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:4px 12px}\n  .leg{margin:12px 0;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:13px}\n  .leg summary{cursor:pointer;font-weight:700}\n  .legn{display:flex;flex-wrap:wrap;gap:6px}\n  .loading{padding:40px;text-align:center;color:var(--mut)}\n  .ph{flex:none;border-radius:12px;background-color:var(--line);background-repeat:no-repeat;overflow:hidden}\n  .ph.ini{display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff;background:#8a8f98}\n  .ph.ini.bg{background:#b4413a}.ph.ini.bo{background:#1d4ed8}.ph.ini.bc{background:#7c6f57}.ph.ini.br{background:#7f1d1d}\n  .who{flex:1;min-width:0}\n  .rowchips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:4px}\n  .top .num{font-size:17px;padding:3px 9px;min-width:0;border-radius:8px}\n  .bloco{font-size:11px;font-weight:700;border-radius:999px;padding:2px 8px;border:1px solid currentColor;white-space:nowrap}\n  .bloco.bg{color:#b4413a}.bloco.bo{color:#1d4ed8}.bloco.bc{color:#7c6f57}.bloco.br{color:#991b1b}\n  @media (prefers-color-scheme:dark){.bloco.bg{color:#f08a80}.bloco.bo{color:#8ab4ff}.bloco.bc{color:#c9b991}.bloco.br{color:#fca5a5}}\n  .resumo{margin:10px 0 0;font-size:13.5px;line-height:1.45}\n  .resumo.clamp{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}\n  .chead{display:flex;gap:10px;align-items:flex-start}\n  .lnw{display:inline-flex;gap:8px;align-items:center}.lnw .ph{border-radius:6px}\n  .avisos{display:grid;gap:8px;margin-bottom:12px}\n  .aviso{display:flex;gap:8px;border-radius:12px;padding:10px 12px;font-size:13.5px;border:1px solid var(--line);background:var(--card)}\n  .aviso p{margin:0}\n  .a-alto{background:#fff1e6;border-color:#ea580c}.a-medio{background:#fefce8;border-color:#eab308}.a-ok{background:#ecfdf5;border-color:#10b981}\n  @media (prefers-color-scheme:dark){.a-alto{background:#3a2210}.a-medio{background:#2f2a10}.a-ok{background:#0f2a20}}\n  .toast{position:sticky;top:110px;z-index:6;margin:10px 0;background:#ea580c;color:#fff;border-radius:12px;padding:10px 12px;font-size:13.5px;font-weight:600;cursor:pointer;box-shadow:0 6px 20px rgba(0,0,0,.18)}\n  `,\n\n  render(d2) {\n    const tab = d2.state.tab || 'lista'\n    const all = Array.isArray(d2.state.rows) ? d2.state.rows : []\n    const nCola = Object.values(cola(d2)).reduce((s, a) => s + arr(a).length, 0)\n    const nFav = favs(d2).length\n    const alerta = all.length && alinhamento(d2, all).some(a => a.n === 'alto')\n    let body\n    if (d2.state.erro && !all.length) body = `<div class=\"loading\"><p>Não consegui carregar os candidatos.</p><button class=\"retry\" data-act=\"retry\">Tentar de novo</button></div>`\n    else if (!all.length) body = `<div class=\"loading\">Carregando candidatos…</div>`\n    else if (tab === 'comparar') body = viewComparar(d2, all)\n    else if (tab === 'cola') body = viewCola(d2, all)\n    else body = legenda() + viewLista(d2, all)\n    return `<div class=\"app\"><div class=\"wrap\">\n      <header>\n        <div class=\"ttl\"><h1>🗳️ Eleições 2026 · SP</h1><span class=\"date\">1º turno 04/10</span></div>\n        <nav class=\"tabs\">\n          <button data-act=\"tab\" data-t=\"lista\" class=\"${tab === 'lista' ? 'on' : ''}\">Candidatos</button>\n          <button data-act=\"tab\" data-t=\"comparar\" class=\"${tab === 'comparar' ? 'on' : ''}\">Comparar${nFav ? ` (${nFav})` : ''}</button>\n          <button data-act=\"tab\" data-t=\"cola\" class=\"${tab === 'cola' ? 'on' : ''}\">Minha cola${nCola ? ` (${nCola})` : ''}${alerta ? ' ⚠️' : ''}</button>\n        </nav>\n      </header>\n      ${d2.state.toast ? `<div class=\"toast\" data-act=\"toast\">${esc(d2.state.toast)} <u>ver na cola</u></div>` : ''}\n      ${body}\n    </div></div>`\n  },\n\n  mounted(d2) {\n    d2.setState({\n      fav: lsGet(LS_FAV, []),\n      cola: lsGet(LS_COLA, {}),\n      privado: !!lsGet(LS_PRIV, false),\n    })\n    const all = () => (Array.isArray(d2.state.rows) ? d2.state.rows : [])\n    const carregar = async () => {\n      d2.state.erro = false\n      try {\n        // param 'candidatos' = InteractiveModuleReference bound to the read-only Rush listener\n        const res = await d2.rush('candidatos').invoke({})\n        let rows = res && res.data && Array.isArray(res.data.data) ? res.data.data : (res && Array.isArray(res.data) ? res.data : [])\n        if (!rows.length && res && res.data && res.data.data && Array.isArray(res.data.data.data)) rows = res.data.data.data\n        d2.state.rows = rows\n        if (!rows.length) d2.state.erro = true\n      } catch (err) { d2.log('erro carregando', err); d2.state.erro = true }\n    }\n    carregar()\n    // ícone iOS + theme-color (o shell do player deixa esses vazios)\n    try {\n      const h = document.head\n      const setLink = (rel, href, sizes) => {\n        let l = h.querySelector(`link[rel=\"${rel}\"]`)\n        if (!l) { l = document.createElement('link'); l.rel = rel; h.appendChild(l) }\n        l.href = href\n        if (sizes) l.setAttribute('sizes', sizes)\n      }\n      const setMeta = (name, content) => {\n        let m = h.querySelector(`meta[name=\"${name}\"]`)\n        if (!m) { m = document.createElement('meta'); m.name = name; h.appendChild(m) }\n        m.content = content\n      }\n      setLink('apple-touch-icon', 'https://danjuns-eleicoes2026.data2.media/file/gtW_cDT6mXsRdKdhgQO50', '180x180')\n      setMeta('theme-color', '#1f6f5c')\n      setMeta('apple-mobile-web-app-title', 'Eleições 26')\n    } catch (e) {}\n    const top = () => { const a = d2.$('.app'); if (a) a.scrollTop = 0 }\n    let toastT = null\n    d2.onUnmount(() => clearTimeout(toastT))\n\n    d2.on('input.q', 'input', (e, el) => { d2.state.q = el.value })\n\n    d2.on('[data-act]', 'click', async (e, el) => {\n      const act = el.getAttribute('data-act')\n      const slug = el.getAttribute('data-slug')\n      if (act === 'retry') { carregar(); return }\n      if (act === 'toast') { d2.setState({ toast: null, tab: 'cola' }); top(); return }\n      if (act === 'tab') { d2.setState({ tab: el.getAttribute('data-t'), open: null }); top(); return }\n      if (act === 'regiao') { d2.setState({ regiao: el.getAttribute('data-k'), open: null }); return }\n      if (act === 'cargo') { d2.setState({ cargo: el.getAttribute('data-k'), open: null }); return }\n      if (act === 'gocargo') { d2.setState({ tab: 'lista', cargo: el.getAttribute('data-k'), open: null }); top(); return }\n      if (act === 'open') { d2.state.open = d2.state.open === slug ? null : slug; return }\n      if (act === 'soFav') { d2.state.soFav = el.checked; return }\n      if (act === 'soClaude') { d2.state.soClaude = el.checked; return }\n      if (act === 'privado') { d2.state.privado = el.checked; lsSet(LS_PRIV, el.checked); return }\n      if (act === 'fav') {\n        const f = favs(d2).slice()\n        const i = f.indexOf(slug)\n        if (i >= 0) f.splice(i, 1); else f.push(slug)\n        d2.state.fav = f; lsSet(LS_FAV, f); return\n      }\n      if (act === 'cola') {\n        const r = all().find(x => x.slug === slug)\n        if (!r) return\n        const c = cargoOf(r.cargo)\n        const cl = Object.assign({}, cola(d2))\n        const cur = arr(cl[r.cargo]).slice()\n        const i = cur.indexOf(slug)\n        if (i >= 0) cur.splice(i, 1)\n        else if (cur.length < c.vagas) cur.push(slug)\n        else if (c.vagas === 1) cur.splice(0, 1, slug)\n        else { await d2.dialog.alert('Você já escolheu 2 nomes para o Senado. Tire um deles na aba Minha cola (ou aqui mesmo) antes de escolher outro.'); return }\n        cl[r.cargo] = cur\n        const antes = alinhamento(d2, all()).filter(a => a.n === 'alto' || a.n === 'medio').length\n        d2.state.cola = cl; lsSet(LS_COLA, cl)\n        const depois = alinhamento(d2, all()).filter(a => a.n === 'alto' || a.n === 'medio')\n        if (i < 0 && depois.length > antes) {\n          d2.state.toast = '⚠️ Essa escolha deixa sua cola desalinhada (Executivo x Legislativo).'\n          clearTimeout(toastT); toastT = setTimeout(() => { d2.state.toast = null }, 7000)\n        }\n        return\n      }\n      if (act === 'rmcola') {\n        const k = el.getAttribute('data-cargo')\n        const cl = Object.assign({}, cola(d2))\n        cl[k] = arr(cl[k]).filter(s => s !== slug)\n        d2.state.cola = cl; lsSet(LS_COLA, cl); return\n      }\n      if (act === 'limpar') {\n        const okk = await d2.dialog.confirm('Limpar toda a cola? Os ★ continuam.')\n        if (okk) { d2.state.cola = {}; lsSet(LS_COLA, {}) }\n        return\n      }\n      if (act === 'copiar') {\n        const bySlug = {}; all().forEach(r => { bySlug[r.slug] = r })\n        const cl = cola(d2)\n        const lines = []\n        CARGOS.forEach(c => {\n          for (let i = 0; i < c.vagas; i++) {\n            const r = bySlug[arr(cl[c.k])[i]]\n            const lbl = c.vagas > 1 ? `${c.label} ${i + 1}` : c.label\n            lines.push(`${lbl}: ${r ? r.numero : '—'}`)\n          }\n        })\n        try { await navigator.clipboard.writeText(lines.join('\\n')); d2.state.copiado = true; setTimeout(() => { d2.state.copiado = false }, 2000) } catch (err) { await d2.dialog.alert(lines.join('\\n')) }\n        return\n      }\n    })\n  },\n\n\n}\n"}},"candidatos":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"candidatos"}}}}}}}}}},{"_id":"5ed9bed7b9e0891ce913e884","component":"data2-core-types@Component","params":{"package":"data2-core","component":"DataSource","renderable":{"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":1366,"exactWidth":false,"exactHeight":false,"height":768}}}}},{"_id":"5f472ae463c680de4ff296e9","component":"data2-core-types@Component","params":{"package":"data2-core","component":"Data2TableDataSource","extends":"data2-core@DataSource","renderable":{"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":1366,"exactWidth":false,"exactHeight":false,"height":768}}}}}]}},{"reference":"ExternalComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_id":"5f060d9b1ca96def42f3c40a","displayName":"Builder AuthStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"credentials":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"UsersDataSet"}},"sessionShared":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},"email":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"nR6Q9d7qdaPtZhJ28Q8Dy"},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"yPCJBTKo8q1Mw0B_3Kpwl"},"component":"data2-core-types@ArtboardReference"}}},"session":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"name"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"sessionMetadata":{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"active"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.status"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is active user"}]},"component":"data2-core-logical-operators@And","displayName":"is active and has _id"}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $user"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-primitives@String","params":{"content":"@data2.app"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.email"}}}}},"component":"data2-core-functions@Includes","displayName":"isData2User"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}},"component":"data2-core-flow@Step"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.d2_app"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"management"}}]},"component":"data2-core-functions@Includes","displayName":"isData2App Exception"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}},"component":"data2-core-flow@Step"},{"params":{"resultName":{"component":"data2-core-primitives@String","params":{"content":"has_access"}},"action":{"params":{"compare":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}]},"component":"data2-core-logical-operators@Or"},"else":{"params":{"actions":[{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $metadata.system"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":"filter","args":[{"_id":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records.length"}}}}},"component":"data2-core-logical-operators@Not","displayName":"systems not found"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check system found"},{"params":{"actions":[{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"organization":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.organization._id"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"}]},"component":"data2-core-flow@Parallel"}]},"component":"data2-core-flow@Series","displayName":"common setup"},{"params":{"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"else":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"compare":{"params":{"components":{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"mapper":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"system"}}],"body":{"params":{"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.visibility"}}}},"defaultCase":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"public"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"billing-owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}},{"component":"data2-core-primitives@String","params":{"content":"member"}}]},"component":"data2-core-functions@Includes","displayName":"has role with access"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"collaborator"}}},"component":"data2-core-comparison-operators@Equal","displayName":"is collaborator"}]},"component":"data2-core-logical-operators@And","displayName":"is org member and collaborator"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is collaborator"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is collaborator and has system access"}]},"component":"data2-core-logical-operators@Or"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"private"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}}]},"component":"data2-core-functions@Includes","displayName":"is owner/admin"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is owner/admin"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is member and has system access"}]},"component":"data2-core-logical-operators@Or","displayName":"is owner/admin or has system access"}}}]},"component":"data2-core-flow@Switch"}}}},"component":"data2-core-functions@ArrayMap"}},"component":"data2-core-logical-operators@And","displayName":"has org member for all systems in request"}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-flow@If"}},"component":"data2-core-flow@Step"},{"params":{"then":{"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"else":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"has_access"}}}}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"sessionExpiresIn":{"component":"data2-core-primitives@Number","params":{"content":604800}},"sessionRenewal":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"identityProviders":[{"provider":{"component":"data2-core-primitives@String","params":{"content":"GOOGLE"}},"clientId":{"component":"data2-core-primitives@String","params":{"content":"55470861603-22pvfc1t49lp8cjnbfk71s5ct9hp1q1v.apps.googleusercontent.com"}}}]},"reference":"Data2BuilderAuthentication","updatedAt":"2026-08-06T19:31:23.557Z"},{"_id":"5f060ee51ca96def42f3fbd1","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"UsersTableDataSource"}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}}},"reference":"UsersDataSet","updatedAt":"2026-03-04T21:16:40.291Z"},{"_id":"68f938cf5fb002e33752a43d","displayName":"InternalApplicationsAuthenticationStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}}},"verifier":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"InternalApplicationsVerifierDataSet"}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"secret"}},"credentials":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}],"session":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}]},"reference":"InternalApplicationsAuthenticationStrategy","updatedAt":"2025-10-22T20:08:54.442Z","createdAt":"2025-10-22T20:04:31.198Z"},{"component":"data2-core@DataSet","reference":"SessionsDataSet","params":{"requiresConfirmation":false,"pk":"key","datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"data2sessionsdatasource"}}}},{"reference":"UsersTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@ServerSessionsDataSource","reference":"data2sessionsdatasource","params":{}},{"_id":"5f1600b70528b92601890f75","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ServiceComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ServiceComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:20.208Z","createdAt":"2020-07-20T20:38:15.436Z"},{"_id":"5f1602190528b92601890f7d","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":40000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentInstancesTableDataSource"}},"sort":{"_id":1},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:07.089Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"5f16017f0528b92601890f7a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"FileComponentInstancesDataSet","updatedAt":"2023-08-03T16:08:18.193Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"5f1601990528b92601890f7b","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ApplicationsTableDataSource"}},"pk":"_id","autoEdit":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"params":{"column":"_id"},"component":"data2-core-types@DataSetColumnReference"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"ApplicationsDataSet","updatedAt":"2022-12-13T21:51:13.995Z","createdAt":"2020-07-20T20:42:01.657Z"},{"_id":"5f16172a0528b92601890f85","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":10000}}},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"DataComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"DataComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:12.831Z","createdAt":"2020-07-20T22:14:02.097Z"},{"_id":"60ddc1bbda3861ca65407c5a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"pagination":{"size":1},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"}},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2022-02-09T19:44:38.036Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"63ee3d38b8c9838c62fb05fb","displayName":"DriveFileComponentInstancesDataSet","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core@Drive"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2025-12-04T21:58:32.367Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6ac14139ce21b725b3183e4c","component":"data2-rush@HTTPListener","reference":"candidatos-lista","system":"6ac135f6ea8ac94fb09605d9","params":{}}]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6ac13f171a6b03943b9a1873","component":"data2-core-primitives@Artboard","system":"6ac135f6ea8ac94fb09605d9","displayName":"Eleicoes","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Eleicoes"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":430,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"ln9wU2T6vSRdGFUQQdh2H"},{"_id":"1f9172bd21ee00110c36242c","parent":"6ac13f171a6b03943b9a1873","component":"danjuns-eleicoes2026@eleicoes-app","system":"6ac135f6ea8ac94fb09605d9","displayName":"EleicoesApp","params":{"candidatos":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"candidatos-lista"}},"pin":"stretch","super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":430,"height":900}}}},"reference":"0JrAV2oTsRLwogPdLX7MR"}]}},{"_id":"5fc4faeec8da12be8bf3d08a","component":"data2-core@Data2TableDataSource","system":"5e3b796d6228227ca637d0f4","params":{"paginate":{"default":1000},"super":{},"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"fileId"}},"title":"File ID","component":"data2-core-primitives@ObjectId"},"break":true}],"hooks":{"before":{"all":[{"hook":"softDelete"}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"timestamp","options":{"fields":["createdAt","updatedAt"]}}],"update":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}],"patch":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}]},"after":{"all":[{"hook":"fileUrl","options":{"downloadField":"params.fileUrl","uploadField":"params.uploadFileUrl","enhanceSchema":false}}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"update":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"patch":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"remove":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}]}},"multi":["create"],"useEstimatedDocumentCount":true},"reference":"FileComponentInstancesTableDataSource","updatedAt":"2022-12-19T20:42:51.837Z","createdAt":"2020-11-30T13:59:52.294Z"},{"reference":"ApplicationsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6ac13f7256470c2706783d05","displayName":"Eleições 2026 Mogi","reference":"Yy8S9gEk7Ws83R6ffuPt9","params":{"domain":{"component":"data2-core-primitives@String","params":{"content":"app"}},"entryPoint":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"ln9wU2T6vSRdGFUQQdh2H"}}},"system":"6ac135f6ea8ac94fb09605d9","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6ac13d741a6b03943b9a162f","component":"data2-core@Data2TableDataSource","system":"6ac135f6ea8ac94fb09605d9","params":{"table":"candidatos","schema":[{"component":"data2-core-types@Field","params":{"key":"slug","title":"Slug","component":"data2-core-primitives@String","required":true}},{"component":"data2-core-types@Field","params":{"key":"cargo","title":"Cargo","component":"data2-core-primitives@String","required":true}},{"component":"data2-core-types@Field","params":{"key":"ordem","title":"Ordem","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"key":"nome","title":"Nome","component":"data2-core-primitives@String","required":true}},{"component":"data2-core-types@Field","params":{"key":"numero","title":"Número","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"partido","title":"Partido","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"cidade","title":"Cidade/base","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"situacao","title":"Situação","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"alerta","title":"Alerta","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"pesquisa","title":"Pesquisa","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"perfil","title":"Perfil","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"propostas","title":"Propostas","component":"data2-core-primitives@Array"}},{"component":"data2-core-types@Field","params":{"key":"historico","title":"Histórico","component":"data2-core-primitives@Array"}},{"component":"data2-core-types@Field","params":{"key":"votos","title":"Votos-chave","component":"data2-core-primitives@Array"}},{"component":"data2-core-types@Field","params":{"key":"stf","title":"Posição sobre STF","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"checagens","title":"Checagens","component":"data2-core-primitives@Array"}},{"component":"data2-core-types@Field","params":{"key":"criterios","title":"Critérios (0-3)","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"criterios_nota","title":"Leitura pelos critérios","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"escandalos","title":"Escândalos/processos","component":"data2-core-primitives@Array"}},{"component":"data2-core-types@Field","params":{"key":"verificacao","title":"Nível de verificação","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"fontes","title":"Fontes","component":"data2-core-primitives@Array"}},{"component":"data2-core-types@Field","params":{"key":"nota_claude","title":"Nota do Claude","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"destaque","title":"Destaque do Claude","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"key":"resumo","title":"Resumo do plano","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"bloco","title":"Bloco político","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"regiao","title":"Região (base)","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"foto_url","title":"Foto (URL avulsa)","component":"data2-core-primitives@String"}}]},"reference":"candidatos"}]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}